2007-11-28 Douglas S. Blank <dblank@cs.brynmawr.edu>
* src/PluginUtils/_MenuOptions.py: added comments * src/PluginUtils/_PluginStatus.py: added ToolManagedWindowBatch svn: r9428
This commit is contained in:
parent
aa1c1a6286
commit
a6247edf67
@ -1,3 +1,7 @@
|
||||
2007-11-28 Douglas S. Blank <dblank@cs.brynmawr.edu>
|
||||
* src/PluginUtils/_MenuOptions.py: added comments
|
||||
* src/PluginUtils/_PluginStatus.py: added ToolManagedWindowBatch
|
||||
|
||||
2007-11-28 Jim Sack <jgsack@san.rr.com>
|
||||
* src/GrampsDb/_ReadGedcom.py : remove trail whitespace (readahead)
|
||||
fixes (possible) discarded reference due to bogus handles that get created
|
||||
|
@ -621,7 +621,11 @@ class MenuOptions:
|
||||
"""
|
||||
return self.menu.get_option_by_name(name).parse()
|
||||
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Option handlers for tools and reports
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
class MenuReportOptions(MenuOptions,ReportOptions):
|
||||
"""
|
||||
The MenuOptions class implementes the ReportOptions functionality in a
|
||||
@ -649,3 +653,4 @@ class MenuToolOptions(MenuOptions,Tool.ToolOptions):
|
||||
def __init__(self,name,person_id=None):
|
||||
self.menu = Menu()
|
||||
Tool.ToolOptions.__init__(self,name, person_id)
|
||||
|
||||
|
@ -43,6 +43,7 @@ import gtk
|
||||
import ManagedWindow
|
||||
import Errors
|
||||
import _PluginMgr as PluginMgr
|
||||
import _Tool as Tool
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -148,3 +149,199 @@ class PluginTrace(ManagedWindow.ManagedWindow):
|
||||
|
||||
def build_menu_names(self,obj):
|
||||
return (self.name, None)
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Main window for a batch tool
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class ToolManagedWindowBatch(Tool.BatchTool, ManagedWindow.ManagedWindow):
|
||||
"""
|
||||
Copied from src/ReportBase/_BareReportDialog.py BareReportDialog
|
||||
"""
|
||||
frame_pad = 5
|
||||
border_pad = 6
|
||||
HELP_TOPIC = None
|
||||
def __init__(self, dbstate, uistate, options_class, name, callback=None):
|
||||
self.dbstate = dbstate
|
||||
self.uistate = uistate
|
||||
|
||||
Tool.BatchTool.__init__(self,dbstate,options_class,name)
|
||||
ManagedWindow.ManagedWindow.__init__(self, uistate, [], self)
|
||||
|
||||
self.extra_menu = None
|
||||
self.widgets = []
|
||||
self.frame_names = []
|
||||
self.frames = {}
|
||||
self.format_menu = None
|
||||
self.style_button = None
|
||||
|
||||
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.cancel.connect('clicked',self.on_cancel)
|
||||
|
||||
self.ok = self.window.add_button(gtk.STOCK_OK,gtk.RESPONSE_OK)
|
||||
self.ok.connect('clicked',self.on_ok_clicked)
|
||||
|
||||
self.window.set_default_size(600,-1)
|
||||
|
||||
# Set up and run the dialog. These calls are not in top down
|
||||
# order when looking at the dialog box as there is some
|
||||
# interaction between the various frames.
|
||||
|
||||
self.setup_title()
|
||||
self.setup_header()
|
||||
self.tbl = gtk.Table(4,4,False)
|
||||
self.tbl.set_col_spacings(12)
|
||||
self.tbl.set_row_spacings(6)
|
||||
self.tbl.set_border_width(6)
|
||||
self.col = 0
|
||||
self.window.vbox.add(self.tbl)
|
||||
|
||||
# Build the list of widgets that are used to extend the Options
|
||||
# frame and to create other frames
|
||||
self.add_user_options()
|
||||
self.setup_center_person()
|
||||
|
||||
self.notebook = gtk.Notebook()
|
||||
self.notebook.set_border_width(6)
|
||||
self.window.vbox.add(self.notebook)
|
||||
|
||||
self.setup_other_frames()
|
||||
self.notebook.set_current_page(0)
|
||||
self.window.show_all()
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Callback functions from the dialog
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def on_cancel(self,*obj):
|
||||
pass
|
||||
|
||||
def on_ok_clicked(self, obj):
|
||||
"""The user is satisfied with the dialog choices. Parse all options
|
||||
and close the window."""
|
||||
|
||||
# Save options
|
||||
self.options.handler.save_options()
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Functions related to setting up the dialog window.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def get_title(self):
|
||||
"""The window title for this dialog"""
|
||||
return "%s - GRAMPS Book" % "FIXME"
|
||||
|
||||
def get_header(self, name):
|
||||
"""The header line to put at the top of the contents of the
|
||||
dialog box. By default this will just be the name of the
|
||||
selected person. Most subclasses will customize this to give
|
||||
some indication of what the report will be, i.e. 'Descendant
|
||||
Report for %s'."""
|
||||
return _("%(report_name)s for GRAMPS Book") % {
|
||||
'report_name' : "FIXME"}
|
||||
|
||||
def setup_title(self):
|
||||
"""Set up the title bar of the dialog. This function relies
|
||||
on the get_title() customization function for what the title
|
||||
should be."""
|
||||
self.name = ''
|
||||
self.window.set_title(self.get_title())
|
||||
|
||||
def setup_header(self):
|
||||
"""Set up the header line bar of the dialog. This function
|
||||
relies on the get_header() customization function for what the
|
||||
header line should read. If no customization function is
|
||||
supplied by the subclass, the default is to use the full name
|
||||
of the currently selected person."""
|
||||
|
||||
title = self.get_header(self.name)
|
||||
label = gtk.Label('<span size="larger" weight="bold">%s</span>' % title)
|
||||
label.set_use_markup(True)
|
||||
self.window.vbox.pack_start(label, True, True,
|
||||
ToolManagedWindowBatch.border_pad)
|
||||
|
||||
def setup_center_person(self):
|
||||
"""Set up center person labels and change button.
|
||||
Should be overwritten by standalone report dialogs. """
|
||||
|
||||
center_label = gtk.Label("<b>%s</b>" % _("Center Person"))
|
||||
center_label.set_use_markup(True)
|
||||
center_label.set_alignment(0.0,0.5)
|
||||
self.tbl.set_border_width(12)
|
||||
self.tbl.attach(center_label,0,4,self.col,self.col+1)
|
||||
self.col += 1
|
||||
|
||||
#name = name_displayer.display(self.person)
|
||||
#self.person_label = gtk.Label( "%s" % name )
|
||||
#self.person_label.set_alignment(0.0,0.5)
|
||||
#self.tbl.attach(self.person_label,2,3,self.col,self.col+1)
|
||||
|
||||
#change_button = gtk.Button("%s..." % _('C_hange') )
|
||||
#change_button.connect('clicked',self.on_center_person_change_clicked)
|
||||
#self.tbl.attach(change_button,3,4,self.col,self.col+1,gtk.SHRINK)
|
||||
#self.col += 1
|
||||
|
||||
def add_frame_option(self,frame_name,label_text,widget,tooltip=None):
|
||||
"""Similar to add_option this method takes a frame_name, a
|
||||
text string and a Gtk Widget. When the interface is built,
|
||||
all widgets with the same frame_name are grouped into a
|
||||
GtkFrame. This allows the subclass to create its own sections,
|
||||
filling them with its own widgets. The subclass is reponsible for
|
||||
all managing of the widgets, including extracting the final value
|
||||
before the report executes. This task should only be called in
|
||||
the add_user_options task."""
|
||||
|
||||
if self.frames.has_key(frame_name):
|
||||
self.frames[frame_name].append((label_text,widget))
|
||||
else:
|
||||
self.frames[frame_name] = [(label_text,widget)]
|
||||
self.frame_names.append(frame_name)
|
||||
if tooltip:
|
||||
self.add_tooltip(widget,tooltip)
|
||||
|
||||
def setup_other_frames(self):
|
||||
for key in self.frame_names:
|
||||
flist = self.frames[key]
|
||||
table = gtk.Table(3,len(flist))
|
||||
table.set_col_spacings(12)
|
||||
table.set_row_spacings(6)
|
||||
table.set_border_width(6)
|
||||
l = gtk.Label("<b>%s</b>" % _(key))
|
||||
l.set_use_markup(True)
|
||||
self.notebook.append_page(table,l)
|
||||
|
||||
row = 0
|
||||
for (text,widget) in flist:
|
||||
if text:
|
||||
text_widget = gtk.Label('%s:' % text)
|
||||
text_widget.set_alignment(0.0,0.5)
|
||||
table.attach(text_widget, 1, 2, row, row+1,
|
||||
gtk.SHRINK|gtk.FILL, gtk.SHRINK)
|
||||
table.attach(widget, 2, 3, row, row+1,
|
||||
yoptions=gtk.SHRINK)
|
||||
else:
|
||||
table.attach(widget, 2, 3, row, row+1,
|
||||
yoptions=gtk.SHRINK)
|
||||
row = row + 1
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Functions related to extending the options
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def add_user_options(self):
|
||||
"""Called to allow subclasses add widgets to the dialog form.
|
||||
It is called immediately before the window is displayed. All
|
||||
calls to add_option or add_frame_option should be called in
|
||||
this task."""
|
||||
self.options.add_user_options(self)
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user