From e3d732a31ee2ef230e1cfcb7d03edbe7b3fd35fb Mon Sep 17 00:00:00 2001 From: Paul Franklin Date: Mon, 28 Nov 2016 15:24:21 -0800 Subject: [PATCH] 9789: Book Report only works with the default values (master "4ffc5e3") --- gramps/gen/plug/report/_book.py | 6 ++++-- gramps/gui/plug/report/_bookdialog.py | 13 +++++-------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/gramps/gen/plug/report/_book.py b/gramps/gen/plug/report/_book.py index b0ef6f8c2..aa867e5ec 100644 --- a/gramps/gen/plug/report/_book.py +++ b/gramps/gen/plug/report/_book.py @@ -90,7 +90,6 @@ class BookItem: """ self.dbase = dbase self.style_name = "default" - self.was_reconfigured = False # has the item been reconfigured? pmgr = BasePluginManager.get_instance() for pdata in pmgr.get_reg_bookitems(): @@ -179,7 +178,6 @@ class Book: self.paper_format = None self.paper_output = None self.item_list = [] - self.was_reconfigured = False # has the book been reconfigured? if obj: if exact_copy: self.item_list = obj.item_list @@ -188,8 +186,12 @@ class Book: new_item = BookItem(item.dbase, item.get_name()) orig_opt_dict = item.option_class.handler.options_dict new_opt_dict = new_item.option_class.handler.options_dict + menu = new_item.option_class.menu for optname in orig_opt_dict: new_opt_dict[optname] = orig_opt_dict[optname] + menu_option = menu.get_option_by_name(optname) + if menu_option: + menu_option.set_value(new_opt_dict[optname]) new_item.set_style_name(item.get_style_name()) self.item_list.append(new_item) diff --git a/gramps/gui/plug/report/_bookdialog.py b/gramps/gui/plug/report/_bookdialog.py index 15b6f28de..c139643d0 100644 --- a/gramps/gui/plug/report/_bookdialog.py +++ b/gramps/gui/plug/report/_bookdialog.py @@ -76,8 +76,6 @@ from gramps.gen.plug.report._options import ReportOptions from ._reportdialog import ReportDialog from ._docreportdialog import DocReportDialog -from gramps.gen.display.name import displayer as _nd - #------------------------------------------------------------------------ # # Private Constants @@ -463,13 +461,14 @@ class BookSelector(ManagedWindow): for saved_item in book.get_item_list(): name = saved_item.get_name() item = BookItem(self._db, name) - item.option_class = saved_item.option_class # The option values were loaded magically by the book parser. # But they still need to be applied to the menu options. opt_dict = item.option_class.handler.options_dict + orig_opt_dict = saved_item.option_class.handler.options_dict menu = item.option_class.menu for optname in opt_dict: + opt_dict[optname] = orig_opt_dict[optname] menu_option = menu.get_option_by_name(optname) if menu_option: menu_option.set_value(opt_dict[optname]) @@ -751,7 +750,7 @@ class BookSelector(ManagedWindow): # booklist was saved into a file so everything was fine, but # this created a problem once the paper settings were added # to the Book object in the BookDialog, since those settings - # were retrieved from the Book object in Book.save, so mutiple + # were retrieved from the Book object in BookList.save, so mutiple # books (differentiated by their names) were assigned the # same paper values, so the solution is to make each Book be # unique in the booklist, so if multiple copies are saved away @@ -926,14 +925,13 @@ class BookDialog(DocReportDialog): def __init__(self, dbstate, uistate, book, options): self.format_menu = None self.options = options - self.is_from_saved_book = False self.page_html_added = False self.book = book self.title = _('Generate Book') self.database = dbstate.db DocReportDialog.__init__(self, dbstate, uistate, options, 'book', self.title) - self.options.options_dict['bookname'] = self.book.name + self.options.options_dict['bookname'] = self.book.get_name() response = self.window.run() if response == Gtk.ResponseType.OK: @@ -1038,8 +1036,7 @@ class BookDialog(DocReportDialog): self.options = option_class(self.raw_name, self.database) except TypeError: self.options = option_class - if not self.is_from_saved_book: - self.options.load_previous_values() + self.options.load_previous_values() handler = self.options.handler if self.book.get_paper_name(): handler.set_paper_name(self.book.get_paper_name())