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

View File

@ -67,9 +67,8 @@ class EditPlace:
self.srcreflist = [] self.srcreflist = []
self.top_window = libglade.GladeXML(const.placesFile,"placeEditor") self.top_window = libglade.GladeXML(const.placesFile,"placeEditor")
idval = "p%s" % place.getId()
plwidget = self.top_window.get_widget("photolist") 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.title = self.top_window.get_widget("place_title")
self.city = self.top_window.get_widget("city") self.city = self.top_window.get_widget("city")
self.parish = self.top_window.get_widget("parish") self.parish = self.top_window.get_widget("parish")

View File

@ -57,9 +57,8 @@ class EditSource:
self.ref_not_loaded = 1 self.ref_not_loaded = 1
self.top_window = libglade.GladeXML(const.gladeFile,"sourceEditor") self.top_window = libglade.GladeXML(const.gladeFile,"sourceEditor")
sid = "s%s" % source.getId()
plwidget = self.top_window.get_widget("photolist") 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.title = self.top_window.get_widget("source_title")
self.author = self.top_window.get_widget("author") self.author = self.top_window.get_widget("author")
self.pubinfo = self.top_window.get_widget("pubinfo") self.pubinfo = self.top_window.get_widget("pubinfo")

View File

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

View File

@ -67,11 +67,12 @@ class Marriage:
self.top = libglade.GladeXML(const.marriageFile,"marriageEditor") self.top = libglade.GladeXML(const.marriageFile,"marriageEditor")
top_window = self.get_widget("marriageEditor") top_window = self.get_widget("marriageEditor")
fid = family.getId()
plwidget = self.top.get_widget("photolist") 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({ self.top.signal_autoconnect({
"destroy_passed_object" : self.on_cancel_edit, "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_add_attr_clicked" : self.on_add_attr_clicked,
"on_addphoto_clicked" : self.gallery.on_add_photo_clicked, "on_addphoto_clicked" : self.gallery.on_add_photo_clicked,
"on_attr_list_select_row" : self.on_attr_list_select_row, "on_attr_list_select_row" : self.on_attr_list_select_row,
@ -165,6 +166,20 @@ class Marriage:
self.redraw_attr_list() self.redraw_attr_list()
top_window.show() 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): def ev_dest_drag_data_received(self,widget,context,x,y,selection_data,info,time):
if selection_data and selection_data.data: if selection_data and selection_data.data:
exec 'data = %s' % 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.country_arrow = glade.get_widget("country_arrow")
self.update_display= update self.update_display= update
self.sort_arrow = [ self.place_arrow, self.place_id_arrow, self.parish_arrow, self.sort_arrow = [ self.place_arrow, self.place_id_arrow,
self.city_arrow, self.county_arrow, self.state_arrow, self.parish_arrow, self.city_arrow,
self.county_arrow, self.state_arrow,
self.country_arrow ] self.country_arrow ]
self.place_list.set_column_visibility(7,0) self.place_list.set_column_visibility(7,0)

View File

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

View File

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

File diff suppressed because it is too large Load Diff