[orca] Fix for bug 626254 (introspection) and bug 652485 (Gtk+ Deprecations), plus some just-under-the-wire



commit b9c1e27d6dd6f4562616089106259c0ae3b48473
Author: Joanmarie Diggs <joanmarie diggs gmail com>
Date:   Mon Aug 29 18:19:54 2011 -0400

    Fix for bug 626254 (introspection) and bug 652485 (Gtk+ Deprecations), plus some just-under-the-wire minor GUI tweaks

 .gitignore                                         |    2 +
 README                                             |    4 +-
 configure.ac                                       |   29 +-
 m4/.gitignore                                      |   29 +
 orca.doap                                          |    4 +-
 po/.gitignore                                      |    8 +
 po/POTFILES.in                                     |    8 +-
 src/orca/Makefile.am                               |    9 +-
 src/orca/app_gui_prefs.py                          |   14 +-
 src/orca/braille.py                                |   20 +-
 src/orca/brlmon.py                                 |  254 +-
 src/orca/chat.py                                   |  132 +-
 src/orca/event_manager.py                          |    4 +-
 src/orca/gsmag.py                                  |    4 +-
 src/orca/keybindings.py                            |   50 +-
 src/orca/liveregions.py                            |    4 +-
 src/orca/mouse_review.py                           |   23 +-
 src/orca/orca-find.ui                              |  493 +--
 src/orca/orca-mainwin.ui                           |  100 -
 src/orca/orca-preferences-warning.ui               |  111 -
 src/orca/orca-profile.ui                           |  109 -
 src/orca/orca-quit.ui                              |  123 -
 src/orca/orca-setup.ui                             | 4706 +++++++++++---------
 src/orca/orca-splash.ui                            |   24 -
 src/orca/orca.in                                   |    2 +-
 src/orca/orca.py                                   |   23 +-
 src/orca/orca_console_prefs.py                     |   10 +-
 src/orca/orca_gtkbuilder.py                        |   12 +-
 src/orca/orca_gui_find.py                          |   25 +-
 src/orca/orca_gui_main.py                          |  143 +-
 src/orca/orca_gui_prefs.py                         |  431 +-
 src/orca/orca_gui_profile.py                       |  191 +-
 src/orca/orca_gui_quit.py                          |  103 +
 src/orca/orca_gui_splash.py                        |   69 +-
 src/orca/orca_prefs.py                             |    2 +-
 src/orca/orca_quit.py                              |  140 -
 src/orca/outline.py                                |   70 +-
 src/orca/script.py                                 |    6 +-
 src/orca/script_manager.py                         |    9 +-
 src/orca/script_utilities.py                       |    4 +-
 src/orca/scripts/apps/Instantbird/script.py        |    7 +-
 src/orca/scripts/apps/Thunderbird/script.py        |   17 +-
 src/orca/scripts/apps/empathy/script.py            |    7 +-
 src/orca/scripts/apps/gajim/script.py              |    7 +-
 src/orca/scripts/apps/gnome-search-tool/script.py  |    6 +-
 src/orca/scripts/apps/packagemanager/script.py     |   30 +-
 src/orca/scripts/apps/pidgin/script.py             |    7 +-
 src/orca/scripts/apps/soffice/script.py            |  113 +-
 src/orca/scripts/apps/yelp/yelp_v2/script.py       |   14 +-
 src/orca/scripts/default.py                        |    4 +-
 src/orca/scripts/toolkits/CALLY/script.py          |   16 +-
 src/orca/scripts/toolkits/Gecko/script.py          |  272 +-
 .../scripts/toolkits/J2SE-access-bridge/script.py  |   16 +-
 src/orca/scripts/toolkits/WebKitGtk/script.py      |   22 +-
 src/orca/settings.py                               |   21 +-
 src/orca/speechdispatcherfactory.py                |    8 +-
 56 files changed, 3943 insertions(+), 4128 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 51e519e..d89ed71 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+ABOUT-NLS
 INSTALL
 Makefile
 Makefile.in
@@ -8,6 +9,7 @@ config.h
 config.h.in
 config.guess
 config.log
+config.rpath
 config.status
 config.sub
 configure
diff --git a/README b/README
index a92a907..fa601cb 100644
--- a/README
+++ b/README
@@ -31,8 +31,8 @@ Building Orca also requires the development modules for the following
 to be installed:
 
 * Python           - Python platform
-* pygtk            - GTK+ Python bindings
-* pygobject        - Python bindings for the GObject library
+* pygobject-3.0    - Python bindings for the GObject library
+* gtk+-3.0         - Gtk+ toolkit
 * json-py          - a JSON (http://json.org) reader and writer in Python
 * pyxdg            - Python library to access freedesktop.org standards
 * python-speechd   - Python bindings for Speech Dispatcher (optional)
diff --git a/configure.ac b/configure.ac
index b2e8e55..ced3169 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4,6 +4,10 @@ m4_define([orca_micro_version], [90pre])
 m4_define([orca_version],
           [orca_major_version.orca_minor_version.orca_micro_version])
 
+m4_define(gtk_required_version, 3.1.13)
+m4_define(pygobject_required_version, 2.90.3)
+m4_define(atspi_required_version, 2.1.5)
+
 AC_INIT([orca],
         [orca_version],
         [http://bugzilla.gnome.org/enter_bug.cgi?product=orca],
@@ -26,33 +30,22 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [gettext package])
 
 GNOME_DOC_INIT([0.17.3])
 
+PKG_CHECK_MODULES([GTK], [gtk+-3.0 >= gtk_required_version])
+PKG_CHECK_MODULES([PYGOBJECT], [pygobject-3.0 >= pygobject_required_version])
+PKG_CHECK_MODULES([ATSPI2], [atspi-2 >= atspi_required_version])
+
 dnl Needed programs
 AC_PROG_INSTALL
 
-# WDW - I give up. No matter what I do, I seem to find a package that
-# is specified somewhere, but the packaging is not honored by various
-# distributions.
-#
-#dnl Check for various modules. NOTE: On OpenSolaris, you may
-#dnl need to set PKG_CONFIG_PATH=/usr/lib/pkgconfig in order
-#dnl for these to be found.
-#PKG_CHECK_MODULES(orca, \
-#	dbus-python >= 0.83.0 \
-#	gnome-python-desktop-2.0 >= 2.24.0 \
-#	libspi-1.0 >= 1.24.0 \
-#)
-
 dnl Check for python and python modules needed by Orca
 dnl TODO: check for incompatibilities between Orca and liblouis
 dnl per http://live.gnome.org/Orca/Braille
 AM_PATH_PYTHON(2.4)
-AM_CHECK_PYGTK(2.0,,[AC_MSG_ERROR(Could not find pygtk 2.0)])
-AM_CHECK_PYMOD(gobject,,,[AC_MSG_ERROR(Could not find python module: gobject)])
+#AM_CHECK_PYMOD(gobject,,,[AC_MSG_ERROR(Could not find python module: gobject)])
 # Don't require the DISPLAY to be set - the gtk checking will fail 
 # if DISPLAY is not set, and we don't like that.
-#AM_CHECK_PYMOD(gtk,gdk,,[AC_MSG_ERROR(Could not find python module: gtk.gdk)])
+
 AM_CHECK_PYMOD(dbus,,,[AC_MSG_ERROR(Could not find python module: dbus)])
-AM_CHECK_PYMOD(pyatspi,,,[AC_MSG_ERROR(Could not find python module: pyatspi)])
 AM_CHECK_PYMOD(cairo,,,[AC_MSG_ERROR(Could not find python module: cairo)])
 AM_CHECK_PYMOD(pango,,,[AC_MSG_ERROR(Could not find python module: pango)])
 AM_CHECK_PYMOD(json,,,[AC_MSG_ERROR(Could not find python module: json)])
@@ -67,7 +60,7 @@ if test x$louis_available = "xyes"; then
 fi
 AC_SUBST(LOUIS_TABLE_DIR)
 
-dnl Check for the OS. On *Solaris systems the PATH must be setted
+dnl Check for the OS. On *Solaris systems the PATH must be set
 PLATFORM=`uname -a`
 case "${PLATFORM}" in
     *SunOS*)
diff --git a/m4/.gitignore b/m4/.gitignore
index a8b28ea..8e2862d 100644
--- a/m4/.gitignore
+++ b/m4/.gitignore
@@ -1,2 +1,31 @@
+codeset.m4
+gettext.m4
+glibc2.m4
+glibc21.m4
 gnome-doc-utils.m4
+iconv.m4
+intdiv0.m4
+intl.m4
+intldir.m4
+intlmacosx.m4
 intltool.m4
+intmax.m4
+inttypes-pri.m4
+inttypes_h.m4
+lcmessage.m4
+lib-ld.m4
+lib-link.m4
+lib-prefix.m4
+lock.m4
+longlong.m4
+nls.m4
+po.m4
+printf-posix.m4
+progtest.m4
+size_max.m4
+stdint_h.m4
+uintmax_t.m4
+visibility.m4
+wchar_t.m4
+wint_t.m4
+xsize.m4
diff --git a/orca.doap b/orca.doap
index 9be1751..f3e4f06 100644
--- a/orca.doap
+++ b/orca.doap
@@ -4,8 +4,8 @@
          xmlns:gnome="http://api.gnome.org/doap-extensions#";
          xmlns="http://usefulinc.com/ns/doap#";>
 
-  <name xml:lang="en">Orca Screen Reader and Magnifier</name>
-  <shortdesc xml:lang="en">Screen reader and magnifier for people with visual impairments</shortdesc>
+  <name xml:lang="en">Orca Screen Reader</name>
+  <shortdesc xml:lang="en">Screen reader for individuals who are blind or visually impaired</shortdesc>
   <homepage rdf:resource="http://live.gnome.org/Orca"; />
   <mailing-list rdf:resource="http://mail.gnome.org/mailman/listinfo/orca-list"; />
   <bug-database rdf:resource="http://bugzilla.gnome.org/browse.cgi?product=orca"/>
diff --git a/po/.gitignore b/po/.gitignore
index f41181b..c676921 100644
--- a/po/.gitignore
+++ b/po/.gitignore
@@ -14,3 +14,11 @@ po2tbl.sed.in
 stamp-cat-id
 stamp-it
 .intltool-merge-cache
+Makevars.template
+Rules-quot
+boldquot.sed
+en boldquot header
+en quot header
+insert-header.sin
+quot.sed
+remove-potcdate.sin
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 8bc442b..9abfe3b 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -22,17 +22,15 @@ src/orca/mag.py
 src/orca/notification_messages.py
 src/orca/orca_console_prefs.py
 [type: gettext/glade]src/orca/orca-find.ui
+src/orca/orca_gui_splash.py
 src/orca/orca_gui_find.py
 src/orca/orca_gui_main.py
 src/orca/orca_gui_prefs.py
+src/orca/orca_gui_profile.py
+src/orca/orca_gui_quit.py
 src/orca/orca.in
-[type: gettext/glade]src/orca/orca-mainwin.ui
 src/orca/orca.py
-[type: gettext/glade]src/orca/orca-preferences-warning.ui
-[type: gettext/glade]src/orca/orca-profile.ui
-[type: gettext/glade]src/orca/orca-quit.ui
 [type: gettext/glade]src/orca/orca-setup.ui
-[type: gettext/glade]src/orca/orca-splash.ui
 src/orca/phonnames.py
 src/orca/rolenames.py
 src/orca/script_utilities.py
diff --git a/src/orca/Makefile.am b/src/orca/Makefile.am
index d950e2a..7da6186 100644
--- a/src/orca/Makefile.am
+++ b/src/orca/Makefile.am
@@ -47,10 +47,10 @@ orca_python_PYTHON = \
 	orca_gui_main.py \
 	orca_gui_prefs.py \
 	orca_gui_profile.py \
+	orca_gui_quit.py \
 	orca_gui_splash.py \
 	orca_i18n.py \
 	orca_prefs.py \
-	orca_quit.py \
 	orca_state.py \
 	outline.py \
 	outloud.py \
@@ -82,12 +82,7 @@ SUBDIRS = \
 
 ui_DATA = \
 	orca-find.ui \
-	orca-mainwin.ui \
-	orca-preferences-warning.ui \
-	orca-quit.ui \
-	orca-setup.ui \
-	orca-profile.ui \
-	orca-splash.ui
+	orca-setup.ui
 
 gfx_DATA = \
 	orca-splash.png
diff --git a/src/orca/app_gui_prefs.py b/src/orca/app_gui_prefs.py
index ee1f943..73a469e 100644
--- a/src/orca/app_gui_prefs.py
+++ b/src/orca/app_gui_prefs.py
@@ -25,7 +25,7 @@ __date__      = "$Date$"
 __copyright__ = "Copyright (c) 2007-2009 Sun Microsystems Inc."
 __license__   = "LGPL"
 
-import gtk
+from gi.repository import Gtk
 import locale
 import os
 import sys
@@ -98,17 +98,17 @@ class OrcaSetupGUI(orca_gui_prefs.OrcaSetupGUI):
         # in gail or gtk+ (see bug #554002).  Instead, we'll just hide it.
         #
         # self.get_widget("notebook").remove_page(0)
-        self.get_widget("generalVBox").hide()
+        self.get_widget("generalGrid").hide()
 
         self.get_widget("speechSystemsLabel").set_sensitive(False)
         self.get_widget("speechSystems").set_sensitive(False)
         self.get_widget("speechServersLabel").set_sensitive(False)
         self.get_widget("speechServers").set_sensitive(False)
 
-        vbox = self.appScript.getAppPreferencesGUI()
-        if vbox:
-            label = gtk.Label(orca_state.activeScript.app.name)
-            self.get_widget("notebook").append_page(vbox, label)
+        appPage = self.appScript.getAppPreferencesGUI()
+        if appPage:
+            label = Gtk.Label(label=orca_state.activeScript.app.name)
+            self.get_widget("notebook").append_page(appPage, label)
 
     def _createPronunciationTreeView(self, pronunciations=None):
         """Create the pronunciation dictionary tree view for this specific 
@@ -366,7 +366,7 @@ def main():
 
     showPreferencesUI()
 
-    gtk.main()
+    Gtk.main()
     sys.exit(0)
 
 if __name__ == "__main__":
diff --git a/src/orca/braille.py b/src/orca/braille.py
index fc4b1c4..923b8c8 100644
--- a/src/orca/braille.py
+++ b/src/orca/braille.py
@@ -37,8 +37,8 @@ log = logging.getLogger("braille")
 import signal
 import os
 
-import gobject
-gobject.threads_init()
+from gi.repository import GObject
+GObject.threads_init()
 
 try:
     import louis
@@ -1464,7 +1464,7 @@ def killFlash(restoreSaved=True):
     global viewport
     if _flashEventSourceId:
         if _flashEventSourceId > 0:
-            gobject.source_remove(_flashEventSourceId)
+            GObject.source_remove(_flashEventSourceId)
         if restoreSaved:
             (_lines, _regionWithFocus, viewport, flashTime) = _saved
             refresh(panToCursor=False, stopFlash=False)
@@ -1473,9 +1473,9 @@ def killFlash(restoreSaved=True):
 def resetFlashTimer():
     global _flashEventSourceId
     if _flashEventSourceId > 0:
-        gobject.source_remove(_flashEventSourceId)
+        GObject.source_remove(_flashEventSourceId)
         flashTime = _saved[3]
-        _flashEventSourceId = gobject.timeout_add(flashTime, _flashCallback)
+        _flashEventSourceId = GObject.timeout_add(flashTime, _flashCallback)
 
 def _initFlash(flashTime):
     """Sets up the state needed to flash a message or clears any existing
@@ -1494,13 +1494,13 @@ def _initFlash(flashTime):
 
     if _flashEventSourceId:
         if _flashEventSourceId > 0:
-            gobject.source_remove(_flashEventSourceId)
+            GObject.source_remove(_flashEventSourceId)
         _flashEventSourceId = 0
     else:
         _saved = (_lines, _regionWithFocus, viewport, flashTime)
 
     if flashTime > 0:
-        _flashEventSourceId = gobject.timeout_add(flashTime, _flashCallback)
+        _flashEventSourceId = GObject.timeout_add(flashTime, _flashCallback)
     elif flashTime < 0:
         _flashEventSourceId = -666
 
@@ -1782,8 +1782,8 @@ def init(callback=None, tty=7):
             debug.println(\
                 debug.LEVEL_CONFIGURATION,
                 "Braille module has been initialized using tty=%d" % tty)
-        _brlAPISourceId = gobject.io_add_watch(_brlAPI.fileDescriptor,
-                                               gobject.IO_IN,
+        _brlAPISourceId = GObject.io_add_watch(_brlAPI.fileDescriptor,
+                                               GObject.IO_IN,
                                                _brlAPIKeyReader)
     except:
         debug.println(debug.LEVEL_CONFIGURATION,
@@ -1826,7 +1826,7 @@ def shutdown():
 
     if _brlAPIRunning:
         _brlAPIRunning = False
-        gobject.source_remove(_brlAPISourceId)
+        GObject.source_remove(_brlAPISourceId)
         _brlAPISourceId = 0
         try:
             _brlAPI.leaveTtyMode()
diff --git a/src/orca/brlmon.py b/src/orca/brlmon.py
index d10aeb3..3a15fae 100644
--- a/src/orca/brlmon.py
+++ b/src/orca/brlmon.py
@@ -1,6 +1,8 @@
+# -*- coding: utf-8 -*-
 # Orca
 #
 # Copyright 2006-2008 Sun Microsystems Inc.
+# Copyright 2011 The Orca Team.
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -17,84 +19,189 @@
 # Free Software Foundation, Inc., Franklin Street, Fifth Floor,
 # Boston MA  02110-1301 USA.
 
-"""Provides a graphical braille display at the top of the screen.
-This is mainly for debugging and for demonstrations."""
+"""Provides a graphical braille display, mainly for development tasks."""
 
 __id__        = "$Id$"
 __version__   = "$Revision$"
 __date__      = "$Date$"
-__copyright__ = "Copyright (c) 2005-2008 Sun Microsystems Inc."
+__copyright__ = "Copyright (c) 2005-2008 Sun Microsystems Inc." \
+                "Copyright (c) 2011 The Orca Team."
 __license__   = "LGPL"
 
-import gtk
+import brlapi
+from gi.repository import Gtk
+
+import orca_state
+from input_event import BrailleEvent
 
 # Attribute/Selection mask strings:
 #
 DOT_7 =   '\x40' # 01000000
 DOT_8 =   '\x80' # 10000000
 DOTS_78 = '\xc0' # 11000000
-    
-# Markup strings:
-#
-NORMAL = " size='xx-large'"
 
-CURSOR_CELL_EMPTY =   " background='black'" \
-                    + " weight='ultrabold'" \
-                    + " style='italic'"
+class BrlDot(Gtk.Alignment):
+    """A single braille dot."""
+
+    MARKUP_NORMAL  = '<tt><small>%s</small></tt>'
+    SYMBOL_LOWERED = u'\u25CB' # 'â'
+    SYMBOL_RAISED  = u'\u25CF' # 'â'
+
+    def __init__(self, dotNumber, isRaised=False):
+        """Create a new BrlDot.
+
+        Arguments:
+        - dotNumber: an integer reflecting the location of the dot within
+          an 8-dot braille cell, using traditional braille dot values.
+        """
+
+        Gtk.Alignment.__init__(self)
+        if dotNumber in [1, 2, 3, 7]:
+            self.set(1.0, 0.5, 0.0, 0.0)
+            self.set_padding(0, 0, 3, 0)
+        else:
+            self.set(0.0, 0.5, 0.0, 0.0)
+            self.set_padding(0, 0, 0, 3)
+
+        self.label = Gtk.Label()
+        self.add(self.label)
+        if isRaised:
+            self.raiseDot()
+        else:
+            self.lowerDot()
 
-CURSOR_CELL =   " background='white'" \
-              + " weight='ultrabold'" \
-              + " style='italic'" \
+    def raiseDot(self):
+        self.set(0.5, 0.5, 0, 0)
+        self.label.set_markup(self.MARKUP_NORMAL % self.SYMBOL_RAISED)
 
-ATTRIBUTE_7 = " underline='low'"
+    def lowerDot(self):
+        self.set(0.5, 0.5, 0, 0)
+        self.label.set_markup(self.MARKUP_NORMAL % self.SYMBOL_LOWERED)
 
-ATTRIBUTE_8 = " underline='error'"
+class BrlCell(Gtk.Grid):
+    """A single graphical braille cell with cursor routing capability."""
 
-ATTRIBUTE_78 = " underline='double'"
+    MARKUP_NORMAL      = '<tt><big>%s</big></tt>'
+    MARKUP_CURSOR_CELL = '<b><u>%s</u></b>'
 
-class BrlMon(gtk.Window):
+    def __init__(self, position):
+        """Create a new BrlCell.
 
-    """Displays a GUI braille monitor that mirrors what is being
-    shown on the braille display.  This currently needs a lot of
-    work, but it is a start.  TODO's include doing a better job of
-    docking it at the top of the display (e.g., make all other
-    windows move out from underneath it), doing better highlighting of
-    the cursor cell, allowing the font to be set, and perhaps allowing
-    clicks to simulate cursor routing keys."""
+        Arguments:
+        - position: The location of the cell with respect to the monitor.
+        """
+
+        Gtk.Grid.__init__(self)
+        self._position = position
+
+        # For now, we display the char in print, like we always have. Use
+        # (merge) dots 1-6 for this purpose. Also make the button a means
+        # by which developers can work on cursor routing.
+        self._displayedChar = Gtk.Button()
+        self._displayedChar.set_size_request(30, 40)
+        self._displayedChar.add(Gtk.Label())
+        self.attach(self._displayedChar, 0, 0, 2, 3)
+        self._displayedChar.connect("clicked", self._onCellClicked)
+
+        # Create a more braille-like representation for dots 7-8 so that we
+        # do not have to remember/guess what pango underline type goes with
+        # what dot(s).
+        self.dot7 = BrlDot(7)
+        self.dot8 = BrlDot(8)
+        self.attach(self.dot7, 0, 3, 1, 1)
+        self.attach(self.dot8, 1, 3, 1, 1)
+
+    def _onCellClicked(self, widget):
+        """Callback for the 'clicked' signal on the push button. Synthesizes
+        a fake brlapi command to route the cursor to the current cell, similar
+        to what occurs when a user presses the cursor routing key on his/her
+        hardware braille display."""
+
+        if not orca_state.activeScript:
+            return
+
+        fakeKeyPress = {}
+        fakeKeyPress['command'] = brlapi.KEY_CMD_ROUTE
+        fakeKeyPress['argument'] = self._position
+        event = BrailleEvent(fakeKeyPress)
+        orca_state.activeScript.processRoutingKey(event)
+
+    def clear(self):
+        """Clears the braille cell."""
+
+        try:
+            label, = self._displayedChar.get_children()
+        except ValueError:
+            return
 
-    def __init__(self, numCells=32, cellWidth=25, cellHeight=50):
+        label.set_markup("")
+        self.dot7.lowerDot()
+        self.dot8.lowerDot()
+
+    def display(self, char, mask=None, isCursorCell=False):
+        """Displays the specified character in the cell.
+
+        Arguments:
+        - char: The character to display in the cell.
+        - isCursorCell: If True, the cursor/caret is at this cell and this
+          should be indicated visually.
+        """
+
+        if char == '&':
+            char = '&amp;'
+        elif char == '<':
+            char = '&lt;'
+        elif char == '\t':
+            char = '$t'
+
+        markup = self.MARKUP_NORMAL
+        if isCursorCell:
+            markup = markup % self.MARKUP_CURSOR_CELL
+        label, = self._displayedChar.get_children()
+        label.set_markup(markup % char)
+
+        if mask in [DOT_7, DOTS_78]:
+            self.dot7.raiseDot()
+        if mask in [DOT_8, DOTS_78]:
+            self.dot8.raiseDot()
+
+class BrlMon(Gtk.Window):
+    """Displays a GUI braille monitor that mirrors what would be displayed
+    by Orca on a connected, configured, and enabled braille display. Cursor
+    routing functionality is emulated by each cell being a push button.
+    Panning and other functionality found on hardware braille displays will
+    be added."""
+
+    def __init__(self, numCells=32):
         """Create a new BrlMon.
 
         Arguments:
         - numCells: how many braille cells to make
-        - cellWidth: width of each cell in pixels
-        - cellHeight: height of each cell in pixels
         """
 
-        gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
+        Gtk.Window.__init__(self)
         self.set_title("Braille Monitor")
-        self.set_size_request(cellWidth * numCells, cellHeight)
-        hbox = gtk.HBox(True)
-        self.add(hbox)
-        self.cellFrames = []
-        self.cellLabels = []
-        i = 0
-        while (i < numCells):
-            frame = gtk.Frame()
-            frame.set_shadow_type(gtk.SHADOW_OUT)
-            label = gtk.Label(" ")
-            label.set_use_markup(True)
-            frame.add(label)
-            hbox.add(frame)
-            self.cellFrames.append(frame)
-            self.cellLabels.append(label)
-            i += 1
 
-        self.set_property("accept-focus", False)
+        grid = Gtk.Grid()
+        self.add(grid)
+
+        self.cells = []
+        for i in range(numCells):
+            cell = BrlCell(i)
+            grid.attach(cell, i, 0, 1, 1)
+            self.cells.append(cell)
+
         self.set_resizable(False)
+        self.set_property("accept-focus", False)
         self.set_skip_taskbar_hint(True)
         self.set_skip_pager_hint(True)
 
+    def clear(self):
+        """Clears the braille monitor display."""
+
+        for cell in self.cells:
+            cell.clear()
+
     def writeText(self, cursorCell, string, mask=None):
         """Display the given text and highlight the given
         cursor cell.  A cursorCell of 0 means no cell has
@@ -105,55 +212,18 @@ class BrlMon(gtk.Window):
         - string: len must be <= num cells.
         """
 
-        # Fill out the cells from the string.
-        #
+        self.clear()
+
         try:
             string = string.decode("UTF-8")
         except:
             string = ""
 
-        for i in range(0, len(string)):
-
-            # Handle special chars so they are not interpreted by pango.
-            #
-            if string[i] == "<":
-                char = "&lt;"
-            elif string[i] == "&":
-                char = "&amp;"
-            elif string[i] == "\t":
-                char = "$t"
-            else:
-                char = string[i]
-
-            markup = NORMAL
-            if i == (cursorCell - 1):
-                if string[i] == " ":
-                    markup += CURSOR_CELL_EMPTY
-                else:
-                    markup += CURSOR_CELL
-                self.cellFrames[i].set_shadow_type(
-                    gtk.SHADOW_IN)
-            else:
-                self.cellFrames[i].set_shadow_type(
-                    gtk.SHADOW_OUT)
-
+        length = min(len(string), len(self.cells))
+        for i in range(length):
+            isCursorCell = i == cursorCell - 1
             try:
-                if mask:
-                    if (mask[i] == DOTS_78):
-                        markup += ATTRIBUTE_78
-                    elif (mask[i] == DOT_7):
-                        markup += ATTRIBUTE_7
-                    elif (mask[i] == DOT_8):
-                        markup += ATTRIBUTE_8
-            except:
-                pass
-
-            self.cellLabels[i].set_markup(
-                "<span" + markup + ">%s</span>" % char)
-
-        # Pad the rest
-        #
-        for i in range(len(string), len(self.cellFrames)):
-            self.cellLabels[i].set_text(" ")
-            self.cellFrames[i].set_shadow_type(
-                gtk.SHADOW_OUT)
+                cellMask = mask[i]
+            except IndexError:
+                cellMask = None
+            self.cells[i].display(string[i], cellMask, isCursorCell)
diff --git a/src/orca/chat.py b/src/orca/chat.py
index b41513b..0a449f8 100644
--- a/src/orca/chat.py
+++ b/src/orca/chat.py
@@ -1,6 +1,6 @@
 # Orca
 #
-# Copyright 2010 Joanmarie Diggs.
+# Copyright 2010-2011 The Orca Team
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -22,7 +22,7 @@
 __id__ = "$Id$"
 __version__   = "$Revision$"
 __date__      = "$Date$"
-__copyright__ = "Copyright (c) 2010 Joanmarie Diggs."
+__copyright__ = "Copyright (c) 2010-2011 The Orca Team"
 __license__   = "LGPL"
 
 import pyatspi
@@ -398,37 +398,31 @@ class Chat:
         return keyBindings
 
     def getAppPreferencesGUI(self):
-        """Return a GtkVBox contain the application unique configuration
-        GUI items for the current application.
-        """
+        """Return a GtkGrid containing the application unique configuration
+        GUI items for the current application. """
 
-        import gtk
+        from gi.repository import Gtk
 
-        vbox = gtk.VBox(False, 0)
-        vbox.set_border_width(12)
-        gtk.Widget.show(vbox)
+        grid = Gtk.Grid()
+        grid.set_border_width(12)
 
         # Translators: If this checkbox is checked, then Orca will speak
         # the name of the chat room.
         #
         label = _("_Speak Chat Room name")
-        self.speakNameCheckButton = gtk.CheckButton(label)
-        gtk.Widget.show(self.speakNameCheckButton)
-        gtk.Box.pack_start(vbox, self.speakNameCheckButton, False, False, 0)
-        gtk.ToggleButton.set_active(
-            self.speakNameCheckButton,
-            _settingsManager.getSetting('chatSpeakRoomName'))
+        value = _settingsManager.getSetting('chatSpeakRoomName')
+        self.speakNameCheckButton = Gtk.CheckButton.new_with_mnemonic(label)
+        self.speakNameCheckButton.set_active(value)
+        grid.attach(self.speakNameCheckButton, 0, 0, 1, 1)
 
         # Translators: If this checkbox is checked, then Orca will tell
         # you when one of your buddies is typing a message.
         #
         label = _("Announce when your _buddies are typing")
-        self.buddyTypingCheckButton = gtk.CheckButton(label)
-        gtk.Widget.show(self.buddyTypingCheckButton)
-        gtk.Box.pack_start(vbox, self.buddyTypingCheckButton, False, False, 0)
-        gtk.ToggleButton.set_active(
-                self.buddyTypingCheckButton,
-                _settingsManager.getSetting('chatAnnounceBuddyTyping'))
+        value = _settingsManager.getSetting('chatAnnounceBuddyTyping')
+        self.buddyTypingCheckButton = Gtk.CheckButton.new_with_mnemonic(label)
+        self.buddyTypingCheckButton.set_active(value)
+        grid.attach(self.buddyTypingCheckButton, 0, 1, 1, 1)
 
         # Translators: If this checkbox is checked, then Orca will provide
         # the user with chat room specific message histories rather than just
@@ -436,81 +430,65 @@ class Chat:
         # chat rooms that they are currently in.
         #
         label = _("Provide chat room specific _message histories")
-        self.chatRoomHistoriesCheckButton = gtk.CheckButton(label)
-        gtk.Widget.show(self.chatRoomHistoriesCheckButton)
-        gtk.Box.pack_start(vbox, self.chatRoomHistoriesCheckButton,
-                           False, False, 0)
-        gtk.ToggleButton.set_active(
-            self.chatRoomHistoriesCheckButton,
-            _settingsManager.getSetting('chatRoomHistories'))
-
-        # "Speak Messages" frame.
-        #
-        messagesFrame = gtk.Frame()
-        gtk.Widget.show(messagesFrame)
-        gtk.Box.pack_start(vbox, messagesFrame, False, False, 5)
+        value = _settingsManager.getSetting('chatRoomHistories')
+        self.chatRoomHistoriesCheckButton = \
+            Gtk.CheckButton.new_with_mnemonic(label)
+        self.chatRoomHistoriesCheckButton.set_active(value)
+        grid.attach(self.chatRoomHistoriesCheckButton, 0, 2, 1, 1)
 
-        messagesAlignment = gtk.Alignment(0.5, 0.5, 1, 1)
-        gtk.Widget.show(messagesAlignment)
-        gtk.Container.add(messagesFrame, messagesAlignment)
-        gtk.Alignment.set_padding(messagesAlignment, 0, 0, 12, 0)
+        messagesFrame = Gtk.Frame()
+        grid.attach(messagesFrame, 0, 3, 1, 1)
 
-        messagesVBox = gtk.VBox(False, 0)
-        gtk.Widget.show(messagesVBox)
-        gtk.Container.add(messagesAlignment, messagesVBox)
+        # Translators: this is the title of a panel holding options for
+        # how messages in this application's chat rooms should be spoken.
+        #
+        label = Gtk.Label("<b>%s</b>" % _("Speak messages from"))
+        label.set_use_markup(True)
+        messagesFrame.set_label_widget(label)
 
-        verbosity = _settingsManager.getSetting('chatMessageVerbosity')
+        messagesAlignment = Gtk.Alignment.new(0.5, 0.5, 1, 1)
+        messagesAlignment.set_padding(0, 0, 12, 0)
+        messagesFrame.add(messagesAlignment)
+        messagesGrid = Gtk.Grid()
+        messagesAlignment.add(messagesGrid)
+
+        value = _settingsManager.getSetting('chatMessageVerbosity')
 
         # Translators: Orca will speak all new chat messages as they appear
         # irrespective of whether the chat application currently has focus.
         # This is the default behaviour.
         #
-        self.allMessagesRadioButton = gtk.RadioButton(None, _("All cha_nnels"))
-        gtk.Widget.show(self.allMessagesRadioButton)
-        gtk.Box.pack_start(messagesVBox, self.allMessagesRadioButton,
-                           False, False, 0)
-        gtk.ToggleButton.set_active(
-            self.allMessagesRadioButton,
-            verbosity == settings.CHAT_SPEAK_ALL)
+        label = _("All cha_nnels")
+        rb1 = Gtk.RadioButton.new_with_mnemonic(None, label)
+        rb1.set_active(value == settings.CHAT_SPEAK_ALL)
+        self.allMessagesRadioButton = rb1
+        messagesGrid.attach(self.allMessagesRadioButton, 0, 0, 1, 1)
 
         # Translators: Orca will speak only new chat messages for the channel
         # that currently has focus, irrespective of whether the chat
         # application has focus.
         #
-        self.focusedChannelRadioButton = gtk.RadioButton(
-            self.allMessagesRadioButton,
-            _("A channel only if its _window is active"))
-        gtk.Widget.show(self.focusedChannelRadioButton)
-        gtk.Box.pack_start(messagesVBox, self.focusedChannelRadioButton,
-                           False, False, 0)
-        gtk.ToggleButton.set_active(
-            self.focusedChannelRadioButton,
-            verbosity == settings.CHAT_SPEAK_FOCUSED_CHANNEL)
+        label = _("A channel only if its _window is active")
+        rb2 = Gtk.RadioButton.new_with_mnemonic(None, label)
+        rb2.join_group(rb1)
+        rb2.set_active(value == settings.CHAT_SPEAK_FOCUSED_CHANNEL)
+        self.focusedChannelRadioButton = rb2
+        messagesGrid.attach(self.focusedChannelRadioButton, 0, 1, 1, 1)
 
         # Translators: Orca will speak new chat messages for all channels
         # only when the chat application has focus.
         #
-        self.allChannelsRadioButton = gtk.RadioButton(
-            self.allMessagesRadioButton,
-            _("All channels when an_y %s window is active") \
-              % self._script.app.name)
-        gtk.Widget.show(self.allChannelsRadioButton)
-        gtk.Box.pack_start(messagesVBox, self.allChannelsRadioButton,
-                           False, False, 0)
-        gtk.ToggleButton.set_active(
-            self.allChannelsRadioButton,
-            verbosity == settings.CHAT_SPEAK_ALL_IF_FOCUSED)
+        label = _("All channels when an_y %s window is active") % \
+            self._script.app.name
+        rb3 = Gtk.RadioButton.new_with_mnemonic(None, label)
+        rb3.join_group(rb1)
+        rb3.set_active(value == settings.CHAT_SPEAK_ALL_IF_FOCUSED)
+        self.allChannelsRadioButton = rb3
+        messagesGrid.attach(self.allChannelsRadioButton, 0, 2, 1, 1)
 
-        # Translators: this is the title of a panel holding options for
-        # how messages in this application's chat rooms should be spoken.
-        #
-        messagesLabel = gtk.Label("<b>%s</b>" % _("Speak messages from"))
-        gtk.Widget.show(messagesLabel)
-        gtk.Frame.set_label_widget(messagesFrame, messagesLabel)
-        messagesFrame.set_shadow_type(gtk.SHADOW_NONE)
-        gtk.Label.set_use_markup(messagesLabel, True)
+        grid.show_all()
 
-        return vbox
+        return grid
 
     def setAppPreferences(self, prefs):
         """Write out the application specific preferences lines and set the
diff --git a/src/orca/event_manager.py b/src/orca/event_manager.py
index 8fe328a..be29898 100644
--- a/src/orca/event_manager.py
+++ b/src/orca/event_manager.py
@@ -24,7 +24,7 @@ __date__      = "$Date$"
 __copyright__ = "Copyright (c) 2011. Orca Team."
 __license__   = "LGPL"
 
-import gobject
+from gi.repository import GObject
 import pyatspi
 import Queue
 import threading
@@ -139,7 +139,7 @@ class EventManager:
         if asyncMode and not self._gidleId:
             if settings.gilSleepTime:
                 time.sleep(settings.gilSleepTime)
-            self._gidleId = gobject.idle_add(self._dequeue)
+            self._gidleId = GObject.idle_add(self._dequeue)
 
         if debugging:
             debug.println(debug.LEVEL_ALL, "           releasing lock...")
diff --git a/src/orca/gsmag.py b/src/orca/gsmag.py
index c9b4417..2b6810a 100644
--- a/src/orca/gsmag.py
+++ b/src/orca/gsmag.py
@@ -44,8 +44,8 @@ import debug
 #
 _isActive = False
 
-import gtk
-_display = gtk.gdk.display_get_default()
+from gi.repository import Gdk
+_display = Gdk.Display.get_default()
 _screen = _display.get_default_screen()
 _screenWidth = _screen.get_width()
 _screenHeight = _screen.get_height()
diff --git a/src/orca/keybindings.py b/src/orca/keybindings.py
index a2390c2..3bbc438 100644
--- a/src/orca/keybindings.py
+++ b/src/orca/keybindings.py
@@ -26,15 +26,7 @@ __date__      = "$Date$"
 __copyright__ = "Copyright (c) 2005-2008 Sun Microsystems Inc."
 __license__   = "LGPL"
 
-try:
-    # This can fail due to gtk not being available.  We want to
-    # be able to recover from that if possible.  The main driver
-    # for this is to allow "orca --text-setup" to work even if
-    # the desktop is not running.
-    #
-    import gtk
-except ImportError:
-    pass
+from gi.repository import Gdk
 
 import pyatspi
 import debug
@@ -58,7 +50,7 @@ def getAllKeysyms(keysym):
 
         # Find the numerical value of the keysym
         #
-        keyval = gtk.gdk.keyval_from_name(keysym)
+        keyval = Gdk.keyval_from_name(keysym)
 
         if keyval != 0:
             # Find the keycodes for the keysym.  Since a keysym
@@ -67,8 +59,9 @@ def getAllKeysyms(keysym):
             # level (each entry is of the form [keycode, group,
             # level]).
             #
-            keymap = gtk.gdk.keymap_get_default()
-            entries = keymap.get_entries_for_keyval(keyval)
+            keymap = Gdk.Keymap.get_default()
+            success, entries = keymap.get_entries_for_keyval(keyval)
+
             keycode = 0
             if entries:
                 for entry in entries:
@@ -80,13 +73,12 @@ def getAllKeysyms(keysym):
             # we are looking for.
             #
             if keycode != 0:
-                entries = keymap.get_entries_for_keycode(keycode)
-                if entries:
-                    for entry in entries:
-                        keyval = entry[0]
-                        name = gtk.gdk.keyval_name(keyval)
-                        if name and (name != keysym):
-                            _keysymsCache[keysym].append(name)
+                success, entries = keymap.get_entries_for_keycode(keycode)
+                for entry in entries:
+                    keyval = entry[0]
+                    name = Gdk.keyval_name(keyval)
+                    if name and (name != keysym):
+                        _keysymsCache[keysym].append(name)
 
     return _keysymsCache[keysym]
 
@@ -120,11 +112,11 @@ def getKeycode(keysym):
         return 0
 
     if keysym not in _keycodeCache:
-        keymap = gtk.gdk.keymap_get_default()
+        keymap = Gdk.Keymap.get_default()
 
         # Find the numerical value of the keysym
         #
-        keyval = gtk.gdk.keyval_from_name(keysym)
+        keyval = Gdk.keyval_from_name(keysym)
         if keyval == 0:
             return 0
 
@@ -134,14 +126,14 @@ def getKeycode(keysym):
         # entry is of the form [keycode, group, level]).
         #
         _keycodeCache[keysym] = 0
-        entries = keymap.get_entries_for_keyval(keyval)
-        if entries:
-            for entry in entries:
-                if entry[1] == 0:  # group = 0
-                    _keycodeCache[keysym] = entry[0]
-                    break
-                if _keycodeCache[keysym] == 0:
-                    _keycodeCache[keysym] = entries[0][0]
+        success, entries = keymap.get_entries_for_keyval(keyval)
+
+        for entry in entries:
+            if entry.group == 0:
+                _keycodeCache[keysym] = entry.keycode
+                break
+            if _keycodeCache[keysym] == 0:
+                _keycodeCache[keysym] = entries[0].keycode
 
         #print keysym, keyval, entries, _keycodeCache[keysym]
 
diff --git a/src/orca/liveregions.py b/src/orca/liveregions.py
index 3b225c7..d246b65 100644
--- a/src/orca/liveregions.py
+++ b/src/orca/liveregions.py
@@ -1,5 +1,5 @@
 import bisect
-import gobject
+from gi.repository import GObject
 import orca_state
 import pyatspi
 import speech
@@ -182,7 +182,7 @@ class LiveRegionManager:
         message = self._getMessage(event)
         if message:
             if len(self.msg_queue) == 0:
-                gobject.timeout_add(100, self.pumpMessages)
+                GObject.timeout_add(100, self.pumpMessages)
             self.msg_queue.enqueue(message, politeness, event.source)
 
     def pumpMessages(self):
diff --git a/src/orca/mouse_review.py b/src/orca/mouse_review.py
index 62e52d7..2b27a4b 100644
--- a/src/orca/mouse_review.py
+++ b/src/orca/mouse_review.py
@@ -28,15 +28,15 @@ __license__   = "LGPL"
 import debug
 
 try:
-    import wnck
+    from gi.repository import Wnck
     _mouseReviewCapable = True
 except:
     debug.println(debug.LEVEL_WARNING, \
                   "Python module wnck not found, mouse review not available.")
     _mouseReviewCapable = False
 
-import gtk
-import gobject
+from gi.repository import Gdk
+from gi.repository import GObject
 
 import orca
 import pyatspi
@@ -50,8 +50,7 @@ class BoundingBox:
     """A bounding box, currently it is used to test if a given point is
     inside the bounds of the box.
     """
-    # TODO: Find if we pygtk or something already has this,
-    # if not, maybe this needs to be in a different Orca file.
+
     def __init__(self, x, y, width, height):
         """Initialize a bounding box.
 
@@ -149,7 +148,7 @@ class MouseReviewer:
             return
 
         # Need to do this and allow the main loop to cycle once to get any info
-        wnck_screen = wnck.screen_get_default()
+        wnck_screen = Wnck.Screen.get_default()
         self.active = False
         self._currentMouseOver = _ItemContext()
         self._oldMouseOver = _ItemContext()
@@ -183,7 +182,7 @@ class MouseReviewer:
         - event: The event we recieved.
         """
         if settings.mouseDwellDelay:
-            gobject.timeout_add(settings.mouseDwellDelay,
+            GObject.timeout_add(settings.mouseDwellDelay,
                                 self._mouseDwellTimeout,
                                 event.detail1,
                                 event.detail2)
@@ -195,10 +194,10 @@ class MouseReviewer:
         component.
 
         Arguments:
-        - prev_x: Previuos X coordinate of mouse pointer.
-        - prev_y: Previuos Y coordinate of mouse pointer.
+        - prev_x: Previous X coordinate of mouse pointer.
+        - prev_y: Previous Y coordinate of mouse pointer.
         """
-        display = gtk.gdk.Display(gtk.gdk.get_display())
+        display = Gdk.Display.get_default()
         screen, x, y, flags =  display.get_pointer()
         if abs(prev_x - x) <= settings.mouseDwellMaxDrift \
            and abs(prev_y - y) <= settings.mouseDwellMaxDrift \
@@ -281,7 +280,7 @@ class MouseReviewer:
         Returns position of given window in window-managers stack.
         """
         # This is neccesary because z-order is still broken in AT-SPI.
-        wnck_screen = wnck.screen_get_default()
+        wnck_screen = Wnck.Screen.get_default()
         window_order = \
             [w.get_name() for w in wnck_screen.get_windows_stacked()]
         return window_order.index(frame_name)
@@ -332,7 +331,7 @@ class MouseReviewer:
         return top_window[0]
 
 # Initialize a singleton reviewer.
-if gtk.gdk.display_get_default():
+if Gdk.Display.get_default():
     mouse_reviewer = MouseReviewer()
 else:
     raise RuntimeError('Cannot initialize mouse review, no display')
diff --git a/src/orca/orca-find.ui b/src/orca/orca-find.ui
index 8f090f4..1b2c1ed 100644
--- a/src/orca/orca-find.ui
+++ b/src/orca/orca-find.ui
@@ -1,230 +1,215 @@
-<?xml version="1.0"?>
-<!--*- mode: xml -*-->
+<?xml version="1.0" encoding="UTF-8"?>
 <interface>
+  <!-- interface-requires gtk+ 2.12 -->
   <object class="GtkDialog" id="findDialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">12</property>
     <property name="title" translatable="yes">Find</property>
-    <property name="type">GTK_WINDOW_TOPLEVEL</property>
-    <property name="window_position">GTK_WIN_POS_NONE</property>
-    <property name="modal">True</property>
     <property name="resizable">False</property>
-    <property name="destroy_with_parent">False</property>
-    <property name="decorated">True</property>
-    <property name="skip_taskbar_hint">False</property>
-    <property name="skip_pager_hint">False</property>
-    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
-    <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-    <property name="focus_on_map">True</property>
-    <property name="urgency_hint">False</property>
-    <property name="has_separator">False</property>
-    <accessibility>
-    
-  </accessibility>
-    <signal handler="findDialogDestroyed" last_modification_time="Mon, 09 Oct 2006 20:29:07 GMT" name="destroy"/>
+    <property name="modal">True</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="accessible">
+      <object class="AtkObject" id="findDialog-atkobject">
+        <property name="AtkObject::accessible-name" translatable="yes">Orca Find Dialog</property>
+      </object>
+    </child>
+    <signal name="destroy" handler="findDialogDestroyed" swapped="no"/>
     <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox1">
+      <object class="GtkBox" id="dialogInternalBox">
         <property name="visible">True</property>
-        <property name="homogeneous">False</property>
-        <property name="spacing">0</property>
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
         <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area1">
+          <object class="GtkButtonBox" id="dialog-action_area1">
             <property name="visible">True</property>
-            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
             <child>
               <object class="GtkButton" id="closeButton">
+                <property name="label">gtk-close</property>
                 <property name="visible">True</property>
-                <property name="can_default">True</property>
                 <property name="can_focus">True</property>
-                <property name="label">gtk-close</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_action_appearance">False</property>
                 <property name="use_stock">True</property>
-                <property name="relief">GTK_RELIEF_NORMAL</property>
-                <property name="focus_on_click">True</property>
-                <accessibility>
-		
-	      </accessibility>
-                <signal handler="closeButtonClicked" last_modification_time="Wed, 11 Oct 2006 01:35:54 GMT" name="clicked"/>
-                <accelerator key="c" modifiers="GDK_MOD1_MASK" signal="activate"/>
+                <accelerator key="c" signal="activate" modifiers="GDK_MOD1_MASK"/>
                 <child internal-child="accessible">
-                  <object class="AtkObject" id="a11y-closeButton1">
-                    <property name="AtkObject::accessible_name" translatable="yes">Close</property>
+                  <object class="AtkObject" id="closeButton-atkobject">
+                    <property name="AtkObject::accessible-name" translatable="yes">Close</property>
                   </object>
                 </child>
+                <signal name="clicked" handler="closeButtonClicked" swapped="no"/>
               </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
             </child>
             <child>
               <object class="GtkButton" id="findButton">
+                <property name="label">gtk-find</property>
                 <property name="visible">True</property>
                 <property name="sensitive">False</property>
+                <property name="can_focus">True</property>
                 <property name="can_default">True</property>
                 <property name="has_default">True</property>
-                <property name="can_focus">True</property>
-                <property name="label">gtk-find</property>
+                <property name="receives_default">False</property>
+                <property name="use_action_appearance">False</property>
                 <property name="use_stock">True</property>
-                <property name="relief">GTK_RELIEF_NORMAL</property>
-                <property name="focus_on_click">True</property>
-                <signal handler="findButtonClicked" last_modification_time="Tue, 10 Oct 2006 02:21:36 GMT" name="clicked"/>
-                <accelerator key="f" modifiers="GDK_MOD1_MASK" signal="activate"/>
+                <accelerator key="f" signal="activate" modifiers="GDK_MOD1_MASK"/>
+                <signal name="clicked" handler="findButtonClicked" swapped="no"/>
               </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
             </child>
           </object>
           <packing>
-            <property name="padding">0</property>
             <property name="expand">False</property>
             <property name="fill">True</property>
-            <property name="pack_type">GTK_PACK_END</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
           </packing>
         </child>
         <child>
-          <object class="GtkVBox" id="vbox1">
-            <property name="border_width">6</property>
+          <object class="GtkGrid" id="findGrid">
             <property name="visible">True</property>
-            <property name="homogeneous">False</property>
-            <property name="spacing">12</property>
+            <property name="can_focus">False</property>
+            <property name="row_spacing">20</property>
+            <property name="column_spacing">20</property>
             <child>
-              <object class="GtkHBox" id="hbox1">
-                <property name="border_width">6</property>
+              <object class="GtkGrid" id="searchForGrid">
                 <property name="visible">True</property>
-                <property name="homogeneous">False</property>
-                <property name="spacing">0</property>
+                <property name="can_focus">False</property>
+                <property name="border_width">5</property>
                 <child>
                   <object class="GtkLabel" id="searchForLabel">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="xalign">0</property>
                     <property name="label" translatable="yes">_Search for:</property>
-                    <property name="use_underline">True</property>
                     <property name="use_markup">True</property>
-                    <property name="justify">GTK_JUSTIFY_LEFT</property>
-                    <property name="wrap">False</property>
-                    <property name="selectable">False</property>
-                    <property name="xalign">0.5</property>
-                    <property name="yalign">0.5</property>
-                    <property name="xpad">0</property>
-                    <property name="ypad">0</property>
+                    <property name="use_underline">True</property>
                     <property name="mnemonic_widget">searchForEntry</property>
-                    <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
                     <property name="width_chars">12</property>
-                    <property name="single_line_mode">False</property>
-                    <property name="angle">0</property>
-                    <accessibility>
-		    
-		  </accessibility>
                     <child internal-child="accessible">
-                      <object class="AtkObject" id="a11y-searchForLabel1">
-                        <property name="AtkObject::accessible_name" translatable="yes">Search for:</property>
+                      <object class="AtkObject" id="searchForLabel-atkobject">
+                        <property name="AtkObject::accessible-name" translatable="yes">Search for:</property>
                       </object>
                     </child>
                   </object>
                   <packing>
-                    <property name="padding">0</property>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
                   </packing>
                 </child>
                 <child>
                   <object class="GtkEntry" id="searchForEntry">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                    <property name="editable">True</property>
-                    <property name="visibility">True</property>
-                    <property name="max_length">0</property>
-                    <property name="text" translatable="yes"/>
-                    <property name="has_frame">True</property>
-                    <property name="invisible_char">&#x25CF;</property>
+                    <property name="hexpand">True</property>
+                    <property name="invisible_char">â</property>
                     <property name="activates_default">True</property>
-                    <accessibility>
-		    
-		  </accessibility>
-                    <signal handler="searchForEntryChanged" last_modification_time="Wed, 11 Oct 2006 02:59:44 GMT" name="changed"/>
+                    <property name="invisible_char_set">True</property>
                     <child internal-child="accessible">
-                      <object class="AtkObject" id="a11y-searchForEntry1">
-                        <property name="AtkObject::accessible_name" translatable="yes">Search for:</property>
+                      <object class="AtkObject" id="searchForEntry-atkobject">
+                        <property name="AtkObject::accessible-name" translatable="yes">Search for:</property>
                       </object>
                     </child>
+                    <signal name="changed" handler="searchForEntryChanged" swapped="no"/>
                   </object>
                   <packing>
-                    <property name="padding">0</property>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
+                    <property name="left_attach">1</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">2</property>
+                    <property name="height">1</property>
                   </packing>
                 </child>
+                <child>
+                  <placeholder/>
+                </child>
               </object>
               <packing>
-                <property name="padding">0</property>
-                <property name="expand">True</property>
-                <property name="fill">True</property>
+                <property name="left_attach">0</property>
+                <property name="top_attach">0</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
               </packing>
             </child>
             <child>
-              <object class="GtkHBox" id="hbox2">
-                <property name="border_width">6</property>
+              <object class="GtkGrid" id="searchOptionsGrid">
                 <property name="visible">True</property>
-                <property name="homogeneous">False</property>
-                <property name="spacing">0</property>
+                <property name="can_focus">False</property>
+                <property name="valign">end</property>
+                <property name="row_spacing">20</property>
+                <property name="column_spacing">20</property>
                 <child>
-                  <object class="GtkFrame" id="startingPointFrame">
+                  <object class="GtkFrame" id="startFromFrame">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <property name="label_xalign">0</property>
-                    <property name="label_yalign">0.5</property>
-                    <property name="shadow_type">GTK_SHADOW_NONE</property>
+                    <property name="shadow_type">none</property>
                     <child>
-                      <object class="GtkAlignment" id="alignment1">
+                      <object class="GtkAlignment" id="startFromAlignment">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
                         <property name="xalign">1</property>
                         <property name="yalign">0</property>
-                        <property name="xscale">1</property>
                         <property name="yscale">0</property>
-                        <property name="top_padding">0</property>
-                        <property name="bottom_padding">0</property>
                         <property name="left_padding">12</property>
-                        <property name="right_padding">0</property>
                         <child>
-                          <object class="GtkVBox" id="vbox2">
+                          <object class="GtkGrid" id="startFromGrid">
                             <property name="visible">True</property>
-                            <property name="homogeneous">False</property>
-                            <property name="spacing">0</property>
+                            <property name="can_focus">False</property>
                             <child>
                               <object class="GtkRadioButton" id="currentLocationRadioButton">
+                                <property name="label" translatable="yes">C_urrent location</property>
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
-                                <property name="label" translatable="yes">C_urrent location</property>
+                                <property name="receives_default">False</property>
+                                <property name="use_action_appearance">False</property>
                                 <property name="use_underline">True</property>
-                                <property name="relief">GTK_RELIEF_NORMAL</property>
-                                <property name="focus_on_click">True</property>
+                                <property name="xalign">0</property>
                                 <property name="active">True</property>
-                                <property name="inconsistent">False</property>
                                 <property name="draw_indicator">True</property>
-                                <signal handler="startingPointChanged" last_modification_time="Tue, 10 Oct 2006 02:43:13 GMT" name="toggled"/>
+                                <signal name="toggled" handler="startingPointChanged" swapped="no"/>
                               </object>
                               <packing>
-                                <property name="padding">0</property>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">0</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
                               </packing>
                             </child>
                             <child>
                               <object class="GtkRadioButton" id="topRadioButton">
+                                <property name="label" translatable="yes">_Top of window</property>
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
-                                <property name="label" translatable="yes">_Top of window</property>
+                                <property name="receives_default">False</property>
+                                <property name="use_action_appearance">False</property>
                                 <property name="use_underline">True</property>
-                                <property name="relief">GTK_RELIEF_NORMAL</property>
-                                <property name="focus_on_click">True</property>
-                                <property name="active">False</property>
-                                <property name="inconsistent">False</property>
+                                <property name="xalign">0</property>
                                 <property name="draw_indicator">True</property>
                                 <property name="group">currentLocationRadioButton</property>
-                                <accessibility>
-				
-			      </accessibility>
-                                <signal handler="startingPointChanged" last_modification_time="Tue, 10 Oct 2006 02:43:31 GMT" name="toggled"/>
                                 <child internal-child="accessible">
-                                  <object class="AtkObject" id="a11y-topRadioButton1">
-                                    <property name="AtkObject::accessible_name" translatable="yes">Top of window</property>
+                                  <object class="AtkObject" id="topRadioButton-atkobject">
+                                    <property name="AtkObject::accessible-name" translatable="yes">Top of window</property>
                                   </object>
                                 </child>
+                                <signal name="toggled" handler="startingPointChanged" swapped="no"/>
                               </object>
                               <packing>
-                                <property name="padding">0</property>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">1</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
                               </packing>
                             </child>
                           </object>
@@ -232,177 +217,186 @@
                       </object>
                     </child>
                     <child type="label">
-                      <object class="GtkLabel" id="startFromFrame">
+                      <object class="GtkLabel" id="startFromLabel">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
                         <property name="label" translatable="yes">&lt;b&gt;Start from:&lt;/b&gt;</property>
-                        <property name="use_underline">False</property>
                         <property name="use_markup">True</property>
-                        <property name="justify">GTK_JUSTIFY_LEFT</property>
-                        <property name="wrap">False</property>
-                        <property name="selectable">False</property>
-                        <property name="xalign">0.5</property>
-                        <property name="yalign">0.5</property>
-                        <property name="xpad">0</property>
-                        <property name="ypad">0</property>
-                        <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                        <property name="width_chars">-1</property>
-                        <property name="single_line_mode">False</property>
-                        <property name="angle">0</property>
-                        <accessibility>
-			
-		      </accessibility>
                         <child internal-child="accessible">
-                          <object class="AtkObject" id="a11y-startFromFrame1">
-                            <property name="AtkObject::accessible_name" translatable="yes">Start from:</property>
+                          <object class="AtkObject" id="startFromLabel-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes">Start from:</property>
                           </object>
                         </child>
                       </object>
                     </child>
                   </object>
                   <packing>
-                    <property name="padding">6</property>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkAlignment" id="alignment3">
+                  <object class="GtkFrame" id="searchDirectionFrame">
                     <property name="visible">True</property>
-                    <property name="xalign">0.5</property>
-                    <property name="yalign">0.5</property>
-                    <property name="xscale">1</property>
-                    <property name="yscale">1</property>
-                    <property name="top_padding">15</property>
-                    <property name="bottom_padding">0</property>
-                    <property name="left_padding">0</property>
-                    <property name="right_padding">0</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
                     <child>
-                      <object class="GtkVBox" id="vbox3">
+                      <object class="GtkAlignment" id="alignment3">
                         <property name="visible">True</property>
-                        <property name="homogeneous">False</property>
-                        <property name="spacing">0</property>
-                        <child>
-                          <object class="GtkCheckButton" id="matchCaseCheckbox">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="label" translatable="yes">_Match case</property>
-                            <property name="use_underline">True</property>
-                            <property name="relief">GTK_RELIEF_NORMAL</property>
-                            <property name="focus_on_click">True</property>
-                            <property name="active">False</property>
-                            <property name="inconsistent">False</property>
-                            <property name="draw_indicator">True</property>
-                            <signal handler="matchCaseChecked" last_modification_time="Wed, 11 Oct 2006 00:19:48 GMT" name="toggled"/>
-                          </object>
-                          <packing>
-                            <property name="padding">0</property>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                          </packing>
-                        </child>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
                         <child>
-                          <object class="GtkCheckButton" id="matchEntireWordCheckbox">
+                          <object class="GtkGrid" id="grid3">
                             <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="label" translatable="yes">Match _entire word only</property>
-                            <property name="use_underline">True</property>
-                            <property name="relief">GTK_RELIEF_NORMAL</property>
-                            <property name="focus_on_click">True</property>
-                            <property name="active">False</property>
-                            <property name="inconsistent">False</property>
-                            <property name="draw_indicator">True</property>
-                            <signal handler="matchEntireWordChecked" last_modification_time="Wed, 11 Oct 2006 00:23:23 GMT" name="toggled"/>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkCheckButton" id="wrapAroundCheckbox">
+                                <property name="label" translatable="yes">_Wrap around</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="use_action_appearance">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+                                <signal name="toggled" handler="wrapAroundChecked" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">1</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" id="searchBackwardsCheckbox">
+                                <property name="label" translatable="yes">Search _backwards</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="use_action_appearance">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="draw_indicator">True</property>
+                                <signal name="toggled" handler="searchBackwardsChecked" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">0</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
                           </object>
-                          <packing>
-                            <property name="padding">0</property>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                          </packing>
                         </child>
                       </object>
                     </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="searchDirectionLabel">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Search direction:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
                   </object>
                   <packing>
-                    <property name="padding">15</property>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
+                    <property name="left_attach">1</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkAlignment" id="alignment4">
+                  <object class="GtkFrame" id="resultsMustFrame">
                     <property name="visible">True</property>
-                    <property name="xalign">0.5</property>
-                    <property name="yalign">0.5</property>
-                    <property name="xscale">1</property>
-                    <property name="yscale">1</property>
-                    <property name="top_padding">15</property>
-                    <property name="bottom_padding">0</property>
-                    <property name="left_padding">0</property>
-                    <property name="right_padding">5</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
                     <child>
-                      <object class="GtkVBox" id="vbox4">
+                      <object class="GtkAlignment" id="alignment2">
                         <property name="visible">True</property>
-                        <property name="homogeneous">False</property>
-                        <property name="spacing">0</property>
-                        <child>
-                          <object class="GtkCheckButton" id="searchBackwardsCheckbox">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="label" translatable="yes">Search _backwards</property>
-                            <property name="use_underline">True</property>
-                            <property name="relief">GTK_RELIEF_NORMAL</property>
-                            <property name="focus_on_click">True</property>
-                            <property name="active">False</property>
-                            <property name="inconsistent">False</property>
-                            <property name="draw_indicator">True</property>
-                            <signal handler="searchBackwardsChecked" last_modification_time="Wed, 11 Oct 2006 01:00:47 GMT" name="toggled"/>
-                          </object>
-                          <packing>
-                            <property name="padding">0</property>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                          </packing>
-                        </child>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
                         <child>
-                          <object class="GtkCheckButton" id="wrapAroundCheckbox">
+                          <object class="GtkGrid" id="grid2">
                             <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="label" translatable="yes">_Wrap around</property>
-                            <property name="use_underline">True</property>
-                            <property name="relief">GTK_RELIEF_NORMAL</property>
-                            <property name="focus_on_click">True</property>
-                            <property name="active">True</property>
-                            <property name="inconsistent">False</property>
-                            <property name="draw_indicator">True</property>
-                            <signal handler="wrapAroundChecked" last_modification_time="Tue, 10 Oct 2006 02:44:45 GMT" name="toggled"/>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkCheckButton" id="matchCaseCheckbox">
+                                <property name="label" translatable="yes">_Match case</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="use_action_appearance">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="draw_indicator">True</property>
+                                <signal name="toggled" handler="matchCaseChecked" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">0</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" id="matchEntireWordCheckbox">
+                                <property name="label" translatable="yes">Match _entire word only</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="use_action_appearance">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="draw_indicator">True</property>
+                                <signal name="toggled" handler="matchEntireWordChecked" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">1</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
                           </object>
-                          <packing>
-                            <property name="padding">0</property>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                          </packing>
                         </child>
                       </object>
                     </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="resultsMustLabel">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Results must:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
                   </object>
                   <packing>
-                    <property name="padding">0</property>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
+                    <property name="left_attach">2</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
                   </packing>
                 </child>
               </object>
               <packing>
-                <property name="padding">10</property>
-                <property name="expand">True</property>
-                <property name="fill">True</property>
+                <property name="left_attach">0</property>
+                <property name="top_attach">1</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
               </packing>
             </child>
           </object>
           <packing>
-            <property name="padding">5</property>
             <property name="expand">True</property>
             <property name="fill">True</property>
+            <property name="position">1</property>
           </packing>
         </child>
       </object>
@@ -411,10 +405,5 @@
       <action-widget response="-7">closeButton</action-widget>
       <action-widget response="0">findButton</action-widget>
     </action-widgets>
-    <child internal-child="accessible">
-      <object class="AtkObject" id="a11y-findDialog1">
-        <property name="AtkObject::accessible_name" translatable="yes">Orca Find Dialog</property>
-      </object>
-    </child>
   </object>
 </interface>
diff --git a/src/orca/orca-setup.ui b/src/orca/orca-setup.ui
index 5e2a6d9..1796e43 100644
--- a/src/orca/orca-setup.ui
+++ b/src/orca/orca-setup.ui
@@ -1,16 +1,15 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <!-- interface-requires gtk+ 2.12 -->
-  <!-- interface-naming-policy toplevel-contextual -->
   <object class="GtkAdjustment" id="adjustment1">
-    <property name="value">5</property>
     <property name="upper">10</property>
+    <property name="value">5</property>
     <property name="step_increment">0.10000000149</property>
     <property name="page_increment">1</property>
   </object>
   <object class="GtkAdjustment" id="adjustment10">
-    <property name="value">1</property>
     <property name="upper">20</property>
+    <property name="value">1</property>
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
@@ -27,16 +26,16 @@
     <property name="page_increment">0.25</property>
   </object>
   <object class="GtkAdjustment" id="adjustment13">
-    <property name="value">1</property>
     <property name="lower">24</property>
     <property name="upper">256</property>
+    <property name="value">1</property>
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
   <object class="GtkAdjustment" id="adjustment14">
-    <property name="value">1</property>
     <property name="lower">1</property>
     <property name="upper">256</property>
+    <property name="value">1</property>
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
@@ -46,58 +45,70 @@
     <property name="page_increment">10</property>
   </object>
   <object class="GtkAdjustment" id="adjustment2">
-    <property name="value">50</property>
     <property name="upper">100</property>
+    <property name="value">50</property>
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
   <object class="GtkAdjustment" id="adjustment3">
-    <property name="value">10</property>
     <property name="upper">10</property>
+    <property name="value">10</property>
     <property name="step_increment">0.10000000149</property>
     <property name="page_increment">1</property>
   </object>
   <object class="GtkAdjustment" id="adjustment4">
-    <property name="value">10</property>
     <property name="upper">9999</property>
+    <property name="value">10</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="lower">1</property>
     <property name="upper">16</property>
+    <property name="value">1</property>
     <property name="step_increment">0.25</property>
     <property name="page_increment">1</property>
   </object>
   <object class="GtkAdjustment" id="adjustment6">
-    <property name="value">1</property>
     <property name="lower">1</property>
     <property name="upper">9999</property>
+    <property name="value">1</property>
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
   <object class="GtkAdjustment" id="adjustment7">
-    <property name="value">1</property>
     <property name="lower">1</property>
     <property name="upper">9999</property>
+    <property name="value">1</property>
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
   <object class="GtkAdjustment" id="adjustment8">
-    <property name="value">1</property>
     <property name="lower">1</property>
     <property name="upper">9999</property>
+    <property name="value">1</property>
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
   <object class="GtkAdjustment" id="adjustment9">
-    <property name="value">1</property>
     <property name="lower">1</property>
     <property name="upper">9999</property>
+    <property name="value">1</property>
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
+  <object class="GtkListStore" id="liststore1">
+    <columns>
+      <!-- column-name gchararray1 -->
+      <column type="gchararray"/>
+    </columns>
+  </object>
+  <object class="GtkListStore" id="liststore2">
+    <columns>
+      <!-- column-name gchararray1 -->
+      <column type="gchararray"/>
+    </columns>
+  </object>
   <object class="GtkListStore" id="model1">
     <columns>
       <!-- column-name gchararray -->
@@ -249,18 +260,6 @@
       </row>
     </data>
   </object>
-  <object class="GtkListStore" id="liststore2">
-    <columns>
-      <!-- column-name gchararray1 -->
-      <column type="gchararray"/>
-    </columns>
-  </object>
-  <object class="GtkListStore" id="liststore1">
-    <columns>
-      <!-- column-name gchararray1 -->
-      <column type="gchararray"/>
-    </columns>
-  </object>
   <object class="GtkListStore" id="model9">
     <columns>
       <!-- column-name label -->
@@ -270,1416 +269,1830 @@
     </columns>
   </object>
   <object class="GtkDialog" id="orcaSetupWindow">
+    <property name="can_focus">False</property>
     <property name="title" translatable="yes">Orca Preferences</property>
     <property name="type_hint">normal</property>
-    <signal name="destroy" handler="windowDestroyed"/>
-    <signal name="close" handler="windowClosed"/>
+    <signal name="destroy" handler="windowDestroyed" swapped="no"/>
+    <signal name="close" handler="windowClosed" swapped="no"/>
     <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox1">
+      <object class="GtkBox" id="dialogInternalBox">
         <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
         <property name="spacing">3</property>
-        <child>
-          <object class="GtkVBox" id="mainvbox">
+        <child internal-child="action_area">
+          <object class="GtkButtonBox" id="dialog-action_area1">
             <property name="visible">True</property>
-            <property name="border_width">6</property>
-            <property name="spacing">12</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="helpButton">
+                <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="use_action_appearance">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="helpButtonClicked" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="applyButton">
+                <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="use_action_appearance">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="applyButtonClicked" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="cancelButton">
+                <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="use_action_appearance">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="cancelButtonClicked" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
             <child>
-              <object class="GtkNotebook" id="notebook">
+              <object class="GtkButton" id="okButton">
+                <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="use_action_appearance">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="okButtonClicked" swapped="no"/>
+              </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">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkNotebook" id="notebook">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <child>
+              <object class="GtkGrid" id="generalGrid">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="border_width">12</property>
+                <property name="row_spacing">10</property>
+                <property name="column_spacing">10</property>
                 <child>
-                  <object class="GtkVBox" id="generalVBox">
+                  <object class="GtkFrame" id="keyboardLayoutFrame">
                     <property name="visible">True</property>
-                    <property name="border_width">12</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
                     <child>
-                      <object class="GtkFrame" id="frame9">
+                      <object class="GtkAlignment" id="keyboardLayoutAlignment">
                         <property name="visible">True</property>
-                        <property name="label_xalign">0</property>
-                        <property name="shadow_type">none</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
                         <child>
-                          <object class="GtkAlignment" id="alignment47">
+                          <object class="GtkGrid" id="keyboardLayoutGrid">
                             <property name="visible">True</property>
-                            <property name="left_padding">12</property>
+                            <property name="can_focus">False</property>
                             <child>
-                              <object class="GtkVBox" id="vbox22">
+                              <object class="GtkRadioButton" id="generalDesktopButton">
+                                <property name="label" translatable="yes">_Desktop</property>
                                 <property name="visible">True</property>
-                                <property name="border_width">3</property>
-                                <child>
-                                  <object class="GtkRadioButton" id="generalDesktopButton">
-                                    <property name="label" translatable="yes">_Desktop</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>
-                                    <signal name="toggled" handler="keyboardLayoutChanged"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkRadioButton" id="generalLaptopButton">
-                                    <property name="label" translatable="yes">_Laptop</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">generalDesktopButton</property>
-                                    <signal name="toggled" handler="keyboardLayoutChanged"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="use_action_appearance">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+				<signal name="toggled" handler="keyboardLayoutChanged" swapped="no"/>
                               </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">0</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkRadioButton" id="generalLaptopButton">
+                                <property name="label" translatable="yes">_Laptop</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="use_action_appearance">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="draw_indicator">True</property>
+                                <property name="group">generalDesktopButton</property>
+				<signal name="toggled" handler="keyboardLayoutChanged" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">1</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
                             </child>
                           </object>
                         </child>
-                        <child type="label">
-                          <object class="GtkLabel" id="generalKeyboardLabel">
-                            <property name="visible">True</property>
-                            <property name="label" translatable="yes">&lt;b&gt;Keyboard Layout&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="GtkCheckButton" id="quitOrcaNoConfirmationCheckButton">
-                        <property name="label" translatable="yes">Quit Orca _without confirmation</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="checkButtonToggled"/>
                       </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
                     </child>
-                    <child>
-                      <object class="GtkCheckButton" id="presentToolTipsCheckButton">
-                        <property name="label" translatable="yes">_Present tooltips</property>
+                    <child type="label">
+                      <object class="GtkLabel" id="keyboardLayoutLabel">
                         <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="presentToolTipsChecked"/>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Keyboard Layout&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
                       </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">3</property>
-                      </packing>
                     </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkFrame" id="userInterfaceFrame">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
                     <child>
-                      <object class="GtkCheckButton" id="showMainWindowCheckButton">
-                        <property name="label" translatable="yes">Show Orca _main window</property>
+                      <object class="GtkAlignment" id="userInterfaceAlignment">
                         <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>
-                        <signal name="toggled" handler="checkButtonToggled"/>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkGrid" id="userInterfaceGrid">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkCheckButton" id="showMainWindowCheckButton">
+                                <property name="label" translatable="yes">Show Orca _main window</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="use_action_appearance">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+				<signal name="toggled" handler="checkButtonToggled" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">0</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" id="quitOrcaNoConfirmationCheckButton">
+                                <property name="label" translatable="yes">Quit Orca _without confirmation</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="use_action_appearance">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="draw_indicator">True</property>
+				<signal name="toggled" handler="checkButtonToggled" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">1</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </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="GtkCheckButton" id="enableMouseReviewCheckButton">
-                        <property name="label" translatable="yes">Speak object under mo_use</property>
+                    <child type="label">
+                      <object class="GtkLabel" id="userInterfaceLabel">
                         <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>
-                        <signal name="toggled" handler="checkButtonToggled"/>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;User Interface&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
                       </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">6</property>
-                      </packing>
                     </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkFrame" id="profilesFrame">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
                     <child>
-                      <object class="GtkTable" id="table1">
+                      <object class="GtkAlignment" id="profilesAlignment">
                         <property name="visible">True</property>
-                        <property name="n_rows">2</property>
-                        <property name="n_columns">2</property>
-                        <property name="column_spacing">9</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
                         <child>
-                          <object class="GtkComboBox" id="dateFormatCombo">
+                          <object class="GtkGrid" id="profilesGrid">
                             <property name="visible">True</property>
-                            <property name="model">liststore2</property>
-                            <signal name="changed" handler="dateFormatChanged"/>
+                            <property name="can_focus">False</property>
+                            <property name="row_homogeneous">True</property>
                             <child>
-                              <object class="GtkCellRendererText" id="cellrenderertext1"/>
-                              <attributes>
-                                <attribute name="text">0</attribute>
-                              </attributes>
+                              <object class="GtkLabel" id="activeProfileLabel">
+                                <property name="width_request">150</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">Active _Profile:</property>
+                                <property name="use_underline">True</property>
+                                <property name="mnemonic_widget">availableProfilesComboBox1</property>
+                                <accessibility>
+                                  <relation type="label-for" target="availableProfilesComboBox1"/>
+                                </accessibility>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">0</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
                             </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>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" id="dateFormatLabel">
-                            <property name="visible">True</property>
-                            <property name="xalign">0.0099999997764825821</property>
-                            <property name="label" translatable="yes" comments="Translators: Orca can present the current date to the user, here they can choose how the date should be presented to them.">Dat_e format:</property>
-                            <property name="use_underline">True</property>
-                            <property name="mnemonic_widget">dateFormatCombo</property>
-                            <accessibility>
-                              <relation type="label-for" target="dateFormatCombo"/>
-                            </accessibility>
-                          </object>
-                          <packing>
-                            <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="GtkComboBox" id="timeFormatCombo">
-                            <property name="visible">True</property>
-                            <property name="model">liststore1</property>
-                            <signal name="changed" handler="timeFormatChanged"/>
                             <child>
-                              <object class="GtkCellRendererText" id="cellrenderertext2"/>
-                              <attributes>
-                                <attribute name="text">0</attribute>
-                              </attributes>
+                              <object class="GtkLabel" id="startupProfileLabel">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">Start-up Profile:</property>
+                                <accessibility>
+                                  <relation type="label-for" target="availableProfilesComboBox2"/>
+                                </accessibility>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">1</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkComboBox" id="availableProfilesComboBox1">
+                                <property name="width_request">200</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="model">model9</property>
+                                <child>
+                                  <object class="GtkCellRendererText" id="cellrenderertext5"/>
+                                  <attributes>
+                                    <attribute name="text">0</attribute>
+                                  </attributes>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="top_attach">0</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkComboBox" id="availableProfilesComboBox2">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="model">model9</property>
+                                <child>
+                                  <object class="GtkCellRendererText" id="cellrenderertext6"/>
+                                  <attributes>
+                                    <attribute name="text">0</attribute>
+                                  </attributes>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="top_attach">1</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkButton" id="loadProfileButton">
+                                <property name="label" translatable="yes" comments="This button will load the selected settings profile in the application.">_Load</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">True</property>
+                                <property name="use_action_appearance">False</property>
+                                <property name="use_underline">True</property>
+                                <signal name="clicked" handler="loadProfileButtonClicked" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">2</property>
+                                <property name="top_attach">0</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkButton" id="saveProfileButton">
+                                <property name="label">gtk-save-as</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">True</property>
+                                <property name="use_action_appearance">False</property>
+                                <property name="use_stock">True</property>
+                                <signal name="clicked" handler="showProfileGUI" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">3</property>
+                                <property name="top_attach">0</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <placeholder/>
+                            </child>
+                            <child>
+                              <placeholder/>
                             </child>
                           </object>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                            <property name="x_options"></property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" id="timeFormatLabel">
-                            <property name="visible">True</property>
-                            <property name="xalign">0</property>
-                            <property name="label" translatable="yes" comments="Translators: Orca can present the current time to the user, here they can choose how the time should be presented to them.">_Time format:</property>
-                            <property name="use_underline">True</property>
-                            <property name="justify">right</property>
-                            <property name="mnemonic_widget">timeFormatCombo</property>
-                            <accessibility>
-                              <relation type="label-for" target="timeFormatCombo"/>
-                            </accessibility>
-                          </object>
-                          <packing>
-                            <property name="x_options">GTK_FILL</property>
-                            <property name="y_options"></property>
-                          </packing>
                         </child>
                       </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">7</property>
-                      </packing>
                     </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="profilesLabel">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Profiles&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">4</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkFrame" id="timeAndDateFrame">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
                     <child>
-                      <object class="GtkFrame" id="profilesFrame">
+                      <object class="GtkAlignment" id="timeAndDateAlignment">
                         <property name="visible">True</property>
-                        <property name="label_xalign">0</property>
-                        <property name="shadow_type">none</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
                         <child>
-                          <object class="GtkAlignment" id="alignment5">
+                          <object class="GtkGrid" id="timeAndDateGrid">
                             <property name="visible">True</property>
-                            <property name="left_padding">6</property>
+                            <property name="can_focus">False</property>
+                            <property name="row_homogeneous">True</property>
+                            <child>
+                              <object class="GtkLabel" id="timeFormatLabel">
+                                <property name="width_request">150</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">_Time format:</property>
+                                <property name="use_underline">True</property>
+                                <property name="mnemonic_widget">timeFormatCombo</property>
+                                <accessibility>
+                                  <relation type="label-for" target="availableProfilesComboBox1"/>
+                                </accessibility>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">0</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="dateFormatLabel">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">Dat_e format:</property>
+                                <property name="use_underline">True</property>
+                                <property name="mnemonic_widget">dateFormatCombo</property>
+                                <accessibility>
+                                  <relation type="label-for" target="availableProfilesComboBox2"/>
+                                </accessibility>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">1</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
                             <child>
-                              <object class="GtkVBox" id="profilesVbox1">
+                              <object class="GtkComboBox" id="timeFormatCombo">
                                 <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="model">liststore1</property>
+                                <signal name="changed" handler="timeFormatChanged" swapped="no"/>
                                 <child>
-                                  <object class="GtkAspectFrame" id="aspectframe2">
-                                    <property name="visible">True</property>
-                                    <property name="label_xalign">0</property>
-                                    <property name="shadow_type">none</property>
-                                    <property name="xalign">0</property>
-                                    <child>
-                                      <object class="GtkTable" id="profilesTable1">
-                                        <property name="visible">True</property>
-                                        <property name="n_rows">2</property>
-                                        <property name="n_columns">4</property>
-                                        <property name="column_spacing">6</property>
-                                        <property name="row_spacing">2</property>
-                                        <child>
-                                          <object class="GtkLabel" id="profilesLabel1">
-                                            <property name="width_request">150</property>
-                                            <property name="visible">True</property>
-                                            <property name="xalign">0</property>
-                                            <property name="xpad">12</property>
-                                            <property name="use_underline">True</property>
-                                            <property name="mnemonic_widget">availableProfilesComboBox1</property>
-                                            <property name="label" translatable="yes">Active _Profile:</property>
-                                            <property name="ellipsize">start</property>
-                                            <accessibility>
-                                              <relation type="label-for" target="availableProfilesComboBox1"/>
-                                            </accessibility>
-                                          </object>
-                                        </child>
-                                        <child>
-                                          <object class="GtkComboBox" id="availableProfilesComboBox1">
-                                            <property name="width_request">200</property>
-                                            <property name="visible">True</property>
-                                            <property name="model">model9</property>
-                                            <child>
-                                              <object class="GtkCellRendererText" id="cellrenderertext5"/>
-                                              <attributes>
-                                                <attribute name="text">0</attribute>
-                                              </attributes>
-                                            </child>
-                                          </object>
-                                          <packing>
-                                            <property name="left_attach">1</property>
-                                            <property name="right_attach">2</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkButton" id="loadProfileButton">
-                                            <property name="label" translatable="yes" comments="This button will load the selected settings profile in the application.">_Load</property>
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="receives_default">True</property>
-                                            <property name="use_underline">True</property>
-                                            <signal name="clicked" handler="loadProfileButtonClicked"/>
-                                          </object>
-                                          <packing>
-                                            <property name="left_attach">2</property>
-                                            <property name="right_attach">3</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkButton" id="saveProfileButton">
-                                            <property name="label">gtk-save-as</property>
-                                            <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="receives_default">True</property>
-                                            <property name="use_stock">True</property>
-                                            <signal name="clicked" handler="showProfileGUI"/>
-                                          </object>
-                                          <packing>
-                                            <property name="left_attach">3</property>
-                                            <property name="right_attach">4</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkLabel" id="startupProfileLabel1">
-                                            <property name="visible">True</property>
-                                            <property name="xalign">0</property>
-                                            <property name="xpad">12</property>
-                                            <property name="label" translatable="yes">Start-up Profile:</property>
-                                            <property name="ellipsize">end</property>
-                                            <accessibility>
-                                              <relation type="label-for" target="availableProfilesComboBox2"/>
-                                            </accessibility>
-                                          </object>
-                                          <packing>
-                                            <property name="top_attach">1</property>
-                                            <property name="bottom_attach">2</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkComboBox" id="availableProfilesComboBox2">
-                                            <property name="visible">True</property>
-                                            <property name="model">model9</property>
-                                            <child>
-                                              <object class="GtkCellRendererText" id="cellrenderertext6"/>
-                                              <attributes>
-                                                <attribute name="text">0</attribute>
-                                              </attributes>
-                                            </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>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <placeholder/>
-                                        </child>
-                                        <child>
-                                          <placeholder/>
-                                        </child>
-                                      </object>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">6</property>
-                                    <property name="position">0</property>
-                                  </packing>
+                                  <object class="GtkCellRendererText" id="cellrenderertext2"/>
+                                  <attributes>
+                                    <attribute name="text">0</attribute>
+                                  </attributes>
                                 </child>
                               </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="top_attach">0</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkComboBox" id="dateFormatCombo">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="model">liststore2</property>
+                                <signal name="changed" handler="dateFormatChanged" swapped="no"/>
+                                <child>
+                                  <object class="GtkCellRendererText" id="cellrenderertext1"/>
+                                  <attributes>
+                                    <attribute name="text">0</attribute>
+                                  </attributes>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="top_attach">1</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
                             </child>
-                          </object>
-                        </child>
-                        <child type="label">
-                          <object class="GtkLabel" id="form2">
-                            <property name="visible">True</property>
-                            <property name="label" translatable="yes">&lt;b&gt;Profiles&lt;/b&gt;</property>
-                            <property name="use_markup">True</property>
                           </object>
                         </child>
                       </object>
-                      <packing>
-                        <property name="position">8</property>
-                      </packing>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="timeAndDateLabel">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Time and Date&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
                     </child>
                   </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">3</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
                 </child>
-                <child type="tab">
-                  <object class="GtkLabel" id="generalTabLabel">
+                <child>
+                  <object class="GtkFrame" id="mouseFrame">
                     <property name="visible">True</property>
-                    <property name="label" translatable="yes">General</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" id="mouseAlignment">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkGrid" id="mouseGrid">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkCheckButton" id="presentToolTipsCheckButton">
+                                <property name="label" translatable="yes">_Present tooltips</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="use_action_appearance">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="draw_indicator">True</property>
+				<signal name="toggled" handler="checkButtonToggled" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">0</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" id="enableMouseReviewCheckButton">
+                                <property name="label" translatable="yes">Speak object under mo_use</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="use_action_appearance">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+				<signal name="toggled" handler="checkButtonToggled" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">1</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="mouseLabel">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Mouse&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
                   </object>
                   <packing>
-                    <property name="tab_fill">False</property>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">2</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
                   </packing>
                 </child>
+              </object>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="generalTabLabel">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">General</property>
+              </object>
+              <packing>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkGrid" id="voiceGrid">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="border_width">12</property>
+                <property name="row_spacing">10</property>
+                <property name="column_spacing">10</property>
                 <child>
-                  <object class="GtkVBox" id="vbox20">
+                  <object class="GtkFrame" id="voiceTypeSettingsFrame">
                     <property name="visible">True</property>
-                    <property name="border_width">12</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
                     <child>
-                      <object class="GtkCheckButton" id="speechSupportCheckButton">
-                        <property name="label" translatable="yes">_Enable speech</property>
+                      <object class="GtkAlignment" id="voiceTypeSettingsAlignment">
                         <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>
-                        <signal name="toggled" handler="speechSupportChecked"/>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkGrid" id="voiceTypeSettingsGrid">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="row_spacing">12</property>
+                            <child>
+                              <object class="GtkLabel" id="volumeLabel">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="xalign">1</property>
+                                <property name="label" translatable="yes">Vo_lume:</property>
+                                <property name="use_underline">True</property>
+                                <property name="justify">right</property>
+                                <property name="mnemonic_widget">volumeScale</property>
+                                <accessibility>
+                                  <relation type="label-for" target="volumeScale"/>
+                                </accessibility>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">6</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkHScale" id="volumeScale">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="adjustment">adjustment3</property>
+                                <property name="round_digits">1</property>
+                                <property name="value_pos">right</property>
+                                <accelerator key="l" signal="grab_focus" modifiers="GDK_MOD1_MASK"/>
+                                <signal name="value-changed" handler="volumeValueChanged" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="top_attach">6</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkHScale" id="pitchScale">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="adjustment">adjustment1</property>
+                                <property name="round_digits">1</property>
+                                <property name="value_pos">right</property>
+                                <accelerator key="t" signal="grab_focus" modifiers="GDK_MOD1_MASK"/>
+                                <signal name="value-changed" handler="pitchValueChanged" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="top_attach">5</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="pitchLabel">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="xalign">1</property>
+                                <property name="label" translatable="yes">Pi_tch:</property>
+                                <property name="use_underline">True</property>
+                                <property name="justify">right</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">5</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkHScale" id="rateScale">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="adjustment">adjustment2</property>
+                                <property name="round_digits">0</property>
+                                <property name="digits">0</property>
+                                <property name="value_pos">right</property>
+                                <accelerator key="r" signal="grab_focus" modifiers="GDK_MOD1_MASK"/>
+                                <signal name="value-changed" handler="rateValueChanged" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="top_attach">4</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="rateLabel">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="xalign">1</property>
+                                <property name="label" translatable="yes">_Rate:</property>
+                                <property name="use_underline">True</property>
+                                <property name="justify">right</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">4</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkComboBox" id="speechFamilies">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <signal name="changed" handler="speechFamiliesChanged" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="top_attach">3</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="familyLabel">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="xalign">1</property>
+                                <property name="label" translatable="yes">_Person:</property>
+                                <property name="use_underline">True</property>
+                                <property name="justify">right</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">3</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkComboBox" id="speechServers">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <signal name="changed" handler="speechServersChanged" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="top_attach">2</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="speechServersLabel">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="xalign">1</property>
+                                <property name="label" translatable="yes">Speech synthesi_zer:</property>
+                                <property name="use_underline">True</property>
+                                <property name="justify">right</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">2</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkComboBox" id="speechSystems">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <signal name="changed" handler="speechSystemsChanged" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="top_attach">1</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="speechSystemsLabel">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="xalign">1</property>
+                                <property name="label" translatable="yes">Speech _system:</property>
+                                <property name="use_underline">True</property>
+                                <property name="justify">right</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">1</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkComboBox" id="voiceTypesCombo">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="model">model1</property>
+                                <signal name="changed" handler="voiceTypesChanged" swapped="no"/>
+                                <child>
+                                  <object class="GtkCellRendererText" id="renderer1"/>
+                                  <attributes>
+                                    <attribute name="text">0</attribute>
+                                  </attributes>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="top_attach">0</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="voiceTypeLabel">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="xalign">1</property>
+                                <property name="label" translatable="yes">_Voice Type:</property>
+                                <property name="use_underline">True</property>
+                                <property name="justify">right</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">0</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
                       </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
                     </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="voiceTypeSettingsLabel">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Voice Type Settings&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkFrame" id="globalVoiceSettingsFrame">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
                     <child>
-                      <object class="GtkVBox" id="speechVbox">
+                      <object class="GtkAlignment" id="globalVoiceSettingsAlignment">
                         <property name="visible">True</property>
-                        <property name="border_width">12</property>
-                        <property name="spacing">6</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
                         <child>
-                          <object class="GtkTable" id="speechTable">
+                          <object class="GtkGrid" id="globalVoiceSettingsGrid">
                             <property name="visible">True</property>
-                            <property name="n_rows">2</property>
-                            <property name="n_columns">3</property>
-                            <property name="column_spacing">3</property>
-                            <property name="row_spacing">3</property>
+                            <property name="can_focus">False</property>
                             <child>
-                              <object class="GtkTable" id="sliderTable">
+                              <object class="GtkCheckButton" id="enablePauseBreaksCheckButton">
+                                <property name="label" translatable="yes" comments="Translators: different speech systems and speech engines work differently when it comes to handling pauses (e.g., sentence boundaries).  This property allows the user to specify whether speech should be sent to the speech synthesis system immediately when a pause directive is enountered or if it should be queued up and sent to the speech synthesis system once the entire set of utterances has been calculated.">Break speech into ch_unks between pauses</property>
                                 <property name="visible">True</property>
-                                <property name="n_rows">3</property>
-                                <property name="n_columns">2</property>
-                                <property name="column_spacing">10</property>
-                                <child>
-                                  <object class="GtkLabel" id="rateLabel">
-                                    <property name="visible">True</property>
-                                    <property name="xalign">1</property>
-                                    <property name="xpad">5</property>
-                                    <property name="label" translatable="yes">_Rate:</property>
-                                    <property name="use_underline">True</property>
-                                    <property name="justify">right</property>
-                                    <property name="mnemonic_widget">rateScale</property>
-                                    <accessibility>
-                                      <relation type="label-for" target="rateScale"/>
-                                    </accessibility>
-                                  </object>
-                                  <packing>
-                                    <property name="x_options">GTK_FILL</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkLabel" id="pitchLabel">
-                                    <property name="visible">True</property>
-                                    <property name="xalign">1</property>
-                                    <property name="xpad">3</property>
-                                    <property name="label" translatable="yes">Pi_tch:</property>
-                                    <property name="use_underline">True</property>
-                                    <property name="justify">right</property>
-                                    <property name="mnemonic_widget">pitchScale</property>
-                                    <accessibility>
-                                      <relation type="label-for" target="pitchScale"/>
-                                    </accessibility>
-                                  </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="GtkHScale" id="pitchScale">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="adjustment">adjustment1</property>
-                                    <property name="value_pos">right</property>
-                                    <accelerator key="t" signal="grab_focus" modifiers="GDK_MOD1_MASK"/>
-                                    <signal name="value_changed" handler="pitchValueChanged"/>
-                                  </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="y_options">GTK_FILL</property>
-                                  </packing>
-                                </child>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="use_action_appearance">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+                                <signal name="toggled" handler="checkButtonToggled" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">0</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" id="speakMultiCaseStringsAsWordsCheckButton">
+                                <property name="label" translatable="yes" comments="Translators: multicase strings are StringsWithWordsMashedTogetherLikeThis.">Speak multicase strings as wor_ds</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="use_action_appearance">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+                                <signal name="toggled" handler="checkButtonToggled" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">1</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkGrid" id="sayAllGrid">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="row_spacing">12</property>
                                 <child>
-                                  <object class="GtkLabel" id="volumeLabel">
+                                  <object class="GtkLabel" id="sayAllLabel">
                                     <property name="visible">True</property>
-                                    <property name="xalign">1</property>
-                                    <property name="xpad">3</property>
-                                    <property name="label" translatable="yes">Vo_lume:</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes" comments="Translators: Say all by refers to the way that Orca will say (speak) an amount of text -- in particular, where Orca where insert pauses. There are currently two choices (supplied by a combo box to the right of this label): say all by sentence and  say all by line.  If Orca were speaking a work of fiction, it's probably best to do say all by sentence so it sound more natural. If Orca were speaking something like a page of computer commands, doing a say all by line would work better.">Say All B_y:</property>
                                     <property name="use_underline">True</property>
-                                    <property name="justify">right</property>
-                                    <property name="mnemonic_widget">volumeScale</property>
+                                    <property name="mnemonic_widget">sayAllStyle</property>
                                     <accessibility>
-                                      <relation type="label-for" target="volumeScale"/>
+                                      <relation type="label-for" target="sayAllStyle"/>
                                     </accessibility>
                                   </object>
                                   <packing>
-                                    <property name="top_attach">2</property>
-                                    <property name="bottom_attach">3</property>
-                                    <property name="x_options">GTK_FILL</property>
+                                    <property name="left_attach">0</property>
+                                    <property name="top_attach">0</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
                                   </packing>
                                 </child>
                                 <child>
-                                  <object class="GtkHScale" id="volumeScale">
+                                  <object class="GtkComboBox" id="sayAllStyle">
                                     <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="adjustment">adjustment3</property>
-                                    <property name="value_pos">right</property>
-                                    <accelerator key="l" signal="grab_focus" modifiers="GDK_MOD1_MASK"/>
-                                    <signal name="value_changed" handler="volumeValueChanged"/>
+                                    <property name="can_focus">False</property>
+                                    <property name="model">model2</property>
+                                    <signal name="changed" handler="sayAllStyleChanged" swapped="no"/>
+                                    <child>
+                                      <object class="GtkCellRendererText" id="renderer2"/>
+                                      <attributes>
+                                        <attribute name="text">0</attribute>
+                                      </attributes>
+                                    </child>
                                   </object>
                                   <packing>
                                     <property name="left_attach">1</property>
-                                    <property name="right_attach">2</property>
-                                    <property name="top_attach">2</property>
-                                    <property name="bottom_attach">3</property>
-                                    <property name="y_options">GTK_FILL</property>
+                                    <property name="top_attach">0</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
                                   </packing>
                                 </child>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">2</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="globalVoiceSettingsLabel">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Global Voice Settings&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="voiceLabel">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Voice</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkGrid" id="speechGrid">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="border_width">12</property>
+                <property name="row_spacing">10</property>
+                <property name="column_spacing">10</property>
+                <child>
+                  <object class="GtkCheckButton" id="speechSupportCheckButton">
+                    <property name="label" translatable="yes">_Enable speech</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_action_appearance">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="xalign">0</property>
+                    <property name="active">True</property>
+                    <property name="draw_indicator">True</property>
+                    <signal name="toggled" handler="speechSupportChecked" swapped="no"/>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkGrid" id="speechOptionsGrid">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="orientation">vertical</property>
+                    <property name="row_spacing">50</property>
+                    <property name="column_spacing">20</property>
+                    <child>
+                      <object class="GtkGrid" id="speechRadioButtonGrid">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="row_spacing">20</property>
+                        <property name="column_spacing">20</property>
+                        <child>
+                          <object class="GtkFrame" id="speechVerbosityFrame">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">none</property>
+                            <child>
+                              <object class="GtkAlignment" id="speechVerbosityAlignment">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="left_padding">12</property>
                                 <child>
-                                  <object class="GtkAlignment" id="alignment48">
+                                  <object class="GtkGrid" id="speechVerbosityGrid">
                                     <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkRadioButton" id="speechBriefButton">
+                                        <property name="label" translatable="yes">Brie_f</property>
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="use_action_appearance">False</property>
+                                        <property name="use_underline">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="active">True</property>
+                                        <property name="draw_indicator">True</property>
+                                        <signal name="toggled" handler="speechVerbosityChanged" swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">0</property>
+                                        <property name="top_attach">0</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
+                                      </packing>
+                                    </child>
                                     <child>
-                                      <object class="GtkHScale" id="rateScale">
+                                      <object class="GtkRadioButton" id="speechVerboseButton">
+                                        <property name="label" translatable="yes">Ver_bose</property>
                                         <property name="visible">True</property>
                                         <property name="can_focus">True</property>
-                                        <property name="adjustment">adjustment2</property>
-                                        <property name="digits">0</property>
-                                        <property name="value_pos">right</property>
-                                        <accelerator key="r" signal="grab_focus" modifiers="GDK_MOD1_MASK"/>
-                                        <signal name="value_changed" handler="rateValueChanged"/>
+                                        <property name="receives_default">False</property>
+                                        <property name="use_action_appearance">False</property>
+                                        <property name="use_underline">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="draw_indicator">True</property>
+                                        <property name="group">speechBriefButton</property>
+                                        <signal name="toggled" handler="speechVerbosityChanged" swapped="no"/>
                                       </object>
+                                      <packing>
+                                        <property name="left_attach">0</property>
+                                        <property name="top_attach">1</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
+                                      </packing>
                                     </child>
                                   </object>
-                                  <packing>
-                                    <property name="left_attach">1</property>
-                                    <property name="right_attach">2</property>
-                                  </packing>
                                 </child>
                               </object>
-                              <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">3</property>
-                                <property name="x_padding">10</property>
-                              </packing>
                             </child>
+                            <child type="label">
+                              <object class="GtkLabel" id="speechVerbosityLabel">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Verbosity&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">0</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkFrame" id="tableRowsFrame">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">none</property>
                             <child>
-                              <object class="GtkTable" id="comboBoxTable">
+                              <object class="GtkAlignment" id="tableRowsAlignment">
                                 <property name="visible">True</property>
-                                <property name="n_rows">4</property>
-                                <property name="n_columns">2</property>
-                                <property name="column_spacing">10</property>
-                                <child>
-                                  <object class="GtkLabel" id="speechSystemsLabel">
-                                    <property name="visible">True</property>
-                                    <property name="xalign">1</property>
-                                    <property name="label" translatable="yes">Speech _system:</property>
-                                    <property name="use_underline">True</property>
-                                    <property name="justify">right</property>
-                                    <property name="mnemonic_widget">speechSystems</property>
-                                    <accessibility>
-                                      <relation type="label-for" target="speechSystems"/>
-                                    </accessibility>
-                                  </object>
-                                  <packing>
-                                    <property name="x_options">GTK_FILL</property>
-                                    <property name="y_options"></property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkComboBox" id="speechSystems">
-                                    <property name="visible">True</property>
-                                    <signal name="changed" handler="speechSystemsChanged"/>
-                                  </object>
-                                  <packing>
-                                    <property name="left_attach">1</property>
-                                    <property name="right_attach">2</property>
-                                    <property name="x_options">GTK_FILL</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkLabel" id="speechServersLabel">
-                                    <property name="visible">True</property>
-                                    <property name="xalign">1</property>
-                                    <property name="label" translatable="yes">Speech synthesi_zer:</property>
-                                    <property name="use_underline">True</property>
-                                    <property name="justify">right</property>
-                                    <property name="mnemonic_widget">speechServers</property>
-                                    <accessibility>
-                                      <relation type="label-for" target="speechServers"/>
-                                    </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="GtkComboBox" id="speechServers">
-                                    <property name="visible">True</property>
-                                    <signal name="changed" handler="speechServersChanged"/>
-                                  </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="y_options">GTK_FILL</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkLabel" id="voiceSettingsLabel">
-                                    <property name="visible">True</property>
-                                    <property name="xalign">1</property>
-                                    <property name="label" translatable="yes">_Voice settings:</property>
-                                    <property name="use_underline">True</property>
-                                    <property name="justify">right</property>
-                                    <property name="mnemonic_widget">voiceTypes</property>
-                                    <accessibility>
-                                      <relation type="label-for" target="voiceTypes"/>
-                                    </accessibility>
-                                  </object>
-                                  <packing>
-                                    <property name="top_attach">2</property>
-                                    <property name="bottom_attach">3</property>
-                                    <property name="x_options">GTK_FILL</property>
-                                    <property name="y_options"></property>
-                                  </packing>
-                                </child>
+                                <property name="can_focus">False</property>
+                                <property name="left_padding">12</property>
                                 <child>
-                                  <object class="GtkComboBox" id="voiceTypes">
+                                  <object class="GtkGrid" id="tableRowsGrid">
                                     <property name="visible">True</property>
-                                    <property name="model">model1</property>
-                                    <signal name="changed" handler="voiceTypesChanged"/>
+                                    <property name="can_focus">False</property>
                                     <child>
-                                      <object class="GtkCellRendererText" id="renderer1"/>
-                                      <attributes>
-                                        <attribute name="text">0</attribute>
-                                      </attributes>
+                                      <object class="GtkRadioButton" id="cellSpeechButton">
+                                        <property name="label" translatable="yes" comments="Translators: This is one of two options available in the Preferences dialog for the Table Rows setting. If chosen, Orca will speak just the new cell when the user arrows Up or Down in a table.">Speak _cell</property>
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="use_action_appearance">False</property>
+                                        <property name="use_underline">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="active">True</property>
+                                        <property name="draw_indicator">True</property>
+                                        <signal name="toggled" handler="tableSpeechChanged" swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">0</property>
+                                        <property name="top_attach">0</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="rowSpeechButton">
+                                        <property name="label" translatable="yes" comments="Translators: This is one of two options available in the Preferences dialog for the Table Rows setting. If chosen, Orca will speak the entire row when the user arrows Up or Down in a table.">Speak ro_w</property>
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="use_action_appearance">False</property>
+                                        <property name="use_underline">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="draw_indicator">True</property>
+                                        <property name="group">cellSpeechButton</property>
+                                        <signal name="toggled" handler="tableSpeechChanged" swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">0</property>
+                                        <property name="top_attach">1</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
+                                      </packing>
                                     </child>
                                   </object>
-                                  <packing>
-                                    <property name="left_attach">1</property>
-                                    <property name="right_attach">2</property>
-                                    <property name="top_attach">2</property>
-                                    <property name="bottom_attach">3</property>
-                                    <property name="y_options">GTK_FILL</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkLabel" id="familyLabel">
-                                    <property name="visible">True</property>
-                                    <property name="xalign">1</property>
-                                    <property name="label" translatable="yes">_Person:</property>
-                                    <property name="use_underline">True</property>
-                                    <property name="justify">right</property>
-                                    <property name="mnemonic_widget">speechFamilies</property>
-                                    <accessibility>
-                                      <relation type="label-for" target="speechFamilies"/>
-                                    </accessibility>
-                                  </object>
-                                  <packing>
-                                    <property name="top_attach">3</property>
-                                    <property name="bottom_attach">4</property>
-                                    <property name="x_options">GTK_FILL</property>
-                                    <property name="y_options"></property>
-                                  </packing>
                                 </child>
+                              </object>
+                            </child>
+                            <child type="label">
+                              <object class="GtkLabel" id="tableRowsLabel">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes" comments="Translators: This is label in the Preferences dialog box. It refers to what Orca will speak when the user arrows Up or Down in a table. The choices are to speak just the new cell or to speak the entire row.">&lt;b&gt;Table Rows&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">1</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkFrame" id="punctuationLevelFrame">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">none</property>
+                            <child>
+                              <object class="GtkAlignment" id="punctuationLevelAlignment">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="left_padding">12</property>
                                 <child>
-                                  <object class="GtkComboBox" id="speechFamilies">
+                                  <object class="GtkGrid" id="punctuationLevelGrid">
                                     <property name="visible">True</property>
-                                    <signal name="changed" handler="speechFamiliesChanged"/>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkRadioButton" id="noneButton">
+                                        <property name="label" translatable="yes" context="punctuation level" comments="Translators: this refers to how much punctuation will be spoken by Orca when presenting text on the screen.">_None</property>
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="use_action_appearance">False</property>
+                                        <property name="use_underline">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="active">True</property>
+                                        <property name="draw_indicator">True</property>
+                                        <signal name="toggled" handler="punctuationLevelChanged" swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">0</property>
+                                        <property name="top_attach">0</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="someButton">
+                                        <property name="label" translatable="yes">So_me</property>
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="use_action_appearance">False</property>
+                                        <property name="use_underline">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="draw_indicator">True</property>
+                                        <property name="group">noneButton</property>
+                                        <signal name="toggled" handler="punctuationLevelChanged" swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">0</property>
+                                        <property name="top_attach">1</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="mostButton">
+                                        <property name="label" translatable="yes">M_ost</property>
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="use_action_appearance">False</property>
+                                        <property name="use_underline">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="draw_indicator">True</property>
+                                        <property name="group">noneButton</property>
+                                        <signal name="toggled" handler="punctuationLevelChanged" swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">0</property>
+                                        <property name="top_attach">2</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" id="allButton">
+                                        <property name="label" translatable="yes">_All</property>
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="use_action_appearance">False</property>
+                                        <property name="use_underline">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="draw_indicator">True</property>
+                                        <property name="group">noneButton</property>
+                                        <signal name="toggled" handler="punctuationLevelChanged" swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">0</property>
+                                        <property name="top_attach">3</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
+                                      </packing>
+                                    </child>
                                   </object>
-                                  <packing>
-                                    <property name="left_attach">1</property>
-                                    <property name="right_attach">2</property>
-                                    <property name="top_attach">3</property>
-                                    <property name="bottom_attach">4</property>
-                                    <property name="x_options">GTK_FILL</property>
-                                    <property name="y_options">GTK_FILL</property>
-                                  </packing>
                                 </child>
                               </object>
-                              <packing>
-                                <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"></property>
-                                <property name="y_padding">5</property>
-                              </packing>
                             </child>
+                            <child type="label">
+                              <object class="GtkLabel" id="punctuationLabel">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Punctuation Level&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">2</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                        <property name="width">1</property>
+                        <property name="height">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkGrid" id="speechContextGrid">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="row_spacing">20</property>
+                        <property name="column_spacing">10</property>
+                        <child>
+                          <object class="GtkFrame" id="spokenContextFrame">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">none</property>
                             <child>
-                              <object class="GtkHBox" id="hbox35">
+                              <object class="GtkAlignment" id="spokenContextAlignment">
                                 <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="left_padding">12</property>
                                 <child>
-                                  <object class="GtkAlignment" id="alignment34">
+                                  <object class="GtkGrid" id="spokenContextGrid">
                                     <property name="visible">True</property>
-                                    <property name="top_padding">12</property>
+                                    <property name="can_focus">False</property>
                                     <child>
-                                      <object class="GtkFrame" id="frame5">
+                                      <object class="GtkCheckButton" id="onlySpeakDisplayedTextCheckButton">
+                                        <property name="label" translatable="yes" comments="Translators: If this setting is enabled, Orca will only speak text which is actually displayed on the screen. It will NOT speak things like the role of an item (e.g. 'checkbox') or its state (e.g. 'not checked') or say 'mispelled' to indicate the presence of red squiggly spelling error lines -- things which Orca normally speaks. This setting is primarily intended for low vision users and sighted users with a learning disability.">Only speak displayed text</property>
                                         <property name="visible">True</property>
-                                        <property name="label_xalign">0</property>
-                                        <property name="shadow_type">none</property>
-                                        <child>
-                                          <object class="GtkAlignment" id="alignment32">
-                                            <property name="visible">True</property>
-                                            <property name="left_padding">12</property>
-                                            <child>
-                                              <object class="GtkTable" id="radioButtonTable">
-                                                <property name="visible">True</property>
-                                                <property name="n_rows">2</property>
-                                                <property name="n_columns">2</property>
-                                                <child>
-                                                  <object class="GtkRadioButton" id="noneButton">
-                                                    <property name="label" translatable="yes" context="punctuation level" comments="Translators: this refers to how much punctuation will be spoken by Orca when presenting text on the screen.">_None</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>
-                                                    <signal name="toggled" handler="punctuationLevelChanged"/>
-                                                  </object>
-                                                  <packing>
-                                                    <property name="y_options"></property>
-                                                  </packing>
-                                                </child>
-                                                <child>
-                                                  <object class="GtkRadioButton" id="someButton">
-                                                    <property name="label" translatable="yes">So_me</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">noneButton</property>
-                                                    <signal name="toggled" handler="punctuationLevelChanged"/>
-                                                  </object>
-                                                  <packing>
-                                                    <property name="top_attach">1</property>
-                                                    <property name="bottom_attach">2</property>
-                                                    <property name="y_options"></property>
-                                                  </packing>
-                                                </child>
-                                                <child>
-                                                  <object class="GtkRadioButton" id="mostButton">
-                                                    <property name="label" translatable="yes">M_ost</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">noneButton</property>
-                                                    <signal name="toggled" handler="punctuationLevelChanged"/>
-                                                  </object>
-                                                  <packing>
-                                                    <property name="left_attach">1</property>
-                                                    <property name="right_attach">2</property>
-                                                    <property name="y_options"></property>
-                                                  </packing>
-                                                </child>
-                                                <child>
-                                                  <object class="GtkRadioButton" id="allButton">
-                                                    <property name="label" translatable="yes">_All</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">noneButton</property>
-                                                    <signal name="toggled" handler="punctuationLevelChanged"/>
-                                                  </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="y_options"></property>
-                                                  </packing>
-                                                </child>
-                                              </object>
-                                            </child>
-                                          </object>
-                                        </child>
-                                        <child type="label">
-                                          <object class="GtkLabel" id="punctuationLabel">
-                                            <property name="visible">True</property>
-                                            <property name="label" translatable="yes">&lt;b&gt;Punctuation Level&lt;/b&gt;</property>
-                                            <property name="use_markup">True</property>
-                                          </object>
-                                        </child>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="use_action_appearance">False</property>
+                                        <property name="use_underline">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="active">True</property>
+                                        <property name="draw_indicator">True</property>
+                                        <signal name="toggled" handler="onlySpeakDisplayedTextToggled" swapped="no"/>
                                       </object>
+                                      <packing>
+                                        <property name="left_attach">0</property>
+                                        <property name="top_attach">0</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
+                                      </packing>
                                     </child>
-                                  </object>
-                                  <packing>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkAlignment" id="alignment35">
-                                    <property name="visible">True</property>
-                                    <property name="top_padding">12</property>
                                     <child>
-                                      <object class="GtkFrame" id="frame6">
+                                      <object class="GtkGrid" id="contextOptionsGrid">
                                         <property name="visible">True</property>
-                                        <property name="label_xalign">0</property>
-                                        <property name="shadow_type">none</property>
+                                        <property name="can_focus">False</property>
                                         <child>
-                                          <object class="GtkAlignment" id="alignment33">
-                                            <property name="visible">True</property>
-                                            <property name="left_padding">12</property>
-                                            <child>
-                                              <object class="GtkVBox" id="vbox17">
-                                                <property name="visible">True</property>
-                                                <property name="border_width">3</property>
-                                                <child>
-                                                  <object class="GtkRadioButton" id="speechBriefButton">
-                                                    <property name="label" translatable="yes">Brie_f</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>
-                                                    <signal name="toggled" handler="speechVerbosityChanged"/>
-                                                  </object>
-                                                  <packing>
-                                                    <property name="expand">False</property>
-                                                    <property name="fill">False</property>
-                                                    <property name="position">0</property>
-                                                  </packing>
-                                                </child>
-                                                <child>
-                                                  <object class="GtkRadioButton" id="speechVerboseButton">
-                                                    <property name="label" translatable="yes">Ver_bose</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">speechBriefButton</property>
-                                                    <signal name="toggled" handler="speechVerbosityChanged"/>
-                                                  </object>
-                                                  <packing>
-                                                    <property name="expand">False</property>
-                                                    <property name="fill">False</property>
-                                                    <property name="position">1</property>
-                                                  </packing>
-                                                </child>
-                                              </object>
-                                            </child>
-                                          </object>
-                                        </child>
-                                        <child type="label">
-                                          <object class="GtkLabel" id="speechVerbosityLabel">
+                                          <object class="GtkCheckButton" id="speakBlankLinesCheckButton">
+                                            <property name="label" translatable="yes">Speak blank lines</property>
                                             <property name="visible">True</property>
-                                            <property name="label" translatable="yes">&lt;b&gt;Verbosity&lt;/b&gt;</property>
-                                            <property name="use_markup">True</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="receives_default">False</property>
+                                            <property name="use_action_appearance">False</property>
+                                            <property name="use_underline">True</property>
+                                            <property name="xalign">0</property>
+                                            <property name="active">True</property>
+                                            <property name="draw_indicator">True</property>
+                                            <signal name="toggled" handler="checkButtonToggled" swapped="no"/>
                                           </object>
+                                          <packing>
+                                            <property name="left_attach">0</property>
+                                            <property name="top_attach">0</property>
+                                            <property name="width">1</property>
+                                            <property name="height">1</property>
+                                          </packing>
                                         </child>
-                                      </object>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkAlignment" id="alignment45">
-                                    <property name="visible">True</property>
-                                    <property name="top_padding">12</property>
-                                    <child>
-                                      <object class="GtkFrame" id="frame8">
-                                        <property name="visible">True</property>
-                                        <property name="label_xalign">0</property>
-                                        <property name="shadow_type">none</property>
                                         <child>
-                                          <object class="GtkAlignment" id="alignment46">
+                                          <object class="GtkCheckButton" id="enableSpeechIndentationCheckButton">
+                                            <property name="label" translatable="yes">Speak _indentation and justification</property>
                                             <property name="visible">True</property>
-                                            <property name="left_padding">12</property>
-                                            <child>
-                                              <object class="GtkVBox" id="vbox21">
-                                                <property name="visible">True</property>
-                                                <property name="border_width">3</property>
-                                                <child>
-                                                  <object class="GtkRadioButton" id="cellSpeechButton">
-                                                    <property name="label" translatable="yes" comments="Translators: This is one of two options available in the Preferences dialog for the Table Rows setting. If chosen, Orca will speak just the new cell when the user arrows Up or Down in a table.">Speak _cell</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>
-                                                    <signal name="toggled" handler="tableSpeechChanged"/>
-                                                  </object>
-                                                  <packing>
-                                                    <property name="expand">False</property>
-                                                    <property name="fill">False</property>
-                                                    <property name="position">0</property>
-                                                  </packing>
-                                                </child>
-                                                <child>
-                                                  <object class="GtkRadioButton" id="rowSpeechButton">
-                                                    <property name="label" translatable="yes" comments="Translators: This is one of two options available in the Preferences dialog for the Table Rows setting. If chosen, Orca will speak the entire row when the user arrows Up or Down in a table.">Speak ro_w</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">cellSpeechButton</property>
-                                                    <signal name="toggled" handler="tableSpeechChanged"/>
-                                                  </object>
-                                                  <packing>
-                                                    <property name="expand">False</property>
-                                                    <property name="fill">False</property>
-                                                    <property name="position">1</property>
-                                                  </packing>
-                                                </child>
-                                              </object>
-                                            </child>
+                                            <property name="can_focus">True</property>
+                                            <property name="receives_default">False</property>
+                                            <property name="use_action_appearance">False</property>
+                                            <property name="use_underline">True</property>
+                                            <property name="xalign">0</property>
+                                            <property name="draw_indicator">True</property>
+                                            <signal name="toggled" handler="checkButtonToggled" swapped="no"/>
                                           </object>
+                                          <packing>
+                                            <property name="left_attach">0</property>
+                                            <property name="top_attach">1</property>
+                                            <property name="width">1</property>
+                                            <property name="height">1</property>
+                                          </packing>
                                         </child>
-                                        <child type="label">
-                                          <object class="GtkLabel" id="label24">
+                                        <child>
+                                          <object class="GtkCheckButton" id="enableMnemonicSpeakingCheckButton">
+                                            <property name="label" translatable="yes">Spea_k object mnemonics</property>
                                             <property name="visible">True</property>
-                                            <property name="label" translatable="yes" comments="Translators: This is label in the Preferences dialog box. It refers to what Orca will speak when the user arrows Up or Down in a table. The choices are to speak just the new cell or to speak the entire row.">&lt;b&gt;Table Rows&lt;/b&gt;</property>
-                                            <property name="use_markup">True</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="receives_default">False</property>
+                                            <property name="use_action_appearance">False</property>
+                                            <property name="use_underline">True</property>
+                                            <property name="xalign">0</property>
+                                            <property name="active">True</property>
+                                            <property name="draw_indicator">True</property>
+                                            <signal name="toggled" handler="checkButtonToggled" swapped="no"/>
                                           </object>
+                                          <packing>
+                                            <property name="left_attach">0</property>
+                                            <property name="top_attach">2</property>
+                                            <property name="width">1</property>
+                                            <property name="height">1</property>
+                                          </packing>
                                         </child>
-                                      </object>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkAlignment" id="alignment1">
-                                    <property name="visible">True</property>
-                                    <property name="top_padding">12</property>
-                                    <child>
-                                      <object class="GtkFrame" id="frame1">
-                                        <property name="visible">True</property>
-                                        <property name="label_xalign">0</property>
-                                        <property name="shadow_type">none</property>
                                         <child>
-                                          <object class="GtkAlignment" id="alignment2">
+                                          <object class="GtkCheckButton" id="enablePositionSpeakingCheckButton">
+                                            <property name="label" translatable="yes" comments="Translators: This checkbox toggles whether or not Orca says the child position (e.g., 'item 6 of 7').">Speak child p_osition</property>
                                             <property name="visible">True</property>
-                                            <property name="yalign">0</property>
-                                            <property name="left_padding">12</property>
-                                            <child>
-                                              <object class="GtkHBox" id="hbox1">
-                                                <property name="visible">True</property>
-                                                <child>
-                                                  <object class="GtkAlignment" id="alignment3">
-                                                    <property name="visible">True</property>
-                                                    <property name="yalign">0</property>
-                                                    <property name="yscale">0</property>
-                                                    <property name="top_padding">3</property>
-                                                    <child>
-                                                      <object class="GtkCheckButton" id="speechProgressBarCheckButton">
-                                                        <property name="label" translatable="yes" context="ProgressBarUpdates" comments="Translators: This is an option in the Preferences dialog box related to the speaking of progress bar information. If checked, Orca will speak progress bar information.">Enable_d</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="xalign">0</property>
-                                                        <property name="yalign">0</property>
-                                                        <property name="active">True</property>
-                                                        <property name="draw_indicator">True</property>
-                                                        <signal name="toggled" handler="speechProgressBarChecked"/>
-                                                      </object>
-                                                    </child>
-                                                  </object>
-                                                  <packing>
-                                                    <property name="position">0</property>
-                                                  </packing>
-                                                </child>
-                                                <child>
-                                                  <object class="GtkVBox" id="progressBarVBox">
-                                                    <property name="visible">True</property>
-                                                    <child>
-                                                      <object class="GtkHBox" id="speakUpdateIntervalHBox">
-                                                        <property name="visible">True</property>
-                                                        <property name="spacing">3</property>
-                                                        <child>
-                                                          <object class="GtkLabel" id="speakProgressBarLabel">
-                                                            <property name="visible">True</property>
-                                                            <property name="label" translatable="yes" context="ProgressBar" comments="Translators: Here this is a label for a spin button through which a user can customize the frequency in seconds an announcement should be made regarding the current value of a progress bar.">Frequency (secs):</property>
-                                                            <property name="use_underline">True</property>
-                                                            <property name="mnemonic_widget">speakProgressBarSpinButton</property>
-                                                            <accessibility>
-                                                            <relation type="label-for" target="speakProgressBarSpinButton"/>
-                                                            </accessibility>
-                                                          </object>
-                                                          <packing>
-                                                            <property name="expand">False</property>
-                                                            <property name="fill">False</property>
-                                                            <property name="position">0</property>
-                                                          </packing>
-                                                        </child>
-                                                        <child>
-                                                          <object class="GtkSpinButton" id="speakProgressBarSpinButton">
-                                                            <property name="visible">True</property>
-                                                            <property name="can_focus">True</property>
-                                                            <property name="invisible_char">&#x25CF;</property>
-                                                            <property name="adjustment">adjustment4</property>
-                                                            <property name="climb_rate">1</property>
-                                                            <property name="numeric">True</property>
-                                                            <accessibility>
-                                                            <relation type="labelled-by" target="speakProgressBarLabel"/>
-                                                            </accessibility>
-                                                            <signal name="value_changed" handler="speakProgressBarValueChanged"/>
-                                                          </object>
-                                                          <packing>
-                                                            <property name="expand">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="progressBarVerbosityHBox">
-                                                        <property name="visible">True</property>
-                                                        <child>
-                                                          <object class="GtkLabel" id="progressBarVerbosityLabel">
-                                                            <property name="visible">True</property>
-                                                            <property name="label" translatable="yes" comments="Translators: Orca has a setting which determines which progress bar updates should be announced. The options are all progress bars, only progress bars in the active application, or only progress bars in the current window.">Restrict to:</property>
-                                                            <accessibility>
-                                                            <relation type="label-for" target="progressBarVerbosity"/>
-                                                            </accessibility>
-                                                          </object>
-                                                          <packing>
-                                                            <property name="expand">False</property>
-                                                            <property name="position">0</property>
-                                                          </packing>
-                                                        </child>
-                                                        <child>
-                                                          <object class="GtkComboBox" id="progressBarVerbosity">
-                                                            <property name="visible">True</property>
-                                                            <property name="model">model7</property>
-                                                            <accessibility>
-                                                            <relation type="labelled-by" target="progressBarVerbosityLabel"/>
-                                                            </accessibility>
-                                                            <signal name="changed" handler="progressBarVerbosityChanged"/>
-                                                            <child>
-                                                            <object class="GtkCellRendererText" id="renderer33"/>
-                                                            <attributes>
-                                                            <attribute name="text">0</attribute>
-                                                            </attributes>
-                                                            </child>
-                                                          </object>
-                                                          <packing>
-                                                            <property name="expand">False</property>
-                                                            <property name="fill">False</property>
-                                                            <property name="padding">3</property>
-                                                            <property name="position">1</property>
-                                                          </packing>
-                                                        </child>
-                                                      </object>
-                                                      <packing>
-                                                        <property name="position">1</property>
-                                                      </packing>
-                                                    </child>
-                                                  </object>
-                                                  <packing>
-                                                    <property name="position">1</property>
-                                                  </packing>
-                                                </child>
-                                              </object>
-                                            </child>
+                                            <property name="can_focus">True</property>
+                                            <property name="receives_default">False</property>
+                                            <property name="use_action_appearance">False</property>
+                                            <property name="use_underline">True</property>
+                                            <property name="xalign">0</property>
+                                            <property name="active">True</property>
+                                            <property name="draw_indicator">True</property>
+                                            <signal name="toggled" handler="checkButtonToggled" swapped="no"/>
                                           </object>
+                                          <packing>
+                                            <property name="left_attach">0</property>
+                                            <property name="top_attach">3</property>
+                                            <property name="width">1</property>
+                                            <property name="height">1</property>
+                                          </packing>
                                         </child>
-                                        <child type="label">
-                                          <object class="GtkLabel" id="label1">
+                                        <child>
+                                          <object class="GtkCheckButton" id="enableTutorialMessagesCheckButton">
+                                            <property name="label" translatable="yes">Speak tutorial messages</property>
                                             <property name="visible">True</property>
-                                            <property name="label" translatable="yes" comments="Translators: This is a label in the Preferences dialog box. It applies to several options related to which progress bars Orca should speak and how often Orca should speak them.">&lt;b&gt;Progress Bar Updates&lt;/b&gt;</property>
-                                            <property name="use_markup">True</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="receives_default">False</property>
+                                            <property name="use_action_appearance">False</property>
+                                            <property name="use_underline">True</property>
+                                            <property name="xalign">0</property>
+                                            <property name="active">True</property>
+                                            <property name="draw_indicator">True</property>
+                                            <signal name="toggled" handler="checkButtonToggled" swapped="no"/>
                                           </object>
+                                          <packing>
+                                            <property name="left_attach">0</property>
+                                            <property name="top_attach">4</property>
+                                            <property name="width">1</property>
+                                            <property name="height">1</property>
+                                          </packing>
                                         </child>
                                       </object>
+                                      <packing>
+                                        <property name="left_attach">0</property>
+                                        <property name="top_attach">1</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
+                                      </packing>
                                     </child>
                                   </object>
-                                  <packing>
-                                    <property name="position">3</property>
-                                  </packing>
                                 </child>
                               </object>
-                              <packing>
-                                <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">GTK_FILL</property>
-                                <property name="y_padding">3</property>
-                              </packing>
+                            </child>
+                            <child type="label">
+                              <object class="GtkLabel" id="spokenContextLabel">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Spoken Context&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>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">0</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkHBox" id="checkboxHBox">
+                          <object class="GtkFrame" id="progressBarUpdatesFrame">
                             <property name="visible">True</property>
-                            <property name="homogeneous">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label_xalign">0</property>
+                            <property name="shadow_type">none</property>
                             <child>
-                              <object class="GtkVBox" id="vbox1">
+                              <object class="GtkAlignment" id="progressBarUpdatesAlignment">
                                 <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="yalign">0</property>
+                                <property name="left_padding">12</property>
                                 <child>
-                                  <object class="GtkCheckButton" id="onlySpeakDisplayedTextCheckButton">
-                                    <property name="label" translatable="yes" comments="Translators: If this setting is enabled, Orca will only speak text which is actually displayed on the screen. It will NOT speak things like the role of an item (e.g. 'checkbox') or its state (e.g. 'not checked') or say 'mispelled' to indicate the presence of red squiggly spelling error lines -- things which Orca normally speaks. This setting is primarily intended for low vision users and sighted users with a learning disability.">Only speak displayed text</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>
-                                    <signal name="toggled" handler="onlySpeakDisplayedTextToggled"/>
-                                  </object>
-                                  <packing>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkCheckButton" id="speakMultiCaseStringsAsWordsCheckButton">
-                                    <property name="label" translatable="yes" comments="Translators: multicase strings are StringsWithWordsMashedTogetherLikeThis.">Speak multicase strings as wor_ds</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>
-                                    <signal name="toggled" handler="checkButtonToggled"/>
-                                  </object>
-                                  <packing>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkCheckButton" id="enablePauseBreaksCheckButton">
-                                    <property name="label" translatable="yes" comments="Translators: different speech systems and speech engines work differently when it comes to handling pauses (e.g., sentence boundaries).  This property allows the user to specify whether speech should be sent to the speech synthesis system immediately when a pause directive is enountered or if it should be queued up and sent to the speech synthesis system once the entire set of utterances has been calculated.">Break speech into ch_unks between pauses</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>
-                                    <signal name="toggled" handler="checkButtonToggled"/>
-                                  </object>
-                                  <packing>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" id="hbox39">
+                                  <object class="GtkGrid" id="progressBarUpdatesGrid">
                                     <property name="visible">True</property>
-                                    <property name="spacing">3</property>
+                                    <property name="can_focus">False</property>
                                     <child>
-                                      <object class="GtkLabel" id="sayAllLabel">
+                                      <object class="GtkCheckButton" id="speechProgressBarCheckButton">
+                                        <property name="label" translatable="yes" context="ProgressBarUpdates" comments="Translators: This is an option in the Preferences dialog box related to the speaking of progress bar information. If checked, Orca will speak progress bar information.">Enable_d</property>
                                         <property name="visible">True</property>
-                                        <property name="label" translatable="yes" comments="Translators: Say all by refers to the way that Orca will say (speak) an amount of text -- in particular, where Orca where insert pauses. There are currently two choices (supplied by a combo box to the right of this label): say all by sentence and  say all by line.  If Orca were speaking a work of fiction, it's probably best to do say all by sentence so it sound more natural. If Orca were speaking something like a page of computer commands, doing a say all by line would work better.">Say All B_y:</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="valign">start</property>
+                                        <property name="hexpand">True</property>
+                                        <property name="use_action_appearance">False</property>
                                         <property name="use_underline">True</property>
-                                        <property name="mnemonic_widget">sayAllStyle</property>
-                                        <accessibility>
-                                          <relation type="label-for" target="sayAllStyle"/>
-                                        </accessibility>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">0</property>
+                                        <property name="active">True</property>
+                                        <property name="draw_indicator">True</property>
+                                        <signal name="toggled" handler="speechProgressBarChecked" swapped="no"/>
                                       </object>
                                       <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
+                                        <property name="left_attach">0</property>
+                                        <property name="top_attach">0</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
                                       </packing>
                                     </child>
                                     <child>
-                                      <object class="GtkComboBox" id="sayAllStyle">
+                                      <object class="GtkGrid" id="progressBarUpdatesOptionsGrid">
                                         <property name="visible">True</property>
-                                        <property name="model">model2</property>
-                                        <accessibility>
-                                          <relation type="labelled-by" target="sayAllLabel"/>
-                                        </accessibility>
-                                        <signal name="changed" handler="sayAllStyleChanged"/>
+                                        <property name="can_focus">False</property>
+                                        <child>
+                                          <object class="GtkLabel" id="speakProgressBarLabel">
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">False</property>
+                                            <property name="xalign">0</property>
+                                            <property name="label" translatable="yes" context="ProgressBar" comments="Translators: Here this is a label for a spin button through which a user can customize the frequency in seconds an announcement should be made regarding the current value of a progress bar.">Frequency (secs):</property>
+                                            <property name="use_underline">True</property>
+                                            <property name="mnemonic_widget">speakProgressBarSpinButton</property>
+                                          </object>
+                                          <packing>
+                                            <property name="left_attach">0</property>
+                                            <property name="top_attach">0</property>
+                                            <property name="width">1</property>
+                                            <property name="height">1</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkLabel" id="progressBarVerbosityLabel">
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">False</property>
+                                            <property name="xalign">0</property>
+                                            <property name="label" translatable="yes" comments="Translators: Orca has a setting which determines which progress bar updates should be announced. The options are all progress bars, only progress bars in the active application, or only progress bars in the current window.">Restrict to:</property>
+                                            <property name="use_underline">True</property>
+                                            <property name="mnemonic_widget">progressBarVerbosity</property>
+                                          </object>
+                                          <packing>
+                                            <property name="left_attach">0</property>
+                                            <property name="top_attach">1</property>
+                                            <property name="width">1</property>
+                                            <property name="height">1</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkComboBox" id="progressBarVerbosity">
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">False</property>
+                                            <property name="model">model7</property>
+                                            <signal name="changed" handler="progressBarVerbosityChanged" swapped="no"/>
+                                            <child>
+                                              <object class="GtkCellRendererText" id="renderer33"/>
+                                              <attributes>
+                                                <attribute name="text">0</attribute>
+                                              </attributes>
+                                            </child>
+                                          </object>
+                                          <packing>
+                                            <property name="left_attach">1</property>
+                                            <property name="top_attach">1</property>
+                                            <property name="width">1</property>
+                                            <property name="height">1</property>
+                                          </packing>
+                                        </child>
                                         <child>
-                                          <object class="GtkCellRendererText" id="renderer2"/>
-                                          <attributes>
-                                            <attribute name="text">0</attribute>
-                                          </attributes>
+                                          <object class="GtkSpinButton" id="speakProgressBarSpinButton">
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="invisible_char">â</property>
+                                            <property name="invisible_char_set">True</property>
+                                            <property name="adjustment">adjustment4</property>
+                                            <property name="climb_rate">1</property>
+                                            <property name="numeric">True</property>
+                                            <property name="editable">True</property>
+                                            <signal name="value-changed" handler="speakProgressBarValueChanged" swapped="no"/>
+                                          </object>
+                                          <packing>
+                                            <property name="left_attach">1</property>
+                                            <property name="top_attach">0</property>
+                                            <property name="width">1</property>
+                                            <property name="height">1</property>
+                                          </packing>
                                         </child>
                                       </object>
                                       <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">3</property>
-                                        <property name="position">1</property>
+                                        <property name="left_attach">0</property>
+                                        <property name="top_attach">1</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
                                       </packing>
                                     </child>
                                   </object>
-                                  <packing>
-                                    <property name="position">3</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <placeholder/>
                                 </child>
                               </object>
-                              <packing>
-                                <property name="position">0</property>
-                              </packing>
                             </child>
+                            <child type="label">
+                              <object class="GtkLabel" id="progressBarUpdatesLabel">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes" comments="Translators: This is a label in the Preferences dialog box. It applies to several options related to which progress bars Orca should speak and how often Orca should speak them.">&lt;b&gt;Progress Bar Updates&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">1</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                        <property name="width">1</property>
+                        <property name="height">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="speechTabLabel">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Speech</property>
+              </object>
+              <packing>
+                <property name="position">2</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkGrid" id="brailleGrid">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="border_width">12</property>
+                <property name="row_spacing">10</property>
+                <property name="column_spacing">10</property>
+                <child>
+                  <object class="GtkGrid" id="brailleSupportGrid">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkCheckButton" id="enableBrailleCheckButton">
+                        <property name="label" translatable="yes">Enable Braille _support</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="xalign">0</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
+                        <signal name="toggled" handler="checkButtonToggled" swapped="no"/>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                        <property name="width">1</property>
+                        <property name="height">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" id="enableBrailleMonitorCheckButton">
+                        <property name="label" translatable="yes">Enable Braille _monitor</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="xalign">0</property>
+                        <property name="draw_indicator">True</property>
+                        <signal name="toggled" handler="checkButtonToggled" swapped="no"/>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">1</property>
+                        <property name="width">1</property>
+                        <property name="height">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkGrid" id="brailleOptionsGrid">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="row_spacing">10</property>
+                    <property name="column_spacing">10</property>
+                    <child>
+                      <object class="GtkFrame" id="displaySettingsFrame">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">none</property>
+                        <child>
+                          <object class="GtkAlignment" id="displaySettingsAlignment">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="left_padding">12</property>
                             <child>
-                              <object class="GtkVBox" id="speechContextVBox">
+                              <object class="GtkGrid" id="displaySettingsGrid">
                                 <property name="visible">True</property>
+                                <property name="can_focus">False</property>
                                 <child>
-                                  <object class="GtkCheckButton" id="speakBlankLinesCheckButton">
-                                    <property name="label" translatable="yes">Speak blank lines</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>
-                                    <signal name="toggled" handler="checkButtonToggled"/>
-                                  </object>
-                                  <packing>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkCheckButton" id="enableSpeechIndentationCheckButton">
-                                    <property name="label" translatable="yes">Speak _indentation and justification</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="checkButtonToggled"/>
-                                  </object>
-                                  <packing>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkCheckButton" id="enableMnemonicSpeakingCheckButton">
-                                    <property name="label" translatable="yes">Spea_k object mnemonics</property>
+                                  <object class="GtkCheckButton" id="abbrevRolenames">
+                                    <property name="label" translatable="yes">_Abbreviated role names</property>
                                     <property name="visible">True</property>
                                     <property name="can_focus">True</property>
                                     <property name="receives_default">False</property>
+                                    <property name="use_action_appearance">False</property>
                                     <property name="use_underline">True</property>
-                                    <property name="active">True</property>
+                                    <property name="xalign">0</property>
                                     <property name="draw_indicator">True</property>
-                                    <signal name="toggled" handler="checkButtonToggled"/>
+                                    <signal name="toggled" handler="abbrevRolenamesChecked" swapped="no"/>
                                   </object>
                                   <packing>
-                                    <property name="position">2</property>
+                                    <property name="left_attach">0</property>
+                                    <property name="top_attach">1</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
                                   </packing>
                                 </child>
                                 <child>
-                                  <object class="GtkCheckButton" id="enablePositionSpeakingCheckButton">
-                                    <property name="label" translatable="yes" comments="Translators: This checkbox toggles whether or not Orca says the child position (e.g., 'item 6 of 7').">Speak child p_osition</property>
+                                  <object class="GtkCheckButton" id="disableBrailleEOLCheckButton">
+                                    <property name="label" translatable="yes">Disable _end of line symbol</property>
                                     <property name="visible">True</property>
                                     <property name="can_focus">True</property>
                                     <property name="receives_default">False</property>
+                                    <property name="use_action_appearance">False</property>
                                     <property name="use_underline">True</property>
-                                    <property name="active">True</property>
+                                    <property name="xalign">0</property>
                                     <property name="draw_indicator">True</property>
-                                    <signal name="toggled" handler="checkButtonToggled"/>
+                                    <signal name="toggled" handler="checkButtonToggled" swapped="no"/>
                                   </object>
                                   <packing>
-                                    <property name="position">3</property>
+                                    <property name="left_attach">0</property>
+                                    <property name="top_attach">0</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
                                   </packing>
                                 </child>
                                 <child>
-                                  <object class="GtkCheckButton" id="enableTutorialMessagesCheckButton">
-                                    <property name="label" translatable="yes">Speak tutorial messages</property>
+                                  <object class="GtkCheckButton" id="contractedBrailleCheckButton">
+                                    <property name="label" translatable="yes">_Enable Contracted Braille</property>
                                     <property name="visible">True</property>
                                     <property name="can_focus">True</property>
                                     <property name="receives_default">False</property>
+                                    <property name="use_action_appearance">False</property>
                                     <property name="use_underline">True</property>
-                                    <property name="active">True</property>
+                                    <property name="xalign">0</property>
                                     <property name="draw_indicator">True</property>
-                                    <signal name="toggled" handler="checkButtonToggled"/>
+                                    <signal name="toggled" handler="contractedBrailleToggled" swapped="no"/>
                                   </object>
                                   <packing>
-                                    <property name="position">4</property>
+                                    <property name="left_attach">0</property>
+                                    <property name="top_attach">2</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
                                   </packing>
                                 </child>
-                              </object>
-                              <packing>
-                                <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="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="position">1</property>
-                    <property name="tab_fill">False</property>
-                  </packing>
-                </child>
-                <child type="tab">
-                  <object class="GtkLabel" id="speechTabLabel">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes">Speech</property>
-                  </object>
-                  <packing>
-                    <property name="position">1</property>
-                    <property name="tab_fill">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkVBox" id="brailleVbox">
-                    <property name="visible">True</property>
-                    <property name="border_width">12</property>
-                    <property name="spacing">12</property>
-                    <child>
-                      <object class="GtkTable" id="table2">
-                        <property name="visible">True</property>
-                        <property name="n_rows">2</property>
-                        <property name="n_columns">2</property>
-                        <property name="row_spacing">12</property>
-                        <child>
-                          <object class="GtkVBox" id="vbox23">
-                            <property name="visible">True</property>
-                            <child>
-                              <object class="GtkCheckButton" id="enableBrailleCheckButton">
-                                <property name="label" translatable="yes">Enable Braille _support</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>
-                                <signal name="toggled" handler="checkButtonToggled"/>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" id="enableBrailleMonitorCheckButton">
-                                <property name="label" translatable="yes">Enable Braille _monitor</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="checkButtonToggled"/>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" id="contractedBrailleCheckButton">
-                                <property name="label" translatable="yes">_Enable Contracted Braille</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="contractedBrailleToggled"/>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">2</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkAlignment" id="alignment4">
-                                <property name="visible">True</property>
-                                <property name="left_padding">20</property>
                                 <child>
-                                  <object class="GtkHBox" id="contractionTablesHBox">
+                                  <object class="GtkGrid" id="contractionTableGrid">
                                     <property name="visible">True</property>
-                                    <property name="sensitive">False</property>
-                                    <property name="spacing">3</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="row_spacing">20</property>
+                                    <property name="column_spacing">20</property>
                                     <child>
                                       <object class="GtkLabel" id="contractionTableLabel">
                                         <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="yalign">0.40999999642372131</property>
                                         <property name="label" translatable="yes">Contraction _Table:</property>
                                         <property name="use_underline">True</property>
                                         <property name="mnemonic_widget">contractionTableCombo</property>
@@ -1688,873 +2101,1078 @@
                                         </accessibility>
                                       </object>
                                       <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
+                                        <property name="left_attach">0</property>
+                                        <property name="top_attach">0</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
                                       </packing>
                                     </child>
                                     <child>
                                       <object class="GtkComboBox" id="contractionTableCombo">
                                         <property name="visible">True</property>
-                                        <accessibility>
-                                          <relation type="labelled-by" target="contractionTableLabel"/>
-                                        </accessibility>
-                                        <signal name="changed" handler="contractionTableComboChanged"/>
+                                        <property name="can_focus">False</property>
+                                        <signal name="changed" handler="contractionTableComboChanged" swapped="no"/>
                                       </object>
                                       <packing>
-                                        <property name="position">1</property>
+                                        <property name="left_attach">1</property>
+                                        <property name="top_attach">0</property>
+                                        <property name="width">1</property>
+                                        <property name="height">1</property>
                                       </packing>
                                     </child>
                                   </object>
+                                  <packing>
+                                    <property name="left_attach">0</property>
+                                    <property name="top_attach">3</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
                                 </child>
                               </object>
-                              <packing>
-                                <property name="position">3</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" id="abbrevRolenames">
-                                <property name="label" translatable="yes">_Abbreviated role names</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="abbrevRolenamesChecked"/>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">4</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" id="disableBrailleEOLCheckButton">
-                                <property name="label" translatable="yes">Disable _end of line symbol</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="checkButtonToggled"/>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">5</property>
-                              </packing>
                             </child>
                           </object>
-                          <packing>
-                            <property name="y_options"></property>
-                          </packing>
                         </child>
+                        <child type="label">
+                          <object class="GtkLabel" id="displaySettingsLabel">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Display Settings&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                        <property name="width">1</property>
+                        <property name="height">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkFrame" id="brailleVerbosityFrame">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">none</property>
                         <child>
-                          <object class="GtkFrame" id="frame7">
+                          <object class="GtkAlignment" id="brailleVerbosityAlignment">
                             <property name="visible">True</property>
-                            <property name="label_xalign">0</property>
-                            <property name="shadow_type">none</property>
+                            <property name="can_focus">False</property>
+                            <property name="left_padding">12</property>
                             <child>
-                              <object class="GtkAlignment" id="alignment36">
+                              <object class="GtkGrid" id="brailleVerbosityGrid">
                                 <property name="visible">True</property>
-                                <property name="left_padding">12</property>
+                                <property name="can_focus">False</property>
                                 <child>
-                                  <object class="GtkVBox" id="vbox18">
+                                  <object class="GtkRadioButton" id="brailleBriefButton">
+                                    <property name="label" translatable="yes">Brie_f</property>
                                     <property name="visible">True</property>
-                                    <property name="border_width">3</property>
-                                    <child>
-                                      <object class="GtkRadioButton" id="brailleBriefButton">
-                                        <property name="label" translatable="yes">Brie_f</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>
-                                        <signal name="toggled" handler="brailleVerbosityChanged"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkRadioButton" id="brailleVerboseButton">
-                                        <property name="label" translatable="yes">Ver_bose</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">brailleBriefButton</property>
-                                        <signal name="toggled" handler="brailleVerbosityChanged"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="use_action_appearance">False</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="active">True</property>
+                                    <property name="draw_indicator">True</property>
+                                    <signal name="toggled" handler="brailleVerbosityChanged" swapped="no"/>
                                   </object>
+                                  <packing>
+                                    <property name="left_attach">0</property>
+                                    <property name="top_attach">0</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkRadioButton" id="brailleVerboseButton">
+                                    <property name="label" translatable="yes">Ver_bose</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="use_action_appearance">False</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="draw_indicator">True</property>
+                                    <property name="group">brailleBriefButton</property>
+                                    <signal name="toggled" handler="brailleVerbosityChanged" swapped="no"/>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">0</property>
+                                    <property name="top_attach">1</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
                                 </child>
-                              </object>
-                            </child>
-                            <child type="label">
-                              <object class="GtkLabel" id="brailleVerbosityLabel">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">&lt;b&gt;Verbosity&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>
-                          </packing>
                         </child>
+                        <child type="label">
+                          <object class="GtkLabel" id="brailleVerbosityLabel">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Verbosity&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">1</property>
+                        <property name="width">1</property>
+                        <property name="height">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkFrame" id="brailleSelectionFrame">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">none</property>
                         <child>
-                          <object class="GtkFrame" id="brailleSelectionFrame">
+                          <object class="GtkAlignment" id="brailleSelectionAlignment">
                             <property name="visible">True</property>
-                            <property name="label_xalign">0</property>
-                            <property name="shadow_type">none</property>
+                            <property name="can_focus">False</property>
+                            <property name="left_padding">12</property>
                             <child>
-                              <object class="GtkAlignment" id="alignment57">
+                              <object class="GtkGrid" id="brailleSelectionGrid">
                                 <property name="visible">True</property>
-                                <property name="left_padding">12</property>
+                                <property name="can_focus">False</property>
+                                <property name="row_spacing">20</property>
                                 <child>
-                                  <object class="GtkVBox" id="vbox28">
+                                  <object class="GtkRadioButton" id="brailleSelectionNoneButton">
+                                    <property name="label" translatable="yes" context="braille dots" comments="Translators: This option refers to the dot or dots in braille which will be used to 'underline' certain characters.">_None</property>
                                     <property name="visible">True</property>
-                                    <property name="border_width">3</property>
-                                    <child>
-                                      <object class="GtkRadioButton" id="brailleSelectionNoneButton">
-                                        <property name="label" translatable="yes" context="braille dots" comments="Translators: This option refers to the dot or dots in braille which will be used to 'underline' certain characters.">_None</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>
-                                        <signal name="toggled" handler="brailleSelectionChanged"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkRadioButton" id="brailleSelection7Button">
-                                        <property name="label" translatable="yes">Dot _7</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">brailleSelectionNoneButton</property>
-                                        <signal name="toggled" handler="brailleSelectionChanged"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkRadioButton" id="brailleSelection8Button">
-                                        <property name="label" translatable="yes">Dot _8</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">brailleSelectionNoneButton</property>
-                                        <signal name="toggled" handler="brailleSelectionChanged"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkRadioButton" id="brailleSelectionBothButton">
-                                        <property name="label" translatable="yes">Dots 7 an_d 8</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">brailleSelectionNoneButton</property>
-                                        <signal name="toggled" handler="brailleSelectionChanged"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">3</property>
-                                      </packing>
-                                    </child>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="use_action_appearance">False</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="active">True</property>
+                                    <property name="draw_indicator">True</property>
+                                    <signal name="toggled" handler="brailleSelectionChanged" swapped="no"/>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">0</property>
+                                    <property name="top_attach">0</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkRadioButton" id="brailleSelection7Button">
+                                    <property name="label" translatable="yes">Dot _7</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="use_action_appearance">False</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="draw_indicator">True</property>
+                                    <property name="group">brailleSelectionNoneButton</property>
+                                    <signal name="toggled" handler="brailleSelectionChanged" swapped="no"/>
                                   </object>
+                                  <packing>
+                                    <property name="left_attach">0</property>
+                                    <property name="top_attach">1</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkRadioButton" id="brailleSelection8Button">
+                                    <property name="label" translatable="yes">Dot _8</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="use_action_appearance">False</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="draw_indicator">True</property>
+                                    <property name="group">brailleSelectionNoneButton</property>
+                                    <signal name="toggled" handler="brailleSelectionChanged" swapped="no"/>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">1</property>
+                                    <property name="top_attach">0</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkRadioButton" id="brailleSelectionBothButton">
+                                    <property name="label" translatable="yes">Dots 7 an_d 8</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="use_action_appearance">False</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="draw_indicator">True</property>
+                                    <property name="group">brailleSelectionNoneButton</property>
+                                    <signal name="toggled" handler="brailleSelectionChanged" swapped="no"/>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">1</property>
+                                    <property name="top_attach">1</property>
+                                    <property name="width">1</property>
+                                    <property name="height">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;Selection Indicator&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>
-                          </packing>
                         </child>
+                        <child type="label">
+                          <object class="GtkLabel" id="brailleSelectionLabel">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Selection Indicator&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">2</property>
+                        <property name="width">1</property>
+                        <property name="height">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkFrame" id="brailleHyperlinkFrame">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">none</property>
                         <child>
-                          <object class="GtkFrame" id="frame14">
+                          <object class="GtkAlignment" id="brailleHyperlinkAlignment">
                             <property name="visible">True</property>
-                            <property name="label_xalign">0</property>
-                            <property name="shadow_type">none</property>
+                            <property name="can_focus">False</property>
+                            <property name="left_padding">12</property>
                             <child>
-                              <object class="GtkAlignment" id="alignment88">
+                              <object class="GtkGrid" id="brailleHyperlinkGrid">
                                 <property name="visible">True</property>
-                                <property name="left_padding">12</property>
+                                <property name="can_focus">False</property>
+                                <property name="row_spacing">20</property>
                                 <child>
-                                  <object class="GtkVBox" id="vbox35">
+                                  <object class="GtkRadioButton" id="brailleLinkNoneButton">
+                                    <property name="label" translatable="yes" context="braille dots" comments="Translators: This option refers to the dot or dots in braille which will be used to 'underline' certain characters.">_None</property>
                                     <property name="visible">True</property>
-                                    <child>
-                                      <object class="GtkRadioButton" id="brailleLinkNoneButton">
-                                        <property name="label" translatable="yes" context="braille dots" comments="Translators: This option refers to the dot or dots in braille which will be used to 'underline' certain characters.">_None</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>
-                                        <signal name="toggled" handler="brailleLinkChanged"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkRadioButton" id="brailleLink7Button">
-                                        <property name="label" translatable="yes">Dot _7</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">brailleLinkNoneButton</property>
-                                        <signal name="toggled" handler="brailleLinkChanged"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkRadioButton" id="brailleLink8Button">
-                                        <property name="label" translatable="yes">Dot _8</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">brailleLinkNoneButton</property>
-                                        <signal name="toggled" handler="brailleLinkChanged"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkRadioButton" id="brailleLinkBothButton">
-                                        <property name="label" translatable="yes">Dots 7 an_d 8</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">brailleLinkNoneButton</property>
-                                        <signal name="toggled" handler="brailleLinkChanged"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">3</property>
-                                      </packing>
-                                    </child>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="use_action_appearance">False</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="active">True</property>
+                                    <property name="draw_indicator">True</property>
+                                    <signal name="toggled" handler="brailleLinkChanged" swapped="no"/>
                                   </object>
+                                  <packing>
+                                    <property name="left_attach">0</property>
+                                    <property name="top_attach">0</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkRadioButton" id="brailleLink7Button">
+                                    <property name="label" translatable="yes">Dot _7</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="use_action_appearance">False</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="draw_indicator">True</property>
+                                    <property name="group">brailleLinkNoneButton</property>
+                                    <signal name="toggled" handler="brailleLinkChanged" swapped="no"/>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">0</property>
+                                    <property name="top_attach">1</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkRadioButton" id="brailleLink8Button">
+                                    <property name="label" translatable="yes">Dot _8</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="use_action_appearance">False</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="draw_indicator">True</property>
+                                    <property name="group">brailleLinkNoneButton</property>
+                                    <signal name="toggled" handler="brailleLinkChanged" swapped="no"/>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">1</property>
+                                    <property name="top_attach">0</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkRadioButton" id="brailleLinkBothButton">
+                                    <property name="label" translatable="yes">Dots 7 an_d 8</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="use_action_appearance">False</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="draw_indicator">True</property>
+                                    <property name="group">brailleLinkNoneButton</property>
+                                    <signal name="toggled" handler="brailleLinkChanged" swapped="no"/>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">1</property>
+                                    <property name="top_attach">1</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
                                 </child>
-                              </object>
-                            </child>
-                            <child type="label">
-                              <object class="GtkLabel" id="label49">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">&lt;b&gt;Hyperlink Indicator&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>
-                          </packing>
+                        </child>
+                        <child type="label">
+                          <object class="GtkLabel" id="brailleHyperlinkLabel">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Hyperlink Indicator&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>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">3</property>
+                        <property name="width">1</property>
+                        <property name="height">1</property>
                       </packing>
                     </child>
                   </object>
                   <packing>
-                    <property name="position">2</property>
-                    <property name="tab_fill">False</property>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
                   </packing>
                 </child>
-                <child type="tab">
-                  <object class="GtkLabel" id="brailleTabLabel">
+              </object>
+              <packing>
+                <property name="position">3</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="brailleTabLabel">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Braille</property>
+              </object>
+              <packing>
+                <property name="position">3</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkGrid" id="echoGrid">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="border_width">12</property>
+                <child>
+                  <object class="GtkCheckButton" id="keyEchoCheckButton">
+                    <property name="label" translatable="yes">Enable _key echo</property>
                     <property name="visible">True</property>
-                    <property name="label" translatable="yes">Braille</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_action_appearance">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="xalign">0</property>
+                    <property name="draw_indicator">True</property>
+                    <signal name="toggled" handler="keyEchoChecked" swapped="no"/>
                   </object>
                   <packing>
-                    <property name="position">2</property>
-                    <property name="tab_fill">False</property>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkVBox" id="keyechoVbox">
+                  <object class="GtkAlignment" id="keyEchoAlignment">
                     <property name="visible">True</property>
-                    <property name="border_width">12</property>
-                    <child>
-                      <object class="GtkCheckButton" id="keyEchoCheckButton">
-                        <property name="label" translatable="yes">Enable _key echo</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="keyEchoChecked"/>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
+                    <property name="can_focus">False</property>
+                    <property name="left_padding">25</property>
                     <child>
-                      <object class="GtkAlignment" id="alignment11">
+                      <object class="GtkGrid" id="keyEchoGrid">
                         <property name="visible">True</property>
-                        <property name="left_padding">12</property>
+                        <property name="can_focus">False</property>
                         <child>
                           <object class="GtkCheckButton" id="enablePrintableKeysCheckButton">
                             <property name="label" translatable="yes">Enable _alphanumeric and punctuation keys</property>
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
                             <property name="receives_default">False</property>
+                            <property name="use_action_appearance">False</property>
                             <property name="use_underline">True</property>
+                            <property name="xalign">0</property>
                             <property name="draw_indicator">True</property>
-                            <signal name="toggled" handler="checkButtonToggled"/>
+                            <signal name="toggled" handler="checkButtonToggled" swapped="no"/>
                           </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">0</property>
+                            <property name="width">1</property>
+                            <property name="height">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="GtkAlignment" id="alignment12">
-                        <property name="visible">True</property>
-                        <property name="left_padding">12</property>
                         <child>
                           <object class="GtkCheckButton" id="enableModifierKeysCheckButton">
                             <property name="label" translatable="yes">Enable _modifier keys</property>
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
                             <property name="receives_default">False</property>
+                            <property name="use_action_appearance">False</property>
                             <property name="use_underline">True</property>
+                            <property name="xalign">0</property>
                             <property name="draw_indicator">True</property>
-                            <signal name="toggled" handler="checkButtonToggled"/>
+                            <signal name="toggled" handler="checkButtonToggled" swapped="no"/>
                           </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">1</property>
+                            <property name="width">1</property>
+                            <property name="height">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="GtkAlignment" id="alignment13">
-                        <property name="visible">True</property>
-                        <property name="left_padding">12</property>
                         <child>
                           <object class="GtkCheckButton" id="enableLockingKeysCheckButton">
                             <property name="label" translatable="yes">Enable lockin_g keys</property>
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
                             <property name="receives_default">False</property>
+                            <property name="use_action_appearance">False</property>
                             <property name="use_underline">True</property>
+                            <property name="xalign">0</property>
                             <property name="draw_indicator">True</property>
-                            <signal name="toggled" handler="checkButtonToggled"/>
+                            <signal name="toggled" handler="checkButtonToggled" swapped="no"/>
                           </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">2</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
                         </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">3</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkAlignment" id="alignment14">
-                        <property name="visible">True</property>
-                        <property name="left_padding">12</property>
                         <child>
                           <object class="GtkCheckButton" id="enableFunctionKeysCheckButton">
                             <property name="label" translatable="yes">Enable _function keys</property>
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
                             <property name="receives_default">False</property>
+                            <property name="use_action_appearance">False</property>
                             <property name="use_underline">True</property>
+                            <property name="xalign">0</property>
                             <property name="draw_indicator">True</property>
-                            <signal name="toggled" handler="checkButtonToggled"/>
+                            <signal name="toggled" handler="checkButtonToggled" swapped="no"/>
                           </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">3</property>
+                            <property name="width">1</property>
+                            <property name="height">1</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="GtkAlignment" id="alignment15">
-                        <property name="visible">True</property>
-                        <property name="left_padding">12</property>
                         <child>
                           <object class="GtkCheckButton" id="enableActionKeysCheckButton">
                             <property name="label" translatable="yes">Enable ac_tion keys</property>
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
                             <property name="receives_default">False</property>
+                            <property name="use_action_appearance">False</property>
                             <property name="use_underline">True</property>
+                            <property name="xalign">0</property>
                             <property name="draw_indicator">True</property>
-                            <signal name="toggled" handler="checkButtonToggled"/>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">5</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkAlignment" id="alignment59">
-                        <property name="visible">True</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkCheckButton" id="enableNavigationKeysCheckButton">
-                            <property name="label" translatable="yes">Enable _navigation keys</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="checkButtonToggled"/>
+                            <signal name="toggled" handler="checkButtonToggled" swapped="no"/>
                           </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">4</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
                         </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">6</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkAlignment" id="alignment63">
-                        <property name="visible">True</property>
-                        <property name="left_padding">12</property>
                         <child>
-                          <object class="GtkCheckButton" id="enableDiacriticalKeysCheckButton">
-                            <property name="label" translatable="yes" comments="Translators: When this option is enabled, dead keys will be announced when pressed.">Enable non-spacing _diacritical keys</property>
+                          <object class="GtkCheckButton" id="enableNavigationKeysCheckButton">
+                            <property name="label" translatable="yes">Enable _navigation keys</property>
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
                             <property name="receives_default">False</property>
+                            <property name="use_action_appearance">False</property>
                             <property name="use_underline">True</property>
+                            <property name="xalign">0</property>
                             <property name="draw_indicator">True</property>
-                            <signal name="toggled" handler="checkButtonToggled"/>
+                            <signal name="toggled" handler="checkButtonToggled" swapped="no"/>
                           </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">5</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
                         </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">7</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkAlignment" id="alignment64">
-                        <property name="visible">True</property>
-                        <property name="top_padding">12</property>
                         <child>
-                          <object class="GtkCheckButton" id="enableEchoByCharacterCheckButton">
-                            <property name="label" translatable="yes" comments="Translators: When this option is enabled, inserted text of length 1 is spoken.">Enable echo by cha_racter</property>
+                          <object class="GtkCheckButton" id="enableDiacriticalKeysCheckButton">
+                            <property name="label" translatable="yes" comments="Translators: When this option is enabled, dead keys will be announced when pressed.">Enable non-spacing _diacritical keys</property>
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
                             <property name="receives_default">False</property>
+                            <property name="use_action_appearance">False</property>
                             <property name="use_underline">True</property>
+                            <property name="xalign">0</property>
                             <property name="draw_indicator">True</property>
-                            <signal name="toggled" handler="checkButtonToggled"/>
+                            <signal name="toggled" handler="checkButtonToggled" swapped="no"/>
                           </object>
+                          <packing>
+                            <property name="left_attach">0</property>
+                            <property name="top_attach">6</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
                         </child>
                       </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">8</property>
-                      </packing>
                     </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="enableEchoByCharacterCheckButton">
+                    <property name="label" translatable="yes" comments="Translators: When this option is enabled, inserted text of length 1 is spoken.">Enable echo by cha_racter</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_action_appearance">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="xalign">0</property>
+                    <property name="draw_indicator">True</property>
+                    <signal name="toggled" handler="checkButtonToggled" swapped="no"/>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">2</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="enableEchoByWordCheckButton">
+                    <property name="label" translatable="yes">Enable echo by _word</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_action_appearance">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="xalign">0</property>
+                    <property name="draw_indicator">True</property>
+                    <signal name="toggled" handler="checkButtonToggled" swapped="no"/>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">3</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="enableEchoBySentenceCheckButton">
+                    <property name="label" translatable="yes">Enable echo by _sentence</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_action_appearance">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="xalign">0</property>
+                    <property name="draw_indicator">True</property>
+                    <signal name="toggled" handler="checkButtonToggled" swapped="no"/>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">4</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">4</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="keyEchoTabLabel">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Key Echo</property>
+              </object>
+              <packing>
+                <property name="position">4</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkGrid" id="keyBindingsGrid">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="border_width">12</property>
+                <property name="row_spacing">10</property>
+                <property name="column_spacing">10</property>
+                <child>
+                  <object class="GtkGrid" id="orcaModiferKeysGrid">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="row_spacing">10</property>
+                    <property name="column_spacing">10</property>
                     <child>
-                      <object class="GtkAlignment" id="alignment49">
+                      <object class="GtkLabel" id="orcaModifierKeyLabel">
                         <property name="visible">True</property>
-                        <child>
-                          <object class="GtkCheckButton" id="enableEchoByWordCheckButton">
-                            <property name="label" translatable="yes">Enable echo by _word</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="checkButtonToggled"/>
-                          </object>
-                        </child>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Orca _Modifier Key(s):</property>
+                        <property name="use_underline">True</property>
+                        <property name="mnemonic_widget">orcaModifierComboBox</property>
+                        <accessibility>
+                          <relation type="label-for" target="orcaModifierComboBox"/>
+                        </accessibility>
                       </object>
                       <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">9</property>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                        <property name="width">1</property>
+                        <property name="height">1</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkCheckButton" id="enableEchoBySentenceCheckButton">
-                        <property name="label" translatable="yes">Enable echo by _sentence</property>
+                      <object class="GtkComboBox" id="orcaModifierComboBox">
                         <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="checkButtonToggled"/>
+                        <property name="can_focus">False</property>
+                        <property name="model">model8</property>
+                        <signal name="changed" handler="orcaModifierChanged" swapped="no"/>
+                        <child>
+                          <object class="GtkCellRendererText" id="orcaModifierRenderer"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
                       </object>
                       <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">10</property>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                        <property name="width">1</property>
+                        <property name="height">1</property>
                       </packing>
                     </child>
                   </object>
                   <packing>
-                    <property name="position">3</property>
-                    <property name="tab_fill">False</property>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
                   </packing>
                 </child>
-                <child type="tab">
-                  <object class="GtkLabel" id="keyEchoTabLabel">
+                <child>
+                  <object class="GtkScrolledWindow" id="keyBindingsScrolledWindow">
                     <property name="visible">True</property>
-                    <property name="label" translatable="yes">Key Echo</property>
+                    <property name="can_focus">True</property>
+                    <property name="hexpand">True</property>
+                    <property name="vexpand">True</property>
+                    <property name="shadow_type">in</property>
+                    <child>
+                      <object class="GtkTreeView" id="keyBindingsTreeview">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="reorderable">True</property>
+                        <property name="rules_hint">True</property>
+                        <child internal-child="selection">
+                          <object class="GtkTreeSelection" id="treeview-selection"/>
+                        </child>
+                      </object>
+                    </child>
                   </object>
                   <packing>
-                    <property name="position">3</property>
-                    <property name="tab_fill">False</property>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
                   </packing>
                 </child>
+              </object>
+              <packing>
+                <property name="position">5</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="keyBindingsTabLabel">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Key Bindings</property>
+              </object>
+              <packing>
+                <property name="position">5</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkGrid" id="pronunciationGrid">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
                 <child>
-                  <object class="GtkVBox" id="keyBindingsVBox">
+                  <object class="GtkFrame" id="pronunciationDictionaryFrame">
                     <property name="visible">True</property>
-                    <property name="border_width">12</property>
-                    <property name="spacing">6</property>
+                    <property name="can_focus">False</property>
+                    <property name="hexpand">True</property>
+                    <property name="vexpand">True</property>
+                    <property name="border_width">5</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
                     <child>
-                      <object class="GtkHBox" id="hbox36">
+                      <object class="GtkAlignment" id="pronunciationDictionaryAlignment">
                         <property name="visible">True</property>
-                        <property name="spacing">3</property>
-                        <child>
-                          <object class="GtkLabel" id="orcaModKeyLabel">
-                            <property name="visible">True</property>
-                            <property name="label" translatable="yes">Orca _Modifier Key(s):</property>
-                            <property name="use_underline">True</property>
-                            <property name="mnemonic_widget">orcaModifierComboBox</property>
-                            <accessibility>
-                              <relation type="label-for" target="orcaModifierComboBox"/>
-                            </accessibility>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
                         <child>
-                          <object class="GtkComboBox" id="orcaModifierComboBox">
+                          <object class="GtkScrolledWindow" id="pronunciationDictionaryScrolledWindow">
                             <property name="visible">True</property>
-                            <property name="model">model8</property>
-                            <signal name="changed" handler="orcaModifierChanged"/>
+                            <property name="can_focus">True</property>
+                            <property name="border_width">5</property>
+                            <property name="shadow_type">in</property>
                             <child>
-                              <object class="GtkCellRendererText" id="orcaModifierRenderer"/>
-                              <attributes>
-                                <attribute name="text">0</attribute>
-                              </attributes>
+                              <object class="GtkTreeView" id="pronunciationTreeView">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="reorderable">True</property>
+                                <child internal-child="selection">
+                                  <object class="GtkTreeSelection" id="treeview-selection2"/>
+                                </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="pronunciationDictionaryLabel">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Pronunciation Dictionary&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkGrid" id="pronunciationButtonGrid">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkButton" id="pronunciationAddButton">
+                        <property name="label" translatable="yes">_New entry</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="border_width">5</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <signal name="clicked" handler="pronunciationAddButtonClicked" swapped="no"/>
+                      </object>
                       <packing>
-                        <property name="expand">False</property>
-                        <property name="position">0</property>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                        <property name="width">1</property>
+                        <property name="height">1</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkScrolledWindow" id="scrolledwindow1">
+                      <object class="GtkButton" id="pronunciationDeleteButton">
+                        <property name="label" translatable="yes">_Delete</property>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="hscrollbar_policy">automatic</property>
-                        <property name="vscrollbar_policy">automatic</property>
-                        <property name="shadow_type">in</property>
-                        <child>
-                          <object class="GtkTreeView" id="keyBindingsTreeview">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="reorderable">True</property>
-                            <property name="rules_hint">True</property>
-                          </object>
-                        </child>
+                        <property name="receives_default">True</property>
+                        <property name="border_width">5</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <signal name="clicked" handler="pronunciationDeleteButtonClicked" swapped="no"/>
                       </object>
                       <packing>
-                        <property name="position">1</property>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                        <property name="width">1</property>
+                        <property name="height">1</property>
                       </packing>
                     </child>
                   </object>
                   <packing>
-                    <property name="menu_label">Key Binding List</property>
-                    <property name="position">5</property>
-                  </packing>
-                </child>
-                <child type="tab">
-                  <object class="GtkLabel" id="keyBindingsTabLabel">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes">Key Bindings</property>
-                  </object>
-                  <packing>
-                    <property name="position">5</property>
-                    <property name="tab_fill">False</property>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
                   </packing>
                 </child>
+              </object>
+              <packing>
+                <property name="position">6</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="pronunciationTabLabel">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Pronunciation</property>
+              </object>
+              <packing>
+                <property name="position">6</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkGrid" id="textAttributesGrid">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
                 <child>
-                  <object class="GtkVBox" id="vbox29">
+                  <object class="GtkFrame" id="textAttributesFrame">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="hexpand">True</property>
+                    <property name="vexpand">True</property>
+                    <property name="border_width">5</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
                     <child>
-                      <object class="GtkFrame" id="pronunciationFrame">
+                      <object class="GtkAlignment" id="textAttributesFrameAlignment">
                         <property name="visible">True</property>
-                        <property name="border_width">5</property>
-                        <property name="label_xalign">0</property>
-                        <property name="shadow_type">none</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
                         <child>
-                          <object class="GtkAlignment" id="alignment58">
+                          <object class="GtkGrid" id="textAttributesFrameGrid">
                             <property name="visible">True</property>
-                            <property name="left_padding">12</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="vexpand">True</property>
+                            <child>
+                              <object class="GtkGrid" id="textAttributesButtonGrid">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkButton" id="textSelectAllButton">
+                                    <property name="label" translatable="yes">_Speak all</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">True</property>
+                                    <property name="border_width">5</property>
+                                    <property name="use_action_appearance">False</property>
+                                    <property name="use_underline">True</property>
+                                    <signal name="clicked" handler="textSelectAllButtonClicked" swapped="no"/>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">0</property>
+                                    <property name="top_attach">0</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkButton" id="textUnselectAllButton">
+                                    <property name="label" translatable="yes">Speak _none</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">True</property>
+                                    <property name="border_width">5</property>
+                                    <property name="use_action_appearance">False</property>
+                                    <property name="use_underline">True</property>
+                                    <signal name="clicked" handler="textUnselectAllButtonClicked" swapped="no"/>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">1</property>
+                                    <property name="top_attach">0</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkButton" id="textResetButton">
+                                    <property name="label" translatable="yes">_Reset</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">True</property>
+                                    <property name="border_width">5</property>
+                                    <property name="use_action_appearance">False</property>
+                                    <property name="use_underline">True</property>
+                                    <signal name="clicked" handler="textResetButtonClicked" swapped="no"/>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">2</property>
+                                    <property name="top_attach">0</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">1</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
+                            </child>
                             <child>
-                              <object class="GtkScrolledWindow" id="scrolledwindow3">
+                              <object class="GtkScrolledWindow" id="textAttributesScrolledWindow">
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
+                                <property name="hexpand">True</property>
+                                <property name="vexpand">True</property>
                                 <property name="border_width">5</property>
                                 <property name="shadow_type">in</property>
                                 <child>
-                                  <object class="GtkTreeView" id="pronunciationTreeView">
+                                  <object class="GtkTreeView" id="textAttributesTreeView">
                                     <property name="visible">True</property>
                                     <property name="can_focus">True</property>
                                     <property name="reorderable">True</property>
+                                    <child internal-child="selection">
+                                      <object class="GtkTreeSelection" id="treeview-selection4"/>
+                                    </child>
                                   </object>
                                 </child>
                               </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">0</property>
+                                <property name="width">1</property>
+                                <property name="height">1</property>
+                              </packing>
                             </child>
                           </object>
                         </child>
-                        <child type="label">
-                          <object class="GtkLabel" id="pronunciationDictFrameLabel">
-                            <property name="visible">True</property>
-                            <property name="label" translatable="yes">&lt;b&gt;Pronunciation Dictionary&lt;/b&gt;</property>
-                            <property name="use_markup">True</property>
-                          </object>
-                        </child>
                       </object>
-                      <packing>
-                        <property name="position">0</property>
-                      </packing>
                     </child>
-                    <child>
-                      <object class="GtkHBox" id="hbox44">
+                    <child type="label">
+                      <object class="GtkLabel" id="textAttributesFrameLabel">
                         <property name="visible">True</property>
-                        <property name="border_width">5</property>
-                        <child>
-                          <object class="GtkButton" id="pronunciationAddButton">
-                            <property name="label" translatable="yes">_New entry</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="border_width">5</property>
-                            <property name="use_underline">True</property>
-                            <signal name="clicked" handler="pronunciationAddButtonClicked"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkButton" id="pronunciationDeleteButton">
-                            <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="border_width">5</property>
-                            <property name="use_underline">True</property>
-                            <signal name="clicked" handler="pronunciationDeleteButtonClicked"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Text attributes&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
                       </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="position">1</property>
-                      </packing>
                     </child>
                   </object>
                   <packing>
-                    <property name="position">6</property>
-                  </packing>
-                </child>
-                <child type="tab">
-                  <object class="GtkLabel" id="pronunciationTabLabel">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes">Pronunciation</property>
-                  </object>
-                  <packing>
-                    <property name="position">6</property>
-                    <property name="tab_fill">False</property>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkHBox" id="textAttributesHBox">
+                  <object class="GtkGrid" id="textAttributesConfigGrid">
                     <property name="visible">True</property>
-                    <property name="border_width">5</property>
+                    <property name="can_focus">False</property>
                     <child>
-                      <object class="GtkFrame" id="textAttributesFrame">
+                      <object class="GtkFrame" id="adjustAttributesFrame">
                         <property name="visible">True</property>
+                        <property name="can_focus">False</property>
                         <property name="border_width">5</property>
                         <property name="label_xalign">0</property>
                         <property name="shadow_type">none</property>
                         <child>
-                          <object class="GtkAlignment" id="alignment53">
+                          <object class="GtkAlignment" id="alignment55">
                             <property name="visible">True</property>
+                            <property name="can_focus">False</property>
                             <property name="left_padding">12</property>
                             <child>
-                              <object class="GtkVBox" id="vbox24">
+                              <object class="GtkGrid" id="textAttributesMoveButtonGrid">
                                 <property name="visible">True</property>
+                                <property name="can_focus">False</property>
                                 <child>
-                                  <object class="GtkScrolledWindow" id="scrolledwindow2">
+                                  <object class="GtkButton" id="textMoveToBottomButton">
+                                    <property name="label" translatable="yes" comments="Translators: This label is on a button on the Text Attributes pane of the Orca Preferences dialog. On that pane there is a long list of possible text attributes. The user can select one and then, by using the Move to _bottom button, move that attribute to the bottom of the list. The ordering in the list is important as Orca will speak the selected text attributes in the given order.">Move to _bottom</property>
                                     <property name="visible">True</property>
                                     <property name="can_focus">True</property>
+                                    <property name="receives_default">True</property>
                                     <property name="border_width">5</property>
-                                    <property name="shadow_type">in</property>
-                                    <child>
-                                      <object class="GtkTreeView" id="textAttributesTreeView">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="reorderable">True</property>
-                                      </object>
-                                    </child>
+                                    <property name="use_action_appearance">False</property>
+                                    <property name="use_underline">True</property>
+                                    <signal name="clicked" handler="textMoveToBottomButtonClicked" swapped="no"/>
                                   </object>
                                   <packing>
-                                    <property name="position">0</property>
+                                    <property name="left_attach">0</property>
+                                    <property name="top_attach">3</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
                                   </packing>
                                 </child>
-                                <child>
-                                  <object class="GtkHBox" id="hbox41">
-                                    <property name="visible">True</property>
-                                    <property name="border_width">5</property>
-                                    <child>
-                                      <object class="GtkButton" id="textSelectAllButton">
-                                        <property name="label" translatable="yes">_Speak all</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="receives_default">False</property>
-                                        <property name="border_width">5</property>
-                                        <property name="use_underline">True</property>
-                                        <signal name="clicked" handler="textSelectAllButtonClicked"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkButton" id="textUnselectAllButton">
-                                        <property name="label" translatable="yes">Speak _none</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="receives_default">False</property>
-                                        <property name="border_width">5</property>
-                                        <property name="use_underline">True</property>
-                                        <signal name="clicked" handler="textUnselectAllButtonClicked"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkButton" id="textResetButton">
-                                        <property name="label" translatable="yes">_Reset</property>
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="receives_default">False</property>
-                                        <property name="border_width">5</property>
-                                        <property name="use_underline">True</property>
-                                        <signal name="clicked" handler="textResetButtonClicked"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
+                                <child>
+                                  <object class="GtkButton" id="textMoveDownOneButton">
+                                    <property name="label" translatable="yes" comments="Translators: This label is on a button on the Text Attributes pane of the Orca Preferences dialog. On that pane there is a long list of possible text attributes. The user can select one and then, by using the Move _down one button, move that attribute down one line in the list. The ordering in the list is important as Orca will speak the selected text attributes in the given order.">Move _down one</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">True</property>
+                                    <property name="border_width">5</property>
+                                    <property name="use_action_appearance">False</property>
+                                    <property name="use_underline">True</property>
+                                    <signal name="clicked" handler="textMoveDownOneButtonClicked" swapped="no"/>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">0</property>
+                                    <property name="top_attach">2</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkButton" id="textMoveUpOneButton">
+                                    <property name="label" translatable="yes" comments="Translators: This label is on a button on the Text Attributes pane of the Orca Preferences dialog. On that pane there is a long list of possible text attributes. The user can select one and then, by using the Move _up one button, move that attribute up one line in the list. The ordering in the list is important as Orca will speak the selected text attributes in the given order.">Move _up one</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">True</property>
+                                    <property name="border_width">5</property>
+                                    <property name="use_action_appearance">False</property>
+                                    <property name="use_underline">True</property>
+                                    <signal name="clicked" handler="textMoveUpOneButtonClicked" swapped="no"/>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">0</property>
+                                    <property name="top_attach">1</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkButton" id="textMoveToTopButton">
+                                    <property name="label" translatable="yes" comments="Translators:  This label is on a button on the Text Attributes pane of the Orca Preferences dialog. On that pane there is a long list of possible text attributes. The user can select one and then, by using the Move to _top button, move that attribute to the top of the list. The ordering in the list is important as Orca will speak the selected text attributes in the given order.">Move to _top</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">True</property>
+                                    <property name="border_width">5</property>
+                                    <property name="use_action_appearance">False</property>
+                                    <property name="use_underline">True</property>
+                                    <signal name="clicked" handler="textMoveToTopButtonClicked" swapped="no"/>
                                   </object>
                                   <packing>
-                                    <property name="expand">False</property>
-                                    <property name="position">1</property>
+                                    <property name="left_attach">0</property>
+                                    <property name="top_attach">0</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
                                   </packing>
                                 </child>
                               </object>
@@ -2562,322 +3180,168 @@
                           </object>
                         </child>
                         <child type="label">
-                          <object class="GtkLabel" id="textAttributesFrameLabel">
+                          <object class="GtkLabel" id="label26">
                             <property name="visible">True</property>
-                            <property name="label" translatable="yes">&lt;b&gt;Text attributes&lt;/b&gt;</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Adjust selected
+attributes&lt;/b&gt;</property>
                             <property name="use_markup">True</property>
                           </object>
                         </child>
                       </object>
                       <packing>
-                        <property name="position">0</property>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                        <property name="width">1</property>
+                        <property name="height">1</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkVBox" id="vbox26">
+                      <object class="GtkFrame" id="textAttributesBrailleIndicatorFrame">
                         <property name="visible">True</property>
-                        <property name="homogeneous">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="border_width">5</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">none</property>
                         <child>
-                          <object class="GtkFrame" id="adjustAttributesFrame">
+                          <object class="GtkAlignment" id="textAttributeBrailleIndicatorAlignment">
                             <property name="visible">True</property>
-                            <property name="border_width">5</property>
-                            <property name="label_xalign">0</property>
-                            <property name="shadow_type">none</property>
+                            <property name="can_focus">False</property>
+                            <property name="left_padding">12</property>
                             <child>
-                              <object class="GtkAlignment" id="alignment55">
+                              <object class="GtkGrid" id="textAttributesBrailleIndicatorGrid">
                                 <property name="visible">True</property>
-                                <property name="left_padding">12</property>
+                                <property name="can_focus">False</property>
                                 <child>
-                                  <object class="GtkVBox" id="vbox25">
+                                  <object class="GtkRadioButton" id="textBrailleNoneButton">
+                                    <property name="label" translatable="yes" context="braille dots" comments="Translators: This option refers to the dot or dots in braille which will be used to 'underline' certain characters.">_None</property>
                                     <property name="visible">True</property>
-                                    <property name="border_width">5</property>
-                                    <child>
-                                      <object class="GtkButton" id="textMoveToTopButton">
-                                        <property name="label" translatable="yes" comments="Translators:  This label is on a button on the Text Attributes pane of the Orca Preferences dialog. On that pane there is a long list of possible text attributes. The user can select one and then, by using the Move to _top button, move that attribute to the top of the list. The ordering in the list is important as Orca will speak the selected text attributes in the given order.">Move to _top</property>
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="receives_default">False</property>
-                                        <property name="border_width">5</property>
-                                        <property name="use_underline">True</property>
-                                        <signal name="clicked" handler="textMoveToTopButtonClicked"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkButton" id="textMoveUpOneButton">
-                                        <property name="label" translatable="yes" comments="Translators: This label is on a button on the Text Attributes pane of the Orca Preferences dialog. On that pane there is a long list of possible text attributes. The user can select one and then, by using the Move _up one button, move that attribute up one line in the list. The ordering in the list is important as Orca will speak the selected text attributes in the given order.">Move _up one</property>
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="receives_default">False</property>
-                                        <property name="border_width">5</property>
-                                        <property name="use_underline">True</property>
-                                        <signal name="clicked" handler="textMoveUpOneButtonClicked"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkButton" id="textMoveDownOneButton">
-                                        <property name="label" translatable="yes" comments="Translators: This label is on a button on the Text Attributes pane of the Orca Preferences dialog. On that pane there is a long list of possible text attributes. The user can select one and then, by using the Move _down one button, move that attribute down one line in the list. The ordering in the list is important as Orca will speak the selected text attributes in the given order.">Move _down one</property>
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="receives_default">False</property>
-                                        <property name="border_width">5</property>
-                                        <property name="use_underline">True</property>
-                                        <signal name="clicked" handler="textMoveDownOneButtonClicked"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkButton" id="textMoveToBottomButton">
-                                        <property name="label" translatable="yes" comments="Translators: This label is on a button on the Text Attributes pane of the Orca Preferences dialog. On that pane there is a long list of possible text attributes. The user can select one and then, by using the Move to _bottom button, move that attribute to the bottom of the list. The ordering in the list is important as Orca will speak the selected text attributes in the given order.">Move to _bottom</property>
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="receives_default">False</property>
-                                        <property name="border_width">5</property>
-                                        <property name="use_underline">True</property>
-                                        <signal name="clicked" handler="textMoveToBottomButtonClicked"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">3</property>
-                                      </packing>
-                                    </child>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="use_action_appearance">False</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="active">True</property>
+                                    <property name="draw_indicator">True</property>
+                                    <signal name="toggled" handler="brailleIndicatorChanged" swapped="no"/>
                                   </object>
+                                  <packing>
+                                    <property name="left_attach">0</property>
+                                    <property name="top_attach">0</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
                                 </child>
-                              </object>
-                            </child>
-                            <child type="label">
-                              <object class="GtkLabel" id="label26">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">&lt;b&gt;Adjust selected
-attributes&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="brailleIndicatorFrame">
-                            <property name="visible">True</property>
-                            <property name="border_width">5</property>
-                            <property name="label_xalign">0</property>
-                            <property name="shadow_type">none</property>
-                            <child>
-                              <object class="GtkAlignment" id="alignment56">
-                                <property name="visible">True</property>
-                                <property name="left_padding">12</property>
                                 <child>
-                                  <object class="GtkVBox" id="vbox27">
+                                  <object class="GtkRadioButton" id="textBraille7Button">
+                                    <property name="label" translatable="yes">Dot _7</property>
                                     <property name="visible">True</property>
-                                    <property name="border_width">3</property>
-                                    <child>
-                                      <object class="GtkRadioButton" id="textBrailleNoneButton">
-                                        <property name="label" translatable="yes" context="braille dots" comments="Translators: This option refers to the dot or dots in braille which will be used to 'underline' certain characters.">_None</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="brailleIndicatorChanged"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkRadioButton" id="textBraille7Button">
-                                        <property name="label" translatable="yes">Dot _7</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">textBrailleNoneButton</property>
-                                        <signal name="toggled" handler="brailleIndicatorChanged"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkRadioButton" id="textBraille8Button">
-                                        <property name="label" translatable="yes">Dot _8</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">textBrailleNoneButton</property>
-                                        <signal name="toggled" handler="brailleIndicatorChanged"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkRadioButton" id="textBrailleBothButton">
-                                        <property name="label" translatable="yes">Dots 7 an_d 8</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">textBrailleNoneButton</property>
-                                        <signal name="toggled" handler="brailleIndicatorChanged"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">3</property>
-                                      </packing>
-                                    </child>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="use_action_appearance">False</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="draw_indicator">True</property>
+                                    <property name="group">textBrailleNoneButton</property>
+                                    <signal name="toggled" handler="brailleIndicatorChanged" swapped="no"/>
                                   </object>
+                                  <packing>
+                                    <property name="left_attach">0</property>
+                                    <property name="top_attach">1</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkRadioButton" id="textBraille8Button">
+                                    <property name="label" translatable="yes">Dot _8</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="use_action_appearance">False</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="draw_indicator">True</property>
+                                    <property name="group">textBrailleNoneButton</property>
+                                    <signal name="toggled" handler="brailleIndicatorChanged" swapped="no"/>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">0</property>
+                                    <property name="top_attach">2</property>
+                                    <property name="width">1</property>
+                                    <property name="height">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkRadioButton" id="textBrailleBothButton">
+                                    <property name="label" translatable="yes">Dots 7 an_d 8</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="use_action_appearance">False</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="draw_indicator">True</property>
+                                    <property name="group">textBrailleNoneButton</property>
+                                    <signal name="toggled" handler="brailleIndicatorChanged" swapped="no"/>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">0</property>
+                                    <property name="top_attach">3</property>
+                                    <property name="width">1</property>
+                                    <property name="height">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;Braille Indicator&lt;/b&gt;</property>
-                                <property name="use_markup">True</property>
                               </object>
                             </child>
                           </object>
-                          <packing>
-                            <property name="position">1</property>
-                          </packing>
+                        </child>
+                        <child type="label">
+                          <object class="GtkLabel" id="textAttributesBrailleIndicatorLabel">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Braille Indicator&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>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">1</property>
+                        <property name="width">1</property>
+                        <property name="height">1</property>
                       </packing>
                     </child>
                   </object>
                   <packing>
-                    <property name="position">7</property>
-                    <property name="tab_fill">False</property>
-                  </packing>
-                </child>
-                <child type="tab">
-                  <object class="GtkLabel" id="textAttributesTabLabel">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes">Text Attributes</property>
-                  </object>
-                  <packing>
-                    <property name="position">7</property>
-                    <property name="tab_fill">False</property>
+                    <property name="left_attach">1</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
                   </packing>
                 </child>
               </object>
               <packing>
-                <property name="padding">3</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area1">
-            <property name="visible">True</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="helpButton">
-                <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="use_stock">True</property>
-                <signal name="clicked" handler="helpButtonClicked"/>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="applyButton">
-                <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="use_stock">True</property>
-                <signal name="clicked" handler="applyButtonClicked"/>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="cancelButton">
-                <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="use_stock">True</property>
-                <signal name="clicked" handler="cancelButtonClicked"/>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
+                <property name="position">7</property>
               </packing>
             </child>
-            <child>
-              <object class="GtkButton" id="okButton">
-                <property name="label">gtk-ok</property>
+            <child type="tab">
+              <object class="GtkLabel" id="textAttributesTabLabel">
                 <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="okButtonClicked"/>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Text Attributes</property>
               </object>
               <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">3</property>
+                <property name="position">7</property>
+                <property name="tab_fill">False</property>
               </packing>
             </child>
           </object>
           <packing>
-            <property name="expand">False</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="padding">3</property>
+            <property name="position">1</property>
           </packing>
         </child>
       </object>
diff --git a/src/orca/orca.in b/src/orca/orca.in
index 96cf6d7..cd5020e 100644
--- a/src/orca/orca.in
+++ b/src/orca/orca.in
@@ -93,7 +93,7 @@ cleanup()
         KILLARG="-TERM"
     fi
     USERID=$(id -u)
-    PATTERN="orca[.]orca|OAFIID[:]GNOME_Magnifier|festival [-][-]server"
+    PATTERN="orca[.]orca|festival [-][-]server"
 
     pkill $KILLARG -U $USERID -f "$PATTERN"
 }
diff --git a/src/orca/orca.py b/src/orca/orca.py
index 6fbcb07..c7d6fa4 100644
--- a/src/orca/orca.py
+++ b/src/orca/orca.py
@@ -35,12 +35,10 @@ import time
 import unicodedata
 import shutil
 
-# This must happen BEFORE we import gtk (until we start using
-# introspection).
 from gi.repository.Gio import Settings
 a11yAppSettings = Settings('org.gnome.desktop.a11y.applications')      
 
-# We're going to force the name of the app to "orca" so pygtk
+# We're going to force the name of the app to "orca" so we
 # will end up showing us as "orca" to the AT-SPI.  If we don't
 # do this, the name can end up being "-c".  See bug 364452 at
 # http://bugzilla.gnome.org/show_bug.cgi?id=364452 for more
@@ -48,15 +46,14 @@ a11yAppSettings = Settings('org.gnome.desktop.a11y.applications')
 #
 sys.argv[0] = "orca"
 import pyatspi
-import pygtk
-pygtk.require('2.0')
 try:
     # This can fail due to gtk not being available.  We want to
     # be able to recover from that if possible.  The main driver
     # for this is to allow "orca --text-setup" to work even if
     # the desktop is not running.
     #
-    import gtk
+    from gi.repository import Gtk
+    from gi.repository import Gdk
 except:
     pass
 
@@ -99,7 +96,7 @@ class Options:
 
         self.desktopRunning = False
         try:
-            if gtk.gdk.display_get_default():
+            if Gdk.Display.get_default():
                 self.desktopRunning = True
         except:
             pass
@@ -1161,12 +1158,12 @@ def _processKeyCaptured(event):
             # If it's not on the keypad, get the name of the unshifted
             # character. (i.e. "1" instead of "!")
             #
-            keymap = gtk.gdk.keymap_get_default()
-            entries = keymap.get_entries_for_keycode(event.hw_code)
-            event.event_string = gtk.gdk.keyval_name(entries[0][0])
+            keymap = Gdk.Keymap.get_default()
+            success, entries = keymap.get_entries_for_keycode(event.hw_code)
+            event.event_string = Gdk.keyval_name(entries[0].keycode)
             if event.event_string.startswith("KP") and \
                event.event_string != "KP_Enter":
-                name = gtk.gdk.keyval_name(entries[1][0])
+                name = Gdk.keyval_name(entries[1].keycode)
                 if name.startswith("KP"):
                     event.event_string = name
 
@@ -1694,9 +1691,9 @@ def helpForOrca(script=None, inputEvent=None, page=""):
     uri = "ghelp:orca"
     if page:
         uri += "?%s" % page
-    gtk.show_uri(gtk.gdk.screen_get_default(),
+    Gtk.show_uri(Gdk.Screen.get_default(),
                  uri,
-                 gtk.get_current_event_time())
+                 Gtk.get_current_event_time())
     return True
 
 def listShortcuts(event):
diff --git a/src/orca/orca_console_prefs.py b/src/orca/orca_console_prefs.py
index a95930c..e3849f0 100644
--- a/src/orca/orca_console_prefs.py
+++ b/src/orca/orca_console_prefs.py
@@ -37,8 +37,8 @@ import time
 
 desktopRunning = False
 try:
-    import gtk
-    if gtk.gdk.display_get_default():
+    from gi.repository import Gdk
+    if Gdk.Display.get_default():
         desktopRunning = True
 except:
     pass
@@ -607,9 +607,9 @@ def showPreferencesUI(commandLineSettings):
                                     speechVoiceChoice)
                         time.sleep(2)
 
-                        import gobject
-                        gobject.threads_init()
-                        gobject.idle_add(logoutUser)
+                        from gi.repository import GObject
+                        GObject.threads_init()
+                        GObject.idle_add(logoutUser)
                     break
                 except:
                     stop = False
diff --git a/src/orca/orca_gtkbuilder.py b/src/orca/orca_gtkbuilder.py
index 3d65f6e..a2c2654 100644
--- a/src/orca/orca_gtkbuilder.py
+++ b/src/orca/orca_gtkbuilder.py
@@ -26,7 +26,7 @@ __copyright__ = "Copyright (c) 2005-2009 Sun Microsystems Inc."
 __license__   = "LGPL"
 
 import gettext
-import gtk
+from gi.repository import Gtk
 
 from orca_i18n import _
 
@@ -44,7 +44,7 @@ class GtkBuilderWrapper:
 
     def __init__(self, fileName, windowName):
         # Load GtkBuilder file.
-        self.builder = gtk.Builder()
+        self.builder = Gtk.Builder()
         self.builder.set_translation_domain(gettext.textdomain())
         self.builder.add_from_file(fileName)
         self.gtkWindow = self.builder.get_object(windowName)
@@ -68,7 +68,7 @@ class GtkBuilderWrapper:
         default for all application windows.
         """
 
-        icon_theme = gtk.icon_theme_get_default()
+        icon_theme = Gtk.IconTheme.get_default()
         try:
             icon16 = icon_theme.load_icon("orca", 16, 0)
             icon22 = icon_theme.load_icon("orca", 22, 0)
@@ -78,11 +78,11 @@ class GtkBuilderWrapper:
         except:
             return
         else:
-            gtk.window_set_default_icon_list(icon16,
+            Gtk.Window.set_default_icon_list((icon16,
                                              icon22,
                                              icon24,
                                              icon32,
-                                             icon48)
+                                             icon48))
 
     def get_widget(self, attribute):
         """Return the requested widget. This routine has been introduced
@@ -125,7 +125,7 @@ class GtkBuilderWrapper:
             useMarkup = False
             useUnderline = False
 
-        if isinstance(obj, gtk.Frame):
+        if isinstance(obj, Gtk.Frame):
             # For some reason, if we localize the frame, which has a label
             # but does not (itself) support use_markup, we get unmarked
             # labels which are not bold but which do have <b></b>. If we
diff --git a/src/orca/orca_gui_find.py b/src/orca/orca_gui_find.py
index 3e15daf..e6efaf4 100644
--- a/src/orca/orca_gui_find.py
+++ b/src/orca/orca_gui_find.py
@@ -27,8 +27,7 @@ __license__   = "LGPL"
 
 import os
 import sys
-import debug
-import gtk
+from gi.repository import Gtk
 import locale
 
 import find
@@ -79,22 +78,10 @@ class OrcaFindGUI(orca_gtkbuilder.GtkBuilderWrapper):
         """
 
         findDialog = self.get_widget("findDialog")
-
-        # Set the current time on the Find GUI dialog so that it'll
-        # get focus. set_user_time is a new call in pygtk 2.9.2 or later.
-        # It's surronded by a try/except block here so that if it's not found,
-        # then we can fail gracefully.
-        #
-        try:
-            findDialog.realize()
-            ts = orca_state.lastInputEventTimestamp
-            if ts == 0:
-                ts = gtk.get_current_event_time()
-            findDialog.window.set_user_time(ts)
-        except AttributeError:
-            debug.printException(debug.LEVEL_FINEST)
-
-        findDialog.show()
+        ts = orca_state.lastInputEventTimestamp
+        if ts == 0:
+            ts = Gtk.get_current_event_time()
+        findDialog.present_with_time(ts)
 
         # Populate the dialog box from the previous searchQuery, should
         # one exist.  Note:  This is necessary because we are destroying
@@ -261,7 +248,7 @@ def main():
 
     showFindUI()
 
-    gtk.main()
+    Gtk.main()
     sys.exit(0)
 
 if __name__ == "__main__":
diff --git a/src/orca/orca_gui_main.py b/src/orca/orca_gui_main.py
index 3fa6846..98b26a8 100644
--- a/src/orca/orca_gui_main.py
+++ b/src/orca/orca_gui_main.py
@@ -25,62 +25,72 @@ __date__      = "$Date$"
 __copyright__ = "Copyright (c) 2005-2009 Sun Microsystems Inc."
 __license__   = "LGPL"
 
-import os
-import sys
-import gtk
 import locale
+import sys
+from gi.repository import Gtk
 
 import orca
-import orca_gtkbuilder
 import orca_platform
+import orca_state
 
-from orca_i18n import _           # for gettext support
+from orca_i18n import _
 
 OS = None
 
-class OrcaMainGUI(orca_gtkbuilder.GtkBuilderWrapper):
+class OrcaMainGUI(Gtk.Window):
+
+    def __init__(self):
+        Gtk.Window.__init__(self)
+        self.set_title(_('Orca Screen Reader'))
+        self.set_has_resize_grip(False)
+
+        grid = Gtk.Grid()
+        grid.set_border_width(5)
+        self.add(grid)
+
+        preferencesButton = Gtk.Button.new_from_stock('gtk-preferences')
+        preferencesButton.connect('clicked', orca.showPreferencesGUI)
+        grid.attach(preferencesButton, 0, 0, 1, 1)
+
+        quitButton = Gtk.Button.new_from_stock('gtk-quit')
+        quitButton.connect('clicked', orca.quitOrca)
+        grid.attach(quitButton, 1, 0, 1, 1)
 
-    def __init__(self, fileName, windowName):
-        orca_gtkbuilder.GtkBuilderWrapper.__init__(self, fileName, windowName)
         self.aboutDialog = None
+        aboutButton = Gtk.Button.new_from_stock('gtk-about')
+        aboutButton.connect('clicked', self.aboutButtonClicked)
+        grid.attach(aboutButton, 2, 0, 1, 1)
+
+        helpButton = Gtk.Button.new_from_stock('gtk-help')
+        helpButton.connect('clicked', orca.helpForOrca)
+        grid.attach(helpButton, 3, 0, 1, 1)
+
+        accelGroup = Gtk.AccelGroup()
+        (keyVal, modMask) = Gtk.accelerator_parse('F1')
+        helpButton.add_accelerator('clicked', accelGroup, keyVal, modMask, 0)
+        self.add_accel_group(accelGroup)
+
+        self.connect('destroy', self.onDestroy)
 
     def init(self):
         pass
 
     def showGUI(self):
-        """Show the Orca main window GUI. This assumes that the GUI has 
-        already been created.
-        """
+        """Show the Orca main window GUI."""
 
-        mainWindow = self.get_widget("mainWindow")
-
-        accelGroup = gtk.AccelGroup()
-        mainWindow.add_accel_group(accelGroup)
-        helpButton = self.get_widget("helpButton")
-        (keyVal, modifierMask) = gtk.accelerator_parse("F1")
-        helpButton.add_accelerator("clicked",
-                                   accelGroup,
-                                   keyVal,
-                                   modifierMask,
-                                   0)
-
-        mainWindow.show()
+        self.show_all()
+        ts = orca_state.lastInputEventTimestamp
+        if ts == 0:
+            ts = Gtk.get_current_event_time()
+        self.present_with_time(ts)
 
     def hideGUI(self):
-        """Hide the Orca main window GUI. This assumes that the GUI has
-        already been created.
-        """
+        """Hide the Orca main window GUI."""
 
-        self.get_widget("mainWindow").hide()
+        self.hide()
 
     def aboutButtonClicked(self, widget):
-        """Signal handler for the "clicked" signal for the aboutButton
-        GtkButton widget. The user has clicked the About button.
-        Call the method to bring up the About dialog.
-
-        Arguments:
-        - widget: the component that generated the signal.
-        """
+        """Handler for the 'clicked' signal of the aboutButton GtkButton."""
 
         if self.aboutDialog:
             return
@@ -100,7 +110,12 @@ class OrcaMainGUI(orca_gtkbuilder.GtkBuilderWrapper):
                      "support AT-SPI (e.g., the GNOME desktop).")
         # Translators: This text is used in the Orca About dialog.
         #
-        copyrights = _("Copyright (c) 2005-2010 Sun Microsystems Inc. \n" \
+        copyrights = _("Copyright (c) 2010-2011 The Orca Team \n" \
+                       "Copyright (c) 2010 Consorcio Fernando de los Rios \n" \
+                       "Copyright (c) 2010 Igalia, S.L. \n" \
+                       "Copyright (c) 2010 Informal Informatica LTDA. \n" \
+                       "Copyright (c) 2010 Willie Walker \n" \
+                       "Copyright (c) 2005-2010 Sun Microsystems Inc. \n" \
                        "Copyright (c) 2005-2008 Google Inc. \n" \
                        "Copyright (c) 2008, 2009 Eitan Isaacson \n" \
                        "Copyright (c) 2006-2009 Brailcom, o.p.s. \n" \
@@ -130,7 +145,7 @@ class OrcaMainGUI(orca_gtkbuilder.GtkBuilderWrapper):
               "\nBoston MA  02110-1301 USA.")
         url = "http://live.gnome.org/Orca";
 
-        self.aboutDialog = gtk.AboutDialog()
+        self.aboutDialog = Gtk.AboutDialog()
         self.aboutDialog.set_authors(authors)
         self.aboutDialog.set_documenters(documenters)
         self.aboutDialog.set_translator_credits(translatorCredits)
@@ -145,52 +160,13 @@ class OrcaMainGUI(orca_gtkbuilder.GtkBuilderWrapper):
         self.aboutDialog.show()
 
     def aboutDialogOnResponse(self, dialog, responseID):
-        """Signal handler for the About Dialog's "response" signal."""
+        """Signal handler for the About Dialog's 'response' signal."""
 
         dialog.destroy()
         self.aboutDialog = None
 
-    def helpButtonClicked(self, widget):
-        """Signal handler for the "clicked" signal for the helpButton
-           GtkButton widget. The user has clicked the Help button.
-           Call the method to bring up the Orca help window.
-
-        Arguments:
-        - widget: the component that generated the signal.
-        """
-
-        orca.helpForOrca()
-
-    def quitButtonClicked(self, widget):
-        """Signal handler for the "clicked" signal for the quitButton
-           GtkButton widget. The user has clicked the Quit button.
-           Call the method to bring up the Quit dialog.
-
-        Arguments:
-        - widget: the component that generated the signal.
-        """
-
-        orca.quitOrca()
-
-    def preferencesButtonClicked(self, widget):
-        """Signal handler for the "clicked" signal for the preferencesButton
-           GtkButton widget. The user has clicked the Preferences button.
-           Call the method to bring up the Preferences dialog.
-
-        Arguments:
-        - widget: the component that generated the signal.
-        """
-
-        orca.showPreferencesGUI()
-
-    def mainWindowDestroyed(self, widget):
-        """Signal handler for the "destroyed" signal for the mainWindow
-           GtkWindow widget. Reset OS to None, then call the method to 
-           bring up the quit dialog.
-
-        Arguments:
-        - widget: the component that generated the signal.
-        """
+    def onDestroy(self, widget):
+        """Signal handler for the 'destroy' signal for this window."""
 
         global OS
 
@@ -201,12 +177,7 @@ def showMainUI():
     global OS
 
     if not OS:
-        uiFile = os.path.join(orca_platform.prefix,
-                              orca_platform.datadirname,
-                              orca_platform.package,
-                              "ui",
-                              "orca-mainwin.ui")
-        OS = OrcaMainGUI(uiFile, "mainWindow")
+        OS = OrcaMainGUI()
         OS.init()
 
     OS.showGUI()
@@ -220,7 +191,7 @@ def main():
 
     showMainUI()
 
-    gtk.main()
+    Gtk.main()
     sys.exit(0)
 
 if __name__ == "__main__":
diff --git a/src/orca/orca_gui_prefs.py b/src/orca/orca_gui_prefs.py
index cf7f438..677f897 100644
--- a/src/orca/orca_gui_prefs.py
+++ b/src/orca/orca_gui_prefs.py
@@ -27,14 +27,14 @@ __license__   = "LGPL"
 
 import os
 import sys
-import debug
-import gtk
-import gobject
-import pango   # for ellipsize property constants of CellRendererText
+from gi.repository import Gtk
+from gi.repository import GObject
+from gi.repository import Pango
 import locale
 import time
 
 import acss
+import debug
 import orca
 import orca_gtkbuilder
 import orca_state
@@ -192,32 +192,32 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
             for column in self.keyBindView.get_columns():
                 self.keyBindView.remove_column(column)
 
-        self.keyBindingsModel = gtk.TreeStore(
-            gobject.TYPE_STRING,  # Handler name
-            gobject.TYPE_STRING,  # Human Readable Description
-            gobject.TYPE_STRING,  # Modifier mask 1
-            gobject.TYPE_STRING,  # Used Modifiers 1
-            gobject.TYPE_STRING,  # Modifier key name 1
-            gobject.TYPE_STRING,  # Click count 1
-            gobject.TYPE_STRING,  # Original Text of the Key Binding Shown 1
-            gobject.TYPE_STRING,  # Text of the Key Binding Shown 1
-            gobject.TYPE_STRING,  # Modifier mask 2
-            gobject.TYPE_STRING,  # Used Modifiers 2
-            gobject.TYPE_STRING,  # Modifier key name 2
-            gobject.TYPE_STRING,  # Click count 2
-            gobject.TYPE_STRING,  # Original Text of the Key Binding Shown 2
-            gobject.TYPE_STRING,  # Text of the Key Binding Shown 2
-            gobject.TYPE_BOOLEAN, # Key Modified by User
-            gobject.TYPE_BOOLEAN) # Row with fields editable or not
-
-        self.planeCellRendererText = gtk.CellRendererText()
-
-        self.cellRendererText = gtk.CellRendererText()
-        self.cellRendererText.set_property("ellipsize", pango.ELLIPSIZE_END)
+        self.keyBindingsModel = Gtk.TreeStore(
+            GObject.TYPE_STRING,  # Handler name
+            GObject.TYPE_STRING,  # Human Readable Description
+            GObject.TYPE_STRING,  # Modifier mask 1
+            GObject.TYPE_STRING,  # Used Modifiers 1
+            GObject.TYPE_STRING,  # Modifier key name 1
+            GObject.TYPE_STRING,  # Click count 1
+            GObject.TYPE_STRING,  # Original Text of the Key Binding Shown 1
+            GObject.TYPE_STRING,  # Text of the Key Binding Shown 1
+            GObject.TYPE_STRING,  # Modifier mask 2
+            GObject.TYPE_STRING,  # Used Modifiers 2
+            GObject.TYPE_STRING,  # Modifier key name 2
+            GObject.TYPE_STRING,  # Click count 2
+            GObject.TYPE_STRING,  # Original Text of the Key Binding Shown 2
+            GObject.TYPE_STRING,  # Text of the Key Binding Shown 2
+            GObject.TYPE_BOOLEAN, # Key Modified by User
+            GObject.TYPE_BOOLEAN) # Row with fields editable or not
+
+        self.planeCellRendererText = Gtk.CellRendererText()
+
+        self.cellRendererText = Gtk.CellRendererText()
+        self.cellRendererText.set_property("ellipsize", Pango.EllipsizeMode.END)
 
         # HANDLER - invisble column
         #
-        column = gtk.TreeViewColumn("Handler",
+        column = Gtk.TreeViewColumn("Handler",
                                     self.planeCellRendererText,
                                     text=HANDLER)
         column.set_resizable(True)
@@ -233,7 +233,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         # what action Orca will take when the user invokes an Orca-specific
         # keyboard command.
         #
-        column = gtk.TreeViewColumn(_("Function"),
+        column = Gtk.TreeViewColumn(_("Function"),
                                     self.cellRendererText,
                                     text=DESCRIP)
         column.set_resizable(True)
@@ -243,7 +243,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
 
         # MOD_MASK1 - invisble column
         #
-        column = gtk.TreeViewColumn("Mod.Mask 1",
+        column = Gtk.TreeViewColumn("Mod.Mask 1",
                                     self.planeCellRendererText,
                                     text=MOD_MASK1)
         column.set_visible(False)
@@ -253,7 +253,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
 
         # MOD_USED1 - invisble column
         #
-        column = gtk.TreeViewColumn("Use Mod.1",
+        column = Gtk.TreeViewColumn("Use Mod.1",
                                     self.planeCellRendererText,
                                     text=MOD_USED1)
         column.set_visible(False)
@@ -263,7 +263,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
 
         # KEY1 - invisble column
         #
-        column = gtk.TreeViewColumn("Key1",
+        column = Gtk.TreeViewColumn("Key1",
                                     self.planeCellRendererText,
                                     text=KEY1)
         column.set_resizable(True)
@@ -273,7 +273,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
 
         # CLICK_COUNT1 - invisble column
         #
-        column = gtk.TreeViewColumn("ClickCount1",
+        column = Gtk.TreeViewColumn("ClickCount1",
                                     self.planeCellRendererText,
                                     text=CLICK_COUNT1)
         column.set_resizable(True)
@@ -286,7 +286,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         # buttons being pressed.  This will prevent automatic
         # resorting each time a cell is edited.
         #
-        column = gtk.TreeViewColumn("OldText1",
+        column = Gtk.TreeViewColumn("OldText1",
                                     self.planeCellRendererText,
                                     text=OLDTEXT1)
         column.set_resizable(True)
@@ -296,7 +296,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
 
         # TEXT1
         #
-        rendererText = gtk.CellRendererText()
+        rendererText = Gtk.CellRendererText()
         rendererText.connect("editing-started",
                              self.editingKey,
                              self.keyBindingsModel)
@@ -311,7 +311,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         # the cells in the column represent keyboard combinations
         # the user can press to invoke Orca commands.
         #
-        column = gtk.TreeViewColumn(_("Key Binding"),
+        column = Gtk.TreeViewColumn(_("Key Binding"),
                                     rendererText,
                                     text=TEXT1,
                                     editable=EDITABLE)
@@ -321,7 +321,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
 
         # MOD_MASK2 - invisble column
         #
-        column = gtk.TreeViewColumn("Mod.Mask 2",
+        column = Gtk.TreeViewColumn("Mod.Mask 2",
                                     self.planeCellRendererText,
                                     text=MOD_MASK2)
         column.set_visible(False)
@@ -331,7 +331,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
 
         # MOD_USED2 - invisble column
         #
-        column = gtk.TreeViewColumn("Use Mod.2",
+        column = Gtk.TreeViewColumn("Use Mod.2",
                                     self.planeCellRendererText,
                                     text=MOD_USED2)
         column.set_visible(False)
@@ -341,7 +341,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
 
         # KEY2 - invisble column
         #
-        column = gtk.TreeViewColumn("Key2", rendererText, text=KEY2)
+        column = Gtk.TreeViewColumn("Key2", rendererText, text=KEY2)
         column.set_resizable(True)
         column.set_visible(False)
         column.set_sort_column_id(KEY2)
@@ -349,7 +349,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
 
         # CLICK_COUNT2 - invisble column
         #
-        column = gtk.TreeViewColumn("ClickCount2",
+        column = Gtk.TreeViewColumn("ClickCount2",
                                     self.planeCellRendererText,
                                     text=CLICK_COUNT2)
         column.set_resizable(True)
@@ -362,7 +362,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         # buttons being pressed.  This will prevent automatic
         # resorting each time a cell is edited.
         #
-        column = gtk.TreeViewColumn("OldText2",
+        column = Gtk.TreeViewColumn("OldText2",
                                     self.planeCellRendererText,
                                     text=OLDTEXT2)
         column.set_resizable(True)
@@ -372,7 +372,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
 
         # TEXT2
         #
-        rendererText = gtk.CellRendererText()
+        rendererText = Gtk.CellRendererText()
         rendererText.connect("editing-started",
                              self.editingKey,
                              self.keyBindingsModel)
@@ -390,7 +390,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         # addition to the key bindings in the "Key Bindings"
         # column.
         #
-        column = gtk.TreeViewColumn(_("Alternate"),
+        column = Gtk.TreeViewColumn(_("Alternate"),
                                     rendererText,
                                     text=TEXT2,
                                     editable=EDITABLE)
@@ -400,7 +400,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
 
         # MODIF
         #
-        rendererToggle = gtk.CellRendererToggle()
+        rendererToggle = Gtk.CellRendererToggle()
         rendererToggle.connect('toggled',
                                self.keyModifiedToggle,
                                self.keyBindingsModel,
@@ -410,7 +410,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         # cells represent whether a key binding has been modified
         # from the default key binding.
         #
-        column = gtk.TreeViewColumn(_("Modified"),
+        column = Gtk.TreeViewColumn(_("Modified"),
                                     rendererToggle,
                                     active=MODIF,
                                     activatable=EDITABLE)
@@ -421,9 +421,9 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
 
         # EDITABLE - invisble column
         #
-        rendererToggle = gtk.CellRendererToggle()
+        rendererToggle = Gtk.CellRendererToggle()
         rendererToggle.set_property('activatable', False)
-        column = gtk.TreeViewColumn("Modified",
+        column = Gtk.TreeViewColumn("Modified",
                                     rendererToggle,
                                     active=EDITABLE)
         column.set_visible(False)
@@ -745,7 +745,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         # voice type.  Whenever the families change, we'll reset the
         # voice type selection to the first one ("Default").
         #
-        comboBox = self.get_widget("voiceTypes")
+        comboBox = self.get_widget("voiceTypesCombo")
         types = []
         # Translators: This refers to the default/typical voice used
         # by Orca when presenting the content of the screen and other
@@ -1002,10 +1002,9 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
                                                         attrDict[attrList[i]])
                 if localizedKey == model[path][NAME]:
                     thisIter = model.get_iter(path)
-                    model.set(thisIter, 
-                        NAME, localizedKey,
-                        IS_SPOKEN, state,
-                        VALUE, localizedValue)
+                    model.set_value(thisIter, NAME, localizedKey)
+                    model.set_value(thisIter, IS_SPOKEN, state)
+                    model.set_value(thisIter, VALUE, localizedValue)
                     if moveToTop:
                         thisIter = model.get_iter(path)
                         otherIter = model.get_iter(i)
@@ -1039,7 +1038,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
                         text_attribute_names.getTextAttributeName(attrList[i])
                 if localizedKey == model[path][NAME]:
                     thisIter = model.get_iter(path)
-                    model.set(thisIter, IS_BRAILLED, state)
+                    model.set_value(thisIter, IS_BRAILLED, state)
                     break
 
         view.set_model(model)
@@ -1091,8 +1090,8 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         self.prefsDict["enabledBrailledTextAttributes"] = brailledAttrStr
 
     def contractedBrailleToggled(self, checkbox):
-        hbox = self.get_widget('contractionTablesHBox')
-        hbox.set_sensitive(checkbox.get_active())
+        grid = self.get_widget('contractionTableGrid')
+        grid.set_sensitive(checkbox.get_active())
         self.prefsDict["enableContractedBraille"] = checkbox.get_active()
 
     def contractionTableComboChanged(self, combobox):
@@ -1179,10 +1178,10 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
             for column in self.getTextAttributesView.get_columns():
                 self.getTextAttributesView.remove_column(column)
 
-        model = gtk.ListStore(gobject.TYPE_STRING,
-                              gobject.TYPE_BOOLEAN,
-                              gobject.TYPE_BOOLEAN,
-                              gobject.TYPE_STRING)
+        model = Gtk.ListStore(GObject.TYPE_STRING,
+                              GObject.TYPE_BOOLEAN,
+                              GObject.TYPE_BOOLEAN,
+                              GObject.TYPE_STRING)
 
         # Initially setup the list store model based on the values of all
         # the known text attributes.
@@ -1197,11 +1196,10 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
             localizedValue = \
                 text_attribute_names.getTextAttributeName( \
                                              allAttrDict[allAttrList[i]])
-            model.set(thisIter, 
-                NAME, localizedKey,
-                IS_SPOKEN, False,
-                IS_BRAILLED, False,
-                VALUE, localizedValue)
+            model.set_value(thisIter, NAME, localizedKey)
+            model.set_value(thisIter, IS_SPOKEN, False)
+            model.set_value(thisIter, IS_BRAILLED, False)
+            model.set_value(thisIter, VALUE, localizedValue)
 
         self.getTextAttributesView.set_model(model)
 
@@ -1210,12 +1208,12 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         # Translators: Attribute here refers to text attributes such
         # as bold, underline, family-name, etc.
         #
-        column = gtk.TreeViewColumn(_("Attribute Name"))
+        column = Gtk.TreeViewColumn(_("Attribute Name"))
         column.set_min_width(250)
         column.set_resizable(True)
-        renderer = gtk.CellRendererText()
+        renderer = Gtk.CellRendererText()
         column.pack_end(renderer, True)
-        column.set_attributes(renderer, text=NAME)
+        column.add_attribute(renderer, 'text', NAME)
         self.getTextAttributesView.insert_column(column, 0)
 
         # Attribute Speak column (IS_SPOKEN).
@@ -1226,10 +1224,10 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         # presses Orca_Modifier+F.
         #
         speakAttrColumnLabel = _("Speak")
-        column = gtk.TreeViewColumn(speakAttrColumnLabel)
-        renderer = gtk.CellRendererToggle()
+        column = Gtk.TreeViewColumn(speakAttrColumnLabel)
+        renderer = Gtk.CellRendererToggle()
         column.pack_start(renderer, False)
-        column.set_attributes(renderer, active=IS_SPOKEN)
+        column.add_attribute(renderer, 'active', IS_SPOKEN)
         renderer.connect("toggled",
                          self.textAttributeSpokenToggled,
                          model)
@@ -1244,10 +1242,10 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         # the refreshable braille display.
         #
         markAttrColumnLabel = _("Mark in braille")
-        column = gtk.TreeViewColumn(markAttrColumnLabel)
-        renderer = gtk.CellRendererToggle()
+        column = Gtk.TreeViewColumn(markAttrColumnLabel)
+        renderer = Gtk.CellRendererToggle()
         column.pack_start(renderer, False)
-        column.set_attributes(renderer, active=IS_BRAILLED)
+        column.add_attribute(renderer, 'active', IS_BRAILLED)
         renderer.connect("toggled",
                          self.textAttributeBrailledToggled,
                          model)
@@ -1269,11 +1267,11 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         # value of underline is none (i.e. when it's not underlined).
         # "Present" here is being used as a verb.
         #
-        column = gtk.TreeViewColumn(_("Present Unless"))
-        renderer = gtk.CellRendererText()
+        column = Gtk.TreeViewColumn(_("Present Unless"))
+        renderer = Gtk.CellRendererText()
         renderer.set_property('editable', True)
         column.pack_end(renderer, True)
-        column.set_attributes(renderer, text=VALUE)
+        column.add_attribute(renderer, 'text', VALUE)
         renderer.connect("edited", self.textAttrValueEdited, model)
 
         self.getTextAttributesView.insert_column(column, 4)
@@ -1358,8 +1356,8 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
             for column in self.pronunciationView.get_columns():
                 self.pronunciationView.remove_column(column)
 
-        model = gtk.ListStore(gobject.TYPE_STRING,
-                              gobject.TYPE_STRING)
+        model = Gtk.ListStore(GObject.TYPE_STRING,
+                              GObject.TYPE_STRING)
 
         # Initially setup the list store model based on the values of all
         # existing entries in the pronunciation dictionary.
@@ -1392,13 +1390,13 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         # or a particular word that is pronounced differently then the way
         # that it looks.
         #
-        column = gtk.TreeViewColumn(_("Actual String"))
+        column = Gtk.TreeViewColumn(_("Actual String"))
         column.set_min_width(250)
         column.set_resizable(True)
-        renderer = gtk.CellRendererText()
+        renderer = Gtk.CellRendererText()
         renderer.set_property('editable', True)
         column.pack_end(renderer, True) 
-        column.set_attributes(renderer, text=ACTUAL)
+        column.add_attribute(renderer, 'text', ACTUAL)
         renderer.connect("edited", self.pronActualValueEdited, model)
         self.pronunciationView.insert_column(column, 0)
 
@@ -1409,11 +1407,11 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         # For example: if the actual string was "MHz", then the replacement
         # (spoken) string would be "megahertz".
         #
-        column = gtk.TreeViewColumn(_("Replacement String"))
-        renderer = gtk.CellRendererText()
+        column = Gtk.TreeViewColumn(_("Replacement String"))
+        renderer = Gtk.CellRendererText()
         renderer.set_property('editable', True)
         column.pack_end(renderer, True)
-        column.set_attributes(renderer, text=REPLACEMENT)
+        column.add_attribute(renderer, 'text', REPLACEMENT)
         renderer.connect("edited", self.pronReplacementValueEdited, model)
         self.pronunciationView.insert_column(column, 1)
 
@@ -1436,11 +1434,11 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         #
         enable = prefs["enableSpeech"]
         self.get_widget("speechSupportCheckButton").set_active(enable)
-        self.get_widget("speechVbox").set_sensitive(enable)
+        self.get_widget("speechOptionsGrid").set_sensitive(enable)
 
         enable = prefs["onlySpeakDisplayedText"]
         self.get_widget("onlySpeakDisplayedTextCheckButton").set_active(enable)
-        self.get_widget("speechContextVBox").set_sensitive(not enable)
+        self.get_widget("contextOptionsGrid").set_sensitive(not enable)
 
         if prefs["verbalizePunctuationStyle"] == \
                                settings.PUNCTUATION_STYLE_NONE:
@@ -1587,7 +1585,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         #
         enable = prefs["enableProgressBarUpdates"]
         self.get_widget("speechProgressBarCheckButton").set_active(enable)
-        self.get_widget("speakUpdateIntervalHBox").set_sensitive(enable)
+        self.get_widget("progressBarUpdatesOptionsGrid").set_sensitive(enable)
 
         interval = prefs["progressBarUpdateInterval"]
         self.get_widget("speakProgressBarSpinButton").set_value(interval)
@@ -1647,7 +1645,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
             selectedTable = prefs["brailleContractionTable"] or \
                              braille.getDefaultTable()
             if tableDict:
-                tablesModel = gtk.ListStore(str, str)
+                tablesModel = Gtk.ListStore(str, str)
                 names = tableDict.keys()
                 names.sort()
                 for name in names:
@@ -1757,8 +1755,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         self.get_widget("quitOrcaNoConfirmationCheckButton").set_active(
             prefs["quitOrcaNoConfirmation"])        
         self.get_widget("presentToolTipsCheckButton").set_active(
-            prefs["presentToolTips"] \
-                and _settingsManager.getSetting('canPresentToolTips'))
+            prefs["presentToolTips"])
 
         if prefs["keyboardLayout"] == settings.GENERAL_KEYBOARD_LAYOUT_DESKTOP:
             self.get_widget("generalDesktopButton").set_active(True)
@@ -1812,7 +1809,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         - items: the list of strings with which to populate it
         """
 
-        model = gtk.ListStore(str)
+        model = Gtk.ListStore(str)
         for item in items:
             model.append([item])
         combobox.set_model(model)
@@ -1888,37 +1885,20 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
 
         orcaSetupWindow = self.get_widget("orcaSetupWindow")
 
-        accelGroup = gtk.AccelGroup()
+        accelGroup = Gtk.AccelGroup()
         orcaSetupWindow.add_accel_group(accelGroup)
         helpButton = self.get_widget("helpButton")
-        (keyVal, modifierMask) = gtk.accelerator_parse("F1")
+        (keyVal, modifierMask) = Gtk.accelerator_parse("F1")
         helpButton.add_accelerator("clicked",
                                    accelGroup,
                                    keyVal,
                                    modifierMask,
                                    0)
 
-        # We want the Orca preferences window to have focus when it is
-        # shown. First try using the present() call. If this isn't present
-        # in the version of pygtk that the user is using, just catch the
-        # exception. Then try to set the current time on the Preferences 
-        # window using set_user_time. If that isn't found, then catch the 
-        # exception and fail gracefully.
-        #
-        orcaSetupWindow.realize()
-        try:
-            if _settingsManager.getSettings('showMainWindow'):
-                orcaSetupWindow.present()
-        except:
-            pass
-        try:
-            ts = orca_state.lastInputEventTimestamp
-            if ts == 0:
-                ts = gtk.get_current_event_time()
-            if ts > 0:
-                orcaSetupWindow.window.set_user_time(ts)
-        except AttributeError:
-            debug.printException(debug.LEVEL_FINEST)
+        ts = orca_state.lastInputEventTimestamp
+        if ts == 0:
+            ts = Gtk.get_current_event_time()
+        orcaSetupWindow.present_with_time(ts)
 
         # We always want to re-order the text attributes page so that enabled
         # items are consistently at the top.
@@ -1937,7 +1917,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         - combobox: the GtkComboBox to initialize.
         """
 
-        cell = gtk.CellRendererText()
+        cell = Gtk.CellRendererText()
         combobox.pack_start(cell, True)
         # We only want to display one column; not two.
         #
@@ -1946,12 +1926,12 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
             combobox.add_attribute(columnToDisplay, 'text', 1)
         except:
             combobox.add_attribute(cell, 'text', 1)
-        model = gtk.ListStore(int, str)
+        model = Gtk.ListStore(int, str)
         combobox.set_model(model)
 
         # Force the display comboboxes to be left aligned.
         #
-        if isinstance(combobox, gtk.ComboBoxEntry):
+        if isinstance(combobox, Gtk.ComboBoxText):
             size = combobox.size_request()
             cell.set_fixed_size(size[0] - 29, -1)
 
@@ -1999,14 +1979,13 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         model = self.keyBindingsModel
 
         myiter = model.append(None)
-        model.set(myiter,
-                  DESCRIP, appName,
-                  MODIF, False)
+        model.set_value(myiter, DESCRIP, appName)
+        model.set_value(myiter, MODIF, False)
 
         return myiter
 
     def _getIterOf(self, appName):
-        """Returns the gtk.TreeIter of the TreeStore model
+        """Returns the Gtk.TreeIter of the TreeStore model
         that matches the application name passed as argument
 
         Arguments:
@@ -2072,13 +2051,14 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
                         text = keybindings.getModifierNames(kb.modifiers) \
                                + kb.keysymstring \
                                + clickCount
-                    model.set(iterChild,
-                              MOD_MASK2, str(kb.modifier_mask),
-                              MOD_USED2, str(kb.modifiers),
-                              KEY2, kb.keysymstring,
-                              CLICK_COUNT2, str(kb.click_count),
-                              OLDTEXT2, text,
-                              TEXT2, text)
+
+
+                    model.set_value(iterChild, MOD_MASK2, str(kb.modifier_mask))
+                    model.set_value(iterChild, MOD_USED2, str(kb.modifiers))
+                    model.set_value(iterChild, KEY2, kb.keysymstring)
+                    model.set_value(iterChild, CLICK_COUNT2, str(kb.click_count))
+                    model.set_value(iterChild, OLDTEXT2, text)
+                    model.set_value(iterChild, TEXT2, text)
                 iterChild = model.iter_next(iterChild)
             myiter = model.iter_next(myiter)
 
@@ -2093,7 +2073,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         - parent: the parent node of the treeview, where to append the kb
         - modif:  whether to check the modified field or not.
 
-        Returns a gtk.TreeIter pointing at the new row.
+        Returns a Gtk.TreeIter pointing at the new row.
         """
 
         model = self.keyBindingsModel
@@ -2110,17 +2090,19 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
                 text = keybindings.getModifierNames(kb.modifiers) \
                        + kb.keysymstring \
                        + clickCount
-            model.set (myiter,
-                       HANDLER,      handl,
-                       DESCRIP,      kb.handler.description,
-                       MOD_MASK1,    str(kb.modifier_mask),
-                       MOD_USED1,    str(kb.modifiers),
-                       KEY1,         kb.keysymstring,
-                       CLICK_COUNT1, str(kb.click_count),
-                       OLDTEXT1,     text,
-                       TEXT1,        text,
-                       MODIF,        modif,
-                       EDITABLE,     True)
+
+            model.set_value(myiter, HANDLER, handl)
+            model.set_value(myiter, DESCRIP, kb.handler.description)
+            model.set_value(myiter, MOD_MASK1, str(kb.modifier_mask))
+            model.set_value(myiter, MOD_USED1, str(kb.modifiers))
+            model.set_value(myiter, KEY1, kb.keysymstring)
+            model.set_value(myiter, CLICK_COUNT1, str(kb.click_count))
+            if text != None:
+                model.set_value(myiter, OLDTEXT1, text)
+                model.set_value(myiter, TEXT1, text)
+            model.set_value(myiter, MODIF, modif)
+            model.set_value(myiter, EDITABLE, True)
+
             return myiter
         else:
             return None
@@ -2136,7 +2118,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         - parent:      the parent node of the treeview, where to append the kb
         - modif:       whether to check the modified field or not.
 
-        Returns a gtk.TreeIter pointing at the new row.
+        Returns a Gtk.TreeIter pointing at the new row.
         """
 
         model = self.keyBindingsModel
@@ -2151,13 +2133,12 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
 
         if parent != None:
             myiter = model.append(parent)
-            model.set (myiter,
-                       HANDLER,  handl,
-                       DESCRIP,  inputEvHand.description,
-                       KEY1,     str(com),
-                       TEXT1,    braille.command_name[com],
-                       MODIF,    modif,
-                       EDITABLE, False)
+            model.set_value(myiter, HANDLER, handl)
+            model.set_value(myiter, DESCRIP, inputEvHand.description)
+            model.set_value(myiter, KEY1, str(com))
+            model.set_value(myiter, TEXT1, braille.command_name[com])
+            model.set_value(myiter, MODIF, modif)
+            model.set_value(myiter, EDITABLE, False)
             return myiter
         else:
             return None
@@ -2198,7 +2179,6 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
 
         self.keyBindView.set_model(None)
         self.keyBindView.set_headers_visible(False)
-        self.keyBindView.hide_all()
         self.keyBindView.hide()
         if clearModel:
             self.keyBindingsModel.clear()
@@ -2251,7 +2231,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         self.keyBindView.set_model(self.keyBindingsModel)
         self.keyBindView.set_headers_visible(True)
         self.keyBindView.expand_all()
-        self.keyBindingsModel.set_sort_column_id(OLDTEXT1, gtk.SORT_ASCENDING)
+        self.keyBindingsModel.set_sort_column_id(OLDTEXT1, Gtk.SortType.ASCENDING)
         self.keyBindView.show()
 
         # Keep track of new/unbound keybindings that have yet to be applied.
@@ -2284,12 +2264,12 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
 
         enable = widget.get_active()
         self.prefsDict["enableSpeech"] = enable
-        self.get_widget("speechVbox").set_sensitive(enable)
+        self.get_widget("speechOptionsGrid").set_sensitive(enable)
 
     def onlySpeakDisplayedTextToggled(self, widget):
         """Signal handler for the "toggled" signal for the GtkCheckButton
         onlySpeakDisplayedText. In addition to updating the preferences,
-        set the sensitivity of the speechContextVBox.
+        set the sensitivity of the contextOptionsGrid.
 
         Arguments:
         - widget: the component that generated the signal.
@@ -2297,7 +2277,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
 
         enable = widget.get_active()
         self.prefsDict["onlySpeakDisplayedText"] = enable
-        self.get_widget("speechContextVBox").set_sensitive(not enable)
+        self.get_widget("contextOptionsGrid").set_sensitive(not enable)
 
     def speechSystemsChanged(self, widget):
         """Signal handler for the "changed" signal for the speechSystems
@@ -2366,7 +2346,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
             family = self.speechFamiliesChoices[selectedIndex]
             name = family[speechserver.VoiceFamily.NAME]
             language = family[speechserver.VoiceFamily.LOCALE]
-            voiceType = self.get_widget("voiceTypes").get_active()
+            voiceType = self.get_widget("voiceTypesCombo").get_active()
             self._setFamilyNameForVoiceType(voiceType, name, language)
         except:
             debug.printException(debug.LEVEL_SEVERE)
@@ -2404,7 +2384,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         """
 
         rate = widget.get_value()
-        voiceType = self.get_widget("voiceTypes").get_active()
+        voiceType = self.get_widget("voiceTypesCombo").get_active()
         self._setRateForVoiceType(voiceType, rate)
         voices = _settingsManager.getSetting('voices')
         voices[settings.DEFAULT_VOICE][acss.ACSS.RATE] = rate
@@ -2421,7 +2401,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         """
 
         pitch = widget.get_value()
-        voiceType = self.get_widget("voiceTypes").get_active()
+        voiceType = self.get_widget("voiceTypesCombo").get_active()
         self._setPitchForVoiceType(voiceType, pitch)
         voices = _settingsManager.getSetting('voices')
         voices[settings.DEFAULT_VOICE][acss.ACSS.AVERAGE_PITCH] = pitch
@@ -2438,7 +2418,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         """
 
         volume = widget.get_value()
-        voiceType = self.get_widget("voiceTypes").get_active()
+        voiceType = self.get_widget("voiceTypesCombo").get_active()
         self._setVolumeForVoiceType(voiceType, volume)
         voices = _settingsManager.getSetting('voices')
         voices[settings.DEFAULT_VOICE][acss.ACSS.GAIN] = volume
@@ -2457,7 +2437,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         # The name of the setting that will be changed is: settingName
         # The id of the widget in the ui should be: settingNameCheckButton
         #
-        settingName = gtk.Buildable.get_name(widget)
+        settingName = Gtk.Buildable.get_name(widget)
         # strip "CheckButton" from the end.
         settingName = settingName[:-11] 
         self.prefsDict[settingName] = widget.get_active()
@@ -2645,7 +2625,9 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         - widget: the component that generated the signal.
         """
 
-        orcaModifier = widget.get_active_text()
+        model = widget.get_model()
+        myIter = widget.get_active_iter()
+        orcaModifier = model[myIter][0]
         self.prefsDict["orcaModifierKeys"] = orcaModifier.split(', ')
 
     def progressBarVerbosityChanged(self, widget):
@@ -2657,7 +2639,10 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         - widget: the component that generated the signal.
         """
 
-        progressBarVerbosity = widget.get_active_text()
+        model = widget.get_model()
+        myIter = widget.get_active_iter()
+        progressBarVerbosity = model[myIter][0]
+
         # Translators: Orca has a setting which determines which progress
         # bar updates should be announced. Choosing "All" means that Orca
         # will present progress bar updates regardless of what application
@@ -2693,7 +2678,10 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         - widget: the component that generated the signal.
         """
 
-        sayAllStyle = widget.get_active_text()
+        model = widget.get_model()
+        myIter = widget.get_active_iter()
+        sayAllStyle = model[myIter][0]
+
         # Translators: If this setting is chosen and the user is reading
         # over an entire document, Orca will pause at the end of each
         # line.
@@ -2824,7 +2812,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
            speechProgressBarCheckButton GtkCheckButton widget.
            The user has [un]checked the "Speak progress bar updates" checkbox.
            Set the 'enableProgressBarUpdates' preference to the new value.
-           Set the rest of the 'update interval' hbox items [in]sensensitive
+           Set the rest of the 'update interval' items [in]sensensitive
            depending upon whether this checkbox is checked.
 
         Arguments:
@@ -2833,8 +2821,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
 
         enable = widget.get_active()
         self.prefsDict["enableProgressBarUpdates"] = enable
-        self.get_widget("speakUpdateIntervalHBox").set_sensitive(enable)
-        self.get_widget("progressBarVerbosityHBox").set_sensitive(enable)
+        self.get_widget("progressBarUpdatesOptionsGrid").set_sensitive(enable)
 
     def speakProgressBarValueChanged(self, widget):
         """Signal handler for the "value_changed" signal for the
@@ -3026,9 +3013,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         - widget: the component that generated the signal.
         """
 
-        self.prefsDict["presentToolTips"] = \
-            widget.get_active() \
-            and _settingsManager.getSetting('canPresentToolTips')
+        self.prefsDict["presentToolTips"] = widget.get_active()
 
     def keyboardLayoutChanged(self, widget):
         """Signal handler for the "toggled" signal for the generalDesktopButton,
@@ -3070,14 +3055,13 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         - widget: the component that generated the signal.
         """
 
-        model, oldIter = self.pronunciationView.get_selection().get_selected()
+        model = self.pronunciationView.get_model()
         thisIter = model.append()
-
-        model.set(thisIter, ACTUAL, "", REPLACEMENT, "")
-        noRows = model.iter_n_children(None)
+        model.set(thisIter, ACTUAL, "", REPLACEMENT, "")        
+        path = model.get_path(thisIter)
         col = self.pronunciationView.get_column(0)
         self.pronunciationView.grab_focus()
-        self.pronunciationView.set_cursor(noRows-1, col, True) 
+        self.pronunciationView.set_cursor(path, col, True) 
 
     def pronunciationDeleteButtonClicked(self, widget):
         """Signal handler for the "clicked" signal for the
@@ -3191,8 +3175,9 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         [model, paths] = textSelection.get_selected_rows()
         for path in paths:
             thisIter = model.get_iter(path)
-            if path[0]:
-                otherIter = model.iter_nth_child(None, path[0]-1)
+            indices = path.get_indices()
+            if indices[0]:
+                otherIter = model.iter_nth_child(None, indices[0]-1)
                 model.swap(thisIter, otherIter)
         self._updateTextDictEntry()
 
@@ -3213,7 +3198,8 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         noRows = model.iter_n_children(None)
         for path in paths:
             thisIter = model.get_iter(path)
-            if path[0] < noRows-1:
+            indices = path.get_indices()
+            if indices[0] < noRows-1:
                 otherIter = model.iter_next(thisIter)
                 model.swap(thisIter, otherIter)
         self._updateTextDictEntry()
@@ -3367,15 +3353,15 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         - widget: the component that generated the signal.
         """
 
+        if settings.showMainWindow:
+            orca.showMainWindowGUI()
+
         self.keyBindView.set_model(None)
         self.getTextAttributesView.set_model(None)
         self.pronunciationView.set_model(None)
         self.keyBindView.set_headers_visible(False)
         self.getTextAttributesView.set_headers_visible(False)
         self.pronunciationView.set_headers_visible(False)
-        self.keyBindView.hide_all()
-        self.getTextAttributesView.hide_all()
-        self.pronunciationView.hide_all()
         self.keyBindView.hide()
         self.getTextAttributesView.hide()
         self.pronunciationView.hide()
@@ -3420,17 +3406,17 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
                             "Continue updating the existing profile with " \
                             "these new changes?") % profileToSaveLabel
 
-                dialog = gtk.MessageDialog(None,
-                        gtk.DIALOG_MODAL,
-                        type=gtk.MESSAGE_INFO,
-                        buttons=gtk.BUTTONS_YES_NO)
+                dialog = Gtk.MessageDialog(None,
+                        Gtk.DialogFlags.MODAL,
+                        type=Gtk.MessageType.INFO,
+                        buttons=Gtk.ButtonsType.YES_NO)
 
                 dialog.set_markup(_("<b>User Profile Conflict!</b>"))
                 dialog.format_secondary_markup(message)
                 dialog.set_title(_("Save Profile As Conflict"))
                 response = dialog.run()
 
-                if response == gtk.RESPONSE_YES:
+                if response == Gtk.ResponseType.YES:
                     dialog.destroy()
                     saveActiveProfile(False)
                 else:
@@ -3449,17 +3435,17 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
                     "be dropped at profile load.\n\n" \
                     "Continue loading profile discarding previous changes?")
 
-        dialog = gtk.MessageDialog(None,
-                gtk.DIALOG_MODAL,
-                type=gtk.MESSAGE_INFO,
-                buttons=gtk.BUTTONS_YES_NO)
+        dialog = Gtk.MessageDialog(None,
+                Gtk.DialogFlags.MODAL,
+                type=Gtk.MessageType.INFO,
+                buttons=Gtk.ButtonsType.YES_NO)
 
         dialog.set_markup(_("<b>Load user profile info</b>"))
         dialog.format_secondary_markup(message)
         dialog.set_title(_("Load User Profile"))
         response = dialog.run()
 
-        if response == gtk.RESPONSE_YES:
+        if response == Gtk.ResponseType.YES:
             dialog.destroy()
             self.loadSelectedProfile()
         else:
@@ -3489,39 +3475,40 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
 
         self.__initProfileCombo()
 
-class WarningDialogGUI(orca_gtkbuilder.GtkBuilderWrapper):
+class WarningDialogGUI(Gtk.MessageDialog):
 
-    def getPrefsWarningDialog(self):
-        """Return a handle to the Orca Preferences warning dialog.
-        """
+    def __init__(self):
+        Gtk.MessageDialog.__init__(self)
+        self.set_property('message-type', Gtk.MessageType.INFO)
+        msg = _('You already have an instance of an Orca preferences dialog ' \
+                'open.\nPlease close it before opening a new one.')
+        self.set_property('text', msg)
 
-        return self.orcaPrefsWarningDialog
+        self.add_button('gtk-ok', Gtk.ResponseType.OK)
+        self.connect('response', self.onResponse)
+        self.connect('destroy', self.onDestroy)
 
-    def orcaPrefsWarningDialogDestroyed(self, widget):
-        """Signal handler for the "destroyed" signal for the 
-        orcaPrefsWarningDialog GtkWindow widget. Reset orca_state.orcaWD
-        to None, so that the GUI can be rebuilt from the GtkBuilder file the
-        next time that this warning dialog has to be displayed.
+    def init(self):
+        pass
 
-        Arguments:
-        - widget: the component that generated the signal.
-        """
+    def showGUI(self):
+        """Show the Warning dialog."""
 
-        orca_state.orcaWD = None
+        ts = orca_state.lastInputEventTimestamp
+        if ts == 0:
+            ts = Gtk.get_current_event_time()
+        self.present_with_time(ts)
 
-    def orcaPrefsWarningDialogOKButtonClicked(self, widget):
-        """Signal handler for the "clicked" signal for the
-        orcaPrefsWarningDialogOKButton GtkButton widget. The user has clicked
-        the OK button in the Orca Application Preferences warning dialog.
-        This dialog informs the user that they already have an instance
-        of an Orca preferences dialog open, and that they will need to 
-        close it before opening a new one.
+    def onResponse(self, widget, response):
+        """Signal handler for the responses emitted by the dialog."""
 
-        Arguments:
-        - widget: the component that generated the signal.
-        """
+        if response == Gtk.ResponseType.OK:
+            self.destroy()
 
-        self.orcaPrefsWarningDialog.destroy()
+    def onDestroy(self, widget):
+        """Signal handler for the 'destroy' signal of the Warning dialog."""
+
+        orca_state.orcaWD = None
 
 def showPreferencesUI():
     if not orca_state.appOS and not orca_state.orcaOS:
@@ -3548,30 +3535,18 @@ def showPreferencesUI():
         orca_state.orcaOS = OrcaSetupGUI(orca_state.prefsUIFile,
                                          "orcaSetupWindow", prefsDict)
         orca_state.orcaOS.init()
+        orca_state.orcaOS.showGUI()
     else:
         if not orca_state.orcaWD:
-            orca_state.orcaWarningDialogUIFile = \
-                os.path.join(orca_platform.prefix,
-                             orca_platform.datadirname,
-                             orca_platform.package,
-                             "ui",
-                             "orca-preferences-warning.ui")
-            orca_state.orcaWD = \
-                WarningDialogGUI(orca_state.orcaWarningDialogUIFile,
-                                 "orcaPrefsWarningDialog")
-            warningDialog = orca_state.orcaWD.getPrefsWarningDialog()
-            warningDialog.realize()
-            warningDialog.show()
-        return
-
-    orca_state.orcaOS.showGUI()
+            orca_state.orcaWD = WarningDialogGUI()
+        orca_state.orcaWD.showGUI()
 
 def main():
     locale.setlocale(locale.LC_ALL, '')
 
     showPreferencesUI()
 
-    gtk.main()
+    Gtk.main()
     sys.exit(0)
 
 if __name__ == "__main__":
diff --git a/src/orca/orca_gui_profile.py b/src/orca/orca_gui_profile.py
index 3c65806..17db9e7 100644
--- a/src/orca/orca_gui_profile.py
+++ b/src/orca/orca_gui_profile.py
@@ -19,7 +19,7 @@
 # Free Software Foundation, Inc., Franklin Street, Fifth Floor,
 # Boston MA  02110-1301 USA.
 
-"""Displays a GUI for the Orca profiles window"""
+"""Displays the Save Profile As dialog."""
 
 __id__        = "$Id$"
 __version__   = "$Revision$"
@@ -27,140 +27,115 @@ __date__      = "$Date$"
 __copyright__ = "Copyright (c) 2010 Consorcio Fernando de los Rios."
 __license__   = "LGPL"
 
-import os
-import sys
-import debug
-import gtk
 import locale
+import sys
+from gi.repository import Gtk
 
-import orca_gtkbuilder
 import orca_state
-import orca_platform
+from orca_i18n import _
 
 OS = None
 newProfile = None
 
+class OrcaProfileGUI(Gtk.Dialog):
+
+    def __init__(self):
+        """Initialize the Orca profile configuration GUI."""
 
-class OrcaProfileGUI(orca_gtkbuilder.GtkBuilderWrapper):
+        Gtk.Dialog.__init__(self)
 
-    def __init__(self, fileName, windowName):
-        """Initialize the Orca profile configuration GUI.
+        # Translators: Profiles in Orca make it possible for users to
+        # quickly switch amongst a group of pre-defined settings (e.g.
+        # an 'English' profile for reading text written in English using
+        # an English-language speech synthesizer and braille rules, and
+        # a similar 'Spanish' profile for reading Spanish text. The
+        # following string is the title of a dialog in which users can
+        # save a newly-defined profile.
+        #
+        self.set_title(_('Save Profile As'))
+        self.set_has_resize_grip(False)
+
+        self.add_button('gtk-cancel', Gtk.ResponseType.CANCEL)
+        self.add_button('gtk-save', Gtk.ResponseType.ACCEPT)
+
+        grid = Gtk.Grid()
+        grid.set_property('margin', 12)
+        grid.set_row_spacing(10)
+        grid.set_column_spacing(10)
+
+        # Right now the content area is a GtkBox. We'll need to update
+        # this once GtkBox is fully deprecated.
+        contentArea = self.get_content_area()
+        contentArea.pack_start(grid, True, True, 0)
+
+        self.profileEntry = Gtk.Entry()
+        self.profileEntry.set_property('hexpand', True)
+        self.profileEntry.set_activates_default(True)
+        grid.attach(self.profileEntry, 1, 0, 1, 1)
+
+        # Translators: Profiles in Orca make it possible for users to
+        # quickly switch amongst a group of pre-defined settings (e.g.
+        # an 'English' profile for reading text written in English using
+        # an English-language speech synthesizer and braille rules, and
+        # a similar 'Spanish' profile for reading Spanish text. The
+        # following string is the label for a text entry in which the user
+        # enters the name of a new settings profile being saved via the
+        # 'Save Profile As' dialog.
+        #
+        label = Gtk.Label(_('_Profile Name:'))
+        label.set_use_underline(True)
+        label.set_mnemonic_widget(self.profileEntry)
+        grid.attach(label, 0, 0, 1, 1)
 
-        Arguments:
-        - fileName: name of the GtkBuilder file.
-        - windowName: name of the component to get from the GtkBuilder file.
-        """
+        defaultButton = self.get_widget_for_response(Gtk.ResponseType.ACCEPT)
+        defaultButton.set_property('can-default', True)
+        defaultButton.set_property('has-default', True)
 
-        orca_gtkbuilder.GtkBuilderWrapper.__init__(self, fileName, windowName)
+        self.connect('response', self.onResponse)
+        self.connect('destroy', self.onDestroy)
 
-        # Initialize variables to None to keep pylint happy.
-        #
         self.searchString = None
         self.profileString = None
         self.prefsDialog = None
 
     def init(self):
-        # Initialize the dialog box controls.
-        self.profileString = ""
+        self.profileString = ''
 
     def showGUI(self, prefsDialog):
-        """Show the Orca profile dialog. This assumes that the GUI has
-        already been created.
-        """
+        """Show the Save Profile As dialog."""
 
+        self.show_all()
         self.prefsDialog = prefsDialog
-        profileDialog = self.get_widget("profileDialog")
-
-        # Set the current time on the Find GUI dialog so that it'll
-        # get focus. set_user_time is a new call in pygtk 2.9.2 or later.
-        # It's surronded by a try/except block here so that if it's not found,
-        # then we can fail gracefully.
-        #
-        try:
-            profileDialog.realize()
-            ts = orca_state.lastInputEventTimestamp
-            if ts == 0:
-                ts = gtk.get_current_event_time()
-            profileDialog.window.set_user_time(ts)
-        except AttributeError:
-            debug.printException(debug.LEVEL_FINEST)
-
-        try:
-            profileEntry = self.get_widget("profileEntry")
-            profileEntry.set_text(self.profileString)
-        except:
-            pass
-
-        # It is not safe to use run() in Orca because if the dialog loses
-        # focus, Orca stops presenting things to the user because run()
-        # blocks in a recursive main loop until the dialog emits the
-        # "response" signal or is destroyed.
-        #
-        profileDialog.show()
-
-    def cancelButtonClicked(self, widget):
-        """Signal handler for the "clicked" signal for the cancelButton
-           GtkButton widget. The user has clicked the Cancel button.
-           Hide the dialog.
-
-        Arguments:
-        - widget: the component that generated the signal.
-        """
+        self.profileEntry.set_text(self.profileString)
 
-        self.get_widget("profileDialog").hide()
+        ts = orca_state.lastInputEventTimestamp
+        if ts == 0:
+            ts = Gtk.get_current_event_time()
+        self.present_with_time(ts)
 
-    def on_saveProfileButton_clicked(self, widget):
-        """Signal handler for the "clicked" signal for the findButton
-           GtkButton widget. The user has clicked the Find button.
-           Call the method to begin the search.
+    def onResponse(self, widget, response):
+        """Signal handler for the responses emitted by the dialog."""
 
-        Arguments:
-        - widget: the component that generated the signal.
-        """
+        if response in [Gtk.ResponseType.CANCEL, Gtk.ResponseType.DELETE_EVENT]:
+            self.hide()
+            return
 
-        # Merely hiding the dialog causes the find to take place before
-        # the original window has fully regained focus.
-        global newProfile
+        if response == Gtk.ResponseType.ACCEPT:
+            global newProfile
 
-        if self.get_widget("profileEntry").get_text() != '':
-            newProfile = self.get_widget("profileEntry").get_text()
-            self.get_widget("profileDialog").destroy()
+            newProfile = self.profileEntry.get_text()
+            if newProfile:
+                self.destroy()
+            if self.prefsDialog:
+                self.prefsDialog.saveProfile(newProfile)
 
-        if self.prefsDialog:
-            self.prefsDialog.saveProfile(newProfile)
-
-    # From now, this method can't have sense ...
-    def onProfileEntryChanged(self, widget, data=None):
-        """Signal handler for the "changed" signal for the ProfileEntry
-           GtkEntry widget."""
-
-        if self.get_widget("profileEntry").get_text() != '':
-            self.get_widget('availableProfilesCombo').set_sensitive(False)
-        else:
-            self.get_widget('availableProfilesCombo').set_sensitive(True)
-
-
-    def profileDialogDestroyed(self, widget):
-        """Signal handler for the "destroyed" signal for the findDialog
-           GtkWindow widget. Reset OS to None.
-
-        Arguments:
-        - widget: the component that generated the signal.
-        """
+    def onDestroy(self, widget):
+        """Signal handler for the 'destroy' signal of the dialog."""
 
         global OS
 
         OS = None
 
-    def __getAvailableProfiles(self):
-        """Get available user profiles"""
-
-        import orca
-
-        _settingsManager = getattr(orca, '_settingsManager')
-
-        return _settingsManager.availableProfiles()
-
 def showProfileUI(prefsDialog=None):
     global OS
     global newProfile
@@ -168,23 +143,17 @@ def showProfileUI(prefsDialog=None):
     newProfile = None
 
     if not OS:
-        uiFile = os.path.join(orca_platform.prefix,
-                              orca_platform.datadirname,
-                              orca_platform.package,
-                              "ui",
-                              "orca-profile.ui")
-        OS = OrcaProfileGUI(uiFile, "profileDialog")
+        OS = OrcaProfileGUI()
         OS.init()
 
     OS.showGUI(prefsDialog)
 
-
 def main():
     locale.setlocale(locale.LC_ALL, '')
 
     showProfileUI()
 
-    gtk.main()
+    Gtk.main()
     sys.exit(0)
 
 if __name__ == "__main__":
diff --git a/src/orca/orca_gui_quit.py b/src/orca/orca_gui_quit.py
new file mode 100644
index 0000000..fb69cf5
--- /dev/null
+++ b/src/orca/orca_gui_quit.py
@@ -0,0 +1,103 @@
+# Orca
+#
+# Copyright 2006-2008 Sun Microsystems Inc.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., Franklin Street, Fifth Floor,
+# Boston MA  02110-1301 USA.
+
+"""Displays a GUI for the user to quit Orca."""
+
+__id__        = "$Id$"
+__version__   = "$Revision$"
+__date__      = "$Date$"
+__copyright__ = "Copyright (c) 2005-2008 Sun Microsystems Inc."
+__license__   = "LGPL"
+
+import locale
+import sys
+from gi.repository import Gtk
+
+import orca
+import orca_state
+import settings
+from orca_i18n import _
+
+OS = None
+
+class OrcaQuitGUI(Gtk.MessageDialog):
+
+    def __init__(self):
+        Gtk.MessageDialog.__init__(self)
+        self.set_property('message-type', Gtk.MessageType.QUESTION)
+
+        self.set_property('text', _('Quit Orca?'))
+        self.format_secondary_text(
+            _('This will stop all speech and braille output.'))
+
+        self.add_button('gtk-cancel', Gtk.ResponseType.CANCEL)
+        self.add_button('gtk-quit', Gtk.ResponseType.ACCEPT)
+
+        self.connect('response', self.onResponse)
+        self.connect('destroy', self.onDestroy)
+
+    def init(self):
+        pass
+
+    def showGUI(self):
+        """Show the Quit dialog."""
+
+        ts = orca_state.lastInputEventTimestamp
+        if ts == 0:
+            ts = Gtk.get_current_event_time()
+        self.present_with_time(ts)
+
+    def onResponse(self, widget, response):
+        """Signal handler for the responses emitted by the dialog."""
+
+        if response == Gtk.ResponseType.ACCEPT:
+            orca.shutdown()
+            return
+
+        if response in [Gtk.ResponseType.CANCEL, Gtk.ResponseType.DELETE_EVENT]:
+            self.hide()
+            if settings.showMainWindow:
+                orca.showMainWindowGUI()
+
+    def onDestroy(self, widget):
+        """Signal handler for the 'destroy' signal of the dialog."""
+
+        global OS
+
+        OS = None
+
+def showQuitUI():
+    global OS
+
+    if not OS:
+        OS = OrcaQuitGUI()
+        OS.init()
+
+    OS.showGUI()
+
+def main():
+    locale.setlocale(locale.LC_ALL, '')
+
+    showQuitUI()
+
+    Gtk.main()
+    sys.exit(0)
+
+if __name__ == "__main__":
+    main()
diff --git a/src/orca/orca_gui_splash.py b/src/orca/orca_gui_splash.py
index 4506e8e..0cb859d 100644
--- a/src/orca/orca_gui_splash.py
+++ b/src/orca/orca_gui_splash.py
@@ -28,38 +28,39 @@ __license__   = "LGPL"
 import os
 import sys
 import debug
-import gtk
-import gobject
+from gi.repository import Gdk
+from gi.repository import Gtk
+from gi.repository import GObject
 import locale
 
-import orca_gtkbuilder
 import orca_state
 import orca_platform
-
 from orca_i18n import _
 
 OS = None
 
-class OrcaSplashGUI(orca_gtkbuilder.GtkBuilderWrapper):
-
-    def __init__(self, fileName, windowName):
-        """
-        Initialize the Orca splash GUI.
+class OrcaSplashGUI(Gtk.Window):
 
-        Arguments:
-        - fileName: name of the GtkBuilder file.
-        - windowName: name of the component to get from the GtkBuilder file.
-        """
+    def __init__(self):
+        """Initialize the Orca splash GUI."""
 
-        orca_gtkbuilder.GtkBuilderWrapper.__init__(self, fileName, windowName)
+        Gtk.Window.__init__(self)
+        self.activeScript = None
+        self.set_title(_('Orca'))
+        self.set_skip_taskbar_hint(True)
+        self.set_skip_pager_hint(True)
+        self.set_modal(True)
+        self.set_decorated(False)
+        self.set_type_hint(Gdk.WindowTypeHint.SPLASHSCREEN)
+        self.set_position(Gtk.WindowPosition.CENTER)
 
     def init(self):
-        """ Initialize the splash screen dialog. """
+        """Initialize the splash screen."""
 
         self.activeScript = orca_state.activeScript
 
     def showGUI(self):
-        """ Show the splash screen dialog. """
+        """Show the splash screen dialog."""
 
         imageFile = os.path.join(orca_platform.prefix,
                     orca_platform.datadirname,
@@ -67,48 +68,39 @@ class OrcaSplashGUI(orca_gtkbuilder.GtkBuilderWrapper):
                     "gfx",
                     "orca-splash.png")
 
-        image = gtk.Image()
+        image = Gtk.Image()
         image.set_from_file(imageFile)
 
-        splashScreen = self.get_widget("splashWindow")
-        box = self.get_widget("splash_vbox")
-        box.pack_start(image, True, True)
+        self.add(image)
 
         try:
-            splashScreen.realize()
+            self.realize()
         except:
             debug.printException(debug.LEVEL_FINEST)
 
-        splashScreen.set_transient_for(None)
-        box.grab_focus()
-        splashScreen.show_all()
+        self.set_transient_for(None)
+        self.grab_focus()
+        self.show_all()
 
-        gobject.timeout_add(3000, splashScreen.hide)
+        GObject.timeout_add(3000, self.hideGUI)
 
-        while gtk.events_pending():
-            gtk.main_iteration()
+        while Gtk.events_pending():
+            Gtk.main_iteration()
 
-        return splashScreen
+        return self
 
     def hideGUI(self):
         """Hide the Orca splash screen GUI. This assumes that the GUI has
         already been created.
         """
 
-        self.get_widget("splashWindow").hide()
-
+        self.hide()
 
 def showSplashUI():
     global OS
 
     if not OS:
-        uiFile = os.path.join(orca_platform.prefix,
-                orca_platform.datadirname,
-                orca_platform.package,
-                "ui",
-                "orca-splash.ui")
-
-        OS = OrcaSplashGUI(uiFile, "splashScreen")
+        OS = OrcaSplashGUI()
         OS.init()
 
     OS.showGUI()
@@ -117,13 +109,12 @@ def hideSplashUI():
     if OS:
         OS.hideGUI()
 
-
 def main():
     locale.setlocale(locale.LC_ALL, '')
 
     showSplashUI()
 
-    gtk.main()
+    Gtk.main()
     sys.exit(0)
 
 if __name__ == "__main__":
diff --git a/src/orca/orca_prefs.py b/src/orca/orca_prefs.py
index f4d58e0..ad325bc 100644
--- a/src/orca/orca_prefs.py
+++ b/src/orca/orca_prefs.py
@@ -418,7 +418,7 @@ class OrcaPrefs:
         Arguments:
         - prefs: text string - file to write the key binding to.
         - tupl:    tuple     - a tuple with the values of the
-                                 keybinding (gtk.TreeStore model columns)
+                                 keybinding (Gtk.TreeStore model columns)
         """
 
         prefs.writelines("   keyB.removeByHandler(script.inputEventHandlers['" \
diff --git a/src/orca/outline.py b/src/orca/outline.py
index 00233be..864da66 100644
--- a/src/orca/outline.py
+++ b/src/orca/outline.py
@@ -26,24 +26,17 @@ __copyright__ = "Copyright (c) 2008 Sun Microsystems Inc."
 __license__   = "LGPL"
 
 import cairo
-
-try:
-    # This can fail due to gtk not being available.  We want to
-    # be able to recover from that if possible.  The main driver
-    # for this is to allow "orca --text-setup" to work even if
-    # the desktop is not running.
-    #
-    import gtk
-    display = gtk.gdk.display_get_default()
-    screen = display.get_default_screen()
-    screen_width = screen.get_width()
-    screen_height = screen.get_height()
-except:
-    pass
+from gi.repository import Gtk
+from gi.repository import Gdk
 
 import orca_state
 import settings
 
+display = Gdk.Display.get_default()
+screen = display.get_default_screen()
+screen_width = screen.get_width()
+screen_height = screen.get_height()
+
 def _adjustToScreen(x, y, width, height):
     if x < 0:
         width = width + x
@@ -69,7 +62,7 @@ def _adjustToScreen(x, y, width, height):
 #
 _outlineWindows = []
 
-class Line(gtk.Window):
+class Line(Gtk.Window):
     """Draws a simple filled box on the display using
     settings.outlineColor for the color.
 
@@ -77,12 +70,11 @@ class Line(gtk.Window):
     - x, y, width, height: the dimensions of the box
     """
     def __init__(self, x, y, width, height):
-        gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
-
-        self.modify_bg(gtk.STATE_NORMAL,
-                       gtk.gdk.Color(settings.outlineColor[0],
-                                     settings.outlineColor[1],
-                                     settings.outlineColor[2]))
+        Gtk.Window.__init__(self)
+        self.modify_bg(Gtk.StateType.NORMAL,
+                       Gdk.Color(settings.outlineColor[0],
+                                 settings.outlineColor[1],
+                                 settings.outlineColor[2]))
 
         self.set_property("accept-focus", False)
         self.set_decorated(False)
@@ -113,9 +105,9 @@ class Wedge(Line):
         # Create a bitmap to draw into.  This will be the mask
         # for the shape of the window.
         #
-        width, height = allocation.width, allocation.height
-        bitmap = gtk.gdk.Pixmap(None, width, height, 1)
-        cr = bitmap.cairo_create()
+        width, height = win.get_size()
+        surface = cairo.ImageSurface(cairo.FORMAT_A1, width, height)
+        cr = cairo.Context(surface)
 
         # Clear the bitmap
         #
@@ -158,12 +150,13 @@ class Box(Line):
 
     def _on_size_allocate(self, win, allocation):
         """Sets the shape of the window to a hollow rectangle."""
+
         # Create a bitmap to draw into.  This will be the mask
         # for the shape of the window.
         #
-        width, height = allocation.width, allocation.height
-        bitmap = gtk.gdk.Pixmap(None, width, height, 1)
-        cr = bitmap.cairo_create()
+        width, height = win.get_size()
+        surface = cairo.ImageSurface(cairo.FORMAT_A1, width, height)
+        cr = cairo.Context(surface)
 
         # Clear the bitmap
         #
@@ -182,7 +175,7 @@ class Box(Line):
 
         # Set the window shape
         #
-        win.shape_combine_mask(bitmap, 0, 0)
+        #window.shape_combine_region()
 
 def reset():
     """Destroys all windows we have put on the screen."""
@@ -203,7 +196,12 @@ def draw(x, y, width, height):
 
     if settings.outlineStyle == settings.OUTLINE_NONE:
         pass
-    elif settings.outlineStyle == settings.OUTLINE_LINE:
+    # Temporary solution for the fact that the flat review rectangle is now
+    # solid. We are working on this, but it may or may not be done in time
+    # for the 3.1.90 release and the reality is that flatreview indication
+    # is for people who can see. Thus underlining the object being reviewed
+    # shall have to suffice for now.
+    elif settings.outlineStyle in [settings.OUTLINE_LINE, settings.OUTLINE_BOX]:
         y = y + height + settings.outlineMargin
         height = settings.outlineThickness
         [x, y, width, height] = _adjustToScreen(x, y, width, height)
@@ -254,11 +252,11 @@ def draw(x, y, width, height):
             _outlineWindows[1].resize(bottomwidth, bottomheight)
             _outlineWindows[1].move(bottomx, bottomy)
 
+    ts = orca_state.lastInputEventTimestamp
+    if ts == 0:
+        ts = Gtk.get_current_event_time()
+
+    # Make sure the windows stay on top.
+    #
     for window in _outlineWindows:
-        window.present()
-        # Make sure the windows stay on top.
-        #
-        try:
-            window.window.set_user_time(orca_state.lastInputEventTimestamp)
-        except:
-            pass
+        window.present_with_time(ts)
diff --git a/src/orca/script.py b/src/orca/script.py
index 60f2a98..e8a86a7 100644
--- a/src/orca/script.py
+++ b/src/orca/script.py
@@ -262,7 +262,7 @@ class Script:
             return self.bookmarks
 
     def getAppPreferencesGUI(self):
-        """Return a GtkVBox contain the application unique configuration
+        """Return a GtkGrid containing the application unique configuration
         GUI items for the current application.
         """
         return None
@@ -446,8 +446,8 @@ class Script:
         """
 
         try:
-            import gtk.gdk as gdk
-            keyboardEvent.keyval_name = gdk.keyval_name(keyboardEvent.id)
+            from gi.repository import Gdk
+            keyboardEvent.keyval_name = Gdk.keyval_name(keyboardEvent.id)
         except:
             debug.println(debug.LEVEL_FINE,
                           "Could not obtain keyval_name for id: %d" \
diff --git a/src/orca/script_manager.py b/src/orca/script_manager.py
index 41b3b06..c3ee35f 100644
--- a/src/orca/script_manager.py
+++ b/src/orca/script_manager.py
@@ -85,7 +85,14 @@ class ScriptManager:
     def getModuleName(self, app):
         """Returns the module name of the script to use for application app."""
 
-        if not (app and app.name):
+        try:
+            appAndNameExist = app != None and app.name != ''
+        except (LookupError, RuntimeError):
+            appAndNameExist = False
+            debug.println(debug.LEVEL_SEVERE,
+                          "getModuleName: %s no longer exists" % app)
+
+        if not appAndNameExist:
             return None
 
         # Many python apps have an accessible name which ends in '.py'.
diff --git a/src/orca/script_utilities.py b/src/orca/script_utilities.py
index 194cfec..587b7d5 100644
--- a/src/orca/script_utilities.py
+++ b/src/orca/script_utilities.py
@@ -2553,8 +2553,8 @@ class Utilities:
     def absoluteMouseCoordinates():
         """Gets the absolute position of the mouse pointer."""
 
-        import gtk
-        rootWindow = gtk.Window().get_screen().get_root_window()
+        from gi.repository import Gtk
+        rootWindow = Gtk.Window().get_screen().get_root_window()
         x, y, modifiers = rootWindow.get_pointer()
 
         return x, y
diff --git a/src/orca/scripts/apps/Instantbird/script.py b/src/orca/scripts/apps/Instantbird/script.py
index 141c68e..6f13e6b 100644
--- a/src/orca/scripts/apps/Instantbird/script.py
+++ b/src/orca/scripts/apps/Instantbird/script.py
@@ -111,10 +111,9 @@ class Script(Gecko.Script):
         return keyBindings
 
     def getAppPreferencesGUI(self):
-        """Return a GtkVBox contain the application unique configuration
-        GUI items for the current application. The chat-related options
-        get created by the chat module.
-        """
+        """Return a GtkGrid containing the application unique configuration
+        GUI items for the current application. The chat-related options get
+        created by the chat module."""
 
         return self.chat.getAppPreferencesGUI()
 
diff --git a/src/orca/scripts/apps/Thunderbird/script.py b/src/orca/scripts/apps/Thunderbird/script.py
index 5740cc4..f933250 100644
--- a/src/orca/scripts/apps/Thunderbird/script.py
+++ b/src/orca/scripts/apps/Thunderbird/script.py
@@ -25,7 +25,6 @@ __date__      = "$Date$"
 __copyright__ = "Copyright (c) 2004-2008 Sun Microsystems Inc."
 __license__   = "LGPL"
 
-import gtk
 import pyatspi
 
 import orca.orca as orca
@@ -101,25 +100,23 @@ class Script(Gecko.Script):
         return Utilities(self)
 
     def getAppPreferencesGUI(self):
-        """Return a GtkVBox contain the application unique configuration
-        GUI items for the current application.
-        """
+        """Return a GtkGrid containing the application unique configuration
+        GUI items for the current application."""
 
-        vbox = Gecko.Script.getAppPreferencesGUI(self)
+        grid = Gecko.Script.getAppPreferencesGUI(self)
 
         # Reapply "say all on load" using the Thunderbird specific setting.
         #
-        gtk.ToggleButton.set_active(self.sayAllOnLoadCheckButton,
-                                    script_settings.sayAllOnLoad)
+        self.sayAllOnLoadCheckButton.set_active(script_settings.sayAllOnLoad)
 
         # We need to maintain a separate setting for grabFocusOnAncestor
         # because the version of Gecko used by the Thunderbird might be
         # different from that used by Firefox. See bug 608149.
         #
-        gtk.ToggleButton.set_active(self.grabFocusOnAncestorCheckButton,
-                                    script_settings.grabFocusOnAncestor)
+        self.grabFocusOnAncestorCheckButton.set_active(
+            script_settings.grabFocusOnAncestor)
 
-        return vbox
+        return grid
 
     def setAppPreferences(self, prefs):
         """Write out the application specific preferences lines and set the
diff --git a/src/orca/scripts/apps/empathy/script.py b/src/orca/scripts/apps/empathy/script.py
index 141f795..8b7a363 100644
--- a/src/orca/scripts/apps/empathy/script.py
+++ b/src/orca/scripts/apps/empathy/script.py
@@ -87,10 +87,9 @@ class Script(default.Script):
         return keyBindings
 
     def getAppPreferencesGUI(self):
-        """Return a GtkVBox contain the application unique configuration
-        GUI items for the current application. The chat-related options
-        get created by the chat module.
-        """
+        """Return a GtkGrid containing the application unique configuration
+        GUI items for the current application. The chat-related options get
+        created by the chat module."""
 
         return self.chat.getAppPreferencesGUI()
 
diff --git a/src/orca/scripts/apps/gajim/script.py b/src/orca/scripts/apps/gajim/script.py
index 6643b3e..4f9d13d 100644
--- a/src/orca/scripts/apps/gajim/script.py
+++ b/src/orca/scripts/apps/gajim/script.py
@@ -82,10 +82,9 @@ class Script(default.Script):
         return keyBindings
 
     def getAppPreferencesGUI(self):
-        """Return a GtkVBox contain the application unique configuration
-        GUI items for the current application. The chat-related options
-        get created by the chat module.
-        """
+        """Return a GtkGrid containing the application unique configuration
+        GUI items for the current application. The chat-related options get
+        created by the chat module."""
 
         return self.chat.getAppPreferencesGUI()
 
diff --git a/src/orca/scripts/apps/gnome-search-tool/script.py b/src/orca/scripts/apps/gnome-search-tool/script.py
index bd321ff..343d020 100644
--- a/src/orca/scripts/apps/gnome-search-tool/script.py
+++ b/src/orca/scripts/apps/gnome-search-tool/script.py
@@ -33,8 +33,8 @@ from orca.orca_i18n import ngettext # for gettext support
 
 import pyatspi
 import time
-import gobject
-gobject.threads_init()
+from gi.repository import GObject
+GObject.threads_init()
 
 
 ########################################################################
@@ -148,7 +148,7 @@ class Script(default.Script):
                     frame, pyatspi.ROLE_TABLE)
                 self.fileTable = allTables[0]
 
-            gobject.idle_add(self._speakSearching)
+            GObject.idle_add(self._speakSearching)
 
         # Check to see if we have just had an "object:state-changed:showing"
         # event for the Find button. If the name is "Find", and one of its
diff --git a/src/orca/scripts/apps/packagemanager/script.py b/src/orca/scripts/apps/packagemanager/script.py
index f017fb0..2098bae 100644
--- a/src/orca/scripts/apps/packagemanager/script.py
+++ b/src/orca/scripts/apps/packagemanager/script.py
@@ -27,7 +27,7 @@ __copyright__ = "Copyright (c) 2009-2010 Sun Microsystems Inc."  \
                 "Copyright (c) 2010 Joanmarie Diggs"
 __license__   = "LGPL"
 
-import gtk
+from gi.repository import Gtk
 import pyatspi
 
 import orca.scripts.default as default
@@ -98,13 +98,11 @@ class Script(default.Script):
         return Utilities(self)
 
     def getAppPreferencesGUI(self):
-        """Return a GtkVBox contain the application unique configuration
-        GUI items for the current application.
-        """
+        """Return a GtkGrid containing the application unique configuration
+        GUI items for the current application."""
 
-        vbox = gtk.VBox(False, 0)
-        vbox.set_border_width(12)
-        gtk.Widget.show(vbox)
+        grid = Gtk.Grid()
+        grid.set_border_width(12)
 
         # Translators: The Package Manager application notifies the
         # user of minor errors by displaying an icon in the status
@@ -114,15 +112,15 @@ class Script(default.Script):
         # the notification icon has appeared.
         #
         label = _("Notify me when errors have been logged.")
-        self.presentLoggedErrorsCheckButton = gtk.CheckButton(label)
-        gtk.Widget.show(self.presentLoggedErrorsCheckButton)
-        gtk.Box.pack_start(vbox, self.presentLoggedErrorsCheckButton,
-                           False, False, 0)
-        gtk.ToggleButton.set_active(
-            self.presentLoggedErrorsCheckButton,
-            script_settings.presentLoggedErrors)
-
-        return vbox
+        value = script_settings.presentLoggedErrors
+        self.presentLoggedErrorsCheckButton = \
+            Gtk.CheckButton.new_with_mnemonic(label)
+        self.presentLoggedErrorsCheckButton.set_active(value)
+        grid.attach(self.presentLoggedErrorsCheckButton, 0, 0, 1, 1)
+
+        grid.show_all()
+
+        return grid
 
     def setAppPreferences(self, prefs):
         """Write out the application specific preferences lines and set the
diff --git a/src/orca/scripts/apps/pidgin/script.py b/src/orca/scripts/apps/pidgin/script.py
index d5c0a0b..0ee1e0d 100644
--- a/src/orca/scripts/apps/pidgin/script.py
+++ b/src/orca/scripts/apps/pidgin/script.py
@@ -104,10 +104,9 @@ class Script(default.Script):
         return keyBindings
 
     def getAppPreferencesGUI(self):
-        """Return a GtkVBox contain the application unique configuration
-        GUI items for the current application. The chat-related options
-        get created by the chat module.
-        """
+        """Return a GtkGrid containing the application unique configuration
+        GUI items for the current application. The chat-related options get
+        created by the chat module."""
 
         return self.chat.getAppPreferencesGUI()
 
diff --git a/src/orca/scripts/apps/soffice/script.py b/src/orca/scripts/apps/soffice/script.py
index cc3fcbb..78e5909 100644
--- a/src/orca/scripts/apps/soffice/script.py
+++ b/src/orca/scripts/apps/soffice/script.py
@@ -37,7 +37,7 @@ __date__      = "$Date$"
 __copyright__ = "Copyright (c) 2005-2009 Sun Microsystems Inc."
 __license__   = "LGPL"
 
-import gtk
+from gi.repository import Gtk
 import pyatspi
 
 import orca.debug as debug
@@ -294,102 +294,83 @@ class Script(default.Script):
         return keyBindings
 
     def getAppPreferencesGUI(self):
-        """Return a GtkVBox contain the application unique configuration
-        GUI items for the current application.
-        """
+        """Return a GtkGrid containing the application unique configuration
+        GUI items for the current application."""
 
-        vbox = gtk.VBox(False, 0)
-        vbox.set_border_width(12)
-        gtk.Widget.show(vbox)
+        grid = Gtk.Grid()
+        grid.set_border_width(12)
 
-        # Checkbox for "Speak spread sheet cell coordinates".
-        #
         # Translators: If checked, then Orca will speak the coordinates
         # of the current spread sheet cell. Coordinates are the row and
         # column position within the spread sheet (i.e. A1, B1, C2 ...)
         #
         label = _("Speak spread sheet cell coordinates")
-        self.speakSpreadsheetCoordinatesCheckButton = gtk.CheckButton(label)
-        gtk.Widget.show(self.speakSpreadsheetCoordinatesCheckButton)
-        gtk.Box.pack_start(vbox, self.speakSpreadsheetCoordinatesCheckButton,
-                           False, False, 0)
-        gtk.ToggleButton.set_active(\
-            self.speakSpreadsheetCoordinatesCheckButton,
-            script_settings.speakSpreadsheetCoordinates)
-
-        # Table Navigation frame.
-        #
-        tableFrame = gtk.Frame()
-        gtk.Widget.show(tableFrame)
-        gtk.Box.pack_start(vbox, tableFrame, False, False, 5)
+        value = script_settings.speakSpreadsheetCoordinates
+        self.speakSpreadsheetCoordinatesCheckButton = \
+            Gtk.CheckButton.new_with_mnemonic(label)
+        self.speakSpreadsheetCoordinatesCheckButton.set_active(value)
+        grid.attach(self.speakSpreadsheetCoordinatesCheckButton, 0, 0, 1, 1)
 
-        tableAlignment = gtk.Alignment(0.5, 0.5, 1, 1)
-        gtk.Widget.show(tableAlignment)
-        gtk.Container.add(tableFrame, tableAlignment)
-        gtk.Alignment.set_padding(tableAlignment, 0, 0, 12, 0)
+        tableFrame = Gtk.Frame()
+        grid.attach(tableFrame, 0, 1, 1, 1)
 
-        tableVBox = gtk.VBox(False, 0)
-        gtk.Widget.show(tableVBox)
-        gtk.Container.add(tableAlignment, tableVBox)
+        # Translators: this is the title of a panel containing options
+        # for specifying how to navigate tables in document content.
+        #
+        label = Gtk.Label(label="<b>%s</b>" % _("Table Navigation"))
+        label.set_use_markup(True)
+        tableFrame.set_label_widget(label)
+
+        tableAlignment = Gtk.Alignment.new(0.5, 0.5, 1, 1)
+        tableAlignment.set_padding(0, 0, 12, 0)
+        tableFrame.add(tableAlignment)
+        tableGrid = Gtk.Grid()
+        tableAlignment.add(tableGrid)
 
         # Translators: this is an option to tell Orca whether or not it
         # should speak table cell coordinates in document content.
         #
         label = _("Speak _cell coordinates")
-        self.speakCellCoordinatesCheckButton = gtk.CheckButton(label)
-        gtk.Widget.show(self.speakCellCoordinatesCheckButton)
-        gtk.Box.pack_start(tableVBox, self.speakCellCoordinatesCheckButton,
-                           False, False, 0)
-        gtk.ToggleButton.set_active(
-            self.speakCellCoordinatesCheckButton,
-            _settingsManager.getSetting('speakCellCoordinates'))
+        value = _settingsManager.getSetting('speakCellCoordinates')
+        self.speakCellCoordinatesCheckButton = \
+            Gtk.CheckButton.new_with_mnemonic(label)
+        self.speakCellCoordinatesCheckButton.set_active(value)
+        tableGrid.attach(self.speakCellCoordinatesCheckButton, 0, 0, 1, 1)
 
         # Translators: this is an option to tell Orca whether or not it
         # should speak the span size of a table cell (e.g., how many
         # rows and columns a particular table cell spans in a table).
         #
         label = _("Speak _multiple cell spans")
-        self.speakCellSpanCheckButton = gtk.CheckButton(label)
-        gtk.Widget.show(self.speakCellSpanCheckButton)
-        gtk.Box.pack_start(tableVBox, self.speakCellSpanCheckButton,
-                           False, False, 0)
-        gtk.ToggleButton.set_active(
-            self.speakCellSpanCheckButton,
-            _settingsManager.getSetting('speakCellSpan'))
+        value = _settingsManager.getSetting('speakCellSpan')
+        self.speakCellSpanCheckButton = \
+            Gtk.CheckButton.new_with_mnemonic(label)
+        self.speakCellSpanCheckButton.set_active(value)
+        tableGrid.attach(self.speakCellSpanCheckButton, 0, 1, 1, 1)
 
         # Translators: this is an option for whether or not to speak
         # the header of a table cell in document content.
         #
         label = _("Announce cell _header")
-        self.speakCellHeadersCheckButton = gtk.CheckButton(label)
-        gtk.Widget.show(self.speakCellHeadersCheckButton)
-        gtk.Box.pack_start(tableVBox, self.speakCellHeadersCheckButton,
-                           False, False, 0)
-        gtk.ToggleButton.set_active(
-            self.speakCellHeadersCheckButton,
-            _settingsManager.getSetting('speakCellHeaders'))
-
+        value = _settingsManager.getSetting('speakCellHeaders')
+        self.speakCellHeadersCheckButton = \
+            Gtk.CheckButton.new_with_mnemonic(label)
+        self.speakCellHeadersCheckButton.set_active(value)
+        tableGrid.attach(self.speakCellHeadersCheckButton, 0, 2, 1, 1)
+           
         # Translators: this is an option to allow users to skip over
         # empty/blank cells when navigating tables in document content.
         #
         label = _("Skip _blank cells")
-        self.skipBlankCellsCheckButton = gtk.CheckButton(label)
-        gtk.Widget.show(self.skipBlankCellsCheckButton)
-        gtk.Box.pack_start(tableVBox, self.skipBlankCellsCheckButton,
-                           False, False, 0)
-        gtk.ToggleButton.set_active(
-                self.skipBlankCellsCheckButton,
-                _settingsManager.getSetting('skipBlankCells'))
+        value = _settingsManager.getSetting('skipBlankCells')
+        self.skipBlankCellsCheckButton = \
+            Gtk.CheckButton.new_with_mnemonic(label)
+        self.skipBlankCellsCheckButton.set_active(value)
+        tableGrid.attach(self.skipBlankCellsCheckButton, 0, 3, 1, 1)
 
-        # Translators: this is the title of a panel containing options
-        # for specifying how to navigate tables in document content.
-        #
-        tableLabel = gtk.Label("<b>%s</b>" % _("Table Navigation"))
-        gtk.Widget.show(tableLabel)
-        gtk.Frame.set_label_widget(tableFrame, tableLabel)
-        gtk.Label.set_use_markup(tableLabel, True)
+        grid.show_all()
 
-        return vbox
+        return grid
 
     def setAppPreferences(self, prefs):
         """Write out the application specific preferences lines and set the
diff --git a/src/orca/scripts/apps/yelp/yelp_v2/script.py b/src/orca/scripts/apps/yelp/yelp_v2/script.py
index 534a9d2..5d204a9 100644
--- a/src/orca/scripts/apps/yelp/yelp_v2/script.py
+++ b/src/orca/scripts/apps/yelp/yelp_v2/script.py
@@ -25,7 +25,6 @@ __date__      = "$Date$"
 __copyright__ = "Copyright (c) 2005-2010 Sun Microsystems Inc."
 __license__   = "LGPL"
 
-import gtk
 import pyatspi
 
 import orca.orca as orca
@@ -68,20 +67,19 @@ class Script(Gecko.Script):
         return Utilities(self)
 
     def getAppPreferencesGUI(self):
-        """Return a GtkVBox contain the application unique configuration
-        GUI items for the current application.
-        """
+        """Return a GtkGrid containing the application unique configuration
+        GUI items for the current application."""
 
-        vbox = Gecko.Script.getAppPreferencesGUI(self)
+        grid = Gecko.Script.getAppPreferencesGUI(self)
 
         # We need to maintain a separate setting for grabFocusOnAncestor
         # because the version of Gecko used by Yelp might be different
         # from that used by Firefox. See bug 608149.
         #
-        gtk.ToggleButton.set_active(self.grabFocusOnAncestorCheckButton,
-                                    script_settings.grabFocusOnAncestor)
+        self.grabFocusOnAncestorCheckButton.set_active(
+            script_settings.grabFocusOnAncestor)
 
-        return vbox
+        return grid
 
     def setAppPreferences(self, prefs):
         """Write out the application specific preferences lines and set the
diff --git a/src/orca/scripts/default.py b/src/orca/scripts/default.py
index 511fb0b..9120a7c 100644
--- a/src/orca/scripts/default.py
+++ b/src/orca/scripts/default.py
@@ -1829,8 +1829,8 @@ class Script(script.Script):
             self.utilities.adjustTextSelection(obj, caretOffset)
             texti = obj.queryText()
             startOffset, endOffset = texti.getSelection(0)
-            import gtk
-            clipboard = gtk.clipboard_get()
+            from gi.repository import Gtk
+            clipboard = Gtk.clipboard_get()
             clipboard.set_text(texti.getText(startOffset, endOffset))
 
         return True
diff --git a/src/orca/scripts/toolkits/CALLY/script.py b/src/orca/scripts/toolkits/CALLY/script.py
index 94f795f..ecf4c98 100644
--- a/src/orca/scripts/toolkits/CALLY/script.py
+++ b/src/orca/scripts/toolkits/CALLY/script.py
@@ -25,10 +25,11 @@ __date__      = "$Date$"
 __copyright__ = "Copyright (c) 2010 Igalia, S.L."
 __license__   = "LGPL"
 
+from gi.repository import Gdk
+
 import orca.orca as orca
 import orca.scripts.default as default
 import orca.debug as debug
-import gtk.gdk as gdk
 
 # Set with non printable unicode categories. Full table:
 # http://www.fileformat.info/info/unicode/category/index.htm
@@ -135,12 +136,11 @@ class Script(default.Script):
         #
         keyval = keyboardEvent.id
         try:
-            keymap = gdk.keymap_get_default()
-
-            if (keymap):
-                result = keymap.get_entries_for_keyval (keyval)
-                group = result[0][2]
+            keymap = Gdk.Keymap.get_default()
 
+            if keymap:
+                success, entries = keymap.get_entries_for_keyval(keyval)
+                group = entries[0].group
                 keyval, egroup, level, consumed = \
                 keymap.translate_keyboard_state (keyboardEvent.hw_code,
                                                  keyboardEvent.modifiers,
@@ -157,14 +157,14 @@ class Script(default.Script):
         keyboardEvent.id = keyval
 
         # if cally doesn't provide a event_string we get that using
-        # gdk. I know that it will probably called again computing
+        # Gdk. I know that it will probably called again computing
         # keyval_name but to simplify code, and not start to add
         # guess-code here I will maintain that in this way
         #
         if (keyboardEvent.event_string == ""):
             debug.println (debug.LEVEL_FINE, "Computing event_string")
             try:
-                keyboardEvent.event_string = gdk.keyval_name (keyboardEvent.id)
+                keyboardEvent.event_string = Gdk.keyval_name(keyboardEvent.id)
             except:
                 debug.println(debug.LEVEL_FINE,
                               "Could not obtain keyval_name for id: %d" \
diff --git a/src/orca/scripts/toolkits/Gecko/script.py b/src/orca/scripts/toolkits/Gecko/script.py
index 9610783..454656c 100644
--- a/src/orca/scripts/toolkits/Gecko/script.py
+++ b/src/orca/scripts/toolkits/Gecko/script.py
@@ -41,8 +41,8 @@ __date__      = "$Date$"
 __copyright__ = "Copyright (c) 2010 Orca Team."
 __license__   = "LGPL"
 
-import atk
-import gtk
+from gi.repository import Atk
+from gi.repository import Gtk
 import pyatspi
 import re
 import time
@@ -660,28 +660,28 @@ class Script(default.Script):
         return keyBindings
 
     def getAppPreferencesGUI(self):
-        """Return a GtkVBox contain the application unique configuration
-        GUI items for the current application.
-        """
+        """Return a GtkGrid containing the application unique configuration
+        GUI items for the current application."""
 
-        vbox = gtk.VBox(False, 0)
-        vbox.set_border_width(12)
-        gtk.Widget.show(vbox)
+        grid = Gtk.Grid()
+        grid.set_border_width(12)
 
-        # General ("Page") Navigation frame.
-        #
-        generalFrame = gtk.Frame()
-        gtk.Widget.show(generalFrame)
-        gtk.Box.pack_start(vbox, generalFrame, False, False, 5)
+        generalFrame = Gtk.Frame()
+        grid.attach(generalFrame, 0, 0, 1, 1)
 
-        generalAlignment = gtk.Alignment(0.5, 0.5, 1, 1)
-        gtk.Widget.show(generalAlignment)
-        gtk.Container.add(generalFrame, generalAlignment)
-        gtk.Alignment.set_padding(generalAlignment, 0, 0, 12, 0)
+        # Translators: this is the title of a panel holding options for
+        # how to navigate HTML content (e.g., Orca caret navigation,
+        # positioning of caret, etc.).
+        #
+        label = Gtk.Label(label="<b>%s</b>" % _("Page Navigation"))
+        label.set_use_markup(True)
+        generalFrame.set_label_widget(label)
 
-        generalVBox = gtk.VBox(False, 0)
-        gtk.Widget.show(generalVBox)
-        gtk.Container.add(generalAlignment, generalVBox)
+        generalAlignment = Gtk.Alignment.new(0.5, 0.5, 1, 1)
+        generalAlignment.set_padding(0, 0, 12, 0)
+        generalFrame.add(generalAlignment)
+        generalGrid = Gtk.Grid()
+        generalAlignment.add(generalGrid)
 
         # Translators: Gecko native caret navigation is where
         # Firefox itself controls how the arrow keys move the caret
@@ -691,25 +691,22 @@ class Script(default.Script):
         # Orca mode.
         #
         label = _("Use _Orca Caret Navigation")
-        self.controlCaretNavigationCheckButton = gtk.CheckButton(label)
-        gtk.Widget.show(self.controlCaretNavigationCheckButton)
-        gtk.Box.pack_start(generalVBox,
-                           self.controlCaretNavigationCheckButton,
-                           False, False, 0)
-        gtk.ToggleButton.set_active(self.controlCaretNavigationCheckButton,
-                                    script_settings.controlCaretNavigation)
+        value = script_settings.controlCaretNavigation
+        self.controlCaretNavigationCheckButton = \
+            Gtk.CheckButton.new_with_mnemonic(label)
+        self.controlCaretNavigationCheckButton.set_active(value) 
+        generalGrid.attach(self.controlCaretNavigationCheckButton, 0, 0, 1, 1)
 
         # Translators: Orca provides keystrokes to navigate HTML content
         # in a structural manner: go to previous/next header, list item,
         # table, etc.
         #
         label = _("Use Orca _Structural Navigation")
-        self.structuralNavigationCheckButton = gtk.CheckButton(label)
-        gtk.Widget.show(self.structuralNavigationCheckButton)
-        gtk.Box.pack_start(generalVBox, self.structuralNavigationCheckButton,
-                           False, False, 0)
-        gtk.ToggleButton.set_active(self.structuralNavigationCheckButton,
-                                    self.structuralNavigation.enabled)
+        value = self.structuralNavigation.enabled
+        self.structuralNavigationCheckButton = \
+            Gtk.CheckButton.new_with_mnemonic(label)
+        self.structuralNavigationCheckButton.set_active(value)
+        generalGrid.attach(self.structuralNavigationCheckButton, 0, 1, 1, 1)
 
         # Translators: Orca has had to implement its own caret navigation
         # model to work around issues in Gecko/Firefox. In certain versions
@@ -721,12 +718,11 @@ class Script(default.Script):
         # within Orca.
         #
         label = _("_Grab focus on objects when navigating")
-        self.grabFocusOnAncestorCheckButton = gtk.CheckButton(label)
-        gtk.Widget.show(self.grabFocusOnAncestorCheckButton)
-        gtk.Box.pack_start(generalVBox, self.grabFocusOnAncestorCheckButton,
-                           False, False, 0)
-        gtk.ToggleButton.set_active(self.grabFocusOnAncestorCheckButton,
-                                    script_settings.grabFocusOnAncestor)
+        value = script_settings.grabFocusOnAncestor
+        self.grabFocusOnAncestorCheckButton = \
+            Gtk.CheckButton.new_with_mnemonic(label)
+        self.grabFocusOnAncestorCheckButton.set_active(value)
+        generalGrid.attach(self.grabFocusOnAncestorCheckButton, 0, 2, 1, 1)
 
         # Translators: when the user arrows up and down in HTML content,
         # it is some times beneficial to always position the cursor at the
@@ -736,12 +732,11 @@ class Script(default.Script):
         #
         label = \
             _("_Position cursor at start of line when navigating vertically")
-        self.arrowToLineBeginningCheckButton = gtk.CheckButton(label)
-        gtk.Widget.show(self.arrowToLineBeginningCheckButton)
-        gtk.Box.pack_start(generalVBox, self.arrowToLineBeginningCheckButton,
-                           False, False, 0)
-        gtk.ToggleButton.set_active(self.arrowToLineBeginningCheckButton,
-                                    script_settings.arrowToLineBeginning)
+        value = script_settings.arrowToLineBeginning
+        self.arrowToLineBeginningCheckButton = \
+            Gtk.CheckButton.new_with_mnemonic(label)
+        self.arrowToLineBeginningCheckButton.set_active(value)
+        generalGrid.attach(self.arrowToLineBeginningCheckButton, 0, 3, 1, 1)
 
         # Translators: when the user loads a new page in Firefox, they
         # can optionally tell Orca to automatically start reading a
@@ -749,120 +744,94 @@ class Script(default.Script):
         #
         label = \
             _("Automatically start speaking a page when it is first _loaded")
-        self.sayAllOnLoadCheckButton = gtk.CheckButton(label)
-        gtk.Widget.show(self.sayAllOnLoadCheckButton)
-        gtk.Box.pack_start(generalVBox, self.sayAllOnLoadCheckButton,
-                           False, False, 0)
-        gtk.ToggleButton.set_active(self.sayAllOnLoadCheckButton,
-                                    script_settings.sayAllOnLoad)
+        value = script_settings.sayAllOnLoad
+        self.sayAllOnLoadCheckButton = Gtk.CheckButton.new_with_mnemonic(label)
+        self.sayAllOnLoadCheckButton.set_active(value)
+        generalGrid.attach(self.sayAllOnLoadCheckButton, 0, 4, 1, 1)
 
-        # Translators: this is the title of a panel holding options for
-        # how to navigate HTML content (e.g., Orca caret navigation,
-        # positioning of caret, etc.).
-        #
-        generalLabel = gtk.Label("<b>%s</b>" % _("Page Navigation"))
-        gtk.Widget.show(generalLabel)
-        gtk.Frame.set_label_widget(generalFrame, generalLabel)
-        gtk.Label.set_use_markup(generalLabel, True)
+        tableFrame = Gtk.Frame()
+        grid.attach(tableFrame, 0, 1, 1, 1)
 
-        # Table Navigation frame.
+        # Translators: this is the title of a panel containing options
+        # for specifying how to navigate tables in document content.
         #
-        tableFrame = gtk.Frame()
-        gtk.Widget.show(tableFrame)
-        gtk.Box.pack_start(vbox, tableFrame, False, False, 5)
+        label = Gtk.Label(label="<b>%s</b>" % _("Table Navigation"))
+        label.set_use_markup(True)
+        tableFrame.set_label_widget(label)
 
-        tableAlignment = gtk.Alignment(0.5, 0.5, 1, 1)
-        gtk.Widget.show(tableAlignment)
-        gtk.Container.add(tableFrame, tableAlignment)
-        gtk.Alignment.set_padding(tableAlignment, 0, 0, 12, 0)
-
-        tableVBox = gtk.VBox(False, 0)
-        gtk.Widget.show(tableVBox)
-        gtk.Container.add(tableAlignment, tableVBox)
+        tableAlignment = Gtk.Alignment.new(0.5, 0.5, 1, 1)
+        tableAlignment.set_padding(0, 0, 12, 0)
+        tableFrame.add(tableAlignment)
+        tableGrid = Gtk.Grid()
+        tableAlignment.add(tableGrid)
 
         # Translators: this is an option to tell Orca whether or not it
         # should speak table cell coordinates in document content.
         #
         label = _("Speak _cell coordinates")
-        self.speakCellCoordinatesCheckButton = gtk.CheckButton(label)
-        gtk.Widget.show(self.speakCellCoordinatesCheckButton)
-        gtk.Box.pack_start(tableVBox, self.speakCellCoordinatesCheckButton,
-                           False, False, 0)
-        gtk.ToggleButton.set_active(
-            self.speakCellCoordinatesCheckButton,
-            _settingsManager.getSetting('speakCellCoordinates'))
+        value = _settingsManager.getSetting('speakCellCoordinates')
+        self.speakCellCoordinatesCheckButton = \
+            Gtk.CheckButton.new_with_mnemonic(label)
+        self.speakCellCoordinatesCheckButton.set_active(value)
+        tableGrid.attach(self.speakCellCoordinatesCheckButton, 0, 0, 1, 1)
 
         # Translators: this is an option to tell Orca whether or not it
         # should speak the span size of a table cell (e.g., how many
         # rows and columns a particular table cell spans in a table).
         #
         label = _("Speak _multiple cell spans")
-        self.speakCellSpanCheckButton = gtk.CheckButton(label)
-        gtk.Widget.show(self.speakCellSpanCheckButton)
-        gtk.Box.pack_start(tableVBox, self.speakCellSpanCheckButton,
-                           False, False, 0)
-        gtk.ToggleButton.set_active(
-            self.speakCellSpanCheckButton,
-            _settingsManager.getSetting('speakCellSpan'))
+        value = _settingsManager.getSetting('speakCellSpan')
+        self.speakCellSpanCheckButton = \
+            Gtk.CheckButton.new_with_mnemonic(label)
+        self.speakCellSpanCheckButton.set_active(value)
+        tableGrid.attach(self.speakCellSpanCheckButton, 0, 1, 1, 1)
 
         # Translators: this is an option for whether or not to speak
         # the header of a table cell in document content.
         #
         label = _("Announce cell _header")
-        self.speakCellHeadersCheckButton = gtk.CheckButton(label)
-        gtk.Widget.show(self.speakCellHeadersCheckButton)
-        gtk.Box.pack_start(tableVBox, self.speakCellHeadersCheckButton,
-                           False, False, 0)
-        gtk.ToggleButton.set_active(
-            self.speakCellHeadersCheckButton,
-            _settingsManager.getSetting('speakCellHeaders'))
-
+        value = _settingsManager.getSetting('speakCellHeaders')
+        self.speakCellHeadersCheckButton = \
+            Gtk.CheckButton.new_with_mnemonic(label)
+        self.speakCellHeadersCheckButton.set_active(value)
+        tableGrid.attach(self.speakCellHeadersCheckButton, 0, 2, 1, 1)
+           
         # Translators: this is an option to allow users to skip over
         # empty/blank cells when navigating tables in document content.
         #
         label = _("Skip _blank cells")
-        self.skipBlankCellsCheckButton = gtk.CheckButton(label)
-        gtk.Widget.show(self.skipBlankCellsCheckButton)
-        gtk.Box.pack_start(tableVBox, self.skipBlankCellsCheckButton,
-                           False, False, 0)
-        gtk.ToggleButton.set_active(
-            self.skipBlankCellsCheckButton,
-            _settingsManager.getSetting('skipBlankCells'))
+        value = _settingsManager.getSetting('skipBlankCells')
+        self.skipBlankCellsCheckButton = \
+            Gtk.CheckButton.new_with_mnemonic(label)
+        self.skipBlankCellsCheckButton.set_active(value)
+        tableGrid.attach(self.skipBlankCellsCheckButton, 0, 3, 1, 1)
 
-        # Translators: this is the title of a panel containing options
-        # for specifying how to navigate tables in document content.
-        #
-        tableLabel = gtk.Label("<b>%s</b>" % _("Table Navigation"))
-        gtk.Widget.show(tableLabel)
-        gtk.Frame.set_label_widget(tableFrame, tableLabel)
-        gtk.Label.set_use_markup(tableLabel, True)
+        findFrame = Gtk.Frame()
+        grid.attach(findFrame, 0, 2, 1, 1)
 
-        # Find Options frame.
+        # Translators: this is the title of a panel containing options
+        # for using Firefox's Find toolbar.
         #
-        findFrame = gtk.Frame()
-        gtk.Widget.show(findFrame)
-        gtk.Box.pack_start(vbox, findFrame, False, False, 5)
-
-        findAlignment = gtk.Alignment(0.5, 0.5, 1, 1)
-        gtk.Widget.show(findAlignment)
-        gtk.Container.add(findFrame, findAlignment)
-        gtk.Alignment.set_padding(findAlignment, 0, 0, 12, 0)
+        label = Gtk.Label(label="<b>%s</b>" % _("Find Options"))
+        label.set_use_markup(True)
+        findFrame.set_label_widget(label)
 
-        findVBox = gtk.VBox(False, 0)
-        gtk.Widget.show(findVBox)
-        gtk.Container.add(findAlignment, findVBox)
+        findAlignment = Gtk.Alignment.new(0.5, 0.5, 1, 1)
+        findAlignment.set_padding(0, 0, 12, 0)
+        findFrame.add(findAlignment)
+        findGrid = Gtk.Grid()
+        findAlignment.add(findGrid)
 
         # Translators: this is an option to allow users to have Orca
         # automatically speak the line that contains the match while
         # the user is still in Firefox's Find toolbar.
         #
         label = _("Speak results during _find")
-        self.speakResultsDuringFindCheckButton = gtk.CheckButton(label)
-        gtk.Widget.show(self.speakResultsDuringFindCheckButton)
-        gtk.Box.pack_start(findVBox, self.speakResultsDuringFindCheckButton,
-                           False, False, 0)
-        gtk.ToggleButton.set_active(self.speakResultsDuringFindCheckButton,
-                                    script_settings.speakResultsDuringFind)
+        value = script_settings.speakResultsDuringFind
+        self.speakResultsDuringFindCheckButton = \
+            Gtk.CheckButton.new_with_mnemonic(label)
+        self.speakResultsDuringFindCheckButton.set_active(value)
+        findGrid.attach(self.speakResultsDuringFindCheckButton, 0, 0, 1, 1)
 
         # Translators: this is an option which dictates whether the line
         # that contains the match from the Find toolbar should always
@@ -870,53 +839,36 @@ class Script(default.Script):
         # line which contained the last match.
         #
         label = _("Onl_y speak changed lines during find")
-        self.changedLinesOnlyCheckButton = gtk.CheckButton(label)
-        gtk.Widget.show(self.changedLinesOnlyCheckButton)
-        gtk.Box.pack_start(findVBox, self.changedLinesOnlyCheckButton,
-                           False, False, 0)
-        gtk.ToggleButton.set_active(self.changedLinesOnlyCheckButton,
-                              script_settings.onlySpeakChangedLinesDuringFind)
+        value = script_settings.onlySpeakChangedLinesDuringFind
+        self.changedLinesOnlyCheckButton = \
+            Gtk.CheckButton.new_with_mnemonic(label)
+        self.changedLinesOnlyCheckButton.set_active(value)
+        findGrid.attach(self.changedLinesOnlyCheckButton, 0, 1, 1, 1)
 
-        hbox = gtk.HBox(False, 0)
-        gtk.Widget.show(hbox)
-        gtk.Box.pack_start(findVBox, hbox, False, False, 0)
+        hgrid = Gtk.Grid()
+        findGrid.attach(hgrid, 0, 2, 1, 1)
 
         # Translators: this option allows the user to specify the number
         # of matched characters that must be present before Orca speaks
         # the line that contains the results from the Find toolbar.
         #
         self.minimumFindLengthLabel = \
-              gtk.Label(_("Minimum length of matched text:"))
+              Gtk.Label(label=_("Minimum length of matched text:"))
         self.minimumFindLengthLabel.set_alignment(0, 0.5)
-        gtk.Widget.show(self.minimumFindLengthLabel)
-        gtk.Box.pack_start(hbox, self.minimumFindLengthLabel, False, False, 5)
+        hgrid.attach(self.minimumFindLengthLabel, 0, 0, 1, 1)
 
         self.minimumFindLengthAdjustment = \
-                   gtk.Adjustment(script_settings.minimumFindLength, 0, 20, 1)
-        self.minimumFindLengthSpinButton = \
-                       gtk.SpinButton(self.minimumFindLengthAdjustment, 0.0, 0)
-        gtk.Widget.show(self.minimumFindLengthSpinButton)
-        gtk.Box.pack_start(hbox, self.minimumFindLengthSpinButton,
-                           False, False, 5)
-
-        acc_targets = []
-        acc_src = self.minimumFindLengthLabel.get_accessible()
-        relation_set = acc_src.ref_relation_set()
-        acc_targ = self.minimumFindLengthSpinButton.get_accessible()
-        acc_targets.append(acc_targ)
-        relation = atk.Relation(acc_targets, 1)
-        relation.set_property('relation-type', atk.RELATION_LABEL_FOR)
-        relation_set.add(relation)
+                   Gtk.Adjustment(script_settings.minimumFindLength, 0, 20, 1)
+        self.minimumFindLengthSpinButton = Gtk.SpinButton()
+        self.minimumFindLengthSpinButton.set_adjustment(
+            self.minimumFindLengthAdjustment)
+        hgrid.attach(self.minimumFindLengthSpinButton, 1, 0, 1, 1)
+        self.minimumFindLengthLabel.set_mnemonic_widget(
+            self.minimumFindLengthSpinButton)
 
-        # Translators: this is the title of a panel containing options
-        # for using Firefox's Find toolbar.
-        #
-        findLabel = gtk.Label("<b>%s</b>" % _("Find Options"))
-        gtk.Widget.show(findLabel)
-        gtk.Frame.set_label_widget(findFrame, findLabel)
-        gtk.Label.set_use_markup(findLabel, True)
+        grid.show_all()
 
-        return vbox
+        return grid
 
     def setAppPreferences(self, prefs):
         """Write out the application specific preferences lines and set the
diff --git a/src/orca/scripts/toolkits/J2SE-access-bridge/script.py b/src/orca/scripts/toolkits/J2SE-access-bridge/script.py
index 6b14345..0138b2a 100644
--- a/src/orca/scripts/toolkits/J2SE-access-bridge/script.py
+++ b/src/orca/scripts/toolkits/J2SE-access-bridge/script.py
@@ -91,16 +91,14 @@ class Script(default.Script):
         if not keyboardEvent.keyval_name:
             return
 
-        import gtk.gdk as gdk
+        from gi.repository import Gdk
 
-        # Standardize the hw_code from a Java-unique one to a gdk one.
-        #
-        keymap = gdk.keymap_get_default()
-        keyval = gdk.keyval_from_name(keyboardEvent.keyval_name)
-        entries = keymap.get_entries_for_keyval(keyval)
+        keymap = Gdk.Keymap.get_default()
+        keyval = Gdk.keyval_from_name(keyboardEvent.keyval_name)
+        success, entries = keymap.get_entries_for_keyval(keyval)
         for entry in entries:
-            if entry[1] == 0:  # group = 0
-                keyboardEvent.hw_code = entry[0]
+            if entry.group == 0:
+                keyboardEvent.hw_code = entry.keycode
                 break
 
         # Put the event_string back to what it was prior to the Java
@@ -110,7 +108,7 @@ class Script(default.Script):
         #
         if keyboardEvent.event_string == keyboardEvent.keyval_name \
            and len(keyboardEvent.event_string) > 1:
-            keyval = gdk.keyval_from_name(keyboardEvent.keyval_name)
+            keyval = Gdk.keyval_from_name(keyboardEvent.keyval_name)
             if 0 < keyval < 256:
                 keyboardEvent.event_string = unichr(keyval).encode("UTF-8")
 
diff --git a/src/orca/scripts/toolkits/WebKitGtk/script.py b/src/orca/scripts/toolkits/WebKitGtk/script.py
index 58d24e2..572bbc9 100644
--- a/src/orca/scripts/toolkits/WebKitGtk/script.py
+++ b/src/orca/scripts/toolkits/WebKitGtk/script.py
@@ -120,15 +120,13 @@ class Script(default.Script):
         return keyBindings
 
     def getAppPreferencesGUI(self):
-        """Return a GtkVBox contain the application unique configuration
-        GUI items for the current application.
-        """
+        """Return a GtkGrid containing the application unique configuration
+        GUI items for the current application."""
 
-        import gtk
+        from gi.repository import Gtk
 
-        vbox = gtk.VBox(False, 0)
-        vbox.set_border_width(12)
-        vbox.show()
+        grid = Gtk.Grid()
+        grid.set_border_width(12)
 
         # Translators: when the user loads a new page in WebKit, they
         # can optionally tell Orca to automatically start reading a
@@ -136,12 +134,14 @@ class Script(default.Script):
         #
         label = \
             _("Automatically start speaking a page when it is first _loaded")
-        self.sayAllOnLoadCheckButton = gtk.CheckButton(label)
-        self.sayAllOnLoadCheckButton.show()
-        vbox.pack_start(self.sayAllOnLoadCheckButton, False, False, 0)
+        self.sayAllOnLoadCheckButton = \
+            Gtk.CheckButton.new_with_mnemonic(label)
         self.sayAllOnLoadCheckButton.set_active(script_settings.sayAllOnLoad)
+        grid.attach(self.sayAllOnLoadCheckButton, 0, 0, 1, 1)
+
+        grid.show_all()
 
-        return vbox
+        return grid
 
     def setAppPreferences(self, prefs):
         """Write out the application specific preferences lines and set the
diff --git a/src/orca/settings.py b/src/orca/settings.py
index 2a0e7d0..68d6610 100644
--- a/src/orca/settings.py
+++ b/src/orca/settings.py
@@ -31,30 +31,17 @@ import os
 
 tty = 7
 
-# Whether tool tips can be presented.
-#
-canPresentToolTips = False
-
 try:
     # This can fail due to gtk not being available.  We want to
     # be able to recover from that if possible.  The main driver
     # for this is to allow "orca --text-setup" to work even if
     # the desktop is not running.
     #
-    import gtk.gdk
-    _display = gtk.gdk.display_get_default()
+    from gi.repository import Gdk
+    _display = Gdk.Display.get_default()
     _screen = _display.get_default_screen()
     _root_window = _screen.get_root_window()
 
-    # The bug that caused gnome-panel to crash is fixed in GTK 2.10.11.
-    minimum_gtk_version = (100000 * 2) + \
-                          (1000 * 10) + \
-                           11
-    current_gtk_version  = (100000 * gtk.gtk_version[0]) + \
-                           (1000 * gtk.gtk_version[1]) + \
-                            gtk.gtk_version[2]
-    canPresentToolTips = (current_gtk_version >= minimum_gtk_version)
-
     # We want to know what the tty is so we can send it to BrlAPI
     # if possible.
     #
@@ -175,7 +162,7 @@ appGuiPreferencesModule  = "app_gui_prefs"
 # This module is expected to have the method, showQuitUI, which will
 # display the quit GUI.
 #
-quitModule = "orca_quit"
+quitModule = "orca_gui_quit"
 
 # The name of the module that holds the user interface for performing a
 # flat review find.
@@ -481,7 +468,7 @@ quitOrcaNoConfirmation  = False
 
 # Whether the user wants tooltips presented or not.
 #
-presentToolTips = False and canPresentToolTips
+presentToolTips = False
 
 # Keyboard layout options (see keyboardLayout).
 #
diff --git a/src/orca/speechdispatcherfactory.py b/src/orca/speechdispatcherfactory.py
index 8bc1b0d..5526a3f 100644
--- a/src/orca/speechdispatcherfactory.py
+++ b/src/orca/speechdispatcherfactory.py
@@ -38,7 +38,7 @@ __author__    = "Tomas Cerha <cerha brailcom org>"
 __copyright__ = "Copyright (c) 2006-2008 Brailcom, o.p.s."
 __license__   = "LGPL"
 
-import gobject
+from gi.repository import GObject
 import re
 
 import chnames
@@ -350,9 +350,9 @@ class SpeechServer(speechserver.SpeechServer):
                         context.currentOffset = context.startOffset
                 elif t == speechserver.SayAllContext.COMPLETED:
                     context.currentOffset = context.endOffset
-                gobject.idle_add(orca_callback, context, t)
+                GObject.idle_add(orca_callback, context, t)
                 if t == speechserver.SayAllContext.COMPLETED:
-                    gobject.idle_add(self._say_all, iterator, orca_callback)
+                    GObject.idle_add(self._say_all, iterator, orca_callback)
             self._speak(context.utterance, acss, callback=callback,
                         event_types=self._CALLBACK_TYPE_MAP.keys())
         return False # to indicate, that we don't want to be called again.
@@ -426,7 +426,7 @@ class SpeechServer(speechserver.SpeechServer):
                 self._speak(utterance, acss)
 
     def sayAll(self, utteranceIterator, progressCallback):
-        gobject.idle_add(self._say_all, utteranceIterator, progressCallback)
+        GObject.idle_add(self._say_all, utteranceIterator, progressCallback)
 
     def speakCharacter(self, character, acss=None):
         self._apply_acss(acss)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]