diff --git a/src/Utils.py b/src/Utils.py index e2809088a..6474b84c4 100644 --- a/src/Utils.py +++ b/src/Utils.py @@ -1095,13 +1095,18 @@ def profile(func, *args): # keyword, code, translated standard, translated upper KEYWORDS = [("title", "t", _("Person|Title"), _("Person|TITLE")), ("given", "f", _("Given"), _("GIVEN")), - ("prefix", "p", _("Prefix"), _("PREFIX")), - ("surname", "l", _("Surname"), _("SURNAME")), + ("surname", "l", _("Surname"), _("SURNAME")), + ("call", "c", _("Name|Call"), _("Name|CALL")), + ("common", "x", _("Name|Common"), _("Name|COMMON")), + ("initials", "i", _("Initials"), _("INITIALS")), ("suffix", "s", _("Suffix"), _("SUFFIX")), - ("patronymic","y", _("Patronymic"),_("PATRONYMIC")), - ("call", "c", _("Call"), _("CALL")), - ("common", "x", _("Common"), _("COMMON")), - ("initials", "i", _("Initials"), _("INITIALS")) + ("rawsurnames", "q", _("Rawsurnames"), _("RAWSURNAMES")), + ("patronymic", "y", _("Patronymic"), _("PATRONYMIC")), + ("notpatronymic", "o", _("Notpatronymic"),_("NOTPATRONYMIC")), + ("primary", "m", _("Primary"), _("PRIMARY")), + ("prefix", "p", _("Prefix"), _("PREFIX")), + ("nickname", "n", _("Nickname"), _("NICKNAME")), + ("familynick", "g", _("Familynick"), _("FAMILYNICK")), ] KEY_TO_TRANS = {} TRANS_TO_KEY = {} diff --git a/src/gen/display/name.py b/src/gen/display/name.py index 9367249bb..087f241c3 100644 --- a/src/gen/display/name.py +++ b/src/gen/display/name.py @@ -31,7 +31,7 @@ Specific symbols for parts of a name are defined: 'c' : callname 'x' : callname if existing, otherwise first first name (common name) 'i' : initials of the first names - 'f' : patronymic surname (father) + 'y' : patronymic surname (father) 'o' : surnames without patronymic 'm' : primary surname (main) 'p' : list of all prefixes @@ -101,7 +101,11 @@ _F_RAWFN = 4 # name format raw function # #------------------------------------------------------------------------- # Because of occurring in an exec(), this couldn't be in a lambda: -def _make_cmp(a, b): return -cmp(a[1], b[1]) +# we sort names first on longest first, then last letter first, this to +# avoid translations of shorter terms which appear in longer ones, eg +# namelast may not be mistaken with name, so namelast must first be +# converted to %k before name is converted. +def _make_cmp(a, b): return -cmp((len(a[1]),a[1]), (len(b[1]), b[1])) #------------------------------------------------------------------------- # @@ -144,7 +148,7 @@ def _raw_primary_surname(raw_surn_data_list): return '' def _raw_patro_surname(raw_surn_data_list): - """method for the 'f' symbol: patronymic surname""" + """method for the 'y' symbol: patronymic surname""" for raw_surn_data in raw_surn_data_list: if raw_surn_data[_TYPE_IN_LIST][0] == _ORIGINPATRO: result = "%s %s" % (raw_surn_data[_PREFIX_IN_LIST], @@ -191,11 +195,11 @@ class NameDisplay(object): STANDARD_FORMATS = [ (Name.DEF,_("Default format (defined by Gramps preferences)"),'',_ACT), - (Name.LNFN,_("Surname, Given"),'%p %l, %f %s',_ACT), + (Name.LNFN,_("Surname, Given"),'%l, %f %s',_ACT), (Name.FN,_("Given"),'%f',_ACT), - (Name.FNLN,_("Given Surname"),'%f %p %l %s',_ACT), + (Name.FNLN,_("Given Surname"),'%f %l %s',_ACT), # DEPRECATED FORMATS - (Name.PTFN,_("Patronymic, Given"),'%p %y, %s %f',_INA), + (Name.PTFN,_("Patronymic, Given"),'%y, %s %f',_INA), ] def __init__(self): @@ -352,21 +356,21 @@ class NameDisplay(object): raw_data[_FIRSTNAME], raw_data[_SUFFIX]) - Specific symbols for parts of a name are defined: - 't' : title - 'f' : given (first names) - 'l' : full surname (lastname) - 'c' : callname - 'x' : callname if existing, otherwise first first name (common name) - 'i' : initials of the first names - 'f' : patronymic surname (father) - 'o' : surnames without patronymic - 'm' : primary surname (main) - 'p' : list of all prefixes - 'q' : surnames without prefixes and connectors - 's' : suffix - 'n' : nick name - 'g' : family nick name + Specific symbols for parts of a name are defined (keywords given): + 't' : title = title + 'f' : given = given (first names) + 'l' : surname = full surname (lastname) + 'c' : call = callname + 'x' : common = callname if existing, otherwise first first name (common name) + 'i' : initials = initials of the first names + 'y' : patronymic = patronymic surname (father) + 'o' : notpatronymic = surnames without patronymic + 'm' : primary = primary surname (main) + 'p' : prefix = list of all prefixes + 'q' : rawsurnames = surnames without prefixes and connectors + 's' : suffix = suffix + 'n' : nickname = nick name + 'g' : familynick = family nick name """ @@ -374,39 +378,39 @@ class NameDisplay(object): # called to fill in each format flag. # Dictionary is "code": ("expression", "keyword", "i18n-keyword") d = {"t": ("raw_data[_TITLE]", "title", - _("String replacement keyword Person|title")), + _("Person|title")), "f": ("raw_data[_FIRSTNAME]", "given", - _("String replacement keyword|given")), + _("given")), "l": ("_raw_full_surname(raw_data[_SURNAME_LIST])", "surname", - _("String replacement keyword|surname")), + _("surname")), "s": ("raw_data[_SUFFIX]", "suffix", - _("String replacement keyword|suffix")), + _("suffix")), "c": ("raw_data[_CALL]", "call", - _("String replacement keyword|call")), + _("Name|call")), "x": ("(raw_data[_CALL] or raw_data[_FIRSTNAME].split(' ')[0])", "common", - _("String replacement keyword|common")), + _("Name|common")), "i": ("''.join([word[0] +'.' for word in ('. ' +" + " raw_data[_FIRSTNAME]).split()][1:])", "initials", - _("String replacement keyword|initials")), - "f": ("_raw_patro_surname(raw_data[_SURNAME_LIST])", "patronymic", - _("String replacement keyword|patronymic")), + _("initials")), + "y": ("_raw_patro_surname(raw_data[_SURNAME_LIST])", "patronymic", + _("patronymic")), "o": ("_raw_nonpatro_surname(raw_data[_SURNAME_LIST])", "notpatronymic", - _("String replacement keyword|notpatronymic")), + _("notpatronymic")), "m": ("_raw_primary_surname(raw_data[_SURNAME_LIST])", - "primarysurname", - _("String replacement keyword|primarysurname")), + "primary", + _("Name|primary")), "p": ("_raw_prefix_surname(raw_data[_SURNAME_LIST])", "prefix", - _("String replacement keyword|prefix")), + _("prefix")), "q": ("_raw_single_surname(raw_data[_SURNAME_LIST])", "rawsurnames", - _("String replacement keyword|rawsurnames")), + _("rawsurnames")), "n": ("raw_data[_NICK]", "nickname", - _("String replacement keyword|nickname")), - "g": ("raw_data[_FAMNICK]", "famnick", - _("String replacement keyword|famnick")), + _("nickname")), + "g": ("raw_data[_FAMNICK]", "familynick", + _("familynick")), } args = "raw_data" return self._make_fn(format_str, d, args) @@ -427,55 +431,56 @@ class NameDisplay(object): def fn(first, raw_surname_list, suffix, title, call,): return "%s %s" % (first,suffix) - Specific symbols for parts of a name are defined: - 't' : title - 'f' : given (first names) - 'l' : full surname (lastname) - 'c' : callname - 'x' : callname if existing, otherwise first first name (common name) - 'i' : initials of the first names - 'f' : patronymic surname (father) - 'o' : surnames without patronymic - 'm' : primary surname (main) - 'p' : list of all prefixes - 'q' : surnames without prefixes and connectors - 's' : suffix - 'n' : nick name - 'g' : family nick name + Specific symbols for parts of a name are defined (keywords given): + 't' : title = title + 'f' : given = given (first names) + 'l' : surname = full surname (lastname) + 'c' : call = callname + 'x' : common = callname if existing, otherwise first first name (common name) + 'i' : initials = initials of the first names + 'y' : patronymic = patronymic surname (father) + 'o' : notpatronymic = surnames without patronymic + 'm' : primary = primary surname (main) + 'p' : prefix = list of all prefixes + 'q' : rawsurnames = surnames without prefixes and connectors + 's' : suffix = suffix + 'n' : nickname = nick name + 'g' : familynick = family nick name + """ # we need the names of each of the variables or methods that are # called to fill in each format flag. # Dictionary is "code": ("expression", "keyword", "i18n-keyword") d = {"t": ("title", "title", - _("String replacement keyword Person|title")), + _("Person|title")), "f": ("first", "given", - _("String replacement keyword|given")), + _("given")), "l": ("_raw_full_surname(raw_surname_list)", "surname", - _("String replacement keyword|surname")), + _("surname")), "s": ("suffix", "suffix", - _("String replacement keyword|suffix")), + _("suffix")), "c": ("call", "call", - _("String replacement keyword|call")), + _("Name|call")), "x": ("(call or first.split(' ')[0])", "common", - _("String replacement keyword|common")), + _("Name|common")), "i": ("''.join([word[0] +'.' for word in ('. ' + first).split()][1:])", "initials", - _("String replacement keyword|initials")), - "f": ("_raw_patro_surname(raw_surname_list)", "patronymic", - _("String replacement keyword|patronymic")), - "o": ("_raw_nonpatro_surname(raw_surname_list)", "notpatro", - _("String replacement keyword|notpatro")), + _("initials")), + "y": ("_raw_patro_surname(raw_surname_list)", "patronymic", + _("patronymic")), + "o": ("_raw_nonpatro_surname(raw_surname_list)", "notpatronymic", + _("notpatronymic")), "m": ("_raw_primary_surname(raw_surname_list)", "primary", - _("String replacement keyword name|primary")), + _("Name|primary")), "p": ("_raw_prefix_surname(raw_surname_list)", "prefix", - _("String replacement keyword|prefix")), - "q": ("_raw_single_surname(raw_surname_list)", "rawlastnames", - _("String replacement keyword|rawlastnames")), + _("prefix")), + "q": ("_raw_single_surname(raw_surname_list)", "rawsurnames", + _("rawsurnames")), "n": ("nick", "nickname", - _("String replacement keyword|nickname")), - "g": ("famnick", "famnick", - _("String replacement keyword|famnick")), + _("nickname")), + "g": ("famnick", "familynick", + _("familynick")), } args = "first,raw_surname_list,suffix,title,call,nick,famnick" return self._make_fn(format_str, d, args) @@ -497,7 +502,7 @@ class NameDisplay(object): pass else: d_keys = [(code, _tuple[2]) for code, _tuple in d.iteritems()] - d_keys.sort(_make_cmp) # reverse sort by ikeyword + d_keys.sort(_make_cmp) # reverse on length and by ikeyword for (code, ikeyword) in d_keys: exp, keyword, ikeyword = d[code] #ikeyword = unicode(ikeyword, "utf8") @@ -513,7 +518,7 @@ class NameDisplay(object): pass else: d_keys = [(code, _tuple[1]) for code, _tuple in d.iteritems()] - d_keys.sort(_make_cmp) # reverse sort by keyword + d_keys.sort(_make_cmp) # reverse sort on length and by keyword # if in double quotes, just use % codes for (code, keyword) in d_keys: exp, keyword, ikeyword = d[code] @@ -613,7 +618,7 @@ def fn(%s): '%c' : callname '%x' : callname if existing, otherwise first first name (common name) '%i' : initials of the first names - '%f' : patronymic surname (father) + '%y' : patronymic surname (father) '%o' : surnames without patronymic '%m' : primary surname (main) '%p' : list of all prefixes diff --git a/src/gen/lib/surname.py b/src/gen/lib/surname.py index 221bd44ea..8f5a73d84 100644 --- a/src/gen/lib/surname.py +++ b/src/gen/lib/surname.py @@ -188,5 +188,8 @@ class Surname(SecondaryObject): """Set if this surname is the primary surname.replace Use :class:`~gen.lib.surname.SurnameBase` to set the primary surname via :method:`~gen.lib.surname.SurnameBase.set_primary_surname` + + :param primary: primay surname or not + :type primary: bool """ self.primary = primary diff --git a/src/gui/configure.py b/src/gui/configure.py index 87fffa84a..275d93179 100644 --- a/src/gui/configure.py +++ b/src/gui/configure.py @@ -53,7 +53,7 @@ from gen.display.name import displayer as _nd from gen.display.name import NameDisplayError import Utils import gen.lib -from gen.lib import Name +from gen.lib import Name, Surname, NameOriginType import ManagedWindow from gui.widgets import MarkupLabel, BasicLabel from QuestionDialog import ErrorDialog, QuestionDialog2, OkDialog @@ -98,21 +98,28 @@ class DisplayNameEditor(ManagedWindow.ManagedWindow): table = self.dialog._build_custom_name_ui() label = gtk.Label(_("""The following keywords will be replaced with the name: - Given - given name (first name) - Surname - surname (last name) - Title - title (Dr., Mrs.) - Prefix - prefix (von, de, de la) - Suffix - suffix (Jr., Sr.) - Call - call name, or nickname - Common - call name, otherwise first part of Given - Patronymic - patronymic (father's name) - Initials - persons's first letters of given names + Given - given name (first name) | Surname - surnames (with prefix and connectors) + Title - title (Dr., Mrs.) | Suffix - suffix (Jr., Sr.) + Call - call name | Nickname - nick name + Initials - first letters of Given | Common - Call, otherwise first of Given + Primary - primary surname (main) | Familynick - Family nick name + Also: + Patronymic - patronymic surname (father's name) + Notpatronymic - all surnames except patronymic + Prefix - all surnames prefixes (von, de, de la) + Rawsurnames - all surnames without prefixes and connectors Use the same keyword in UPPERCASE to force to upper. Parentheses and commas -will be removed around empty fields. Other text will appear literally.""")) +will be removed around empty fields. Other text will appear literally. + +Example fictituous name: 'Dr. Edwin Jose von der Smith and Weston Wilson Sr ("Ed") - Underhills' +Here Edwin Jose are given names, Smith and Weston surnames, Wilson patronymic surname, +Dr. a title, Sr a suffix, Ed the nick name, Underhills family nick name. +Callname is Jose. +""")) label.set_use_markup(True) - self.window.vbox.add(label) - self.window.vbox.add(table) + self.window.vbox.pack_start(label, expand=False) + self.window.vbox.pack_start(table) self.window.set_default_size(600, 550) self.window.connect('response', self.close) self.show() @@ -520,7 +527,7 @@ class GrampsPreferences(ConfigureDialog): gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING) - index = 0 + index = 0 the_index = 0 for num, name, fmt_str, act in _nd.get_name_format(): translation = fmt_str @@ -538,40 +545,49 @@ class GrampsPreferences(ConfigureDialog): lyst = ["%s, %s %s (%s)" % (_("Surname"), _("Given"), _("Suffix"), _("Common")), "%s, %s %s (%s)" % (_("Surname"), _("Given"), _("Suffix"), - _("Call")), + _("Nickname")), + "%s, %s %s (%s)" % (_("Surname"), _("Name|Common"), _("Suffix"), + _("Nickname")), + "%s, %s %s" % (_("Surname"), _("Name|Common"), _("Suffix")), "%s, %s %s (%s)" % (_("SURNAME"), _("Given"), _("Suffix"), _("Call")), - "%s, %s (%s)" % (_("Surname"), _("Given"), _("Common")), - "%s, %s (%s)" % (_("Surname"), _("Given"), _("Call")), + "%s, %s (%s)" % (_("Surname"), _("Given"), _("Name|Common")), + "%s, %s (%s)" % (_("Surname"), _("Name|Common"), _("Nickname")), "%s %s" % (_("Given"), _("Surname")), "%s %s, %s" % (_("Given"), _("Surname"), _("Suffix")), - "%s %s %s" % (_("Given"), _("Surname"), _("Patronymic")), + "%s %s %s" % (_("Given"), _("NotPatronymic"), _("Patronymic")), "%s, %s %s (%s)" % (_("SURNAME"), _("Given"), _("Suffix"), _("Common")), - "%s, %s (%s)" % (_("SURNAME"), _("Given"), _("Common")), - "%s, %s (%s)" % (_("SURNAME"), _("Given"), _("Call")), + "%s, %s (%s)" % (_("SURNAME"), _("Given"), _("Name|Common")), + "%s, %s (%s)" % (_("SURNAME"), _("Given"), _("Nickname")), "%s %s" % (_("Given"), _("SURNAME")), "%s %s, %s" % (_("Given"), _("SURNAME"), _("Suffix")), "%s /%s/" % (_("Given"), _("SURNAME")), + "%s %s, %s" % (_("Given"), _("Rawsurnames"), _("Suffix")), ] - fmtlyst = ["%s, %s %s (%s)" % ("Surname", "Given", "Suffix", - "Common"), - "%s, %s %s (%s)" % ("Surname", "Given", "Suffix", - "Call"), - "%s, %s %s (%s)" % ("SURNAME", "Given", "Suffix", - "Call"), - "%s, %s (%s)" % ("Surname", "Given", "Common"), - "%s, %s (%s)" % ("Surname", "Given", "Call"), - "%s %s" % ("Given", "Surname"), - "%s %s, %s" % ("Given", "Surname", "Suffix"), - "%s %s %s" % ("Given", "Surname", "Patronymic"), - "%s, %s %s (%s)" % ("SURNAME", "Given", "Suffix", - "Common"), - "%s, %s (%s)" % ("SURNAME", "Given", "Common"), - "%s, %s (%s)" % ("SURNAME", "Given", "Call"), - "%s %s" % ("Given", "SURNAME"), - "%s %s, %s" % ("Given", "SURNAME", "Suffix"), - "%s /%s/" % ("Given", "SURNAME"), + #repeat above list, but not translated. + fmtlyst = ["%s, %s %s (%s)" % (("Surname"), ("Given"), ("Suffix"), + ("Common")), + "%s, %s %s (%s)" % (("Surname"), ("Given"), ("Suffix"), + ("Nickname")), + "%s, %s %s (%s)" % (("Surname"), ("Name|Common"), ("Suffix"), + ("Nickname")), + "%s, %s %s" % (("Surname"), ("Name|Common"), ("Suffix")), + "%s, %s %s (%s)" % (("SURNAME"), ("Given"), ("Suffix"), + ("Call")), + "%s, %s (%s)" % (("Surname"), ("Given"), ("Name|Common")), + "%s, %s (%s)" % (("Surname"), ("Name|Common"), ("Nickname")), + "%s %s" % (("Given"), ("Surname")), + "%s %s, %s" % (("Given"), ("Surname"), ("Suffix")), + "%s %s %s" % (("Given"), ("NotPatronymic"), ("Patronymic")), + "%s, %s %s (%s)" % (("SURNAME"), ("Given"), ("Suffix"), + ("Common")), + "%s, %s (%s)" % (("SURNAME"), ("Given"), ("Name|Common")), + "%s, %s (%s)" % (("SURNAME"), ("Given"), ("Nickname")), + "%s %s" % (("Given"), ("SURNAME")), + "%s %s, %s" % (("Given"), ("SURNAME"), ("Suffix")), + "%s /%s/" % (("Given"), ("SURNAME")), + "%s %s, %s" % (("Given"), ("Rawsurnames"), ("Suffix")), ] rand = int(random.random() * len(lyst)) f = lyst[rand] @@ -722,11 +738,9 @@ class GrampsPreferences(ConfigureDialog): self.insert_button = gtk.Button(stock=gtk.STOCK_ADD) self.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.__edit_name) - #self.cb_edit_fmt_str) self.edit_button.set_sensitive(False) self.remove_button = gtk.Button(stock=gtk.STOCK_REMOVE) @@ -781,44 +795,6 @@ class GrampsPreferences(ConfigureDialog): self.edit_button.set_sensitive(idx) self.name_renderer.set_property('editable', idx) - - def cb_edit_fmt_str(self, obj): - """ - Name format editor Edit button callback - """ - num, name, fmt = self.selected_fmt[COL_NUM:COL_EXPL] - dlg = NameFormatEditDlg(name, fmt, self.examplename) - dlg.dlg.set_transient_for(self.window) - (res, name, fmt) = dlg.run() - - if res == gtk.RESPONSE_OK and (name != self.selected_fmt[COL_NAME] or - fmt != self.selected_fmt[COL_FMT]): - exmpl = _nd.format_str(self.examplename, fmt) - self.fmt_model.set(self.iter, COL_NAME, name, - COL_FMT, fmt, - COL_EXPL, exmpl) - self.selected_fmt = (num, name, fmt, exmpl) - _nd.edit_name_format(num, name, fmt) - - self.dbstate.db.name_formats = _nd.get_name_format(only_custom=True, - only_active=False) - - def cb_insert_fmt_str(self, obj): - """ - Name format editor Insert button callback - """ - dlg = NameFormatEditDlg('', '', self.examplename) - dlg.dlg.set_transient_for(self.window) - (res, n, f) = dlg.run() - - if res == gtk.RESPONSE_OK: - i = _nd.add_name_format(n, f) - self.fmt_model.append(row=[i, n, f, - _nd.format_str(self.examplename, f)]) - - self.dbstate.db.name_formats = _nd.get_name_format(only_custom=True, - only_active=False) - def cb_del_fmt_str(self, obj): """ Name format editor Remove button callback @@ -842,13 +818,26 @@ class GrampsPreferences(ConfigureDialog): # Display name: self.examplename = Name() + examplesurname = Surname() + examplesurnamesecond = Surname() + examplesurnamepat = Surname() self.examplename.set_title('Dr.') self.examplename.set_first_name('Edwin Jose') - self.examplename.set_surname_prefix('von der') - self.examplename.set_surname('Smith') + examplesurname.set_prefix('von der') + examplesurname.set_surname('Smith') + examplesurname.set_connector('and') + self.examplename.add_surname(examplesurname) + examplesurnamesecond.set_surname('Weston') + self.examplename.add_surname(examplesurnamesecond) + examplesurnamepat.set_surname('Wilson') + examplesurnamepat.set_origintype( + NameOriginType(NameOriginType.PATRONYMIC)) + self.examplename.add_surname(examplesurnamepat) + self.examplename.set_primary_surname(0) self.examplename.set_suffix('Sr') - self.examplename.set_patronymic('Wilson') - self.examplename.set_call_name('Ed') + self.examplename.set_call_name('Jose') + self.examplename.set_nick_name('Ed') + self.examplename.set_family_nick_name('Underhills') # get the model for the combo and the treeview active = _nd.get_default_format() self.fmt_model, active = self._build_name_format_model(active) @@ -1186,71 +1175,3 @@ class GrampsPreferences(ConfigureDialog): button.add(image) button.show() return button - -class NameFormatEditDlg(object): - """ - """ - - def __init__(self, fmt_name, fmt_str, name): - self.fmt_name = fmt_name - self.fmt_str = fmt_str - self.name = name - self.valid = True - self.top = Glade() - - self.dlg = self.top.get_object('namefmt_edit') - ManagedWindow.set_titles(self.dlg, None, _('Name Format Editor')) - - self.examplelabel = self.top.get_object('example_label') - - self.nameentry = self.top.get_object('name_entry') - self.nameentry.set_text('%s' % self.fmt_name) - self.nameentry.set_use_markup(True) - - self.formatentry = self.top.get_object('format_entry') - self.formatentry.connect('changed', self.cb_format_changed) - self.formatentry.set_text(self.fmt_str) - - def run(self): - running = True - while running: - self.response = self.dlg.run() - - running = False - self.fmt_name = self.nameentry.get_text() - self.fmt_str = self.formatentry.get_text() - - if self.response == gtk.RESPONSE_OK: - if not self.valid: - q = QuestionDialog2( - _('The format definition is invalid'), - _('What would you like to do?'), - _('_Continue anyway'), _('_Modify format'), - parent=self.dlg) - running = not q.run() - self.response = gtk.RESPONSE_CANCEL - elif self.fmt_name == '' and self.fmt_str == '': - self.response = gtk.RESPONSE_CANCEL - elif (self.fmt_name == '') ^ (self.fmt_str == ''): - ErrorDialog( - _('Both Format name and definition have to be defined.'), - parent=self.dlg) - running = True - - self.dlg.destroy() - return (self.response, self.fmt_name, self.fmt_str) - - def cb_format_changed(self, obj): - try: - t = (_nd.format_str(self.name, escape(obj.get_text()))) - sample = '%s' % t - self.valid = True - except NameDisplayError: - t = _("Invalid or incomplete format definition.") - sample = '%s' % t - self.valid = False - - self.examplelabel.set_text(sample) - self.examplelabel.set_use_markup(True) - self.nameentry.set_text('%s' % obj.get_text()) - self.nameentry.set_use_markup(True)