* src/AutoComp.py (StandardCustomSelector.__init__): Compare

active_key to None.
* src/gramps.glade (marriageDialog): Remove displayed strings from
the Sttributes tab.
* src/Marriage.py: Delegate attribute handling to ListBox.
* src/ListBox.py (AttrListBox): Support both personal and family
attributes.


svn: r4815
This commit is contained in:
Alex Roitman 2005-06-09 01:18:03 +00:00
parent 27c0af8356
commit f5ffcaeee7
5 changed files with 161 additions and 442 deletions

View File

@ -30,6 +30,14 @@
* src/Utils.py: Minor.
* src/gramps.glade: Minor update.
* src/AutoComp.py (StandardCustomSelector.__init__): Compare
active_key to None.
* src/gramps.glade (marriageDialog): Remove displayed strings from
the Sttributes tab.
* src/Marriage.py: Delegate attribute handling to ListBox.
* src/ListBox.py (AttrListBox): Support both personal and family
attributes.
2005-06-08 Martin Hawlisch <Martin.Hawlisch@gmx.de>
* src/EventView.py (column_names): Add missing column
* src/RepositoryView.py (column_names): Add missing columns

View File

@ -142,7 +142,7 @@ class StandardCustomSelector:
self.selector.set_text_column(1)
else:
self.selector = gtk.ComboBoxEntry(self.store,1)
if self.active_key:
if self.active_key != None:
self.selector.set_active(self.active_index)
# make autocompletion work

View File

@ -217,11 +217,16 @@ class ReorderListBox(ListBox):
class AttrListBox(ReorderListBox):
def __init__(self, parent, person, obj, label, button_list):
def __init__(self, parent, primary, obj, label, button_list):
custom_str = Utils.personal_attributes[RelLib.Attribute.CUSTOM]
if primary.__class__.__name__ == 'Person':
self.attr_dict = Utils.personal_attributes
elif primary.__class__.__name__ == 'Family':
self.attr_dict = Utils.family_attributes
custom_str = self.attr_dict[RelLib.Attribute.CUSTOM]
attrlist = filter(lambda x: x != custom_str,
Utils.personal_attributes.values())
self.attr_dict.values())
attrlist.sort(locale.strcoll)
titles = [
@ -232,12 +237,12 @@ class AttrListBox(ReorderListBox):
(_('Note'), NOSORT, 50, TOGGLE, None, None),
]
self.data = person.get_attribute_list()[:]
ListBox.__init__(self, parent, person, obj, label,
self.data = primary.get_attribute_list()[:]
ListBox.__init__(self, parent, primary, obj, label,
button_list, titles)
self.attr_name_map,self.attr_val_map = self.build_maps(
RelLib.Attribute.CUSTOM,Utils.personal_attributes)
RelLib.Attribute.CUSTOM,self.attr_dict)
def set_type(self,index,value):
val = self.attr_name_map.get(value,RelLib.Attribute.CUSTOM)
@ -253,7 +258,7 @@ class AttrListBox(ReorderListBox):
def add(self,obj):
"""Brings up the AttributeEditor for a new attribute"""
AttrEdit.AttributeEditor(self.parent, None, self.name,
Utils.personal_attributes,
self.attr_dict,
self.edit_callback,self.parent.window)
def update(self,obj):
@ -261,7 +266,7 @@ class AttrListBox(ReorderListBox):
if node:
attr = self.list_model.get_object(node)
AttrEdit.AttributeEditor(self.parent, attr, self.name,
Utils.personal_attributes,
self.attr_dict,
self.edit_callback,self.parent.window)
def display_data(self,attr):
@ -270,10 +275,10 @@ class AttrListBox(ReorderListBox):
etype = attr.get_type()
if etype[0] == RelLib.Attribute.CUSTOM \
or not Utils.personal_attributes.has_key(etype[0]):
or not self.attr_dict.has_key(etype[0]):
name = etype[1]
else:
name = Utils.personal_attributes[etype[0]]
name = self.attr_dict[etype[0]]
return [name, attr.get_value(), has_source, has_note]

View File

