[gok] Use GtkBuilder instead of libglade - bgo#582504



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">&lt;b&gt;Keyboard&lt;/b&gt;</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">&lt;b&gt;Appearance&lt;/b&gt;</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">&lt;b&gt;Position&lt;/b&gt;</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">&lt;b&gt;Modifier&lt;/b&gt;</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">&lt;b&gt;Branch&lt;/b&gt;</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">&lt;b&gt;Type&lt;/b&gt;</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">&lt;b&gt;Output&lt;/b&gt;</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">&lt;b&gt;Font&lt;/b&gt;</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">&lt;b&gt;Key&lt;/b&gt;</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">&lt;b&gt;Key Size and Spacing Controls&lt;/b&gt;</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">&lt;b&gt;Preview&lt;/b&gt;</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">&lt;b&gt;Dock and Expand Horizontally&lt;/b&gt;</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">&lt;small&gt;&lt;i&gt;&lt;b&gt;Note:&lt;/b&gt; Changes to this setting will not take effect until you next run GOK.&lt;/i&gt;&lt;/small&gt;</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">&lt;b&gt;Theme&lt;/b&gt;</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">&lt;b&gt;Compose Keyboard&lt;/b&gt;</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">&#x2022;</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">&lt;b&gt;Custom Keyboards&lt;/b&gt;</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">&lt;b&gt;Define Actions&lt;/b&gt;</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">&lt;b&gt;Switch or Button Number&lt;/b&gt;</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">&lt;b&gt;Behavior&lt;/b&gt;</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">&lt;b&gt;Delay Before Activation&lt;/b&gt;</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">&lt;b&gt;Valuator Type&lt;/b&gt;</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">&lt;b&gt;Timers and Delays&lt;/b&gt;</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">&lt;b&gt;Behavior&lt;/b&gt;</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">&lt;b&gt;Sensitivity&lt;/b&gt;</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">&lt;b&gt;Event Source&lt;/b&gt;</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">&lt;b&gt;Define Feedback&lt;/b&gt;</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">&lt;b&gt;Key Flashing&lt;/b&gt;</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">&lt;b&gt;Sound&lt;/b&gt;</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">&lt;b&gt;Speech&lt;/b&gt;</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">&lt;b&gt;Description&lt;/b&gt;</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">&lt;b&gt;Word Completion&lt;/b&gt;</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]