Index: src/orca/orca-setup.glade
===================================================================
--- src/orca/orca-setup.glade	(revision 3426)
+++ src/orca/orca-setup.glade	(working copy)
@@ -1252,8 +1252,8 @@
 				  <property name="wrap">False</property>
 				  <property name="adjustment">10 1 9999 1 10 10</property>
 				  <accessibility>
+				    <atkrelation target="speakProgressBarUnitsLabel" type="labelled-by"/>
 				    <atkrelation target="speakProgressBarLabel" type="labelled-by"/>
-				    <atkrelation target="speakProgressBarUnitsLabel" type="labelled-by"/>
 				  </accessibility>
 				  <signal name="value_changed" handler="speakProgressBarValueChanged" last_modification_time="Thu, 14 Jun 2007 15:09:00 GMT"/>
 				</widget>
@@ -1524,6 +1524,144 @@
 		  </child>
 
 		  <child>
+		    <widget class="GtkFrame" id="contractedBrailleFrame">
+		      <property name="label_xalign">0</property>
+		      <property name="label_yalign">0.5</property>
+		      <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+		      <child>
+			<widget class="GtkAlignment" id="alignment87">
+			  <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">0</property>
+			  <property name="bottom_padding">0</property>
+			  <property name="left_padding">12</property>
+			  <property name="right_padding">0</property>
+
+			  <child>
+			    <widget class="GtkVBox" id="vbox34">
+			      <property name="border_width">3</property>
+			      <property name="visible">True</property>
+			      <property name="homogeneous">False</property>
+			      <property name="spacing">0</property>
+
+			      <child>
+				<widget class="GtkCheckButton" id="checkbutton1">
+				  <property name="visible">True</property>
+				  <property name="can_focus">True</property>
+				  <property name="label" translatable="yes">_Enable Contracted Braille</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 name="toggled" handler="contractedBrailleToggled" last_modification_time="Thu, 03 Jan 2008 23:01:13 GMT"/>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkHBox" id="contractionTablesHBox">
+				  <property name="visible">True</property>
+				  <property name="sensitive">False</property>
+				  <property name="homogeneous">False</property>
+				  <property name="spacing">3</property>
+
+				  <child>
+				    <widget class="GtkLabel" id="contractionTableLabel">
+				      <property name="visible">True</property>
+				      <property name="label" translatable="yes">Contraction _Table:</property>
+				      <property name="use_underline">True</property>
+				      <property name="use_markup">False</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="mnemonic_widget">contractionTableCombo</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>
+					<atkrelation target="contractionTableCombo" type="label-for"/>
+				      </accessibility>
+				    </widget>
+				    <packing>
+				      <property name="padding">0</property>
+				      <property name="expand">False</property>
+				      <property name="fill">False</property>
+				    </packing>
+				  </child>
+
+				  <child>
+				    <widget class="GtkComboBox" id="contractionTableCombo">
+				      <property name="visible">True</property>
+				      <property name="add_tearoffs">False</property>
+				      <property name="focus_on_click">True</property>
+				      <accessibility>
+					<atkrelation target="contractionTableLabel" type="labelled-by"/>
+				      </accessibility>
+				    </widget>
+				    <packing>
+				      <property name="padding">0</property>
+				      <property name="expand">False</property>
+				      <property name="fill">False</property>
+				    </packing>
+				  </child>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+			    </widget>
+			  </child>
+			</widget>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label48">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">&lt;b&gt;Contracted Braille&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>
+			</widget>
+			<packing>
+			  <property name="type">label_item</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
 		    <widget class="GtkFrame" id="frame7">
 		      <property name="visible">True</property>
 		      <property name="label_xalign">0</property>
@@ -3366,8 +3504,8 @@
 							  <property name="wrap">False</property>
 							  <property name="adjustment">1 24 256 1 10 10</property>
 							  <accessibility>
+							    <atkrelation target="magCursorSizeLabel" type="labelled-by"/>
 							    <atkrelation target="magCursorSizeUnitsLabel" type="labelled-by"/>
-							    <atkrelation target="magCursorSizeLabel" type="labelled-by"/>
 							  </accessibility>
 							  <signal name="value_changed" handler="magCursorSizeValueChanged" last_modification_time="Wed, 03 May 2006 15:31:48 GMT"/>
 							</widget>
@@ -3719,8 +3857,8 @@
 							  <property name="wrap">False</property>
 							  <property name="adjustment">1 1 256 1 10 10</property>
 							  <accessibility>
+							    <atkrelation target="magCrossHairSizeLabel" type="labelled-by"/>
 							    <atkrelation target="magCrossHairSizeUnitsLabel" type="labelled-by"/>
