From cacb294975d4cd01387f2d459c89bb5ab0efa420 Mon Sep 17 00:00:00 2001 From: Don Allingham Date: Tue, 2 May 2006 03:50:46 +0000 Subject: [PATCH] * src/DataViews/_PersonView.py: view specific key mapping support * src/ViewManager.py: remember last View * src/Config/GrampsConfigKeys.py: LAST_VIEW key * src/PageView.py: key binding support * data/gramps.schemas.in: LAST_VIEW key svn: r6510 --- gramps2/ChangeLog | 5 +++ gramps2/data/gramps.schemas.in | 12 +++++++ gramps2/src/Config/_GrampsConfigKeys.py | 42 +++--------------------- gramps2/src/DataViews/_PersonView.py | 37 ++++++++++++++------- gramps2/src/PageView.py | 4 +++ gramps2/src/ViewManager.py | 43 ++++++++++++++----------- 6 files changed, 75 insertions(+), 68 deletions(-) diff --git a/gramps2/ChangeLog b/gramps2/ChangeLog index 018b07650..806587bc3 100644 --- a/gramps2/ChangeLog +++ b/gramps2/ChangeLog @@ -1,4 +1,9 @@ 2006-05-01 Don Allingham + * src/DataViews/_PersonView.py: view specific key mapping support + * src/ViewManager.py: remember last View + * src/Config/GrampsConfigKeys.py: LAST_VIEW key + * src/PageView.py: key binding support + * data/gramps.schemas.in: LAST_VIEW key * src/Editors/_EditPersonRef.py (EditPersonRef._select_person): fix call to SelectPerson * src/DataViews/_PersonView.py (PersonView.define_actions): add diff --git a/gramps2/data/gramps.schemas.in b/gramps2/data/gramps.schemas.in index 1248411e6..d7107c36e 100644 --- a/gramps2/data/gramps.schemas.in +++ b/gramps2/data/gramps.schemas.in @@ -15,6 +15,18 @@ + + /schemas/apps/gramps/preferences/last-view + /apps/gramps/preferences/last-view + gramps + int + 0 + + Last view displayed + Indicates the last view displayed. This view will be displayed when the system is restarted. + + + /schemas/apps/gramps/preferences/family-siblings /apps/gramps/preferences/family-siblings diff --git a/gramps2/src/Config/_GrampsConfigKeys.py b/gramps2/src/Config/_GrampsConfigKeys.py index 4064ff948..2de15ce55 100644 --- a/gramps2/src/Config/_GrampsConfigKeys.py +++ b/gramps2/src/Config/_GrampsConfigKeys.py @@ -1,53 +1,28 @@ -# -# Gramps - a GTK+/GNOME based genealogy program -# -# Copyright (C) 2006 Donald N. Allingham -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# - FAMILY_DETAILS = ('preferences','family-details', 0) +LAST_VIEW = ('preferences','last-view', 1) FAMILY_SIBLINGS = ('preferences','family-siblings', 0) AUTOLOAD = ('behavior','autoload', 0) SPELLCHECK = ('behavior','spellcheck', 0) BETAWARN = ('behavior','betawarn', 0) -FAMILY_WARN = ('behavior','family-warn', 0) WELCOME = ('behavior','welcome', 1) DATE_FORMAT = ('preferences','date-format', 1) DONT_ASK = ('interface','dont-ask', 0) -DEFAULTVIEW = ('interface','defaultview', 1) HEIGHT = ('interface','height', 1) WIDTH = ('interface','width', 1) -FAMILYVIEW = ('interface','familyview', 1) FILTER = ('interface','filter', 0) FPREFIX = ('preferences','fprefix', 2) EPREFIX = ('preferences','eprefix', 2) +RPREFIX = ('preferences','rprefix', 2) IPREFIX = ('preferences','iprefix', 2) OPREFIX = ('preferences','oprefix', 2) PPREFIX = ('preferences','pprefix', 2) SPREFIX = ('preferences','sprefix', 2) -RPREFIX = ('preferences','rprefix', 2) GOUTPUT_PREFERENCE = ('preferences','goutput-preference', 2) OUTPUT_PREFERENCE = ('preferences','output-preference', 2) PAPER_PREFERENCE = ('preferences','paper-preference', 2) RECENT_FILE = ('paths','recent-file', 2) RECENT_IMPORT_DIR = ('paths','recent-import-dir', 2) RECENT_EXPORT_DIR = ('paths','recent-export-dir', 2) -MAKE_REFERENCE = ('behavior','make-reference', 0) -MEDIA_GLOBAL = ('behavior','media-global', 0) -MEDIA_LOCAL = ('behavior','media-local', 0) NAME_FORMAT = ('preferences','name-format', 1) REPORT_DIRECTORY = ('paths','report-directory', 2) RESEARCHER_ADDR = ('researcher','researcher-addr', 2) @@ -58,12 +33,10 @@ RESEARCHER_NAME = ('researcher','researcher-name', 2) RESEARCHER_PHONE = ('researcher','researcher-phone', 2) RESEARCHER_POSTAL = ('researcher','researcher-postal', 2) RESEARCHER_STATE = ('researcher','researcher-state', 2) -SHOW_CALENDAR = ('behavior','show-calendar', 0) STARTUP = ('behavior','startup', 1) SIZE_CHECKED = ('interface','size-checked', 0) STATUSBAR = ('interface','statusbar', 1) SURNAME_GUESSING = ('behavior','surname-guessing', 1) -TOOLBAR = ('interface','toolbar', 1) TOOLBAR_ON = ('interface','toolbar-on', 0) USE_LDS = ('behavior','use-lds', 0) USE_TIPS = ('behavior','use-tips', 0) @@ -74,35 +47,30 @@ WEBSITE_DIRECTORY = ('paths','website-directory', 2) default_value = { FAMILY_DETAILS : True, + LAST_VIEW : 0, FAMILY_SIBLINGS : True, AUTOLOAD : False, SPELLCHECK : False, BETAWARN : False, - FAMILY_WARN : False, WELCOME : 100, DATE_FORMAT : 0, DONT_ASK : False, - DEFAULTVIEW : 0, HEIGHT : 500, WIDTH : 775, - FAMILYVIEW : 0, FILTER : False, FPREFIX : 'F%04d', EPREFIX : 'E%04d', + RPREFIX : 'E%04d', IPREFIX : 'I%04d', OPREFIX : 'O%04d', PPREFIX : 'P%04d', SPREFIX : 'S%04d', - RPREFIX : 'R%04d', GOUTPUT_PREFERENCE : 'No default format', OUTPUT_PREFERENCE : 'No default format', PAPER_PREFERENCE : 'Letter', RECENT_FILE : '', RECENT_IMPORT_DIR : '', RECENT_EXPORT_DIR : '', - MAKE_REFERENCE : True, - MEDIA_GLOBAL : True, - MEDIA_LOCAL : True, NAME_FORMAT : 0, REPORT_DIRECTORY : './', RESEARCHER_ADDR : '', @@ -113,12 +81,10 @@ default_value = { RESEARCHER_PHONE : '', RESEARCHER_POSTAL : '', RESEARCHER_STATE : '', - SHOW_CALENDAR : False, STARTUP : 0, SIZE_CHECKED : False, STATUSBAR : 1, SURNAME_GUESSING : 0, - TOOLBAR : -1, TOOLBAR_ON : True, USE_LDS : False, USE_TIPS : False, diff --git a/gramps2/src/DataViews/_PersonView.py b/gramps2/src/DataViews/_PersonView.py index 835b8e4df..4615869fe 100644 --- a/gramps2/src/DataViews/_PersonView.py +++ b/gramps2/src/DataViews/_PersonView.py @@ -87,6 +87,12 @@ class PersonView(PageView.PersonNavView): dbstate.connect('database-changed',self.change_db) dbstate.connect('active-changed',self.goto_active_person) self.handle_col = PeopleModel.COLUMN_INT_ID + self.model = None + + self.func_list = { + 'F2' : self.key_goto_home_person, + 'F3' : self.key_edit_selected_person, + } def change_page(self): pass @@ -313,18 +319,19 @@ class PersonView(PageView.PersonNavView): # select the active person in the person view p = self.dbstate.active try: - path = self.model.on_get_path(p.get_handle()) - group_name = p.get_primary_name().get_group_name() - top_name = self.dbstate.db.get_name_group_mapping(group_name) - top_path = self.model.on_get_path(top_name) - self.tree.expand_row(top_path,0) + if self.model: + path = self.model.on_get_path(p.get_handle()) + group_name = p.get_primary_name().get_group_name() + top_name = self.dbstate.db.get_name_group_mapping(group_name) + top_path = self.model.on_get_path(top_name) + self.tree.expand_row(top_path,0) - current = self.model.on_get_iter(path) - selected = self.selection.path_is_selected(path) - if current != p.get_handle() or not selected: - self.selection.unselect_all() - self.selection.select_path(path) - self.tree.scroll_to_cell(path,None,1,0.5,0) + current = self.model.on_get_iter(path) + selected = self.selection.path_is_selected(path) + if current != p.get_handle() or not selected: + self.selection.unselect_all() + self.selection.select_path(path) + self.tree.scroll_to_cell(path,None,1,0.5,0) except KeyError: self.selection.unselect_all() self.uistate.push_message(_("Active person not visible")) @@ -681,3 +688,11 @@ class PersonView(PageView.PersonNavView): menu.popup(None,None,None,event.button,event.time) return True return False + + def key_goto_home_person(self): + self.home(None) + self.uistate.push_message(_("Go to default person")) + + def key_edit_selected_person(self): + self.edit(None) + self.uistate.push_message(_("Edit selected person")) diff --git a/gramps2/src/PageView.py b/gramps2/src/PageView.py index eb2524bd4..bf3dd81f6 100644 --- a/gramps2/src/PageView.py +++ b/gramps2/src/PageView.py @@ -74,6 +74,10 @@ class PageView: self.active = False self.handle_col = 0 self.selection = None + self.func_list = {} + + def call_function(self, key): + self.func_list.get(key)() def set_active(self): self.active = True diff --git a/gramps2/src/ViewManager.py b/gramps2/src/ViewManager.py index 38069cd59..939b84574 100644 --- a/gramps2/src/ViewManager.py +++ b/gramps2/src/ViewManager.py @@ -185,7 +185,6 @@ class ViewManager: self.active_page = None self.views = [] self.pages = [] - self.keypress_function = {} self.file_loaded = False self._build_main_window() self._connect_signals() @@ -339,16 +338,16 @@ class ViewManager: ('ReportsMenu', None, _('_Reports')), ('ToolsMenu', None, _('_Tools')), ('WindowsMenu', None, _('_Windows')), - ('F2', None, None, "F2", None, self.keypress), - ('F3', None, None, "F3", None, self.keypress), - ('F4', None, None, "F4", None, self.keypress), - ('F5', None, None, "F5", None, self.keypress), - ('F6', None, None, "F6", None, self.keypress), - ('F7', None, None, "F7", None, self.keypress), - ('F8', None, None, "F8", None, self.keypress), - ('F9', None, None, "F9", None, self.keypress), - ('F11', None, None, "F11", None, self.keypress), - ('F12', None, None, "F12", None, self.keypress), + ('F2', None, 'F2', "F2", None, self.keypress), + ('F3', None, 'F3', "F3", None, self.keypress), + ('F4', None, 'F4', "F4", None, self.keypress), + ('F5', None, 'F5', "F5", None, self.keypress), + ('F6', None, 'F6', "F6", None, self.keypress), + ('F7', None, 'F7', "F7", None, self.keypress), + ('F8', None, 'F9', "F8", None, self.keypress), + ('F9', None, 'F9', "F9", None, self.keypress), + ('F11', None, 'F11', "F11", None, self.keypress), + ('F12', None, 'F12', "F12", None, self.keypress), ] self._file_toggle_action_list = [ @@ -374,17 +373,15 @@ class ViewManager: def keypress(self, action): name = action.get_name() - func = self.keypress_function.get(name) - if func: - func() - else: + try: + self.active_page.call_function(name) + except: self.uistate.push_message(_("Key %s is not bound") % name) def init_interface(self): self._init_lists() self.create_pages() - self.change_page(None, None) if not self.file_loaded: self.actiongroup.set_visible(False) self.fileactions.set_sensitive(False) @@ -572,14 +569,19 @@ class ViewManager: self.bbox.pack_start(button, False) self.buttons.append(button) - self.active_page = self.pages[0] - self.buttons[0].set_active(True) + current = Config.get(Config.LAST_VIEW) + if current > len(self.pages): + current = 0 + + self.active_page = self.pages[current] + self.buttons[current].set_active(True) self.active_page.set_active() + self.notebook.set_current_page(current) def change_page(self, obj, page, num=-1): if num == -1: num = self.notebook.get_current_page() - + for ix in range(len(self.buttons)): if ix != num and self.buttons[ix].get_active(): self.buttons[ix].set_active(False) @@ -599,6 +601,9 @@ class ViewManager: if len(self.pages) > 0: self.active_page = self.pages[num] self.active_page.set_active() + Config.set(Config.LAST_VIEW,num) + Config.sync() + print "Saved as",Config.get(Config.LAST_VIEW) old_nav = self._navigation_type[self.prev_nav] if old_nav[0] != None: