2007-12-19 Benny Malengier <benny.malengier@gramps-project.org>
* src/Editors/_EditPrimary.py: * src/Editors/_EditPlace.py: * src/Editors/_EditSecondary.py: * src/Editors/_EditSourceRef.py: * src/Editors/_EditReference.py: * src/Editors/_EditRepoRef.py: * src/Editors/_EditNote.py: * src/Editors/_EditMediaRef.py: * src/Editors/_EditEventRef.py: * src/Editors/_EditName.py: * src/DisplayTabs/__init__.py: * src/DisplayTabs/_GalleryTab.py: * src/DisplayTabs/_BackRefList.py: * src/DisplayTabs/_ButtonTab.py: * src/DisplayTabs/_GrampsTab.py: Accelator keys on displaytabs, convert _all_ tabs to GrampsTab! Feature #955 #1438 svn: r9545
This commit is contained in:
@@ -95,6 +95,9 @@ class BackRefList(EmbeddedList):
|
||||
vbox.pack_start(self.edit_btn, False)
|
||||
vbox.show_all()
|
||||
self.pack_start(vbox, False)
|
||||
|
||||
self.add_btn = None
|
||||
self.del_btn = None
|
||||
|
||||
def _selection_changed(self, obj=None):
|
||||
if self.get_selected():
|
||||
|
@@ -45,6 +45,11 @@ import Errors
|
||||
|
||||
_KP_ENTER = gtk.gdk.keyval_from_name("KP_Enter")
|
||||
_RETURN = gtk.gdk.keyval_from_name("Return")
|
||||
_DEL = gtk.gdk.keyval_from_name("Delete")
|
||||
_ADD = gtk.gdk.keyval_from_name("Insert")
|
||||
_OPEN = gtk.gdk.keyval_from_name("o")
|
||||
_LEFT = gtk.gdk.keyval_from_name("Left")
|
||||
_RIGHT = gtk.gdk.keyval_from_name("Right")
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -173,12 +178,29 @@ class ButtonTab(GrampsTab):
|
||||
Handles the return key being pressed on list. If the key is pressed,
|
||||
the Edit button handler is called
|
||||
"""
|
||||
if event.type == gtk.gdk.KEY_PRESS and \
|
||||
event.keyval in (_RETURN, _KP_ENTER):
|
||||
try:
|
||||
self.edit_button_clicked(obj)
|
||||
except Errors.WindowActiveError:
|
||||
pass
|
||||
if event.type == gtk.gdk.KEY_PRESS:
|
||||
if event.keyval in (_RETURN, _KP_ENTER):
|
||||
try:
|
||||
self.edit_button_clicked(obj)
|
||||
except Errors.WindowActiveError:
|
||||
pass
|
||||
elif event.keyval in (_DEL,) and self.del_btn:
|
||||
if self.dirty_selection or self.dbstate.db.readonly:
|
||||
return
|
||||
self.del_button_clicked(obj)
|
||||
elif event.keyval in (_ADD,) and self.add_btn:
|
||||
if self.dirty_selection or self.dbstate.db.readonly:
|
||||
return
|
||||
self.add_button_clicked(obj)
|
||||
elif event.keyval in (_OPEN,) and self.share_btn and \
|
||||
event.state in (gtk.gdk.CONTROL_MASK,):
|
||||
self.share_button_clicked(obj)
|
||||
elif event.keyval in (_LEFT,) and \
|
||||
event.state in (gtk.gdk.MOD1_MASK,):
|
||||
self.prev_page()
|
||||
elif event.keyval in (_RIGHT,) and \
|
||||
event.state in (gtk.gdk.MOD1_MASK,):
|
||||
self.next_page()
|
||||
|
||||
def add_button_clicked(self, obj):
|
||||
"""
|
||||
|
@@ -182,6 +182,7 @@ class GalleryTab(ButtonTab):
|
||||
# connect the signals
|
||||
self.iconlist.connect('selection-changed', self._selection_changed)
|
||||
self.iconlist.connect('button_press_event', self.double_click)
|
||||
self.iconlist.connect('key_press_event', self.key_pressed)
|
||||
self._connect_icon_model()
|
||||
|
||||
# create the scrolled window
|
||||
|
@@ -27,11 +27,15 @@
|
||||
#-------------------------------------------------------------------------
|
||||
import gtk
|
||||
|
||||
_LEFT = gtk.gdk.keyval_from_name("Left")
|
||||
_RIGHT = gtk.gdk.keyval_from_name("Right")
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Classes
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
class GrampsTab(gtk.HBox):
|
||||
"""
|
||||
This class provides the base level class for 'tabs', which are used to
|
||||
@@ -77,6 +81,7 @@ class GrampsTab(gtk.HBox):
|
||||
# build the interface
|
||||
self.share_btn = None
|
||||
self.build_interface()
|
||||
self.parent_notebook = None
|
||||
|
||||
def get_selected(self):
|
||||
return None
|
||||
@@ -137,6 +142,20 @@ class GrampsTab(gtk.HBox):
|
||||
"""
|
||||
return self.label_container
|
||||
|
||||
def key_pressed(self, obj, event):
|
||||
"""
|
||||
Handles the key being pressed.
|
||||
The inheriting object must contain a widget that connects at mimimum
|
||||
to this method, eg an eventbox, tree, ...
|
||||
"""
|
||||
if event.type == gtk.gdk.KEY_PRESS:
|
||||
if event.keyval in (_LEFT,) and \
|
||||
event.state in (gtk.gdk.MOD1_MASK,):
|
||||
self.prev_page()
|
||||
elif event.keyval in (_RIGHT,) and \
|
||||
event.state in (gtk.gdk.MOD1_MASK,):
|
||||
self.next_page()
|
||||
|
||||
def add_db_signal_callback(self, add_db_signal):
|
||||
"""
|
||||
The grampstab must be able to react to database signals, however
|
||||
@@ -150,7 +169,7 @@ class GrampsTab(gtk.HBox):
|
||||
self._add_db_signal = add_db_signal
|
||||
self.connect_db_signals()
|
||||
|
||||
def _set_label(self):
|
||||
def _set_label(self, show_image=True):
|
||||
"""
|
||||
Updates the label based of if the tab contains information. Tabs
|
||||
without information will not have an icon, and the text will not
|
||||
@@ -158,7 +177,10 @@ class GrampsTab(gtk.HBox):
|
||||
the label text will be in bold face.
|
||||
"""
|
||||
if not self.is_empty():
|
||||
self.tab_image.show()
|
||||
if show_image:
|
||||
self.tab_image.show()
|
||||
else:
|
||||
self.tab_image.hide()
|
||||
self.label.set_text("<b>%s</b>" % self.tab_name)
|
||||
self.label.set_use_markup(True)
|
||||
else:
|
||||
@@ -182,3 +204,14 @@ class GrampsTab(gtk.HBox):
|
||||
"""
|
||||
pass
|
||||
|
||||
def set_parent_notebook(self, book):
|
||||
self.parent_notebook = book
|
||||
|
||||
def next_page(self):
|
||||
if self.parent_notebook:
|
||||
self.parent_notebook.next_page()
|
||||
|
||||
def prev_page(self):
|
||||
if self.parent_notebook:
|
||||
self.parent_notebook.prev_page()
|
||||
|
||||
|
@@ -33,6 +33,7 @@ log = logging.getLogger(".DisplayTabs")
|
||||
from _ChildModel import ChildModel
|
||||
|
||||
# Then import tab classes
|
||||
from _GrampsTab import GrampsTab
|
||||
from _EmbeddedList import EmbeddedList
|
||||
from _AddrEmbedList import AddrEmbedList
|
||||
from _AttrEmbedList import AttrEmbedList
|
||||
|
Reference in New Issue
Block a user