fix ScratchPad window close bug.
svn: r4670
This commit is contained in:
parent
f57b31016f
commit
9d19ad4095
@ -1,3 +1,8 @@
|
|||||||
|
2005-05-25 Richard Taylor <rjt-gramps@thegrindstone.me.uk>
|
||||||
|
* src/plugins/ScratchPad.py: rename on_scratch_pad_delete_event for consistency
|
||||||
|
* src/plugins/scratchpad.glade: add on_scratch_pad_delete_event to fix bug
|
||||||
|
when window is close using the window manager close button.
|
||||||
|
|
||||||
2005-05-25 Alex Roitman <shura@gramps-project.org>
|
2005-05-25 Alex Roitman <shura@gramps-project.org>
|
||||||
* src/EditSource.py (__init__): set cursor to WATCH before displaying
|
* src/EditSource.py (__init__): set cursor to WATCH before displaying
|
||||||
references; call display_references when idle;
|
references; call display_references when idle;
|
||||||
|
@ -94,6 +94,9 @@ class ScratchPadWrapper(object):
|
|||||||
def pack(self):
|
def pack(self):
|
||||||
return str(self._obj)
|
return str(self._obj)
|
||||||
|
|
||||||
|
def is_valid(self):
|
||||||
|
return True
|
||||||
|
|
||||||
class ScratchPadGrampsTypeWrapper(ScratchPadWrapper):
|
class ScratchPadGrampsTypeWrapper(ScratchPadWrapper):
|
||||||
|
|
||||||
def __init__(self,model,obj):
|
def __init__(self,model,obj):
|
||||||
@ -108,6 +111,21 @@ class ScratchPadGrampsTypeWrapper(ScratchPadWrapper):
|
|||||||
def pack(self):
|
def pack(self):
|
||||||
return self._pickle
|
return self._pickle
|
||||||
|
|
||||||
|
def is_valid(self):
|
||||||
|
valid_func_map = {'Person': self._db.get_person_from_handle,
|
||||||
|
'Family': self._db.get_family_from_handle,
|
||||||
|
'Event': self._db.get_event_from_handle,
|
||||||
|
'Place': self._db.get_place_from_handle,
|
||||||
|
'MediaObject': self._db.get_object_from_handle,
|
||||||
|
'Source': self._db.get_source_from_handle}
|
||||||
|
|
||||||
|
for (classname,handle) in self._obj.get_referenced_handles_recursively():
|
||||||
|
if classname in valid_func_map.keys():
|
||||||
|
if not valid_func_map[classname](handle):
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
class ScratchPadAddress(ScratchPadGrampsTypeWrapper):
|
class ScratchPadAddress(ScratchPadGrampsTypeWrapper):
|
||||||
|
|
||||||
@ -533,6 +551,27 @@ class ScratchPadListView:
|
|||||||
self.database_changed(self._gramps_model.db)
|
self.database_changed(self._gramps_model.db)
|
||||||
self._gramps_model.connect('database-changed', self.database_changed)
|
self._gramps_model.connect('database-changed', self.database_changed)
|
||||||
|
|
||||||
|
db_signals = (
|
||||||
|
'person-update',
|
||||||
|
'person-delete',
|
||||||
|
'person-rebuild',
|
||||||
|
'family-update',
|
||||||
|
'family-delete',
|
||||||
|
'family-rebuild',
|
||||||
|
'source-update',
|
||||||
|
'source-delete',
|
||||||
|
'source-rebuild',
|
||||||
|
'place-update',
|
||||||
|
'place-delete',
|
||||||
|
'place-rebuild',
|
||||||
|
'media-update',
|
||||||
|
'media-delete',
|
||||||
|
'media-rebuild'
|
||||||
|
)
|
||||||
|
|
||||||
|
for signal in db_signals:
|
||||||
|
self._gramps_model.db.connect(signal,self.remove_invalid_objects)
|
||||||
|
|
||||||
self._widget = widget
|
self._widget = widget
|
||||||
|
|
||||||
self._target_type_to_wrapper_class_map = {}
|
self._target_type_to_wrapper_class_map = {}
|
||||||
@ -588,6 +627,13 @@ class ScratchPadListView:
|
|||||||
def database_changed(self,db):
|
def database_changed(self,db):
|
||||||
self._db = db
|
self._db = db
|
||||||
|
|
||||||
|
def remove_invalid_objects(self,dummy=None):
|
||||||
|
model = self._widget.get_model()
|
||||||
|
|
||||||
|
for o in model:
|
||||||
|
if not o.is_valid():
|
||||||
|
model.remove(o)
|
||||||
|
|
||||||
# Method to manage the wrapper classes.
|
# Method to manage the wrapper classes.
|
||||||
|
|
||||||
def register_wrapper_classes(self):
|
def register_wrapper_classes(self):
|
||||||
@ -793,7 +839,7 @@ class ScratchPadWindow:
|
|||||||
"on_clear_clicked": self.on_clear_clicked,
|
"on_clear_clicked": self.on_clear_clicked,
|
||||||
"on_help_clicked": self.on_help_clicked,
|
"on_help_clicked": self.on_help_clicked,
|
||||||
"on_objectlist_delete_event": self.on_delete_event,
|
"on_objectlist_delete_event": self.on_delete_event,
|
||||||
"on_scratchPad_delete_event": self.on_delete_event
|
"on_scratch_pad_delete_event": self.on_delete_event
|
||||||
})
|
})
|
||||||
|
|
||||||
self.clear_all_btn.connect_object('clicked', gtk.ListStore.clear, ScratchPadWindow.otree)
|
self.clear_all_btn.connect_object('clicked', gtk.ListStore.clear, ScratchPadWindow.otree)
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
|
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
|
||||||
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
|
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
|
||||||
<property name="has_separator">True</property>
|
<property name="has_separator">True</property>
|
||||||
|
<signal name="delete_event" handler="on_scratch_pad_delete_event" last_modification_time="Wed, 25 May 2005 06:50:50 GMT"/>
|
||||||
|
|
||||||
<child internal-child="vbox">
|
<child internal-child="vbox">
|
||||||
<widget class="GtkVBox" id="dialog-vbox1">
|
<widget class="GtkVBox" id="dialog-vbox1">
|
||||||
|
Loading…
Reference in New Issue
Block a user