* 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:
@@ -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)
|
||||
|
Reference in New Issue
Block a user