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