diff --git a/src/plugins/view/geoview.py b/src/plugins/view/geoview.py
index 94ea5955d..7ad6aef04 100644
--- a/src/plugins/view/geoview.py
+++ b/src/plugins/view/geoview.py
@@ -74,7 +74,7 @@ import config
import Errors
from gen.display.name import displayer as _nd
from PlaceUtils import conv_lat_lon
-from gui.views.pageview import PageView
+from gui.views.navigationview import NavigationView
from gui.editors import EditPlace
from gui.selectors.selectplace import SelectPlace
from Filters.SideBar import PlaceSidebarFilter, EventSidebarFilter
@@ -119,23 +119,6 @@ from htmlrenderer import HtmlView
#covert to unicode for better hadnling of path in Windows
GEOVIEW_SUBPATH = Utils.get_empty_tempdir('geoview')
-DISABLED = -1
-MRU_SIZE = 10
-
-MRU_TOP = [
- ''
- ''
- ''
- ''
- ''
- ]
-
#-------------------------------------------------------------------------
#
# Constants
@@ -311,30 +294,18 @@ class GeoView(HtmlView):
self.dbstate = dbstate
self.uistate = uistate
self.dbstate.connect('database-changed', self._new_database)
- self.fwd_action = None
- self.back_action = None
- self.book_action = None
- self.other_action = None
- self.active_signal = None
- self.mru_signal = None
self.widget = None
- self.nav_group = 0
- self.mru_active = DISABLED
self.invalidpath = const.ROOT_DIR.find("(")
if self.invalidpath != -1:
_LOG.debug("\n\nInvalid PATH (avoid parenthesis):\n%s\n\n" %
const.ROOT_DIR)
-
- self.uistate.register(dbstate, self.navigation_type(), self.nav_group)
- self.bookmarks = Bookmarks.PersonBookmarks(self.dbstate, self.uistate,
- dbstate.db.get_bookmarks(), self.goto_handle)
+ self.displaytype = "person"
self.additional_uis.append(self.additional_ui())
def build_widget(self):
self.no_network = False
self.placeslist = []
- self.displaytype = "person"
self.nbmarkers = 0
self.nbplaces = 0
self.without = 0
@@ -883,7 +854,7 @@ class GeoView(HtmlView):
config.set('geoview.latitude', "0.0")
config.set('geoview.longitude', "0.0")
config.set('geoview.map', "person")
- PageView.on_delete(self)
+ NavigationView.on_delete(self)
def init_parent_signals_for_map(self, widget, event):
"""
@@ -970,8 +941,6 @@ class GeoView(HtmlView):
hobj = self.get_history()
self.active_signal = hobj.connect(
'active-changed', self._goto_active_person)
- self.mru_signal = hobj.connect('mru-changed', self.update_mru_menu)
- self.update_mru_menu(hobj.mru)
self._goto_active_person()
self.active = True
self._test_network()
@@ -1164,53 +1133,10 @@ class GeoView(HtmlView):
def define_actions(self):
"""
- Required define_actions function for PageView. Builds the action
+ Required define_actions function for NavigationView. Builds the action
group information required.
"""
- PageView.define_actions(self)
- #self.bookmark_actions()
- self.book_action = gtk.ActionGroup(self.title + '/Bookmark')
- self.book_action.add_actions([
- ('AddBook', 'gramps-bookmark-new', _('_Add Bookmark'),
- 'd', None, self.add_bookmark),
- ('EditBook', 'gramps-bookmark-edit',
- _("%(title)s...") % {'title': _("Organize Bookmarks")},
- 'b', None,
- self.edit_bookmarks),
- ])
-
- self._add_action_group(self.book_action)
-
- #self.navigation_actions()
- # add the Forward action group to handle the Forward button
- self.fwd_action = gtk.ActionGroup(self.title + '/Forward')
- self.fwd_action.add_actions([
- ('Forward', gtk.STOCK_GO_FORWARD, _("_Forward"),
- "Right", _("Go to the next person in the history"),
- self.fwd_clicked)
- ])
-
- # add the Backward action group to handle the Forward button
- self.back_action = gtk.ActionGroup(self.title + '/Backward')
- self.back_action.add_actions([
- ('Back', gtk.STOCK_GO_BACK, _("_Back"),
- "Left", _("Go to the previous person in the history"),
- self.back_clicked)
- ])
-
- self._add_action('HomePerson', gtk.STOCK_HOME, _("_Home"),
- accel="Home",
- tip=_("Go to the default person"), callback=self.home)
-
- self.other_action = gtk.ActionGroup(self.title + '/PersonOther')
- self.other_action.add_actions([
- ('SetActive', gtk.STOCK_HOME, _("Set _Home Person"), None,
- None, self.set_default_person),
- ])
-
- self._add_action_group(self.back_action)
- self._add_action_group(self.fwd_action)
- self._add_action_group(self.other_action)
+ NavigationView.define_actions(self)
# geoview actions
self._add_action('AddPlace', 'geo-place-add',
@@ -1261,227 +1187,6 @@ class GeoView(HtmlView):
callback=self._event_places,
tip=_("Attempt to view places connected to all events."))
- ####################################################################
- # BOOKMARKS
- ####################################################################
- def add_bookmark(self, obj):
- """
- Add a bookmark to the list.
- """
- from gen.display.name import displayer as name_displayer
-
- active_handle = self.uistate.get_active('Person')
- active_person = self.dbstate.db.get_person_from_handle(active_handle)
- if active_person:
- self.bookmarks.add(active_handle)
- name = name_displayer.display(active_person)
- self.uistate.push_message(self.dbstate,
- _("%s has been bookmarked") % name)
- else:
- from QuestionDialog import WarningDialog
- WarningDialog(
- _("Could Not Set a Bookmark"),
- _("A bookmark could not be set because "
- "no one was selected."))
-
- def edit_bookmarks(self, obj):
- """
- Call the bookmark editor.
- """
- self.bookmarks.edit()
-
- def bookmark_actions(self):
- """
- Define the bookmark menu actions.
- """
- self.book_action = gtk.ActionGroup(self.title + '/Bookmark')
- self.book_action.add_actions([
- ('AddBook', 'gramps-bookmark-new', _('_Add Bookmark'),
- 'd', None, self.add_bookmark),
- ('EditBook', 'gramps-bookmark-edit',
- _("%(title)s...") % {'title': _("Organize Bookmarks")},
- 'b', None,
- self.edit_bookmarks),
- ])
-
- self._add_action_group(self.book_action)
-
- ####################################################################
- # NAVIGATION
- ####################################################################
- def set_default_person(self, obj):
- """
- Set the default person.
- """
- active = self.uistate.get_active('Person')
- if active:
- self.dbstate.db.set_default_person_handle(active)
-
- def home(self, obj):
- """
- Move to the default person.
- """
- defperson = self.dbstate.db.get_default_person()
- if defperson:
- self.change_active(defperson.get_handle())
-
- def jump(self):
- """
- A dialog to move to a Gramps ID entered by the user.
- """
- dialog = gtk.Dialog(_('Jump to by Gramps ID'), None,
- gtk.DIALOG_NO_SEPARATOR)
- dialog.set_border_width(12)
- label = gtk.Label('%s' %
- _('Jump to by Gramps ID'))
- label.set_use_markup(True)
- dialog.vbox.add(label)
- dialog.vbox.set_spacing(10)
- dialog.vbox.set_border_width(12)
- hbox = gtk.HBox()
- hbox.pack_start(gtk.Label("%s: " % _('ID')), False)
- text = gtk.Entry()
- text.set_activates_default(True)
- hbox.pack_start(text, False)
- dialog.vbox.pack_start(hbox, False)
- dialog.add_buttons(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
- gtk.STOCK_JUMP_TO, gtk.RESPONSE_OK)
- dialog.set_default_response(gtk.RESPONSE_OK)
- dialog.vbox.show_all()
-
- if dialog.run() == gtk.RESPONSE_OK:
- gid = text.get_text()
- handle = self.get_handle_from_gramps_id(gid)
- if handle is not None:
- self.change_active(handle)
- self.goto_handle(handle)
- else:
- self.uistate.push_message(
- self.dbstate,
- _("Error: %s is not a valid Gramps ID") % gid)
- dialog.destroy()
-
- def get_handle_from_gramps_id(self, gid):
- """
- Get an object handle from its Gramps ID.
- Needs to be implemented by the inheriting class.
- """
- pass
-
- def goto_handle(self, handle):
- self.change_person(handle)
-
- def fwd_clicked(self, obj):
- """
- Move forward one object in the history.
- """
- hobj = self.get_history()
- hobj.lock = True
- if not hobj.at_end():
- hobj.forward()
- self.uistate.modify_statusbar(self.dbstate)
- self.fwd_action.set_sensitive(not hobj.at_end())
- self.back_action.set_sensitive(True)
- hobj.lock = False
-
- def back_clicked(self, obj):
- """
- Move backward one object in the history.
- """
- hobj = self.get_history()
- hobj.lock = True
- if not hobj.at_front():
- hobj.back()
- self.uistate.modify_statusbar(self.dbstate)
- self.back_action.set_sensitive(not hobj.at_front())
- self.fwd_action.set_sensitive(True)
- hobj.lock = False
-
- def navigation_group(self):
- """
- Return the navigation group.
- """
- return self.nav_group
-
- def navigation_type(self):
- return 'Person'
-
- def get_history(self):
- """
- Return the history object.
- """
- return self.uistate.get_history(self.navigation_type(),
- self.navigation_group())
-
- ####################################################################
- # MRU functions
- ####################################################################
-
- def mru_disable(self):
- """
- Remove the UI and action groups for the MRU list.
- """
- if self.mru_active != DISABLED:
- self.uistate.uimanager.remove_ui(self.mru_active)
- self.uistate.uimanager.remove_action_group(self.mru_action)
- self.mru_active = DISABLED
-
- def mru_enable(self):
- """
- Enables the UI and action groups for the MRU list.
- """
- if self.mru_active == DISABLED:
- self.uistate.uimanager.insert_action_group(self.mru_action, 1)
- self.mru_active = self.uistate.uimanager.add_ui_from_string(self.mru_ui)
- self.uistate.uimanager.ensure_update()
-
- def update_mru_menu(self, items):
- """
- Builds the UI and action group for the MRU list.
- """
- self.mru_disable()
- nav_type = self.navigation_type()
- hobj = self.get_history()
- menu_len = min(len(items) - 1, MRU_SIZE)
-
- entry = ''
- data = [entry % (nav_type, index) for index in range(0, menu_len)]
- self.mru_ui = "".join(MRU_TOP) + "".join(data) + "".join(MRU_BTM)
-
- mitems = items[-MRU_SIZE - 1:-1] # Ignore current handle
- mitems.reverse()
- data = []
- for index, handle in enumerate(mitems):
- name, obj = navigation_label(self.dbstate.db, nav_type, handle)
- data.append(('%s%02d'%(nav_type, index), None, name,
- "%d" % index, None,
- _make_callback(hobj.push, handle)))
-
- self.mru_action = gtk.ActionGroup(nav_type)
- self.mru_action.add_actions(data)
- self.mru_enable()
-
- ####################################################################
- # End MRU functions
- ####################################################################
-
- def go_back(self, button): # pylint: disable-msg=W0613
- """
- Go to the previous loaded url.
- We need to set all the buttons insensitive.
- """
- self.box1.set_sensitive(False)
- self.renderer.window.go_back()
-
- def go_forward(self, button): # pylint: disable-msg=W0613
- """
- Go to the next loaded url.
- We need to set all the buttons sensitive if we cannot go forward.
- """
- self.renderer.window.go_forward()
- if not self.renderer.window.can_go_forward():
- self.box1.set_sensitive(True)
-
def change_page(self):
"""
Called by viewmanager at end of realization when arriving on the page
@@ -2717,3 +2422,34 @@ class GeoView(HtmlView):
# How many seconds between tests ? mini = 10 secondes.
self._config.set('preferences.network-periodicity', 10)
self.__test_network()
+
+ def get_bookmarks(self):
+ return self.dbstate.db.get_family_bookmarks()
+
+ def add_bookmark(self, obj):
+ mlist = self.selected_handles()
+ if mlist:
+ self.bookmarks.add(mlist[0])
+ else:
+ from QuestionDialog import WarningDialog
+ WarningDialog(
+ _("Could Not Set a Bookmark"),
+ _("A bookmark could not be set because "
+ "no one was selected."))
+
+ def navigation_group(self):
+ """
+ Return the navigation group.
+ """
+ return self.nav_group
+
+ def navigation_type(self):
+ return 'Person'
+
+ def get_history(self):
+ """
+ Return the history object.
+ """
+ _LOG.debug("get history")
+ return self.uistate.get_history(self.navigation_type(),
+ self.navigation_group())
diff --git a/src/plugins/view/htmlrenderer.py b/src/plugins/view/htmlrenderer.py
index 69fcb7ff2..446d02d97 100644
--- a/src/plugins/view/htmlrenderer.py
+++ b/src/plugins/view/htmlrenderer.py
@@ -57,7 +57,8 @@ import gtk
# Gramps Modules
#
#-------------------------------------------------------------------------
-from gui.views.pageview import PageView
+from gui.views.navigationview import NavigationView
+import Bookmarks
import Utils
import constfunc
import config
@@ -435,14 +436,18 @@ class RendererMozilla(Renderer):
# HtmlView
#
#-------------------------------------------------------------------------
-class HtmlView(PageView):
+class HtmlView(NavigationView):
"""
HtmlView is a view showing a top widget with controls, and a bottom part
with an embedded webbrowser showing a given URL
"""
def __init__(self, pdata, dbstate, uistate, title=_('HtmlView')):
- PageView.__init__(self, title, pdata, dbstate, uistate)
+ NavigationView.__init__(self, title, pdata, dbstate, uistate,
+ dbstate.db.get_bookmarks(),
+ Bookmarks.PersonBookmarks,
+ nav_group=0
+ )
self.dbstate = dbstate
self.back_action = None
self.forward_action = None
@@ -621,10 +626,10 @@ class HtmlView(PageView):
def define_actions(self):
"""
- Required define_actions function for PageView. Builds the action
+ Required define_actions function for NavigationView. Builds the action
group information required.
"""
- PageView.define_actions(self)
+ NavigationView.define_actions(self)
HtmlView._define_actions_fw_bw(self)
def _define_actions_fw_bw(self):
@@ -713,3 +718,24 @@ class HtmlView(PageView):
URL_SEP.join(filename.split(os.sep)),
'', ''))
+ def navigation_group(self):
+ """
+ Return the navigation group.
+ """
+ return self.nav_group
+
+ def navigation_type(self):
+ return 'Person'
+
+ def get_history(self):
+ """
+ Return the history object.
+ """
+ _LOG.debug("htmlrenderer : get_history" )
+ return self.uistate.get_history(self.navigation_type(),
+ self.navigation_group())
+
+ def goto_handle(self, handle):
+ _LOG.debug("htmlrenderer : gtoto_handle" )
+ pass
+