Converted ChooseParents to use ListModel

svn: r1261
This commit is contained in:
Don Allingham 2003-01-19 22:59:38 +00:00
parent abdc761de7
commit 6dd895915f
2 changed files with 54 additions and 103 deletions

View File

@ -50,6 +50,11 @@ import RelLib
import const import const
import Utils import Utils
import GrampsCfg import GrampsCfg
import ListModel
_titles = [(_('Name'),3,200),(_('ID'),1,50),(_('Birth Date'),4,50),('',0,50),('',0,0)]
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -100,22 +105,11 @@ class ChooseParents:
self.fcombo.set_popdown_strings(const.familyRelations) self.fcombo.set_popdown_strings(const.familyRelations)
self.fmodel = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, self.fmodel = ListModel.ListModel(self.father_list, _titles,
gobject.TYPE_STRING, gobject.TYPE_STRING, self.father_list_select_row)
gobject.TYPE_STRING) self.mmodel = ListModel.ListModel(self.mother_list, _titles,
self.father_list.set_model(self.fmodel) self.mother_list_select_row)
self.fselection = self.father_list.get_selection()
self.fselection.connect('changed',self.father_list_select_row)
self.mmodel = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING,
gobject.TYPE_STRING, gobject.TYPE_STRING,
gobject.TYPE_STRING)
self.mother_list.set_model(self.mmodel)
self.mselection = self.mother_list.get_selection()
self.mselection.connect('changed',self.mother_list_select_row)
self.build_list(self.father_list)
self.build_list(self.mother_list)
for (f,mr,fr) in self.person.getParentList(): for (f,mr,fr) in self.person.getParentList():
if f == self.family: if f == self.family:
@ -144,28 +138,6 @@ class ChooseParents:
text = _("Choose the Parents of %s") % GrampsCfg.nameof(self.person) text = _("Choose the Parents of %s") % GrampsCfg.nameof(self.person)
self.title.set_text(text) self.title.set_text(text)
def build_list(self,clist):
colno = 0
for title in [ (_('Name'),3,200),
(_('ID'),1,50),
(_('Birth Date'),4,50),
('',0,50),
('',0,0)]:
renderer = gtk.CellRendererText ()
column = gtk.TreeViewColumn (title[0], renderer, text=colno)
colno = colno + 1
column.set_clickable (gtk.TRUE)
if title[0] == '':
column.set_clickable(gtk.TRUE)
column.set_visible(gtk.FALSE)
else:
column.set_resizable(gtk.TRUE)
column.set_sort_column_id(title[1])
column.set_min_width(title[2])
clist.append_column(column)
if colno == 1:
column.clicked()
def redraw(self): def redraw(self):
"""Redraws the potential father and mother lists""" """Redraws the potential father and mother lists"""
@ -189,14 +161,15 @@ class ChooseParents:
if gender == const.unknown: if gender == const.unknown:
continue continue
dinfo = self.db.getPersonDisplay(key) d = self.db.getPersonDisplay(key)
info = [d[0],d[1],d[3],d[5],d[6]]
if self.type == "Partners": if self.type == "Partners":
self.set_data(self.fmodel,self.fselection,dinfo,fid) self.fmodel.add(info,None,fid==d[1])
self.set_data(self.mmodel,self.mselection,dinfo,mid) self.mmodel.add(info,None,mid==d[1])
elif dinfo[2] == const.male: elif d[2] == const.male:
self.set_data(self.fmodel,self.fselection,dinfo,fid) self.fmodel.add(info,None,fid==d[1])
else: else:
self.set_data(self.mmodel,self.mselection,dinfo,mid) self.mmodel.add(info,None,mid==d[1])
if self.type == "Partners": if self.type == "Partners":
self.mlabel.set_label(_("Parent")) self.mlabel.set_label(_("Parent"))
@ -205,12 +178,6 @@ class ChooseParents:
self.mlabel.set_label(_("Mother")) self.mlabel.set_label(_("Mother"))
self.flabel.set_label(_("Father")) self.flabel.set_label(_("Father"))
def set_data(self,model,selection,dinfo,key):
iter = model.append()
model.set(iter,0,dinfo[0],1,dinfo[1],2,dinfo[3],3,dinfo[5],4,dinfo[6])
if key == dinfo[1]:
selection.select_iter(iter)
def parent_relation_changed(self,obj): def parent_relation_changed(self,obj):
"""Called everytime the parent relationship information is changegd""" """Called everytime the parent relationship information is changegd"""
self.old_type = self.type self.old_type = self.type
@ -248,7 +215,7 @@ class ChooseParents:
"""Called when a row is selected in the mother list. Sets the """Called when a row is selected in the mother list. Sets the
active mother based off the id associated with the row.""" active mother based off the id associated with the row."""
model, iter = self.mselection.get_selected() model, iter = self.mmodel.get_selected()
if iter: if iter:
id = model.get_value(iter,1) id = model.get_value(iter,1)
self.mother = self.db.getPerson(id) self.mother = self.db.getPerson(id)
@ -258,7 +225,7 @@ class ChooseParents:
def father_list_select_row(self,obj): def father_list_select_row(self,obj):
"""Called when a row is selected in the father list. Sets the """Called when a row is selected in the father list. Sets the
active father based off the id associated with the row.""" active father based off the id associated with the row."""
model, iter = self.fselection.get_selected() model, iter = self.fmodel.get_selected()
if iter: if iter:
id = model.get_value(iter,1) id = model.get_value(iter,1)
self.father = self.db.getPerson(id) self.father = self.db.getPerson(id)
@ -310,23 +277,14 @@ class ChooseParents:
id = person.getId() id = person.getId()
self.type = const.save_frel(self.prel.get_text()) self.type = const.save_frel(self.prel.get_text())
dinfo = self.db.getPersonDisplay(id) dinfo = self.db.getPersonDisplay(id)
rdata = [dinfo[0],dinfo[3],dinfo[5],dinfo[6]] rdata = [dinfo[0],dinfo[1],dinfo[3],dinfo[5],dinfo[6]]
if self.type == "Partners": if self.type == "Partners":
self.parent_relation_changed(self.prel) self.parent_relation_changed(self.prel)
elif person.getGender() == RelLib.Person.male: elif person.getGender() == RelLib.Person.male:
self.father_list.insert(0,rdata) self.fmodel.add(rdata,None,1)
self.father_list.set_row_data(0,id)
self.father_list.select_row(0,0)
self.father_list.sort()
self.father_list.moveto(self.father_list.selection[0],0)
else: else:
self.mother_list.insert(0,rdata) self.mmodel.add(rdata,None,1)
self.mother_list.set_row_data(0,id)
self.mother_list.select_row(0,0)
self.mother_list.moveto(0,0)
self.mother_list.sort()
self.mother_list.moveto(self.mother_list.selection[0],0)
self.full_update() self.full_update()
def add_parent_clicked(self,obj): def add_parent_clicked(self,obj):