-							    <atkrelation target="magCrossHairSizeLabel" type="labelled-by"/>
 							  </accessibility>
 							  <signal name="value_changed" handler="magCrossHairSizeValueChanged" last_modification_time="Wed, 03 May 2006 15:39:23 GMT"/>
 							</widget>
@@ -4157,8 +4295,8 @@
 						  <property name="wrap">False</property>
 						  <property name="adjustment">0 0 100 1 10 10</property>
 						  <accessibility>
+						    <atkrelation target="magEdgeMarginUnitsLabel" type="labelled-by"/>
 						    <atkrelation target="magEdgeMarginLabel" type="labelled-by"/>
-						    <atkrelation target="magEdgeMarginUnitsLabel" type="labelled-by"/>
 						  </accessibility>
 						  <signal name="value_changed" handler="magEdgeMarginValueChanged" last_modification_time="Thu, 06 Dec 2007 22:57:50 GMT"/>
 						</widget>
Index: src/orca/orca_gui_prefs.py
===================================================================
--- src/orca/orca_gui_prefs.py	(revision 3426)
+++ src/orca/orca_gui_prefs.py	(working copy)
@@ -58,6 +58,39 @@
 
 (ACTUAL, REPLACEMENT) = range(2)
 
+# Translators: These are the braille translation table names.
+#
+TABLE_NAMES = {'Cz-Cz-g1': _('Czech Grade 1'),
+               'Es-Es-g1': _('Spanish Grade 1'),
+               'Fr-Ca-g2': _('Canada French Grade 2'),
+               'Fr-Fr-g2': _('France French Grade 2'),
+               'Lv-Lv-g1': _('Latvian Grade 1'),
+               'Nl-Nl-g1': _('Netherlands Dutch Grade 1'),
+               'No-No-g0': _('Norwegian Grade 0'),
+               'No-No-g1': _('Norwegian Grade 1'),
+               'No-No-g2': _('Norwegian Grade 2'),
+               'No-No-g3': _('Norwegian Grade 3'),
+               'Pl-Pl-g1': _('Polish Grade 1'),
+               'Pt-Pt-g1': _('Portuguese Grade 1'),
+               'Se-Se-g1': _('Swedish Grade 1'),
+               'ar-ar-g1': _('Arabic Grade 1'),
+               'cy-cy-g1': _('Welsh Grade 1'),
+               'cy-cy-g2': _('Welsh Grade 2'),
+               'de-de-g0': _('German Grade 0'),
+               'de-de-g1': _('German Grade 1'),
+               'de-de-g2': _('German Grade 2'),
+               'en-GB-g2': _('U.K. English Grade 2'),
+               'en-gb-g1': _('U.K. English Grade 1'),
+               'en-us-g1': _('U.S. English Grade 1'),
+               'en-us-g2': _('U.S. English Grade 2'),
+               'fr-ca-g1': _('Canada French Grade 1'),
+               'fr-fr-g1': _('France French 1'),
+               'gr-gr-g1': _('Greek Grade 1'),
+               'hi-in-g1': _('Hindi Grade 1'),
+               'it-it-g1': _('Italian Grade 1'),
+               'nl-be-g1': _('Belgium Dutch Grade 1')}
+
+
 class OrcaSetupGUI(orca_glade.GladeWrapper):
 
     # Translators: this is an algorithm for tracking an object
@@ -959,6 +992,10 @@
         model.set(thisIter, IS_SPOKEN, not model[path][IS_SPOKEN])
         self._updateTextDictEntry()
 
+    def contractedBrailleToggled(self, checkbox):
+        hbox = self.widgets.get_widget('contractionTablesHBox')
+        hbox.set_sensitive(checkbox.get_active())
+        
     def textAttributeBrailledToggled(self, cell, path, model):
         """The user has toggled the state of one of the text attribute
         checkboxes to be brailled. Update our model to reflect this,
@@ -4378,6 +4415,27 @@
 
     showPreferencesUI()
 
+    # TODO: Since contracted braille is not yet implemented, this is here to
+    # allow reviewing of the future interface. When this is finally implemented
+    # the frame container should be set to visible in the glade file.
+    #
+    orca_state.orcaOS.widgets.get_widget('contractedBrailleFrame').show_all()
+
+    tables_model = gtk.ListStore(str)
+    
+    table_names = TABLE_NAMES.values()
+    table_names.sort()
+    for table_name in table_names:
+        tables_model.append([table_name])
+
+    tables_combo = \
+                 orca_state.orcaOS.widgets.get_widget('contractionTableCombo')
+    cell = gtk.CellRendererText()
+    tables_combo.pack_start(cell, True)
+    tables_combo.add_attribute(cell, 'text', 0)
+    tables_combo.set_model(tables_model)
+    tables_combo.set_active(0)
+
     gtk.main()
     sys.exit(0)
 
