* src/AddrEdit.py: More window management
* src/AttrEdit.py: More window management * src/DisplayState.py: added push_message * src/EditPerson.py: More window management * src/ListBox.py: More window management * src/NameEdit.py: More window management * src/Navigation.py: More window management * src/PeopleModel.py: More window management * src/PersonView.py: More window management * src/ViewManager.py: better handling of ui and action groups svn: r5623
This commit is contained in:
parent
8b903b7073
commit
5f29bf2381
@ -1,3 +1,15 @@
|
|||||||
|
2005-12-22 Don Allingham <don@gramps-project.org>
|
||||||
|
* src/AddrEdit.py: More window management
|
||||||
|
* src/AttrEdit.py: More window management
|
||||||
|
* src/DisplayState.py: added push_message
|
||||||
|
* src/EditPerson.py: More window management
|
||||||
|
* src/ListBox.py: More window management
|
||||||
|
* src/NameEdit.py: More window management
|
||||||
|
* src/Navigation.py: More window management
|
||||||
|
* src/PeopleModel.py: More window management
|
||||||
|
* src/PersonView.py: More window management
|
||||||
|
* src/ViewManager.py: better handling of ui and action groups
|
||||||
|
|
||||||
2005-12-22 Alex Roitman <shura@gramps-project.org>
|
2005-12-22 Alex Roitman <shura@gramps-project.org>
|
||||||
* test/RunAllTests.py: Change header.
|
* test/RunAllTests.py: Change header.
|
||||||
* src/EventEdit.py: Fix build_ methods.
|
* src/EventEdit.py: Fix build_ methods.
|
||||||
|
@ -53,6 +53,7 @@ import RelLib
|
|||||||
import Sources
|
import Sources
|
||||||
import DateEdit
|
import DateEdit
|
||||||
import DateHandler
|
import DateHandler
|
||||||
|
import DisplayState
|
||||||
import Spell
|
import Spell
|
||||||
|
|
||||||
from WindowUtils import GladeIf
|
from WindowUtils import GladeIf
|
||||||
@ -62,11 +63,11 @@ from WindowUtils import GladeIf
|
|||||||
# AddressEditor class
|
# AddressEditor class
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
class AddressEditor:
|
class AddressEditor(DisplayState.ManagedWindow):
|
||||||
"""
|
"""
|
||||||
Displays a dialog that allows the user to edit an address.
|
Displays a dialog that allows the user to edit an address.
|
||||||
"""
|
"""
|
||||||
def __init__(self,parent,addr,callback,parent_window=None):
|
def __init__(self, dbstate, uistate, track, addr, callback):
|
||||||
"""
|
"""
|
||||||
Displays the dialog box.
|
Displays the dialog box.
|
||||||
|
|
||||||
@ -74,19 +75,15 @@ class AddressEditor:
|
|||||||
addr - The address that is to be edited
|
addr - The address that is to be edited
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.parent = parent
|
self.db = dbstate.db
|
||||||
if addr:
|
self.uistate = uistate
|
||||||
if self.parent.child_windows.has_key(addr):
|
self.dbstate = dbstate
|
||||||
self.parent.child_windows[addr].present(None)
|
|
||||||
return
|
|
||||||
else:
|
|
||||||
self.win_key = addr
|
|
||||||
else:
|
|
||||||
self.win_key = self
|
|
||||||
self.db = self.parent.db
|
|
||||||
self.addr = addr
|
|
||||||
self.callback = callback
|
self.callback = callback
|
||||||
self.child_windows = {}
|
self.addr = addr
|
||||||
|
|
||||||
|
DisplayState.ManagedWindow.__init__(self, uistate, track, addr)
|
||||||
|
if self.already_exist:
|
||||||
|
return
|
||||||
|
|
||||||
# Get the important widgets from the glade description
|
# Get the important widgets from the glade description
|
||||||
self.top = gtk.glade.XML(const.dialogFile, "addr_edit","gramps")
|
self.top = gtk.glade.XML(const.dialogFile, "addr_edit","gramps")
|
||||||
@ -151,9 +148,11 @@ class AddressEditor:
|
|||||||
Utils.unbold_label(self.general_label)
|
Utils.unbold_label(self.general_label)
|
||||||
self.addr_date_obj = Date.Date()
|
self.addr_date_obj = Date.Date()
|
||||||
self.srcreflist = []
|
self.srcreflist = []
|
||||||
|
self.addr = RelLib.Address()
|
||||||
self.switch_page()
|
self.switch_page()
|
||||||
|
|
||||||
self.sourcetab = Sources.SourceTab(
|
self.sourcetab = Sources.SourceTab(
|
||||||
|
self.dbstate, self.uistate, self.track,
|
||||||
self.srcreflist, self, self.top, self.window, self.slist,
|
self.srcreflist, self, self.top, self.window, self.slist,
|
||||||
self.top.get_widget('add_src'), self.top.get_widget('edit_src'),
|
self.top.get_widget('add_src'), self.top.get_widget('edit_src'),
|
||||||
self.top.get_widget('del_src'), self.db.readonly)
|
self.top.get_widget('del_src'), self.db.readonly)
|
||||||
@ -164,57 +163,29 @@ class AddressEditor:
|
|||||||
self.addr_date_obj, self.addr_start, date_stat, self.window)
|
self.addr_date_obj, self.addr_start, date_stat, self.window)
|
||||||
|
|
||||||
self.gladeif.connect('addr_edit','delete_event',self.on_delete_event)
|
self.gladeif.connect('addr_edit','delete_event',self.on_delete_event)
|
||||||
self.gladeif.connect('button122','clicked',self.close)
|
self.gladeif.connect('button122','clicked',self.close_window)
|
||||||
self.gladeif.connect('button121','clicked',self.ok_clicked)
|
self.gladeif.connect('button121','clicked',self.ok_clicked)
|
||||||
okbtn = self.top.get_widget('button121')
|
okbtn = self.top.get_widget('button121')
|
||||||
okbtn.set_sensitive(not self.db.readonly)
|
okbtn.set_sensitive(not self.db.readonly)
|
||||||
self.gladeif.connect('button129','clicked',self.on_help_clicked)
|
self.gladeif.connect('button129','clicked',self.on_help_clicked)
|
||||||
self.gladeif.connect('notebook2','switch_page',self.on_switch_page)
|
self.gladeif.connect('notebook2','switch_page',self.on_switch_page)
|
||||||
|
|
||||||
if parent_window:
|
self.window.set_transient_for(self.parent_window)
|
||||||
self.window.set_transient_for(parent_window)
|
|
||||||
self.add_itself_to_menu()
|
|
||||||
self.window.show()
|
self.window.show()
|
||||||
|
|
||||||
def on_delete_event(self,obj,b):
|
def on_delete_event(self,obj,b):
|
||||||
self.close_child_windows()
|
|
||||||
self.remove_itself_from_menu()
|
|
||||||
self.gladeif.close()
|
self.gladeif.close()
|
||||||
|
self.close()
|
||||||
gc.collect()
|
gc.collect()
|
||||||
|
|
||||||
def close(self,obj):
|
def close_window(self,obj):
|
||||||
self.close_child_windows()
|
|
||||||
self.remove_itself_from_menu()
|
|
||||||
self.gladeif.close()
|
self.gladeif.close()
|
||||||
|
self.close()
|
||||||
self.window.destroy()
|
self.window.destroy()
|
||||||
gc.collect()
|
gc.collect()
|
||||||
|
|
||||||
def close_child_windows(self):
|
def build_menu_names(self,obj):
|
||||||
for child_window in self.child_windows.values():
|
return (_('Address'),_('Address Editor'))
|
||||||
child_window.close(None)
|
|
||||||
self.child_windows = {}
|
|
||||||
|
|
||||||
def add_itself_to_menu(self):
|
|
||||||
self.parent.child_windows[self.win_key] = self
|
|
||||||
label = _('Address')
|
|
||||||
self.parent_menu_item = gtk.MenuItem(label)
|
|
||||||
self.parent_menu_item.set_submenu(gtk.Menu())
|
|
||||||
self.parent_menu_item.show()
|
|
||||||
self.parent.winsmenu.append(self.parent_menu_item)
|
|
||||||
self.winsmenu = self.parent_menu_item.get_submenu()
|
|
||||||
self.menu_item = gtk.MenuItem(_('Address Editor'))
|
|
||||||
self.menu_item.connect("activate",self.present)
|
|
||||||
self.menu_item.show()
|
|
||||||
self.winsmenu.append(self.menu_item)
|
|
||||||
|
|
||||||
def remove_itself_from_menu(self):
|
|
||||||
del self.parent.child_windows[self.win_key]
|
|
||||||
self.menu_item.destroy()
|
|
||||||
self.winsmenu.destroy()
|
|
||||||
self.parent_menu_item.destroy()
|
|
||||||
|
|
||||||
def present(self,obj):
|
|
||||||
self.window.present()
|
|
||||||
|
|
||||||
def on_help_clicked(self,obj):
|
def on_help_clicked(self,obj):
|
||||||
"""Display the relevant portion of GRAMPS manual"""
|
"""Display the relevant portion of GRAMPS manual"""
|
||||||
@ -237,28 +208,23 @@ class AddressEditor:
|
|||||||
format = self.preform.get_active()
|
format = self.preform.get_active()
|
||||||
priv = self.priv.get_active()
|
priv = self.priv.get_active()
|
||||||
|
|
||||||
if self.addr == None:
|
|
||||||
self.addr = RelLib.Address()
|
|
||||||
self.parent.plist.append(self.addr)
|
|
||||||
self.addr.set_source_reference_list(self.srcreflist)
|
self.addr.set_source_reference_list(self.srcreflist)
|
||||||
|
|
||||||
self.update(date_obj,street,city,state,country,postal,phone,note,format,priv)
|
self.update(date_obj,street,city,state,country,postal,phone,note,format,priv)
|
||||||
self.callback(self.addr)
|
self.callback(self.addr)
|
||||||
self.close(obj)
|
self.close_window(obj)
|
||||||
|
|
||||||
def check(self,get,set,data):
|
def check(self,get,set,data):
|
||||||
"""Compares a data item, updates if necessary, and sets the
|
"""Compares a data item, updates if necessary, and sets the
|
||||||
parents lists_changed flag"""
|
parents lists_changed flag"""
|
||||||
if get() != data:
|
if get() != data:
|
||||||
set(data)
|
set(data)
|
||||||
self.parent.lists_changed = 1
|
|
||||||
|
|
||||||
def update(self,date_obj,street,city,state,country,postal,phone,note,format,priv):
|
def update(self,date_obj,street,city,state,country,postal,phone,note,format,priv):
|
||||||
"""Compares the data items, and updates if necessary"""
|
"""Compares the data items, and updates if necessary"""
|
||||||
|
|
||||||
if not self.addr.get_date_object().is_equal(date_obj):
|
if not self.addr.get_date_object().is_equal(date_obj):
|
||||||
self.addr.set_date_object(date_obj)
|
self.addr.set_date_object(date_obj)
|
||||||
self.parent.lists_changed = 1
|
|
||||||
|
|
||||||
self.check(self.addr.get_street,self.addr.set_street,street)
|
self.check(self.addr.get_street,self.addr.set_street,street)
|
||||||
self.check(self.addr.get_country,self.addr.set_country,country)
|
self.check(self.addr.get_country,self.addr.set_country,country)
|
||||||
|
@ -56,6 +56,7 @@ import AutoComp
|
|||||||
import RelLib
|
import RelLib
|
||||||
import Spell
|
import Spell
|
||||||
import GrampsDisplay
|
import GrampsDisplay
|
||||||
|
import DisplayState
|
||||||
|
|
||||||
from QuestionDialog import WarningDialog
|
from QuestionDialog import WarningDialog
|
||||||
from WindowUtils import GladeIf
|
from WindowUtils import GladeIf
|
||||||
@ -65,12 +66,11 @@ from WindowUtils import GladeIf
|
|||||||
# AttributeEditor class
|
# AttributeEditor class
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
class AttributeEditor:
|
class AttributeEditor(DisplayState.ManagedWindow):
|
||||||
"""
|
"""
|
||||||
Displays a dialog that allows the user to edit an attribute.
|
Displays a dialog that allows the user to edit an attribute.
|
||||||
"""
|
"""
|
||||||
def __init__(self, parent, attrib, title, data_list, callback,
|
def __init__(self, state, uistate, track, attrib, title, data_list, callback):
|
||||||
parent_window=None):
|
|
||||||
"""
|
"""
|
||||||
Displays the dialog box.
|
Displays the dialog box.
|
||||||
|
|
||||||
@ -80,21 +80,18 @@ class AttributeEditor:
|
|||||||
list - list of options for the pop down menu
|
list - list of options for the pop down menu
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.parent = parent
|
self.db = state.db
|
||||||
if attrib:
|
|
||||||
if self.parent.child_windows.has_key(attrib):
|
|
||||||
self.parent.child_windows[attrib].present(None)
|
|
||||||
return
|
|
||||||
else:
|
|
||||||
self.win_key = attrib
|
|
||||||
else:
|
|
||||||
self.win_key = self
|
|
||||||
self.db = self.parent.db
|
|
||||||
self.attrib = attrib
|
self.attrib = attrib
|
||||||
self.callback = callback
|
self.callback = callback
|
||||||
self.child_windows = {}
|
self.track = track
|
||||||
|
self.uistate = uistate
|
||||||
|
self.state = state
|
||||||
self.alist = data_list
|
self.alist = data_list
|
||||||
|
|
||||||
|
DisplayState.ManagedWindow.__init__(self, uistate, track, attrib)
|
||||||
|
if self.already_exist:
|
||||||
|
return
|
||||||
|
|
||||||
self.top = gtk.glade.XML(const.dialogFile, "attr_edit","gramps")
|
self.top = gtk.glade.XML(const.dialogFile, "attr_edit","gramps")
|
||||||
self.slist = self.top.get_widget("slist")
|
self.slist = self.top.get_widget("slist")
|
||||||
self.value_field = self.top.get_widget("attr_value")
|
self.value_field = self.top.get_widget("attr_value")
|
||||||
@ -121,6 +118,7 @@ class AttributeEditor:
|
|||||||
self.srcreflist = []
|
self.srcreflist = []
|
||||||
|
|
||||||
self.sourcetab = Sources.SourceTab(
|
self.sourcetab = Sources.SourceTab(
|
||||||
|
self.state, self.uistate, self.track,
|
||||||
self.srcreflist, self, self.top, self.window, self.slist,
|
self.srcreflist, self, self.top, self.window, self.slist,
|
||||||
self.top.get_widget('add_src'), self.top.get_widget('edit_src'),
|
self.top.get_widget('add_src'), self.top.get_widget('edit_src'),
|
||||||
self.top.get_widget('del_src'), self.db.readonly)
|
self.top.get_widget('del_src'), self.db.readonly)
|
||||||
@ -132,7 +130,7 @@ class AttributeEditor:
|
|||||||
l = self.top.get_widget("title")
|
l = self.top.get_widget("title")
|
||||||
Utils.set_titles(self.window,l,title,_('Attribute Editor'))
|
Utils.set_titles(self.window,l,title,_('Attribute Editor'))
|
||||||
|
|
||||||
if attrib != None:
|
if attrib:
|
||||||
self.type_selector.set_values(attrib.get_type())
|
self.type_selector.set_values(attrib.get_type())
|
||||||
self.value_field.set_text(attrib.get_value())
|
self.value_field.set_text(attrib.get_value())
|
||||||
self.priv.set_active(attrib.get_privacy())
|
self.priv.set_active(attrib.get_privacy())
|
||||||
@ -146,10 +144,12 @@ class AttributeEditor:
|
|||||||
self.flowed.set_active(True)
|
self.flowed.set_active(True)
|
||||||
else:
|
else:
|
||||||
Utils.unbold_label(self.notes_label)
|
Utils.unbold_label(self.notes_label)
|
||||||
|
else:
|
||||||
|
self.attrib = RelLib.Attribute()
|
||||||
|
|
||||||
self.gladeif = GladeIf(self.top)
|
self.gladeif = GladeIf(self.top)
|
||||||
self.gladeif.connect('attr_edit','delete_event', self.on_delete_event)
|
self.gladeif.connect('attr_edit','delete_event', self.on_delete_event)
|
||||||
self.gladeif.connect('button116', 'clicked', self.close)
|
self.gladeif.connect('button116', 'clicked', self.close_window)
|
||||||
self.gladeif.connect('button115', 'clicked', self.on_ok_clicked)
|
self.gladeif.connect('button115', 'clicked', self.on_ok_clicked)
|
||||||
self.gladeif.connect('button127', 'clicked', self.on_help_clicked)
|
self.gladeif.connect('button127', 'clicked', self.on_help_clicked)
|
||||||
self.gladeif.connect('notebook', 'switch_page', self.on_switch_page)
|
self.gladeif.connect('notebook', 'switch_page', self.on_switch_page)
|
||||||
@ -164,57 +164,30 @@ class AttributeEditor:
|
|||||||
self.flowed.set_sensitive(False)
|
self.flowed.set_sensitive(False)
|
||||||
self.preform.set_sensitive(False)
|
self.preform.set_sensitive(False)
|
||||||
|
|
||||||
if parent_window:
|
|
||||||
self.window.set_transient_for(parent_window)
|
|
||||||
self.add_itself_to_menu()
|
|
||||||
self.update_note_page()
|
self.update_note_page()
|
||||||
|
self.window.set_transient_for(self.parent_window)
|
||||||
self.window.show()
|
self.window.show()
|
||||||
|
|
||||||
def on_delete_event(self,obj,b):
|
def on_delete_event(self,obj,b):
|
||||||
self.close_child_windows()
|
|
||||||
self.remove_itself_from_menu()
|
|
||||||
self.gladeif.close()
|
self.gladeif.close()
|
||||||
|
self.close()
|
||||||
gc.collect()
|
gc.collect()
|
||||||
|
|
||||||
def close(self,obj):
|
def close_window(self,obj):
|
||||||
self.close_child_windows()
|
|
||||||
self.remove_itself_from_menu()
|
|
||||||
self.gladeif.close()
|
self.gladeif.close()
|
||||||
|
self.close()
|
||||||
self.window.destroy()
|
self.window.destroy()
|
||||||
gc.collect()
|
gc.collect()
|
||||||
|
|
||||||
def close_child_windows(self):
|
def build_menu_names(self, attrib):
|
||||||
for child_window in self.child_windows.values():
|
if not attrib:
|
||||||
child_window.close(None)
|
|
||||||
self.child_windows = {}
|
|
||||||
|
|
||||||
def add_itself_to_menu(self):
|
|
||||||
self.parent.child_windows[self.win_key] = self
|
|
||||||
if not self.attrib:
|
|
||||||
label = _("New Attribute")
|
label = _("New Attribute")
|
||||||
else:
|
else:
|
||||||
label = self.attrib.get_type()[1]
|
label = attrib.get_type()[1]
|
||||||
if not label.strip():
|
if not label.strip():
|
||||||
label = _("New Attribute")
|
label = _("New Attribute")
|
||||||
label = "%s: %s" % (_('Attribute'),label)
|
label = "%s: %s" % (_('Attribute'),label)
|
||||||
self.parent_menu_item = gtk.MenuItem(label)
|
return (label, _('Attribute Editor'))
|
||||||
self.parent_menu_item.set_submenu(gtk.Menu())
|
|
||||||
self.parent_menu_item.show()
|
|
||||||
self.parent.winsmenu.append(self.parent_menu_item)
|
|
||||||
self.winsmenu = self.parent_menu_item.get_submenu()
|
|
||||||
self.menu_item = gtk.MenuItem(_('Attribute Editor'))
|
|
||||||
self.menu_item.connect("activate",self.present)
|
|
||||||
self.menu_item.show()
|
|
||||||
self.winsmenu.append(self.menu_item)
|
|
||||||
|
|
||||||
def remove_itself_from_menu(self):
|
|
||||||
del self.parent.child_windows[self.win_key]
|
|
||||||
self.menu_item.destroy()
|
|
||||||
self.winsmenu.destroy()
|
|
||||||
self.parent_menu_item.destroy()
|
|
||||||
|
|
||||||
def present(self,obj):
|
|
||||||
self.window.present()
|
|
||||||
|
|
||||||
def on_help_clicked(self,obj):
|
def on_help_clicked(self,obj):
|
||||||
"""Display the relevant portion of GRAMPS manual"""
|
"""Display the relevant portion of GRAMPS manual"""
|
||||||
@ -243,20 +216,16 @@ class AttributeEditor:
|
|||||||
self.alist.append(attr_data[1])
|
self.alist.append(attr_data[1])
|
||||||
self.alist.sort()
|
self.alist.sort()
|
||||||
|
|
||||||
if self.attrib == None:
|
|
||||||
self.attrib = RelLib.Attribute()
|
|
||||||
self.parent.alist.append(self.attrib)
|
|
||||||
self.attrib.set_source_reference_list(self.srcreflist)
|
self.attrib.set_source_reference_list(self.srcreflist)
|
||||||
self.update(attr_data,value,note,format,priv)
|
self.update(attr_data,value,note,format,priv)
|
||||||
self.callback(self.attrib)
|
self.callback(self.attrib)
|
||||||
self.close(obj)
|
self.close_window(obj)
|
||||||
|
|
||||||
def check(self,get,set,data):
|
def check(self,get,set,data):
|
||||||
"""Compares a data item, updates if necessary, and sets the
|
"""Compares a data item, updates if necessary, and sets the
|
||||||
parents lists_changed flag"""
|
parents lists_changed flag"""
|
||||||
if get() != data:
|
if get() != data:
|
||||||
set(data)
|
set(data)
|
||||||
self.parent.lists_changed = 1
|
|
||||||
|
|
||||||
def update(self,attr_data,value,note,format,priv):
|
def update(self,attr_data,value,note,format,priv):
|
||||||
"""Compares the data items, and updates if necessary"""
|
"""Compares the data items, and updates if necessary"""
|
||||||
|
@ -132,7 +132,7 @@ class History(GrampsDb.GrampsDBCallback):
|
|||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
_win_top = '<ui><menubar name="MenuBar"><menu name="WindowsMenu">'
|
_win_top = '<ui><menubar name="MenuBar"><menu action="WindowsMenu">'
|
||||||
_win_btm = '</menu></menubar></ui>'
|
_win_btm = '</menu></menubar></ui>'
|
||||||
DISABLED = -1
|
DISABLED = -1
|
||||||
|
|
||||||
@ -464,6 +464,10 @@ class DisplayState(GrampsDb.GrampsDBCallback):
|
|||||||
self.phistory = History()
|
self.phistory = History()
|
||||||
self.gwm = GrampsWindowManager(uimanager)
|
self.gwm = GrampsWindowManager(uimanager)
|
||||||
|
|
||||||
|
def push_message(self, text):
|
||||||
|
self.status_text(text)
|
||||||
|
gobject.timeout_add(5000,self.modify_statusbar)
|
||||||
|
|
||||||
def modify_statusbar(self,active=None):
|
def modify_statusbar(self,active=None):
|
||||||
self.status.pop(self.status_id)
|
self.status.pop(self.status_id)
|
||||||
if self.dbstate.active == None:
|
if self.dbstate.active == None:
|
||||||
|
@ -313,7 +313,7 @@ class EditPerson(DisplayState.ManagedWindow):
|
|||||||
self.person, self.addr_list, self.addr_label,
|
self.person, self.addr_list, self.addr_label,
|
||||||
[addr_add_btn, addr_edit_btn, addr_delete_btn])
|
[addr_add_btn, addr_edit_btn, addr_delete_btn])
|
||||||
|
|
||||||
self.name_box = ListBox.NameListBox( state, uistate, self.track,
|
self.name_box = ListBox.NameListBox(state, uistate, self.track,
|
||||||
self.person, self.name_list, self.names_label,
|
self.person, self.name_list, self.names_label,
|
||||||
[name_add_btn, name_edit_btn, name_delete_btn])
|
[name_add_btn, name_edit_btn, name_delete_btn])
|
||||||
|
|
||||||
@ -1030,6 +1030,10 @@ class EditPerson(DisplayState.ManagedWindow):
|
|||||||
changed = False
|
changed = False
|
||||||
name = self.person.get_primary_name()
|
name = self.person.get_primary_name()
|
||||||
|
|
||||||
|
for item in [ self.event_box, self.attr_box, self.addr_box,
|
||||||
|
self.name_box, self.url_box] :
|
||||||
|
if len(item.get_changed_objects()) > 0:
|
||||||
|
changed = True
|
||||||
|
|
||||||
#TODO#if self.complete.get_active() != self.person.get_complete_flag():
|
#TODO#if self.complete.get_active() != self.person.get_complete_flag():
|
||||||
# changed = True
|
# changed = True
|
||||||
@ -1366,7 +1370,7 @@ class EditPerson(DisplayState.ManagedWindow):
|
|||||||
self.pname.set_first_name(unicode(self.given.get_text()))
|
self.pname.set_first_name(unicode(self.given.get_text()))
|
||||||
self.pname.set_title(unicode(self.title.get_text()))
|
self.pname.set_title(unicode(self.title.get_text()))
|
||||||
|
|
||||||
NameEdit.NameEditor(self, self.pname, self.update_name, self.window)
|
NameEdit.NameEditor(self.state, self.uistate, self.track, self.pname, self)
|
||||||
|
|
||||||
def update_name(self,name):
|
def update_name(self,name):
|
||||||
self.write_primary_name()
|
self.write_primary_name()
|
||||||
|
@ -265,16 +265,16 @@ class AttrListBox(ReorderListBox):
|
|||||||
|
|
||||||
def add(self,obj):
|
def add(self,obj):
|
||||||
"""Brings up the AttributeEditor for a new attribute"""
|
"""Brings up the AttributeEditor for a new attribute"""
|
||||||
AttrEdit.AttributeEditor(state, uistate, None, self.name,
|
AttrEdit.AttributeEditor(self.state, self.uistate, self.track,
|
||||||
self.attr_dict,
|
None, self.name, self.attr_dict,
|
||||||
self.edit_callback)
|
self.edit_callback)
|
||||||
|
|
||||||
def update(self,obj):
|
def update(self,obj):
|
||||||
store,node = self.list_model.get_selected()
|
store,node = self.list_model.get_selected()
|
||||||
if node:
|
if node:
|
||||||
attr = self.list_model.get_object(node)
|
attr = self.list_model.get_object(node)
|
||||||
AttrEdit.AttributeEditor(state,uistate, attr, self.name,
|
AttrEdit.AttributeEditor(self.state, self.uistate, self.track,
|
||||||
self.attr_dict,
|
attr, self.name, self.attr_dict,
|
||||||
self.edit_callback)
|
self.edit_callback)
|
||||||
|
|
||||||
def display_data(self,attr):
|
def display_data(self,attr):
|
||||||
@ -451,7 +451,7 @@ class EventListBox(ReorderListBox):
|
|||||||
|
|
||||||
class NameListBox(ReorderListBox):
|
class NameListBox(ReorderListBox):
|
||||||
|
|
||||||
def __init__(self,state,uistate,track,person,obj,label,button_list):
|
def __init__(self, state, uistate, track, person, obj, label, button_list):
|
||||||
|
|
||||||
surnames = state.db.get_surname_list()
|
surnames = state.db.get_surname_list()
|
||||||
|
|
||||||
@ -499,14 +499,15 @@ class NameListBox(ReorderListBox):
|
|||||||
self.data[index].set_suffix(value)
|
self.data[index].set_suffix(value)
|
||||||
|
|
||||||
def add(self,obj):
|
def add(self,obj):
|
||||||
NameEdit.NameEditor(self.state, self.uistate, None, self.track)
|
NameEdit.NameEditor(self.state, self.uistate, self.track,
|
||||||
|
None, self.edit_callback)
|
||||||
|
|
||||||
def update(self,obj):
|
def update(self,obj):
|
||||||
store,node = self.list_model.get_selected()
|
store,node = self.list_model.get_selected()
|
||||||
if node:
|
if node:
|
||||||
NameEdit.NameEditor(self.state, self.uistate,
|
NameEdit.NameEditor(self.state, self.uistate, self.track,
|
||||||
self.list_model.get_object(node),
|
self.list_model.get_object(node),
|
||||||
self.track)
|
self.edit_callback)
|
||||||
|
|
||||||
def display_data(self,name):
|
def display_data(self,name):
|
||||||
has_note = name.get_note()
|
has_note = name.get_note()
|
||||||
@ -565,14 +566,14 @@ class AddressListBox(ReorderListBox):
|
|||||||
self.data[index].set_country(value)
|
self.data[index].set_country(value)
|
||||||
|
|
||||||
def add(self,obj):
|
def add(self,obj):
|
||||||
AddrEdit.AddressEditor(self.state,self.uistate, None,
|
AddrEdit.AddressEditor(self.state, self.uistate, self.track, None,
|
||||||
self.edit_callback)
|
self.edit_callback)
|
||||||
|
|
||||||
def update(self,obj):
|
def update(self,obj):
|
||||||
store,node = self.list_model.get_selected()
|
store,node = self.list_model.get_selected()
|
||||||
if node:
|
if node:
|
||||||
item = self.list_model.get_object(node)
|
item = self.list_model.get_object(node)
|
||||||
AddrEdit.AddressEditor(self.state,self.uistate, item,
|
AddrEdit.AddressEditor(self.state, self.uistate, self.track, item,
|
||||||
self.edit_callback)
|
self.edit_callback)
|
||||||
|
|
||||||
def display_data(self,item):
|
def display_data(self,item):
|
||||||
|
@ -63,11 +63,12 @@ from WindowUtils import GladeIf
|
|||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
class NameEditor(DisplayState.ManagedWindow):
|
class NameEditor(DisplayState.ManagedWindow):
|
||||||
|
|
||||||
def __init__(self,dbstate,uistate,name,track):
|
def __init__(self, dbstate, uistate, track, name, callback):
|
||||||
|
|
||||||
self.db = dbstate.db
|
self.db = dbstate.db
|
||||||
self.uistate = uistate
|
self.uistate = uistate
|
||||||
self.state = dbstate
|
self.state = dbstate
|
||||||
|
self.callback = callback
|
||||||
|
|
||||||
DisplayState.ManagedWindow.__init__(self, uistate, track, name)
|
DisplayState.ManagedWindow.__init__(self, uistate, track, name)
|
||||||
if self.already_exist:
|
if self.already_exist:
|
||||||
@ -101,6 +102,7 @@ class NameEditor(DisplayState.ManagedWindow):
|
|||||||
else:
|
else:
|
||||||
self.srcreflist = []
|
self.srcreflist = []
|
||||||
self.date_obj = Date.Date()
|
self.date_obj = Date.Date()
|
||||||
|
self.name = RelLib.Name()
|
||||||
|
|
||||||
self.date.set_text(DateHandler.displayer.display(self.date_obj))
|
self.date.set_text(DateHandler.displayer.display(self.date_obj))
|
||||||
|
|
||||||
@ -158,7 +160,7 @@ class NameEditor(DisplayState.ManagedWindow):
|
|||||||
self.note_buffer = self.note_field.get_buffer()
|
self.note_buffer = self.note_field.get_buffer()
|
||||||
|
|
||||||
self.gladeif.connect('name_edit','delete_event',self.on_delete_event)
|
self.gladeif.connect('name_edit','delete_event',self.on_delete_event)
|
||||||
self.gladeif.connect('button119','clicked',self.close)
|
self.gladeif.connect('button119','clicked',self.close_window)
|
||||||
self.gladeif.connect('button118','clicked',self.on_name_edit_ok_clicked)
|
self.gladeif.connect('button118','clicked',self.on_name_edit_ok_clicked)
|
||||||
okbtn = self.top.get_widget('button118')
|
okbtn = self.top.get_widget('button118')
|
||||||
okbtn.set_sensitive(not self.db.readonly)
|
okbtn.set_sensitive(not self.db.readonly)
|
||||||
@ -206,7 +208,8 @@ class NameEditor(DisplayState.ManagedWindow):
|
|||||||
|
|
||||||
def build_menu_names(self,name):
|
def build_menu_names(self,name):
|
||||||
if name:
|
if name:
|
||||||
submenu_label = _('%s: %s') % (_('Name',NameDisplay.displayer.display(name)))
|
ntext = NameDisplay.displayer.display_name(name)
|
||||||
|
submenu_label = _('%s: %s') % (_('Name'),ntext)
|
||||||
else:
|
else:
|
||||||
submenu_label = _('New Name')
|
submenu_label = _('New Name')
|
||||||
menu_label = _('Name Editor')
|
menu_label = _('Name Editor')
|
||||||
@ -234,10 +237,12 @@ class NameEditor(DisplayState.ManagedWindow):
|
|||||||
|
|
||||||
def on_delete_event(self,*obj):
|
def on_delete_event(self,*obj):
|
||||||
self.gladeif.close()
|
self.gladeif.close()
|
||||||
|
self.close()
|
||||||
gc.collect()
|
gc.collect()
|
||||||
|
|
||||||
def close(self,*obj):
|
def close_window(self,*obj):
|
||||||
self.gladeif.close()
|
self.gladeif.close()
|
||||||
|
self.close()
|
||||||
self.window.destroy()
|
self.window.destroy()
|
||||||
gc.collect()
|
gc.collect()
|
||||||
|
|
||||||
@ -265,10 +270,6 @@ class NameEditor(DisplayState.ManagedWindow):
|
|||||||
# if not mtype:
|
# if not mtype:
|
||||||
# mtype = "Also Known As"
|
# mtype = "Also Known As"
|
||||||
|
|
||||||
if self.name == None:
|
|
||||||
self.name = RelLib.Name()
|
|
||||||
self.parent.nlist.append(self.name)
|
|
||||||
|
|
||||||
self.name.set_date_object(self.date_obj)
|
self.name.set_date_object(self.date_obj)
|
||||||
|
|
||||||
self.name.set_source_reference_list(self.srcreflist)
|
self.name.set_source_reference_list(self.srcreflist)
|
||||||
@ -278,20 +279,16 @@ class NameEditor(DisplayState.ManagedWindow):
|
|||||||
|
|
||||||
if self.name.get_display_as() != self.display_as.get_active():
|
if self.name.get_display_as() != self.display_as.get_active():
|
||||||
self.name.set_display_as(self.display_as.get_active())
|
self.name.set_display_as(self.display_as.get_active())
|
||||||
self.parent.lists_changed = 1
|
|
||||||
|
|
||||||
prefix = unicode(self.prefix_field.get_text())
|
prefix = unicode(self.prefix_field.get_text())
|
||||||
if self.name.get_surname_prefix() != prefix:
|
if self.name.get_surname_prefix() != prefix:
|
||||||
self.name.set_surname_prefix(prefix)
|
self.name.set_surname_prefix(prefix)
|
||||||
self.parent.lists_changed = 1
|
|
||||||
|
|
||||||
if self.name.get_sort_as() != self.sort_as.get_active():
|
if self.name.get_sort_as() != self.sort_as.get_active():
|
||||||
self.name.set_sort_as(self.sort_as.get_active())
|
self.name.set_sort_as(self.sort_as.get_active())
|
||||||
self.parent.lists_changed = 1
|
|
||||||
|
|
||||||
if not self.group_over.get_active():
|
if not self.group_over.get_active():
|
||||||
self.name.set_group_as("")
|
self.name.set_group_as("")
|
||||||
self.parent.lists_changed = 1
|
|
||||||
elif self.name.get_group_as() != grp_as:
|
elif self.name.get_group_as() != grp_as:
|
||||||
if grp_as not in self.db.get_name_group_keys():
|
if grp_as not in self.db.get_name_group_keys():
|
||||||
from QuestionDialog import QuestionDialog2
|
from QuestionDialog import QuestionDialog2
|
||||||
@ -309,50 +306,39 @@ class NameEditor(DisplayState.ManagedWindow):
|
|||||||
self.db.set_name_group_mapping(srn,grp_as)
|
self.db.set_name_group_mapping(srn,grp_as)
|
||||||
else:
|
else:
|
||||||
self.name.set_group_as(grp_as)
|
self.name.set_group_as(grp_as)
|
||||||
self.parent.lists_changed = 1
|
|
||||||
|
|
||||||
self.update_name(first,last,suffix,patronymic,title,the_type,note,format,priv)
|
self.update_name(first,last,suffix,patronymic,title,the_type,note,format,priv)
|
||||||
self.parent.lists_changed = 1
|
self.callback(self.name)
|
||||||
|
self.close_window(obj)
|
||||||
self.close(obj)
|
|
||||||
|
|
||||||
def update_name(self,first,last,suffix,patronymic,title,the_type,note,format,priv):
|
def update_name(self,first,last,suffix,patronymic,title,the_type,note,format,priv):
|
||||||
|
|
||||||
if self.name.get_first_name() != first:
|
if self.name.get_first_name() != first:
|
||||||
self.name.set_first_name(first)
|
self.name.set_first_name(first)
|
||||||
self.parent.lists_changed = 1
|
|
||||||
|
|
||||||
if self.name.get_surname() != last:
|
if self.name.get_surname() != last:
|
||||||
self.name.set_surname(last)
|
self.name.set_surname(last)
|
||||||
self.parent.lists_changed = 1
|
|
||||||
|
|
||||||
if self.name.get_suffix() != suffix:
|
if self.name.get_suffix() != suffix:
|
||||||
self.name.set_suffix(suffix)
|
self.name.set_suffix(suffix)
|
||||||
self.parent.lists_changed = 1
|
|
||||||
|
|
||||||
if self.name.get_patronymic() != patronymic:
|
if self.name.get_patronymic() != patronymic:
|
||||||
self.name.set_patronymic(patronymic)
|
self.name.set_patronymic(patronymic)
|
||||||
self.parent.lists_changed = 1
|
|
||||||
|
|
||||||
if self.name.get_title() != title:
|
if self.name.get_title() != title:
|
||||||
self.name.set_title(title)
|
self.name.set_title(title)
|
||||||
self.parent.lists_changed = 1
|
|
||||||
|
|
||||||
if self.name.get_type() != the_type:
|
if self.name.get_type() != the_type:
|
||||||
self.name.set_type(the_type)
|
self.name.set_type(the_type)
|
||||||
self.parent.lists_changed = 1
|
|
||||||
|
|
||||||
if self.name.get_note() != note:
|
if self.name.get_note() != note:
|
||||||
self.name.set_note(note)
|
self.name.set_note(note)
|
||||||
self.parent.lists_changed = 1
|
|
||||||
|
|
||||||
if self.name.get_note_format() != format:
|
if self.name.get_note_format() != format:
|
||||||
self.name.set_note_format(format)
|
self.name.set_note_format(format)
|
||||||
self.parent.lists_changed = 1
|
|
||||||
|
|
||||||
if self.name.get_privacy() != priv:
|
if self.name.get_privacy() != priv:
|
||||||
self.name.set_privacy(priv)
|
self.name.set_privacy(priv)
|
||||||
self.parent.lists_changed = 1
|
|
||||||
|
|
||||||
def on_switch_page(self,obj,a,page):
|
def on_switch_page(self,obj,a,page):
|
||||||
start = self.note_buffer.get_start_iter()
|
start = self.note_buffer.get_start_iter()
|
||||||
|
@ -65,8 +65,9 @@ class BaseNavigation:
|
|||||||
"""
|
"""
|
||||||
Enables the UI and action groups
|
Enables the UI and action groups
|
||||||
"""
|
"""
|
||||||
self.uistate.uimanager.insert_action_group(self.action_group, 1)
|
if self.active == DISABLED:
|
||||||
self.active = self.uistate.uimanager.add_ui_from_string(self.ui)
|
self.uistate.uimanager.insert_action_group(self.action_group, 1)
|
||||||
|
self.active = self.uistate.uimanager.add_ui_from_string(self.ui)
|
||||||
|
|
||||||
def build_item_name(self,handle):
|
def build_item_name(self,handle):
|
||||||
"""
|
"""
|
||||||
@ -81,9 +82,7 @@ class BaseNavigation:
|
|||||||
"""
|
"""
|
||||||
self.items = items
|
self.items = items
|
||||||
|
|
||||||
if self.active != DISABLED:
|
self.disable()
|
||||||
self.uistate.uimanager.remove_ui(self.active)
|
|
||||||
self.uistate.uimanager.remove_action_group(self.action_group)
|
|
||||||
|
|
||||||
data = map(lambda x: '<menuitem action="%s%02d"/>' % (self.title,x), range(0,len(items)))
|
data = map(lambda x: '<menuitem action="%s%02d"/>' % (self.title,x), range(0,len(items)))
|
||||||
self.ui = _top + "".join(data) + _btm
|
self.ui = _top + "".join(data) + _btm
|
||||||
|
@ -383,9 +383,9 @@ class PeopleModel(gtk.GenericTreeModel):
|
|||||||
return cgi.escape(place_title)
|
return cgi.escape(place_title)
|
||||||
|
|
||||||
for event_ref in data[_EVENT_COL]:
|
for event_ref in data[_EVENT_COL]:
|
||||||
|
event = self.db.get_event_from_handle(event_ref.ref)
|
||||||
etype = event.get_type()[0]
|
etype = event.get_type()[0]
|
||||||
if etype in [Event.BAPTISM, Event.CHRISTEN]:
|
if etype in [Event.BAPTISM, Event.CHRISTEN]:
|
||||||
event = self.db.get_event_from_handle(event_ref.ref)
|
|
||||||
place_handle = event.get_place_handle()
|
place_handle = event.get_place_handle()
|
||||||
if place_handle:
|
if place_handle:
|
||||||
place_title = self.db.get_place_from_handle(place_handle).get_title()
|
place_title = self.db.get_place_from_handle(place_handle).get_title()
|
||||||
@ -405,9 +405,9 @@ class PeopleModel(gtk.GenericTreeModel):
|
|||||||
return cgi.escape(place_title)
|
return cgi.escape(place_title)
|
||||||
|
|
||||||
for event_ref in data[_EVENT_COL]:
|
for event_ref in data[_EVENT_COL]:
|
||||||
|
event = self.db.get_event_from_handle(event_ref.ref)
|
||||||
etype = event.get_type()[0]
|
etype = event.get_type()[0]
|
||||||
if etype in [Event.BURIAL, Event.CREMATION]:
|
if etype in [Event.BURIAL, Event.CREMATION]:
|
||||||
event = self.db.get_event_from_handle(event_ref.ref)
|
|
||||||
place_handle = event.get_place_handle()
|
place_handle = event.get_place_handle()
|
||||||
if place_handle:
|
if place_handle:
|
||||||
place_title = self.db.get_place_from_handle(place_handle).get_title()
|
place_title = self.db.get_place_from_handle(place_handle).get_title()
|
||||||
|
@ -284,7 +284,7 @@ class PersonView(PageView.PersonNavView):
|
|||||||
self.tree.scroll_to_cell(path,None,1,0.5,0)
|
self.tree.scroll_to_cell(path,None,1,0.5,0)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
self.selection.unselect_all()
|
self.selection.unselect_all()
|
||||||
print "Person not currently available due to filter"
|
self.uistate.push_message(_("Active person not visible"))
|
||||||
self.dbstate.active = p
|
self.dbstate.active = p
|
||||||
|
|
||||||
# disable the inactive flag
|
# disable the inactive flag
|
||||||
|
@ -392,7 +392,7 @@ class ViewManager:
|
|||||||
|
|
||||||
for mergeid in self.merge_ids:
|
for mergeid in self.merge_ids:
|
||||||
self.uimanager.remove_ui(mergeid)
|
self.uimanager.remove_ui(mergeid)
|
||||||
|
|
||||||
if self.active_page:
|
if self.active_page:
|
||||||
groups = self.active_page.get_actions()
|
groups = self.active_page.get_actions()
|
||||||
for grp in groups:
|
for grp in groups:
|
||||||
@ -416,10 +416,12 @@ class ViewManager:
|
|||||||
|
|
||||||
ui = self.active_page.ui_definition()
|
ui = self.active_page.ui_definition()
|
||||||
self.merge_ids = [self.uimanager.add_ui_from_string(ui)]
|
self.merge_ids = [self.uimanager.add_ui_from_string(ui)]
|
||||||
|
|
||||||
for ui in self.active_page.additional_ui_definitions():
|
for ui in self.active_page.additional_ui_definitions():
|
||||||
mergeid = self.uimanager.add_ui_from_string(ui)
|
mergeid = self.uimanager.add_ui_from_string(ui)
|
||||||
self.merge_ids.append(mergeid)
|
self.merge_ids.append(mergeid)
|
||||||
|
while gtk.events_pending():
|
||||||
|
gtk.main_iteration()
|
||||||
|
|
||||||
self.pages[num].change_page()
|
self.pages[num].change_page()
|
||||||
|
|
||||||
@ -717,7 +719,7 @@ class ViewManager:
|
|||||||
self.bookmarks.add(self.active_person.get_handle())
|
self.bookmarks.add(self.active_person.get_handle())
|
||||||
name = NameDisplay.displayer.display(self.active_person)
|
name = NameDisplay.displayer.display(self.active_person)
|
||||||
self.status_text(_("%s has been bookmarked") % name)
|
self.status_text(_("%s has been bookmarked") % name)
|
||||||
gtk.timeout_add(5000,self.modify_statusbar)
|
gobject.timeout_add(5000,self.modify_statusbar)
|
||||||
else:
|
else:
|
||||||
WarningDialog(_("Could Not Set a Bookmark"),
|
WarningDialog(_("Could Not Set a Bookmark"),
|
||||||
_("A bookmark could not be set because "
|
_("A bookmark could not be set because "
|
||||||
|
Loading…
x
Reference in New Issue
Block a user