2007-12-09 Douglas S. Blank <dblank@cs.brynmawr.edu>
* src/GrampsCfg.py: Rearranged name display preference settings * src/BasicUtils/_NameDisplay.py: allow title-case name patterns svn: r9476
This commit is contained in:
parent
30e224ff35
commit
a297361898
@ -1,3 +1,7 @@
|
||||
2007-12-09 Douglas S. Blank <dblank@cs.brynmawr.edu>
|
||||
* src/GrampsCfg.py: Rearranged name display preference settings
|
||||
* src/BasicUtils/_NameDisplay.py: allow title-case name patterns
|
||||
|
||||
2007-12-09 Benny Malengier <benny.malengier@gramps-project.org>
|
||||
* src/gen/db/dbdir.py: always use db.DB_RECOVER
|
||||
|
||||
|
@ -343,6 +343,7 @@ class NameDisplay:
|
||||
for (code, ikeyword) in d_keys:
|
||||
exp, keyword, ikeyword = d[code]
|
||||
format_str = format_str.replace(ikeyword,"%"+ code)
|
||||
format_str = format_str.replace(ikeyword.title(),"%"+ code)
|
||||
format_str = format_str.replace(ikeyword.upper(),"%"+ code.upper())
|
||||
# Next, go through and do key-word replacement.
|
||||
# Just replace keywords with
|
||||
@ -353,6 +354,7 @@ class NameDisplay:
|
||||
for (code, keyword) in d_keys:
|
||||
exp, keyword, ikeyword = d[code]
|
||||
format_str = format_str.replace(keyword,"%"+ code)
|
||||
format_str = format_str.replace(keyword.title(),"%"+ code)
|
||||
format_str = format_str.replace(keyword.upper(),"%"+ code.upper())
|
||||
# Get lower and upper versions of codes:
|
||||
codes = d.keys() + [c.upper() for c in d.keys()]
|
||||
|
163
src/GrampsCfg.py
163
src/GrampsCfg.py
@ -102,23 +102,35 @@ def get_researcher():
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class DisplayNameEditor(ManagedWindow.ManagedWindow):
|
||||
def __init__(self, uistate, dbstate, track, dialog):
|
||||
ManagedWindow.ManagedWindow.__init__(self, uistate, [], DisplayNameEditor)
|
||||
self.dialog = dialog
|
||||
self.dbstate = dbstate
|
||||
self.set_window(
|
||||
gtk.Dialog(_('Display Name Editor'),
|
||||
flags=gtk.DIALOG_NO_SEPARATOR,
|
||||
buttons=(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)),
|
||||
None, _('Display Name Editor'), None)
|
||||
table = self.dialog._build_custom_name_ui()
|
||||
self.window.vbox.add(table)
|
||||
self.window.set_default_size(600, 300)
|
||||
self.window.connect('response', self.close)
|
||||
self.show()
|
||||
def build_menu_names(self, obj):
|
||||
return (_(" Name Editor"), _("Preferences"))
|
||||
|
||||
class GrampsPreferences(ManagedWindow.ManagedWindow):
|
||||
def __init__(self, uistate, dbstate):
|
||||
|
||||
ManagedWindow.ManagedWindow.__init__(self, uistate, [], GrampsPreferences)
|
||||
|
||||
self.dbstate = dbstate
|
||||
|
||||
ManagedWindow.ManagedWindow.__init__(self, uistate, [], GrampsPreferences)
|
||||
self.set_window(
|
||||
gtk.Dialog(_('Preferences'),
|
||||
flags=gtk.DIALOG_NO_SEPARATOR,
|
||||
buttons=(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)),
|
||||
None, _('Preferences'), None)
|
||||
|
||||
panel = gtk.Notebook()
|
||||
|
||||
self.original = Config.get(Config.TRANSACTIONS)
|
||||
|
||||
self.window.vbox.add(panel)
|
||||
self.window.connect('response', self.done)
|
||||
panel.append_page(self.add_behavior_panel(),
|
||||
@ -127,8 +139,8 @@ class GrampsPreferences(ManagedWindow.ManagedWindow):
|
||||
MarkupLabel(_('Database')))
|
||||
panel.append_page(self.add_formats_panel(),
|
||||
MarkupLabel(_('Display')))
|
||||
panel.append_page(self.add_name_panel(),
|
||||
MarkupLabel(_('Name Display')))
|
||||
#panel.append_page(self.add_name_panel(),
|
||||
# MarkupLabel(_('Name Display')))
|
||||
panel.append_page(self.add_prefix_panel(),
|
||||
MarkupLabel(_('ID Formats')))
|
||||
panel.append_page(self.add_advanced_panel(),
|
||||
@ -137,7 +149,6 @@ class GrampsPreferences(ManagedWindow.ManagedWindow):
|
||||
MarkupLabel(_('Researcher')))
|
||||
panel.append_page(self.add_color_panel(),
|
||||
MarkupLabel(_('Marker Colors')))
|
||||
|
||||
self.window.show_all()
|
||||
self.show()
|
||||
|
||||
@ -303,6 +314,54 @@ class GrampsPreferences(ManagedWindow.ManagedWindow):
|
||||
|
||||
return name_format_model, the_index
|
||||
|
||||
def __new_name(self, obj):
|
||||
f = _("%s, %s (%s)" % (_("Surname"),
|
||||
_("Given"),
|
||||
_("Common"),
|
||||
))
|
||||
i = _nd.add_name_format(f.title(), f)
|
||||
node = self.fmt_model.append(row=[i, f.title(), f,
|
||||
_nd.format_str(self.examplename, f)])
|
||||
path = self.fmt_model.get_path(node)
|
||||
self.format_list.set_cursor(path,
|
||||
focus_column=self.name_column,
|
||||
start_editing=True)
|
||||
|
||||
def __edit_name(self, obj):
|
||||
store, node = self.format_list.get_selection().get_selected()
|
||||
path = self.fmt_model.get_path(node)
|
||||
self.format_list.set_cursor(path,
|
||||
focus_column=self.name_column,
|
||||
start_editing=True)
|
||||
|
||||
def __change_name(self, text, path, new_text):
|
||||
"""
|
||||
If the new string is empty, do nothing. Otherwise, renaming the
|
||||
database is simply changing the contents of the name file.
|
||||
"""
|
||||
if len(new_text) > 0 and text != new_text:
|
||||
num, name, fmt = self.selected_fmt[COL_NUM:COL_EXPL]
|
||||
node = self.fmt_model.get_iter(path)
|
||||
oldname = self.fmt_model.get_value(node, COL_NAME)
|
||||
#self.fmt_model.set_value(node, COL_NAME, new_text)
|
||||
exmpl = _nd.format_str(self.examplename, new_text)
|
||||
self.fmt_model.set(self.iter, COL_NAME, new_text.title(),
|
||||
COL_FMT, new_text,
|
||||
COL_EXPL, exmpl)
|
||||
self.selected_fmt = (num, new_text.title(), new_text, exmpl)
|
||||
_nd.edit_name_format(num, new_text.title(), new_text)
|
||||
self.dbstate.db.name_formats = _nd.get_name_format(only_custom=True,
|
||||
only_active=False)
|
||||
|
||||
def __format_change(self, obj):
|
||||
try:
|
||||
t = (_nd.format_str(self.name, escape(obj.get_text())))
|
||||
self.valid = True
|
||||
except NameDisplayError:
|
||||
t = _("Invalid or incomplete format definition")
|
||||
self.valid = False
|
||||
self.fmt_model.set(self.iter, COL_EXPL, t)
|
||||
|
||||
def _build_custom_name_ui(self):
|
||||
"""
|
||||
UI to manage the custom name formats
|
||||
@ -319,6 +378,8 @@ class GrampsPreferences(ManagedWindow.ManagedWindow):
|
||||
name_column = gtk.TreeViewColumn(_('Format Name'),
|
||||
name_renderer,
|
||||
text=COL_NAME)
|
||||
name_renderer.set_property('editable', True)
|
||||
name_renderer.connect('edited', self.__change_name)
|
||||
format_tree.append_column(name_column)
|
||||
example_renderer = gtk.CellRendererText()
|
||||
example_column = gtk.TreeViewColumn(_('Example'),
|
||||
@ -341,10 +402,12 @@ class GrampsPreferences(ManagedWindow.ManagedWindow):
|
||||
self.iter = None
|
||||
|
||||
insert_button = gtk.Button(stock=gtk.STOCK_ADD)
|
||||
insert_button.connect('clicked', self.cb_insert_fmt_str)
|
||||
insert_button.connect('clicked', self.__new_name)
|
||||
#self.cb_insert_fmt_str)
|
||||
|
||||
self.edit_button = gtk.Button(stock=gtk.STOCK_EDIT)
|
||||
self.edit_button.connect('clicked', self.cb_edit_fmt_str)
|
||||
self.edit_button.connect('clicked', self.__edit_name)
|
||||
#self.cb_edit_fmt_str)
|
||||
self.edit_button.set_sensitive(False)
|
||||
|
||||
self.remove_button = gtk.Button(stock=gtk.STOCK_REMOVE)
|
||||
@ -354,7 +417,8 @@ class GrampsPreferences(ManagedWindow.ManagedWindow):
|
||||
table.attach(insert_button, 0, 1, 1, 2, yoptions=0)
|
||||
table.attach(self.remove_button, 1, 2, 1, 2, yoptions=0)
|
||||
table.attach(self.edit_button, 2, 3, 1, 2, yoptions=0)
|
||||
|
||||
self.format_list = format_tree
|
||||
self.name_column = name_column
|
||||
return table
|
||||
|
||||
def cb_name_changed(self, obj):
|
||||
@ -437,26 +501,62 @@ class GrampsPreferences(ManagedWindow.ManagedWindow):
|
||||
only_active=False)
|
||||
|
||||
def add_formats_panel(self):
|
||||
table = gtk.Table(3, 8)
|
||||
row = 0
|
||||
table = gtk.Table(4, 8)
|
||||
table.set_border_width(12)
|
||||
table.set_col_spacings(6)
|
||||
table.set_row_spacings(6)
|
||||
|
||||
# Display name:
|
||||
self.examplename = Name()
|
||||
self.examplename.set_title('Dr.')
|
||||
self.examplename.set_first_name('Edwin')
|
||||
self.examplename.set_surname_prefix('Rev.')
|
||||
self.examplename.set_surname('Smith')
|
||||
self.examplename.set_suffix('Sr')
|
||||
self.examplename.set_patronymic('Patronymic')
|
||||
self.examplename.set_call_name('Ed')
|
||||
# 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: " % _('Name format'))
|
||||
lwidget.set_use_underline(True)
|
||||
lwidget.set_mnemonic_widget(self.fmt_obox)
|
||||
hbox = gtk.HBox()
|
||||
btn = gtk.Button("%s..." % _('Edit') )
|
||||
btn.connect('clicked', self.cb_name_dialog)
|
||||
hbox.pack_start(self.fmt_obox, expand=True, fill=True)
|
||||
hbox.pack_start(btn, expand=False, fill=False)
|
||||
table.attach(lwidget, 0, 1, row, row+1, yoptions=0)
|
||||
table.attach(hbox, 1, 3, row, row+1, yoptions=0)
|
||||
row += 1
|
||||
|
||||
# Date format:
|
||||
obox = gtk.combo_box_new_text()
|
||||
formats = DateHandler.get_date_formats()
|
||||
for item in formats:
|
||||
obox.append_text(item)
|
||||
|
||||
active = Config.get(Config.DATE_FORMAT)
|
||||
if active >= len(formats):
|
||||
active = 0
|
||||
obox.set_active(active)
|
||||
obox.connect('changed', self.date_format_changed)
|
||||
|
||||
lwidget = BasicLabel("%s: " % _('Date format'))
|
||||
table.attach(lwidget, 0, 1, 0, 1, yoptions=0)
|
||||
table.attach(obox, 1, 3, 0, 1, yoptions=0)
|
||||
table.attach(lwidget, 0, 1, row, row+1, yoptions=0)
|
||||
table.attach(obox, 1, 3, row, row+1, yoptions=0)
|
||||
row += 1
|
||||
|
||||
# Surname guessing:
|
||||
obox = gtk.combo_box_new_text()
|
||||
formats = _surname_styles
|
||||
for item in formats:
|
||||
@ -465,35 +565,39 @@ class GrampsPreferences(ManagedWindow.ManagedWindow):
|
||||
obox.connect('changed',
|
||||
lambda obj: Config.set(Config.SURNAME_GUESSING,
|
||||
obj.get_active()))
|
||||
|
||||
lwidget = BasicLabel("%s: " % _('Surname Guessing'))
|
||||
table.attach(lwidget, 0, 1, 1, 2, yoptions=0)
|
||||
table.attach(obox, 1, 3, 1, 2, yoptions=0)
|
||||
table.attach(lwidget, 0, 1, row, row+1, yoptions=0)
|
||||
table.attach(obox, 1, 3, row, row+1, yoptions=0)
|
||||
row += 1
|
||||
|
||||
# Status bar:
|
||||
obox = gtk.combo_box_new_text()
|
||||
formats = [_("Active person's name and ID"),
|
||||
_("Relationship to home person")]
|
||||
|
||||
for item in formats:
|
||||
obox.append_text(item)
|
||||
active = Config.get(Config.STATUSBAR)
|
||||
|
||||
if active < 2:
|
||||
obox.set_active(0)
|
||||
else:
|
||||
obox.set_active(1)
|
||||
obox.connect('changed',
|
||||
lambda obj: Config.set(Config.STATUSBAR, 2*obj.get_active()))
|
||||
|
||||
lwidget = BasicLabel("%s: " % _('Status bar'))
|
||||
table.attach(lwidget, 0, 1, 2, 3, yoptions=0)
|
||||
table.attach(obox, 1, 3, 2, 3, yoptions=0)
|
||||
table.attach(lwidget, 0, 1, row, row+1, yoptions=0)
|
||||
table.attach(obox, 1, 3, row, row+1, yoptions=0)
|
||||
row += 1
|
||||
|
||||
# Text in sidebar:
|
||||
self.add_checkbox(table, _("Show text in sidebar buttons (takes effect on restart)"),
|
||||
4, Config.SIDEBAR_TEXT)
|
||||
row, Config.SIDEBAR_TEXT)
|
||||
row += 1
|
||||
|
||||
return table
|
||||
|
||||
def cb_name_dialog(self, obj):
|
||||
win = DisplayNameEditor(self.uistate, self.dbstate, self.track, self)
|
||||
|
||||
def date_format_changed(self, obj):
|
||||
from QuestionDialog import OkDialog
|
||||
|
||||
@ -698,7 +802,8 @@ class NameFormatEditDlg:
|
||||
self.examplelabel = self.top.get_widget('example_label')
|
||||
|
||||
self.nameentry = self.top.get_widget('name_entry')
|
||||
self.nameentry.set_text(self.fmt_name)
|
||||
self.nameentry.set_text('<span weight="bold">%s</span>' % self.fmt_name)
|
||||
self.nameentry.set_use_markup(True)
|
||||
|
||||
self.formatentry = self.top.get_widget('format_entry')
|
||||
self.formatentry.connect('changed', self.cb_format_changed)
|
||||
@ -745,3 +850,5 @@ class NameFormatEditDlg:
|
||||
|
||||
self.examplelabel.set_text(sample)
|
||||
self.examplelabel.set_use_markup(True)
|
||||
self.nameentry.set_text('<span weight="bold">%s</span>' % obj.get_text().title())
|
||||
self.nameentry.set_use_markup(True)
|
||||
|
Loading…
Reference in New Issue
Block a user