@ -115,23 +115,14 @@ class Marriage:
"on_help_marriage_editor" : self.on_help_clicked,
"on_up_clicked" : self.on_up_clicked,
"on_down_clicked" : self.on_down_clicked,
"on_attr_up_clicked" : self.on_attr_up_clicked,
"on_attr_down_clicked" : self.on_attr_down_clicked,
"on_add_attr_clicked" : self.on_add_attr_clicked,
"on_delete_attr_clicked" : self.on_delete_attr_clicked,
"on_addphoto_clicked" : self.gallery.on_add_media_clicked,
"on_selectphoto_clicked" : self.gallery.on_select_media_clicked,
"on_close_marriage_editor" : self.on_close_marriage_editor,
#"on_delete_event" : self.on_delete_event,
"on_lds_src_clicked" : self.lds_src_clicked,
"on_lds_note_clicked" : self.lds_note_clicked,
"on_deletephoto_clicked" : self.gallery.on_delete_media_clicked,
"on_edit_photo_clicked" : self.gallery.on_edit_media_clicked,
"on_edit_properties_clicked": self.gallery.popup_change_description,
#"on_marriageAddBtn_clicked" : self.on_add_clicked,
#"on_event_update_clicked" : self.on_event_update_clicked,
"on_attr_update_clicked" : self.on_update_attr_clicked,
#"on_marriageDeleteBtn_clicked" : self.on_delete_clicked,
"on_switch_page" : self.on_switch_page
})
@ -159,11 +150,6 @@ class Marriage:
# widgets
self.complete = self.get_widget('complete')
self.complete.set_sensitive(mode)
#self.date_field = self.get_widget("marriageDate")
#self.place_field = self.get_widget("marriagePlace")
#self.cause_field = self.get_widget("marriageCause")
#self.name_field = self.get_widget("marriageEventName")
#self.descr_field = self.get_widget("marriageDescription")
self.type_field = self.get_widget("marriage_type")
self.type_field.set_sensitive(mode)
self.notes_field = self.get_widget("marriageNotes")
@ -171,16 +157,13 @@ class Marriage:
self.gid = self.get_widget("gid")
self.gid.set_editable(mode)
self.attr_list = self.get_widget("attr_list")
self.attr_type = self.get_widget("attr_type")
self.attr_value = self.get_widget("attr_value")
#self.event_src_field = self.get_widget("event_srcinfo")
#self.event_conf_field = self.get_widget("event_conf")
event_add_btn = self.get_widget("marriage_add")
event_edit_btn = self.get_widget("marriage_edit")
event_delete_btn = self.get_widget("marriage_del")
event_sel_btn = self.get_widget("marriage_sel")
self.attr_src_field = self.get_widget("attr_srcinfo")
self.attr_conf_field = self.get_widget("attr_conf")
attr_add_btn = self.get_widget("attr_add")
attr_edit_btn = self.get_widget("attr_edit")
attr_del_btn = self.get_widget("attr_del")
self.lds_date = self.get_widget("lds_date")
self.lds_date.set_editable(mode)
self.lds_date_led = self.get_widget("lds_date_stat")
@ -205,7 +188,6 @@ class Marriage:
self.preform = self.get_widget("mar_preform")
self.preform.set_sensitive(mode)
#self.ereflist = family.get_event_ref_list()[:]
self.alist = family.get_attribute_list()[:]
self.lists_changed = 0
@ -214,16 +196,6 @@ class Marriage:
# set initial data
self.gallery.load_images()
#etitles = [(_('Event'),-1,100),(_('Date'),-1,125),(_('Place'),-1,150)]
atitles = [(_('Attribute'),-1,150),(_('Value'),-1,150)]
#self.etree = ListModel.ListModel(self.event_list, etitles,
# self.on_select_row,
# self.on_event_update_clicked)
self.atree = ListModel.ListModel(self.attr_list, atitles,
self.on_attr_list_select_row,
self.on_update_attr_clicked)
# event display
self.event_box = ListBox.EventListBox(
self, family, self.event_ref_list, self.events_label,
@ -236,6 +208,13 @@ class Marriage:
frel = family.get_relationship()
self.type_selector.set_values(frel)
# attribute display
self.attr_box = ListBox.AttrListBox(
self, family, self.attr_list, self.attr_label,
[attr_add_btn,attr_edit_btn,attr_del_btn])
self.attr_box.redraw()
self.gid.set_text(family.get_gramps_id())
@ -286,17 +265,17 @@ class Marriage:
# self.ev_dest_drag_data_received)
#self.event_list.connect('drag_begin', self.ev_drag_begin)
self.attr_list.drag_dest_set(gtk.DEST_DEFAULT_ALL,
[DdTargets.FAMILY_ATTRIBUTE.target()],
gtk.gdk.ACTION_COPY)
self.attr_list.drag_source_set(gtk.gdk.BUTTON1_MASK,
[DdTargets.FAMILY_ATTRIBUTE.target()],
gtk.gdk.ACTION_COPY)
self.attr_list.connect('drag_data_get',
self.at_source_drag_data_get)
self.attr_list.connect('drag_data_received',
self.at_dest_drag_data_received)
self.attr_list.connect('drag_begin', self.at_drag_begin)
#self.attr_list.drag_dest_set(gtk.DEST_DEFAULT_ALL,
# [DdTargets.FAMILY_ATTRIBUTE.target()],
# gtk.gdk.ACTION_COPY)
#self.attr_list.drag_source_set(gtk.gdk.BUTTON1_MASK,
# [DdTargets.FAMILY_ATTRIBUTE.target()],
# gtk.gdk.ACTION_COPY)
#self.attr_list.connect('drag_data_get',
# self.at_source_drag_data_get)
#self.attr_list.connect('drag_data_received',
# self.at_dest_drag_data_received)
#self.attr_list.connect('drag_begin', self.at_drag_begin)
# set notes data
self.notes_buffer = self.notes_field.get_buffer()
@ -313,8 +292,6 @@ class Marriage:
self.top.get_widget('add_src'), self.top.get_widget('edit_src'),
self.top.get_widget('del_src'), self.db.readonly)
#self.redraw_event_list()
self.redraw_attr_list()
self.add_itself_to_winsmenu()
self.top.get_widget('ok').set_sensitive(not self.db.readonly)
@ -536,7 +513,7 @@ class Marriage:
def update_lists(self):
eref_list = [event_ref for (event_ref,event) in self.event_box.data]
self.family.set_event_ref_list(eref_list)
self.family.set_attribute_list(self.alist)
self.family.set_attribute_list(self.attr_box.data)
def attr_edit_callback(self,attr):
self.redraw_attr_list()
@ -739,11 +716,6 @@ class Marriage:
import EventEdit
EventEdit.EventRefEditor(None,None,self.family,self.db,
self.event_box.edit_callback,self)
#name = Utils.family_name(self.family,self.db)
#EventEdit.EventRefEditor(None,self.family, self.db,None,self)
#self,name, Utils.family_events,
#None, None, 0, self.event_edit_callback,
#RelLib.Event.MARRIAGE, self.db.readonly)
def on_event_update_clicked(self,obj):
import EventEdit
@ -863,6 +835,8 @@ class Marriage:
def on_switch_page(self,obj,a,page):
if page == 0:
self.event_box.redraw()
elif page == 1:
self.attr_box.redraw()
text = unicode(self.notes_buffer.get_text(self.notes_buffer.get_start_iter(),
self.notes_buffer.get_end_iter(),False))
if text:

View File

@ -13224,396 +13224,29 @@ tories&lt;/b&gt;</property>
</child>
<child>
<widget class="GtkVBox" id="vbox34">
<widget class="GtkHBox" id="hbox21">
<property name="border_width">6</property>
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<property name="spacing">6</property>
<child>
<widget class="GtkTable" id="table13">
<property name="border_width">12</property>
<widget class="GtkScrolledWindow" id="scrolledwindow23">
<property name="visible">True</property>
<property name="n_rows">6</property>
<property name="n_columns">5</property>
<property name="homogeneous">False</property>
<property name="row_spacing">6</property>
<property name="column_spacing">12</property>
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_IN</property>
<property name="window_placement">GTK_CORNER_TOP_LEFT</property>
<child>
<widget class="GtkLabel" id="label220">
<widget class="GtkTreeView" id="attr_list">
<property name="visible">True</property>
<property name="label" translatable="yes">Value</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_CENTER</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="can_focus">True</property>
<property name="headers_visible">True</property>
<property name="rules_hint">False</property>
<property name="reorderable">False</property>
<property name="enable_search">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="GtkLabel" id="label243">
<property name="visible">True</property>
<property name="label" translatable="yes">Confidence:</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_CENTER</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">3</property>
<property name="right_attach">4</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="label252">
<property name="visible">True</property>
<property name="label" translatable="yes">Name:</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</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="label253">
<property name="visible">True</property>
<property name="label" translatable="yes">Type:</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label222">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Primary source&lt;/b&gt;</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_CENTER</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">5</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="GtkLabel" id="label251">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Attributes&lt;/b&gt;</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">5</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="attr_value">
<property name="visible">True</property>
<property name="label" translatable="yes"></property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_CENTER</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">5</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="GtkLabel" id="attr_srcinfo">
<property name="visible">True</property>
<property name="label" translatable="yes"></property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</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="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="attr_conf">
<property name="visible">True</property>
<property name="label" translatable="yes"></property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_CENTER</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">4</property>
<property name="right_attach">5</property>
<property name="top_attach">5</property>
<property name="bottom_attach">6</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="attr_type">
<property name="visible">True</property>
<property name="label" translatable="yes"></property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">5</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="hbox21">
<property name="border_width">6</property>
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">6</property>
<child>
<widget class="GtkScrolledWindow" id="scrolledwindow23">
<property name="visible">True</property>
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_IN</property>
<property name="window_placement">GTK_CORNER_TOP_LEFT</property>
<child>
<widget class="GtkTreeView" id="attr_list">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="headers_visible">True</property>
<property name="rules_hint">False</property>
<property name="reorderable">False</property>
<property name="enable_search">True</property>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vbox40">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">6</property>
<child>
<widget class="GtkButton" id="attr_add">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Create a new attribute for this marriage</property>
<property name="can_focus">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_add_attr_clicked" object="attr_list"/>
<child>
<widget class="GtkImage" id="image2299">
<property name="visible">True</property>
<property name="stock">gtk-add</property>
<property name="icon_size">4</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="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="button118">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_attr_update_clicked" last_modification_time="Thu, 08 May 2003 17:12:07 GMT"/>
<child>
<widget class="GtkImage" id="image2300">
<property name="visible">True</property>
<property name="pixbuf">edit_sm.png</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="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="attr_del">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Delete the selected attribute</property>
<property name="can_focus">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_delete_attr_clicked" object="attr_list"/>
<child>
<widget class="GtkImage" id="image2301">
<property name="visible">True</property>
<property name="stock">gtk-remove</property>
<property name="icon_size">4</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="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
@ -13622,6 +13255,105 @@ tories&lt;/b&gt;</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vbox40">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">6</property>
<child>
<widget class="GtkButton" id="attr_add">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Create a new attribute for this marriage</property>
<property name="can_focus">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_add_attr_clicked" object="attr_list"/>
<child>
<widget class="GtkImage" id="image2299">
<property name="visible">True</property>
<property name="stock">gtk-add</property>
<property name="icon_size">4</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="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="attr_edit">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_attr_update_clicked" last_modification_time="Thu, 08 May 2003 17:12:07 GMT"/>
<child>
<widget class="GtkImage" id="image2300">
<property name="visible">True</property>
<property name="pixbuf">edit_sm.png</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="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="attr_del">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Delete the selected attribute</property>
<property name="can_focus">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_delete_attr_clicked" object="attr_list"/>
<child>
<widget class="GtkImage" id="image2301">
<property name="visible">True</property>
<property name="stock">gtk-remove</property>
<property name="icon_size">4</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="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="tab_expand">False</property>