View File

@ -158,13 +158,10 @@ class Report:
self.ptop.vbox.add(gtk.HSeparator()) self.ptop.vbox.add(gtk.HSeparator())
self.ptop.vbox.set_spacing(10) self.ptop.vbox.set_spacing(10)
self.pbar = gtk.ProgressBar() self.pbar = gtk.ProgressBar()
# self.pbar.set_format_string(_("%v of %u (%P%%)"))
# self.pbar.configure(0.0,0.0,total)
# self.pbar.set_show_text(1)
self.pbar_max = total self.pbar_max = total
self.pbar_index = 0.0 self.pbar_index = 0.0
self.ptop.set_size_request(350,20) self.ptop.set_size_request(350,100)
self.ptop.vbox.add(self.pbar) self.ptop.vbox.add(self.pbar)
self.ptop.show_all() self.ptop.show_all()
@ -212,12 +209,12 @@ class ReportDialog:
self.frames = {} self.frames = {}
self.window = gtk.Dialog('GRAMPS') self.window = gtk.Dialog('GRAMPS')
# self.window.set_default(0) self.ok = self.window.add_button(gtk.STOCK_OK,0)
self.window.add_button(gtk.STOCK_OK,0) self.ok.connect('clicked',self.on_ok_clicked)
self.cancel = self.window.add_button(gtk.STOCK_CANCEL,1)
self.cancel.connect('clicked',self.on_cancel)
self.window.set_response_sensitive(0,gtk.TRUE) self.window.set_response_sensitive(0,gtk.TRUE)
self.window.add_button(gtk.STOCK_CANCEL,1)
self.window.set_response_sensitive(1,gtk.TRUE) self.window.set_response_sensitive(1,gtk.TRUE)
# self.window.button_connect(1,self.on_cancel)
self.window.set_resize_mode(0) self.window.set_resize_mode(0)
# Build the list of widgets that are used to extend the Options # Build the list of widgets that are used to extend the Options
@ -239,13 +236,11 @@ class ReportDialog:
self.setup_report_options_frame() self.setup_report_options_frame()
self.setup_other_frames() self.setup_other_frames()
self.window.show_all() self.window.show_all()
self.setup_post_process()
result = self.window.run()
self.on_ok_clicked(result)
# 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
self.setup_post_process()
def setup_post_process(self): def setup_post_process(self):
pass pass
@ -932,39 +927,37 @@ class ReportDialog:
menu for selecting a style.""" menu for selecting a style."""
StyleEditor.StyleListDisplay(self.style_sheet_list,self.build_style_menu) StyleEditor.StyleListDisplay(self.style_sheet_list,self.build_style_menu)
def on_cancel(self,obj):
self.window.destroy()
def on_ok_clicked(self, val): def on_ok_clicked(self, obj):
"""The user is satisfied with the dialog choices. Validate """The user is satisfied with the dialog choices. Validate
the output file name before doing anything else. If there is the output file name before doing anything else. If there is
a file name, gather the options and create the report.""" a file name, gather the options and create the report."""
if val == 1: # Is there a filename? This should also test file permissions, etc.
self.window.destroy() if not self.parse_target_frame():
else: return
# Is there a filename? This should also test file permissions, etc. # Preparation
if not self.parse_target_frame(): self.parse_format_frame()
return self.parse_style_frame()
self.parse_paper_frame()
self.parse_html_frame()
self.parse_report_options_frame()
self.parse_other_frames()
# Preparation # Create the output document.
self.parse_format_frame() self.make_document()
self.parse_style_frame()
self.parse_paper_frame()
self.parse_html_frame()
self.parse_report_options_frame()
self.parse_other_frames()
# Create the output document. # Create the report object and product the report.
self.make_document() try:
self.make_report()
except (IOError,OSError),msg:
ErrorDialog(str(msg))
# Create the report object and product the report. # Clean up the dialog object
try: self.window.destroy()
self.make_report()
except (IOError,OSError),msg:
ErrorDialog(str(msg))
# Clean up the dialog object
self.window.destroy()
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #