* src/EditPlace.py: use monitored widgets

* src/EditSource.py: use monitored widgets
* src/EventEdit.py: use monitored widgets
* src/GrampsWidgets.py: start of monitored place
* src/GrampsDb/_GrampsDbBase.py: monitor place changes


svn: r5975
This commit is contained in:
Don Allingham
2006-02-23 03:13:15 +00:00
parent 1b38961628
commit 1020a104ff
6 changed files with 231 additions and 247 deletions

View File

@@ -58,8 +58,8 @@ import RelLib
import ListModel
from DdTargets import DdTargets
from WindowUtils import GladeIf
from DisplayTabs import *
from GrampsWidgets import *
#-------------------------------------------------------------------------
#
@@ -72,81 +72,84 @@ class EditPlace(DisplayState.ManagedWindow):
self.dbstate = dbstate
self.uistate = uistate
self.ref_not_loaded = place and place.get_handle()
self.idle = None
DisplayState.ManagedWindow.__init__(self, uistate, track, place)
self.name_display = NameDisplay.displayer.display
self.place = place
self.db = dbstate.db
self.path = dbstate.db.get_save_path()
self.not_loaded = True
self.model = None # becomes the model for back references.
self.lists_changed = 0
self.top = gtk.glade.XML(const.gladeFile,"placeEditor","gramps")
self.gladeif = GladeIf(self.top)
self.window = self.top.get_widget("placeEditor")
title_label = self.top.get_widget('title')
Utils.set_titles(self.window,title_label,_('Place Editor'))
mode = not self.dbstate.db.readonly
self.title = self.top.get_widget("place_title")
self.title.set_editable(mode)
self.city = self.top.get_widget("city")
self.city.set_editable(mode)
self.parish = self.top.get_widget("parish")
self.parish.set_editable(mode)
self.county = self.top.get_widget("county")
self.county.set_editable(mode)
self.state = self.top.get_widget("state")
self.state.set_editable(mode)
self.phone = self.top.get_widget("phone")
self.phone.set_editable(mode)
self.postal = self.top.get_widget("postal")
self.postal.set_editable(mode)
self.country = self.top.get_widget("country")
self.country.set_editable(mode)
self.longitude = self.top.get_widget("longitude")
self.longitude.set_editable(mode)
self.latitude = self.top.get_widget("latitude")
self.latitude.set_editable(mode)
self.top.get_widget('changed').set_text(place.get_change_display())
self.title.set_text(place.get_title())
mloc = place.get_main_location()
self.city.set_text(mloc.get_city())
self.county.set_text(mloc.get_county())
self.state.set_text(mloc.get_state())
self.phone.set_text(mloc.get_phone())
self.postal.set_text(mloc.get_postal_code())
self.parish.set_text(mloc.get_parish())
self.country.set_text(mloc.get_country())
self.longitude.set_text(place.get_longitude())
self.latitude.set_text(place.get_latitude())
self.plist = self.top.get_widget("refinfo")
self.notebook = self.top.get_widget('notebook3')
self.gladeif.connect('placeEditor', 'delete_event', self.on_delete_event)
self.gladeif.connect('button127', 'clicked', self.close)
self.gladeif.connect('ok', 'clicked', self.on_place_apply_clicked)
self.gladeif.connect('button135', 'clicked', self.on_help_clicked)
DisplayState.ManagedWindow.__init__(self, uistate, track, place)
if self.place.get_handle() == None or self.dbstate.db.readonly:
self.top.get_widget("add_photo").set_sensitive(0)
self.top.get_widget("delete_photo").set_sensitive(0)
self.top.get_widget('ok').set_sensitive(not self.db.readonly)
self._create_tabbed_pages()
self._setup_fields()
self._connect_signals()
self.show()
self.pdmap = {}
self.build_pdmap()
def _connect_signals(self):
self.top.get_widget('placeEditor').connect('delete_event', self.delete_event)
self.top.get_widget('button127').connect('clicked', self.close)
self.top.get_widget('button135').connect('clicked', self.help_clicked)
ok = self.top.get_widget('ok')
ok.connect('clicked', self.apply_clicked)
ok.set_sensitive(not self.db.readonly)
def _setup_fields(self):
mloc = self.place.get_main_location()
self.title = MonitoredEntry(
self.top.get_widget("place_title"),
self.place.set_title, self.place.get_title,
self.db.readonly)
self.city = MonitoredEntry(
self.top.get_widget("city"),
mloc.set_city, mloc.get_city, self.db.readonly)
self.parish = MonitoredEntry(
self.top.get_widget("parish"),
mloc.set_parish, mloc.get_parish, self.db.readonly)
self.county = MonitoredEntry(
self.top.get_widget("county"),
mloc.set_county, mloc.get_county, self.db.readonly)
self.state = MonitoredEntry(
self.top.get_widget("state"),
mloc.set_state, mloc.get_state, self.db.readonly)
self.phone = MonitoredEntry(
self.top.get_widget("phone"),
mloc.set_phone, mloc.get_phone, self.db.readonly)
self.postal = MonitoredEntry(
self.top.get_widget("postal"),
mloc.set_postal_code, mloc.get_postal_code, self.db.readonly)
self.country = MonitoredEntry(
self.top.get_widget("country"),
mloc.set_country, mloc.get_county, self.db.readonly)
self.longitude = MonitoredEntry(
self.top.get_widget("longitude"),
self.place.set_longitude, self.place.get_longitude,
self.db.readonly)
self.latitude = MonitoredEntry(
self.top.get_widget("latitude"),
self.place.set_latitude, self.place.get_latitude,
self.db.readonly)
def build_window_key(self,place):
@@ -201,18 +204,14 @@ class EditPlace(DisplayState.ManagedWindow):
self.dbstate,self.uistate,self.track,
self.db.find_backlink_handles(self.place.handle)))
def on_delete_event(self,obj,b):
self.gladeif.close()
def delete_event(self,obj,b):
self.close()
def close_window(self,obj):
self.gladeif.close()
self.close()
self.window.destroy()
if self.idle != None:
gobject.source_remove(self.idle)
def on_help_clicked(self,obj):
def help_clicked(self,obj):
"""Display the relevant portion of GRAMPS manual"""
GrampsDisplay.help('adv-plc')
@@ -225,15 +224,9 @@ class EditPlace(DisplayState.ManagedWindow):
cnum = cnum + 1
tree.append_column(column)
def set(self,field,getf,setf):
text = unicode(field.get_text())
if text != getf():
setf(text)
def on_place_apply_clicked(self,obj):
def apply_clicked(self,obj):
mloc = self.place.get_main_location()
title = self.title.get_text()
title = self.place.get_title()
if self.pdmap.has_key(title) and self.pdmap[title] != self.place.handle:
import QuestionDialog
QuestionDialog.ErrorDialog(
@@ -243,19 +236,6 @@ class EditPlace(DisplayState.ManagedWindow):
"another place"))
return
self.set(self.city,mloc.get_city,mloc.set_city)
self.set(self.parish,mloc.get_parish,mloc.set_parish)
self.set(self.state,mloc.get_state,mloc.set_state)
self.set(self.phone,mloc.get_phone,mloc.set_phone)
self.set(self.postal,mloc.get_postal_code,mloc.set_postal_code)
self.set(self.county,mloc.get_county,mloc.set_county)
self.set(self.country,mloc.get_country,mloc.set_country)
self.set(self.title,self.place.get_title,self.place.set_title)
self.set(self.longitude,self.place.get_longitude,
self.place.set_longitude)
self.set(self.latitude,self.place.get_latitude,
self.place.set_latitude)
trans = self.db.transaction_begin()
if self.place.get_handle():
self.db.commit_place(self.place,trans)