[gok] Use GtkBuilder instead of libglade - bgo#582504
- From: Gerd Kohlberger <gerdk src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gok] Use GtkBuilder instead of libglade - bgo#582504
- Date: Fri, 9 Oct 2009 15:11:19 +0000 (UTC)
commit 68ae0133f69e258067888db38ff681204bf1c1f9
Author: Gerd Kohlberger <gerdk src gnome org>
Date: Thu Oct 8 18:58:19 2009 +0200
Use GtkBuilder instead of libglade - bgo#582504
Makefile.am | 8 +-
configure.in | 4 +-
gok-editor.ui | 1691 ++++++++++++
gok-settingsdialog.ui | 2388 +++++++++++++++++
gok.glade2 | 6077 -------------------------------------------
gok/Makefile.am | 2 +-
gok/callbacks.c | 15 +-
gok/callbacks.h | 2 +
gok/gok-editor.c | 75 +-
gok/gok-glade-helpers.c | 97 -
gok/gok-glade-helpers.h | 29 -
gok/gok-page-accessmethod.c | 24 +-
gok/gok-page-accessmethod.h | 3 +-
gok/gok-page-actions.c | 278 +--
gok/gok-page-actions.h | 2 +-
gok/gok-page-feedbacks.c | 52 +-
gok/gok-page-feedbacks.h | 3 +-
gok/gok-page-keyboard.c | 73 +-
gok/gok-page-keyboard.h | 5 +-
gok/gok-page-keysizespace.c | 128 +-
gok/gok-page-keysizespace.h | 4 +-
gok/gok-page-wordcomplete.c | 94 +-
gok/gok-page-wordcomplete.h | 5 +-
gok/gok-settings-dialog.c | 67 +-
gok/gok-settings-dialog.h | 8 +-
gok/gok-ui-helper.c | 95 +
gok/gok-ui-helper.h | 43 +
po/POTFILES.in | 3 +-
28 files changed, 4475 insertions(+), 6800 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index 622c407..2c6b367 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -41,9 +41,6 @@ noinst_DATA = $(kbd_files)
kbd_files = $(kbd_in_files:.kbd.in=.kbd)
@INTLTOOL_KBD_RULE@
-gladedir = $(pkgdatadir)/glade
-glade_DATA = gok.glade2
-
icondir = $(datadir)/icons/hicolor/48x48/apps
icon_DATA = gok.png
@@ -76,7 +73,6 @@ EXTRA_DIST = \
$(pkgdata_DATA) \
$(desktop_in_files) \
$(desktop_DATA) \
- $(glade_DATA) \
$(sound_DATA) \
gok-1.0.pc.in \
gok-with-references.schemas.m4 \
@@ -107,7 +103,9 @@ pkgdata_DATA = \
West.png \
small-empty.png \
goklogo.png \
- Keyboard.kbd
+ Keyboard.kbd \
+ gok-editor.ui \
+ gok-settingsdialog.ui
pixmapsdir = $(datadir)/pixmaps
pixmaps_DATA = gok.png
diff --git a/configure.in b/configure.in
index 7a15bbe..2187f2e 100644
--- a/configure.in
+++ b/configure.in
@@ -167,14 +167,14 @@ PKG_CHECK_MODULES(GOK,
libloginhelper-1.0 >= 1.5.2
libbonobo-2.0 >= 2.5.1
atk >= 1.3.0
- gtk+-2.0 >= 2.14.0
+ gtk+-2.0 >= 2.16.0
gail
libwnck-1.0
gnome-speech-1.0
libcanberra-gtk >= 0.3
dbus-glib-1 >= 0.7
gconf-2.0 >= 2.16.0
- libglade-2.0)
+ libxml-2.0)
AC_SUBST(GOK_LIBS)
AC_SUBST(GOK_CFLAGS)
diff --git a/gok-editor.ui b/gok-editor.ui
new file mode 100644
index 0000000..26b5f69
--- /dev/null
+++ b/gok-editor.ui
@@ -0,0 +1,1691 @@
+<?xml version="1.0"?>
+<interface>
+ <requires lib="gtk+" version="2.16"/>
+ <!-- interface-naming-policy toplevel-contextual -->
+ <object class="GtkAdjustment" id="adjustment1">
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment2">
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment3">
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment4">
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment5">
+ <property name="value">1</property>
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkWindow" id="window">
+ <property name="title" translatable="yes">GOK Keyboard Editor</property>
+ <child>
+ <object class="GtkVBox" id="vbox14">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkMenuBar" id="menubar1">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkMenuItem" id="menuitem1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_File</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="menu1">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkImageMenuItem" id="imagemenuitem1">
+ <property name="label">gtk-new</property>
+ <property name="visible">True</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="imagemenuitem2">
+ <property name="label">gtk-open</property>
+ <property name="visible">True</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="imagemenuitem3">
+ <property name="label">gtk-save</property>
+ <property name="visible">True</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="imagemenuitem4">
+ <property name="label">gtk-save-as</property>
+ <property name="visible">True</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="separatormenuitem1">
+ <property name="visible">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="imagemenuitem5">
+ <property name="label">gtk-quit</property>
+ <property name="visible">True</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="menuitem4">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Help</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="menu3">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkImageMenuItem" id="imagemenuitem10">
+ <property name="label">gtk-about</property>
+ <property name="visible">True</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox15">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkFrame" id="frame13">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkHBox" id="hbox29">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="spacing">15</property>
+ <child>
+ <object class="GtkHBox" id="hbox30">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label40">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Name:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entryKeyboardName">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton1">
+ <property name="label" translatable="yes">Word Completion</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label38">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Keyboard</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame14">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkHBox" id="hbox31">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkVBox" id="vbox16">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkButton" id="buttonNext">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <signal name="clicked" handler="on_buttonNext_clicked"/>
+ <child>
+ <object class="GtkAlignment" id="alignment9">
+ <property name="visible">True</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkHBox" id="hbox89">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkImage" id="image7">
+ <property name="visible">True</property>
+ <property name="stock">gtk-go-forward</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label110">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Next Key</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="buttonPrevious">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <signal name="clicked" handler="on_buttonPrevious_clicked"/>
+ <child>
+ <object class="GtkAlignment" id="alignment10">
+ <property name="visible">True</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkHBox" id="hbox90">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkImage" id="image8">
+ <property name="visible">True</property>
+ <property name="stock">gtk-go-back</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label111">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Previous Key</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHSeparator" id="hseparator2">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">12</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="buttonAddNewKey">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <signal name="clicked" handler="on_buttonAddNewKey_clicked"/>
+ <child>
+ <object class="GtkAlignment" id="alignment11">
+ <property name="visible">True</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkHBox" id="hbox91">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkImage" id="image9">
+ <property name="visible">True</property>
+ <property name="stock">gtk-add</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label112">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Add New Key</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="buttonDeleteKey">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <signal name="clicked" handler="on_buttonDeleteKey_clicked"/>
+ <child>
+ <object class="GtkAlignment" id="alignment12">
+ <property name="visible">True</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkHBox" id="hbox92">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkImage" id="image10">
+ <property name="visible">True</property>
+ <property name="stock">gtk-remove</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label113">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Delete Key</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="buttonDuplicate">
+ <property name="label" translatable="yes">Duplicate</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_buttonDuplicate_clicked"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHSeparator" id="hseparator3">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">12</property>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="buttonToFront">
+ <property name="label" translatable="yes">To Front</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">7</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="buttonToBack">
+ <property name="label" translatable="yes">To Back</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">8</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="GtkVSeparator" id="vseparator1">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox17">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkFrame" id="frame15">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkVBox" id="vbox18">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkHBox" id="hbox32">
+ <property name="visible">True</property>
+ <property name="spacing">20</property>
+ <child>
+ <object class="GtkHBox" id="hbox33">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label46">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Modifier:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxEntry" id="comboModifier">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox34">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label47">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Label:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entryLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox35">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label48">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Style:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxEntry" id="comboStyle">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label41">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Appearance</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame16">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkHBox" id="hbox36">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="spacing">15</property>
+ <child>
+ <object class="GtkHBox" id="hbox37">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label49">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Left:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinLeft">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment1</property>
+ <property name="climb_rate">1</property>
+ <signal name="insert_text" handler="on_spinLeft_insert_text"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</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="GtkHBox" id="hbox38">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label50">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Right:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinRight">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment2</property>
+ <property name="climb_rate">1</property>
+ <signal name="insert_text" handler="on_spinRight_insert_text"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox39">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label51">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Top:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinTop">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment3</property>
+ <property name="climb_rate">1</property>
+ <signal name="insert_text" handler="on_spinTop_insert_text"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox40">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label52">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Bottom:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinBottom">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment4</property>
+ <property name="climb_rate">1</property>
+ <signal name="insert_text" handler="on_spinBottom_insert_text"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label42">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Position</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame17">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkHBox" id="hbox41">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkVBox" id="vbox47">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkComboBoxEntry" id="comboType">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="spacer2">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</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="GtkVBox" id="vbox19">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkFrame" id="frame20">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkHBox" id="hbox42">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkHBox" id="hbox43">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label55">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Name:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxEntry" id="comboModifierName">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="radiobutton1">
+ <property name="label" translatable="yes">3 State</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="radiobutton2">
+ <property name="label" translatable="yes">Toggle</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">radiobutton1</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button8">
+ <property name="label" translatable="yes">New</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button9">
+ <property name="label" translatable="yes">Delete</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label53">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Modifier</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame21">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkHBox" id="hbox44">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label56">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Target:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxEntry" id="comboBranch">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label54">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Branch</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label43">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Type</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame18">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkVBox" id="vbox20">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkHBox" id="hbox45">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkRadioButton" id="radiobutton3">
+ <property name="label" translatable="yes">Normal</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="radiobutton4">
+ <property name="label" translatable="yes">Modifier Pre</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">radiobutton3</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="radiobutton5">
+ <property name="label" translatable="yes">Modifier Post</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">radiobutton3</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHSeparator" id="hseparator4">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox46">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="spacing">20</property>
+ <child>
+ <object class="GtkHBox" id="hbox47">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox21">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkButton" id="button10">
+ <property name="label" translatable="yes">Delete</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button11">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <child>
+ <object class="GtkAlignment" id="alignment13">
+ <property name="visible">True</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkHBox" id="hbox93">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkImage" id="image11">
+ <property name="visible">True</property>
+ <property name="stock">gtk-go-up</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label114">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Move Up</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button12">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <child>
+ <object class="GtkAlignment" id="alignment14">
+ <property name="visible">True</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkHBox" id="hbox94">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkImage" id="image12">
+ <property name="visible">True</property>
+ <property name="stock">gtk-go-down</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label115">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Move Down</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</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="GtkVSeparator" id="vseparator2">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox22">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkHBox" id="hbox48">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkButton" id="button13">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <child>
+ <object class="GtkAlignment" id="alignment15">
+ <property name="visible">True</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkHBox" id="hbox95">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkImage" id="image13">
+ <property name="visible">True</property>
+ <property name="stock">gtk-add</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label116">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Add</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox49">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label57">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Keysym:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxEntry" id="comboKeysym">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox50">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkHBox" id="hbox51">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkButton" id="button14">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <child>
+ <object class="GtkAlignment" id="alignment16">
+ <property name="visible">True</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkHBox" id="hbox96">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkImage" id="image14">
+ <property name="visible">True</property>
+ <property name="stock">gtk-add</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label117">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Add</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox52">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label58">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Keycode:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxEntry" id="comboKeycode">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox55">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkRadioButton" id="radiobutton6">
+ <property name="label" translatable="yes">Press</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="radiobutton7">
+ <property name="label" translatable="yes">Release</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">radiobutton6</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox53">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkButton" id="button15">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <child>
+ <object class="GtkAlignment" id="alignment17">
+ <property name="visible">True</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkHBox" id="hbox97">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkImage" id="image15">
+ <property name="visible">True</property>
+ <property name="stock">gtk-add</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label118">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Add</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox54">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label59">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">GOK:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxEntry" id="comboGOK">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label44">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Output</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame19">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkHBox" id="hbox56">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="spacing">20</property>
+ <child>
+ <object class="GtkHBox" id="hbox57">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label60">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Font Group:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinbutton5">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment5</property>
+ <property name="climb_rate">1</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</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="GtkCheckButton" id="checkbutton3">
+ <property name="label" translatable="yes">Show Only This Font Group</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label45">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Font</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label39">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Key</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/gok-settingsdialog.ui b/gok-settingsdialog.ui
new file mode 100644
index 0000000..77128ff
--- /dev/null
+++ b/gok-settingsdialog.ui
@@ -0,0 +1,2388 @@
+<?xml version="1.0"?>
+<interface>
+ <!-- interface-requires gtk+ 2.12 -->
+ <!-- interface-naming-policy toplevel-contextual -->
+ <object class="GtkAdjustment" id="adjustment1">
+ <property name="value">60</property>
+ <property name="lower">5</property>
+ <property name="upper">200</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment2">
+ <property name="value">30</property>
+ <property name="lower">5</property>
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment3">
+ <property name="upper">50</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment4">
+ <property name="upper">3000</property>
+ <property name="step_increment">10</property>
+ <property name="page_increment">100</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment5">
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment6">
+ <property name="value">1</property>
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment7">
+ <property name="value">0.25</property>
+ <property name="lower">0.02</property>
+ <property name="upper">1</property>
+ <property name="step_increment">0.02</property>
+ <property name="page_increment">0.20000000000000001</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment8">
+ <property name="value">4</property>
+ <property name="lower">1</property>
+ <property name="upper">15</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">3</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment9">
+ <property name="value">5</property>
+ <property name="lower">2</property>
+ <property name="upper">12</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">3</property>
+ </object>
+ <object class="GtkWindow" id="window">
+ <property name="title" translatable="yes">GOK Preferences</property>
+ <property name="resizable">False</property>
+ <signal name="delete_event" handler="on_dialogSettings_delete_event"/>
+ <signal name="show" handler="on_dialogSettings_show"/>
+ <child>
+ <object class="GtkVBox" id="vboxSettings">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkNotebook" id="notebook1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkVBox" id="AppearanceTab">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkTable" id="table1">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">7</property>
+ <property name="column_spacing">6</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <object class="GtkSpinButton" id="spinKeyWidth">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">Key Width</property>
+ <property name="adjustment">adjustment1</property>
+ <property name="climb_rate">1</property>
+ <property name="numeric">True</property>
+ <accessibility>
+ <relation type="labelled-by" target="label9"/>
+ </accessibility>
+ <signal name="changed" handler="on_spinWidth_changed"/>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options"></property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinKeyHeight">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">Key Height</property>
+ <property name="adjustment">adjustment2</property>
+ <property name="climb_rate">1</property>
+ <property name="numeric">True</property>
+ <accessibility>
+ <relation type="labelled-by" target="label10"/>
+ </accessibility>
+ <signal name="changed" handler="on_spinHeight_changed"/>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options"></property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label10">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Key h_eight:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">spinKeyHeight</property>
+ <accessibility>
+ <relation type="label-for" target="spinKeyHeight"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label9">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Key _width:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">spinKeyWidth</property>
+ <accessibility>
+ <relation type="label-for" target="spinKeyWidth"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label107">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">pixels</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label108">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">pixels</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label11">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Spacing:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">spinKeySpacing</property>
+ </object>
+ <packing>
+ <property name="left_attach">4</property>
+ <property name="right_attach">5</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label109">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">pixels</property>
+ </object>
+ <packing>
+ <property name="left_attach">6</property>
+ <property name="right_attach">7</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinKeySpacing">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">Key Spacing</property>
+ <property name="adjustment">adjustment3</property>
+ <property name="climb_rate">1</property>
+ <property name="numeric">True</property>
+ <signal name="changed" handler="on_spinSpacing_changed"/>
+ </object>
+ <packing>
+ <property name="left_attach">5</property>
+ <property name="right_attach">6</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Key Size and Spacing Controls</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame2">
+ <property name="visible">True</property>
+ <property name="border_width">4</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkFixed" id="fixedKeySpacing">
+ <property name="width_request">2</property>
+ <property name="height_request">140</property>
+ <property name="visible">True</property>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label7">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Preview</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="DockFrame">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkHBox" id="hbox102">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkVBox" id="vbox44">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">1</property>
+ <child>
+ <object class="GtkCheckButton" id="DockCheckButton">
+ <property name="label" translatable="yes">Dock</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_dock_checkbutton_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="FillCheckButton">
+ <property name="label" translatable="yes">Fill Width</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_fill_checkbutton_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox39">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">1</property>
+ <child>
+ <object class="GtkRadioButton" id="DockTopRadiobutton">
+ <property name="label" translatable="yes">Dock Top</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_dock_top_radiobutton_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="DockBottomRadiobutton">
+ <property name="label" translatable="yes">Dock Bottom</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">DockTopRadiobutton</property>
+ <signal name="toggled" handler="on_dock_bottom_radiobutton_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label120">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Dock and Expand Horizontally</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame3">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="label_xalign">0.019999999552965164</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkVBox" id="vbox3">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="checkUseTheme">
+ <property name="label" translatable="yes">_Use Desktop Theme Preferences</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="border_width">6</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_use_gtk_theme_checkbutton_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label99">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><small><i><b>Note:</b> Changes to this setting will not take effect until you next run GOK.</i></small></property>
+ <property name="use_markup">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Theme</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Appearance</property>
+ </object>
+ <packing>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox40">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame33">
+ <property name="visible">True</property>
+ <property name="border_width">2</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkVBox" id="vbox41">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkRadioButton" id="XkbComposeKeyboardRadiobutton">
+ <property name="label" translatable="yes">Match physical keyboard as reported by X Server</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_xkb_compose_keyboard_radiobutton_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="AlphaComposeKeyboardRadiobutton">
+ <property name="label" translatable="yes">Alphanumeric keyboard sorted alphabetically</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">XkbComposeKeyboardRadiobutton</property>
+ <signal name="toggled" handler="on_alpha_compose_keyboard_radiobutton_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="AlphaFrequencyComposeKeyboardRadiobutton">
+ <property name="label" translatable="yes">Alphanumeric keyboard arranged by letter frequency</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">XkbComposeKeyboardRadiobutton</property>
+ <signal name="toggled" handler="on_freq_compose_keyboard_radiobutton_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="XmlComposeKeyboardRadiobutton">
+ <property name="label" translatable="yes">Read keyboard from file:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">XkbComposeKeyboardRadiobutton</property>
+ <signal name="toggled" handler="on_file_compose_keyboard_radiobutton_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox99">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkLabel" id="spacer1">
+ <property name="visible">True</property>
+ <property name="xpad">10</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFileChooserButton" id="XmlKeyboardFileChooser">
+ <property name="visible">True</property>
+ <signal name="file_set" handler="on_compose_keyboard_file_set"/>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="ComposeKeyboardFrameLabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Compose Keyboard</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="padding">12</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame36">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkVBox" id="vbox45">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkLabel" id="label128">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="xpad">2</property>
+ <property name="label" translatable="yes">Additional directory to search for GOK Keyboards</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox103">
+ <property name="visible">True</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkEntry" id="AuxKeyboardDirEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="AuxKeyboardDirButton">
+ <property name="label" translatable="yes">_Browse...</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_aux_keyboard_dir_button_clicked"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label127">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Custom Keyboards</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="KeyboardPageLabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Keyboards</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="ActionsTab">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame30">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkVBox" id="vbox30">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkHBox" id="hbox78">
+ <property name="visible">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="labelActionName">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Name:</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="comboActionNames">
+ <property name="visible">True</property>
+ <signal name="changed" handler="on_comboActionNames_changed"/>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHButtonBox" id="hbuttonbox5">
+ <property name="visible">True</property>
+ <property name="spacing">6</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="buttonAddAction">
+ <property name="label">gtk-add</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_buttonNewAction_clicked"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="buttonDeleteAction">
+ <property name="label">gtk-delete</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_buttonDeleteAction_clicked"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="buttonChangeName">
+ <property name="label" translatable="yes">_Rename</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_buttonChangeName_clicked"/>
+ </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">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label92">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Define Actions</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHSeparator" id="hseparator7">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox72">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="labelActionType">
+ <property name="visible">True</property>
+ <property name="xpad">12</property>
+ <property name="label" translatable="yes">Action Type:</property>
+ <accessibility>
+ <relation type="label-for" target="radiobuttonTypeSwitch"/>
+ <relation type="label-for" target="radiobuttonTypeValuator"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox73">
+ <property name="visible">True</property>
+ <property name="spacing">18</property>
+ <child>
+ <object class="GtkRadioButton" id="radiobuttonTypeSwitch">
+ <property name="label" translatable="yes">S_witch</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ <accessibility>
+ <relation type="labelled-by" target="labelActionType"/>
+ </accessibility>
+ <signal name="toggled" handler="on_radiobuttonTypeSwitch_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="radiobuttonTypeValuator">
+ <property name="label" translatable="yes">_Valuator</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">radiobuttonTypeSwitch</property>
+ <accessibility>
+ <relation type="labelled-by" target="labelActionType"/>
+ </accessibility>
+ <signal name="toggled" handler="on_radiobuttonTypeValuator_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="padding">5</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHSeparator" id="hseparator6">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkNotebook" id="action_type_notebook">
+ <property name="visible">True</property>
+ <property name="show_tabs">False</property>
+ <property name="show_border">False</property>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="action_type_notebook-atkobject">
+ <property name="AtkObject::accessible-name" translatable="yes">ActionTypeNotebook</property>
+ </object>
+ </child>
+ <signal name="change_current_page" handler="on_action_type_notebook_change_current_page" after="yes"/>
+ <child>
+ <object class="GtkHBox" id="hbox74">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkFrame" id="frameSwitch">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkVBox" id="vbox28">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkRadioButton" id="radiobuttonSwitch1">
+ <property name="label" translatable="yes">Switch _1</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_radiobuttonSwitch1_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="radiobuttonSwitch2">
+ <property name="label" translatable="yes">Switch _2</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">radiobuttonSwitch1</property>
+ <signal name="toggled" handler="on_radiobuttonSwitch2_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="radiobuttonSwitch3">
+ <property name="label" translatable="yes">Switch _3</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">radiobuttonSwitch1</property>
+ <signal name="toggled" handler="on_radiobuttonSwitch3_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="radiobuttonSwitch4">
+ <property name="label" translatable="yes">Switch _4</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">radiobuttonSwitch1</property>
+ <signal name="toggled" handler="on_radiobuttonSwitch4_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="radiobuttonSwitch5">
+ <property name="label" translatable="yes">Switch _5</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">radiobuttonSwitch1</property>
+ <signal name="toggled" handler="on_radiobuttonSwitch5_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label87">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Switch or Button Number</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox26">
+ <property name="visible">True</property>
+ <property name="border_width">2</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame27">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkVBox" id="vbox27">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkRadioButton" id="radiobuttonPress">
+ <property name="label" translatable="yes">Activate when _pressed</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_radiobuttonSwitchPress_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="radiobuttonRelease">
+ <property name="label" translatable="yes">Activate when _released</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">radiobuttonPress</property>
+ <signal name="toggled" handler="on_radiobuttonSwitchRelease_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label88">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Behavior</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame28">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkHBox" id="hbox75">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <child>
+ <object class="GtkSpinButton" id="spinDelay">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment4</property>
+ <property name="climb_rate">1</property>
+ <property name="numeric">True</property>
+ <accessibility>
+ <relation type="labelled-by" target="label90"/>
+ </accessibility>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="spinDelay-atkobject">
+ <property name="AtkObject::accessible-name" translatable="yes">Delay</property>
+ <property name="AtkObject::accessible-description" translatable="yes">Delay, in 100ths of a second, after the triggering event occurs, before activation takes place.</property>
+ </object>
+ </child>
+ <signal name="changed" handler="on_spinSwitchDelay_changed"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label90">
+ <property name="visible">True</property>
+ <property name="xpad">6</property>
+ <property name="label" translatable="yes">_100ths of a second</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">spinDelay</property>
+ <accessibility>
+ <relation type="label-for" target="spinDelay"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label897">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Delay Before Activation</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkTable" id="table2">
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <child>
+ <object class="GtkFrame" id="frameValuator">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkVBox" id="vbox33">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkRadioButton" id="two_d_valuator_radiobutton">
+ <property name="label" translatable="yes">_X-Y valuator (axes 0 and 1)</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_2d_valuator_radiobutton_toggled" after="yes"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox81">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkRadioButton" id="one_d_valuator_radiobutton">
+ <property name="label" translatable="yes">_Single axis:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">two_d_valuator_radiobutton</property>
+ <signal name="toggled" handler="on_1d_radiobutton_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="axis_selection_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment5</property>
+ <property name="climb_rate">1</property>
+ <signal name="changed" handler="on_axis_selection_spinbutton_changed"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">6</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label95">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Valuator Type</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="timer_frame">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkVBox" id="vbox35">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkHBox" id="hbox82">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkSpinButton" id="pointer_delay_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment6</property>
+ <property name="climb_rate">1</property>
+ <signal name="changed" handler="on_pointer_delay_spinbutton_changed"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label98">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_100ths of a second</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">6</property>
+ <property name="position">1</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="GtkCheckButton" id="checkKeyAverage">
+ <property name="label" translatable="yes">Use _key averaging</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_key_averaging_button_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label97">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Timers and Delays</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="activation_type_frame">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkVBox" id="vbox36">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkRadioButton" id="activate_on_enter_button">
+ <property name="label" translatable="yes">Activate on _Enter</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_activate_on_enter_button_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="activate_on_dwell_button">
+ <property name="label" translatable="yes">Activate on Dw_ell</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">activate_on_enter_button</property>
+ <signal name="toggled" handler="on_activate_on_dwell_button_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="activate_on_move_button">
+ <property name="label" translatable="yes">Activate on _Move</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">activate_on_enter_button</property>
+ <signal name="toggled" handler="on_activate_on_move_button_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label96">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="label" translatable="yes"><b>Behavior</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame35">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkVBox" id="vbox43">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkHScale" id="ValuatorSensitivityScale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment7</property>
+ <property name="digits">2</property>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="ValuatorSensitivityScale-atkobject">
+ <property name="AtkObject::accessible-name" translatable="yes">Valuator Sensitivity</property>
+ <property name="AtkObject::accessible-description" translatable="yes">A multiplier which is applied to the extended input device valuator events before processing.</property>
+ </object>
+ </child>
+ <signal name="value_changed" handler="on_ValuatorSensitivityScale_value_changed"/>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox100">
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkLabel" id="label125">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">low</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label126">
+ <property name="visible">True</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">high</property>
+ <property name="justify">right</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="SensitivityLabel">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="label" translatable="yes"><b>Sensitivity</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label85">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">label85</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="event_source_frame">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkVBox" id="vbox29">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkRadioButton" id="core_pointer_button">
+ <property name="label" translatable="yes">C_ore pointer</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_core_pointer_button_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox76">
+ <property name="visible">True</property>
+ <property name="spacing">8</property>
+ <child>
+ <object class="GtkRadioButton" id="xinput_device_button">
+ <property name="label" translatable="yes">Other _input device:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">core_pointer_button</property>
+ <signal name="toggled" handler="on_xinput_device_button_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">1</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="comboInputDevice">
+ <property name="visible">True</property>
+ <signal name="changed" handler="on_comboInputDevice_changed"/>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="joystick_button">
+ <property name="label" translatable="yes">_Joystick</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">core_pointer_button</property>
+ <signal name="toggled" handler="on_joystick_button_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">2</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label91">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Event Source</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">3</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Actions</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="FeedbackTab">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame31">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkVBox" id="vbox37">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkHBox" id="hbox79">
+ <property name="visible">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="feedback_name_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Name:</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="comboFeedback">
+ <property name="visible">True</property>
+ <signal name="changed" handler="on_comboFeedback_changed"/>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHButtonBox" id="hbuttonbox4">
+ <property name="visible">True</property>
+ <property name="spacing">6</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="buttonAddFeedback">
+ <property name="label">gtk-add</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_buttonAddFeedback_clicked"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="buttonDeleteFeedback">
+ <property name="label">gtk-delete</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_buttonDeleteFeedback_clicked"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="buttonChangeFeedbackName">
+ <property name="label" translatable="yes">_Rename</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_buttonChangeFeedbackName_clicked"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label100">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Define Feedback</b></property>
+ <property name="use_markup">True</property>
+ <accessibility>
+ <relation type="labelled-by" target="label100"/>
+ <relation type="label-for" target="comboFeedback"/>
+ </accessibility>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame8">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkVBox" id="boxKeyFlashing">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkCheckButton" id="checkKeyFlashing">
+ <property name="label" translatable="yes">Enable _key flashing</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_checkKeyFlashing_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment32">
+ <property name="visible">True</property>
+ <property name="left_padding">24</property>
+ <child>
+ <object class="GtkHBox" id="boxKeyFlashingDetails">
+ <property name="visible">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="label29">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Number of _flashes:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">spinKeyFlashing</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinKeyFlashing">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment8</property>
+ <property name="climb_rate">1</property>
+ <signal name="changed" handler="on_spinKeyFlashing_changed"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label27">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Key Flashing</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame9">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkVBox" id="boxSound">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkCheckButton" id="checkSoundOn">
+ <property name="label" translatable="yes">Enable _sound</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_checkSoundOn_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment7">
+ <property name="visible">True</property>
+ <property name="left_padding">24</property>
+ <child>
+ <object class="GtkHBox" id="boxSoundFile">
+ <property name="visible">True</property>
+ <property name="spacing">8</property>
+ <child>
+ <object class="GtkLabel" id="label30">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">So_und:</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="comboSoundName">
+ <property name="visible">True</property>
+ <signal name="changed" handler="on_comboSoundName_changed"/>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="buttonFeedbackSoundFile">
+ <property name="label" translatable="yes">_Browse...</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_buttonFeedbackSoundFile_clicked"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label28">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Sound</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame34">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkVBox" id="boxSpeech">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="SpeakLabelCheckButton">
+ <property name="label" translatable="yes">Speak key _label</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_SpeakLabelCheckButton_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="SpeechFeedbackLabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Speech</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Feedback</property>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="AccessMethodsTab">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkVBox" id="vbox46">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkHBox" id="hbox24">
+ <property name="visible">True</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkLabel" id="label33">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Method:</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="comboAccessMethods">
+ <property name="visible">True</property>
+ <signal name="changed" handler="on_comboAccessMethods_changed"/>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame10">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkHBox" id="hbox23">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <child>
+ <object class="GtkLabel" id="labelAmDescription">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label31">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Description</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">4</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Access Methods</property>
+ </object>
+ <packing>
+ <property name="position">4</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="PredictionTab">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame11">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkVBox" id="vbox11">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkCheckButton" id="checkWordCompletion">
+ <property name="label" translatable="yes">Enable _word completion</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox25">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label36">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Number of predictions:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">spinNumberPredictions</property>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="label36-atkobject">
+ <property name="AtkObject::accessible-name" translatable="yes">Number of word predictions:</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinNumberPredictions">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">adjustment9</property>
+ <property name="climb_rate">1</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHSeparator" id="hseparator8">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkExtraWordList">
+ <property name="label" translatable="yes">Use _extra word list file(s)</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_checkExtraWordList_toggled"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox101">
+ <property name="visible">True</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkEntry" id="DictionaryPathEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="BrowseDictionaryFileButton">
+ <property name="label" translatable="yes">_Browse...</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label34">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><b>Word Completion</b></property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Prediction</property>
+ </object>
+ <packing>
+ <property name="position">5</property>
+ <property name="tab_fill">False</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="GtkHBox" id="hbox98">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkHButtonBox" id="hbuttonboxHelp">
+ <property name="visible">True</property>
+ <property name="layout_style">start</property>
+ <child>
+ <object class="GtkButton" id="buttonHelp">
+ <property name="label">gtk-help</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">display user help</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_buttonHelp_clicked"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHButtonBox" id="hbuttonboxStock">
+ <property name="visible">True</property>
+ <property name="spacing">6</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="buttonApply">
+ <property name="label">gtk-apply</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">try these settings</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_buttonApply_clicked"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="buttonRevert">
+ <property name="label">gtk-revert-to-saved</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">revert to original settings</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_buttonRevert_clicked"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="buttonCancel">
+ <property name="label">gtk-cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">cancel</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_buttonCancel_clicked"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="buttonOK">
+ <property name="label">gtk-ok</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">use these settings</property>
+ <property name="use_stock">True</property>
+ <signal name="clicked" handler="on_buttonOK_clicked"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/gok/Makefile.am b/gok/Makefile.am
index 85099c1..075babe 100644
--- a/gok/Makefile.am
+++ b/gok/Makefile.am
@@ -80,7 +80,7 @@ gok_SOURCES = \
gok-windowlister.c gok-windowlister.h \
gok-modifier-keymasks.c gok-modifier-keymasks.h \
keysym2ucs.c \
- gok-glade-helpers.c gok-glade-helpers.h
+ gok-ui-helper.c gok-ui-helper.h
if ENABLE_LIBUSB_INPUT
INCLUDES +=$(LIBUSB_CFLAGS)
diff --git a/gok/callbacks.c b/gok/callbacks.c
index 407db60..f1eecc4 100644
--- a/gok/callbacks.c
+++ b/gok/callbacks.c
@@ -32,7 +32,6 @@
#endif
#include <X11/Xatom.h>
-#include <glade/glade.h>
#include "callbacks.h"
#include "gok-scanner.h"
#include "gok-input.h"
@@ -862,19 +861,19 @@ void
on_dock_checkbutton_toggled (GtkToggleButton *button,
gpointer user_data)
{
- GtkWidget *dockbottom, *docktop;
+ GtkWidget *docktop;
GokDockType dock_type;
- gboolean is_dock = gtk_toggle_button_get_active (button);
- GladeXML *xml = gok_settingsdialog_get_xml ();
- dockbottom = glade_xml_get_widget (xml, "DockBottomRadiobutton");
- docktop = glade_xml_get_widget (xml, "DockTopRadiobutton");
+ gboolean is_dock;
+
+ is_dock = gtk_toggle_button_get_active (button);
+ docktop = WID ("DockTopRadiobutton");
gtk_widget_set_sensitive (docktop, is_dock);
- gtk_widget_set_sensitive (dockbottom, is_dock);
+ gtk_widget_set_sensitive (WID ("DockBottomRadiobutton"), is_dock);
if (is_dock)
{
- if (docktop && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (docktop)))
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (docktop)))
{
dock_type = GOK_DOCK_TOP;
}
diff --git a/gok/callbacks.h b/gok/callbacks.h
index ad3d1cf..58317a6 100644
--- a/gok/callbacks.h
+++ b/gok/callbacks.h
@@ -21,6 +21,8 @@
* Boston, MA 02111-1307, USA.
*/
+#include <gtk/gtk.h>
+
void
on_window1_realize (GtkWidget *widget,
gpointer user_data);
diff --git a/gok/gok-editor.c b/gok/gok-editor.c
index 73459b2..a3ede4f 100644
--- a/gok/gok-editor.c
+++ b/gok/gok-editor.c
@@ -3,6 +3,7 @@
*
* Copyright 2001-2009 Sun Microsystems, Inc.,
* Copyright 2001-2009 University Of Toronto
+* Copyright 2009 Gerd Kohlberger <gerdko gmail com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -26,12 +27,11 @@
#include <glib.h>
#include <glib/gi18n.h>
-#include <glade/glade.h>
#include "gok-log.h"
#include "gok-keyboard.h"
#include "gok-editor.h"
#include "gok-modifier.h"
-#include "gok-glade-helpers.h"
+#include "gok-ui-helper.h"
#define TITLE_GOK_EDITOR _("GOK Keyboard Editor")
@@ -41,9 +41,9 @@ static GtkWindowGroup* m_pWindowGroup;
/* pointer to the window that displays the key parameters */
static GtkWidget* m_pWindowEditor = NULL;
-/* pointer to the glade xml structure for the window that
+/* pointer to the ui xml structure for the window that
* displays the key parameters */
-static GladeXML* m_pEditorXML = NULL;
+static GtkBuilder *builder = NULL;
/* pointer to the window that displays the keyboard */
static GtkWidget* m_pWindowKeyboard;
@@ -81,11 +81,12 @@ void gok_editor_run()
m_bSkipUpdate = TRUE;
/* create the parameters dialog */
- m_pEditorXML = gok_glade_xml_new("gok.glade2", "windowEditor");
- m_pWindowEditor = glade_xml_get_widget(m_pEditorXML, "windowEditor");
- g_assert(m_pWindowEditor != NULL);
+ builder = gok_ui_helper_load_file ("gok-editor.ui");
+ g_assert (builder != NULL);
+
+ m_pWindowEditor = WID ("window");
gtk_widget_show (m_pWindowEditor);
-
+
/* create the keyboard window */
m_pWindowKeyboard = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (m_pWindowKeyboard), _(TITLE_GOK_EDITOR));
@@ -124,6 +125,8 @@ void gok_editor_close()
{
g_free (m_pFilename);
}
+
+ g_object_unref (builder);
}
/**
@@ -245,7 +248,6 @@ void gok_editor_open_file()
GtkWidget* pDialog;
gint response;
gchar* filename;
- GtkWidget* pEntry;
GokKey* pKey;
GtkFileFilter *filter;
@@ -346,9 +348,8 @@ void gok_editor_open_file()
/* display info about the keyboard */
/* keyboard name */
- pEntry = glade_xml_get_widget (m_pEditorXML, "entryKeyboardName");
- g_assert (pEntry != NULL);
- gtk_entry_set_text (GTK_ENTRY(pEntry), gok_keyboard_get_name(m_pKeyboard));
+ gtk_entry_set_text (GTK_ENTRY (OID ("entryKeyboardName")),
+ gok_keyboard_get_name (m_pKeyboard));
/* TODO - command prediction and word completion flags */
@@ -388,19 +389,16 @@ void gok_editor_touch_file ( gboolean modified )
*/
void gok_editor_show_parameters (GokKey* pKey)
{
- GtkWidget* pEntryLabel;
- GtkWidget* pSpin;
-
+ GtkEntry *pEntryLabel;
+
gok_log_enter();
+ pEntryLabel = GTK_ENTRY (OID ("entryLabel"));
/* normal key label */
- pEntryLabel = glade_xml_get_widget (m_pEditorXML, "entryLabel");
- g_assert (pEntryLabel != NULL);
-
if (pKey == NULL)
{
/* reset all the entry fields */
- gtk_entry_set_text (GTK_ENTRY(pEntryLabel), "");
+ gtk_entry_set_text (pEntryLabel, "");
return;
}
@@ -410,26 +408,17 @@ void gok_editor_show_parameters (GokKey* pKey)
g_assert(pKey->Left < pKey->Right);
g_assert(pKey->Top < pKey->Bottom);
- gtk_entry_set_text (GTK_ENTRY(pEntryLabel), gok_key_get_label (pKey));
+ gtk_entry_set_text (pEntryLabel, gok_key_get_label (pKey));
/* location */
- pSpin = glade_xml_get_widget (m_pEditorXML, "spinLeft");
- g_assert (pSpin != NULL);
- gtk_spin_button_set_value (GTK_SPIN_BUTTON(pSpin), pKey->Left);
- pSpin = glade_xml_get_widget (m_pEditorXML, "spinRight");
- g_assert (pSpin != NULL);
- gtk_spin_button_set_value (GTK_SPIN_BUTTON(pSpin), pKey->Right);
- pSpin = glade_xml_get_widget (m_pEditorXML, "spinTop");
- g_assert (pSpin != NULL);
- gtk_spin_button_set_value (GTK_SPIN_BUTTON(pSpin), pKey->Top);
- pSpin = glade_xml_get_widget (m_pEditorXML, "spinBottom");
- g_assert (pSpin != NULL);
- gtk_spin_button_set_value (GTK_SPIN_BUTTON(pSpin), pKey->Bottom);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (OID ("spinLeft")), pKey->Left);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (OID ("spinRight")), pKey->Right);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (OID ("spinTop")), pKey->Top);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (OID ("spinBottom")), pKey->Bottom);
m_bSkipUpdate = FALSE;
gok_log_leave();
-
}
/**
@@ -589,7 +578,6 @@ void gok_editor_duplicate_key ()
*/
void gok_editor_update_key()
{
- GtkWidget* pSpin;
gint top;
gint bottom;
gint left;
@@ -603,21 +591,10 @@ void gok_editor_update_key()
if (m_bSkipUpdate == FALSE)
{
/* location */
- pSpin = glade_xml_get_widget (m_pEditorXML, "spinLeft");
- g_assert (pSpin != NULL);
- left = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(pSpin));
-
- pSpin = glade_xml_get_widget (m_pEditorXML, "spinRight");
- g_assert (pSpin != NULL);
- right = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(pSpin));
-
- pSpin = glade_xml_get_widget (m_pEditorXML, "spinTop");
- g_assert (pSpin != NULL);
- top = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(pSpin));
-
- pSpin = glade_xml_get_widget (m_pEditorXML, "spinBottom");
- g_assert (pSpin != NULL);
- bottom = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(pSpin));
+ left = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (OID ("spinLeft")));
+ right = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON (OID ("spinRight")));
+ top = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON (OID ("spinTop")));
+ bottom = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON (OID ("spinBottom")));
if (left >= right)
{
diff --git a/gok/gok-page-accessmethod.c b/gok/gok-page-accessmethod.c
index c164752..df598ad 100644
--- a/gok/gok-page-accessmethod.c
+++ b/gok/gok-page-accessmethod.c
@@ -59,20 +59,17 @@ static GokFilledCombo* m_pGokFilledComboFirst;
/**
* gok_page_accessmethod_initialize
-* @xml: Pointer to the Glade UI description of the settings dialog.
*
* Initializes this page of the gok settings dialog. This must be called
* prior to any calls on this page.
*
* returns: TRUE if the page was properly initialized, FALSE if not.
**/
-gboolean gok_page_accessmethod_initialize (GladeXML* xml)
+gboolean gok_page_accessmethod_initialize (void)
{
GokAccessMethod* pAccessMethod;
GtkComboBox *combo;
- g_assert (xml != NULL);
-
/* initialize this data */
m_NameAccessMethod = g_strdup (gok_data_get_name_accessmethod());
m_bUsChangingName = FALSE;
@@ -86,9 +83,7 @@ gboolean gok_page_accessmethod_initialize (GladeXML* xml)
pAccessMethod = gok_scanner_get_first_access_method();
g_assert (pAccessMethod != NULL);
- combo = GTK_COMBO_BOX (glade_xml_get_widget (xml, "comboAccessMethods"));
- g_assert (combo != NULL);
-
+ combo = GTK_COMBO_BOX (OID ("comboAccessMethods"));
gok_settingsdialog_combobox_init (combo, TRUE);
while (pAccessMethod != NULL)
{
@@ -897,16 +892,11 @@ void gok_page_accessmethod_checkbox_changed (GtkButton* pButton, gpointer data)
void gok_page_accessmethod_change_controls (gchar* pNameAccessMethod)
{
GokAccessMethod* pAccessMethod;
- GtkWidget* pLabelDescription;
- GtkWidget* pComboAccessMethod;
GokControl ControlParent;
- GtkWidget* pFrame;
g_assert (pNameAccessMethod != NULL);
- pFrame = glade_xml_get_widget (gok_settingsdialog_get_xml(), "AccessMethodsTab");
- g_assert (pFrame != NULL);
- ControlParent.pWidget = pFrame;
+ ControlParent.pWidget = WID ("AccessMethodsTab");
ControlParent.Type = CONTROL_TYPE_FRAME;
/* find the access method in our list */
@@ -930,16 +920,12 @@ void gok_page_accessmethod_change_controls (gchar* pNameAccessMethod)
/* display the name in the combo box */
m_bUsChangingName = TRUE;
- pComboAccessMethod = glade_xml_get_widget (gok_settingsdialog_get_xml(), "comboAccessMethods");
- g_assert (pComboAccessMethod != NULL);
- gok_settingsdialog_combobox_set_active (GTK_COMBO_BOX (pComboAccessMethod),
+ gok_settingsdialog_combobox_set_active (GTK_COMBO_BOX (OID ("comboAccessMethods")),
gok_page_accessmethod_get_displayname (pNameAccessMethod));
m_bUsChangingName = FALSE;
/* change the access method description text */
- pLabelDescription = glade_xml_get_widget (gok_settingsdialog_get_xml(), "labelAmDescription");
- g_assert (pLabelDescription != NULL);
- gtk_label_set_text (GTK_LABEL (pLabelDescription), pAccessMethod->Description);
+ gtk_label_set_text (GTK_LABEL (OID ("labelAmDescription")), pAccessMethod->Description);
/* display the controls for the selected access method */
gok_page_accessmethod_draw_controls (pNameAccessMethod, &ControlParent, pAccessMethod->pControlOperation, NULL, TRUE);
diff --git a/gok/gok-page-accessmethod.h b/gok/gok-page-accessmethod.h
index 112240d..21dab80 100644
--- a/gok/gok-page-accessmethod.h
+++ b/gok/gok-page-accessmethod.h
@@ -23,14 +23,13 @@
#ifndef __GOK_PAGE_ACCESSMETHOD_H__
#define __GOK_PAGE_ACCESSMETHOD_H__
-#include <glade/glade.h>
#include "gok-scanner.h"
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
-gboolean gok_page_accessmethod_initialize (GladeXML* xml);
+gboolean gok_page_accessmethod_initialize (void);
void gok_page_accessmethod_close (void);
gboolean gok_page_accessmethod_apply (void);
gboolean gok_page_accessmethod_apply_controls (GokControl* pControl, gchar* NameAccessMethod);
diff --git a/gok/gok-page-actions.c b/gok/gok-page-actions.c
index d0b47fb..8e5409e 100644
--- a/gok/gok-page-actions.c
+++ b/gok/gok-page-actions.c
@@ -25,8 +25,6 @@
#endif
#include <gtk/gtk.h>
-#include <glade/glade.h>
-#include <glib.h>
#include <glib/gi18n.h>
#include "gok-page-actions.h"
#include "gok-action.h"
@@ -50,36 +48,30 @@ static gboolean m_bChanged;
/**
* gok_page_actions_initialize
-* @pWindowSettings: Pointer to the settings dialog window.
*
* Initializes this page of the gok settings dialog. This must be called
* prior to any calls on this page.
*
* returns: TRUE if the page was properly initialized, FALSE if not.
**/
-gboolean gok_page_actions_initialize (GladeXML* xml)
+gboolean gok_page_actions_initialize (void)
{
GtkComboBox *pComboBox;
GtkWidget *range;
GokAction* pAction;
GSList* pDevice;
- g_assert (xml != NULL);
-
m_pActionCurrent = gok_action_get_first_action ();
m_bIgnoreChangeName = FALSE;
m_bChanged = TRUE;
/* add all the actions to the combo box */
- pComboBox = GTK_COMBO_BOX (glade_xml_get_widget (xml, "comboActionNames"));
- g_assert (pComboBox != NULL);
- gok_settingsdialog_combobox_init (pComboBox, TRUE);
-
+ gok_settingsdialog_combobox_init (GTK_COMBO_BOX (OID ("comboActionNames")), TRUE);
gok_page_actions_fill_combo_action_names();
gok_page_actions_update_controls (gok_action_get_first_action ());
/* initialize the XInput device combobox */
- pComboBox = GTK_COMBO_BOX (glade_xml_get_widget (xml, "comboInputDevice"));
+ pComboBox = GTK_COMBO_BOX (OID ("comboInputDevice"));
g_assert (pComboBox != NULL);
gok_settingsdialog_combobox_init (pComboBox, FALSE);
@@ -111,9 +103,7 @@ gboolean gok_page_actions_initialize (GladeXML* xml)
gok_page_actions_enable_radios_type (FALSE);
/* init the (now-global) valuator sensitivity slider */
- range = glade_xml_get_widget (xml, "ValuatorSensitivityScale");
- g_assert (range != NULL);
- gtk_range_set_value (GTK_RANGE (range),
+ gtk_range_set_value (GTK_RANGE (OID ("ValuatorSensitivityScale")),
gok_data_get_valuator_sensitivity ());
return TRUE;
@@ -246,79 +236,44 @@ void gok_page_actions_toggle_type_switch (gboolean Pressed)
{
GtkToggleButton* pRadioButton;
GtkSpinButton* pSpinButton;
- GtkNotebook *pNotebook;
g_assert (m_pActionCurrent != NULL);
- pNotebook = (GtkNotebook*) glade_xml_get_widget (gok_settingsdialog_get_xml(),
- "action_type_notebook");
- g_assert (pNotebook != NULL);
- gtk_notebook_set_current_page (pNotebook, (Pressed) ? 0 : 1);
-
- if (Pressed == TRUE)
- {
- /* update the action from the controls */
- m_pActionCurrent->Type = ACTION_TYPE_SWITCH;
- /* TODO: fix to allow MOUSEBUTTON also */
-
- pRadioButton = (GtkToggleButton*) glade_xml_get_widget (gok_settingsdialog_get_xml(),
- "radiobuttonSwitch1");
- g_assert (pRadioButton != NULL);
- if (gtk_toggle_button_get_active (pRadioButton) == TRUE)
- {
- m_pActionCurrent->Number = 1;
- }
- else
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (OID ("action_type_notebook")),
+ Pressed ? 0 : 1);
+ if (Pressed)
{
- pRadioButton = (GtkToggleButton*) glade_xml_get_widget (gok_settingsdialog_get_xml(),
- "radiobuttonSwitch2");
- g_assert (pRadioButton != NULL);
- if (gtk_toggle_button_get_active (pRadioButton) == TRUE)
+ /* update the action from the controls */
+ m_pActionCurrent->Type = ACTION_TYPE_SWITCH;
+ /* TODO: fix to allow MOUSEBUTTON also */
+
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (OID ("radiobuttonSwitch1"))))
+ {
+ m_pActionCurrent->Number = 1;
+ }
+ else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (OID ("radiobuttonSwitch2"))))
{
m_pActionCurrent->Number = 2;
}
+ else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (OID ("radiobuttonSwitch3"))))
+ {
+ m_pActionCurrent->Number = 3;
+ }
+ else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (OID ("radiobuttonSwitch4"))))
+ {
+ m_pActionCurrent->Number = 4;
+ }
else
{
- pRadioButton = (GtkToggleButton*) glade_xml_get_widget (
- gok_settingsdialog_get_xml(), "radiobuttonSwitch3");
- g_assert (pRadioButton != NULL);
- if (gtk_toggle_button_get_active (pRadioButton) == TRUE)
- {
- m_pActionCurrent->Number = 3;
- }
- else
- {
- pRadioButton = (GtkToggleButton*) glade_xml_get_widget (
- gok_settingsdialog_get_xml(), "radiobuttonSwitch4");
- g_assert (pRadioButton != NULL);
- if (gtk_toggle_button_get_active (pRadioButton) == TRUE)
- {
- m_pActionCurrent->Number = 4;
- }
- else
- {
- m_pActionCurrent->Number = 5;
- }
- }
+ m_pActionCurrent->Number = 5;
}
- }
- pRadioButton = (GtkToggleButton*) glade_xml_get_widget (gok_settingsdialog_get_xml(),
- "radiobuttonPress");
- g_assert (pRadioButton != NULL);
- if (gtk_toggle_button_get_active (pRadioButton) == TRUE)
- {
- m_pActionCurrent->State = ACTION_STATE_PRESS;
- }
- else
- {
- m_pActionCurrent->State = ACTION_STATE_RELEASE;
- }
+ m_pActionCurrent->State =
+ gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (OID ("radiobuttonPress")))
+ ? ACTION_STATE_PRESS : ACTION_STATE_RELEASE;
- pSpinButton = (GtkSpinButton*) glade_xml_get_widget (gok_settingsdialog_get_xml(),
- "spinDelay");
- g_assert (pSpinButton != NULL);
- m_pActionCurrent->Rate = gtk_spin_button_get_value_as_int (pSpinButton);
+ m_pActionCurrent->Rate =
+ gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (OID ("spinDelay")));
}
gok_page_actions_enable_switch_controls (Pressed);
@@ -333,18 +288,15 @@ void gok_page_actions_toggle_type_switch (gboolean Pressed)
**/
void gok_page_actions_toggle_type_valuator (gboolean Pressed)
{
- GtkSpinButton* pSpinButton;
-
g_assert (m_pActionCurrent != NULL);
if (Pressed == TRUE)
{
/* TODO: consider disabling some controls here */
}
- pSpinButton = (GtkSpinButton*) glade_xml_get_widget (gok_settingsdialog_get_xml(),
- "pointer_delay_spinbutton");
- g_assert (pSpinButton != NULL);
- m_pActionCurrent->Rate = gtk_spin_button_get_value_as_int (pSpinButton);
+
+ m_pActionCurrent->Rate =
+ gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (OID ("pointer_delay_spinbutton")));
gok_page_actions_enable_valuator_controls (Pressed);
}
@@ -540,11 +492,7 @@ void gok_page_actions_button_clicked_delete ()
GokAction* pAction;
GokAction* pActionDisplayed;
- combo = GTK_COMBO_BOX (glade_xml_get_widget (gok_settingsdialog_get_xml (),
- "comboActionNames"));
- g_assert (combo != NULL);
- pNameAction = gtk_combo_box_get_active_text (combo);
-
+ pNameAction = gtk_combo_box_get_active_text (GTK_COMBO_BOX (OID ("comboActionNames")));
buffer = g_strdup_printf (_("Do you wish to delete this action (%s)?"), pNameAction);
pDialog = gtk_message_dialog_new ((GtkWindow*)gok_settingsdialog_get_window(),
@@ -610,9 +558,7 @@ void gok_page_actions_fill_combo_action_names ()
m_bIgnoreChangeName = TRUE;
/* find the combo box */
- pComboBox = GTK_COMBO_BOX (glade_xml_get_widget (gok_settingsdialog_get_xml (),
- "comboActionNames"));
- g_assert (pComboBox != NULL);
+ pComboBox = GTK_COMBO_BOX (OID ("comboActionNames"));
/* clear the combo box model, we might be refilling */
gtk_list_store_clear (GTK_LIST_STORE (gtk_combo_box_get_model (pComboBox)));
@@ -723,11 +669,6 @@ void gok_page_actions_input_device_changed (GtkComboBox *combo)
**/
void gok_page_actions_update_controls (GokAction* pAction)
{
- GtkWidget* pRadioButton;
- GtkWidget* pSpinControl;
- GtkWidget* pCheckbox;
- GtkWidget* pButton;
-
/* if no action then disable all the controls */
if (pAction == NULL)
{
@@ -737,70 +678,33 @@ void gok_page_actions_update_controls (GokAction* pAction)
return;
}
- /* is this a permanent action? */
- if (pAction->bPermanent == TRUE)
- {
- /* don't allow user to edit the action name */
- pButton = glade_xml_get_widget (gok_settingsdialog_get_xml(), "buttonChangeName");
- g_assert (pButton != NULL);
- gtk_widget_set_sensitive (pButton, FALSE);
-
- gok_page_actions_enable_radios_type (FALSE);
- pButton = glade_xml_get_widget (gok_settingsdialog_get_xml(), "buttonDeleteAction");
- g_assert (pButton != NULL);
- gtk_widget_set_sensitive (pButton, FALSE);
- }
- else
- {
- /* not permanent, enable controls for changing action type */
- gok_page_actions_enable_radios_type (TRUE);
-
- pButton = glade_xml_get_widget (gok_settingsdialog_get_xml(), "buttonDeleteAction");
- g_assert (pButton != NULL);
- gtk_widget_set_sensitive (pButton, TRUE);
-
- /* allow user to edit the action name */
- pButton = glade_xml_get_widget (gok_settingsdialog_get_xml(), "buttonChangeName");
- g_assert (pButton != NULL);
- gtk_widget_set_sensitive (pButton, TRUE);
- }
+ /* enable radio controls if this action isn't permanent */
+ gok_page_actions_enable_radios_type (!pAction->bPermanent);
+ /* enable delete & rename buttons if the action isn't permanent */
+ gtk_widget_set_sensitive (WID ("buttonChangeName"), !pAction->bPermanent);
+ gtk_widget_set_sensitive (WID ("buttonDeleteAction"), !pAction->bPermanent);
/* update the values for all controls */
switch (pAction->Number)
{
case 1:
- pRadioButton = glade_xml_get_widget (gok_settingsdialog_get_xml(), "radiobuttonSwitch1");
- g_assert (pRadioButton != NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(pRadioButton), TRUE);
-
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("radiobuttonSwitch1")), TRUE);
break;
case 2:
- pRadioButton = glade_xml_get_widget (gok_settingsdialog_get_xml(), "radiobuttonSwitch2");
- g_assert (pRadioButton != NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(pRadioButton), TRUE);
-
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("radiobuttonSwitch2")), TRUE);
break;
case 3:
- pRadioButton = glade_xml_get_widget (gok_settingsdialog_get_xml(), "radiobuttonSwitch3");
- g_assert (pRadioButton != NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(pRadioButton), TRUE);
-
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("radiobuttonSwitch3")), TRUE);
break;
case 4:
- pRadioButton = glade_xml_get_widget (gok_settingsdialog_get_xml(), "radiobuttonSwitch4");
- g_assert (pRadioButton != NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(pRadioButton), TRUE);
-
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("radiobuttonSwitch4")), TRUE);
break;
case 5:
- pRadioButton = glade_xml_get_widget (gok_settingsdialog_get_xml(), "radiobuttonSwitch5");
- g_assert (pRadioButton != NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(pRadioButton), TRUE);
-
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("radiobuttonSwitch5")), TRUE);
break;
default:
@@ -810,33 +714,21 @@ void gok_page_actions_update_controls (GokAction* pAction)
switch (pAction->State)
{
case ACTION_STATE_PRESS:
- pRadioButton = glade_xml_get_widget (gok_settingsdialog_get_xml(), "radiobuttonPress");
- g_assert (pRadioButton != NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(pRadioButton), TRUE);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("radiobuttonPress")), TRUE);
break;
case ACTION_STATE_RELEASE:
- pRadioButton = glade_xml_get_widget (gok_settingsdialog_get_xml(), "radiobuttonRelease");
- g_assert (pRadioButton != NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(pRadioButton), TRUE);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("radiobuttonRelease")), TRUE);
break;
default:
gok_log_x ("default hit!\n");
break;
}
-
- pSpinControl = glade_xml_get_widget (gok_settingsdialog_get_xml(), "spinDelay");
- g_assert (pSpinControl != NULL);
- gtk_spin_button_set_value (GTK_SPIN_BUTTON(pSpinControl), pAction->Rate);
- pSpinControl = glade_xml_get_widget (gok_settingsdialog_get_xml(), "pointer_delay_spinbutton");
- g_assert (pSpinControl != NULL);
- gtk_spin_button_set_value (GTK_SPIN_BUTTON(pSpinControl), pAction->Rate);
-
- pCheckbox = glade_xml_get_widget (gok_settingsdialog_get_xml(), "checkKeyAverage");
- g_assert (pSpinControl != NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(pCheckbox), pAction->bKeyAveraging);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (OID ("spinDelay")), pAction->Rate);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (OID ("pointer_delay_spinbutton")), pAction->Rate);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("checkKeyAverage")), pAction->bKeyAveraging);
/* enable/disable the appropriate controls */
switch (pAction->Type)
@@ -845,32 +737,20 @@ void gok_page_actions_update_controls (GokAction* pAction)
case ACTION_TYPE_MOUSEBUTTON:
case ACTION_TYPE_KEY:
/* enable/disable the controls for switch actions */
- pRadioButton = glade_xml_get_widget (gok_settingsdialog_get_xml(), "radiobuttonTypeSwitch");
- g_assert (pRadioButton != NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(pRadioButton), TRUE);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("radiobuttonTypeSwitch")), TRUE);
gok_page_actions_enable_switch_controls (TRUE);
gok_page_actions_enable_valuator_controls (FALSE);
break;
case ACTION_TYPE_DWELL:
- pRadioButton = glade_xml_get_widget (gok_settingsdialog_get_xml(), "radiobuttonTypeValuator");
- g_assert (pRadioButton != NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(pRadioButton), TRUE);
-
- pRadioButton = glade_xml_get_widget (gok_settingsdialog_get_xml(), "activate_on_dwell_button");
- g_assert (pRadioButton != NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(pRadioButton), TRUE);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("radiobuttonTypeValuator")), TRUE);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("activate_on_dwell_button")), TRUE);
gok_page_actions_enable_switch_controls (FALSE);
gok_page_actions_enable_valuator_controls (TRUE);
break;
case ACTION_TYPE_MOUSEPOINTER:
- pRadioButton = glade_xml_get_widget (gok_settingsdialog_get_xml(), "radiobuttonTypeValuator");
- g_assert (pRadioButton != NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(pRadioButton), TRUE);
- pRadioButton = glade_xml_get_widget (gok_settingsdialog_get_xml(), "activate_on_enter_button");
- g_assert (pRadioButton != NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(pRadioButton), TRUE);
-
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("radiobuttonTypeValuator")), TRUE);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("activate_on_enter_button")), TRUE);
gok_page_actions_enable_switch_controls (FALSE);
gok_page_actions_enable_valuator_controls (TRUE);
break;
@@ -879,16 +759,15 @@ void gok_page_actions_update_controls (GokAction* pAction)
gok_log_x ("default hit!\n");
break;
}
- pRadioButton = glade_xml_get_widget (gok_settingsdialog_get_xml(), "xinput_device_button");
- g_assert (pRadioButton != NULL);
+
switch (pAction->Type)
{
case ACTION_TYPE_SWITCH:
case ACTION_TYPE_KEY:
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(pRadioButton), TRUE);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("xinput_device_button")), TRUE);
break;
case ACTION_TYPE_MOUSEBUTTON:
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(pRadioButton), FALSE);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("xinput_device_button")), FALSE);
break;
default:
break;
@@ -904,19 +783,11 @@ void gok_page_actions_update_controls (GokAction* pAction)
**/
void gok_page_actions_enable_switch_controls (gboolean bTrueFalse)
{
- GtkWidget* pFrame, *pNotebook;
-
- pFrame = glade_xml_get_widget (gok_settingsdialog_get_xml(), "frameSwitch");
- g_assert (pFrame != NULL);
-
- gtk_widget_set_sensitive (pFrame, bTrueFalse);
+ gtk_widget_set_sensitive (WID ("frameSwitch"), bTrueFalse);
if (bTrueFalse)
{
- pNotebook = glade_xml_get_widget (gok_settingsdialog_get_xml(), "action_type_notebook");
- g_assert (pNotebook != NULL);
-
- gtk_notebook_set_current_page (GTK_NOTEBOOK (pNotebook), 0);
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (OID ("action_type_notebook")), 0);
}
}
@@ -928,19 +799,11 @@ void gok_page_actions_enable_switch_controls (gboolean bTrueFalse)
**/
void gok_page_actions_enable_valuator_controls (gboolean bTrueFalse)
{
- GtkWidget* pFrame, *pNotebook;
-
- pFrame = glade_xml_get_widget (gok_settingsdialog_get_xml(), "frameSwitch");
- g_assert (pFrame != NULL);
-
- gtk_widget_set_sensitive (pFrame, bTrueFalse);
+ gtk_widget_set_sensitive (WID ("frameSwitch"), bTrueFalse);
if (bTrueFalse)
{
- pNotebook = glade_xml_get_widget (gok_settingsdialog_get_xml(), "action_type_notebook");
- g_assert (pNotebook != NULL);
-
- gtk_notebook_set_current_page (GTK_NOTEBOOK (pNotebook), 1);
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (WID ("action_type_notebook")), 1);
}
}
@@ -952,20 +815,9 @@ void gok_page_actions_enable_valuator_controls (gboolean bTrueFalse)
**/
void gok_page_actions_enable_radios_type (gboolean bTrueFalse)
{
- GtkWidget* pWidget;
-
- pWidget = glade_xml_get_widget (gok_settingsdialog_get_xml(), "labelActionType");
- g_assert (pWidget != NULL);
- gtk_widget_set_sensitive (pWidget, bTrueFalse);
-
- pWidget = glade_xml_get_widget (gok_settingsdialog_get_xml(), "radiobuttonTypeSwitch");
- g_assert (pWidget != NULL);
- gtk_widget_set_sensitive (pWidget, bTrueFalse);
-
- pWidget = glade_xml_get_widget (gok_settingsdialog_get_xml(), "radiobuttonTypeValuator");
- g_assert (pWidget != NULL);
- gtk_widget_set_sensitive (pWidget, bTrueFalse);
-
+ gtk_widget_set_sensitive (WID ("labelActionType"), bTrueFalse);
+ gtk_widget_set_sensitive (WID ("radiobuttonTypeSwitch"), bTrueFalse);
+ gtk_widget_set_sensitive (WID ("radiobuttonTypeValuator"), bTrueFalse);
}
/**
diff --git a/gok/gok-page-actions.h b/gok/gok-page-actions.h
index 1f3fed0..96e405a 100644
--- a/gok/gok-page-actions.h
+++ b/gok/gok-page-actions.h
@@ -22,7 +22,7 @@
#include "gok-action.h"
-gboolean gok_page_actions_initialize (GladeXML* xml);
+gboolean gok_page_actions_initialize (void);
void gok_page_actions_refresh (void);
gboolean gok_page_actions_apply (void);
gboolean gok_page_actions_revert (void);
diff --git a/gok/gok-page-feedbacks.c b/gok/gok-page-feedbacks.c
index 8eee5e3..73f9d42 100644
--- a/gok/gok-page-feedbacks.c
+++ b/gok/gok-page-feedbacks.c
@@ -25,8 +25,7 @@
#endif
#include <gtk/gtk.h>
-#include <glib.h>
-#include <glib/gi18n.h>
+
#include "gok-page-feedbacks.h"
#include "gok-feedback.h"
#include "gok-log.h"
@@ -54,25 +53,21 @@ static gboolean m_bIgnoreSoundNameChange;
*
* returns: TRUE if the page was properly initialized, FALSE if not.
**/
-gboolean gok_page_feedbacks_initialize (GladeXML* xml)
+gboolean gok_page_feedbacks_initialize (void)
{
GtkComboBox* pComboBox;
GokFeedback* pFeedback;
- g_assert (xml != NULL);
-
m_pFeedbackCurrent = NULL;
m_bChanged = TRUE;
- pComboBox = GTK_COMBO_BOX (glade_xml_get_widget (xml, "comboSoundName"));
- g_assert (pComboBox != NULL);
+ pComboBox = GTK_COMBO_BOX (OID ("comboSoundName"));
gok_settingsdialog_combobox_init (pComboBox, TRUE);
/* add all sounds to the 'sounds' combo box */
gok_feedbacks_update_sound_combo ();
- pComboBox = GTK_COMBO_BOX (glade_xml_get_widget (xml, "comboFeedback"));
- g_assert (pComboBox != NULL);
+ pComboBox = GTK_COMBO_BOX (OID ("comboFeedback"));
gok_settingsdialog_combobox_init (pComboBox, TRUE);
m_bIgnoreChangeName = TRUE;
@@ -254,11 +249,6 @@ void gok_page_feedbacks_feedback_changed (GtkComboBox *combo)
gok_page_feedbacks_update_controls (pFeedback);
}
-/*
- * use something like this everywhere when we migrate to gtkbuilder
- */
-#define WID(n) (glade_xml_get_widget (gok_settingsdialog_get_xml (), (n)))
-
/**
* gok_page_feedbacks_update_controls
* @pFeedback: Controls are changed to display this feedback.
@@ -315,13 +305,13 @@ void gok_page_feedbacks_update_controls (GokFeedback* pFeedback)
/* key flashing rate */
gtk_widget_set_sensitive (WID ("boxKeyFlashing"), pFeedback->bFlashOn);
- gtk_spin_button_set_value (GTK_SPIN_BUTTON (WID ("spinKeyFlashing")),
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (OID ("spinKeyFlashing")),
pFeedback->NumberFlashes);
/* sound file */
gtk_widget_set_sensitive (WID ("boxSoundFile"), pFeedback->bSoundOn);
m_bIgnoreSoundNameChange = TRUE;
- gok_settingsdialog_combobox_set_active (GTK_COMBO_BOX (WID ("comboSoundName")),
+ gok_settingsdialog_combobox_set_active (GTK_COMBO_BOX (OID ("comboSoundName")),
pFeedback->pNameSound ? pFeedback->pNameSound : "none");
m_bIgnoreSoundNameChange = FALSE;
}
@@ -511,9 +501,7 @@ void gok_page_feedbacks_fill_combo_feedback_names ()
m_bIgnoreChangeName = TRUE;
/* find the combo box */
- pComboBox = GTK_COMBO_BOX (glade_xml_get_widget (gok_settingsdialog_get_xml (),
- "comboFeedback"));
- g_assert (pComboBox != NULL);
+ pComboBox = GTK_COMBO_BOX (OID ("comboFeedback"));
/* clear the combo box model. we might be refilling */
gtk_list_store_clear (GTK_LIST_STORE (gtk_combo_box_get_model (pComboBox)));
@@ -542,17 +530,13 @@ void gok_page_feedbacks_fill_combo_feedback_names ()
void gok_page_feedbacks_button_clicked_delete ()
{
GtkWidget* pDialog;
- GtkWidget* pComboBox;
gchar* pNameFeedback;
gchar buffer[200];
gint result;
GokFeedback* pFeedback;
GokFeedback* pFeedbackDisplayed;
-
- pComboBox = glade_xml_get_widget (gok_settingsdialog_get_xml(), "comboFeedback");
- g_assert (pComboBox != NULL);
- pNameFeedback = gtk_combo_box_get_active_text (GTK_COMBO_BOX (pComboBox));
+ pNameFeedback = gtk_combo_box_get_active_text (GTK_COMBO_BOX (OID ("comboFeedback")));
g_assert (pNameFeedback != NULL);
sprintf (buffer, _("Do you wish to delete this feedback (%s)?"), pNameFeedback);
@@ -633,16 +617,11 @@ gok_page_feedbacks_check_keyflashing_toggled (GtkToggleButton *button)
void
gok_page_feedbacks_spin_keyflashing_changed (void)
{
- GtkWidget* pSpinControl;
-
- if (m_pFeedbackCurrent == NULL)
+ if (m_pFeedbackCurrent)
{
- return;
+ m_pFeedbackCurrent->NumberFlashes =
+ gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (WID ("spinKeyFlashing")));
}
-
- pSpinControl = glade_xml_get_widget (gok_settingsdialog_get_xml(), "spinKeyFlashing");
- g_assert (pSpinControl != NULL);
- m_pFeedbackCurrent->NumberFlashes = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(pSpinControl));
}
/**
@@ -743,9 +722,7 @@ void gok_feedbacks_update_sound_combo (void)
m_bIgnoreSoundNameChange = TRUE;
- pCombo = GTK_COMBO_BOX (glade_xml_get_widget (gok_settingsdialog_get_xml (),
- "comboSoundName"));
- g_assert (pCombo != NULL);
+ pCombo = GTK_COMBO_BOX (OID ("comboSoundName"));
gtk_list_store_clear (GTK_LIST_STORE (gtk_combo_box_get_model (pCombo)));
pFeedback = gok_feedback_get_first_feedback();
@@ -773,7 +750,6 @@ void gok_page_feedbacks_get_sound_file ()
GtkWidget* pDialogFilename;
gint response;
gchar* filename;
- GtkWidget* pCombo;
/* make sure the current feedback is not NULL */
if (m_pFeedbackCurrent == NULL)
@@ -816,10 +792,8 @@ void gok_page_feedbacks_get_sound_file ()
gok_feedbacks_update_sound_combo();
/* display it in the combo box */
- pCombo = glade_xml_get_widget (gok_settingsdialog_get_xml (), "comboSoundName");
- g_assert (pCombo != NULL);
m_bIgnoreSoundNameChange = TRUE;
- gok_settingsdialog_combobox_set_active (GTK_COMBO_BOX (pCombo), filename);
+ gok_settingsdialog_combobox_set_active (GTK_COMBO_BOX (OID ("comboSoundName")), filename);
m_bIgnoreSoundNameChange = FALSE;
/* destroy the file selector dialog */
diff --git a/gok/gok-page-feedbacks.h b/gok/gok-page-feedbacks.h
index 7e20526..7f0e209 100644
--- a/gok/gok-page-feedbacks.h
+++ b/gok/gok-page-feedbacks.h
@@ -24,13 +24,12 @@
#define __GOK_PAGE_FEEDBACKS_H__
#include <gtk/gtk.h>
-#include <glade/glade.h>
#include "gok-feedback.h"
G_BEGIN_DECLS
-gboolean gok_page_feedbacks_initialize (GladeXML* xml);
+gboolean gok_page_feedbacks_initialize (void);
void gok_page_feedbacks_refresh (void);
gboolean gok_page_feedbacks_apply (void);
gboolean gok_page_feedbacks_revert (void);
diff --git a/gok/gok-page-keyboard.c b/gok/gok-page-keyboard.c
index ba1c6de..fcfc885 100644
--- a/gok/gok-page-keyboard.c
+++ b/gok/gok-page-keyboard.c
@@ -2,6 +2,7 @@
*
* Copyright 2004 Sun Microsystems, Inc.,
* Copyright 2004 University Of Toronto
+* Copyright 2009 Gerd Kohlberger <gerdko gmail com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -24,9 +25,6 @@
#endif
#include <gtk/gtk.h>
-#include <glade/glade.h>
-#include <glib.h>
-#include <glib/gi18n.h>
#include "gok-page-keyboard.h"
#include "gok-data.h"
#include "gok-log.h"
@@ -50,31 +48,20 @@ static void gok_page_keyboard_initialize_aux_keyboard_dir (const char* file);
*
* returns: TRUE if the page was properly initialized, FALSE if not.
**/
-gboolean gok_page_keyboard_initialize (GladeXML* xml)
+gboolean gok_page_keyboard_initialize (void)
{
- GtkWidget* widget;
-
- g_assert (xml != NULL);
-
/* store the current values */
gok_page_keyboard_backup();
/* update the controls */
- widget = glade_xml_get_widget (xml, "XkbComposeKeyboardRadiobutton");
- g_assert (widget != NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), save_compose_type == GOK_COMPOSE_XKB);
-
- widget = glade_xml_get_widget (xml, "AlphaComposeKeyboardRadiobutton");
- g_assert (widget != NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), save_compose_type == GOK_COMPOSE_ALPHA);
-
- widget = glade_xml_get_widget (xml, "AlphaFrequencyComposeKeyboardRadiobutton");
- g_assert (widget != NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), save_compose_type == GOK_COMPOSE_ALPHAFREQ);
-
- widget = glade_xml_get_widget (xml, "XmlComposeKeyboardRadiobutton");
- g_assert (widget != NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), save_compose_type == GOK_COMPOSE_CUSTOM);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("XkbComposeKeyboardRadiobutton")),
+ save_compose_type == GOK_COMPOSE_XKB);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("AlphaComposeKeyboardRadiobutton")),
+ save_compose_type == GOK_COMPOSE_ALPHA);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("AlphaFrequencyComposeKeyboardRadiobutton")),
+ save_compose_type == GOK_COMPOSE_ALPHAFREQ);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("XmlComposeKeyboardRadiobutton")),
+ save_compose_type == GOK_COMPOSE_CUSTOM);
gok_page_keyboard_initialize_compose_filename ((save_compose_type == GOK_COMPOSE_CUSTOM) ?
gok_data_get_custom_compose_filename () : "");
@@ -83,7 +70,6 @@ gboolean gok_page_keyboard_initialize (GladeXML* xml)
return TRUE;
}
-
/**
* gok_page_keyboard_apply
*
@@ -118,7 +104,7 @@ gboolean gok_page_keyboard_revert ()
gok_data_set_compose_keyboard_type (save_compose_type);
gok_data_set_custom_compose_filename (save_compose_filename);
gok_data_set_aux_keyboard_directory (save_aux_kbd_dirname);
- gok_page_keyboard_initialize (gok_settingsdialog_get_xml ());
+ gok_page_keyboard_initialize ();
return TRUE;
}
@@ -139,13 +125,11 @@ void gok_page_keyboard_backup ()
void
gok_page_keyboard_update_custom_dir_from_control ()
{
- GtkWidget* pWidget;
gchar* text;
-
+
gok_log_enter();
- pWidget = glade_xml_get_widget (gok_settingsdialog_get_xml(), "AuxKeyboardDirEntry");
- g_assert (pWidget != NULL);
- text = g_strdup (gtk_entry_get_text (GTK_ENTRY (pWidget)));
+
+ text = g_strdup (gtk_entry_get_text (GTK_ENTRY (OID ("AuxKeyboardDirEntry"))));
g_free (save_aux_kbd_dirname);
save_aux_kbd_dirname = text;
@@ -155,15 +139,14 @@ gok_page_keyboard_update_custom_dir_from_control ()
void
gok_page_keyboard_update_custom_compose_from_control ()
{
- GtkWidget* pWidget;
gchar* text;
-
+
gok_log_enter();
- pWidget = glade_xml_get_widget (gok_settingsdialog_get_xml(), "XmlKeyboardFileChooser");
- g_assert (pWidget != NULL);
- text = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (pWidget));
+
+ text = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (OID ("XmlKeyboardFileChooser")));
g_free (save_compose_filename);
save_compose_filename = text;
+
gok_log_leave();
}
@@ -175,10 +158,7 @@ gok_page_keyboard_initialize_aux_keyboard_dir (const char* file)
gok_log_enter();
if (file)
{
- pWidget = glade_xml_get_widget (gok_settingsdialog_get_xml (),
- "AuxKeyboardDirEntry");
- g_assert (pWidget != NULL);
- gtk_entry_set_text (GTK_ENTRY (pWidget), file);
+ gtk_entry_set_text (GTK_ENTRY (OID ("AuxKeyboardDirEntry")), file);
}
gok_log_leave();
}
@@ -193,11 +173,7 @@ on_aux_keyboard_dir_dialog_response (GtkDialog *dialog, gint response, gpointer
folder = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
if (folder)
{
- GtkWidget *entry;
-
- entry = glade_xml_get_widget (gok_settingsdialog_get_xml (),
- "AuxKeyboardDirEntry");
- gtk_entry_set_text (GTK_ENTRY (entry), folder);
+ gtk_entry_set_text (GTK_ENTRY (OID ("AuxKeyboardDirEntry")), folder);
gok_data_set_aux_keyboard_directory (folder);
g_free (folder);
}
@@ -208,7 +184,7 @@ on_aux_keyboard_dir_dialog_response (GtkDialog *dialog, gint response, gpointer
void
on_aux_keyboard_dir_button_clicked (GtkButton *button, gpointer data)
{
- GtkWidget *dialog, *entry;
+ GtkWidget *dialog;
gchar *folder;
dialog = gtk_file_chooser_dialog_new (
@@ -230,10 +206,8 @@ on_aux_keyboard_dir_button_clicked (GtkButton *button, gpointer data)
G_CALLBACK (on_aux_keyboard_dir_dialog_response),
NULL);
- entry = glade_xml_get_widget (gok_settingsdialog_get_xml (),
- "AuxKeyboardDirEntry");
gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (dialog),
- gtk_entry_get_text (GTK_ENTRY (entry)));
+ gtk_entry_get_text (GTK_ENTRY (OID ("AuxKeyboardDirEntry"))));
gtk_widget_show (dialog);
}
@@ -243,8 +217,7 @@ gok_page_keyboard_initialize_compose_filename (const char* file)
GtkWidget* pWidget;
gok_log_enter();
- pWidget = glade_xml_get_widget (gok_settingsdialog_get_xml(), "XmlKeyboardFileChooser");
- g_assert (pWidget != NULL);
+ pWidget = WID ("XmlKeyboardFileChooser");
gtk_file_chooser_button_set_title (GTK_FILE_CHOOSER_BUTTON (pWidget),
_("Select the XML file defining your startup compose keyboard"));
gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (pWidget), file);
diff --git a/gok/gok-page-keyboard.h b/gok/gok-page-keyboard.h
index 9d53d81..7a2150a 100644
--- a/gok/gok-page-keyboard.h
+++ b/gok/gok-page-keyboard.h
@@ -2,6 +2,7 @@
*
* Copyright 2004 Sun Microsystems, Inc.,
* Copyright 2004 University Of Toronto
+* Copyright 2009 Gerd Kohlberger <gerdko gmail com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -19,9 +20,9 @@
* Boston, MA 02111-1307, USA.
*/
-gboolean gok_page_keyboard_initialize (GladeXML* xml);
+gboolean gok_page_keyboard_initialize (void);
void gok_page_keyboard_refresh (void);
gboolean gok_page_keyboard_apply (void);
gboolean gok_page_keyboard_revert (void);
void gok_page_keyboard_backup (void);
-void gok_page_keyboard_update_custom_compose_from_control ();
+void gok_page_keyboard_update_custom_compose_from_control (void);
diff --git a/gok/gok-page-keysizespace.c b/gok/gok-page-keysizespace.c
index f9bacc8..ac86092 100644
--- a/gok/gok-page-keysizespace.c
+++ b/gok/gok-page-keysizespace.c
@@ -2,6 +2,7 @@
*
* Copyright 2002-2009 Sun Microsystems, Inc.,
* Copyright 2002-2009 University Of Toronto
+* Copyright 2009 Gerd Kohlberger <gerdko gmail com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -19,13 +20,8 @@
* Boston, MA 02111-1307, USA.
*/
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
+#include <gtk/gtk.h>
-#include <glade/glade.h>
-#include <glib.h>
-#include <glib/gi18n.h>
#include "gok-page-keysizespace.h"
#include "gok-data.h"
#include "gok-log.h"
@@ -42,23 +38,18 @@ static gboolean m_bUseGtkPlusThemeBackup;
static GtkWidget *sample_buttons[4];
/**
-* gok-settings-page-keysizespace-initialize
-* @pWindowSettings: Pointer to the settings dialog window.
+* gok_settings_page_keysizespace_initialize:
*
* Initializes this page of the gok settings dialog. This must be called
* prior to any calls on this page.
*
* returns: TRUE if the page was initialized OK, FALSE if not.
**/
-gboolean gok_settings_page_keysizespace_initialize (GladeXML * xml)
+gboolean gok_settings_page_keysizespace_initialize (void)
{
GtkWidget* fixedKeySpacing;
- GtkWidget* pWindowSettings;
- GtkWidget* widget;
gint i;
- g_assert (xml != NULL);
-
/* initialize this data */
m_keywidth = gok_data_get_key_width();
m_keyheight = gok_data_get_key_height();
@@ -69,20 +60,13 @@ gboolean gok_settings_page_keysizespace_initialize (GladeXML * xml)
gok_settings_page_keysizespace_backup();
/* create the example buttons for key size/spacing */
- /* I'm doing this here because Glade doesn't know about GokButtons */
-
- /* first, get the fixed area that holds the keys */
- fixedKeySpacing = glade_xml_get_widget (xml, "fixedKeySpacing");
- g_assert (fixedKeySpacing != NULL);
- pWindowSettings = glade_xml_get_widget (xml, "dialogSettings");
- g_assert (pWindowSettings != NULL);
-
+ fixedKeySpacing = WID ("fixedKeySpacing");
for (i = 0; i < 4; ++i)
{
sample_buttons[i] = gok_button_new_with_label (_("Button"), IMAGE_PLACEMENT_LEFT);
g_assert (sample_buttons[i] != NULL);
gtk_widget_set_name (sample_buttons[i], "StyleButtonNormal");
- gok_settings_page_keysizespace_set_label_name (sample_buttons[i]);
+ gtk_widget_set_name (GOK_BUTTON (sample_buttons[i])->pLabel, "StyleTextNormal");
gtk_container_add (GTK_CONTAINER (fixedKeySpacing), sample_buttons[i]);
gtk_widget_show (sample_buttons[i]);
}
@@ -94,94 +78,59 @@ gboolean gok_settings_page_keysizespace_initialize (GladeXML * xml)
}
/**
-* gok_settings_page_keysizespace_set_label_name
-* @pButton: Pointer to the button that gets the new label name.
-*
-* Helper function that sets the 'name' of the button label.
-**/
-void gok_settings_page_keysizespace_set_label_name (GtkWidget* pButton)
-{
- GList* pListContainerChildren;
-
- pListContainerChildren = gtk_container_get_children (GTK_CONTAINER(pButton));
- while (pListContainerChildren != NULL)
- {
- if (GTK_IS_LABEL (pListContainerChildren->data) == TRUE)
- {
- gtk_widget_set_name (GTK_WIDGET(pListContainerChildren->data), "StyleTextNormal");
- break;
- }
- pListContainerChildren = pListContainerChildren->next;
- }
-
- g_list_free (pListContainerChildren);
-}
-
-/**
* gok_settings_page_keysizespace_refresh
*
* Refreshes the key size and key spacing controls on the key size/spacing page
* from the gok_data.
*
-* returns: void.
**/
void gok_settings_page_keysizespace_refresh ()
{
- GtkWidget* pSpinSpacing;
- GtkWidget* pSpinWidth;
- GtkWidget* pSpinHeight;
- GtkWidget* pCheckUseTheme;
- GtkWidget* widget;
+ GtkWidget *widget;
+ GokDockType dock_type;
/* initialize the spin control for the key width */
- pSpinWidth = glade_xml_get_widget (gok_settingsdialog_get_xml(), "spinKeyWidth");
- g_assert (pSpinWidth != NULL);
- gtk_spin_button_set_value (GTK_SPIN_BUTTON(pSpinWidth), gok_data_get_key_width());
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (OID ("spinKeyWidth")),
+ gok_data_get_key_width ());
/* initialize the spin control for the key height */
- pSpinHeight = glade_xml_get_widget (gok_settingsdialog_get_xml(), "spinKeyHeight");
- g_assert (pSpinHeight != NULL);
- gtk_spin_button_set_value (GTK_SPIN_BUTTON(pSpinHeight), gok_data_get_key_height());
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (OID ("spinKeyHeight")),
+ gok_data_get_key_height ());
/* initialize the spin control for the key spacing */
- pSpinSpacing = glade_xml_get_widget (gok_settingsdialog_get_xml(), "spinKeySpacing");
- g_assert (pSpinSpacing != NULL);
- gtk_spin_button_set_value (GTK_SPIN_BUTTON(pSpinSpacing), gok_data_get_key_spacing());
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (OID ("spinKeySpacing")),
+ gok_data_get_key_spacing ());
/* position the example keys to show key size and key spacing */
gok_settings_page_keysizespace_display_keysizespacing (gok_data_get_key_width(),
gok_data_get_key_height(),
gok_data_get_key_spacing());
- pCheckUseTheme = glade_xml_get_widget (gok_settingsdialog_get_xml(), "checkUseTheme");
- g_assert (pCheckUseTheme != NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(pCheckUseTheme), gok_data_get_use_gtkplus_theme());
+ /* initialize the checkbutton for 'use desktop theme' */
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("checkUseTheme")),
+ gok_data_get_use_gtkplus_theme ());
/* initialize the state of the dock buttons */
- widget = glade_xml_get_widget (gok_settingsdialog_get_xml(), "DockCheckButton");
- g_assert (widget != NULL);
- if (gok_data_get_dock_type () == GOK_DOCK_NONE)
+ dock_type = gok_data_get_dock_type ();
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("DockCheckButton")),
+ dock_type != GOK_DOCK_NONE);
+
+ if (dock_type == GOK_DOCK_NONE)
{
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(widget), FALSE);
- gtk_widget_set_sensitive (glade_xml_get_widget (gok_settingsdialog_get_xml (),
- "DockTopRadiobutton"),
- FALSE);
- gtk_widget_set_sensitive (glade_xml_get_widget (gok_settingsdialog_get_xml (),
- "DockBottomRadiobutton"),
- FALSE);
+ gtk_widget_set_sensitive (WID ("DockTopRadiobutton"), FALSE);
+ gtk_widget_set_sensitive (WID ("DockBottomRadiobutton"), FALSE);
}
else
{
- GtkWidget *togglewidget;
- togglewidget = glade_xml_get_widget (gok_settingsdialog_get_xml (), "DockTopRadiobutton");
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(togglewidget), gok_data_get_dock_type () == GOK_DOCK_TOP);
- togglewidget = glade_xml_get_widget (gok_settingsdialog_get_xml (), "DockBottomRadiobutton");
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(togglewidget), gok_data_get_dock_type () == GOK_DOCK_BOTTOM);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(widget), TRUE);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("DockTopRadiobutton")),
+ dock_type == GOK_DOCK_TOP);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("DockBottomRadiobutton")),
+ dock_type == GOK_DOCK_BOTTOM);
}
- widget = glade_xml_get_widget (gok_settingsdialog_get_xml(), "FillCheckButton");
- g_assert (widget != NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(widget), gok_data_get_expand ());
+
+ /* initialize the checkbox for fill screen width */
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("FillCheckButton")),
+ gok_data_get_expand ());
}
/**
@@ -217,9 +166,7 @@ gboolean gok_settings_page_keysizespace_apply ()
gok_data_set_key_height (m_keyheight);
}
- pCheckUseTheme = glade_xml_get_widget (gok_settingsdialog_get_xml(), "checkUseTheme");
- g_assert (pCheckUseTheme != NULL);
- m_bUseGtkPlusTheme = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(pCheckUseTheme));
+ m_bUseGtkPlusTheme = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (OID ("checkUseTheme")));
if (gok_data_get_use_gtkplus_theme() != m_bUseGtkPlusTheme)
{
bDataChanged = TRUE;
@@ -334,11 +281,8 @@ void gok_settings_page_keysizespace_display_keysizespacing (gint KeyWidth, gint
Space = MAX_KEY_SPACING;
}
- /* get the container that holds the 'keyspace' buttons */
- pFixedKeyspacing = glade_xml_get_widget (gok_settingsdialog_get_xml(), "fixedKeySpacing");
- g_assert (pFixedKeyspacing != NULL);
-
/* get the size of the fixed container */
+ pFixedKeyspacing = WID ("fixedKeySpacing");
gtk_widget_size_request (pFixedKeyspacing, &requisitionSizeFixed);
/* calculate the positions of the buttons */
@@ -346,9 +290,7 @@ void gok_settings_page_keysizespace_display_keysizespacing (gint KeyWidth, gint
top = (requisitionSizeFixed.height - ((KeyHeight * 2) + Space)) / 2;
/* calculate the left side based upon the window size */
- pWindowSettings = glade_xml_get_widget (gok_settingsdialog_get_xml(), "dialogSettings");
- g_assert (pWindowSettings != NULL);
-
+ pWindowSettings = WID ("window");
if (GDK_IS_DRAWABLE(pWindowSettings->window) == TRUE)
{
gdk_drawable_get_size (pWindowSettings->window, &width, NULL);
diff --git a/gok/gok-page-keysizespace.h b/gok/gok-page-keysizespace.h
index 60b2596..2a7732e 100644
--- a/gok/gok-page-keysizespace.h
+++ b/gok/gok-page-keysizespace.h
@@ -2,6 +2,7 @@
*
* Copyright 2002 Sun Microsystems, Inc.,
* Copyright 2002 University Of Toronto
+* Copyright 2009 Gerd Kohlberger <gerdko gmail com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -19,11 +20,10 @@
* Boston, MA 02111-1307, USA.
*/
-gboolean gok_settings_page_keysizespace_initialize (GladeXML* xml);
+gboolean gok_settings_page_keysizespace_initialize (void);
void gok_settings_page_keysizespace_refresh (void);
gboolean gok_settings_page_keysizespace_ok (void);
gboolean gok_settings_page_keysizespace_revert (void);
void gok_settings_page_keysizespace_backup (void);
gboolean gok_settings_page_keysizespace_apply (void);
void gok_settings_page_keysizespace_display_keysizespacing (gint KeyWidth, gint KeyHeight, gint Space);
-void gok_settings_page_keysizespace_set_label_name (GtkWidget* pWidget);
diff --git a/gok/gok-page-wordcomplete.c b/gok/gok-page-wordcomplete.c
index cfaa978..630ef0e 100644
--- a/gok/gok-page-wordcomplete.c
+++ b/gok/gok-page-wordcomplete.c
@@ -2,6 +2,7 @@
*
* Copyright 2002 Sun Microsystems, Inc.,
* Copyright 2002 University Of Toronto
+* Copyright 2009 Gerd Kohlberger <gerdko gmail com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -23,7 +24,6 @@
# include <config.h>
#endif
#include <gtk/gtk.h>
-#include <glade/glade.h>
#include "gok-page-wordcomplete.h"
#include "gok-data.h"
#include "gok-log.h"
@@ -55,12 +55,10 @@ void gok_page_wordcomplete_initialize_auxwordlist_control(const char* file);
*
* returns: TRUE if the page was properly initialized, FALSE if not.
**/
-gboolean gok_page_wordcomplete_initialize (GladeXML* xml)
+gboolean gok_page_wordcomplete_initialize (void)
{
GtkWidget* pWidget;
-
- g_assert (xml != NULL);
-
+
m_WordCompleteOnOff = gok_data_get_wordcomplete();
m_NumberPredictions = gok_data_get_num_predictions();
m_bUseAuxDicts = gok_data_get_use_aux_dictionaries();
@@ -70,19 +68,14 @@ gboolean gok_page_wordcomplete_initialize (GladeXML* xml)
gok_page_wordcomplete_backup();
/* update the controls */
- pWidget = glade_xml_get_widget (xml, "checkWordCompletion");
- g_assert (pWidget != NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(pWidget), gok_data_get_wordcomplete());
-
- pWidget = glade_xml_get_widget (xml, "spinNumberPredictions");
- g_assert (pWidget != NULL);
- gtk_spin_button_set_value (GTK_SPIN_BUTTON(pWidget), gok_data_get_num_predictions());
-
- pWidget = glade_xml_get_widget (xml, "checkExtraWordList");
- g_assert (pWidget != NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(pWidget), gok_data_get_use_aux_dictionaries());
-
- gok_page_wordcomplete_initialize_auxwordlist_control((const char*)m_AuxDicts);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("checkWordCompletion")),
+ m_WordCompleteOnOff);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (OID ("spinNumberPredictions")),
+ m_NumberPredictions);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("checkExtraWordList")),
+ m_bUseAuxDicts);
+
+ gok_page_wordcomplete_initialize_auxwordlist_control (m_AuxDicts);
return TRUE;
}
@@ -106,19 +99,13 @@ void gok_page_wordcomplete_refresh ()
**/
gboolean gok_page_wordcomplete_apply ()
{
- GtkWidget* pWidget;
gboolean bDataChanged;
gchar* text;
bDataChanged = FALSE;
- pWidget = glade_xml_get_widget (gok_settingsdialog_get_xml(), "checkWordCompletion");
- g_assert (pWidget != NULL);
- m_WordCompleteOnOff = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(pWidget));
-
- pWidget = glade_xml_get_widget (gok_settingsdialog_get_xml(), "spinNumberPredictions");
- g_assert (pWidget != NULL);
- m_NumberPredictions = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(pWidget));
+ m_WordCompleteOnOff = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (OID ("checkWordCompletion")));
+ m_NumberPredictions = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (OID ("spinNumberPredictions")));
gok_page_wordcomplete_update_auxwordlist_from_control();
@@ -168,11 +155,8 @@ gboolean gok_page_wordcomplete_revert ()
m_WordCompleteOnOff = m_WordCompleteOnOffBackup;
gok_data_set_wordcomplete (m_WordCompleteOnOff);
gok_keyslotter_on (m_WordCompleteOnOff, KEYTYPE_WORDCOMPLETE);
-
- pWidget = glade_xml_get_widget (gok_settingsdialog_get_xml(), "checkWordCompletion");
- g_assert (pWidget != NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(pWidget), m_WordCompleteOnOff);
-
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("checkWordCompletion")),
+ m_WordCompleteOnOff);
}
if (m_NumberPredictions != m_NumberPredictionsBackup)
@@ -181,10 +165,8 @@ gboolean gok_page_wordcomplete_revert ()
m_NumberPredictions = m_NumberPredictionsBackup;
gok_data_set_num_predictions (m_NumberPredictions);
gok_keyslotter_change_number_predictions (m_NumberPredictions, KEYTYPE_WORDCOMPLETE);
-
- pWidget = glade_xml_get_widget (gok_settingsdialog_get_xml(), "spinNumberPredictions");
- g_assert (pWidget != NULL);
- gtk_spin_button_set_value (GTK_SPIN_BUTTON(pWidget), m_NumberPredictions);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (OID ("spinNumberPredictions")),
+ m_NumberPredictions);
}
if (m_bUseAuxDicts != m_bUseAuxDictsBackup) {
@@ -193,10 +175,8 @@ gboolean gok_page_wordcomplete_revert ()
gok_data_set_use_aux_dictionaries (m_bUseAuxDicts);
/* TODO call rebuild internal dictionary */
gok_log ("TODO: Call to rebuild word completion model");
-
- pWidget = glade_xml_get_widget (gok_settingsdialog_get_xml(), "checkExtraWordList");
- g_assert (pWidget != NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(pWidget), m_bUseAuxDicts);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (OID ("checkExtraWordList")),
+ m_bUseAuxDicts);
}
if (m_AuxDicts != m_AuxDictsBackup) {
@@ -206,11 +186,8 @@ gboolean gok_page_wordcomplete_revert ()
gok_data_set_aux_dictionaries (m_AuxDicts);
/* TODO call rebuild internal word completion list */
gok_log ("TODO: Call to rebuild word completion model");
-
- pWidget = glade_xml_get_widget (gok_settingsdialog_get_xml(), "DictionaryPathEntry");
- g_assert (pWidget != NULL);
- if (m_AuxDicts) gtk_entry_set_text (GTK_ENTRY (pWidget),m_AuxDicts);
-
+ if (m_AuxDicts) gtk_entry_set_text (GTK_ENTRY (OID ("DictionaryPathEntry")),
+ m_AuxDicts);
}
return bDataChanged;
@@ -226,8 +203,9 @@ void gok_page_wordcomplete_backup ()
m_WordCompleteOnOffBackup = m_WordCompleteOnOff;
m_NumberPredictionsBackup = m_NumberPredictions;
m_bUseAuxDictsBackup = m_bUseAuxDicts;
- if (m_AuxDicts) m_AuxDictsBackup = g_strdup (m_AuxDicts);
- else m_AuxDictsBackup = NULL;
+
+ g_free (m_AuxDictsBackup);
+ m_AuxDictsBackup = m_AuxDicts ? g_strdup (m_AuxDicts) : NULL;
}
@@ -243,32 +221,28 @@ gok_page_wordcomplete_toggle_wordlist (gboolean on)
void
gok_page_wordcomplete_update_auxwordlist_from_control ()
{
- GtkWidget* pWidget;
gchar* text;
-
+
gok_log_enter();
- pWidget = glade_xml_get_widget (gok_settingsdialog_get_xml(), "DictionaryPathEntry");
- g_assert (pWidget != NULL);
- text = (gchar *) g_strdup (gtk_entry_get_text ( GTK_ENTRY (pWidget)));
+
+ text = g_strdup (gtk_entry_get_text (GTK_ENTRY (OID ("DictionaryPathEntry"))));
/* TODO call format check on this word list */
/* TODO call rebuild internal word completion list */
gok_log_x ("TODO: Call to check file for expected format on file [%s]", text);
-
- if (m_AuxDicts) g_free (m_AuxDicts);
+
+ g_free (m_AuxDicts);
m_AuxDicts = text;
+
gok_log_leave();
}
void
gok_page_wordcomplete_initialize_auxwordlist_control (const char* file)
{
- GtkWidget* pWidget;
-
gok_log_enter();
- pWidget = glade_xml_get_widget (gok_settingsdialog_get_xml(), "DictionaryPathEntry");
- g_assert (pWidget != NULL);
- if (file) gtk_entry_set_text ( GTK_ENTRY (pWidget), file);
+ if (file)
+ {
+ gtk_entry_set_text (GTK_ENTRY (OID ("DictionaryPathEntry")), file);
+ }
gok_log_leave();
}
-
-
diff --git a/gok/gok-page-wordcomplete.h b/gok/gok-page-wordcomplete.h
index 193f963..852e66f 100644
--- a/gok/gok-page-wordcomplete.h
+++ b/gok/gok-page-wordcomplete.h
@@ -2,6 +2,7 @@
*
* Copyright 2002 Sun Microsystems, Inc.,
* Copyright 2002 University Of Toronto
+* Copyright 2009 Gerd Kohlberger <gerdko gmail com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -19,10 +20,10 @@
* Boston, MA 02111-1307, USA.
*/
-gboolean gok_page_wordcomplete_initialize (GladeXML* xml);
+gboolean gok_page_wordcomplete_initialize (void);
void gok_page_wordcomplete_refresh (void);
gboolean gok_page_wordcomplete_apply (void);
gboolean gok_page_wordcomplete_revert (void);
void gok_page_wordcomplete_backup (void);
-void gok_page_wordcomplete_update_auxwordlist_from_control ();
+void gok_page_wordcomplete_update_auxwordlist_from_control (void);
void gok_page_wordcomplete_toggle_wordlist (gboolean on);
diff --git a/gok/gok-settings-dialog.c b/gok/gok-settings-dialog.c
index f744411..7459f8c 100644
--- a/gok/gok-settings-dialog.c
+++ b/gok/gok-settings-dialog.c
@@ -28,7 +28,7 @@
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
-#include <glade/glade.h>
+
#include "gok-settings-dialog.h"
#include "gok-page-keysizespace.h"
#include "gok-page-actions.h"
@@ -37,7 +37,6 @@
#include "gok-page-wordcomplete.h"
#include "gok-page-keyboard.h"
#include "gok-page-accessmethod.h"
-#include "gok-glade-helpers.h"
#include "gok-data.h"
#include "gok-log.h"
#include "main.h"
@@ -48,7 +47,7 @@
static GtkWidget* m_pWindowSettings;
/* pointer to the settings dialog xml data type */
-static GladeXML* m_pXML;
+GtkBuilder *builder;
static gboolean is_locked;
@@ -64,23 +63,21 @@ static gboolean is_locked;
**/
gboolean gok_settingsdialog_open (gboolean bShow)
{
- GladeXML *xml;
-
- xml = gok_glade_xml_new("gok.glade2", "dialogSettings");
- m_pXML = xml;
-
- m_pWindowSettings = glade_xml_get_widget(xml, "dialogSettings");
- g_assert (m_pWindowSettings != NULL);
-
- is_locked = FALSE; /* don't read gconf here */
+ builder = gok_ui_helper_load_file ("gok-settingsdialog.ui");
+ g_assert (builder != NULL);
+
+ m_pWindowSettings = WID ("window");
+
+ /* don't read gconf here */
+ is_locked = FALSE;
/* initialize all the pages */
- gok_settings_page_keysizespace_initialize (xml);
- gok_page_accessmethod_initialize (xml);
- gok_page_keyboard_initialize (xml);
- gok_page_actions_initialize (xml);
- gok_page_feedbacks_initialize (xml);
- gok_page_wordcomplete_initialize (xml);
+ gok_settings_page_keysizespace_initialize ();
+ gok_page_accessmethod_initialize ();
+ gok_page_keyboard_initialize ();
+ gok_page_actions_initialize ();
+ gok_page_feedbacks_initialize ();
+ gok_page_wordcomplete_initialize ();
/* create a backup copy of all the settings */
gok_data_backup_settings();
@@ -115,12 +112,12 @@ gboolean gok_settingsdialog_show()
if (was_locked != is_locked) {
if (!is_locked) {
- gtk_widget_show(glade_xml_get_widget(m_pXML, "ActionsTab"));
- gtk_widget_show(glade_xml_get_widget(m_pXML, "AccessMethodsTab"));
+ gtk_widget_show (WID ("ActionsTab"));
+ gtk_widget_show (WID ("AccessMethodsTab"));
}
else {
- gtk_widget_hide(glade_xml_get_widget(m_pXML, "ActionsTab"));
- gtk_widget_hide(glade_xml_get_widget(m_pXML, "AccessMethodsTab"));
+ gtk_widget_hide (WID ("ActionsTab"));
+ gtk_widget_hide (WID ("AccessMethodsTab"));
}
}
@@ -161,21 +158,10 @@ GtkWidget* gok_settingsdialog_get_window ()
}
/**
-* gok_settingsdialog_get_xml
-*
-* returns: A pointer to the settings dialog glade xml data type.
-**/
-GladeXML* gok_settingsdialog_get_xml ()
-{
- return m_pXML;
-}
-
-/**
* gok_settingsdialog_close
*
* Destroys the GOK settings dialog.
*
-* returns: void
**/
void gok_settingsdialog_close()
{
@@ -184,6 +170,7 @@ void gok_settingsdialog_close()
{
gok_page_accessmethod_close();
gtk_widget_destroy (m_pWindowSettings);
+ g_object_unref (builder);
}
else
{
@@ -338,17 +325,9 @@ void on_button_cancel (GtkButton* pButton, gpointer user_data)
**/
void on_button_help (GtkButton* pButton, gpointer user_data)
{
- GtkWidget* pNotebook;
const char* help_link_id = NULL;
-
- pNotebook = glade_xml_get_widget (m_pXML, "notebook1");
- if (pNotebook == NULL)
- {
- gok_log_x ("Can't find notebook!\n");
- return;
- }
-
- switch (gtk_notebook_get_current_page (GTK_NOTEBOOK (pNotebook)))
+
+ switch (gtk_notebook_get_current_page (GTK_NOTEBOOK (OID ("notebook1"))))
{
case 0:
help_link_id = "gok-prefs-appearance";
@@ -564,4 +543,4 @@ gok_settingsdialog_combobox_set_active (GtkComboBox *combo,
}
}
gtk_combo_box_set_active_iter (combo, &iter);
-}
\ No newline at end of file
+}
diff --git a/gok/gok-settings-dialog.h b/gok/gok-settings-dialog.h
index d9ff667..7cb1721 100644
--- a/gok/gok-settings-dialog.h
+++ b/gok/gok-settings-dialog.h
@@ -23,7 +23,10 @@
#ifndef __GOKSETTINGSDIALOG_H__
#define __GOKSETTINGSDIALOG_H__
-#include <glade/glade.h>
+#include <gtk/gtk.h>
+#include <glib/gi18n.h>
+
+#include "gok-ui-helper.h"
#ifdef __cplusplus
extern "C" {
@@ -42,6 +45,8 @@ enum {
N_COLUMNS
};
+extern GtkBuilder *builder;
+
gboolean gok_settingsdialog_open (gboolean bShow);
void gok_settingsdialog_close (void);
gboolean gok_settingsdialog_show (void);
@@ -54,7 +59,6 @@ void on_button_help (GtkButton* button, gpointer user_data);
void gok_settingsdialog_refresh (void);
void gok_settingsdialog_backup_settings (void);
GtkWidget* gok_settingsdialog_get_window (void);
-GladeXML* gok_settingsdialog_get_xml (void);
void gok_settingsdialog_combobox_init (GtkComboBox *combo, gboolean sortable);
void gok_settingsdialog_combobox_set_active (GtkComboBox *combo, const gchar *item);
gboolean gok_settingsdialog_combobox_search (GtkComboBox *combo, const gchar *item, GtkTreeIter *iter_return);
diff --git a/gok/gok-ui-helper.c b/gok/gok-ui-helper.c
new file mode 100644
index 0000000..4a6167a
--- /dev/null
+++ b/gok/gok-ui-helper.c
@@ -0,0 +1,95 @@
+/*
+ * gok-ui-helper.c
+ *
+ * Copyright 2009 Gerd Kohlberger <gerdko gmail com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include "gok-ui-helper.h"
+
+/**
+ * gok_ui_helper_load_file:
+ * @file: Name of the .ui file
+ *
+ * Loads the user interface desription from @file and
+ * auto-connects all signals.
+ *
+ * Returns: a pointer to the newly created #GtkBuilder object, or NULL
+ */
+GtkBuilder *
+gok_ui_helper_load_file (const gchar *file)
+{
+ GtkBuilder *builder;
+ GError *error = NULL;
+ gchar *path;
+
+ g_return_val_if_fail (file != NULL, NULL);
+
+ builder = gtk_builder_new ();
+ path = g_build_filename (DATADIR, "gok", file, NULL);
+ gtk_builder_add_from_file (builder, path, &error);
+ g_free (path);
+
+ if (error)
+ {
+ g_warning ("%s", error->message);
+ g_error_free (error);
+ g_object_unref (builder);
+ return NULL;
+ }
+
+ gtk_builder_connect_signals (builder, NULL);
+
+ return builder;
+}
+
+/**
+ * gok_ui_helper_get_object:
+ * @builder: a #GtkBuilder object
+ * @name: name of the object
+ * @file: ouput of __FILE__
+ * @line: ouput of __LINE__
+ * @func: ouput of G_STRFUNC
+ *
+ * Gets the object with @name from @builder. This function
+ * should only be accessed through the OID() and WID() macros.
+ *
+ * Returns: a #GObject, or NULL
+ */
+GObject *
+gok_ui_helper_get_object (GtkBuilder *builder,
+ const gchar *name,
+ const gchar *file,
+ gint line,
+ const gchar *func)
+{
+ GObject *object;
+
+ object = gtk_builder_get_object (builder, name);
+ /* we can't use g_assert here, because
+ * it would always report this location.
+ */
+#ifndef G_DISABLE_ASSERT
+ if (G_UNLIKELY (object == NULL))
+ {
+ g_assertion_message_expr (G_LOG_DOMAIN,
+ file, line, func,
+ "object != NULL");
+ }
+#endif
+ return object;
+}
diff --git a/gok/gok-ui-helper.h b/gok/gok-ui-helper.h
new file mode 100644
index 0000000..9c34b6d
--- /dev/null
+++ b/gok/gok-ui-helper.h
@@ -0,0 +1,43 @@
+/*
+ * gok-ui-helper.h
+ *
+ * Copyright 2009 Gerd Kohlberger <gerdko gmail com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __GOK_UI_HELPER_H__
+#define __GOK_UI_HELPER_H__
+
+#include <gtk/gtk.h>
+
+/* assumes a global GtkBuilder object named 'builder' */
+#define OID(n) (gok_ui_helper_get_object (builder, (n), __FILE__, __LINE__, G_STRFUNC))
+#define WID(n) (GTK_WIDGET (OID ((n))))
+
+G_BEGIN_DECLS
+
+GtkBuilder * gok_ui_helper_load_file (const gchar *file);
+
+GObject * gok_ui_helper_get_object (GtkBuilder *builder,
+ const gchar *name,
+ const gchar *file,
+ gint line,
+ const gchar *func);
+
+G_END_DECLS
+
+#endif /* __GOK_UI_HELPER_H__ */
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 2efaf47..5a9a100 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -6,7 +6,6 @@ dwell-selection.xml.in
gok-controls.kbd.in
gok-with-references.schemas.in
gok.desktop.in
-gok.glade2
gok/gok-button.c
gok/callbacks.c
gok/gok-composer.c
@@ -41,3 +40,5 @@ directed.xml.in
[type: gettext/xml] quit.kbd.in
[type: gettext/xml] text-operations.kbd.in
[type: gettext/xml] valuator.kbd.in
+[type: gettext/glade] gok-settingsdialog.ui
+[type: gettext/glade] gok-editor.ui
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]