5701: configure an existing "book" using saved-away values
svn: r19916
This commit is contained in:
parent
4a7623a5ed
commit
b7d5b91535
@ -7,7 +7,7 @@
|
|||||||
# Copyright (C) 2009 Nick Hall
|
# Copyright (C) 2009 Nick Hall
|
||||||
# Copyright (C) 2010 Jakim Friant
|
# Copyright (C) 2010 Jakim Friant
|
||||||
# Copyright (C) 2011 Adam Stein <adam@csh.rit.edu>
|
# Copyright (C) 2011 Adam Stein <adam@csh.rit.edu>
|
||||||
# Copyright (C) 2011 Paul Franklin
|
# Copyright (C) 2011-2012 Paul Franklin
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@ -163,7 +163,7 @@ class GuiStringOption(gtk.Entry):
|
|||||||
"""
|
"""
|
||||||
This class displays an option that is a simple one-line string.
|
This class displays an option that is a simple one-line string.
|
||||||
"""
|
"""
|
||||||
def __init__(self, option, dbstate, uistate, track):
|
def __init__(self, option, dbstate, uistate, track, override):
|
||||||
"""
|
"""
|
||||||
@param option: The option to display.
|
@param option: The option to display.
|
||||||
@type option: gen.plug.menu.StringOption
|
@type option: gen.plug.menu.StringOption
|
||||||
@ -225,7 +225,7 @@ class GuiColorOption(gtk.ColorButton):
|
|||||||
"""
|
"""
|
||||||
This class displays an option that allows the selection of a colour.
|
This class displays an option that allows the selection of a colour.
|
||||||
"""
|
"""
|
||||||
def __init__(self, option, dbstate, uistate, track):
|
def __init__(self, option, dbstate, uistate, track, override):
|
||||||
self.__option = option
|
self.__option = option
|
||||||
value = self.__option.get_value()
|
value = self.__option.get_value()
|
||||||
gtk.ColorButton.__init__( self, gtk.gdk.color_parse(value) )
|
gtk.ColorButton.__init__( self, gtk.gdk.color_parse(value) )
|
||||||
@ -278,7 +278,7 @@ class GuiNumberOption(gtk.SpinButton):
|
|||||||
This class displays an option that is a simple number with defined maximum
|
This class displays an option that is a simple number with defined maximum
|
||||||
and minimum values.
|
and minimum values.
|
||||||
"""
|
"""
|
||||||
def __init__(self, option, dbstate, uistate, track):
|
def __init__(self, option, dbstate, uistate, track, override):
|
||||||
self.__option = option
|
self.__option = option
|
||||||
|
|
||||||
decimals = 0
|
decimals = 0
|
||||||
@ -350,7 +350,7 @@ class GuiTextOption(gtk.ScrolledWindow):
|
|||||||
"""
|
"""
|
||||||
This class displays an option that is a multi-line string.
|
This class displays an option that is a multi-line string.
|
||||||
"""
|
"""
|
||||||
def __init__(self, option, dbstate, uistate, track):
|
def __init__(self, option, dbstate, uistate, track, override):
|
||||||
self.__option = option
|
self.__option = option
|
||||||
gtk.ScrolledWindow.__init__(self)
|
gtk.ScrolledWindow.__init__(self)
|
||||||
self.set_shadow_type(gtk.SHADOW_IN)
|
self.set_shadow_type(gtk.SHADOW_IN)
|
||||||
@ -433,7 +433,7 @@ class GuiBooleanOption(gtk.CheckButton):
|
|||||||
"""
|
"""
|
||||||
This class displays an option that is a boolean (True or False).
|
This class displays an option that is a boolean (True or False).
|
||||||
"""
|
"""
|
||||||
def __init__(self, option, dbstate, uistate, track):
|
def __init__(self, option, dbstate, uistate, track, override):
|
||||||
self.__option = option
|
self.__option = option
|
||||||
gtk.CheckButton.__init__(self, self.__option.get_label())
|
gtk.CheckButton.__init__(self, self.__option.get_label())
|
||||||
self.set_active(self.__option.get_value())
|
self.set_active(self.__option.get_value())
|
||||||
@ -489,7 +489,7 @@ class GuiEnumeratedListOption(gtk.HBox):
|
|||||||
This class displays an option that provides a finite number of values.
|
This class displays an option that provides a finite number of values.
|
||||||
Each possible value is assigned a value and a description.
|
Each possible value is assigned a value and a description.
|
||||||
"""
|
"""
|
||||||
def __init__(self, option, dbstate, uistate, track):
|
def __init__(self, option, dbstate, uistate, track, override):
|
||||||
gtk.HBox.__init__(self)
|
gtk.HBox.__init__(self)
|
||||||
evtBox = gtk.EventBox()
|
evtBox = gtk.EventBox()
|
||||||
self.__option = option
|
self.__option = option
|
||||||
@ -582,7 +582,7 @@ class GuiPersonOption(gtk.HBox):
|
|||||||
This class displays an option that allows a person from the
|
This class displays an option that allows a person from the
|
||||||
database to be selected.
|
database to be selected.
|
||||||
"""
|
"""
|
||||||
def __init__(self, option, dbstate, uistate, track):
|
def __init__(self, option, dbstate, uistate, track, override):
|
||||||
"""
|
"""
|
||||||
@param option: The option to display.
|
@param option: The option to display.
|
||||||
@type option: gen.plug.menu.PersonOption
|
@type option: gen.plug.menu.PersonOption
|
||||||
@ -612,11 +612,12 @@ class GuiPersonOption(gtk.HBox):
|
|||||||
person_handle = self.__uistate.get_active('Person')
|
person_handle = self.__uistate.get_active('Person')
|
||||||
person = self.__dbstate.db.get_person_from_handle(person_handle)
|
person = self.__dbstate.db.get_person_from_handle(person_handle)
|
||||||
|
|
||||||
if not person:
|
if override or not person:
|
||||||
# Pick up the stored option value if there is one
|
# Pick up the stored option value if there is one
|
||||||
person = self.__db.get_person_from_gramps_id(gid)
|
person = self.__db.get_person_from_gramps_id(gid)
|
||||||
|
|
||||||
if not person:
|
if not person:
|
||||||
|
# If all else fails, get the default person to avoid bad values
|
||||||
person = self.__db.get_default_person()
|
person = self.__db.get_default_person()
|
||||||
|
|
||||||
if not person:
|
if not person:
|
||||||
@ -706,7 +707,7 @@ class GuiFamilyOption(gtk.HBox):
|
|||||||
This class displays an option that allows a family from the
|
This class displays an option that allows a family from the
|
||||||
database to be selected.
|
database to be selected.
|
||||||
"""
|
"""
|
||||||
def __init__(self, option, dbstate, uistate, track):
|
def __init__(self, option, dbstate, uistate, track, override):
|
||||||
"""
|
"""
|
||||||
@param option: The option to display.
|
@param option: The option to display.
|
||||||
@type option: gen.plug.menu.FamilyOption
|
@type option: gen.plug.menu.FamilyOption
|
||||||
@ -730,7 +731,7 @@ class GuiFamilyOption(gtk.HBox):
|
|||||||
self.pack_start(pevt, False)
|
self.pack_start(pevt, False)
|
||||||
self.pack_end(family_button, False)
|
self.pack_end(family_button, False)
|
||||||
|
|
||||||
self.__initialize_family()
|
self.__initialize_family(override)
|
||||||
|
|
||||||
self.valuekey = self.__option.connect('value-changed', self.__value_changed)
|
self.valuekey = self.__option.connect('value-changed', self.__value_changed)
|
||||||
|
|
||||||
@ -740,10 +741,10 @@ class GuiFamilyOption(gtk.HBox):
|
|||||||
pevt.set_tooltip_text(self.__option.get_help())
|
pevt.set_tooltip_text(self.__option.get_help())
|
||||||
family_button.set_tooltip_text(_('Select a different family'))
|
family_button.set_tooltip_text(_('Select a different family'))
|
||||||
|
|
||||||
def __initialize_family(self):
|
def __initialize_family(self, override):
|
||||||
"""
|
"""
|
||||||
Find a family to initialize the option with. If there is no saved
|
Find a family to initialize the option with. If there is no saved
|
||||||
family option, use the active family. If there ris no active
|
family option, use the active family. If there is no active
|
||||||
family, try to find a family that the user is likely interested in.
|
family, try to find a family that the user is likely interested in.
|
||||||
"""
|
"""
|
||||||
family_list = []
|
family_list = []
|
||||||
@ -752,7 +753,7 @@ class GuiFamilyOption(gtk.HBox):
|
|||||||
|
|
||||||
# Use the active family if one is selected
|
# Use the active family if one is selected
|
||||||
family = self.__uistate.get_active('Family')
|
family = self.__uistate.get_active('Family')
|
||||||
if family:
|
if family and not override:
|
||||||
family_list = [family]
|
family_list = [family]
|
||||||
else:
|
else:
|
||||||
# Use the stored option value
|
# Use the stored option value
|
||||||
@ -892,7 +893,7 @@ class GuiNoteOption(gtk.HBox):
|
|||||||
This class displays an option that allows a note from the
|
This class displays an option that allows a note from the
|
||||||
database to be selected.
|
database to be selected.
|
||||||
"""
|
"""
|
||||||
def __init__(self, option, dbstate, uistate, track):
|
def __init__(self, option, dbstate, uistate, track, override):
|
||||||
"""
|
"""
|
||||||
@param option: The option to display.
|
@param option: The option to display.
|
||||||
@type option: gen.plug.menu.NoteOption
|
@type option: gen.plug.menu.NoteOption
|
||||||
@ -996,7 +997,7 @@ class GuiMediaOption(gtk.HBox):
|
|||||||
This class displays an option that allows a media object from the
|
This class displays an option that allows a media object from the
|
||||||
database to be selected.
|
database to be selected.
|
||||||
"""
|
"""
|
||||||
def __init__(self, option, dbstate, uistate, track):
|
def __init__(self, option, dbstate, uistate, track, override):
|
||||||
"""
|
"""
|
||||||
@param option: The option to display.
|
@param option: The option to display.
|
||||||
@type option: gen.plug.menu.MediaOption
|
@type option: gen.plug.menu.MediaOption
|
||||||
@ -1097,7 +1098,7 @@ class GuiPersonListOption(gtk.HBox):
|
|||||||
This class displays a widget that allows multiple people from the
|
This class displays a widget that allows multiple people from the
|
||||||
database to be selected.
|
database to be selected.
|
||||||
"""
|
"""
|
||||||
def __init__(self, option, dbstate, uistate, track):
|
def __init__(self, option, dbstate, uistate, track, override):
|
||||||
"""
|
"""
|
||||||
@param option: The option to display.
|
@param option: The option to display.
|
||||||
@type option: gen.plug.menu.PersonListOption
|
@type option: gen.plug.menu.PersonListOption
|
||||||
@ -1274,7 +1275,7 @@ class GuiPlaceListOption(gtk.HBox):
|
|||||||
This class displays a widget that allows multiple places from the
|
This class displays a widget that allows multiple places from the
|
||||||
database to be selected.
|
database to be selected.
|
||||||
"""
|
"""
|
||||||
def __init__(self, option, dbstate, uistate, track):
|
def __init__(self, option, dbstate, uistate, track, override):
|
||||||
"""
|
"""
|
||||||
@param option: The option to display.
|
@param option: The option to display.
|
||||||
@type option: gen.plug.menu.PlaceListOption
|
@type option: gen.plug.menu.PlaceListOption
|
||||||
@ -1418,7 +1419,7 @@ class GuiSurnameColorOption(gtk.HBox):
|
|||||||
selected from the database, and to assign a colour (not necessarily
|
selected from the database, and to assign a colour (not necessarily
|
||||||
unique) to each one.
|
unique) to each one.
|
||||||
"""
|
"""
|
||||||
def __init__(self, option, dbstate, uistate, track):
|
def __init__(self, option, dbstate, uistate, track, override):
|
||||||
"""
|
"""
|
||||||
@param option: The option to display.
|
@param option: The option to display.
|
||||||
@type option: gen.plug.menu.SurnameColorOption
|
@type option: gen.plug.menu.SurnameColorOption
|
||||||
@ -1609,7 +1610,7 @@ class GuiDestinationOption(gtk.HBox):
|
|||||||
This class displays an option that allows the user to select a
|
This class displays an option that allows the user to select a
|
||||||
DestinationOption.
|
DestinationOption.
|
||||||
"""
|
"""
|
||||||
def __init__(self, option, dbstate, uistate, track):
|
def __init__(self, option, dbstate, uistate, track, override):
|
||||||
"""
|
"""
|
||||||
@param option: The option to display.
|
@param option: The option to display.
|
||||||
@type option: gen.plug.menu.DestinationOption
|
@type option: gen.plug.menu.DestinationOption
|
||||||
@ -1738,7 +1739,7 @@ class GuiStyleOption(GuiEnumeratedListOption):
|
|||||||
"""
|
"""
|
||||||
This class displays a StyleOption.
|
This class displays a StyleOption.
|
||||||
"""
|
"""
|
||||||
def __init__(self, option, dbstate, uistate, track):
|
def __init__(self, option, dbstate, uistate, track, override):
|
||||||
"""
|
"""
|
||||||
@param option: The option to display.
|
@param option: The option to display.
|
||||||
@type option: gen.plug.menu.StyleOption
|
@type option: gen.plug.menu.StyleOption
|
||||||
@ -1778,7 +1779,7 @@ class GuiBooleanListOption(gtk.HBox):
|
|||||||
This class displays an option that provides a list of check boxes.
|
This class displays an option that provides a list of check boxes.
|
||||||
Each possible value is assigned a value and a description.
|
Each possible value is assigned a value and a description.
|
||||||
"""
|
"""
|
||||||
def __init__(self, option, dbstate, uistate, track):
|
def __init__(self, option, dbstate, uistate, track, override):
|
||||||
gtk.HBox.__init__(self)
|
gtk.HBox.__init__(self)
|
||||||
self.__option = option
|
self.__option = option
|
||||||
self.__cbutton = []
|
self.__cbutton = []
|
||||||
@ -1890,10 +1891,14 @@ _OPTIONS = (
|
|||||||
)
|
)
|
||||||
del menu
|
del menu
|
||||||
|
|
||||||
def make_gui_option(option, dbstate, uistate, track):
|
def make_gui_option(option, dbstate, uistate, track, override=False):
|
||||||
"""
|
"""
|
||||||
Stand-alone function so that Options can be used in other
|
Stand-alone function so that Options can be used in other
|
||||||
ways, too. Takes an Option and returns a GuiOption.
|
ways, too. Takes an Option and returns a GuiOption.
|
||||||
|
|
||||||
|
override: if True will override the GuiOption's normal behavior
|
||||||
|
(in a GuiOption-dependant fashion, for instance in a GuiPersonOption
|
||||||
|
it will force the use of the options's value to set the GuiOption)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
label, widget = True, None
|
label, widget = True, None
|
||||||
@ -1910,7 +1915,7 @@ def make_gui_option(option, dbstate, uistate, track):
|
|||||||
"can't make GuiOption: unknown option type: '%s'" % option)
|
"can't make GuiOption: unknown option type: '%s'" % option)
|
||||||
|
|
||||||
if widget:
|
if widget:
|
||||||
widget = widget(option, dbstate, uistate, track)
|
widget = widget(option, dbstate, uistate, track, override)
|
||||||
|
|
||||||
return widget, label
|
return widget, label
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
# Copyright (C) 2003-2007 Donald N. Allingham
|
# Copyright (C) 2003-2007 Donald N. Allingham
|
||||||
# Copyright (C) 2007-2008 Brian G. Matherly
|
# Copyright (C) 2007-2008 Brian G. Matherly
|
||||||
# Copyright (C) 2010 Jakim Friant
|
# Copyright (C) 2010 Jakim Friant
|
||||||
# Copyright (C) 2011 Paul Franklin
|
# Copyright (C) 2011-2012 Paul Franklin
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@ -80,6 +80,8 @@ from gui.managedwindow import ManagedWindow, set_titles
|
|||||||
from gui.glade import Glade
|
from gui.glade import Glade
|
||||||
import gui.utils
|
import gui.utils
|
||||||
import gui.user
|
import gui.user
|
||||||
|
from gui.plug import make_gui_option
|
||||||
|
from types import ClassType
|
||||||
|
|
||||||
# Import from specific modules in ReportBase
|
# Import from specific modules in ReportBase
|
||||||
from gen.plug.report import CATEGORY_BOOK, book_categories
|
from gen.plug.report import CATEGORY_BOOK, book_categories
|
||||||
@ -447,7 +449,7 @@ class BookList(object):
|
|||||||
f = open(self.file, "w")
|
f = open(self.file, "w")
|
||||||
f.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n")
|
f.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n")
|
||||||
f.write('<booklist>\n')
|
f.write('<booklist>\n')
|
||||||
for name in self.bookmap:
|
for name in sorted(self.bookmap): # enable a diff of archived copies
|
||||||
book = self.get_book(name)
|
book = self.get_book(name)
|
||||||
dbname = book.get_dbname()
|
dbname = book.get_dbname()
|
||||||
f.write('<book name="%s" database="%s">\n' % (name, dbname) )
|
f.write('<book name="%s" database="%s">\n' % (name, dbname) )
|
||||||
@ -933,21 +935,26 @@ class BookReportSelector(ManagedWindow):
|
|||||||
"""
|
"""
|
||||||
store, the_iter = self.book_model.get_selected()
|
store, the_iter = self.book_model.get_selected()
|
||||||
if not the_iter:
|
if not the_iter:
|
||||||
|
WarningDialog(_('No selected book item'),
|
||||||
|
_('Please select a book item to configure.')
|
||||||
|
)
|
||||||
return
|
return
|
||||||
data = self.book_model.get_data(the_iter, range(self.book_nr_cols))
|
data = self.book_model.get_data(the_iter, range(self.book_nr_cols))
|
||||||
row = self.book_model.get_selected_row()
|
row = self.book_model.get_selected_row()
|
||||||
item = self.book.get_item(row)
|
item = self.book.get_item(row)
|
||||||
option_class = item.option_class
|
option_class = item.option_class
|
||||||
item_dialog = BookItemDialog(self.dbstate, self.uistate, option_class,
|
option_class.handler.set_default_stylesheet_name(item.get_style_name())
|
||||||
item.get_name(),
|
item.is_from_saved_book = bool(self.book.get_name())
|
||||||
item.get_translated_name(),
|
item_dialog = BookItemDialog(self.dbstate, self.uistate,
|
||||||
self.track)
|
item, self.track)
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
response = item_dialog.window.run()
|
response = item_dialog.window.run()
|
||||||
if response == gtk.RESPONSE_OK:
|
if response == gtk.RESPONSE_OK:
|
||||||
# dialog will be closed by connect, now continue work while
|
# dialog will be closed by connect, now continue work while
|
||||||
# rest of dialog is unresponsive, release when finished
|
# rest of dialog is unresponsive, release when finished
|
||||||
|
style = option_class.handler.get_default_stylesheet_name()
|
||||||
|
item.set_style_name(style)
|
||||||
subject = _get_subject(option_class, self.db)
|
subject = _get_subject(option_class, self.db)
|
||||||
self.book_model.model.set_value(the_iter, 2, subject)
|
self.book_model.model.set_value(the_iter, 2, subject)
|
||||||
self.book.set_item(row, item)
|
self.book.set_item(row, item)
|
||||||
@ -1042,6 +1049,9 @@ class BookReportSelector(ManagedWindow):
|
|||||||
if self.book.item_list:
|
if self.book.item_list:
|
||||||
BookReportDialog(self.dbstate, self.uistate,
|
BookReportDialog(self.dbstate, self.uistate,
|
||||||
self.book, BookOptions)
|
self.book, BookOptions)
|
||||||
|
else:
|
||||||
|
WarningDialog(_('No items'), _('This book has no items.'))
|
||||||
|
return
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
def on_save_clicked(self, obj):
|
def on_save_clicked(self, obj):
|
||||||
@ -1086,7 +1096,7 @@ class BookReportSelector(ManagedWindow):
|
|||||||
if book:
|
if book:
|
||||||
self.open_book(book)
|
self.open_book(book)
|
||||||
self.name_entry.set_text(book.get_name())
|
self.name_entry.set_text(book.get_name())
|
||||||
self.book.name = book.get_name()
|
self.book.set_name(book.get_name())
|
||||||
|
|
||||||
def on_edit_clicked(self, obj):
|
def on_edit_clicked(self, obj):
|
||||||
"""
|
"""
|
||||||
@ -1113,11 +1123,14 @@ class BookItemDialog(ReportDialog):
|
|||||||
in a way specific for this report. This is a book item dialog.
|
in a way specific for this report. This is a book item dialog.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, dbstate, uistate, option_class, name, translated_name,
|
def __init__(self, dbstate, uistate, item, track=[]):
|
||||||
track=[]):
|
option_class = item.option_class
|
||||||
|
name = item.get_name()
|
||||||
|
translated_name = item.get_translated_name()
|
||||||
self.category = CATEGORY_BOOK
|
self.category = CATEGORY_BOOK
|
||||||
self.database = dbstate.db
|
self.database = dbstate.db
|
||||||
self.option_class = option_class
|
self.option_class = option_class
|
||||||
|
self.is_from_saved_book = item.is_from_saved_book
|
||||||
ReportDialog.__init__(self, dbstate, uistate,
|
ReportDialog.__init__(self, dbstate, uistate,
|
||||||
option_class, name, translated_name, track)
|
option_class, name, translated_name, track)
|
||||||
|
|
||||||
@ -1138,6 +1151,43 @@ class BookItemDialog(ReportDialog):
|
|||||||
def parse_target_frame(self):
|
def parse_target_frame(self):
|
||||||
"""Target frame is not used."""
|
"""Target frame is not used."""
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
def init_options(self, option_class):
|
||||||
|
try:
|
||||||
|
if (issubclass(option_class, object) or # New-style class
|
||||||
|
isinstance(option_class, ClassType)): # Old-style class
|
||||||
|
self.options = option_class(self.raw_name, self.db)
|
||||||
|
except TypeError:
|
||||||
|
self.options = option_class
|
||||||
|
if not self.is_from_saved_book:
|
||||||
|
self.options.load_previous_values()
|
||||||
|
|
||||||
|
def add_user_options(self):
|
||||||
|
"""
|
||||||
|
Generic method to add user options to the gui.
|
||||||
|
"""
|
||||||
|
if not hasattr(self.options, "menu"):
|
||||||
|
return
|
||||||
|
menu = self.options.menu
|
||||||
|
options_dict = self.options.options_dict
|
||||||
|
for category in menu.get_categories():
|
||||||
|
for name in menu.get_option_names(category):
|
||||||
|
option = menu.get_option(category, name)
|
||||||
|
|
||||||
|
# override option default with xml-saved value:
|
||||||
|
if name in options_dict:
|
||||||
|
option.set_value(options_dict[name])
|
||||||
|
|
||||||
|
widget, label = make_gui_option(option, self.dbstate,
|
||||||
|
self.uistate, self.track,
|
||||||
|
self.is_from_saved_book)
|
||||||
|
if widget is not None:
|
||||||
|
if label:
|
||||||
|
self.add_frame_option(category,
|
||||||
|
option.get_label(),
|
||||||
|
widget)
|
||||||
|
else:
|
||||||
|
self.add_frame_option(category, "", widget)
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@ -1193,26 +1243,30 @@ class BookReportDialog(DocReportDialog):
|
|||||||
def __init__(self, dbstate, uistate, book, options):
|
def __init__(self, dbstate, uistate, book, options):
|
||||||
self.format_menu = None
|
self.format_menu = None
|
||||||
self.options = options
|
self.options = options
|
||||||
|
self.is_from_saved_book = False
|
||||||
self.page_html_added = False
|
self.page_html_added = False
|
||||||
|
self.book = book
|
||||||
DocReportDialog.__init__(self, dbstate, uistate, options,
|
DocReportDialog.__init__(self, dbstate, uistate, options,
|
||||||
'book', _("Book Report"))
|
'book', _("Book Report"))
|
||||||
self.book = book
|
|
||||||
self.options.options_dict['bookname'] = self.book.name
|
self.options.options_dict['bookname'] = self.book.name
|
||||||
self.database = dbstate.db
|
self.database = dbstate.db
|
||||||
self.selected_style = StyleSheet()
|
self.selected_style = StyleSheet()
|
||||||
|
|
||||||
for item in self.book.get_item_list():
|
for item in self.book.get_item_list():
|
||||||
|
handler = item.option_class.handler
|
||||||
|
|
||||||
# Set up default style
|
# Set up default style
|
||||||
|
handler.set_default_stylesheet_name(item.get_style_name())
|
||||||
default_style = StyleSheet()
|
default_style = StyleSheet()
|
||||||
make_default_style = item.option_class.make_default_style
|
make_default_style = item.option_class.make_default_style
|
||||||
make_default_style(default_style)
|
make_default_style(default_style)
|
||||||
|
|
||||||
# Read all style sheets available for this item
|
# Read all style sheets available for this item
|
||||||
style_file = item.option_class.handler.get_stylesheet_savefile()
|
style_file = handler.get_stylesheet_savefile()
|
||||||
style_list = StyleSheetList(style_file, default_style)
|
style_list = StyleSheetList(style_file, default_style)
|
||||||
|
|
||||||
# Get the selected stylesheet
|
# Get the selected stylesheet
|
||||||
style_name = item.option_class.handler.get_default_stylesheet_name()
|
style_name = handler.get_default_stylesheet_name()
|
||||||
style_sheet = style_list.get_style_sheet(style_name)
|
style_sheet = style_list.get_style_sheet(style_name)
|
||||||
|
|
||||||
for this_style_name in style_sheet.get_paragraph_style_names():
|
for this_style_name in style_sheet.get_paragraph_style_names():
|
||||||
@ -1287,6 +1341,16 @@ class BookReportDialog(DocReportDialog):
|
|||||||
if self.open_with_app.get_active():
|
if self.open_with_app.get_active():
|
||||||
gui.utils.open_file_with_default_application(self.target_path)
|
gui.utils.open_file_with_default_application(self.target_path)
|
||||||
|
|
||||||
|
def init_options(self, option_class):
|
||||||
|
try:
|
||||||
|
if (issubclass(option_class, object) or # New-style class
|
||||||
|
isinstance(option_class, ClassType)): # Old-style class
|
||||||
|
self.options = option_class(self.raw_name, self.db)
|
||||||
|
except TypeError:
|
||||||
|
self.options = option_class
|
||||||
|
if not self.is_from_saved_book:
|
||||||
|
self.options.load_previous_values()
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# Function to write books from command line
|
# Function to write books from command line
|
||||||
@ -1318,17 +1382,20 @@ def cl_report(database, name, category, options_str_dict):
|
|||||||
selected_style = StyleSheet()
|
selected_style = StyleSheet()
|
||||||
|
|
||||||
for item in book.get_item_list():
|
for item in book.get_item_list():
|
||||||
|
handler = item.option_class.handler
|
||||||
|
|
||||||
# Set up default style
|
# Set up default style
|
||||||
|
handler.set_default_stylesheet_name(item.get_style_name())
|
||||||
default_style = StyleSheet()
|
default_style = StyleSheet()
|
||||||
make_default_style = item.option_class.make_default_style
|
make_default_style = item.option_class.make_default_style
|
||||||
make_default_style(default_style)
|
make_default_style(default_style)
|
||||||
|
|
||||||
# Read all style sheets available for this item
|
# Read all style sheets available for this item
|
||||||
style_file = item.option_class.handler.get_stylesheet_savefile()
|
style_file = handler.get_stylesheet_savefile()
|
||||||
style_list = StyleSheetList(style_file, default_style)
|
style_list = StyleSheetList(style_file, default_style)
|
||||||
|
|
||||||
# Get the selected stylesheet
|
# Get the selected stylesheet
|
||||||
style_name = item.option_class.handler.get_default_stylesheet_name()
|
style_name = handler.get_default_stylesheet_name()
|
||||||
style_sheet = style_list.get_style_sheet(style_name)
|
style_sheet = style_list.get_style_sheet(style_name)
|
||||||
|
|
||||||
for this_style_name in style_sheet.get_paragraph_style_names():
|
for this_style_name in style_sheet.get_paragraph_style_names():
|
||||||
|
Loading…
Reference in New Issue
Block a user