2006-05-31 Alex Roitman <shura@gramps-project.org>

* src/Selectors/_SelectPerson.py (__init__): take track argument.
	* src/Editors/_EditFamily.py: Adapt to SelectPerson change.
	* src/Editors/_EditPersonRef.py (_select_person): Adapt to
	SelectPerson change.
	* src/ReportBase/_BareReportDialog.py: Use dbstata and uistate,
	convert to Managed window.
	* src/ReportBase/_ReportDialog.py: Use dbstate and uistate.
	* src/ReportBase/_DrawReportDialog.py: Use dbstate and uistate.
	* src/ReportBase/_TextReportDialog.py: Use dbstate and uistate.
	* src/ViewManager.py (make_report_callback): Use dbstate and uistate.



svn: r6830
This commit is contained in:
Alex Roitman 2006-05-31 18:26:50 +00:00
parent 16d1a886a4
commit 2e3d406b62
9 changed files with 120 additions and 40 deletions

View File

@ -1,3 +1,15 @@
2006-05-31 Alex Roitman <shura@gramps-project.org>
* src/Selectors/_SelectPerson.py (__init__): take track argument.
* src/Editors/_EditFamily.py: Adapt to SelectPerson change.
* src/Editors/_EditPersonRef.py (_select_person): Adapt to
SelectPerson change.
* src/ReportBase/_BareReportDialog.py: Use dbstata and uistate,
convert to Managed window.
* src/ReportBase/_ReportDialog.py: Use dbstate and uistate.
* src/ReportBase/_DrawReportDialog.py: Use dbstate and uistate.
* src/ReportBase/_TextReportDialog.py: Use dbstate and uistate.
* src/ViewManager.py (make_report_callback): Use dbstate and uistate.
2006-05-30 Don Allingham <don@gramps-project.org> 2006-05-30 Don Allingham <don@gramps-project.org>
* src/plugins/FilterEditor.py: start to bring into sync with * src/plugins/FilterEditor.py: start to bring into sync with
code changes code changes

View File

@ -224,8 +224,8 @@ class ChildEmbedList(EmbeddedList):
self.family.get_mother_handle()] + \ self.family.get_mother_handle()] + \
[x.ref for x in self.family.get_child_ref_list() ] [x.ref for x in self.family.get_child_ref_list() ]
sel = SelectPerson(self.dbstate, self.uistate, _("Select Child"), sel = SelectPerson(self.dbstate, self.uistate, self.track,
skip=skip_list) _("Select Child"), skip=skip_list)
person = sel.run() person = sel.run()
if person: if person:
@ -236,8 +236,8 @@ class ChildEmbedList(EmbeddedList):
def run(self,skip): def run(self,skip):
skip_list = [ x for x in skip if x] skip_list = [ x for x in skip if x]
SelectPerson(self.dbstate, self.uistate, _("Select Child"), SelectPerson(self.dbstate, self.uistate, self.track,
skip=skip_list) _("Select Child"), skip=skip_list)
def del_button_clicked(self,obj): def del_button_clicked(self,obj):
handle = self.get_selected() handle = self.get_selected()
@ -542,7 +542,7 @@ class EditFamily(EditPrimary):
self.update_mother(None) self.update_mother(None)
else: else:
data_filter = FastFemaleFilter(self.dbstate.db) data_filter = FastFemaleFilter(self.dbstate.db)
sel = SelectPerson(self.dbstate, self.uistate, sel = SelectPerson(self.dbstate, self.uistate, self.track,
_("Select Mother"), _("Select Mother"),
filter=data_filter, filter=data_filter,
skip=[x.ref for x in self.obj.get_child_ref_list()]) skip=[x.ref for x in self.obj.get_child_ref_list()])
@ -586,7 +586,7 @@ class EditFamily(EditPrimary):
self.update_father(None) self.update_father(None)
else: else:
data_filter = FastMaleFilter(self.dbstate.db) data_filter = FastMaleFilter(self.dbstate.db)
sel = SelectPerson(self.dbstate, self.uistate, sel = SelectPerson(self.dbstate, self.uistate, self.track,
_("Select Father"), _("Select Father"),
filter=data_filter, filter=data_filter,
skip=[x.ref for x in self.obj.get_child_ref_list()]) skip=[x.ref for x in self.obj.get_child_ref_list()])

View File

@ -103,7 +103,7 @@ class EditPersonRef(EditSecondary):
from Selectors import selector_factory from Selectors import selector_factory
SelectPerson = selector_factory('Person') SelectPerson = selector_factory('Person')
sel = SelectPerson(self.dbstate, self.uistate, "Select Person") sel = SelectPerson(self.dbstate, self.uistate, self.track)
person = sel.run() person = sel.run()
if person: if person:

