* src/AddrEdit.py: Full edit functionality
* src/AttrEdit.py: Full edit functionality * src/DisplayTabs.py: call EditEventRef * src/EditSourceRef.py: Full edit functionality * src/EventEdit.py: separate out EditEventRef * src/GrampsWidgets.py: Add date, menu, type handling widgets * src/NameEdit.py: Full edit functionality * src/gramps.glade: fix names and privacy buttons * src/EditEventRef.py: broken out of EditEvent svn: r5967
This commit is contained in:
parent
7f42c25525
commit
6a5ab6549a
11
ChangeLog
11
ChangeLog
@ -1,3 +1,14 @@
|
||||
2006-02-21 Don Allingham <don@gramps-project.org>
|
||||
* src/AddrEdit.py: Full edit functionality
|
||||
* src/AttrEdit.py: Full edit functionality
|
||||
* src/DisplayTabs.py: call EditEventRef
|
||||
* src/EditSourceRef.py: Full edit functionality
|
||||
* src/EventEdit.py: separate out EditEventRef
|
||||
* src/GrampsWidgets.py: Add date, menu, type handling widgets
|
||||
* src/NameEdit.py: Full edit functionality
|
||||
* src/gramps.glade: fix names and privacy buttons
|
||||
* src/EditEventRef.py: broken out of EditEvent
|
||||
|
||||
2006-02-20 Don Allingham <don@gramps-project.org>
|
||||
* src/GrampsWidgets.py: Add monitored widgets for type and combo
|
||||
* src/EditFamily.py: use MonitoredType
|
||||
|
141
src/AddrEdit.py
141
src/AddrEdit.py
@ -54,8 +54,8 @@ import DateHandler
|
||||
import DisplayState
|
||||
import Spell
|
||||
|
||||
from WindowUtils import GladeIf
|
||||
from DisplayTabs import *
|
||||
from GrampsWidgets import *
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -84,62 +84,64 @@ class AddressEditor(DisplayState.ManagedWindow):
|
||||
if self.already_exist:
|
||||
return
|
||||
|
||||
# Get the important widgets from the glade description
|
||||
self.top = gtk.glade.XML(const.gladeFile, "addr_edit","gramps")
|
||||
self.gladeif = GladeIf(self.top)
|
||||
|
||||
self.window = self.top.get_widget("addr_edit")
|
||||
self.addr_start = self.top.get_widget("address_start")
|
||||
self.addr_start.set_editable(not self.db.readonly)
|
||||
self.street = self.top.get_widget("street")
|
||||
self.street.set_editable(not self.db.readonly)
|
||||
self.city = self.top.get_widget("city")
|
||||
self.city.set_editable(not self.db.readonly)
|
||||
self.state = self.top.get_widget("state")
|
||||
self.state.set_editable(not self.db.readonly)
|
||||
self.country = self.top.get_widget("country")
|
||||
self.country.set_editable(not self.db.readonly)
|
||||
self.postal = self.top.get_widget("postal")
|
||||
self.postal.set_editable(not self.db.readonly)
|
||||
self.phone = self.top.get_widget("phone")
|
||||
self.phone.set_editable(not self.db.readonly)
|
||||
self.priv = self.top.get_widget("priv")
|
||||
self.priv.set_sensitive(not self.db.readonly)
|
||||
|
||||
title_label = self.top.get_widget("title")
|
||||
|
||||
Utils.set_titles(self.window,title_label,_('Address Editor'))
|
||||
|
||||
if self.addr:
|
||||
self.addr_date_obj = RelLib.Date(self.addr.get_date_object())
|
||||
self.addr_start.set_text(DateHandler.get_date(self.addr))
|
||||
self.street.set_text(self.addr.get_street())
|
||||
self.city.set_text(self.addr.get_city())
|
||||
self.state.set_text(self.addr.get_state())
|
||||
self.country.set_text(self.addr.get_country())
|
||||
self.postal.set_text(self.addr.get_postal_code())
|
||||
self.phone.set_text(self.addr.get_phone())
|
||||
self.priv.set_active(self.addr.get_privacy())
|
||||
else:
|
||||
self.addr_date_obj = RelLib.Date()
|
||||
if not self.addr:
|
||||
self.addr = RelLib.Address()
|
||||
|
||||
date_stat = self.top.get_widget("date_stat")
|
||||
date_stat.set_sensitive(not self.db.readonly)
|
||||
self.date_check = DateEdit.DateEdit(
|
||||
self.addr_date_obj, self.addr_start, date_stat, self.window)
|
||||
# Get the important widgets from the glade description
|
||||
self.top = gtk.glade.XML(const.gladeFile, "addr_edit","gramps")
|
||||
self.window = self.top.get_widget("addr_edit")
|
||||
|
||||
self.gladeif.connect('addr_edit','delete_event',self.on_delete_event)
|
||||
self.gladeif.connect('button122','clicked',self.close_window)
|
||||
self.gladeif.connect('button121','clicked',self.ok_clicked)
|
||||
okbtn = self.top.get_widget('button121')
|
||||
okbtn.set_sensitive(not self.db.readonly)
|
||||
self.gladeif.connect('button129','clicked',self.on_help_clicked)
|
||||
title_label = self.top.get_widget("title")
|
||||
Utils.set_titles(self.window,title_label,_('Address Editor'))
|
||||
|
||||
self._setup_fields()
|
||||
self._create_tabbed_pages()
|
||||
|
||||
self._connect_signals()
|
||||
self.show()
|
||||
|
||||
def _setup_fields(self):
|
||||
self.addr_start = MonitoredDate(
|
||||
self.top.get_widget("address_start"),
|
||||
self.top.get_widget("date_stat"),
|
||||
self.addr.get_date_object(),
|
||||
self.window, self.db.readonly)
|
||||
|
||||
self.street = MonitoredEntry(
|
||||
self.top.get_widget("street"), self.addr.set_street,
|
||||
self.addr.get_street, self.db.readonly)
|
||||
|
||||
self.city = MonitoredEntry(
|
||||
self.top.get_widget("city"), self.addr.set_city,
|
||||
self.addr.get_city, self.db.readonly)
|
||||
|
||||
self.state = MonitoredEntry(
|
||||
self.top.get_widget("state"), self.addr.set_state,
|
||||
self.addr.get_state, self.db.readonly)
|
||||
|
||||
self.country = MonitoredEntry(
|
||||
self.top.get_widget("country"), self.addr.set_country,
|
||||
self.addr.get_country, self.db.readonly)
|
||||
|
||||
self.postal = MonitoredEntry(
|
||||
self.top.get_widget("postal"), self.addr.set_postal_code,
|
||||
self.addr.get_postal_code, self.db.readonly)
|
||||
|
||||
self.phone = MonitoredEntry(
|
||||
self.top.get_widget("phone"), self.addr.set_phone,
|
||||
self.addr.get_phone, self.db.readonly)
|
||||
|
||||
self.priv = PrivacyButton(self.top.get_widget("private"),
|
||||
self.addr, self.db.readonly)
|
||||
|
||||
def _connect_signals(self):
|
||||
self.window.connect('delete_event',self.on_delete_event)
|
||||
self.top.get_widget('cancel').connect('clicked',self.close_window)
|
||||
self.top.get_widget('help').connect('clicked',self.help_clicked)
|
||||
|
||||
okbtn = self.top.get_widget('ok')
|
||||
okbtn.connect('clicked',self.ok_clicked)
|
||||
okbtn.set_sensitive(not self.db.readonly)
|
||||
|
||||
def _add_page(self,page):
|
||||
self.notebook.insert_page(page)
|
||||
self.notebook.set_tab_label(page,page.get_tab_widget())
|
||||
@ -167,18 +169,16 @@ class AddressEditor(DisplayState.ManagedWindow):
|
||||
vbox.pack_start(self.notebook,True)
|
||||
|
||||
def on_delete_event(self,obj,b):
|
||||
self.gladeif.close()
|
||||
self.close()
|
||||
|
||||
def close_window(self,obj):
|
||||
self.gladeif.close()
|
||||
self.window.destroy()
|
||||
self.close()
|
||||
|
||||
def build_menu_names(self,obj):
|
||||
return (_('Address'),_('Address Editor'))
|
||||
|
||||
def on_help_clicked(self,obj):
|
||||
def help_clicked(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
GrampsDisplay.help('adv-ad')
|
||||
|
||||
@ -187,41 +187,6 @@ class AddressEditor(DisplayState.ManagedWindow):
|
||||
Called when the OK button is pressed. Gets data from the
|
||||
form and updates the Address data structure.
|
||||
"""
|
||||
date_obj = self.addr_date_obj
|
||||
street = unicode(self.street.get_text())
|
||||
city = unicode(self.city.get_text())
|
||||
state = unicode(self.state.get_text())
|
||||
country = unicode(self.country.get_text())
|
||||
phone = unicode(self.phone.get_text())
|
||||
postal = unicode(self.postal.get_text())
|
||||
b = self.note_field.get_buffer()
|
||||
note = unicode(b.get_text(b.get_start_iter(),b.get_end_iter(),False))
|
||||
priv = self.priv.get_active()
|
||||
|
||||
self.addr.set_source_reference_list(self.srcreflist)
|
||||
|
||||
self.update(date_obj,street,city,state,country,postal,phone,priv)
|
||||
self.callback(self.addr)
|
||||
self.close_window(obj)
|
||||
|
||||
def check(self,get,set,data):
|
||||
"""Compares a data item, updates if necessary, and sets the
|
||||
parents lists_changed flag"""
|
||||
if get() != data:
|
||||
set(data)
|
||||
|
||||
def update(self,date_obj,street,city,state,country,postal,phone,priv):
|
||||
"""Compares the data items, and updates if necessary"""
|
||||
|
||||
if not self.addr.get_date_object().is_equal(date_obj):
|
||||
self.addr.set_date_object(date_obj)
|
||||
|
||||
self.check(self.addr.get_street,self.addr.set_street,street)
|
||||
self.check(self.addr.get_country,self.addr.set_country,country)
|
||||
self.check(self.addr.get_city,self.addr.set_city,city)
|
||||
self.check(self.addr.get_state,self.addr.set_state,state)
|
||||
self.check(self.addr.get_postal_code,self.addr.set_postal_code,postal)
|
||||
self.check(self.addr.get_phone,self.addr.set_phone,phone)
|
||||
self.check(self.addr.get_note,self.addr.set_note,note)
|
||||
self.check(self.addr.get_note_format,self.addr.set_note_format,format)
|
||||
self.check(self.addr.get_privacy,self.addr.set_privacy,priv)
|
||||
|
@ -34,8 +34,6 @@ __version__ = "$Revision$"
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gettext import gettext as _
|
||||
import gc
|
||||
from cgi import escape
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -51,16 +49,13 @@ import gtk.glade
|
||||
#-------------------------------------------------------------------------
|
||||
import const
|
||||
import Utils
|
||||
import Sources
|
||||
import AutoComp
|
||||
import RelLib
|
||||
import Spell
|
||||
import GrampsDisplay
|
||||
import DisplayState
|
||||
|
||||
from QuestionDialog import WarningDialog
|
||||
from WindowUtils import GladeIf
|
||||
from DisplayTabs import *
|
||||
from GrampsWidgets import *
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -93,47 +88,47 @@ class AttributeEditor(DisplayState.ManagedWindow):
|
||||
if self.already_exist:
|
||||
return
|
||||
|
||||
if not attrib:
|
||||
self.attrib = RelLib.Attribute()
|
||||
|
||||
self.top = gtk.glade.XML(const.gladeFile, "attr_edit","gramps")
|
||||
self.value_field = self.top.get_widget("attr_value")
|
||||
self.attrib_menu = self.top.get_widget("attr_menu")
|
||||
self.source_field = self.top.get_widget("attr_source")
|
||||
self.priv = self.top.get_widget("priv")
|
||||
self.notebook = self.top.get_widget("notebook")
|
||||
|
||||
self.window = self.top.get_widget("attr_edit")
|
||||
self.type_selector = AutoComp.StandardCustomSelector(
|
||||
Utils.personal_attributes,self.attrib_menu,
|
||||
RelLib.Attribute.CUSTOM,RelLib.Attribute.DESCRIPTION)
|
||||
|
||||
if title == ", ":
|
||||
title = _("Attribute Editor")
|
||||
else:
|
||||
title = _("Attribute Editor for %s") % escape(title)
|
||||
title = _("Attribute Editor")
|
||||
l = self.top.get_widget("title")
|
||||
Utils.set_titles(self.window,l,title,_('Attribute Editor'))
|
||||
|
||||
if attrib:
|
||||
self.type_selector.set_values(attrib.get_type())
|
||||
self.value_field.set_text(attrib.get_value())
|
||||
self.priv.set_active(attrib.get_privacy())
|
||||
else:
|
||||
self.attrib = RelLib.Attribute()
|
||||
|
||||
self.gladeif = GladeIf(self.top)
|
||||
self.gladeif.connect('attr_edit','delete_event', self.on_delete_event)
|
||||
self.gladeif.connect('button116', 'clicked', self.close_window)
|
||||
self.gladeif.connect('button115', 'clicked', self.on_ok_clicked)
|
||||
self.gladeif.connect('button127', 'clicked', self.on_help_clicked)
|
||||
|
||||
if self.db.readonly:
|
||||
w = self.top.get_widget("button115")
|
||||
w.set_sensitive(False)
|
||||
self.value_field.set_editable(False)
|
||||
self.attrib_menu.set_sensitive(False)
|
||||
|
||||
self._create_tabbed_pages()
|
||||
self._setup_fields()
|
||||
self._connect_signals()
|
||||
self.show()
|
||||
|
||||
def _connect_signals(self):
|
||||
self.window.connect('delete_event', self.on_delete_event)
|
||||
|
||||
self.top.get_widget('cancel').connect('clicked', self.close_window)
|
||||
self.top.get_widget('help').connect('clicked', self.on_help_clicked)
|
||||
|
||||
ok = self.top.get_widget('ok')
|
||||
ok.connect('clicked', self.on_ok_clicked)
|
||||
if self.db.readonly:
|
||||
ok.set_sensitive(False)
|
||||
|
||||
def _setup_fields(self):
|
||||
self.value_field = MonitoredEntry(
|
||||
self.top.get_widget("attr_value"),
|
||||
self.attrib.set_value, self.attrib.get_value,
|
||||
self.db.readonly)
|
||||
|
||||
self.priv = PrivacyButton(self.top.get_widget("private"),self.attrib)
|
||||
|
||||
self.type_selector = MonitoredType(
|
||||
self.top.get_widget("attr_menu"),
|
||||
self.attrib.set_type, self.attrib.get_type,
|
||||
dict(Utils.personal_attributes),
|
||||
RelLib.Attribute.CUSTOM)
|
||||
|
||||
def _create_tabbed_pages(self):
|
||||
vbox = self.top.get_widget('vbox')
|
||||
|
||||
@ -153,11 +148,9 @@ class AttributeEditor(DisplayState.ManagedWindow):
|
||||
return page
|
||||
|
||||
def on_delete_event(self,obj,b):
|
||||
self.gladeif.close()
|
||||
self.close()
|
||||
|
||||
def close_window(self,obj):
|
||||
self.gladeif.close()
|
||||
self.close()
|
||||
|
||||
def build_menu_names(self, attrib):
|
||||
@ -179,11 +172,8 @@ class AttributeEditor(DisplayState.ManagedWindow):
|
||||
Called when the OK button is pressed. Gets data from the
|
||||
form and updates the Attribute data structure.
|
||||
"""
|
||||
attr_data = self.type_selector.get_values()
|
||||
value = unicode(self.value_field.get_text())
|
||||
|
||||
priv = self.priv.get_active()
|
||||
|
||||
attr_data = self.attrib.get_type()
|
||||
if (attr_data[0] == RelLib.Attribute.CUSTOM and
|
||||
not attr_data[1] in self.alist):
|
||||
WarningDialog(
|
||||
@ -193,18 +183,6 @@ class AttributeEditor(DisplayState.ManagedWindow):
|
||||
self.alist.append(attr_data[1])
|
||||
self.alist.sort()
|
||||
|
||||
self.update(attr_data,value,priv)
|
||||
self.callback(self.attrib)
|
||||
self.close_window(obj)
|
||||
|
||||
def check(self,get,set,data):
|
||||
"""Compares a data item, updates if necessary, and sets the
|
||||
parents lists_changed flag"""
|
||||
if get() != data:
|
||||
set(data)
|
||||
|
||||
def update(self,attr_data,value,priv):
|
||||
"""Compares the data items, and updates if necessary"""
|
||||
self.check(self.attrib.get_type,self.attrib.set_type,attr_data)
|
||||
self.check(self.attrib.get_value,self.attrib.set_value,value)
|
||||
self.check(self.attrib.get_privacy,self.attrib.set_privacy,priv)
|
||||
|
@ -592,26 +592,26 @@ class EventEmbedList(EmbeddedList):
|
||||
return ((1,0),(1,1),(1,2),(1,3),(1,4),(1,5))
|
||||
|
||||
def add_button_clicked(self,obj):
|
||||
import EventEdit
|
||||
EventEdit.EventRefEditor(self.dbstate,self.uistate,self.track,
|
||||
None, None, self.obj, self.event_added)
|
||||
from EditEventRef import EditEventRef
|
||||
EditEventRef(self.dbstate,self.uistate,self.track,
|
||||
None, None, self.obj, self.event_added)
|
||||
|
||||
def share_button_clicked(self,obj):
|
||||
import EventEdit
|
||||
from EditEventRef import EditEventRef
|
||||
import SelectEvent
|
||||
|
||||
sel = SelectEvent.SelectEvent(self.dbstate.db,"Event Select")
|
||||
event = sel.run()
|
||||
EventEdit.EventRefEditor(self.dbstate,self.uistate,self.track,
|
||||
event, None, self.obj, self.event_added)
|
||||
EditEventRef(self.dbstate,self.uistate,self.track,
|
||||
event, None, self.obj, self.event_added)
|
||||
|
||||
def edit_button_clicked(self,obj):
|
||||
ref = self.get_selected()
|
||||
if ref:
|
||||
import EventEdit
|
||||
from EditEventRef import EditEventRef
|
||||
event = self.dbstate.db.get_event_from_handle(ref.ref)
|
||||
EventEdit.EventRefEditor(self.dbstate,self.uistate,self.track,
|
||||
event, ref, self.obj, self.event_updated)
|
||||
EditEventRef(self.dbstate,self.uistate,self.track,
|
||||
event, ref, self.obj, self.event_updated)
|
||||
|
||||
def event_updated(self,value):
|
||||
self.changed = True
|
||||
|
@ -51,8 +51,6 @@ import const
|
||||
import Utils
|
||||
import AutoComp
|
||||
import RelLib
|
||||
from DateHandler import parser as _dp, displayer as _dd
|
||||
import DateEdit
|
||||
import GrampsDisplay
|
||||
import DisplayState
|
||||
|
||||
@ -86,17 +84,13 @@ class EditSourceRef(DisplayState.ManagedWindow):
|
||||
self.top = gtk.glade.XML(const.gladeFile, "source_ref_edit","gramps")
|
||||
self.window = self.top.get_widget('source_ref_edit')
|
||||
|
||||
self.ref_note_field = self.top.get_widget('eer_ref_note')
|
||||
self.role_combo = self.top.get_widget('eer_role_combo')
|
||||
self.date_field = self.top.get_widget("date")
|
||||
self.ok = self.top.get_widget('ok')
|
||||
self.expander = self.top.get_widget("src_expander")
|
||||
self.warning = self.top.get_widget("warn_box")
|
||||
self.notebook_src = self.top.get_widget('notebook_src')
|
||||
self.notebook_ref = self.top.get_widget('notebook_ref')
|
||||
|
||||
self.expander.set_expanded(True)
|
||||
expander = self.top.get_widget("src_expander")
|
||||
expander.set_expanded(True)
|
||||
|
||||
warning = self.top.get_widget("warn_box")
|
||||
if self.source.handle:
|
||||
self.warning.show_all()
|
||||
else:
|
||||
@ -116,13 +110,6 @@ class EditSourceRef(DisplayState.ManagedWindow):
|
||||
Utils.set_titles(self.window, self.top.get_widget('source_title'),
|
||||
self.title)
|
||||
|
||||
self.date = self.source_ref.get_date_object()
|
||||
self.date_check = DateEdit.DateEdit(
|
||||
self.source_ref.date, self.date_field,
|
||||
self.top.get_widget("date_stat"), self.window)
|
||||
|
||||
self.date_field.set_text(_dd.display(self.date))
|
||||
|
||||
self._create_tabbed_pages()
|
||||
self._setup_fields()
|
||||
self._connect_signals()
|
||||
@ -173,6 +160,11 @@ class EditSourceRef(DisplayState.ManagedWindow):
|
||||
(_('High'), RelLib.SourceRef.CONF_HIGH),
|
||||
(_('Very High'), RelLib.SourceRef.CONF_VERY_HIGH)])
|
||||
|
||||
|
||||
self.date = MonitoredDate(self.top.get_widget("date"),
|
||||
self.top.get_widget("date_stat"),
|
||||
self.source_ref.get_date_object(),self.window)
|
||||
|
||||
def _add_source_page(self,page):
|
||||
self.notebook_src.insert_page(page)
|
||||
self.notebook_src.set_tab_label(page,page.get_tab_widget())
|
||||
|
218
src/EventEdit.py
218
src/EventEdit.py
@ -306,224 +306,6 @@ class EventEditor(DisplayState.ManagedWindow):
|
||||
data.union(self.db.get_person_event_types())
|
||||
return list(data)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# EventRefEditor class
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class EventRefEditor(DisplayState.ManagedWindow):
|
||||
def __init__(self, state, uistate, track,
|
||||
event, event_ref, referent, update):
|
||||
self.db = state.db
|
||||
self.state = state
|
||||
self.uistate = uistate
|
||||
self.referent = referent
|
||||
self.event_ref = event_ref
|
||||
self.event = event
|
||||
|
||||
DisplayState.ManagedWindow.__init__(self, uistate, track, event_ref)
|
||||
if self.already_exist:
|
||||
return
|
||||
|
||||
self.update = update
|
||||
|
||||
self.pmap = {}
|
||||
for key in self.db.get_place_handles():
|
||||
title = self.db.get_place_from_handle(key).get_title()
|
||||
self.pmap[title] = key
|
||||
|
||||
self.title = _('Event Reference Editor')
|
||||
|
||||
self.top = gtk.glade.XML(const.gladeFile, "event_eref_edit","gramps")
|
||||
self.window = self.top.get_widget('event_eref_edit')
|
||||
self.ref_note_field = self.top.get_widget('eer_ref_note')
|
||||
self.role_combo = self.top.get_widget('eer_role_combo')
|
||||
self.date_field = self.top.get_widget("eer_date")
|
||||
self.place_field = self.top.get_widget("eer_place")
|
||||
self.cause_field = self.top.get_widget("eer_cause")
|
||||
self.ev_note_field = self.top.get_widget("eer_ev_note")
|
||||
self.type_combo = self.top.get_widget("eer_type_combo")
|
||||
self.general_label = self.top.get_widget("eer_general_tab")
|
||||
self.ok = self.top.get_widget('ok')
|
||||
self.expander = self.top.get_widget("eer_expander")
|
||||
self.warning = self.top.get_widget("eer_warning")
|
||||
self.notebook = self.top.get_widget('notebook')
|
||||
|
||||
if self.referent.__class__.__name__ == 'Person':
|
||||
default_type = RelLib.Event.BIRTH
|
||||
default_role = RelLib.EventRef.PRIMARY
|
||||
ev_dict = Utils.personal_events
|
||||
role_dict = Utils.event_roles
|
||||
elif self.referent.__class__.__name__ == 'Family':
|
||||
default_type = RelLib.Event.MARRIAGE
|
||||
default_role = RelLib.EventRef.FAMILY
|
||||
ev_dict = Utils.family_events
|
||||
role_dict = Utils.family_event_roles
|
||||
|
||||
if self.event:
|
||||
self.event_added = False
|
||||
self.date = RelLib.Date(self.event.get_date_object())
|
||||
if self.event_ref:
|
||||
if self.event_ref.get_role()[0] == default_role:
|
||||
self.expander.set_expanded(True)
|
||||
self.warning.hide()
|
||||
else:
|
||||
self.expander.set_expanded(False)
|
||||
self.warning.show_all()
|
||||
else:
|
||||
self.event = RelLib.Event()
|
||||
self.event.set_type((default_type,ev_dict[default_type]))
|
||||
self.event.set_handle(self.db.create_id())
|
||||
self.event.set_gramps_id(self.db.find_next_event_gramps_id())
|
||||
self.event_added = True
|
||||
self.date = RelLib.Date(None)
|
||||
self.expander.set_expanded(True)
|
||||
self.warning.hide()
|
||||
|
||||
if not self.event_ref:
|
||||
self.event_ref = RelLib.EventRef()
|
||||
self.event_ref.set_role((default_role,role_dict[default_role]))
|
||||
self.event_ref.set_reference_handle(self.event.get_handle())
|
||||
|
||||
self.cause_monitor = MonitoredEntry(self.cause_field,self.event.set_cause,
|
||||
self.event.get_cause, False)
|
||||
self.ref_privacy = PrivacyButton(self.top.get_widget('eer_ref_priv'),
|
||||
self.event_ref)
|
||||
|
||||
self.descr_field = MonitoredEntry(self.top.get_widget("eer_description"),
|
||||
self.event.set_description,
|
||||
self.event.get_description, False)
|
||||
|
||||
self.ev_privacy = PrivacyButton(self.top.get_widget("eer_ev_priv"),
|
||||
self.event)
|
||||
|
||||
Utils.set_titles(self.window,
|
||||
self.top.get_widget('eer_title'),
|
||||
self.title)
|
||||
|
||||
self.top.signal_autoconnect({
|
||||
"on_eer_help_clicked" : self.on_help_clicked,
|
||||
"on_eer_ok_clicked" : self.on_ok_clicked,
|
||||
"on_eer_cancel_clicked" : self.close,
|
||||
"on_eer_delete_event" : self.close,
|
||||
})
|
||||
|
||||
self.role_selector = AutoComp.StandardCustomSelector(
|
||||
role_dict,self.role_combo,
|
||||
RelLib.EventRef.CUSTOM,default_role)
|
||||
|
||||
AutoComp.fill_entry(self.place_field,self.pmap.keys())
|
||||
|
||||
self.type_selector = AutoComp.StandardCustomSelector(
|
||||
ev_dict,self.type_combo,
|
||||
RelLib.Event.CUSTOM,default_type)
|
||||
|
||||
self.date_check = DateEdit.DateEdit(self.date,
|
||||
self.date_field,
|
||||
self.top.get_widget("eer_date_stat"),
|
||||
self.window)
|
||||
|
||||
# set event_ref values
|
||||
self.role_selector.set_values(self.event_ref.get_role())
|
||||
self.ref_note_field.get_buffer().set_text(self.event_ref.get_note())
|
||||
|
||||
# set event values
|
||||
self.type_selector.set_values(self.event.get_type())
|
||||
place_handle = self.event.get_place_handle()
|
||||
if not place_handle:
|
||||
place_name = u""
|
||||
else:
|
||||
place_name = self.db.get_place_from_handle(place_handle).get_title()
|
||||
self.place_field.set_text(place_name)
|
||||
self.date_field.set_text(_dd.display(self.date))
|
||||
|
||||
self._create_tabbed_pages()
|
||||
|
||||
self.show()
|
||||
|
||||
def _add_page(self,page):
|
||||
self.notebook.insert_page(page)
|
||||
self.notebook.set_tab_label(page,page.get_tab_widget())
|
||||
return page
|
||||
|
||||
def _create_tabbed_pages(self):
|
||||
"""
|
||||
Creates the notebook tabs and inserts them into the main
|
||||
window.
|
||||
|
||||
"""
|
||||
|
||||
self.srcref_list = self._add_page(SourceEmbedList(
|
||||
self.state,self.uistate, self.track,
|
||||
self.event.source_list))
|
||||
self.note_tab = self._add_page(NoteTab(
|
||||
self.state, self.uistate, self.track,
|
||||
self.event.get_note_object()))
|
||||
self.gallery_tab = self._add_page(GalleryTab(
|
||||
self.state, self.uistate, self.track,
|
||||
self.event.get_media_list()))
|
||||
|
||||
def build_menu_names(self,eventref):
|
||||
if self.event:
|
||||
if self.event.get_type()[0] == RelLib.Event.CUSTOM:
|
||||
event_name = self.event.get_type()[1]
|
||||
else:
|
||||
try:
|
||||
event_name = Utils.personal_events[self.event.get_type()[0]]
|
||||
except:
|
||||
event_name = Utils.family_events[self.event.get_type()[0]]
|
||||
submenu_label = _('Event: %s') % event_name
|
||||
else:
|
||||
submenu_label = _('New Event')
|
||||
return (_('Event Reference Editor'),submenu_label)
|
||||
|
||||
def build_window_key(self,eventref):
|
||||
if self.event:
|
||||
return self.event.get_handle()
|
||||
else:
|
||||
return id(self)
|
||||
|
||||
def on_help_clicked(self,obj):
|
||||
pass
|
||||
|
||||
def on_ok_clicked(self,obj):
|
||||
|
||||
# first, save event if changed
|
||||
etype = self.type_selector.get_values()
|
||||
eplace_obj = get_place(self.place_field,self.pmap,self.db)
|
||||
self.update_event(etype,self.date,eplace_obj)
|
||||
|
||||
trans = self.db.transaction_begin()
|
||||
self.db.commit_event(self.event,trans)
|
||||
if self.event_added:
|
||||
self.db.transaction_commit(trans,_("Add Event"))
|
||||
else:
|
||||
self.db.transaction_commit(trans,_("Modify Event"))
|
||||
|
||||
# then, set properties of the event_ref
|
||||
self.event_ref.set_role(self.role_selector.get_values())
|
||||
self.event_ref.set_privacy(self.ref_privacy.get_active())
|
||||
self.close(None)
|
||||
|
||||
if self.update:
|
||||
self.update((self.event_ref,self.event))
|
||||
|
||||
def update_event(self,the_type,date,place):
|
||||
if place:
|
||||
if self.event.get_place_handle() != place.get_handle():
|
||||
self.event.set_place_handle(place.get_handle())
|
||||
else:
|
||||
if self.event.get_place_handle():
|
||||
self.event.set_place_handle("")
|
||||
|
||||
if self.event.get_type() != the_type:
|
||||
self.event.set_type(the_type)
|
||||
|
||||
dobj = self.event.get_date_object()
|
||||
|
||||
if not dobj.is_equal(date):
|
||||
self.event.set_date_object(date)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Delete Query class
|
||||
|
@ -32,6 +32,8 @@ import gobject
|
||||
import gtk
|
||||
|
||||
import AutoComp
|
||||
import DateHandler
|
||||
import DateEdit
|
||||
|
||||
class LinkLabel(gtk.EventBox):
|
||||
|
||||
@ -190,12 +192,13 @@ class TypeCellRenderer(gtk.CellRendererCombo):
|
||||
|
||||
class PrivacyButton:
|
||||
|
||||
def __init__(self,button,obj):
|
||||
def __init__(self,button,obj,readonly=False):
|
||||
self.button = button
|
||||
self.button.connect('toggled',self._on_toggle)
|
||||
self.tooltips = gtk.Tooltips()
|
||||
self.obj = obj
|
||||
self.set_active(obj.get_privacy())
|
||||
self.button.set_sensitive(not readonly)
|
||||
|
||||
def set_sensitive(self,val):
|
||||
self.button.set_sensitive(val)
|
||||
@ -213,28 +216,57 @@ class PrivacyButton:
|
||||
obj.remove(child)
|
||||
image = gtk.Image()
|
||||
if obj.get_active():
|
||||
image.set_from_icon_name('stock_lock',gtk.ICON_SIZE_BUTTON)
|
||||
image.set_from_icon_name('stock_lock',gtk.ICON_SIZE_MENU)
|
||||
self.tooltips.set_tip(obj,_('Record is private'))
|
||||
self.obj.set_privacy(True)
|
||||
else:
|
||||
image.set_from_icon_name('stock_lock-open',gtk.ICON_SIZE_BUTTON)
|
||||
image.set_from_icon_name('stock_lock-open',gtk.ICON_SIZE_MENU)
|
||||
self.tooltips.set_tip(obj,_('Record is public'))
|
||||
self.obj.set_privacy(False)
|
||||
image.show()
|
||||
obj.add(image)
|
||||
|
||||
class MonitoredEntry:
|
||||
|
||||
def __init__(self,obj,set_val,get_val,read_only=False):
|
||||
class MonitoredCheckbox:
|
||||
|
||||
def __init__(self,obj,button,set_val,get_val,on_toggle=None):
|
||||
self.button = button
|
||||
self.button.connect('toggled',self._on_toggle)
|
||||
self.on_toggle = on_toggle
|
||||
self.obj = obj
|
||||
self.set_val = set_val
|
||||
self.get_val = get_val
|
||||
self.set_active(get_val())
|
||||
|
||||
def _on_toggle(self,obj):
|
||||
self.set_val(obj.get_active())
|
||||
if self.on_toggle:
|
||||
self.on_toggle(get_val())
|
||||
|
||||
class MonitoredEntry:
|
||||
|
||||
def __init__(self,obj,set_val,get_val,read_only=False, changed=None):
|
||||
self.obj = obj
|
||||
self.set_val = set_val
|
||||
self.get_val = get_val
|
||||
self.changed = changed
|
||||
|
||||
if get_val():
|
||||
self.obj.set_text(get_val())
|
||||
self.obj.connect('changed', lambda x: self.set_val(unicode(x.get_text())))
|
||||
self.obj.connect('changed', self._on_change)
|
||||
self.obj.set_editable(not read_only)
|
||||
|
||||
def _on_change(self,obj):
|
||||
self.set_val(unicode(obj.get_text()))
|
||||
if self.changed:
|
||||
self.changed(obj)
|
||||
|
||||
def force_value(self,value):
|
||||
self.obj.set_text(value)
|
||||
|
||||
def enable(self,value):
|
||||
self.obj.set_sensitive(value)
|
||||
self.obj.set_editable(value)
|
||||
|
||||
class MonitoredText:
|
||||
|
||||
def __init__(self,obj,set_val,get_val,read_only=False):
|
||||
@ -275,7 +307,7 @@ class MonitoredType:
|
||||
|
||||
class MonitoredMenu:
|
||||
|
||||
def __init__(self,obj,set_val,get_val,mapping):
|
||||
def __init__(self,obj,set_val,get_val,mapping,readonly=False):
|
||||
self.set_val = set_val
|
||||
self.get_val = get_val
|
||||
|
||||
@ -286,7 +318,19 @@ class MonitoredMenu:
|
||||
self.obj.set_model(self.model)
|
||||
self.obj.set_active(get_val())
|
||||
self.obj.connect('changed',self.on_change)
|
||||
self.obj.set_sensitive(not readonly)
|
||||
|
||||
def on_change(self, obj):
|
||||
self.set_val(self.model.get_value(obj.get_active_iter(),1))
|
||||
|
||||
class MonitoredDate:
|
||||
|
||||
def __init__(self,field,button,value,window, readonly=False):
|
||||
self.date = value
|
||||
self.date_check = DateEdit.DateEdit(
|
||||
self.date, field, button, window)
|
||||
field.set_editable(not readonly)
|
||||
button.set_sensitive(not readonly)
|
||||
|
||||
field.set_text(DateHandler.displayer.display(self.date))
|
||||
|
||||
|
234
src/NameEdit.py
234
src/NameEdit.py
@ -53,8 +53,7 @@ import Spell
|
||||
import GrampsDisplay
|
||||
import DisplayState
|
||||
from DisplayTabs import *
|
||||
|
||||
from WindowUtils import GladeIf
|
||||
from GrampsWidgets import *
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -76,56 +75,17 @@ class NameEditor(DisplayState.ManagedWindow):
|
||||
return
|
||||
|
||||
self.name = name
|
||||
self.original_group_as = self.name.get_group_as()
|
||||
|
||||
self.top = gtk.glade.XML(const.gladeFile, "name_edit","gramps")
|
||||
self.gladeif = GladeIf(self.top)
|
||||
self.window = self.top.get_widget("name_edit")
|
||||
self.given_field = self.top.get_widget("alt_given")
|
||||
self.given_field.set_editable(not self.db.readonly)
|
||||
self.sort_as = self.top.get_widget("sort_as")
|
||||
self.sort_as.set_sensitive(not self.db.readonly)
|
||||
self.display_as = self.top.get_widget("display_as")
|
||||
self.display_as.set_sensitive(not self.db.readonly)
|
||||
self.group_as = self.top.get_widget("group_as")
|
||||
self.title_field = self.top.get_widget("alt_title")
|
||||
self.title_field.set_editable(not self.db.readonly)
|
||||
self.suffix_field = self.top.get_widget("alt_suffix")
|
||||
self.suffix_field.set_editable(not self.db.readonly)
|
||||
self.patronymic_field = self.top.get_widget("patronymic")
|
||||
self.patronymic_field.set_editable(not self.db.readonly)
|
||||
self.surname_field = self.top.get_widget("alt_surname")
|
||||
self.date = self.top.get_widget('date')
|
||||
self.date.set_editable(not self.db.readonly)
|
||||
|
||||
if self.name:
|
||||
self.date_obj = self.name.get_date_object()
|
||||
else:
|
||||
self.date_obj = RelLib.Date()
|
||||
self.name = RelLib.Name()
|
||||
|
||||
self.date.set_text(DateHandler.displayer.display(self.date_obj))
|
||||
|
||||
date_stat = self.top.get_widget("date_stat")
|
||||
date_stat.set_sensitive(not self.db.readonly)
|
||||
self.date_check = DateEdit.DateEdit(
|
||||
self.date_obj, self.date,
|
||||
date_stat, self.window)
|
||||
|
||||
self.prefix_field = self.top.get_widget("alt_prefix")
|
||||
self.prefix_field.set_editable(not self.db.readonly)
|
||||
|
||||
self.type_combo = self.top.get_widget("name_type")
|
||||
self.type_combo.set_sensitive(not self.db.readonly)
|
||||
|
||||
self.priv = self.top.get_widget("priv")
|
||||
self.notebook = self.top.get_widget("notebook")
|
||||
self.general_label = self.top.get_widget("general_tab")
|
||||
self.priv.set_sensitive(not self.db.readonly)
|
||||
self.group_over = self.top.get_widget('group_over')
|
||||
self.group_over.set_sensitive(not self.db.readonly)
|
||||
|
||||
self.type_selector = AutoComp.StandardCustomSelector(
|
||||
Utils.name_types, self.type_combo, RelLib.Name.CUSTOM,
|
||||
RelLib.Name.BIRTH)
|
||||
self.group_over = self.top.get_widget('group_over')
|
||||
self.group_over.connect('toggled',self.on_group_over_toggled)
|
||||
self.group_over.set_sensitive(not self.db.readonly)
|
||||
|
||||
full_name = NameDisplay.displayer.display_name(name)
|
||||
|
||||
@ -138,37 +98,86 @@ class NameEditor(DisplayState.ManagedWindow):
|
||||
|
||||
Utils.set_titles(self.window, alt_title, tmsg, _('Name Editor'))
|
||||
|
||||
self.gladeif.connect('name_edit','delete_event',self.on_delete_event)
|
||||
self.gladeif.connect('button119','clicked',self.close_window)
|
||||
self.gladeif.connect('button118','clicked',self.on_name_edit_ok_clicked)
|
||||
Utils.bold_label(self.general_label)
|
||||
|
||||
self._create_tabbed_pages()
|
||||
self._setup_fields()
|
||||
self._connect_signals()
|
||||
|
||||
if self.original_group_as and self.original_group_as != self.name.get_surname():
|
||||
self.group_over.set_active(True)
|
||||
|
||||
self.show()
|
||||
|
||||
def _connect_signals(self):
|
||||
self.window.connect('delete_event',self.on_delete_event)
|
||||
self.top.get_widget('button119').connect('clicked',self.close_window)
|
||||
self.top.get_widget('button131').connect('clicked',self.on_help_clicked)
|
||||
okbtn = self.top.get_widget('button118')
|
||||
okbtn.set_sensitive(not self.db.readonly)
|
||||
self.gladeif.connect('button131','clicked',self.on_help_clicked)
|
||||
self.gladeif.connect('group_over','toggled',self.on_group_over_toggled)
|
||||
okbtn.connect('clicked',self.on_name_edit_ok_clicked)
|
||||
|
||||
if name != None:
|
||||
self.given_field.set_text(name.get_first_name())
|
||||
self.surname_field.set_text(name.get_surname())
|
||||
self.title_field.set_text(name.get_title())
|
||||
self.suffix_field.set_text(name.get_suffix())
|
||||
self.prefix_field.set_text(name.get_surname_prefix())
|
||||
self.type_selector.set_values(name.get_type())
|
||||
self.patronymic_field.set_text(name.get_patronymic())
|
||||
self.priv.set_active(name.get_privacy())
|
||||
Utils.bold_label(self.general_label)
|
||||
self.display_as.set_active(name.get_display_as())
|
||||
self.sort_as.set_active(name.get_display_as())
|
||||
grp_as = name.get_group_as()
|
||||
if grp_as:
|
||||
self.group_as.set_text(name.get_group_as())
|
||||
else:
|
||||
self.group_as.set_text(name.get_surname())
|
||||
else:
|
||||
self.display_as.set_active(0)
|
||||
self.sort_as.set_active(0)
|
||||
def _setup_fields(self):
|
||||
self.group_as = MonitoredEntry(
|
||||
self.top.get_widget("group_as"), self.name.set_group_as,
|
||||
self.name.get_group_as, self.db.readonly)
|
||||
|
||||
self.surname_field.connect('changed',self.update_group_as)
|
||||
if not self.original_group_as:
|
||||
self.group_as.force_value(self.name.get_surname())
|
||||
|
||||
self.sort_as = MonitoredMenu(
|
||||
self.top.get_widget('sort_as'),self.name.set_sort_as,
|
||||
self.name.get_sort_as,
|
||||
[(_('Default (based on locale'),RelLib.Name.DEF),
|
||||
(_('Given name Family name'), RelLib.Name.FNLN),
|
||||
(_('Family name Given Name'), RelLib.Name.LNFN)],
|
||||
self.db.readonly)
|
||||
|
||||
self.display_as = MonitoredMenu(
|
||||
self.top.get_widget('display_as'),
|
||||
self.name.set_display_as, self.name.get_display_as,
|
||||
[(_('Default (based on locale'),RelLib.Name.DEF),
|
||||
(_('Given name Family name'), RelLib.Name.FNLN),
|
||||
(_('Family name Given Name'), RelLib.Name.LNFN)],
|
||||
self.db.readonly)
|
||||
|
||||
self.given_field = MonitoredEntry(
|
||||
self.top.get_widget("alt_given"), self.name.set_first_name,
|
||||
self.name.get_first_name, self.db.readonly)
|
||||
|
||||
self.title_field = MonitoredEntry(
|
||||
self.top.get_widget("alt_title"), self.name.set_title,
|
||||
self.name.get_title, self.db.readonly)
|
||||
|
||||
self.suffix_field = MonitoredEntry(
|
||||
self.top.get_widget("alt_suffix"), self.name.set_suffix,
|
||||
self.name.get_suffix, self.db.readonly)
|
||||
|
||||
self.patronymic_field = MonitoredEntry(
|
||||
self.top.get_widget("patronymic"), self.name.set_patronymic,
|
||||
self.name.get_patronymic, self.db.readonly)
|
||||
|
||||
self.surname_field = MonitoredEntry(
|
||||
self.top.get_widget("alt_surname"), self.name.set_surname,
|
||||
self.name.get_surname, self.db.readonly,
|
||||
self.update_group_as)
|
||||
|
||||
self.prefix_field = MonitoredEntry(
|
||||
self.top.get_widget("alt_prefix"), self.name.set_surname_prefix,
|
||||
self.name.get_surname_prefix, self.db.readonly)
|
||||
|
||||
self.date = MonitoredDate(self.top.get_widget("date"),
|
||||
self.top.get_widget("date_stat"),
|
||||
self.name.get_date_object(),self.window)
|
||||
|
||||
self.name_combo = MonitoredType(
|
||||
self.top.get_widget("name_type"), self.name.set_type,
|
||||
self.name.get_type, dict(Utils.name_types), RelLib.Name.CUSTOM)
|
||||
|
||||
self.privacy = PrivacyButton(
|
||||
self.top.get_widget("priv"), self.name)
|
||||
|
||||
def _create_tabbed_pages(self):
|
||||
self.srcref_list = self._add_page(SourceEmbedList(
|
||||
self.dbstate,self.uistate, self.track,
|
||||
self.name.source_list))
|
||||
@ -176,8 +185,6 @@ class NameEditor(DisplayState.ManagedWindow):
|
||||
self.dbstate, self.uistate, self.track,
|
||||
self.name.get_note_object()))
|
||||
|
||||
self.show()
|
||||
|
||||
def build_menu_names(self,name):
|
||||
if name:
|
||||
ntext = NameDisplay.displayer.display_name(name)
|
||||
@ -194,30 +201,25 @@ class NameEditor(DisplayState.ManagedWindow):
|
||||
|
||||
def update_group_as(self,obj):
|
||||
if not self.group_over.get_active():
|
||||
if self.name and self.name.get_group_as() != self.name.get_surname():
|
||||
if self.name.get_group_as() != self.name.get_surname():
|
||||
val = self.name.get_group_as()
|
||||
else:
|
||||
name = unicode(self.surname_field.get_text())
|
||||
name = self.name.get_surname()
|
||||
val = self.db.get_name_group_mapping(name)
|
||||
self.group_as.set_text(val)
|
||||
self.group_as.force_value(val)
|
||||
|
||||
def on_group_over_toggled(self,obj):
|
||||
if obj.get_active():
|
||||
self.group_as.set_sensitive(True)
|
||||
self.group_as.set_editable(True)
|
||||
else:
|
||||
field_value = unicode(self.surname_field.get_text())
|
||||
self.group_as.enable(obj.get_active())
|
||||
|
||||
if not obj.get_active():
|
||||
field_value = self.name.get_surname()
|
||||
mapping = self.db.get_name_group_mapping(field_value)
|
||||
self.group_as.set_text(mapping)
|
||||
self.group_as.set_sensitive(False)
|
||||
self.group_as.set_editable(False)
|
||||
|
||||
def on_delete_event(self,*obj):
|
||||
self.gladeif.close()
|
||||
self.close()
|
||||
|
||||
def close_window(self,*obj):
|
||||
self.gladeif.close()
|
||||
self.close()
|
||||
self.window.destroy()
|
||||
gc.collect()
|
||||
@ -227,40 +229,14 @@ class NameEditor(DisplayState.ManagedWindow):
|
||||
GrampsDisplay.help('adv-an')
|
||||
|
||||
def on_name_edit_ok_clicked(self,obj):
|
||||
first = unicode(self.given_field.get_text())
|
||||
last = unicode(self.surname_field.get_text())
|
||||
title = unicode(self.title_field.get_text())
|
||||
prefix = unicode(self.prefix_field.get_text())
|
||||
suffix = unicode(self.suffix_field.get_text())
|
||||
patronymic = unicode(self.patronymic_field.get_text())
|
||||
priv = self.priv.get_active()
|
||||
|
||||
the_type = self.type_selector.get_values()
|
||||
|
||||
# FIXME: this remained from gramps20 -- check
|
||||
# if const.NameTypesMap.has_value(mtype):
|
||||
# mtype = const.NameTypesMap.find_key(mtype)
|
||||
# if not mtype:
|
||||
# mtype = "Also Known As"
|
||||
|
||||
self.name.set_date_object(self.date_obj)
|
||||
|
||||
grp_as = unicode(self.group_as.get_text())
|
||||
srn = unicode(self.surname_field.get_text())
|
||||
|
||||
if self.name.get_display_as() != self.display_as.get_active():
|
||||
self.name.set_display_as(self.display_as.get_active())
|
||||
|
||||
prefix = unicode(self.prefix_field.get_text())
|
||||
if self.name.get_surname_prefix() != prefix:
|
||||
self.name.set_surname_prefix(prefix)
|
||||
|
||||
if self.name.get_sort_as() != self.sort_as.get_active():
|
||||
self.name.set_sort_as(self.sort_as.get_active())
|
||||
|
||||
if not self.group_over.get_active():
|
||||
self.name.set_group_as("")
|
||||
elif self.name.get_group_as() != grp_as:
|
||||
elif self.name.get_group_as() == self.name.get_surname():
|
||||
self.name.set_group_as("")
|
||||
elif self.name.get_group_as() != self.original_group_as:
|
||||
grp_as = self.name.get_group_as()
|
||||
srn = self.name.get_surname()
|
||||
if grp_as not in self.db.get_name_group_keys():
|
||||
from QuestionDialog import QuestionDialog2
|
||||
q = QuestionDialog2(
|
||||
@ -278,31 +254,7 @@ class NameEditor(DisplayState.ManagedWindow):
|
||||
else:
|
||||
self.name.set_group_as(grp_as)
|
||||
|
||||
self.update_name(first,last,suffix,patronymic,title,the_type,priv)
|
||||
self.callback(self.name)
|
||||
self.close_window(obj)
|
||||
|
||||
def update_name(self,first,last,suffix,patronymic,title,
|
||||
the_type,priv):
|
||||
|
||||
if self.name.get_first_name() != first:
|
||||
self.name.set_first_name(first)
|
||||
|
||||
if self.name.get_surname() != last:
|
||||
self.name.set_surname(last)
|
||||
|
||||
if self.name.get_suffix() != suffix:
|
||||
self.name.set_suffix(suffix)
|
||||
|
||||
if self.name.get_patronymic() != patronymic:
|
||||
self.name.set_patronymic(patronymic)
|
||||
|
||||
if self.name.get_title() != title:
|
||||
self.name.set_title(title)
|
||||
|
||||
if self.name.get_type() != the_type:
|
||||
self.name.set_type(the_type)
|
||||
|
||||
if self.name.get_privacy() != priv:
|
||||
self.name.set_privacy(priv)
|
||||
|
||||
|
420
src/gramps.glade
420
src/gramps.glade
@ -2,7 +2,6 @@
|
||||
<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
|
||||
|
||||
<glade-interface>
|
||||
<requires lib="gnome"/>
|
||||
|
||||
<widget class="GtkDialog" id="sourceEditor">
|
||||
<property name="visible">True</property>
|
||||
@ -10753,7 +10752,7 @@ Very High</property>
|
||||
<property name="layout_style">GTK_BUTTONBOX_END</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="button116">
|
||||
<widget class="GtkButton" id="cancel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_default">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
@ -10767,7 +10766,7 @@ Very High</property>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="button115">
|
||||
<widget class="GtkButton" id="ok">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_default">True</property>
|
||||
<property name="has_default">True</property>
|
||||
@ -10782,7 +10781,7 @@ Very High</property>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="button127">
|
||||
<widget class="GtkButton" id="help">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_default">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
@ -10838,8 +10837,8 @@ Very High</property>
|
||||
<widget class="GtkTable" id="table22">
|
||||
<property name="border_width">12</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="n_rows">3</property>
|
||||
<property name="n_columns">2</property>
|
||||
<property name="n_rows">2</property>
|
||||
<property name="n_columns">3</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="row_spacing">6</property>
|
||||
<property name="column_spacing">12</property>
|
||||
@ -10901,28 +10900,6 @@ Very High</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkCheckButton" id="priv">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes">_Private record</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="inconsistent">False</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="bottom_attach">3</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkEntry" id="attr_value">
|
||||
<property name="visible">True</property>
|
||||
@ -10937,13 +10914,44 @@ Very High</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="right_attach">3</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkToggleButton" id="private">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="relief">GTK_RELIEF_NONE</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="inconsistent">False</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkImage" id="image2684">
|
||||
<property name="visible">True</property>
|
||||
<property name="icon_size">1</property>
|
||||
<property name="icon_name">gtk-dialog-authentication</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">2</property>
|
||||
<property name="right_attach">3</property>
|
||||
<property name="top_attach">0</property>
|
||||
<property name="bottom_attach">1</property>
|
||||
<property name="x_options"></property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkComboBoxEntry" id="attr_menu">
|
||||
<property name="visible">True</property>
|
||||
@ -10956,7 +10964,6 @@ Very High</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">0</property>
|
||||
<property name="bottom_attach">1</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options">fill</property>
|
||||
</packing>
|
||||
</child>
|
||||
@ -11514,7 +11521,7 @@ Very High</property>
|
||||
<property name="layout_style">GTK_BUTTONBOX_END</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="button122">
|
||||
<widget class="GtkButton" id="cancel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_default">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
@ -11528,7 +11535,7 @@ Very High</property>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="button121">
|
||||
<widget class="GtkButton" id="ok">
|
||||
<property name="visible">True</property>
|
||||
<property name="tooltip" translatable="yes">Accept changes and close window</property>
|
||||
<property name="can_default">True</property>
|
||||
@ -11544,7 +11551,7 @@ Very High</property>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="button129">
|
||||
<widget class="GtkButton" id="help">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_default">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
@ -11872,55 +11879,6 @@ Very High</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkCheckButton" id="priv">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes">_Private record</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="inconsistent">False</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">5</property>
|
||||
<property name="right_attach">6</property>
|
||||
<property name="top_attach">4</property>
|
||||
<property name="bottom_attach">5</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="date_stat">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="relief">GTK_RELIEF_NONE</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkImage" id="date_stat_child">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">6</property>
|
||||
<property name="right_attach">7</property>
|
||||
<property name="top_attach">0</property>
|
||||
<property name="bottom_attach">1</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options">fill</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkEntry" id="address_start">
|
||||
<property name="visible">True</property>
|
||||
@ -11943,27 +11901,6 @@ Very High</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkEntry" id="street">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="editable">True</property>
|
||||
<property name="visibility">True</property>
|
||||
<property name="max_length">0</property>
|
||||
<property name="text" translatable="yes"></property>
|
||||
<property name="has_frame">True</property>
|
||||
<property name="invisible_char">*</property>
|
||||
<property name="activates_default">False</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">7</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkEntry" id="state">
|
||||
<property name="visible">True</property>
|
||||
@ -12005,6 +11942,85 @@ Very High</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkEntry" id="street">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="editable">True</property>
|
||||
<property name="visibility">True</property>
|
||||
<property name="max_length">0</property>
|
||||
<property name="text" translatable="yes"></property>
|
||||
<property name="has_frame">True</property>
|
||||
<property name="invisible_char">*</property>
|
||||
<property name="activates_default">False</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">6</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkToggleButton" id="private">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="relief">GTK_RELIEF_NONE</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="inconsistent">False</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkImage" id="image2685">
|
||||
<property name="visible">True</property>
|
||||
<property name="icon_size">1</property>
|
||||
<property name="icon_name">gtk-dialog-authentication</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">6</property>
|
||||
<property name="right_attach">7</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="x_options"></property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="date_stat">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="relief">GTK_RELIEF_NONE</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkImage" id="date_stat_child">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">6</property>
|
||||
<property name="right_attach">7</property>
|
||||
<property name="top_attach">0</property>
|
||||
<property name="bottom_attach">1</property>
|
||||
<property name="x_options"></property>
|
||||
<property name="y_options">fill</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
@ -12353,7 +12369,6 @@ Very High</property>
|
||||
</widget>
|
||||
|
||||
<widget class="GtkDialog" id="name_edit">
|
||||
<property name="visible">True</property>
|
||||
<property name="title" translatable="yes"></property>
|
||||
<property name="type">GTK_WINDOW_TOPLEVEL</property>
|
||||
<property name="window_position">GTK_WIN_POS_NONE</property>
|
||||
@ -12472,7 +12487,7 @@ Very High</property>
|
||||
<property name="border_width">12</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="n_rows">4</property>
|
||||
<property name="n_columns">4</property>
|
||||
<property name="n_columns">5</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="row_spacing">6</property>
|
||||
<property name="column_spacing">12</property>
|
||||
@ -12635,49 +12650,6 @@ Very High</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkEntry" id="alt_prefix">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="editable">True</property>
|
||||
<property name="visibility">True</property>
|
||||
<property name="max_length">0</property>
|
||||
<property name="text" translatable="yes"></property>
|
||||
<property name="has_frame">True</property>
|
||||
<property name="invisible_char">*</property>
|
||||
<property name="activates_default">False</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">3</property>
|
||||
<property name="right_attach">4</property>
|
||||
<property name="top_attach">0</property>
|
||||
<property name="bottom_attach">1</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkEntry" id="alt_given">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="has_focus">True</property>
|
||||
<property name="editable">True</property>
|
||||
<property name="visibility">True</property>
|
||||
<property name="max_length">0</property>
|
||||
<property name="text" translatable="yes"></property>
|
||||
<property name="has_frame">True</property>
|
||||
<property name="invisible_char">*</property>
|
||||
<property name="activates_default">False</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">4</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label595">
|
||||
<property name="visible">True</property>
|
||||
@ -12757,27 +12729,6 @@ Very High</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkEntry" id="alt_suffix">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="editable">True</property>
|
||||
<property name="visibility">True</property>
|
||||
<property name="max_length">0</property>
|
||||
<property name="text" translatable="yes"></property>
|
||||
<property name="has_frame">True</property>
|
||||
<property name="invisible_char">*</property>
|
||||
<property name="activates_default">False</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">3</property>
|
||||
<property name="right_attach">4</property>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="bottom_attach">3</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label594">
|
||||
<property name="visible">True</property>
|
||||
@ -12806,6 +12757,80 @@ Very High</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkEntry" id="alt_prefix">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="editable">True</property>
|
||||
<property name="visibility">True</property>
|
||||
<property name="max_length">0</property>
|
||||
<property name="text" translatable="yes"></property>
|
||||
<property name="has_frame">True</property>
|
||||
<property name="invisible_char">*</property>
|
||||
<property name="activates_default">False</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">3</property>
|
||||
<property name="right_attach">5</property>
|
||||
<property name="top_attach">0</property>
|
||||
<property name="bottom_attach">1</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkEntry" id="alt_given">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="has_focus">True</property>
|
||||
<property name="editable">True</property>
|
||||
<property name="visibility">True</property>
|
||||
<property name="max_length">0</property>
|
||||
<property name="text" translatable="yes"></property>
|
||||
<property name="has_frame">True</property>
|
||||
<property name="invisible_char">*</property>
|
||||
<property name="activates_default">False</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">4</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkToggleButton" id="priv">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="relief">GTK_RELIEF_NONE</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="inconsistent">False</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkImage" id="image2683">
|
||||
<property name="visible">True</property>
|
||||
<property name="icon_size">1</property>
|
||||
<property name="icon_name">gtk-dialog-authentication</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">4</property>
|
||||
<property name="right_attach">5</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="x_options">shrink</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkComboBoxEntry" id="name_type">
|
||||
<property name="visible">True</property>
|
||||
@ -12815,11 +12840,32 @@ Very High</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">3</property>
|
||||
<property name="right_attach">4</property>
|
||||
<property name="right_attach">5</property>
|
||||
<property name="top_attach">3</property>
|
||||
<property name="bottom_attach">4</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkEntry" id="alt_suffix">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="editable">True</property>
|
||||
<property name="visibility">True</property>
|
||||
<property name="max_length">0</property>
|
||||
<property name="text" translatable="yes"></property>
|
||||
<property name="has_frame">True</property>
|
||||
<property name="invisible_char">*</property>
|
||||
<property name="activates_default">False</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">3</property>
|
||||
<property name="right_attach">4</property>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="bottom_attach">3</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options">fill</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
@ -12845,34 +12891,12 @@ Very High</property>
|
||||
<widget class="GtkTable" id="table23">
|
||||
<property name="border_width">12</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="n_rows">6</property>
|
||||
<property name="n_rows">5</property>
|
||||
<property name="n_columns">3</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="row_spacing">6</property>
|
||||
<property name="column_spacing">12</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkCheckButton" id="priv">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes">P_rivate record</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="inconsistent">False</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">2</property>
|
||||
<property name="right_attach">3</property>
|
||||
<property name="top_attach">5</property>
|
||||
<property name="bottom_attach">6</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label417">
|
||||
<property name="visible">True</property>
|
||||
@ -12995,9 +13019,7 @@ Very High</property>
|
||||
<child>
|
||||
<widget class="GtkComboBox" id="display_as">
|
||||
<property name="visible">True</property>
|
||||
<property name="items" translatable="yes">Default (based on locale)
|
||||
Given name Family name
|
||||
Family name Given name
|
||||
<property name="items" translatable="yes">
|
||||
</property>
|
||||
<property name="add_tearoffs">False</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
@ -13159,9 +13181,7 @@ Family name Given name
|
||||
<child>
|
||||
<widget class="GtkComboBox" id="sort_as">
|
||||
<property name="visible">True</property>
|
||||
<property name="items" translatable="yes">Default (based on locale)
|
||||
Family name, Given name
|
||||
Given name, Family name</property>
|
||||
<property name="items" translatable="yes"></property>
|
||||
<property name="add_tearoffs">False</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
</widget>
|
||||
|
Loading…
Reference in New Issue
Block a user