Move config to instance variable so reports can share proxy system; moved gtk to methods for CLI export with no DISPLAY
svn: r16305
This commit is contained in:
		| @@ -27,9 +27,6 @@ | ||||
| # python modules | ||||
| # | ||||
| #------------------------------------------------------------------------- | ||||
| import gtk | ||||
| import pango | ||||
| import gobject | ||||
|  | ||||
| #------------------------------------------------------------------------- | ||||
| # | ||||
| @@ -39,32 +36,17 @@ import gobject | ||||
| from gen.ggettext import gettext as _ | ||||
| from gen.ggettext import ngettext | ||||
| import config | ||||
| import gui.widgets | ||||
| from gen.display.name import displayer as name_displayer | ||||
| from Filters import GenericFilter, Rules | ||||
| from gui.utils import ProgressMeter | ||||
|          | ||||
| def get_proxy_value(proxy_name): | ||||
|     return [value for (name, value) in  | ||||
|             config.get('export.proxy-order') if name == proxy_name][0] | ||||
|  | ||||
| def set_proxy_value(proxy_name, proxy_value): | ||||
|     [name_value for name_value in  | ||||
|      config.get('export.proxy-order') if name_value[0] == proxy_name][0][1] = int(proxy_value) | ||||
|  | ||||
| def get_proxy_names(): | ||||
|     return [name for (name, value) in config.get('export.proxy-order')] | ||||
|  | ||||
| def swap_proxy_order(row1, row2): | ||||
|     po = config.get('export.proxy-order') | ||||
|     po[row1], po[row2] = po[row2], po[row1] | ||||
|  | ||||
| class Progress(object): | ||||
|     """ | ||||
|     Mirros the same interface that the ExportAssistant uses in the | ||||
|     selection, but this is for the preview selection. | ||||
|     """ | ||||
|     def __init__(self): | ||||
|         import gtk | ||||
|         self.pm = ProgressMeter(_("Selecting Preview Data"), _('Selecting...')) | ||||
|         self.progress_cnt = 0 | ||||
|         self.title = _("Selecting...") | ||||
| @@ -72,17 +54,20 @@ class Progress(object): | ||||
|             gtk.main_iteration() | ||||
|  | ||||
|     def reset(self, title): | ||||
|         import gtk | ||||
|         self.pm.set_header(title) | ||||
|         self.title = title | ||||
|         while gtk.events_pending(): | ||||
|             gtk.main_iteration() | ||||
|  | ||||
|     def set_total(self, count): | ||||
|         import gtk | ||||
|         self.pm.set_pass(self.title, total=count+1) | ||||
|         while gtk.events_pending(): | ||||
|             gtk.main_iteration() | ||||
|  | ||||
|     def update(self, count): | ||||
|         import gtk | ||||
|         self.pm.step() | ||||
|         while gtk.events_pending(): | ||||
|             gtk.main_iteration() | ||||
| @@ -122,12 +107,21 @@ class WriterOptionBox(object): | ||||
|         self.filter_note = None | ||||
|         self.reference_filter = None | ||||
|         self.initialized_show_options = False | ||||
|         self.set_config(config) | ||||
|         # The following are special properties. Create them to force the | ||||
|         # export wizard to not ask for a file, and to override the  | ||||
|         # confirmation message: | ||||
|         #self.no_fileselect = True | ||||
|         #self.confirm_text = "You made it, kid!" | ||||
|  | ||||
|     def set_config(self, config): | ||||
|         """ | ||||
|         Set the config used for these proxies. Allows WriterOptionBox | ||||
|         to be used by reports, etc. The default is to use Gramps's | ||||
|         system config. | ||||
|         """ | ||||
|         self.config = config | ||||
|  | ||||
|     def mark_dirty(self, widget=None): | ||||
|         self.preview_dbase = None | ||||
|         if self.preview_button: | ||||
| @@ -139,6 +133,8 @@ class WriterOptionBox(object): | ||||
|  | ||||
|     def get_option_box(self): | ||||
|         """Build up a gtk.Table that contains the standard options.""" | ||||
|         import gtk | ||||
|         import pango | ||||
|         widget = gtk.VBox() | ||||
|          | ||||
|         full_database_row = gtk.HBox() | ||||
| @@ -160,14 +156,14 @@ class WriterOptionBox(object): | ||||
|         self.private_check = gtk.CheckButton( | ||||
|             _('_Do not include records marked private')) | ||||
|         self.private_check.connect("clicked", self.mark_dirty) | ||||
|         self.private_check.set_active(get_proxy_value("privacy")) | ||||
|         self.private_check.set_active(self.get_proxy_value("privacy")) | ||||
|  | ||||
|         self.proxy_widget = {} | ||||
|         self.vbox_n = [] | ||||
|         self.up_n = [] | ||||
|         self.down_n = [] | ||||
|         row = 0 | ||||
|         for proxy_name in get_proxy_names(): | ||||
|         for proxy_name in self.get_proxy_names(): | ||||
|             frame = self.build_frame(proxy_name, row) | ||||
|             widget.pack_start(frame, False) | ||||
|             row += 1 | ||||
| @@ -188,28 +184,28 @@ class WriterOptionBox(object): | ||||
|         self.filter_obj.pack_start(cell, True) | ||||
|         self.filter_obj.add_attribute(cell, 'text', 0) | ||||
|         self.filter_obj.set_model(self.build_model("person")) | ||||
|         self.filter_obj.set_active(get_proxy_value("person")) | ||||
|         self.filter_obj.set_active(self.get_proxy_value("person")) | ||||
|  | ||||
|         cell = gtk.CellRendererText() | ||||
|         cell.set_property('ellipsize', pango.ELLIPSIZE_END) | ||||
|         self.restrict_option.pack_start(cell, True) | ||||
|         self.restrict_option.add_attribute(cell, 'text', 0) | ||||
|         self.restrict_option.set_model(self.build_model("living")) | ||||
|         self.restrict_option.set_active(get_proxy_value("living")) | ||||
|         self.restrict_option.set_active(self.get_proxy_value("living")) | ||||
|  | ||||
|         cell = gtk.CellRendererText() | ||||
|         cell.set_property('ellipsize', pango.ELLIPSIZE_END) | ||||
|         self.reference_filter.pack_start(cell, True) | ||||
|         self.reference_filter.add_attribute(cell, 'text', 0) | ||||
|         self.reference_filter.set_model(self.build_model("reference")) | ||||
|         self.reference_filter.set_active(get_proxy_value("reference")) | ||||
|         self.reference_filter.set_active(self.get_proxy_value("reference")) | ||||
|  | ||||
|         notes_cell = gtk.CellRendererText() | ||||
|         notes_cell.set_property('ellipsize', pango.ELLIPSIZE_END) | ||||
|         self.filter_note.pack_start(notes_cell, True) | ||||
|         self.filter_note.add_attribute(notes_cell, 'text', 0) | ||||
|         self.filter_note.set_model(self.build_model("note")) | ||||
|         self.filter_note.set_active(get_proxy_value("note")) | ||||
|         self.filter_note.set_active(self.get_proxy_value("note")) | ||||
|  | ||||
|         self.filter_note.connect("changed", self.mark_dirty) | ||||
|         self.filter_obj.connect("changed", self.mark_dirty) | ||||
| @@ -246,6 +242,8 @@ class WriterOptionBox(object): | ||||
|         Build a frame for a proxy option. proxy_name is a string. | ||||
|         """ | ||||
|         # Make a box and put the option in it: | ||||
|         import gtk | ||||
|         import gui.widgets | ||||
|         button = gtk.Button(ngettext("%d Person", "%d People", 0) % 0) | ||||
|         button.set_size_request(100, -1) | ||||
|         button.connect("clicked", self.show_preview_data) | ||||
| @@ -354,6 +352,7 @@ class WriterOptionBox(object): | ||||
|         time due to the fact that Gramps tends to use show_all rather | ||||
|         than show. | ||||
|         """ | ||||
|         import gtk | ||||
|         if self.proxy_options_showing: | ||||
|             self.advanced_button.set_label(_("Change order")) | ||||
|             self.spacer_up.hide() | ||||
| @@ -401,15 +400,15 @@ class WriterOptionBox(object): | ||||
|         """ | ||||
|         row1 = widget.row | ||||
|         row2 = widget.row + 1 | ||||
|         proxy1 = config.get('export.proxy-order')[row1][0] | ||||
|         proxy2 = config.get('export.proxy-order')[row2][0] | ||||
|         proxy1 = self.config.get('export.proxy-order')[row1][0] | ||||
|         proxy2 = self.config.get('export.proxy-order')[row2][0] | ||||
|         widget1 = self.proxy_widget[proxy1] | ||||
|         widget2 = self.proxy_widget[proxy2] | ||||
|         parent1 = widget1.get_parent() | ||||
|         parent2 = widget2.get_parent() | ||||
|         widget1.reparent(parent2) | ||||
|         widget2.reparent(parent1) | ||||
|         swap_proxy_order(row1, row2) | ||||
|         self.swap_proxy_order(row1, row2) | ||||
|         self.mark_dirty(widget) | ||||
|  | ||||
|     def __define_person_filters(self): | ||||
| @@ -436,6 +435,21 @@ class WriterOptionBox(object): | ||||
|  | ||||
|         return [des, df, ans, com] | ||||
|  | ||||
|     def get_proxy_value(self, proxy_name): | ||||
|         return [value for (name, value) in  | ||||
|                 self.config.get('export.proxy-order') if name == proxy_name][0] | ||||
|  | ||||
|     def set_proxy_value(self, proxy_name, proxy_value): | ||||
|         [name_value for name_value in  | ||||
|          self.config.get('export.proxy-order') if name_value[0] == proxy_name][0][1] = int(proxy_value) | ||||
|  | ||||
|     def get_proxy_names(self): | ||||
|         return [name for (name, value) in self.config.get('export.proxy-order')] | ||||
|  | ||||
|     def swap_proxy_order(self, row1, row2): | ||||
|         po = self.config.get('export.proxy-order') | ||||
|         po[row1], po[row2] = po[row2], po[row1] | ||||
|  | ||||
|     def parse_options(self): | ||||
|         """ | ||||
|         Extract the common values from the GTK widgets.  | ||||
| @@ -451,35 +465,35 @@ class WriterOptionBox(object): | ||||
|         """ | ||||
|         if self.private_check: | ||||
|             self.private = self.private_check.get_active() | ||||
|             set_proxy_value("privacy", self.private) | ||||
|             self.set_proxy_value("privacy", self.private) | ||||
|  | ||||
|         if self.filter_obj: | ||||
|             model = self.filter_obj.get_model() | ||||
|             node = self.filter_obj.get_active_iter() | ||||
|             if node: | ||||
|                 self.cfilter = model[node][1] | ||||
|             set_proxy_value("person", self.filter_obj.get_active()) | ||||
|             self.set_proxy_value("person", self.filter_obj.get_active()) | ||||
|  | ||||
|         if self.restrict_option: | ||||
|             model = self.restrict_option.get_model() | ||||
|             node = self.restrict_option.get_active_iter() | ||||
|             if node: | ||||
|                 self.restrict_num = model[node][1] | ||||
|             set_proxy_value("living", self.restrict_option.get_active()) | ||||
|             self.set_proxy_value("living", self.restrict_option.get_active()) | ||||
|          | ||||
|         if self.filter_note: | ||||
|             model = self.filter_note.get_model() | ||||
|             node = self.filter_note.get_active_iter() | ||||
|             if node: | ||||
|                 self.nfilter = model[node][1] | ||||
|             set_proxy_value("note", self.filter_note.get_active()) | ||||
|             self.set_proxy_value("note", self.filter_note.get_active()) | ||||
|  | ||||
|         if self.reference_filter: | ||||
|             model = self.reference_filter.get_model() | ||||
|             node = self.reference_filter.get_active_iter() | ||||
|             if node: | ||||
|                 self.reference_num = model[node][1] | ||||
|             set_proxy_value("reference", self.reference_filter.get_active()) | ||||
|             self.set_proxy_value("reference", self.reference_filter.get_active()) | ||||
|  | ||||
|     def get_filtered_database(self, dbase, progress=None, preview=False): | ||||
|         """ | ||||
| @@ -516,7 +530,7 @@ class WriterOptionBox(object): | ||||
|             return self.preview_dbase | ||||
|  | ||||
|         self.proxy_dbase.clear() | ||||
|         for proxy_name in get_proxy_names(): | ||||
|         for proxy_name in self.get_proxy_names(): | ||||
|             dbase = self.apply_proxy(proxy_name, dbase, progress) | ||||
|             if preview: | ||||
|                 self.proxy_dbase[proxy_name] = dbase | ||||
| @@ -647,6 +661,8 @@ class WriterOptionBox(object): | ||||
|         """ | ||||
|         Build a model for the combo box selector. | ||||
|         """ | ||||
|         import gtk | ||||
|         import gobject | ||||
|         from Filters import CustomFilters | ||||
|         if namespace == "person": | ||||
|             # Populate the Person Filter | ||||
|   | ||||
		Reference in New Issue
	
	Block a user