View File

@ -20,14 +20,36 @@
# $Id$ # $Id$
#-------------------------------------------------------------------------
#
# Python modules
#
#-------------------------------------------------------------------------
from types import ClassType, InstanceType from types import ClassType, InstanceType
#-------------------------------------------------------------------------
#
# GTK/Gnome modules
#
#-------------------------------------------------------------------------
import gtk import gtk
#-------------------------------------------------------------------------
#
# gramps modules
#
#-------------------------------------------------------------------------
import NameDisplay import NameDisplay
import BaseDoc import BaseDoc
import ManagedWindow
from _StyleComboBox import StyleComboBox from _StyleComboBox import StyleComboBox
class BareReportDialog: #-------------------------------------------------------------------------
#
# BareReportDialog class
#
#-------------------------------------------------------------------------
class BareReportDialog(ManagedWindow.ManagedWindow):
""" """
The BareReportDialog base class. This is a base class for generating The BareReportDialog base class. This is a base class for generating
customized dialogs to solicit some options for a report. This class customized dialogs to solicit some options for a report. This class
@ -40,19 +62,36 @@ class BareReportDialog:
frame_pad = 5 frame_pad = 5
border_pad = 6 border_pad = 6
def __init__(self,database,person,option_class,name,translated_name): def __init__(self,dbstate,uistate,person,option_class,
name,translated_name,track=[]):
"""Initialize a dialog to request that the user select options """Initialize a dialog to request that the user select options
for a basic *bare* report.""" for a basic *bare* report."""
self.db = database self.dbstate = dbstate
self.uistate = uistate
self.db = dbstate.db
self.person = person self.person = person
self.report_name = translated_name
self.raw_name = name
ManagedWindow.ManagedWindow.__init__(self, uistate, track, self)
if type(option_class) == ClassType: if type(option_class) == ClassType:
self.options = option_class(name) self.options = option_class(name)
elif type(option_class) == InstanceType: elif type(option_class) == InstanceType:
self.options = option_class self.options = option_class
self.report_name = translated_name
self.init_interface() self.init_interface()
def build_window_key(self,obj):
key = self.raw_name
if self.person:
key += self.person.get_handle()
return key
def build_menu_names(self,obj):
return (self.report_name,None)
def init_interface(self): def init_interface(self):
#self.output_notebook = None #self.output_notebook = None
#self.notebook_page = 1 #self.notebook_page = 1
@ -69,13 +108,15 @@ class BareReportDialog:
self.style_button = None self.style_button = None
self.style_name = self.options.handler.get_default_stylesheet_name() self.style_name = self.options.handler.get_default_stylesheet_name()
(self.max_gen,self.page_breaks) = self.options.handler.get_report_generations() (self.max_gen,self.page_breaks) = \
self.options.handler.get_report_generations()
try: try:
self.local_filters = self.options.get_report_filters(self.person) self.local_filters = self.options.get_report_filters(self.person)
except AttributeError: except AttributeError:
self.local_filters = [] self.local_filters = []
self.window = gtk.Dialog('GRAMPS') window = gtk.Dialog('GRAMPS')
self.set_window(window,None,self.get_title())
self.window.set_has_separator(False) self.window.set_has_separator(False)
self.cancel = self.window.add_button(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL) self.cancel = self.window.add_button(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL)
self.ok = self.window.add_button(gtk.STOCK_OK,gtk.RESPONSE_OK) self.ok = self.window.add_button(gtk.STOCK_OK,gtk.RESPONSE_OK)
@ -612,7 +653,7 @@ class BareReportDialog:
def on_center_person_change_clicked(self,*obj): def on_center_person_change_clicked(self,*obj):
from Selectors import selector_factory from Selectors import selector_factory
SelectPerson = selector_factory('Person') SelectPerson = selector_factory('Person')
sel_person = SelectPerson(self.db,_('Select Person')) sel_person = SelectPerson(self.dbstate,self.uistate,self.track)
new_person = sel_person.run() new_person = sel_person.run()
if new_person: if new_person:
self.new_person = new_person self.new_person = new_person

View File

