0001977: Breaking a database lock closes the family tree manager

svn: r10433
This commit is contained in:
Gary Burton 2008-03-31 20:52:58 +00:00
parent d5962794fa
commit e7a6115c91
2 changed files with 22 additions and 31 deletions

View File

@ -303,7 +303,6 @@ class DbManager(CLIDbManager):
self.top.drag_dest_set(gtk.DEST_DEFAULT_ALL, ddtargets, ACTION_COPY) self.top.drag_dest_set(gtk.DEST_DEFAULT_ALL, ddtargets, ACTION_COPY)
self.remove.connect('clicked', self.__remove_db) self.remove.connect('clicked', self.__remove_db)
self.connect.connect('clicked', self.__load_selected)
self.new.connect('clicked', self.__new_db) self.new.connect('clicked', self.__new_db)
self.rename.connect('clicked', self.__rename_db) self.rename.connect('clicked', self.__rename_db)
self.repair.connect('clicked', self.__repair_db) self.repair.connect('clicked', self.__repair_db)
@ -325,28 +324,10 @@ class DbManager(CLIDbManager):
""" """
if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1: if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1:
if self.connect.get_property('sensitive'): if self.connect.get_property('sensitive'):
return self.__load_selected() self.top.response(gtk.RESPONSE_OK)
return True
return False return False
def __load_selected(self, obj=None):
"""
Load the selected family tree if possible, return True
if ok, and set RESPONSE_OK
"""
store, node = self.selection.get_selected()
if not node:
return
# don't open a locked file
if store.get_value(node, STOCK_COL) == 'gramps-lock':
self.__ask_to_break_lock(store, node)
return
# don't open a version
if len(store.get_path(node)) > 1:
return
if store.get_value(node, PATH_COL):
self.top.response(gtk.RESPONSE_OK)
return True
def __key_press(self, obj, event): def __key_press(self, obj, event):
""" """
Grab ENTER so it does not start editing the cell, but behaves Grab ENTER so it does not start editing the cell, but behaves
@ -355,7 +336,8 @@ class DbManager(CLIDbManager):
if not event.state or event.state in (gtk.gdk.MOD2_MASK,): if not event.state or event.state in (gtk.gdk.MOD2_MASK,):
if event.keyval in (_RETURN, _KP_ENTER): if event.keyval in (_RETURN, _KP_ENTER):
if self.connect.get_property('sensitive'): if self.connect.get_property('sensitive'):
return self.__load_selected() self.top.response(gtk.RESPONSE_OK)
return True
return False return False
def __selection_changed(self, selection): def __selection_changed(self, selection):
@ -500,15 +482,24 @@ class DbManager(CLIDbManager):
Runs the dialog, returning None if nothing has been chosen, Runs the dialog, returning None if nothing has been chosen,
or the path and name if something has been selected or the path and name if something has been selected
""" """
value = self.top.run() while True:
if value == gtk.RESPONSE_OK: value = self.top.run()
(model, node) = self.selection.get_selected() if value == gtk.RESPONSE_OK:
if node: store, node = self.selection.get_selected()
# don't open a locked file
if store.get_value(node, STOCK_COL) == 'gramps-lock':
self.__ask_to_break_lock(store, node)
continue
# don't open a version
if len(store.get_path(node)) > 1:
continue
if node:
self.top.destroy()
return (store.get_value(node, PATH_COL),
store.get_value(node, NAME_COL))
else:
self.top.destroy() self.top.destroy()
return (model.get_value(node, PATH_COL), return None
model.get_value(node, NAME_COL))
self.top.destroy()
return None
def __ask_to_break_lock(self, store, node): def __ask_to_break_lock(self, store, node):
""" """

View File

@ -15889,7 +15889,7 @@ Very High</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property> <property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property> <property name="focus_on_click">True</property>
<property name="response_id">0</property> <property name="response_id">-5</property>
<child> <child>
<widget class="GtkAlignment" id="alignment8"> <widget class="GtkAlignment" id="alignment8">