Added navigation buttons for lists, Fixed translation problem

svn: r613
This commit is contained in:
Don Allingham 2001-12-13 16:24:30 +00:00
parent 2a23820fb7
commit 59d594b49b
10 changed files with 3207 additions and 2446 deletions

File diff suppressed because it is too large Load Diff

View File

@ -35,7 +35,7 @@ import gtk
from gnome.ui import GnomeErrorDialog, GnomeWarningDialog, GnomeQuestionDialog
import libglade
import GdkImlib
import GDK
from GDK import ACTION_COPY, BUTTON1_MASK, _2BUTTON_PRESS
#-------------------------------------------------------------------------
#
@ -84,14 +84,15 @@ class EditPerson:
self.lists_changed = 0
self.update_birth = 0
self.update_death = 0
pid = "i%s" % person.getId()
self.load_obj = None
self.top = libglade.GladeXML(const.editPersonFile, "editPerson")
self.gallery_widget = self.top.get_widget("photolist")
self.gallery = ImageSelect.Gallery(person, self.path, pid, self.gallery_widget, self.db)
gwidget = self.top.get_widget("photolist")
self.gallery = ImageSelect.Gallery(person, self.path, gwidget, self.db)
self.top.signal_autoconnect({
"destroy_passed_object" : self.on_cancel_edit,
"on_up_clicked" : self.on_up_clicked,
"on_down_clicked" : self.on_down_clicked,
"on_add_address_clicked" : self.on_add_addr_clicked,
"on_add_aka_clicked" : self.on_add_aka_clicked,
"on_add_attr_clicked" : self.on_add_attr_clicked,
@ -343,25 +344,25 @@ class EditPerson:
self.ldsseal_fam.set_menu(myMenu)
self.ldsseal_fam.set_history(hist)
self.event_list.drag_dest_set(gtk.DEST_DEFAULT_ALL,pycode_tgts,GDK.ACTION_COPY)
self.event_list.drag_source_set(GDK.BUTTON1_MASK, pycode_tgts, GDK.ACTION_COPY)
self.event_list.connect('drag_data_get', self.ev_source_drag_data_get)
self.event_list.connect('drag_data_received', self.ev_dest_drag_data_received)
self.event_list.drag_dest_set(gtk.DEST_DEFAULT_ALL,pycode_tgts,ACTION_COPY)
self.event_list.drag_source_set(BUTTON1_MASK, pycode_tgts, ACTION_COPY)
self.event_list.connect('drag_data_get', self.ev_drag_data_get)
self.event_list.connect('drag_data_received', self.ev_drag_data_received)
self.web_list.drag_dest_set(gtk.DEST_DEFAULT_ALL,pycode_tgts,GDK.ACTION_COPY)
self.web_list.drag_source_set(GDK.BUTTON1_MASK, pycode_tgts, GDK.ACTION_COPY)
self.web_list.connect('drag_data_get', self.url_source_drag_data_get)
self.web_list.connect('drag_data_received', self.url_dest_drag_data_received)
self.web_list.drag_dest_set(gtk.DEST_DEFAULT_ALL,pycode_tgts,ACTION_COPY)
self.web_list.drag_source_set(BUTTON1_MASK, pycode_tgts, ACTION_COPY)
self.web_list.connect('drag_data_get', self.url_drag_data_get)
self.web_list.connect('drag_data_received', self.url_drag_data_received)
self.attr_list.drag_dest_set(gtk.DEST_DEFAULT_ALL,pycode_tgts,GDK.ACTION_COPY)
self.attr_list.drag_source_set(GDK.BUTTON1_MASK, pycode_tgts, 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.drag_dest_set(gtk.DEST_DEFAULT_ALL,pycode_tgts,ACTION_COPY)
self.attr_list.drag_source_set(BUTTON1_MASK, pycode_tgts, ACTION_COPY)
self.attr_list.connect('drag_data_get', self.at_drag_data_get)
self.attr_list.connect('drag_data_received', self.at_drag_data_received)
self.addr_list.drag_dest_set(gtk.DEST_DEFAULT_ALL,pycode_tgts,GDK.ACTION_COPY)
self.addr_list.drag_source_set(GDK.BUTTON1_MASK, pycode_tgts, GDK.ACTION_COPY)
self.addr_list.connect('drag_data_get', self.ad_source_drag_data_get)
self.addr_list.connect('drag_data_received', self.ad_dest_drag_data_received)
self.addr_list.drag_dest_set(gtk.DEST_DEFAULT_ALL,pycode_tgts,ACTION_COPY)
self.addr_list.drag_source_set(BUTTON1_MASK, pycode_tgts, ACTION_COPY)
self.addr_list.connect('drag_data_get', self.ad_drag_data_get)
self.addr_list.connect('drag_data_received', self.ad_drag_data_received)
# draw lists
self.redraw_event_list()
@ -371,7 +372,7 @@ class EditPerson:
self.redraw_url_list()
self.window.show()
def ev_dest_drag_data_received(self,widget,context,x,y,selection_data,info,time):
def ev_drag_data_received(self,widget,context,x,y,selection_data,info,time):
if selection_data and selection_data.data:
exec 'data = %s' % selection_data.data
exec 'mytype = "%s"' % data[0]
@ -390,7 +391,7 @@ class EditPerson:
self.lists_changed = 1
self.redraw_event_list()
def ev_source_drag_data_get(self,widget, context, selection_data, info, time):
def ev_drag_data_get(self,widget, context, selection_data, info, time):
ev = widget.get_row_data(widget.focus_row)
bits_per = 8; # we're going to pass a string
@ -398,7 +399,7 @@ class EditPerson:
data = str(('pevent',self.person.getId(),pickled));
selection_data.set(selection_data.target, bits_per, data)
def url_dest_drag_data_received(self,widget,context,x,y,selection_data,info,time):
def url_drag_data_received(self,widget,context,x,y,selection_data,info,time):
if selection_data and selection_data.data:
exec 'data = %s' % selection_data.data
exec 'mytype = "%s"' % data[0]
@ -410,7 +411,7 @@ class EditPerson:
self.lists_changed = 1
self.redraw_url_list()
def url_source_drag_data_get(self,widget, context, selection_data, info, time):
def url_drag_data_get(self,widget, context, selection_data, info, time):
ev = widget.get_row_data(widget.focus_row)
bits_per = 8; # we're going to pass a string
@ -418,7 +419,7 @@ class EditPerson:
data = str(('url',self.person.getId(),pickled));
selection_data.set(selection_data.target, bits_per, data)
def at_dest_drag_data_received(self,widget,context,x,y,selection_data,info,time):
def at_drag_data_received(self,widget,context,x,y,selection_data,info,time):
if selection_data and selection_data.data:
exec 'data = %s' % selection_data.data
exec 'mytype = "%s"' % data[0]
@ -434,7 +435,7 @@ class EditPerson:
self.lists_changed = 1
self.redraw_attr_list()
def at_source_drag_data_get(self,widget, context, selection_data, info, time):
def at_drag_data_get(self,widget, context, selection_data, info, time):
ev = widget.get_row_data(widget.focus_row)
bits_per = 8; # we're going to pass a string
@ -442,7 +443,7 @@ class EditPerson:
data = str(('pattr',self.person.getId(),pickled));
selection_data.set(selection_data.target, bits_per, data)
def ad_dest_drag_data_received(self,widget,context,x,y,selection_data,info,time):
def ad_drag_data_received(self,widget,context,x,y,selection_data,info,time):
if selection_data and selection_data.data:
exec 'data = %s' % selection_data.data
exec 'mytype = "%s"' % data[0]
@ -458,7 +459,7 @@ class EditPerson:
self.lists_changed = 1
self.redraw_addr_list()
def ad_source_drag_data_get(self,widget, context, selection_data, info, time):
def ad_drag_data_get(self,widget, context, selection_data, info, time):
ev = widget.get_row_data(widget.focus_row)
bits_per = 8; # we're going to pass a string
@ -555,6 +556,20 @@ class EditPerson:
pname = self.person.getPrimaryName().getName()
AttrEdit.AttributeEditor(self,None,pname,const.personalAttributes)
def on_up_clicked(self,obj):
if len(obj.selection) == 0:
return
row = obj.selection[0]
if row != 0:
obj.select_row(row-1,0)
def on_down_clicked(self,obj):
if len(obj.selection) == 0:
return
row = obj.selection[0]
if row != obj.rows-1:
obj.select_row(row+1,0)
def on_event_add_clicked(self,obj):
"""Brings up the EventEditor for a new event"""
import EventEdit
@ -781,7 +796,7 @@ class EditPerson:
self.dplace.set_position(0)
def attr_double_click(self,obj,event):
if event.button == 1 and event.type == GDK._2BUTTON_PRESS:
if event.button == 1 and event.type == _2BUTTON_PRESS:
self.on_update_attr_clicked(obj)
def on_update_attr_clicked(self,obj):
@ -793,7 +808,7 @@ class EditPerson:
AttrEdit.AttributeEditor(self,attr,pname,const.personalAttributes)
def addr_double_click(self,obj,event):
if event.button == 1 and event.type == GDK._2BUTTON_PRESS:
if event.button == 1 and event.type == _2BUTTON_PRESS:
self.on_update_addr_clicked(obj)
def on_update_addr_clicked(self,obj):
@ -802,7 +817,7 @@ class EditPerson:
AddrEdit.AddressEditor(self,obj.get_row_data(obj.selection[0]))
def url_double_click(self,obj,event):
if event.button == 1 and event.type == GDK._2BUTTON_PRESS:
if event.button == 1 and event.type == _2BUTTON_PRESS:
self.on_update_url_clicked(obj)
def on_update_url_clicked(self,obj):
@ -814,7 +829,7 @@ class EditPerson:
UrlEdit.UrlEditor(self,pname,url)
def event_double_click(self,obj,event):
if event.button == 1 and event.type == GDK._2BUTTON_PRESS:
if event.button == 1 and event.type == _2BUTTON_PRESS:
self.on_event_update_clicked(obj)
def on_event_update_clicked(self,obj):
@ -878,7 +893,7 @@ class EditPerson:
self.attr_details_field.set_text(utils.get_detail_text(attr))
def aka_double_click(self,obj,event):
if event.button == 1 and event.type == GDK._2BUTTON_PRESS:
if event.button == 1 and event.type == _2BUTTON_PRESS:
self.on_aka_update_clicked(obj)
def on_aka_update_clicked(self,obj):
@ -1127,6 +1142,7 @@ class EditPerson:
self.not_loaded = 0
self.gallery.load_images()
def update_ord(func,ord,date,temple):
if not ord:
if (date or temple):

View File

@ -67,9 +67,8 @@ class EditPlace:
self.srcreflist = []
self.top_window = libglade.GladeXML(const.placesFile,"placeEditor")
idval = "p%s" % place.getId()
plwidget = self.top_window.get_widget("photolist")
self.gallery = ImageSelect.Gallery(place, self.path, idval, plwidget, db)
self.gallery = ImageSelect.Gallery(place, self.path, plwidget, db)
self.title = self.top_window.get_widget("place_title")
self.city = self.top_window.get_widget("city")
self.parish = self.top_window.get_widget("parish")

View File

@ -57,9 +57,8 @@ class EditSource:
self.ref_not_loaded = 1
self.top_window = libglade.GladeXML(const.gladeFile,"sourceEditor")
sid = "s%s" % source.getId()
plwidget = self.top_window.get_widget("photolist")
self.gallery = ImageSelect.Gallery(source, self.path, sid, plwidget, db)
self.gallery = ImageSelect.Gallery(source, self.path, plwidget, db)
self.title = self.top_window.get_widget("source_title")
self.author = self.top_window.get_widget("author")
self.pubinfo = self.top_window.get_widget("pubinfo")

View File

@ -69,10 +69,9 @@ class ImageSelect:
# window.
#
#---------------------------------------------------------------------
def __init__(self, path, prefix, db):
def __init__(self, path, db):
self.path = path;
self.db = db
self.prefix = prefix;
#-------------------------------------------------------------------------
#
@ -187,8 +186,8 @@ class ImageSelect:
#
#-------------------------------------------------------------------------
class Gallery(ImageSelect):
def __init__(self, dataobj, path, prefix, icon_list, db):
ImageSelect.__init__(self, path, prefix, db)
def __init__(self, dataobj, path, icon_list, db):
ImageSelect.__init__(self, path, db)
t = [
('STRING', 0, 0),
@ -210,7 +209,6 @@ class Gallery(ImageSelect):
# Remember arguments
self.path = path;
self.prefix = prefix;
self.dataobj = dataobj;
self.icon_list = icon_list;
@ -500,6 +498,8 @@ class LocalMediaProperties:
self.change_dialog.get_widget("notes").insert_defaults(photo.getNote())
self.change_dialog.signal_autoconnect({
"on_cancel_clicked" : utils.destroy_passed_object,
"on_up_clicked" : self.on_up_clicked,
"on_down_clicked" : self.on_down_clicked,
"on_ok_clicked" : self.on_ok_clicked,
"on_apply_clicked" : self.on_apply_clicked,
"on_attr_list_select_row" : self.on_attr_list_select_row,
@ -509,6 +509,20 @@ class LocalMediaProperties:
})
self.redraw_attr_list()
def on_up_clicked(self,obj):
if len(obj.selection) == 0:
return
row = obj.selection[0]
if row != 0:
obj.select_row(row-1,0)
def on_down_clicked(self,obj):
if len(obj.selection) == 0:
return
row = obj.selection[0]
if row != obj.rows-1:
obj.select_row(row+1,0)
def redraw_attr_list(self):
utils.redraw_list(self.alist,self.attr_list,disp_attr)
@ -588,6 +602,8 @@ class GlobalMediaProperties:
self.notes.insert_defaults(object.getNote())
self.change_dialog.signal_autoconnect({
"on_cancel_clicked" : utils.destroy_passed_object,
"on_up_clicked" : self.on_up_clicked,
"on_down_clicked" : self.on_down_clicked,
"on_ok_clicked" : self.on_ok_clicked,
"on_apply_clicked" : self.on_apply_clicked,
"on_attr_list_select_row": self.on_attr_list_select_row,
@ -599,6 +615,20 @@ class GlobalMediaProperties:
})
self.redraw_attr_list()
def on_up_clicked(self,obj):
if len(obj.selection) == 0:
return
row = obj.selection[0]
if row != 0:
obj.select_row(row-1,0)
def on_down_clicked(self,obj):
if len(obj.selection) == 0:
return
row = obj.selection[0]
if row != obj.rows-1:
obj.select_row(row+1,0)
def update_info(self):
fname = self.object.getPath()
if self.object.getLocal():

View File

@ -67,11 +67,12 @@ class Marriage:
self.top = libglade.GladeXML(const.marriageFile,"marriageEditor")
top_window = self.get_widget("marriageEditor")
fid = family.getId()
plwidget = self.top.get_widget("photolist")
self.gallery = ImageSelect.Gallery(family, self.path, fid, plwidget, db)
self.gallery = ImageSelect.Gallery(family, self.path, plwidget, db)
self.top.signal_autoconnect({
"destroy_passed_object" : self.on_cancel_edit,
"on_up_clicked" : self.on_up_clicked,
"on_down_clicked" : self.on_down_clicked,
"on_add_attr_clicked" : self.on_add_attr_clicked,
"on_addphoto_clicked" : self.gallery.on_add_photo_clicked,
"on_attr_list_select_row" : self.on_attr_list_select_row,
@ -165,6 +166,20 @@ class Marriage:
self.redraw_attr_list()
top_window.show()
def on_up_clicked(self,obj):
if len(obj.selection) == 0:
return
row = obj.selection[0]
if row != 0:
obj.select_row(row-1,0)
def on_down_clicked(self,obj):
if len(obj.selection) == 0:
return
row = obj.selection[0]
if row != obj.rows-1:
obj.select_row(row+1,0)
def ev_dest_drag_data_received(self,widget,context,x,y,selection_data,info,time):
if selection_data and selection_data.data:
exec 'data = %s' % selection_data.data

View File

@ -45,8 +45,9 @@ class PlaceView:
self.country_arrow = glade.get_widget("country_arrow")
self.update_display= update
self.sort_arrow = [ self.place_arrow, self.place_id_arrow, self.parish_arrow,
self.city_arrow, self.county_arrow, self.state_arrow,
self.sort_arrow = [ self.place_arrow, self.place_id_arrow,
self.parish_arrow, self.city_arrow,
self.county_arrow, self.state_arrow,
self.country_arrow ]
self.place_list.set_column_visibility(7,0)

View File

@ -5,7 +5,6 @@ import intl
import os
import gtk
import gnome.ui
import const
intl.textdomain("gramps")

View File

@ -895,12 +895,10 @@
<spacing>0</spacing>
<widget>
<class>GtkFrame</class>
<name>attr_type</name>
<border_width>5</border_width>
<label>No Attributes</label>
<label_xalign>0</label_xalign>
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
<class>GtkHBox</class>
<name>hbox6</name>
<homogeneous>False</homogeneous>
<spacing>0</spacing>
<child>
<padding>5</padding>
<expand>False</expand>
@ -908,168 +906,248 @@
</child>
<widget>
<class>GtkTable</class>
<name>table3</name>
<rows>2</rows>
<columns>3</columns>
<homogeneous>False</homogeneous>
<row_spacing>0</row_spacing>
<column_spacing>0</column_spacing>
<class>GtkFrame</class>
<name>attr_type</name>
<border_width>5</border_width>
<label>No Attributes</label>
<label_xalign>0</label_xalign>
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
<child>
<padding>0</padding>
<expand>True</expand>
<fill>True</fill>
</child>
<widget>
<class>GtkLabel</class>
<name>label138</name>
<label>Value</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>1</xalign>
<yalign>0.5</yalign>
<xpad>5</xpad>
<ypad>3</ypad>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
<top_attach>0</top_attach>
<bottom_attach>1</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<class>GtkTable</class>
<name>table3</name>
<rows>2</rows>
<columns>3</columns>
<homogeneous>False</homogeneous>
<row_spacing>0</row_spacing>
<column_spacing>0</column_spacing>
<widget>
<class>GtkLabel</class>
<name>attr_value</name>
<label></label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>0</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<child>
<left_attach>2</left_attach>
<right_attach>3</right_attach>
<top_attach>0</top_attach>
<bottom_attach>1</bottom_attach>
<xpad>3</xpad>
<widget>
<class>GtkLabel</class>
<name>label138</name>
<label>Value</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>1</xalign>
<yalign>0.5</yalign>
<xpad>5</xpad>
<ypad>3</ypad>
<xexpand>True</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
<top_attach>0</top_attach>
<bottom_attach>1</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<widget>
<class>GtkLabel</class>
<name>attrlabel</name>
<label>Details</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>1</xalign>
<yalign>0.5</yalign>
<xpad>5</xpad>
<ypad>3</ypad>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
<top_attach>1</top_attach>
<bottom_attach>2</bottom_attach>
<widget>
<class>GtkLabel</class>
<name>attr_value</name>
<label></label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>0</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<child>
<left_attach>2</left_attach>
<right_attach>3</right_attach>
<top_attach>0</top_attach>
<bottom_attach>1</bottom_attach>
<xpad>3</xpad>
<ypad>3</ypad>
<xexpand>True</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<widget>
<class>GtkLabel</class>
<name>attr_details</name>
<label></label>
<justify>GTK_JUSTIFY_LEFT</justify>
<wrap>False</wrap>
<xalign>0</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<child>
<left_attach>2</left_attach>
<right_attach>3</right_attach>
<top_attach>1</top_attach>
<bottom_attach>2</bottom_attach>
<xpad>3</xpad>
<widget>
<class>GtkLabel</class>
<name>attrlabel</name>
<label>Details</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>1</xalign>
<yalign>0.5</yalign>
<xpad>5</xpad>
<ypad>3</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
<top_attach>1</top_attach>
<bottom_attach>2</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<widget>
<class>GtkLabel</class>
<name>attr_details</name>
<label></label>
<justify>GTK_JUSTIFY_LEFT</justify>
<wrap>False</wrap>
<xalign>0</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<child>
<left_attach>2</left_attach>
<right_attach>3</right_attach>
<top_attach>1</top_attach>
<bottom_attach>2</bottom_attach>
<xpad>3</xpad>
<ypad>3</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<widget>
<class>GtkLabel</class>
<name>label142</name>
<label>:</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>0</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>3</ypad>
<child>
<left_attach>1</left_attach>
<right_attach>2</right_attach>
<top_attach>0</top_attach>
<bottom_attach>1</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<widget>
<class>GtkLabel</class>
<name>label143</name>
<label>:</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>0</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>3</ypad>
<child>
<left_attach>1</left_attach>
<right_attach>2</right_attach>
<top_attach>1</top_attach>
<bottom_attach>2</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
</widget>
</widget>
<widget>
<class>GtkVButtonBox</class>
<name>vbuttonbox1</name>
<layout_style>GTK_BUTTONBOX_DEFAULT_STYLE</layout_style>
<spacing>2</spacing>
<child_min_width>1</child_min_width>
<child_min_height>1</child_min_height>
<child_ipad_x>0</child_ipad_x>
<child_ipad_y>0</child_ipad_y>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>True</fill>
</child>
<widget>
<class>GtkButton</class>
<name>button96</name>
<can_default>True</can_default>
<can_focus>True</can_focus>
<signal>
<name>clicked</name>
<handler>on_up_clicked</handler>
<object>attr_list</object>
<last_modification_time>Thu, 13 Dec 2001 14:29:59 GMT</last_modification_time>
</signal>
<relief>GTK_RELIEF_NORMAL</relief>
<widget>
<class>GtkArrow</class>
<name>arrow1</name>
<arrow_type>GTK_ARROW_UP</arrow_type>
<shadow_type>GTK_SHADOW_OUT</shadow_type>
<xalign>0.5</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
</widget>
</widget>
<widget>
<class>GtkLabel</class>
<name>label142</name>
<label>:</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>0</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>3</ypad>
<child>
<left_attach>1</left_attach>
<right_attach>2</right_attach>
<top_attach>0</top_attach>
<bottom_attach>1</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<class>GtkButton</class>
<name>button97</name>
<can_default>True</can_default>
<can_focus>True</can_focus>
<signal>
<name>clicked</name>
<handler>on_down_clicked</handler>
<object>attr_list</object>
<last_modification_time>Thu, 13 Dec 2001 14:30:09 GMT</last_modification_time>
</signal>
<relief>GTK_RELIEF_NORMAL</relief>
<widget>
<class>GtkLabel</class>
<name>label143</name>
<label>:</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>0</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>3</ypad>
<child>
<left_attach>1</left_attach>
<right_attach>2</right_attach>
<top_attach>1</top_attach>
<bottom_attach>2</bottom_attach>
<widget>
<class>GtkArrow</class>
<name>arrow2</name>
<arrow_type>GTK_ARROW_DOWN</arrow_type>
<shadow_type>GTK_SHADOW_OUT</shadow_type>
<xalign>0.5</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
</widget>
</widget>
</widget>
@ -1816,12 +1894,10 @@
<spacing>0</spacing>
<widget>
<class>GtkFrame</class>
<name>attr_type</name>
<border_width>5</border_width>
<label>No Attributes</label>
<label_xalign>0</label_xalign>
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
<class>GtkHBox</class>
<name>hbox7</name>
<homogeneous>False</homogeneous>
<spacing>0</spacing>
<child>
<padding>5</padding>
<expand>False</expand>
@ -1829,168 +1905,248 @@
</child>
<widget>
<class>GtkTable</class>
<name>table5</name>
<rows>2</rows>
<columns>3</columns>
<homogeneous>False</homogeneous>
<row_spacing>0</row_spacing>
<column_spacing>0</column_spacing>
<class>GtkFrame</class>
<name>attr_type</name>
<border_width>5</border_width>
<label>No Attributes</label>
<label_xalign>0</label_xalign>
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
<child>
<padding>0</padding>
<expand>True</expand>
<fill>True</fill>
</child>
<widget>
<class>GtkLabel</class>
<name>label161</name>
<label>Value</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>1</xalign>
<yalign>0.5</yalign>
<xpad>5</xpad>
<ypad>3</ypad>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
<top_attach>0</top_attach>
<bottom_attach>1</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<class>GtkTable</class>
<name>table5</name>
<rows>2</rows>
<columns>3</columns>
<homogeneous>False</homogeneous>
<row_spacing>0</row_spacing>
<column_spacing>0</column_spacing>
<widget>
<class>GtkLabel</class>
<name>attr_value</name>
<label></label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>0</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<child>
<left_attach>2</left_attach>
<right_attach>3</right_attach>
<top_attach>0</top_attach>
<bottom_attach>1</bottom_attach>
<xpad>3</xpad>
<widget>
<class>GtkLabel</class>
<name>label161</name>
<label>Value</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>1</xalign>
<yalign>0.5</yalign>
<xpad>5</xpad>
<ypad>3</ypad>
<xexpand>True</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
<top_attach>0</top_attach>
<bottom_attach>1</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<widget>
<class>GtkLabel</class>
<name>label163</name>
<label>Details</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>1</xalign>
<yalign>0.5</yalign>
<xpad>5</xpad>
<ypad>3</ypad>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
<top_attach>1</top_attach>
<bottom_attach>2</bottom_attach>
<widget>
<class>GtkLabel</class>
<name>attr_value</name>
<label></label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>0</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<child>
<left_attach>2</left_attach>
<right_attach>3</right_attach>
<top_attach>0</top_attach>
<bottom_attach>1</bottom_attach>
<xpad>3</xpad>
<ypad>3</ypad>
<xexpand>True</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<widget>
<class>GtkLabel</class>
<name>attr_details</name>
<label></label>
<justify>GTK_JUSTIFY_LEFT</justify>
<wrap>False</wrap>
<xalign>0</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<child>
<left_attach>2</left_attach>
<right_attach>3</right_attach>
<top_attach>1</top_attach>
<bottom_attach>2</bottom_attach>
<xpad>3</xpad>
<widget>
<class>GtkLabel</class>
<name>label163</name>
<label>Details</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>1</xalign>
<yalign>0.5</yalign>
<xpad>5</xpad>
<ypad>3</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
<child>
<left_attach>0</left_attach>
<right_attach>1</right_attach>
<top_attach>1</top_attach>
<bottom_attach>2</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<widget>
<class>GtkLabel</class>
<name>attr_details</name>
<label></label>
<justify>GTK_JUSTIFY_LEFT</justify>
<wrap>False</wrap>
<xalign>0</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<child>
<left_attach>2</left_attach>
<right_attach>3</right_attach>
<top_attach>1</top_attach>
<bottom_attach>2</bottom_attach>
<xpad>3</xpad>
<ypad>3</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<widget>
<class>GtkLabel</class>
<name>label165</name>
<label>:</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>0</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>3</ypad>
<child>
<left_attach>1</left_attach>
<right_attach>2</right_attach>
<top_attach>0</top_attach>
<bottom_attach>1</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<widget>
<class>GtkLabel</class>
<name>label166</name>
<label>:</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>0</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>3</ypad>
<child>
<left_attach>1</left_attach>
<right_attach>2</right_attach>
<top_attach>1</top_attach>
<bottom_attach>2</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
</widget>
</widget>
<widget>
<class>GtkVButtonBox</class>
<name>vbuttonbox2</name>
<layout_style>GTK_BUTTONBOX_DEFAULT_STYLE</layout_style>
<spacing>2</spacing>
<child_min_width>1</child_min_width>
<child_min_height>1</child_min_height>
<child_ipad_x>0</child_ipad_x>
<child_ipad_y>0</child_ipad_y>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>True</fill>
</child>
<widget>
<class>GtkButton</class>
<name>button98</name>
<can_default>True</can_default>
<can_focus>True</can_focus>
<signal>
<name>clicked</name>
<handler>on_up_clicked</handler>
<object>attr_list</object>
<last_modification_time>Thu, 13 Dec 2001 14:29:59 GMT</last_modification_time>
</signal>
<relief>GTK_RELIEF_NORMAL</relief>
<widget>
<class>GtkArrow</class>
<name>arrow3</name>
<arrow_type>GTK_ARROW_UP</arrow_type>
<shadow_type>GTK_SHADOW_OUT</shadow_type>
<xalign>0.5</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
</widget>
</widget>
<widget>
<class>GtkLabel</class>
<name>label165</name>
<label>:</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>0</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>3</ypad>
<child>
<left_attach>1</left_attach>
<right_attach>2</right_attach>
<top_attach>0</top_attach>
<bottom_attach>1</bottom_attach>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
<class>GtkButton</class>
<name>button99</name>
<can_default>True</can_default>
<can_focus>True</can_focus>
<signal>
<name>clicked</name>
<handler>on_down_clicked</handler>
<object>attr_list</object>
<last_modification_time>Thu, 13 Dec 2001 14:30:09 GMT</last_modification_time>
</signal>
<relief>GTK_RELIEF_NORMAL</relief>
<widget>
<class>GtkLabel</class>
<name>label166</name>
<label>:</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>0</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>3</ypad>
<child>
<left_attach>1</left_attach>
<right_attach>2</right_attach>
<top_attach>1</top_attach>
<bottom_attach>2</bottom_attach>
<widget>
<class>GtkArrow</class>
<name>arrow4</name>
<arrow_type>GTK_ARROW_DOWN</arrow_type>
<shadow_type>GTK_SHADOW_OUT</shadow_type>
<xalign>0.5</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<xexpand>False</xexpand>
<yexpand>False</yexpand>
<xshrink>False</xshrink>
<yshrink>False</yshrink>
<xfill>True</xfill>
<yfill>False</yfill>
</child>
</widget>
</widget>
</widget>
</widget>

File diff suppressed because it is too large Load Diff