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 5310057173
commit cb63f90caa
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>
* src/plugins/FilterEditor.py: start to bring into sync with
code changes

View File

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

View File

@ -20,14 +20,36 @@
# $Id$
#-------------------------------------------------------------------------
#
# Python modules
#
#-------------------------------------------------------------------------
from types import ClassType, InstanceType
#-------------------------------------------------------------------------
#
# GTK/Gnome modules
#
#-------------------------------------------------------------------------
import gtk
#-------------------------------------------------------------------------
#
# gramps modules
#
#-------------------------------------------------------------------------
import NameDisplay
import BaseDoc
import ManagedWindow
from _StyleComboBox import StyleComboBox
class BareReportDialog:
#-------------------------------------------------------------------------
#
# BareReportDialog class
#
#-------------------------------------------------------------------------
class BareReportDialog(ManagedWindow.ManagedWindow):
"""
The BareReportDialog base class. This is a base class for generating
customized dialogs to solicit some options for a report. This class
@ -40,19 +62,36 @@ class BareReportDialog:
frame_pad = 5
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
for a basic *bare* report."""
self.db = database
self.dbstate = dbstate
self.uistate = uistate
self.db = dbstate.db
self.person = person
self.report_name = translated_name
self.raw_name = name
ManagedWindow.ManagedWindow.__init__(self, uistate, track, self)
if type(option_class) == ClassType:
self.options = option_class(name)
elif type(option_class) == InstanceType:
self.options = option_class
self.report_name = translated_name
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):
#self.output_notebook = None
#self.notebook_page = 1
@ -69,13 +108,15 @@ class BareReportDialog:
self.style_button = None
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:
self.local_filters = self.options.get_report_filters(self.person)
except AttributeError:
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.cancel = self.window.add_button(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL)
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):
from Selectors import selector_factory
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()
if new_person:
self.new_person = new_person

View File

@ -31,12 +31,13 @@ from _DrawFormatComboBox import DrawFormatComboBox
#-----------------------------------------------------------------------
class DrawReportDialog(ReportDialog):
"""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
for a basic drawing report. See the ReportDialog class for
more information."""
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$
#-------------------------------------------------------------------------
#
# Python modules
#
#-------------------------------------------------------------------------
import os
#-------------------------------------------------------------------------
#
# GTK+ modules
#
#-------------------------------------------------------------------------
import gtk
#-------------------------------------------------------------------------
#
# GRAMPS modules
#
#-------------------------------------------------------------------------
import Config
import Errors
from QuestionDialog import ErrorDialog, OptionDialog
@ -34,6 +50,11 @@ from _FileEntry import FileEntry
from _PaperMenu import PaperComboBox, OrientationComboBox, paper_sizes
from _TemplateParser import _template_map, _default_template, _user_template
#-------------------------------------------------------------------------
#
# ReportDialog class
#
#-------------------------------------------------------------------------
class ReportDialog(BareReportDialog):
"""
The ReportDialog base class. This is a base class for generating
@ -42,14 +63,14 @@ class ReportDialog(BareReportDialog):
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
for a basic *stand-alone* report."""
self.style_name = "default"
self.page_html_added = False
BareReportDialog.__init__(self,database,person,option_class,
name,translated_name)
BareReportDialog.__init__(self,dbstate,uistate,person,option_class,
name,trans_name)
# Allow for post processing of the format frame, since the
# show_all task calls events that may reset values
@ -530,7 +551,8 @@ class ReportDialog(BareReportDialog):
if self.pagecount_menu == None:
self.pagecount = 0
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):
"""Parse the html frame of the dialog. Save the user selected
@ -546,7 +568,8 @@ class ReportDialog(BareReportDialog):
if text == _user_template:
self.template_name = self.html_fileentry.get_full_path(0)
else:
self.template_name = "%s/%s" % (const.template_dir,_template_map[text])
self.template_name = "%s/%s" % (const.template_dir,
_template_map[text])
else:
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
#
#------------------------------------------------------------------------
def report(database,person,report_class,options_class,
translated_name,name,category):
def report(dbstate,uistate,person,report_class,options_class,
trans_name,name,category):
"""
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
@ -594,14 +617,13 @@ def report(database,person,report_class,options_class,
elif category == CATEGORY_DRAW:
from _DrawReportDialog import DrawReportDialog
dialog_class = DrawReportDialog
elif category in (CATEGORY_BOOK,CATEGORY_VIEW,
CATEGORY_CODE,CATEGORY_WEB):
report_class(database,person)
elif category in (CATEGORY_BOOK,CATEGORY_VIEW,CATEGORY_CODE,CATEGORY_WEB):
report_class(dbstate,uistate,person)
return
else:
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()
if response == gtk.RESPONSE_OK:
try:
@ -620,4 +642,4 @@ def report(database,person,report_class,options_class,
ErrorDialog(_("Report could not be created"),str(msg))
except:
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):
"""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
for a basic text report. See the ReportDialog class for more
information."""
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):
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.set_property('ellipsize',pango.ELLIPSIZE_END)
@ -63,11 +68,9 @@ class SelectPerson(ManagedWindow.ManagedWindow):
self.plist = self.glade.get_widget('plist')
self.notebook = self.glade.get_widget('notebook')
self.set_window(
self.glade.get_widget('select_person'),
self.glade.get_widget('title'),
title)
window = self.glade.get_widget('select_person')
title_label = self.glade.get_widget('title')
self.set_window(window,title_label,self.title)
self.model = PeopleModel(self.db,
(PeopleModel.FAST, filter),
skip=skip)
@ -77,7 +80,7 @@ class SelectPerson(ManagedWindow.ManagedWindow):
self.show()
def build_menu_names(self,obj):
return (_('Select Person'), None)
return (self.title, None)
def add_columns(self,tree):
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):
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])
def make_tool_callback(lst, dbstate, uistate):