@ -31,12 +31,13 @@ from _DrawFormatComboBox import DrawFormatComboBox
#----------------------------------------------------------------------- #-----------------------------------------------------------------------
class DrawReportDialog(ReportDialog): class DrawReportDialog(ReportDialog):
"""A class of ReportDialog customized for drawing based reports.""" """A class of ReportDialog customized for drawing based reports."""
def __init__(self,database,person,opt,name,translated_name): def __init__(self,dbstate,uistate,person,opt,name,translated_name):
"""Initialize a dialog to request that the user select options """Initialize a dialog to request that the user select options
for a basic drawing report. See the ReportDialog class for for a basic drawing report. See the ReportDialog class for
more information.""" more information."""
self.category = CATEGORY_DRAW self.category = CATEGORY_DRAW
ReportDialog.__init__(self,database,person,opt,name,translated_name) ReportDialog.__init__(self,dbstate,uistate,person,opt,
name,translated_name)
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #

View File

@ -20,9 +20,25 @@
# $Id$ # $Id$
#-------------------------------------------------------------------------
#
# Python modules
#
#-------------------------------------------------------------------------
import os import os
#-------------------------------------------------------------------------
#
# GTK+ modules
#
#-------------------------------------------------------------------------
import gtk import gtk
#-------------------------------------------------------------------------
#
# GRAMPS modules
#
#-------------------------------------------------------------------------
import Config import Config
import Errors import Errors
from QuestionDialog import ErrorDialog, OptionDialog from QuestionDialog import ErrorDialog, OptionDialog
@ -34,6 +50,11 @@ from _FileEntry import FileEntry
from _PaperMenu import PaperComboBox, OrientationComboBox, paper_sizes from _PaperMenu import PaperComboBox, OrientationComboBox, paper_sizes
from _TemplateParser import _template_map, _default_template, _user_template from _TemplateParser import _template_map, _default_template, _user_template
#-------------------------------------------------------------------------
#
# ReportDialog class
#
#-------------------------------------------------------------------------
class ReportDialog(BareReportDialog): class ReportDialog(BareReportDialog):
""" """
The ReportDialog base class. This is a base class for generating The ReportDialog base class. This is a base class for generating
@ -42,14 +63,14 @@ class ReportDialog(BareReportDialog):
dialog for a stand-alone report. dialog for a stand-alone report.
""" """
def __init__(self,database,person,option_class,name,translated_name): def __init__(self,dbstate,uistate,person,option_class,name,trans_name):
"""Initialize a dialog to request that the user select options """Initialize a dialog to request that the user select options
for a basic *stand-alone* report.""" for a basic *stand-alone* report."""
self.style_name = "default" self.style_name = "default"
self.page_html_added = False self.page_html_added = False
BareReportDialog.__init__(self,database,person,option_class, BareReportDialog.__init__(self,dbstate,uistate,person,option_class,
name,translated_name) name,trans_name)
# Allow for post processing of the format frame, since the # Allow for post processing of the format frame, since the
# show_all task calls events that may reset values # show_all task calls events that may reset values
@ -530,7 +551,8 @@ class ReportDialog(BareReportDialog):
if self.pagecount_menu == None: if self.pagecount_menu == None:
self.pagecount = 0 self.pagecount = 0
else: else:
self.pagecount = self.pagecount_menu.get_menu().get_active().get_data("d") self.pagecount = \
self.pagecount_menu.get_menu().get_active().get_data("d")
def parse_html_frame(self): def parse_html_frame(self):
"""Parse the html frame of the dialog. Save the user selected """Parse the html frame of the dialog. Save the user selected
@ -546,7 +568,8 @@ class ReportDialog(BareReportDialog):
if text == _user_template: if text == _user_template:
self.template_name = self.html_fileentry.get_full_path(0) self.template_name = self.html_fileentry.get_full_path(0)
else: else:
self.template_name = "%s/%s" % (const.template_dir,_template_map[text]) self.template_name = "%s/%s" % (const.template_dir,
_template_map[text])
else: else:
self.template_name = "" self.template_name = ""
self.options.handler.set_template_name(self.template_name) self.options.handler.set_template_name(self.template_name)
@ -580,8 +603,8 @@ class ReportDialog(BareReportDialog):
# Generic task function a standalone GUI report # Generic task function a standalone GUI report
# #
#------------------------------------------------------------------------ #------------------------------------------------------------------------
def report(database,person,report_class,options_class, def report(dbstate,uistate,person,report_class,options_class,
translated_name,name,category): trans_name,name,category):
""" """
report - task starts the report. The plugin system requires that the report - task starts the report. The plugin system requires that the
task be in the format of task that takes a database and a person as task be in the format of task that takes a database and a person as
@ -594,14 +617,13 @@ def report(database,person,report_class,options_class,
elif category == CATEGORY_DRAW: elif category == CATEGORY_DRAW:
from _DrawReportDialog import DrawReportDialog from _DrawReportDialog import DrawReportDialog
dialog_class = DrawReportDialog dialog_class = DrawReportDialog
elif category in (CATEGORY_BOOK,CATEGORY_VIEW, elif category in (CATEGORY_BOOK,CATEGORY_VIEW,CATEGORY_CODE,CATEGORY_WEB):
CATEGORY_CODE,CATEGORY_WEB): report_class(dbstate,uistate,person)
report_class(database,person)
return return
else: else:
dialog_class = ReportDialog dialog_class = ReportDialog
dialog = dialog_class(database,person,options_class,name,translated_name) dialog = dialog_class(dbstate,uistate,person,options_class,name,trans_name)
response = dialog.window.run() response = dialog.window.run()
if response == gtk.RESPONSE_OK: if response == gtk.RESPONSE_OK:
try: try:
@ -620,4 +642,4 @@ def report(database,person,report_class,options_class,
ErrorDialog(_("Report could not be created"),str(msg)) ErrorDialog(_("Report could not be created"),str(msg))
except: except:
log.error("Failed to run report.", exc_info=True) log.error("Failed to run report.", exc_info=True)
dialog.window.destroy() dialog.close()

View File

@ -32,12 +32,13 @@ from _TextFormatComboBox import TextFormatComboBox
class TextReportDialog(ReportDialog): class TextReportDialog(ReportDialog):
"""A class of ReportDialog customized for text based reports.""" """A class of ReportDialog customized for text based reports."""
def __init__(self,database,person,options,name,translated_name): def __init__(self,dbstate,uistate,person,options,name,translated_name):
"""Initialize a dialog to request that the user select options """Initialize a dialog to request that the user select options
for a basic text report. See the ReportDialog class for more for a basic text report. See the ReportDialog class for more
information.""" information."""
self.category = CATEGORY_TEXT self.category = CATEGORY_TEXT
ReportDialog.__init__(self,database,person,options,name,translated_name) ReportDialog.__init__(self,dbstate,uistate,person,options,
name,translated_name)
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #

View File

@ -52,9 +52,14 @@ import ManagedWindow
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
class SelectPerson(ManagedWindow.ManagedWindow): class SelectPerson(ManagedWindow.ManagedWindow):
def __init__(self, dbstate, uistate, title, filter=None, skip=[]): def __init__(self, dbstate, uistate, track=[], title='',
filter=None, skip=[]):
if title:
self.title = title
else:
self.title = _("Select Person")
ManagedWindow.ManagedWindow.__init__(self, uistate, [], self) ManagedWindow.ManagedWindow.__init__(self, uistate, track, self)
self.renderer = gtk.CellRendererText() self.renderer = gtk.CellRendererText()
self.renderer.set_property('ellipsize',pango.ELLIPSIZE_END) self.renderer.set_property('ellipsize',pango.ELLIPSIZE_END)
@ -63,11 +68,9 @@ class SelectPerson(ManagedWindow.ManagedWindow):
self.plist = self.glade.get_widget('plist') self.plist = self.glade.get_widget('plist')
self.notebook = self.glade.get_widget('notebook') self.notebook = self.glade.get_widget('notebook')
self.set_window( window = self.glade.get_widget('select_person')
self.glade.get_widget('select_person'), title_label = self.glade.get_widget('title')
self.glade.get_widget('title'), self.set_window(window,title_label,self.title)
title)
self.model = PeopleModel(self.db, self.model = PeopleModel(self.db,
(PeopleModel.FAST, filter), (PeopleModel.FAST, filter),
skip=skip) skip=skip)
@ -77,7 +80,7 @@ class SelectPerson(ManagedWindow.ManagedWindow):
self.show() self.show()
def build_menu_names(self,obj): def build_menu_names(self,obj):
return (_('Select Person'), None) return (self.title, None)
def add_columns(self,tree): def add_columns(self,tree):
tree.set_fixed_height_mode(True) tree.set_fixed_height_mode(True)

View File

@ -966,7 +966,7 @@ def by_menu_name(a, b):
def make_report_callback(lst, dbstate, uistate): def make_report_callback(lst, dbstate, uistate):
return lambda x: report(dbstate.db, dbstate.get_active_person(), return lambda x: report(dbstate, uistate, dbstate.get_active_person(),
lst[0], lst[1], lst[2], lst[3], lst[4]) lst[0], lst[1], lst[2], lst[3], lst[4])
def make_tool_callback(lst, dbstate, uistate): def make_tool_callback(lst, dbstate, uistate):