def open_book(self, book): """ Open the book: set the current set of selections to this book's items. book: the book object to load. """ if book.get_paper_name(): self.book.set_paper_name(book.get_paper_name()) if book.get_orientation() is not None: # 0 is legal self.book.set_orientation(book.get_orientation()) if book.get_paper_metric() is not None: # 0 is legal self.book.set_paper_metric(book.get_paper_metric()) if book.get_custom_paper_size(): self.book.set_custom_paper_size(book.get_custom_paper_size()) if book.get_margins(): self.book.set_margins(book.get_margins()) if book.get_format_name(): self.book.set_format_name(book.get_format_name()) if book.get_output(): self.book.set_output(book.get_output()) if book.get_dbname() != self._db.get_save_path(): WarningDialog( _('Different database'), _('This book was created with the references to database ' '%s.\n\n This makes references to the central person ' 'saved in the book invalid.\n\n' 'Therefore, the central person for each item is being set ' 'to the active person of the currently opened database.') % book.get_dbname(), parent=self.window) self.book.clear() self.book_model.clear() 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 menu = item.option_class.menu for optname in opt_dict: menu_option = menu.get_option_by_name(optname) if menu_option: menu_option.set_value(opt_dict[optname]) _initialize_options(item.option_class, self.dbstate, self.uistate) item.set_style_name(saved_item.get_style_name()) self.book.append_item(item) data = [ item.get_translated_name(), item.get_category(), item.get_name() ] data[2] = item.option_class.get_subject() self.book_model.add(data)
def open_book(self, book): """ Open the book: set the current set of selections to this book's items. book: the book object to load. """ if book.get_paper_name(): self.book.set_paper_name(book.get_paper_name()) if book.get_orientation() is not None: # 0 is legal self.book.set_orientation(book.get_orientation()) if book.get_paper_metric() is not None: # 0 is legal self.book.set_paper_metric(book.get_paper_metric()) if book.get_custom_paper_size(): self.book.set_custom_paper_size(book.get_custom_paper_size()) if book.get_margins(): self.book.set_margins(book.get_margins()) if book.get_format_name(): self.book.set_format_name(book.get_format_name()) if book.get_output(): self.book.set_output(book.get_output()) if book.get_dbname() == self.db.get_save_path(): same_db = 1 else: same_db = 0 WarningDialog(_('Different database'), _( 'This book was created with the references to database ' '%s.\n\n This makes references to the central person ' 'saved in the book invalid.\n\n' 'Therefore, the central person for each item is being set ' 'to the active person of the currently opened database.') % book.get_dbname(), parent=self.window) self.book.clear() self.book_model.clear() 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 menu = item.option_class.menu for optname in opt_dict: menu_option = menu.get_option_by_name(optname) if menu_option: menu_option.set_value(opt_dict[optname]) _initialize_options(item.option_class, self.dbstate, self.uistate) item.set_style_name(saved_item.get_style_name()) self.book.append_item(item) data = [ item.get_translated_name(), item.get_category(), item.get_name() ] data[2] = _get_subject(item.option_class, self.db) self.book_model.add(data)
def on_add_clicked(self, obj): """ Add an item to the current selections. Use the selected available item to get the item's name in the registry. """ store, the_iter = self.avail_model.get_selected() if not the_iter: return data = self.avail_model.get_data(the_iter, list(range(self.avail_nr_cols))) item = BookItem(self._db, data[2]) _initialize_options(item.option_class, self.dbstate, self.uistate) data[2] = item.option_class.get_subject() self.book_model.add(data) self.book.append_item(item)