Give relview a configuration, remove old config from preferences
svn: r14204
This commit is contained in:
parent
5604176e73
commit
8b6077a95e
@ -223,7 +223,6 @@ register('interface.place-sel-height', 450)
|
|||||||
register('interface.place-sel-width', 600)
|
register('interface.place-sel-width', 600)
|
||||||
register('interface.place-width', 650)
|
register('interface.place-width', 650)
|
||||||
register('interface.prefix-suffix', 0)
|
register('interface.prefix-suffix', 0)
|
||||||
register('interface.releditbtn', False)
|
|
||||||
register('interface.repo-height', 450)
|
register('interface.repo-height', 450)
|
||||||
register('interface.repo-ref-height', 450)
|
register('interface.repo-ref-height', 450)
|
||||||
register('interface.repo-ref-width', 600)
|
register('interface.repo-ref-width', 600)
|
||||||
@ -257,8 +256,6 @@ register('preferences.date-format', 0)
|
|||||||
register('preferences.calendar-format-report', 0)
|
register('preferences.calendar-format-report', 0)
|
||||||
register('preferences.default-source', False)
|
register('preferences.default-source', False)
|
||||||
register('preferences.eprefix', 'E%04d')
|
register('preferences.eprefix', 'E%04d')
|
||||||
register('preferences.family-details', True)
|
|
||||||
register('preferences.family-siblings', True)
|
|
||||||
register('preferences.family-warn', True)
|
register('preferences.family-warn', True)
|
||||||
register('preferences.fprefix', 'F%04d')
|
register('preferences.fprefix', 'F%04d')
|
||||||
register('preferences.hide-ep-msg', False)
|
register('preferences.hide-ep-msg', False)
|
||||||
@ -278,8 +275,6 @@ register('preferences.pprefix', 'P%04d')
|
|||||||
register('preferences.private-given-text', "[%s]" % _("Living"))
|
register('preferences.private-given-text', "[%s]" % _("Living"))
|
||||||
register('preferences.private-record-text', "[%s]" % _("Private Record"))
|
register('preferences.private-record-text', "[%s]" % _("Private Record"))
|
||||||
register('preferences.private-surname-text', "[%s]" % _("Living"))
|
register('preferences.private-surname-text', "[%s]" % _("Living"))
|
||||||
register('preferences.relation-display-theme', "CLASSIC")
|
|
||||||
register('preferences.relation-shade', True)
|
|
||||||
register('preferences.rprefix', 'R%04d')
|
register('preferences.rprefix', 'R%04d')
|
||||||
register('preferences.sprefix', 'S%04d')
|
register('preferences.sprefix', 'S%04d')
|
||||||
register('preferences.todo-color', '#ff0000')
|
register('preferences.todo-color', '#ff0000')
|
||||||
|
@ -2,7 +2,8 @@
|
|||||||
# Gramps - a GTK+/GNOME based genealogy program
|
# Gramps - a GTK+/GNOME based genealogy program
|
||||||
#
|
#
|
||||||
# Copyright (C) 2000-2007 Donald N. Allingham
|
# Copyright (C) 2000-2007 Donald N. Allingham
|
||||||
# Copyright (C) 2008 Raphael Ackermann
|
# Copyright (C) 2008 Raphael Ackermann
|
||||||
|
# Copyright (C) 2010 Benny Malengier
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# 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
|
# it under the terms of the GNU General Public License as published by
|
||||||
@ -178,7 +179,7 @@ class ConfigureDialog(ManagedWindow.ManagedWindow):
|
|||||||
This method builds the notebookpages in the panel
|
This method builds the notebookpages in the panel
|
||||||
"""
|
"""
|
||||||
for func in configure_page_funcs:
|
for func in configure_page_funcs:
|
||||||
labeltitle, widget = func()
|
labeltitle, widget = func(self)
|
||||||
self.panel.append_page(widget, MarkupLabel(labeltitle))
|
self.panel.append_page(widget, MarkupLabel(labeltitle))
|
||||||
|
|
||||||
def done(self, obj, value):
|
def done(self, obj, value):
|
||||||
@ -324,7 +325,7 @@ class GrampsPreferences(ConfigureDialog):
|
|||||||
GrampsPreferences, config,
|
GrampsPreferences, config,
|
||||||
on_close=Utils.update_constants)
|
on_close=Utils.update_constants)
|
||||||
|
|
||||||
def add_researcher_panel(self):
|
def add_researcher_panel(self, configdialog):
|
||||||
table = gtk.Table(3, 8)
|
table = gtk.Table(3, 8)
|
||||||
table.set_border_width(12)
|
table.set_border_width(12)
|
||||||
table.set_col_spacings(6)
|
table.set_col_spacings(6)
|
||||||
@ -339,7 +340,7 @@ class GrampsPreferences(ConfigureDialog):
|
|||||||
self.add_entry(table, _('Email'), 7, 'researcher.researcher-email')
|
self.add_entry(table, _('Email'), 7, 'researcher.researcher-email')
|
||||||
return _('Researcher'), table
|
return _('Researcher'), table
|
||||||
|
|
||||||
def add_prefix_panel(self):
|
def add_prefix_panel(self, configdialog):
|
||||||
"""
|
"""
|
||||||
Add the ID prefix tab to the preferences.
|
Add the ID prefix tab to the preferences.
|
||||||
"""
|
"""
|
||||||
@ -365,7 +366,7 @@ class GrampsPreferences(ConfigureDialog):
|
|||||||
self.update_idformat_entry)
|
self.update_idformat_entry)
|
||||||
return _('ID Formats'), table
|
return _('ID Formats'), table
|
||||||
|
|
||||||
def add_advanced_panel(self):
|
def add_advanced_panel(self, configdialog):
|
||||||
table = gtk.Table(4, 8)
|
table = gtk.Table(4, 8)
|
||||||
table.set_border_width(12)
|
table.set_border_width(12)
|
||||||
table.set_col_spacings(6)
|
table.set_col_spacings(6)
|
||||||
@ -389,7 +390,7 @@ class GrampsPreferences(ConfigureDialog):
|
|||||||
|
|
||||||
return _('Warnings'), table
|
return _('Warnings'), table
|
||||||
|
|
||||||
def add_color_panel(self):
|
def add_color_panel(self, configdialog):
|
||||||
table = gtk.Table(3, 8)
|
table = gtk.Table(3, 8)
|
||||||
table.set_border_width(12)
|
table.set_border_width(12)
|
||||||
table.set_col_spacings(12)
|
table.set_col_spacings(12)
|
||||||
@ -423,58 +424,6 @@ class GrampsPreferences(ConfigureDialog):
|
|||||||
for widget in [self.comp_color, self.todo_color, self.custom_color]:
|
for widget in [self.comp_color, self.todo_color, self.custom_color]:
|
||||||
widget.emit('color-set')
|
widget.emit('color-set')
|
||||||
|
|
||||||
def add_name_panel(self):
|
|
||||||
"""
|
|
||||||
Name format settings panel
|
|
||||||
"""
|
|
||||||
|
|
||||||
# a dummy name to be used in the examples
|
|
||||||
self.examplename = Name()
|
|
||||||
self.examplename.set_title('Dr.')
|
|
||||||
self.examplename.set_first_name('Edwin Jose')
|
|
||||||
self.examplename.set_surname_prefix('von der')
|
|
||||||
self.examplename.set_surname('Smith')
|
|
||||||
self.examplename.set_suffix('Sr')
|
|
||||||
self.examplename.set_patronymic('Wilson')
|
|
||||||
self.examplename.set_call_name('Ed')
|
|
||||||
|
|
||||||
table = gtk.Table(2, 2)
|
|
||||||
table.set_border_width(12)
|
|
||||||
table.set_col_spacings(6)
|
|
||||||
table.set_row_spacings(6)
|
|
||||||
|
|
||||||
# get the model for the combo and the treeview
|
|
||||||
active = _nd.get_default_format()
|
|
||||||
self.fmt_model, active = self._build_name_format_model(active)
|
|
||||||
|
|
||||||
# set up the combo to choose the preset format
|
|
||||||
self.fmt_obox = gtk.ComboBox()
|
|
||||||
cell = gtk.CellRendererText()
|
|
||||||
self.fmt_obox.pack_start(cell, True)
|
|
||||||
self.fmt_obox.add_attribute(cell, 'text', 1)
|
|
||||||
self.fmt_obox.set_model(self.fmt_model)
|
|
||||||
|
|
||||||
# set the default value as active in the combo
|
|
||||||
self.fmt_obox.set_active(active)
|
|
||||||
self.fmt_obox.connect('changed', self.cb_name_changed)
|
|
||||||
# label for the combo
|
|
||||||
lwidget = BasicLabel("%s: " % _('_Display format'))
|
|
||||||
lwidget.set_use_underline(True)
|
|
||||||
lwidget.set_mnemonic_widget(self.fmt_obox)
|
|
||||||
|
|
||||||
# build the format manager ui
|
|
||||||
custom_ui = self._build_custom_name_ui()
|
|
||||||
name_exp = gtk.expander_new_with_mnemonic(_('C_ustom format details'))
|
|
||||||
name_exp.add(custom_ui)
|
|
||||||
name_exp.set_sensitive(self.dbstate.open)
|
|
||||||
|
|
||||||
# put all these together
|
|
||||||
table.attach(lwidget, 0, 1, 0, 1, yoptions=0)
|
|
||||||
table.attach(self.fmt_obox, 1, 2, 0, 1, yoptions=0)
|
|
||||||
table.attach(name_exp, 0, 2, 1, 2, yoptions=gtk.FILL|gtk.EXPAND)
|
|
||||||
|
|
||||||
return table
|
|
||||||
|
|
||||||
def _build_name_format_model(self, active):
|
def _build_name_format_model(self, active):
|
||||||
"""
|
"""
|
||||||
Create a common model for ComboBox and TreeView
|
Create a common model for ComboBox and TreeView
|
||||||
@ -796,7 +745,7 @@ class GrampsPreferences(ConfigureDialog):
|
|||||||
self.dbstate.db.name_formats = _nd.get_name_format(only_custom=True,
|
self.dbstate.db.name_formats = _nd.get_name_format(only_custom=True,
|
||||||
only_active=False)
|
only_active=False)
|
||||||
|
|
||||||
def add_formats_panel(self):
|
def add_formats_panel(self, configdialog):
|
||||||
row = 0
|
row = 0
|
||||||
table = gtk.Table(4, 4)
|
table = gtk.Table(4, 4)
|
||||||
table.set_border_width(12)
|
table.set_border_width(12)
|
||||||
@ -901,7 +850,7 @@ class GrampsPreferences(ConfigureDialog):
|
|||||||
row += 1
|
row += 1
|
||||||
return _('Display'), table
|
return _('Display'), table
|
||||||
|
|
||||||
def add_text_panel(self):
|
def add_text_panel(self, configdialog):
|
||||||
row = 0
|
row = 0
|
||||||
table = gtk.Table(6, 8)
|
table = gtk.Table(6, 8)
|
||||||
table.set_border_width(12)
|
table.set_border_width(12)
|
||||||
@ -944,7 +893,7 @@ class GrampsPreferences(ConfigureDialog):
|
|||||||
|
|
||||||
config.set('preferences.calendar-format-report', obj.get_active())
|
config.set('preferences.calendar-format-report', obj.get_active())
|
||||||
|
|
||||||
def add_date_panel(self):
|
def add_date_panel(self, configdialog):
|
||||||
table = gtk.Table(2, 7)
|
table = gtk.Table(2, 7)
|
||||||
table.set_border_width(12)
|
table.set_border_width(12)
|
||||||
table.set_col_spacings(6)
|
table.set_col_spacings(6)
|
||||||
@ -977,8 +926,8 @@ class GrampsPreferences(ConfigureDialog):
|
|||||||
|
|
||||||
return _('Dates'), table
|
return _('Dates'), table
|
||||||
|
|
||||||
def add_behavior_panel(self):
|
def add_behavior_panel(self, configdialog):
|
||||||
table = gtk.Table(3, 8)
|
table = gtk.Table(3, 6)
|
||||||
table.set_border_width(12)
|
table.set_border_width(12)
|
||||||
table.set_col_spacings(6)
|
table.set_col_spacings(6)
|
||||||
table.set_row_spacings(6)
|
table.set_row_spacings(6)
|
||||||
@ -992,27 +941,21 @@ class GrampsPreferences(ConfigureDialog):
|
|||||||
self.add_checkbox(table,
|
self.add_checkbox(table,
|
||||||
_('Display Tip of the Day'),
|
_('Display Tip of the Day'),
|
||||||
2, 'behavior.use-tips')
|
2, 'behavior.use-tips')
|
||||||
self.add_checkbox(table,
|
|
||||||
_('Use shading in Relationship View'),
|
|
||||||
3, 'preferences.relation-shade')
|
|
||||||
self.add_checkbox(table,
|
|
||||||
_('Display edit buttons on Relationship View'),
|
|
||||||
4, 'interface.releditbtn')
|
|
||||||
self.add_checkbox(table,
|
self.add_checkbox(table,
|
||||||
_('Remember last view displayed'),
|
_('Remember last view displayed'),
|
||||||
5, 'preferences.use-last-view')
|
3, 'preferences.use-last-view')
|
||||||
self.add_pos_int_entry(table,
|
self.add_pos_int_entry(table,
|
||||||
_('Max generations for relationships'),
|
_('Max generations for relationships'),
|
||||||
6, 'behavior.generation-depth', self.update_gen_depth)
|
4, 'behavior.generation-depth', self.update_gen_depth)
|
||||||
self.path_entry = gtk.Entry()
|
self.path_entry = gtk.Entry()
|
||||||
self.add_path_box(table,
|
self.add_path_box(table,
|
||||||
_('Base path for relative media paths'),
|
_('Base path for relative media paths'),
|
||||||
7, self.path_entry, self.dbstate.db.get_mediapath(),
|
5, self.path_entry, self.dbstate.db.get_mediapath(),
|
||||||
self.set_mediapath, self.select_mediapath)
|
self.set_mediapath, self.select_mediapath)
|
||||||
|
|
||||||
return _('General'), table
|
return _('General'), table
|
||||||
|
|
||||||
def add_database_panel(self):
|
def add_database_panel(self, configdialog):
|
||||||
table = gtk.Table(2, 2)
|
table = gtk.Table(2, 2)
|
||||||
table.set_border_width(12)
|
table.set_border_width(12)
|
||||||
table.set_col_spacings(6)
|
table.set_col_spacings(6)
|
||||||
|
@ -1077,7 +1077,7 @@ class ListView(NavigationView):
|
|||||||
|
|
||||||
:return: list of functions
|
:return: list of functions
|
||||||
"""
|
"""
|
||||||
def columnpage():
|
def columnpage(configdialog):
|
||||||
return _('Columns'), ColumnOrder(self._config, self.COLUMN_NAMES,
|
return _('Columns'), ColumnOrder(self._config, self.COLUMN_NAMES,
|
||||||
self.set_column_order,
|
self.set_column_order,
|
||||||
tree=self.type_list()==LISTTREE)
|
tree=self.type_list()==LISTTREE)
|
||||||
|
@ -392,7 +392,7 @@ class PageView(DbGUIElement):
|
|||||||
def init_config(self):
|
def init_config(self):
|
||||||
"""
|
"""
|
||||||
If you need a view with a config, then call this method in the
|
If you need a view with a config, then call this method in the
|
||||||
build_tree method. It will set up a config file for the
|
build_widget or __init__ method. It will set up a config file for the
|
||||||
view, and use CONFIGSETTINGS to set the config defaults.
|
view, and use CONFIGSETTINGS to set the config defaults.
|
||||||
The config is later accessbile via self._config
|
The config is later accessbile via self._config
|
||||||
So you can do
|
So you can do
|
||||||
|
@ -47,7 +47,6 @@ import pango
|
|||||||
# Gramps modules
|
# Gramps modules
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
import config
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@ -71,27 +70,44 @@ def realize_cb(widget):
|
|||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
class LinkLabel(gtk.EventBox):
|
class LinkLabel(gtk.EventBox):
|
||||||
|
|
||||||
def __init__(self, label, func, handle, decoration=None):
|
def __init__(self, label, func, handle, emph=False, theme="CLASSIC"):
|
||||||
if decoration is None:
|
self.theme = theme
|
||||||
relation_display_theme = config.get('preferences.relation-display-theme')
|
self.emph = emph
|
||||||
if relation_display_theme == "CLASSIC":
|
if emph:
|
||||||
decoration = 'underline="single"'
|
#emphasize a link
|
||||||
elif relation_display_theme == "WEBPAGE":
|
if theme == "CLASSIC":
|
||||||
decoration = 'foreground="blue"'
|
format = 'underline="single" weight="heavy" style="italic"'
|
||||||
|
elif theme == "WEBPAGE":
|
||||||
|
format = 'foreground="blue" weight="heavy"'
|
||||||
else:
|
else:
|
||||||
raise AttributeError("invalid relation-display-theme: '%s'" % relation_display_theme)
|
raise AttributeError("invalid theme: '%s'" % theme)
|
||||||
|
elif emph is None:
|
||||||
|
#emphasize, but not a link
|
||||||
|
if theme == "CLASSIC":
|
||||||
|
format = 'weight="heavy"'
|
||||||
|
elif theme == "WEBPAGE":
|
||||||
|
format = 'weight="heavy"'
|
||||||
|
else:
|
||||||
|
raise AttributeError("invalid theme: '%s'" % theme)
|
||||||
|
else:
|
||||||
|
#no emphasize, a link
|
||||||
|
if theme == "CLASSIC":
|
||||||
|
format = 'underline="single"'
|
||||||
|
elif theme == "WEBPAGE":
|
||||||
|
format = 'foreground="blue"'
|
||||||
|
else:
|
||||||
|
raise AttributeError("invalid theme: '%s'" % theme)
|
||||||
|
|
||||||
gtk.EventBox.__init__(self)
|
gtk.EventBox.__init__(self)
|
||||||
self.orig_text = cgi.escape(label[0])
|
self.orig_text = cgi.escape(label[0])
|
||||||
self.gender = label[1]
|
self.gender = label[1]
|
||||||
self.decoration = decoration
|
self.decoration = format
|
||||||
text = '<span %s>%s</span>' % (self.decoration, self.orig_text)
|
text = '<span %s>%s</span>' % (self.decoration, self.orig_text)
|
||||||
|
|
||||||
if func:
|
if func:
|
||||||
msg = _('Click to make this person active\n'
|
msg = _('Click to make this person active\n'
|
||||||
'Right click to display the edit menu')
|
'Right click to display the edit menu\n'
|
||||||
if not config.get('interface.releditbtn'):
|
'Click Edit icon (enable in configuration dialog) to edit')
|
||||||
msg += "\n" + _('Edit icons can be enabled in the Preferences dialog')
|
|
||||||
|
|
||||||
self.set_tooltip_text(msg)
|
self.set_tooltip_text(msg)
|
||||||
|
|
||||||
@ -116,13 +132,34 @@ class LinkLabel(gtk.EventBox):
|
|||||||
self.label.set_padding(x, y)
|
self.label.set_padding(x, y)
|
||||||
|
|
||||||
def enter_text(self, obj, event, handle):
|
def enter_text(self, obj, event, handle):
|
||||||
relation_display_theme = config.get('preferences.relation-display-theme')
|
if self.emph:
|
||||||
if relation_display_theme == "CLASSIC":
|
#emphasize a link
|
||||||
text = '<span foreground="blue" %s>%s</span>' % (self.decoration, self.orig_text)
|
if self.theme == "CLASSIC":
|
||||||
elif relation_display_theme == "WEBPAGE":
|
format = 'foreground="blue" underline="single" '\
|
||||||
text = '<span underline="single" %s>%s</span>' % (self.decoration, self.orig_text)
|
'weight="heavy" style="italic"'
|
||||||
|
elif self.theme == "WEBPAGE":
|
||||||
|
format = 'underline="single" foreground="blue" '\
|
||||||
|
'weight="heavy"'
|
||||||
|
else:
|
||||||
|
raise AttributeError("invalid theme: '%s'" % theme)
|
||||||
|
elif self.emph is None:
|
||||||
|
# no link, no change on enter_text
|
||||||
|
if self.theme == "CLASSIC":
|
||||||
|
format = 'weight="heavy"'
|
||||||
|
elif self.theme == "WEBPAGE":
|
||||||
|
format = 'weight="heavy"'
|
||||||
|
else:
|
||||||
|
raise AttributeError("invalid theme: '%s'" % theme)
|
||||||
else:
|
else:
|
||||||
raise AttributeError("invalid relation-display-theme: '%s'" % relation_display_theme)
|
#no emphasize, a link
|
||||||
|
if self.theme == "CLASSIC":
|
||||||
|
format = 'foreground="blue" underline="single"'
|
||||||
|
elif self.theme == "WEBPAGE":
|
||||||
|
format = 'underline="single" foreground="blue"'
|
||||||
|
else:
|
||||||
|
raise AttributeError("invalid theme: '%s'" % theme)
|
||||||
|
|
||||||
|
text = '<span %s>%s</span>' % (format, self.orig_text)
|
||||||
self.label.set_text(text)
|
self.label.set_text(text)
|
||||||
self.label.set_use_markup(True)
|
self.label.set_use_markup(True)
|
||||||
|
|
||||||
|
@ -115,6 +115,18 @@ class AttachList(object):
|
|||||||
self.max_y = max(self.max_y, y1)
|
self.max_y = max(self.max_y, y1)
|
||||||
|
|
||||||
class RelationshipView(NavigationView):
|
class RelationshipView(NavigationView):
|
||||||
|
"""
|
||||||
|
View showing a textual representation of the relationships of the
|
||||||
|
active person
|
||||||
|
"""
|
||||||
|
#settings in the config file
|
||||||
|
CONFIGSETTINGS = (
|
||||||
|
('preferences.family-siblings', True),
|
||||||
|
('preferences.family-details', True),
|
||||||
|
('preferences.relation-display-theme', "CLASSIC"),
|
||||||
|
('preferences.relation-shade', True),
|
||||||
|
('preferences.releditbtn', True),
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(self, dbstate, uistate, nav_group=0):
|
def __init__(self, dbstate, uistate, nav_group=0):
|
||||||
NavigationView.__init__(self, _('Relationships'),
|
NavigationView.__init__(self, _('Relationships'),
|
||||||
@ -128,22 +140,12 @@ class RelationshipView(NavigationView):
|
|||||||
}
|
}
|
||||||
|
|
||||||
dbstate.connect('database-changed', self.change_db)
|
dbstate.connect('database-changed', self.change_db)
|
||||||
self.show_siblings = config.get('preferences.family-siblings')
|
|
||||||
self.show_details = config.get('preferences.family-details')
|
|
||||||
self.redrawing = False
|
self.redrawing = False
|
||||||
self.use_shade = config.get('preferences.relation-shade')
|
|
||||||
self.toolbar_visible = config.get('interface.toolbar-on')
|
|
||||||
|
|
||||||
self.color = gtk.TextView().style.white
|
self.color = gtk.TextView().style.white
|
||||||
self.child = None
|
self.child = None
|
||||||
self.old_handle = None
|
self.old_handle = None
|
||||||
|
|
||||||
config.connect("preferences.relation-shade",
|
|
||||||
self.shade_update)
|
|
||||||
config.connect("interface.releditbtn",
|
|
||||||
self.config_update)
|
|
||||||
config.connect("interface.toolbar-on",
|
|
||||||
self.shade_update)
|
|
||||||
self.reorder_sensitive = False
|
self.reorder_sensitive = False
|
||||||
self.collapsed_items = {}
|
self.collapsed_items = {}
|
||||||
|
|
||||||
@ -167,11 +169,35 @@ class RelationshipView(NavigationView):
|
|||||||
def navigation_type(self):
|
def navigation_type(self):
|
||||||
return 'Person'
|
return 'Person'
|
||||||
|
|
||||||
|
def can_configure(self):
|
||||||
|
"""
|
||||||
|
See :class:`~gui.views.pageview.PageView
|
||||||
|
:return: bool
|
||||||
|
"""
|
||||||
|
return True
|
||||||
|
|
||||||
|
def on_delete(self):
|
||||||
|
self._config.save()
|
||||||
|
NavigationView.on_delete(self)
|
||||||
|
|
||||||
|
def set_ident(self, ident):
|
||||||
|
"""
|
||||||
|
Set the id of the view. This is an unique ident
|
||||||
|
We use this to create immediately the config file with this ident.
|
||||||
|
"""
|
||||||
|
NavigationView.set_ident(self, ident)
|
||||||
|
self.init_config()
|
||||||
|
self.show_siblings = self._config.get('preferences.family-siblings')
|
||||||
|
self.show_details = self._config.get('preferences.family-details')
|
||||||
|
self.use_shade = self._config.get('preferences.relation-shade')
|
||||||
|
self.theme = self._config.get('preferences.relation-display-theme')
|
||||||
|
self.toolbar_visible = config.get('interface.toolbar-on')
|
||||||
|
|
||||||
def goto_handle(self, handle):
|
def goto_handle(self, handle):
|
||||||
self.change_person(handle)
|
self.change_person(handle)
|
||||||
|
|
||||||
def shade_update(self, client, cnxn_id, entry, data):
|
def shade_update(self, client, cnxn_id, entry, data):
|
||||||
self.use_shade = config.get('preferences.relation-shade')
|
self.use_shade = self._config.get('preferences.relation-shade')
|
||||||
self.toolbar_visible = config.get('interface.toolbar-on')
|
self.toolbar_visible = config.get('interface.toolbar-on')
|
||||||
self.uistate.modify_statusbar(self.dbstate)
|
self.uistate.modify_statusbar(self.dbstate)
|
||||||
self.redraw()
|
self.redraw()
|
||||||
@ -251,7 +277,10 @@ class RelationshipView(NavigationView):
|
|||||||
return 'gramps-relation'
|
return 'gramps-relation'
|
||||||
|
|
||||||
def build_widget(self):
|
def build_widget(self):
|
||||||
|
"""
|
||||||
|
Build the widget that contains the view, see
|
||||||
|
:class:`~gui.views.pageview.PageView
|
||||||
|
"""
|
||||||
container = gtk.VBox()
|
container = gtk.VBox()
|
||||||
container.set_border_width(12)
|
container.set_border_width(12)
|
||||||
|
|
||||||
@ -394,12 +423,12 @@ class RelationshipView(NavigationView):
|
|||||||
def siblings_toggle(self, obj):
|
def siblings_toggle(self, obj):
|
||||||
self.show_siblings = obj.get_active()
|
self.show_siblings = obj.get_active()
|
||||||
self.change_person(self.get_active())
|
self.change_person(self.get_active())
|
||||||
config.set('preferences.family-siblings', self.show_siblings)
|
self._config.set('preferences.family-siblings', self.show_siblings)
|
||||||
|
|
||||||
def details_toggle(self, obj):
|
def details_toggle(self, obj):
|
||||||
self.show_details = obj.get_active()
|
self.show_details = obj.get_active()
|
||||||
self.change_person(self.get_active())
|
self.change_person(self.get_active())
|
||||||
config.set('preferences.family-details', self.show_details)
|
self._config.set('preferences.family-details', self.show_details)
|
||||||
|
|
||||||
def change_db(self, db):
|
def change_db(self, db):
|
||||||
#reset the connects
|
#reset the connects
|
||||||
@ -556,7 +585,7 @@ class RelationshipView(NavigationView):
|
|||||||
text = fmt % cgi.escape(name)
|
text = fmt % cgi.escape(name)
|
||||||
label = widgets.DualMarkupLabel(text, _GenderCode[person.gender],
|
label = widgets.DualMarkupLabel(text, _GenderCode[person.gender],
|
||||||
x_align=1, y_align=0)
|
x_align=1, y_align=0)
|
||||||
if config.get('interface.releditbtn'):
|
if self._config.get('preferences.releditbtn'):
|
||||||
button = widgets.IconButton(self.edit_button_press,
|
button = widgets.IconButton(self.edit_button_press,
|
||||||
person.handle)
|
person.handle)
|
||||||
button.set_tooltip_text(_('Edit %s') % name)
|
button.set_tooltip_text(_('Edit %s') % name)
|
||||||
@ -946,10 +975,11 @@ class RelationshipView(NavigationView):
|
|||||||
initial_name = False
|
initial_name = False
|
||||||
if handle:
|
if handle:
|
||||||
name = self.get_name(handle, True)
|
name = self.get_name(handle, True)
|
||||||
link_label = widgets.LinkLabel(name, self._button_press, handle)
|
link_label = widgets.LinkLabel(name, self._button_press,
|
||||||
|
handle, theme=self.theme)
|
||||||
if self.use_shade:
|
if self.use_shade:
|
||||||
link_label.modify_bg(gtk.STATE_NORMAL, self.color)
|
link_label.modify_bg(gtk.STATE_NORMAL, self.color)
|
||||||
if config.get('interface.releditbtn'):
|
if self._config.get('preferences.releditbtn'):
|
||||||
button = widgets.IconButton(self.edit_button_press,
|
button = widgets.IconButton(self.edit_button_press,
|
||||||
handle)
|
handle)
|
||||||
button.set_tooltip_text(_('Edit %s') % name[0])
|
button.set_tooltip_text(_('Edit %s') % name[0])
|
||||||
@ -975,7 +1005,7 @@ class RelationshipView(NavigationView):
|
|||||||
|
|
||||||
label = widgets.MarkupLabel(format % cgi.escape(title),
|
label = widgets.MarkupLabel(format % cgi.escape(title),
|
||||||
x_align=1, y_align=0)
|
x_align=1, y_align=0)
|
||||||
if config.get('interface.releditbtn'):
|
if self._config.get('preferences.releditbtn'):
|
||||||
label.set_padding(0, 5)
|
label.set_padding(0, 5)
|
||||||
self.attach.attach(label, _PLABEL_START, _PLABEL_STOP, self.row,
|
self.attach.attach(label, _PLABEL_START, _PLABEL_STOP, self.row,
|
||||||
self.row+1, xoptions=gtk.FILL|gtk.SHRINK,
|
self.row+1, xoptions=gtk.FILL|gtk.SHRINK,
|
||||||
@ -988,22 +1018,17 @@ class RelationshipView(NavigationView):
|
|||||||
person = self.dbstate.db.get_person_from_handle(handle)
|
person = self.dbstate.db.get_person_from_handle(handle)
|
||||||
parent = len(person.get_parent_family_handle_list()) > 0
|
parent = len(person.get_parent_family_handle_list()) > 0
|
||||||
format = ''
|
format = ''
|
||||||
relation_display_theme = config.get('preferences.relation-display-theme')
|
relation_display_theme = self._config.get(
|
||||||
|
'preferences.relation-display-theme')
|
||||||
if parent:
|
if parent:
|
||||||
if relation_display_theme == "CLASSIC":
|
emph = True
|
||||||
format = 'underline="single" weight="heavy" style="italic"'
|
|
||||||
elif relation_display_theme == "WEBPAGE":
|
|
||||||
format = 'foreground="blue" weight="heavy"'
|
|
||||||
else:
|
else:
|
||||||
if relation_display_theme == "CLASSIC":
|
emph = False
|
||||||
format = 'underline="single"'
|
|
||||||
elif relation_display_theme == "WEBPAGE":
|
|
||||||
format = 'foreground="blue"'
|
|
||||||
link_label = widgets.LinkLabel(name, self._button_press,
|
link_label = widgets.LinkLabel(name, self._button_press,
|
||||||
handle, format)
|
handle, emph, theme=self.theme)
|
||||||
if self.use_shade:
|
if self.use_shade:
|
||||||
link_label.modify_bg(gtk.STATE_NORMAL, self.color)
|
link_label.modify_bg(gtk.STATE_NORMAL, self.color)
|
||||||
if config.get('interface.releditbtn'):
|
if self._config.get('preferences.releditbtn'):
|
||||||
button = widgets.IconButton(self.edit_button_press, handle)
|
button = widgets.IconButton(self.edit_button_press, handle)
|
||||||
button.set_tooltip_text(_('Edit %s') % name[0])
|
button.set_tooltip_text(_('Edit %s') % name[0])
|
||||||
else:
|
else:
|
||||||
@ -1038,7 +1063,7 @@ class RelationshipView(NavigationView):
|
|||||||
|
|
||||||
lbl = widgets.MarkupLabel(format % cgi.escape(title),
|
lbl = widgets.MarkupLabel(format % cgi.escape(title),
|
||||||
x_align=1, y_align=.5)
|
x_align=1, y_align=.5)
|
||||||
if config.get('interface.releditbtn'):
|
if self._config.get('preferences.releditbtn'):
|
||||||
lbl.set_padding(0, 5)
|
lbl.set_padding(0, 5)
|
||||||
return lbl
|
return lbl
|
||||||
|
|
||||||
@ -1061,23 +1086,15 @@ class RelationshipView(NavigationView):
|
|||||||
self.dbstate.db.get_person_from_handle(handle))
|
self.dbstate.db.get_person_from_handle(handle))
|
||||||
|
|
||||||
format = ''
|
format = ''
|
||||||
relation_display_theme = config.get('preferences.relation-display-theme')
|
relation_display_theme = self._config.get(
|
||||||
|
'preferences.relation-display-theme')
|
||||||
|
emph = False
|
||||||
if child_should_be_linked and parent:
|
if child_should_be_linked and parent:
|
||||||
if relation_display_theme == "CLASSIC":
|
emph = True
|
||||||
format = 'underline="single" weight="heavy" style="italic"'
|
|
||||||
elif relation_display_theme == "WEBPAGE":
|
|
||||||
format = 'foreground="blue" weight="heavy"'
|
|
||||||
else:
|
|
||||||
raise AttributeError("invalid relation-display-theme: '%s'" % relation_display_theme)
|
|
||||||
elif child_should_be_linked and not parent:
|
elif child_should_be_linked and not parent:
|
||||||
if relation_display_theme == "CLASSIC":
|
emph = False
|
||||||
format = 'underline="single"'
|
|
||||||
elif relation_display_theme == "WEBPAGE":
|
|
||||||
format = 'foreground="blue"'
|
|
||||||
else:
|
|
||||||
raise AttributeError("invalid relation-display-theme: '%s'" % relation_display_theme)
|
|
||||||
elif parent and not child_should_be_linked:
|
elif parent and not child_should_be_linked:
|
||||||
format = 'weight="heavy"'
|
emph = None
|
||||||
|
|
||||||
if child_should_be_linked:
|
if child_should_be_linked:
|
||||||
link_func = self._button_press
|
link_func = self._button_press
|
||||||
@ -1085,12 +1102,14 @@ class RelationshipView(NavigationView):
|
|||||||
link_func = None
|
link_func = None
|
||||||
|
|
||||||
name = self.get_name(handle, True)
|
name = self.get_name(handle, True)
|
||||||
link_label = widgets.LinkLabel(name, link_func, handle, format)
|
link_label = widgets.LinkLabel(name, link_func, handle, emph,
|
||||||
|
theme=self.theme)
|
||||||
|
|
||||||
if self.use_shade:
|
if self.use_shade:
|
||||||
link_label.modify_bg(gtk.STATE_NORMAL, self.color)
|
link_label.modify_bg(gtk.STATE_NORMAL, self.color)
|
||||||
link_label.set_padding(3, 0)
|
link_label.set_padding(3, 0)
|
||||||
if child_should_be_linked and config.get('interface.releditbtn'):
|
if child_should_be_linked and self._config.get(
|
||||||
|
'preferences.releditbtn'):
|
||||||
button = widgets.IconButton(self.edit_button_press, handle)
|
button = widgets.IconButton(self.edit_button_press, handle)
|
||||||
button.set_tooltip_text(_('Edit %s') % name[0])
|
button.set_tooltip_text(_('Edit %s') % name[0])
|
||||||
else:
|
else:
|
||||||
@ -1580,6 +1599,66 @@ class RelationshipView(NavigationView):
|
|||||||
except Errors.WindowActiveError:
|
except Errors.WindowActiveError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def config_connect(self):
|
||||||
|
"""
|
||||||
|
Overwriten from :class:`~gui.views.pageview.PageView method
|
||||||
|
This method will be called after the ini file is initialized,
|
||||||
|
use it to monitor changes in the ini file
|
||||||
|
"""
|
||||||
|
self._config.connect("preferences.relation-shade",
|
||||||
|
self.shade_update)
|
||||||
|
self._config.connect("preferences.releditbtn",
|
||||||
|
self.config_update)
|
||||||
|
self._config.connect("preferences.relation-display-theme",
|
||||||
|
self.config_update)
|
||||||
|
config.connect("interface.toolbar-on",
|
||||||
|
self.shade_update)
|
||||||
|
|
||||||
|
def config_panel(self, configdialog):
|
||||||
|
"""
|
||||||
|
Function that builds the widget in the configuration dialog
|
||||||
|
"""
|
||||||
|
table = gtk.Table(3, 2)
|
||||||
|
table.set_border_width(12)
|
||||||
|
table.set_col_spacings(6)
|
||||||
|
table.set_row_spacings(6)
|
||||||
|
|
||||||
|
configdialog.add_checkbox(table,
|
||||||
|
_('Use shading'),
|
||||||
|
0, 'preferences.relation-shade')
|
||||||
|
configdialog.add_checkbox(table,
|
||||||
|
_('Display edit buttons'),
|
||||||
|
1, 'preferences.releditbtn')
|
||||||
|
checkbox = gtk.CheckButton(_('View links as website links'))
|
||||||
|
theme = self._config.get('preferences.relation-display-theme')
|
||||||
|
checkbox.set_active(theme == 'WEBPAGE')
|
||||||
|
checkbox.connect('toggled', self._config_update_theme)
|
||||||
|
table.attach(checkbox, 1, 9, 2, 3, yoptions=0)
|
||||||
|
|
||||||
|
return _('Layout'), table
|
||||||
|
|
||||||
|
def _config_update_theme(self, obj):
|
||||||
|
"""
|
||||||
|
callback from the theme checkbox
|
||||||
|
"""
|
||||||
|
if obj.get_active():
|
||||||
|
self.theme = 'WEBPAGE'
|
||||||
|
self._config.set('preferences.relation-display-theme',
|
||||||
|
'WEBPAGE')
|
||||||
|
else:
|
||||||
|
self.theme = 'CLASSIC'
|
||||||
|
self._config.set('preferences.relation-display-theme',
|
||||||
|
'CLASSIC')
|
||||||
|
|
||||||
|
def _get_configure_page_funcs(self):
|
||||||
|
"""
|
||||||
|
Return a list of functions that create gtk elements to use in the
|
||||||
|
notebook pages of the Configure dialog
|
||||||
|
|
||||||
|
:return: list of functions
|
||||||
|
"""
|
||||||
|
return [self.config_panel]
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# Function to return if person has children
|
# Function to return if person has children
|
||||||
|
Loading…
Reference in New Issue
Block a user