Commit 3535961a authored by Eitan Isaacson's avatar Eitan Isaacson

* plugins/Makefile.am:

	* plugins/event_monitor.py:
	* plugins/event_monitor.ui:
	* plugins/interface_view.py:
	* plugins/interface_view.ui:
	* plugins/script_recorder.py:
	* plugins/script_recorder.ui:
	* plugins/validate.py:
	* plugins/validate.ui:
	* po/POTFILES.in: Migrated to GtkBuilder (bug 572207).
parent 5f8fc2fc
2009-05-15 Eitan Isaacson <eitan@ascender.com>
* plugins/Makefile.am:
* plugins/event_monitor.py:
* plugins/event_monitor.ui:
* plugins/interface_view.py:
* plugins/interface_view.ui:
* plugins/script_recorder.py:
* plugins/script_recorder.ui:
* plugins/validate.py:
* plugins/validate.ui:
* po/POTFILES.in: Migrated to GtkBuilder (bug 572207).
2009-05-04 Eitan Isaacson <eitan@ascender.com>
* NEWS:
......
pluginsdir = $(datadir)/$(PACKAGE)/plugins
plugins_DATA = api_view.py \
console.py \
event_monitor.glade \
event_monitor.ui \
event_monitor.py \
interface_view.glade \
interface_view.ui \
interface_view.py \
ipython_view.py \
quick_select.py \
script_recorder.glade \
script_recorder.ui \
script_recorder.py \
validate.glade \
validate.ui \
validate.py
EXTRA_DIST = $(plugins_DATA)
This diff is collapsed.
......@@ -20,8 +20,8 @@ from accerciser.i18n import _, N_
import pango
from gtk import keysyms, gdk
GLADE_FILE = os.path.join(os.path.dirname(__file__),
'event_monitor.glade')
UI_FILE = os.path.join(os.path.dirname(__file__),
'event_monitor.ui')
class EventMonitor(ViewportPlugin):
'''
......@@ -31,8 +31,8 @@ class EventMonitor(ViewportPlugin):
Either source_app and source_acc for selected applications and accessibles
respectively. Or everything.
@type source_filter: string
@ivar main_xml: The main event monitor glade file.
@type main_xml: gtk.glade.XML
@ivar main_xml: The main event monitor gtkbuilder file.
@type main_xml: gtk.GtkBuilder
@ivar monitor_toggle: Toggle button for turining monitoring on and off.
@type monitor_toggle: gtk.ToggleButton
@ivar listen_list: List of at-spi events the monitor is currently listening
......@@ -68,20 +68,21 @@ class EventMonitor(ViewportPlugin):
self._onClearlog,
keysyms.t, gdk.MOD1_MASK | gdk.CONTROL_MASK)]
self.source_filter = None
self.main_xml = gtk.glade.XML(GLADE_FILE, 'monitor_vpaned')
vpaned = self.main_xml.get_widget('monitor_vpaned')
self.main_xml = gtk.Builder()
self.main_xml.add_from_file(UI_FILE)
vpaned = self.main_xml.get_object('monitor_vpaned')
self.plugin_area.add(vpaned)
self._initTreeView()
self.events_model = self.main_xml.get_object('events_treestore')
self._popEventsModel()
self._initTextView()
self.monitor_toggle = self.main_xml.get_widget('monitor_toggle')
self.monitor_toggle = self.main_xml.get_object('monitor_toggle')
self.listen_list = []
self.node.connect('accessible-changed', self._onNodeUpdated)
self.main_xml.signal_autoconnect(self)
self.main_xml.connect_signals(self)
self.show_all()
def _onStartStop(self):
......@@ -108,38 +109,11 @@ class EventMonitor(ViewportPlugin):
events.sort()
gobject.idle_add(self._appendChildren, None, '', 0, events)
def _initTreeView(self):
'''
Construct the data model and tree view columns for the event types tree.
'''
self.events_model = gtk.TreeStore(str, # COL_NAME
str, # COL_FULL_NAME
bool, # COL_TOGGLE
bool) # COL_INCONSISTENT
event_tree = self.main_xml.get_widget('treeview_events')
event_tree.set_model(self.events_model)
crt = gtk.CellRendererText()
crc = gtk.CellRendererToggle()
crc.connect('toggled', self._onToggled)
tvc = gtk.TreeViewColumn(_('Name'))
tvc.pack_start(crc, True)
tvc.pack_start(crt, True)
tvc.set_attributes(crc,
active=self.COL_TOGGLE,
inconsistent=self.COL_INCONSISTENT)
tvc.set_attributes(crt, text=self.COL_NAME)
event_tree.append_column(tvc)
crt = gtk.CellRendererText()
tvc = gtk.TreeViewColumn(_('Full name'))
tvc.pack_start(crt, True)
tvc.set_attributes(crt, text=self.COL_FULL_NAME)
event_tree.append_column(tvc)
def _initTextView(self):
'''
Initialize text view in monitor plugin.
'''
self.textview_monitor = self.main_xml.get_widget('textview_monitor')
self.textview_monitor = self.main_xml.get_object('textview_monitor')
self.monitor_buffer = self.textview_monitor.get_buffer()
self.monitor_mark = \
......
This diff is collapsed.
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
<!--Generated with glade3 3.2.0 on Thu Aug 30 11:43:49 2007 by eitan@lifebook-->
<glade-interface>
<widget class="GtkWindow" id="window1">
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
<widget class="GtkVBox" id="main_vbox">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="spacing">3</property>
<child>
<widget class="GtkScrolledWindow" id="textview_sw">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</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>
<child>
<placeholder/>
</child>
</widget>
</child>
<child>
<widget class="GtkHBox" id="hbox1">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
<widget class="GtkHButtonBox" id="hbuttonbox1">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="layout_style">GTK_BUTTONBOX_START</property>
<child>
<widget class="GtkButton" id="button1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label">gtk-media-record</property>
<property name="use_stock">True</property>
<signal name="clicked" handler="_onRecord"/>
</widget>
</child>
<child>
<widget class="GtkButton" id="button2">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label">gtk-clear</property>
<property name="use_stock">True</property>
<signal name="clicked" handler="_onClear"/>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="button3">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label">gtk-save</property>
<property name="use_stock">True</property>
<signal name="clicked" handler="_onSave"/>
</widget>
<packing>
<property name="position">2</property>
</packing>
</child>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkExpander" id="expander1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
<widget class="GtkAlignment" id="alignment1">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="left_padding">6</property>
<child>
<widget class="GtkVBox" id="vbox2">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
<widget class="GtkRadioButton" id="radio_native">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes" comments="A native script format.">Native</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
</widget>
</child>
<child>
<widget class="GtkRadioButton" id="radio_dogtail">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes" comments="A Dogtail (http://people.redhat.com/zcerza/dogtail) format script.">Dogtail</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<property name="group">radio_native</property>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkRadioButton" id="radio_ldtp">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes" comments="An LDTP format script (http://ldtp.freedesktop.org/wiki)">LDTP</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<property name="group">radio_native</property>
</widget>
<packing>
<property name="position">2</property>
</packing>
</child>
</widget>
</child>
</widget>
</child>
<child>
<widget class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Script Type</property>
</widget>
<packing>
<property name="type">label_item</property>
</packing>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="expand">False</property>
<property name="position">1</property>
</packing>
</child>
</widget>
</child>
</widget>
</glade-interface>
......@@ -9,8 +9,8 @@ import wnck
from accerciser.i18n import N_, _
from Queue import Queue
GLADE_FILE = os.path.join(os.path.dirname(__file__),
'script_recorder.glade')
UI_FILE = os.path.join(os.path.dirname(__file__),
'script_recorder.ui')
class ScriptFactory(object):
'''
......@@ -189,9 +189,10 @@ class ScriptRecorder(ViewportPlugin):
self.text_view = gtksourceview2.View(text_buffer)
self.text_view.set_editable(True)
self.text_view.set_cursor_visible(True)
xml = gtk.glade.XML(GLADE_FILE, 'main_vbox')
vbox = xml.get_widget('main_vbox')
sw = xml.get_widget('textview_sw')
xml = gtk.Builder()
xml.add_from_file(UI_FILE)
vbox = xml.get_object('main_vbox')
sw = xml.get_object('textview_sw')
sw.add(self.text_view)
self.plugin_area.add(vbox)
self.mark = text_buffer.create_mark('scroll_mark',
......@@ -200,7 +201,7 @@ class ScriptRecorder(ViewportPlugin):
for radio_name, factory_class in (('radio_native', NativeFactory),
('radio_dogtail', DogtailFactory),
('radio_ldtp', LDTPFactory)):
button = xml.get_widget(radio_name)
button = xml.get_object(radio_name)
handler_id = button.connect('toggled',
self._onTypeToggled,
factory_class)
......@@ -209,7 +210,7 @@ class ScriptRecorder(ViewportPlugin):
self.script_factory = factory_class()
self.last_active_type_button = button
self._clearBuffer()
xml.signal_autoconnect(self)
xml.connect_signals(self)
self.plugin_area.show_all()
def appendText(self, text):
......
<?xml version="1.0"?>
<interface>
<requires lib="gtk+" version="2.16"/>
<!-- interface-naming-policy toplevel-contextual -->
<object class="GtkVBox" id="main_vbox">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="orientation">vertical</property>
<property name="spacing">3</property>
<child>
<object class="GtkScrolledWindow" id="textview_sw">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<property name="shadow_type">in</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="hbox1">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
<object class="GtkHButtonBox" id="hbuttonbox1">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="layout_style">start</property>
<child>
<object class="GtkButton" id="button1">
<property name="label">gtk-media-record</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="use_stock">True</property>
<signal name="clicked" handler="_onRecord"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button2">
<property name="label">gtk-clear</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="use_stock">True</property>
<signal name="clicked" handler="_onClear"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button3">
<property name="label">gtk-save</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="use_stock">True</property>
<signal name="clicked" handler="_onSave"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkExpander" id="expander1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
<object class="GtkAlignment" id="alignment1">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="left_padding">6</property>
<child>
<object class="GtkVBox" id="vbox2">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkRadioButton" id="radio_native">
<property name="label" translatable="yes" comments="A native script format.">Native</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="radio_dogtail">
<property name="label" translatable="yes" comments="A Dogtail (http://people.redhat.com/zcerza/dogtail) format script.">Dogtail</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="draw_indicator">True</property>
<property name="group">radio_native</property>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="radio_ldtp">
<property name="label" translatable="yes" comments="An LDTP format script (http://ldtp.freedesktop.org/wiki)">LDTP</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="draw_indicator">True</property>
<property name="group">radio_native</property>
</object>
<packing>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Script Type</property>
</object>
</child>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="position">1</property>
</packing>
</child>
</object>
</interface>
This diff is collapsed.
......@@ -22,7 +22,7 @@ from accerciser.plugin import ViewportPlugin
from accerciser.i18n import _, N_
import pyatspi
GLADE_FILE = os.path.join(os.path.dirname(__file__), 'validate.glade')
UI_FILE = os.path.join(os.path.dirname(__file__), 'validate.ui')
USER_SCHEMA_PATH = os.path.join(os.environ['HOME'], '.accerciser',
'plugindata', 'validate')
SYS_SCHEMA_PATH = os.path.join(sys.prefix, 'share', 'accerciser',
......@@ -140,7 +140,7 @@ class ValidatorViewport(ViewportPlugin):
Validator UI. Key feature is a table showing the results of a validation
run on some accessible and its descendants.
@ivar main_xml: glade parsed XML definition
@ivar main_xml: gtk builder parsed XML definition
@ivar report: Report table
@ivar progress: Activity bar
@ivar validate: Validation button
......@@ -169,16 +169,17 @@ class ValidatorViewport(ViewportPlugin):
# help url for last selected
self.url = None
self.main_xml = gtk.glade.XML(GLADE_FILE, 'main vbox')
frame = self.main_xml.get_widget('main vbox')
self.main_xml = gtk.Builder()
self.main_xml.add_from_file(UI_FILE)
frame = self.main_xml.get_object('main vbox')
self.plugin_area.add(frame)
self.report = self.main_xml.get_widget('report table')
self.progress = self.main_xml.get_widget('progress bar')
self.validate = self.main_xml.get_widget('validate button')
self.help = self.main_xml.get_widget('help button')
self.save = self.main_xml.get_widget('save button')
self.clear = self.main_xml.get_widget('clear button')
self.schema = self.main_xml.get_widget('schema combo')
self.report = self.main_xml.get_object('report table')
self.progress = self.main_xml.get_object('progress bar')
self.validate = self.main_xml.get_object('validate button')
self.help = self.main_xml.get_object('help button')
self.save = self.main_xml.get_object('save button')
self.clear = self.main_xml.get_object('clear button')
self.schema = self.main_xml.get_object('schema combo')
self.validator_buffer = gtk.TextBuffer()
# model for the combobox
......@@ -215,7 +216,7 @@ class ValidatorViewport(ViewportPlugin):
# set progress bar to zero initially
self.progress.set_fraction(0.0)
self.main_xml.signal_autoconnect(self)
self.main_xml.connect_signals(self)
self.show_all()
def onAccChanged(self, acc):
......
<?xml version="1.0"?>
<interface>
<requires lib="gtk+" version="2.16"/>
<!-- interface-naming-policy toplevel-contextual -->
<object class="GtkVBox" id="main vbox">
<property name="visible">True</property>
<property name="border_width">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkScrolledWindow" id="scrolledwindow1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<child>
<object class="GtkTreeView" id="report table">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="reorderable">True</property>
<property name="rules_hint">True</property>
<signal name="cursor_changed" handler="_onCursorChanged"/>
<signal name="row_activated" handler="_onActivateRow"/>
</object>
</child>
</object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="hbox1">
<property name="visible">True</property>
<property name="spacing">3</property>
<child>
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="label" translatable="yes">Sche_ma:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">schema combo</property>
<accessibility>
<relation type="label-for" target="schema combo"/>
</accessibility>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBox" id="schema combo">
<property name="visible">True</property>
<accessibility>
<relation type="labelled-by" target="label1"/>
</accessibility>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="hbox3">
<property name="visible">True</property>
<property name="spacing">3</property>
<child>
<object class="GtkToggleButton" id="validate button">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<signal name="toggled" handler="_onValidate"/>
<child>
<object class="GtkHBox" id="hbox2">
<property name="visible">True</property>
<property name="spacing">5</property>
<child>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="stock">gtk-apply</property>
</object>
<packing>
<property name="expand">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="button label">
<property name="visible">True</property>
<property name="label" translatable="yes">V_alidate</property>
<property name="use_underline">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="hbox4">
<property name="visible">True</property>
<child>
<object class="GtkButton" id="save button">
<property name="label">gtk-save</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
<signal name="clicked" handler="_onSave"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="clear button">
<property name="label">gtk-clear</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
<signal name="clicked" handler="_onClear"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="help button">
<property name="label">gtk-help</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
<signal name="clicked" handler="_onHelp"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="pack_type">end</property>
<property name="position">1</property>