From 2c92c7e85faa068d4037c361df91ebed79e87916 Mon Sep 17 00:00:00 2001
From: Jose Antonio Ortega Ruiz <jao@gnu.org>
Date: Thu, 24 Jun 2004 01:40:46 +0000
Subject: almost complete (barring bugs) reimplementation of all gmixvm
 functionality in non-split mode for gtk 2.0.

---
 mixgtk/mixgtk.c                |   10 +-
 mixgtk/mixgtk.glade            | 1628 +++++++---------------------------------
 mixgtk/mixgtk_cmd_dispatcher.c |   20 +-
 mixgtk/mixgtk_device.c         |  279 +++----
 mixgtk/mixgtk_device.h         |   12 +-
 mixgtk/mixgtk_fontsel.c        |  240 ++----
 mixgtk/mixgtk_fontsel.h        |   32 +-
 mixgtk/mixgtk_mixal.c          |   16 +-
 mixgtk/mixgtk_mixvm.c          |   22 +-
 mixgtk/mixgtk_widgets.c        |    2 +-
 mixgtk/mixgtk_widgets.h        |    2 +-
 11 files changed, 568 insertions(+), 1695 deletions(-)

diff --git a/mixgtk/mixgtk.c b/mixgtk/mixgtk.c
index 3b926b4..97f6a16 100644
--- a/mixgtk/mixgtk.c
+++ b/mixgtk/mixgtk.c
@@ -1,7 +1,7 @@
 /* -*-c-*- -------------- mixgtk.c :
  * Main functions of the mix gtk front-end
  * ------------------------------------------------------------------
- * $Id: mixgtk.c,v 1.16 2004/06/23 10:50:10 jao Exp $
+ * $Id: mixgtk.c,v 1.17 2004/06/24 01:40:48 jao Exp $
  * ------------------------------------------------------------------
  * Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
  *
@@ -36,7 +36,7 @@
 #include "mixgtk.h"
 
 static const gchar *SPLIT_ARG_ = "-s";
-static const gchar *SPLIT_LONG_ARG_ = "--s";
+static const gchar *SPLIT_LONG_ARG_ = "--split";
 
 gboolean
 mixgtk_restart (void)
@@ -49,8 +49,6 @@ mixgtk_restart (void)
       return FALSE;
     }
 
-  mixgtk_fontsel_load_defaults ();
-
   if (!mixgtk_cmd_dispatcher_init (MIXGTK_MAIN))
     {
       g_error (_("Unable to initialise application (command dispatcher)\n"));
@@ -71,9 +69,9 @@ mixgtk_restart (void)
       return FALSE;
     }
 
-  if (!mixgtk_device_init (GTK_NOTEBOOK
+  if (!mixgtk_device_init (GTK_CONTAINER
 			   (mixgtk_widget_factory_get
-			    (MIXGTK_DEVICES_DIALOG, MIXGTK_WIDGET_DEVICE)),
+			    (MIXGTK_DEVICES_DIALOG, MIXGTK_WIDGET_DEVICES)),
 			   vm))
     {
       g_error (_("Unable to initialise application (devices)\n"));
diff --git a/mixgtk/mixgtk.glade b/mixgtk/mixgtk.glade
index b246fff..a73dfc6 100644
--- a/mixgtk/mixgtk.glade
+++ b/mixgtk/mixgtk.glade
@@ -49,7 +49,7 @@
 		      <accelerator key="F3" modifiers="GDK_MOD1_MASK" signal="activate"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image80">
+			<widget class="GtkImage" id="image91">
 			  <property name="visible">True</property>
 			  <property name="stock">gtk-open</property>
 			  <property name="icon_size">1</property>
@@ -72,7 +72,7 @@
 		      <accelerator key="F4" modifiers="GDK_MOD1_MASK" signal="activate"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image81">
+			<widget class="GtkImage" id="image92">
 			  <property name="visible">True</property>
 			  <property name="stock">gtk-justify-fill</property>
 			  <property name="icon_size">1</property>
@@ -95,7 +95,7 @@
 		      <accelerator key="F5" modifiers="GDK_MOD1_MASK" signal="activate"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image82">
+			<widget class="GtkImage" id="image93">
 			  <property name="visible">True</property>
 			  <property name="stock">gtk-execute</property>
 			  <property name="icon_size">1</property>
@@ -124,7 +124,7 @@
 		      <accelerator key="Q" modifiers="GDK_MOD1_MASK" signal="activate"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image83">
+			<widget class="GtkImage" id="image94">
 			  <property name="visible">True</property>
 			  <property name="stock">gtk-quit</property>
 			  <property name="icon_size">1</property>
@@ -199,7 +199,7 @@
 		      <accelerator key="R" modifiers="GDK_MOD1_MASK" signal="activate"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image84">
+			<widget class="GtkImage" id="image95">
 			  <property name="visible">True</property>
 			  <property name="stock">gtk-go-forward</property>
 			  <property name="icon_size">1</property>
@@ -222,7 +222,7 @@
 		      <accelerator key="N" modifiers="GDK_MOD1_MASK" signal="activate"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image85">
+			<widget class="GtkImage" id="image96">
 			  <property name="visible">True</property>
 			  <property name="stock">gtk-goto-last</property>
 			  <property name="icon_size">1</property>
@@ -245,7 +245,7 @@
 		      <accelerator key="C" modifiers="GDK_MOD1_MASK" signal="activate"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image86">
+			<widget class="GtkImage" id="image97">
 			  <property name="visible">True</property>
 			  <property name="stock">gtk-clear</property>
 			  <property name="icon_size">1</property>
@@ -268,7 +268,7 @@
 		      <accelerator key="Y" modifiers="GDK_MOD1_MASK" signal="activate"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image87">
+			<widget class="GtkImage" id="image98">
 			  <property name="visible">True</property>
 			  <property name="stock">gtk-index</property>
 			  <property name="icon_size">1</property>
@@ -301,7 +301,7 @@
 		      <property name="use_underline">True</property>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image88">
+			<widget class="GtkImage" id="image99">
 			  <property name="visible">True</property>
 			  <property name="stock">gtk-select-font</property>
 			  <property name="icon_size">1</property>
@@ -365,12 +365,24 @@
 		  </child>
 
 		  <child>
-		    <widget class="GtkMenuItem" id="device_output1">
+		    <widget class="GtkImageMenuItem" id="device_output1">
 		      <property name="visible">True</property>
 		      <property name="tooltip" translatable="yes">Change format of binary devices output</property>
 		      <property name="label" translatable="yes">_Device output...</property>
 		      <property name="use_underline">True</property>
 		      <signal name="activate" handler="on_devform_activate"/>
+
+		      <child internal-child="image">
+			<widget class="GtkImage" id="image100">
+			  <property name="visible">True</property>
+			  <property name="stock">gtk-zoom-100</property>
+			  <property name="icon_size">1</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			</widget>
+		      </child>
 		    </widget>
 		  </child>
 
@@ -382,7 +394,7 @@
 		      <signal name="activate" handler="on_devdir_activate"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image89">
+			<widget class="GtkImage" id="image101">
 			  <property name="visible">True</property>
 			  <property name="stock">gtk-home</property>
 			  <property name="icon_size">1</property>
@@ -403,7 +415,7 @@
 		      <signal name="activate" handler="on_external_programs_activate"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image90">
+			<widget class="GtkImage" id="image102">
 			  <property name="visible">True</property>
 			  <property name="stock">gtk-preferences</property>
 			  <property name="icon_size">1</property>
@@ -431,7 +443,7 @@
 		      <signal name="activate" handler="on_save_activate"/>
 
 		      <child internal-child="image">
-			<widget class="GtkImage" id="image91">
+			<widget class="GtkImage" id="image103">
 			  <property name="visible">True</property>
 			  <property name="stock">gtk-save</property>
 			  <property name="icon_size">1</property>
@@ -532,7 +544,7 @@
 	    <widget class="GtkToolButton" id="edit_button">
 	      <property name="visible">True</property>
 	      <property name="tooltip" translatable="yes">Edit MIXAL source</property>
-	      <property name="label" translatable="yes"></property>
+	      <property name="label" translatable="yes">Edit</property>
 	      <property name="use_underline">True</property>
 	      <property name="stock_id">gtk-justify-fill</property>
 	      <property name="visible_horizontal">True</property>
@@ -550,7 +562,7 @@
 	    <widget class="GtkToolButton" id="run_button">
 	      <property name="visible">True</property>
 	      <property name="tooltip" translatable="yes">Run</property>
-	      <property name="label" translatable="yes"></property>
+	      <property name="label" translatable="yes">Run</property>
 	      <property name="use_underline">True</property>
 	      <property name="stock_id">gtk-go-forward</property>
 	      <property name="visible_horizontal">True</property>
@@ -568,7 +580,7 @@
 	    <widget class="GtkToolButton" id="step_button">
 	      <property name="visible">True</property>
 	      <property name="tooltip" translatable="yes">Next</property>
-	      <property name="label" translatable="yes"></property>
+	      <property name="label" translatable="yes">Next</property>
 	      <property name="use_underline">True</property>
 	      <property name="stock_id">gtk-goto-last</property>
 	      <property name="visible_horizontal">True</property>
@@ -586,7 +598,7 @@
 	    <widget class="GtkToolButton" id="clear_button">
 	      <property name="visible">True</property>
 	      <property name="tooltip" translatable="yes">Clear breakpoints</property>
-	      <property name="label" translatable="yes"></property>
+	      <property name="label" translatable="yes">Clear</property>
 	      <property name="use_underline">True</property>
 	      <property name="stock_id">gtk-clear</property>
 	      <property name="visible_horizontal">True</property>
@@ -604,7 +616,7 @@
 	    <widget class="GtkToolButton" id="symbols_button">
 	      <property name="visible">True</property>
 	      <property name="tooltip" translatable="yes">Symbol table</property>
-	      <property name="label" translatable="yes"></property>
+	      <property name="label" translatable="yes">Symbols</property>
 	      <property name="use_underline">True</property>
 	      <property name="stock_id">gtk-index</property>
 	      <property name="visible_horizontal">True</property>
@@ -635,7 +647,7 @@
 	    <widget class="GtkToolButton" id="button28">
 	      <property name="visible">True</property>
 	      <property name="tooltip" translatable="yes">Device directory</property>
-	      <property name="label" translatable="yes"></property>
+	      <property name="label" translatable="yes">Devdir</property>
 	      <property name="use_underline">True</property>
 	      <property name="stock_id">gtk-home</property>
 	      <property name="visible_horizontal">True</property>
@@ -653,9 +665,9 @@
 	    <widget class="GtkToolButton" id="button30">
 	      <property name="visible">True</property>
 	      <property name="tooltip" translatable="yes">Output format</property>
-	      <property name="label" translatable="yes"></property>
+	      <property name="label" translatable="yes">Format</property>
 	      <property name="use_underline">True</property>
-	      <property name="stock_id">gtk-find-and-replace</property>
+	      <property name="stock_id">gtk-zoom-100</property>
 	      <property name="visible_horizontal">True</property>
 	      <property name="visible_vertical">True</property>
 	      <property name="is_important">False</property>
@@ -671,7 +683,7 @@
 	    <widget class="GtkToolButton" id="button31">
 	      <property name="visible">True</property>
 	      <property name="tooltip" translatable="yes">External programs</property>
-	      <property name="label" translatable="yes"></property>
+	      <property name="label" translatable="yes">Programs</property>
 	      <property name="use_underline">True</property>
 	      <property name="stock_id">gtk-properties</property>
 	      <property name="visible_horizontal">True</property>
@@ -738,7 +750,7 @@
 	      <property name="show_border">True</property>
 	      <property name="tab_pos">GTK_POS_TOP</property>
 	      <property name="scrollable">False</property>
-	      <property name="enable_popup">False</property>
+	      <property name="enable_popup">True</property>
 	      <signal name="switch_page" handler="on_notebook_switch_page"/>
 
 	      <child>
@@ -1863,36 +1875,23 @@
 	      </child>
 
 	      <child>
-		<widget class="GtkNotebook" id="devices_notebook">
+		<widget class="GtkScrolledWindow" id="scrolledwindow37">
 		  <property name="visible">True</property>
 		  <property name="can_focus">True</property>
-		  <property name="show_tabs">True</property>
-		  <property name="show_border">True</property>
-		  <property name="tab_pos">GTK_POS_RIGHT</property>
-		  <property name="scrollable">True</property>
-		  <property name="enable_popup">False</property>
-
-		  <child>
-		    <placeholder/>
-		  </child>
+		  <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+		  <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+		  <property name="shadow_type">GTK_SHADOW_NONE</property>
+		  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
 
 		  <child>
-		    <widget class="GtkLabel" id="label1436">
+		    <widget class="GtkViewport" id="devices_container">
 		      <property name="visible">True</property>
-		      <property name="label" translatable="yes"></property>
-		      <property name="use_underline">False</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="shadow_type">GTK_SHADOW_IN</property>
+
+		      <child>
+			<placeholder/>
+		      </child>
 		    </widget>
-		    <packing>
-		      <property name="type">tab</property>
-		    </packing>
 		  </child>
 		</widget>
 		<packing>
@@ -3335,7 +3334,7 @@ Free Software Foundation, Inc.</property>
   <property name="title" translatable="yes">Select Font</property>
   <property name="type">GTK_WINDOW_TOPLEVEL</property>
   <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
+  <property name="modal">True</property>
   <property name="resizable">True</property>
   <property name="destroy_with_parent">False</property>
   <property name="decorated">True</property>
@@ -3354,7 +3353,6 @@ Free Software Foundation, Inc.</property>
       <property name="can_focus">True</property>
       <property name="relief">GTK_RELIEF_NORMAL</property>
       <property name="focus_on_click">True</property>
-      <signal name="clicked" handler="on_fontsel_cancel_clicked"/>
     </widget>
   </child>
 
@@ -3365,7 +3363,6 @@ Free Software Foundation, Inc.</property>
       <property name="can_focus">True</property>
       <property name="relief">GTK_RELIEF_NORMAL</property>
       <property name="focus_on_click">True</property>
-      <signal name="clicked" handler="on_fontsel_apply_clicked"/>
     </widget>
   </child>
 
@@ -3376,7 +3373,6 @@ Free Software Foundation, Inc.</property>
       <property name="can_focus">True</property>
       <property name="relief">GTK_RELIEF_NORMAL</property>
       <property name="focus_on_click">True</property>
-      <signal name="clicked" handler="on_fontsel_ok_clicked"/>
     </widget>
   </child>
 
@@ -3399,6 +3395,8 @@ Free Software Foundation, Inc.</property>
   <property name="type">GTK_WINDOW_TOPLEVEL</property>
   <property name="window_position">GTK_WIN_POS_NONE</property>
   <property name="modal">True</property>
+  <property name="default_width">320</property>
+  <property name="default_height">140</property>
   <property name="resizable">True</property>
   <property name="destroy_with_parent">False</property>
   <property name="decorated">True</property>
@@ -3423,169 +3421,55 @@ Free Software Foundation, Inc.</property>
 	  <property name="layout_style">GTK_BUTTONBOX_END</property>
 
 	  <child>
-	    <widget class="GtkHButtonBox" id="hbuttonbox8">
-	      <property name="visible">True</property>
-	      <property name="layout_style">GTK_BUTTONBOX_DEFAULT_STYLE</property>
-	      <property name="spacing">30</property>
-
-	      <child>
-		<widget class="GtkButton" id="devok_button">
-		  <property name="visible">True</property>
-		  <property name="can_default">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="label">gtk-ok</property>
-		  <property name="use_stock">True</property>
-		  <property name="relief">GTK_RELIEF_NORMAL</property>
-		  <property name="focus_on_click">True</property>
-		  <signal name="clicked" handler="on_devok_button_clicked"/>
-		</widget>
-	      </child>
-
-	      <child>
-		<widget class="GtkButton" id="devapp_button">
-		  <property name="visible">True</property>
-		  <property name="can_default">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="label">gtk-apply</property>
-		  <property name="use_stock">True</property>
-		  <property name="relief">GTK_RELIEF_NORMAL</property>
-		  <property name="focus_on_click">True</property>
-		  <signal name="clicked" handler="on_devapp_button_clicked"/>
-		</widget>
-	      </child>
-
-	      <child>
-		<widget class="GtkButton" id="devcancel_button">
-		  <property name="visible">True</property>
-		  <property name="can_default">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="label">gtk-cancel</property>
-		  <property name="use_stock">True</property>
-		  <property name="relief">GTK_RELIEF_NORMAL</property>
-		  <property name="focus_on_click">True</property>
-		  <signal name="clicked" handler="on_devcancel_button_clicked"/>
-		</widget>
-	      </child>
-	    </widget>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">True</property>
-	  <property name="pack_type">GTK_PACK_END</property>
-	</packing>
-      </child>
-
-      <child>
-	<widget class="GtkFixed" id="fixed2">
-	  <property name="visible">True</property>
-
-	  <child>
-	    <widget class="GtkCombo" id="dev_combo">
-	      <property name="width_request">0</property>
-	      <property name="height_request">0</property>
+	    <widget class="GtkButton" id="button37">
 	      <property name="visible">True</property>
-	      <property name="value_in_list">True</property>
-	      <property name="allow_empty">True</property>
-	      <property name="case_sensitive">False</property>
-	      <property name="enable_arrow_keys">True</property>
-	      <property name="enable_arrows_always">False</property>
-
-	      <child internal-child="entry">
-		<widget class="GtkEntry" id="combo-entry1">
-		  <property name="visible">True</property>
-		  <property name="tooltip" translatable="yes">Choose a device</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>
-		  <property name="has_frame">True</property>
-		  <property name="invisible_char" translatable="yes">*</property>
-		  <property name="activates_default">False</property>
-		  <signal name="changed" handler="on_deventry_changed"/>
-		</widget>
-	      </child>
-
-	      <child internal-child="list">
-		<widget class="GtkList" id="convertwidget11">
-		  <property name="visible">True</property>
-		  <property name="selection_mode">GTK_SELECTION_BROWSE</property>
-
-		  <child>
-		    <widget class="GtkListItem" id="convertwidget12">
-		      <property name="visible">True</property>
-
-		      <child>
-			<widget class="GtkLabel" id="convertwidget13">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes"></property>
-			  <property name="use_underline">False</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</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-		</widget>
-	      </child>
+	      <property name="can_default">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="label">gtk-cancel</property>
+	      <property name="use_stock">True</property>
+	      <property name="relief">GTK_RELIEF_NORMAL</property>
+	      <property name="focus_on_click">True</property>
+	      <property name="response_id">-6</property>
 	    </widget>
-	    <packing>
-	      <property name="x">135</property>
-	      <property name="y">46</property>
-	    </packing>
 	  </child>
 
 	  <child>
-	    <widget class="GtkRadioButton" id="wordradio">
-	      <property name="width_request">0</property>
-	      <property name="height_request">0</property>
+	    <widget class="GtkButton" id="button38">
 	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Show output as MIX words</property>
+	      <property name="can_default">True</property>
 	      <property name="can_focus">True</property>
-	      <property name="label" translatable="yes">Word</property>
-	      <property name="use_underline">True</property>
+	      <property name="label">gtk-apply</property>
+	      <property name="use_stock">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>
+	      <property name="response_id">-10</property>
 	    </widget>
-	    <packing>
-	      <property name="x">104</property>
-	      <property name="y">96</property>
-	    </packing>
 	  </child>
 
 	  <child>
-	    <widget class="GtkRadioButton" id="decradio">
-	      <property name="width_request">0</property>
-	      <property name="height_request">0</property>
+	    <widget class="GtkButton" id="button39">
 	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Show output as decimal numbers</property>
+	      <property name="can_default">True</property>
 	      <property name="can_focus">True</property>
-	      <property name="label" translatable="yes">Dec</property>
-	      <property name="use_underline">True</property>
+	      <property name="label">gtk-ok</property>
+	      <property name="use_stock">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>
-	      <property name="group">wordradio</property>
-	      <signal name="toggled" handler="on_decradio_toggled"/>
+	      <property name="response_id">-5</property>
 	    </widget>
-	    <packing>
-	      <property name="x">176</property>
-	      <property name="y">96</property>
-	    </packing>
 	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">True</property>
+	  <property name="pack_type">GTK_PACK_END</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkFixed" id="fixed2">
+	  <property name="visible">True</property>
 
 	  <child>
 	    <widget class="GtkButton" id="devset_button">
@@ -3601,17 +3485,17 @@ Free Software Foundation, Inc.</property>
 	      <signal name="clicked" handler="on_devset_button_clicked"/>
 	    </widget>
 	    <packing>
-	      <property name="x">16</property>
-	      <property name="y">112</property>
+	      <property name="x">233</property>
+	      <property name="y">31</property>
 	    </packing>
 	  </child>
 
 	  <child>
-	    <widget class="GtkLabel" id="label233">
+	    <widget class="GtkLabel" id="label232">
 	      <property name="width_request">0</property>
 	      <property name="height_request">0</property>
 	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">Format</property>
+	      <property name="label" translatable="yes">Device</property>
 	      <property name="use_underline">False</property>
 	      <property name="use_markup">False</property>
 	      <property name="justify">GTK_JUSTIFY_CENTER</property>
@@ -3623,17 +3507,17 @@ Free Software Foundation, Inc.</property>
 	      <property name="ypad">0</property>
 	    </widget>
 	    <packing>
-	      <property name="x">48</property>
-	      <property name="y">80</property>
+	      <property name="x">24</property>
+	      <property name="y">10</property>
 	    </packing>
 	  </child>
 
 	  <child>
-	    <widget class="GtkLabel" id="label232">
+	    <widget class="GtkLabel" id="label233">
 	      <property name="width_request">0</property>
 	      <property name="height_request">0</property>
 	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">Device</property>
+	      <property name="label" translatable="yes">Format</property>
 	      <property name="use_underline">False</property>
 	      <property name="use_markup">False</property>
 	      <property name="justify">GTK_JUSTIFY_CENTER</property>
@@ -3646,14 +3530,88 @@ Free Software Foundation, Inc.</property>
 	    </widget>
 	    <packing>
 	      <property name="x">24</property>
-	      <property name="y">8</property>
+	      <property name="y">38</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkComboBoxEntry" id="dev_combo">
+	      <property name="width_request">183</property>
+	      <property name="height_request">25</property>
+	      <property name="visible">True</property>
+	      <property name="items" translatable="yes">tape0
+tape1
+tape2
+tape3
+tape4
+tape5
+tape6
+tape7
+disk0
+disk1
+disk2
+disk3
+disk4
+disk5
+disk6
+disk7</property>
+	      <signal name="changed" handler="on_dev_combo_changed" last_modification_time="Wed, 23 Jun 2004 11:34:16 GMT"/>
+	    </widget>
+	    <packing>
+	      <property name="x">90</property>
+	      <property name="y">2</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkRadioButton" id="wordradio">
+	      <property name="width_request">0</property>
+	      <property name="height_request">0</property>
+	      <property name="visible">True</property>
+	      <property name="tooltip" translatable="yes">Show output as MIX words</property>
+	      <property name="can_focus">True</property>
+	      <property name="label" translatable="yes">Word</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>
+	    </widget>
+	    <packing>
+	      <property name="x">89</property>
+	      <property name="y">34</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkRadioButton" id="decradio">
+	      <property name="width_request">0</property>
+	      <property name="height_request">0</property>
+	      <property name="visible">True</property>
+	      <property name="tooltip" translatable="yes">Show output as decimal numbers</property>
+	      <property name="can_focus">True</property>
+	      <property name="label" translatable="yes">Decimal</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>
+	      <property name="group">wordradio</property>
+	      <signal name="toggled" handler="on_decradio_toggled"/>
+	    </widget>
+	    <packing>
+	      <property name="x">154</property>
+	      <property name="y">34</property>
 	    </packing>
 	  </child>
 	</widget>
 	<packing>
 	  <property name="padding">0</property>
 	  <property name="expand">True</property>
-	  <property name="fill">True</property>
+	  <property name="fill">False</property>
+	  <property name="pack_type">GTK_PACK_END</property>
 	</packing>
       </child>
     </widget>
@@ -4049,7 +4007,7 @@ Free Software Foundation, Inc.</property>
 	      <property name="tooltip" translatable="yes">Run</property>
 	      <property name="label" translatable="yes">Run</property>
 	      <property name="use_underline">True</property>
-	      <property name="icon">run.xpm</property>
+	      <property name="stock_id">gtk-go-forward</property>
 	      <property name="visible_horizontal">True</property>
 	      <property name="visible_vertical">True</property>
 	      <property name="is_important">False</property>
@@ -4067,7 +4025,7 @@ Free Software Foundation, Inc.</property>
 	      <property name="tooltip" translatable="yes">Next</property>
 	      <property name="label" translatable="yes">Step</property>
 	      <property name="use_underline">True</property>
-	      <property name="icon">next.xpm</property>
+	      <property name="stock_id">gtk-goto-last</property>
 	      <property name="visible_horizontal">True</property>
 	      <property name="visible_vertical">True</property>
 	      <property name="is_important">False</property>
@@ -4085,7 +4043,7 @@ Free Software Foundation, Inc.</property>
 	      <property name="tooltip" translatable="yes">Clear breakpoints</property>
 	      <property name="label" translatable="yes">Clear</property>
 	      <property name="use_underline">True</property>
-	      <property name="icon">clear.xpm</property>
+	      <property name="stock_id">gtk-clear</property>
 	      <property name="visible_horizontal">True</property>
 	      <property name="visible_vertical">True</property>
 	      <property name="is_important">False</property>
@@ -4103,7 +4061,7 @@ Free Software Foundation, Inc.</property>
 	      <property name="tooltip" translatable="yes">Symbol table</property>
 	      <property name="label" translatable="yes">Symbols</property>
 	      <property name="use_underline">True</property>
-	      <property name="icon">symbols.xpm</property>
+	      <property name="stock_id">gtk-index</property>
 	      <property name="visible_horizontal">True</property>
 	      <property name="visible_vertical">True</property>
 	      <property name="is_important">False</property>
@@ -4134,7 +4092,7 @@ Free Software Foundation, Inc.</property>
 	      <property name="tooltip" translatable="yes">Source code font</property>
 	      <property name="label" translatable="yes">Font</property>
 	      <property name="use_underline">True</property>
-	      <property name="icon">font.xpm</property>
+	      <property name="stock_id">gtk-select-font</property>
 	      <property name="visible_horizontal">True</property>
 	      <property name="visible_vertical">True</property>
 	      <property name="is_important">False</property>
@@ -4145,24 +4103,6 @@ Free Software Foundation, Inc.</property>
 	      <property name="homogeneous">True</property>
 	    </packing>
 	  </child>
-
-	  <child>
-	    <widget class="GtkToolButton" id="button23">
-	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Colors</property>
-	      <property name="label" translatable="yes">Colors</property>
-	      <property name="use_underline">True</property>
-	      <property name="icon">colors.xpm</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">False</property>
-	      <signal name="clicked" handler="on_colors_activate"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
 	</widget>
 	<packing>
 	  <property name="padding">0</property>
@@ -4254,12 +4194,12 @@ Free Software Foundation, Inc.</property>
 	    <widget class="GtkToolButton" id="devdir_button">
 	      <property name="visible">True</property>
 	      <property name="tooltip" translatable="yes">Device directory</property>
-	      <property name="label" translatable="yes">Device dir</property>
+	      <property name="label" translatable="yes">Directory</property>
 	      <property name="use_underline">True</property>
-	      <property name="icon">devdir.xpm</property>
+	      <property name="stock_id">gtk-home</property>
 	      <property name="visible_horizontal">True</property>
 	      <property name="visible_vertical">True</property>
-	      <property name="is_important">False</property>
+	      <property name="is_important">True</property>
 	      <signal name="clicked" handler="on_devdir_activate"/>
 	    </widget>
 	    <packing>
@@ -4274,7 +4214,7 @@ Free Software Foundation, Inc.</property>
 	      <property name="tooltip" translatable="yes">Output format</property>
 	      <property name="label" translatable="yes">Output</property>
 	      <property name="use_underline">True</property>
-	      <property name="icon">output.xpm</property>
+	      <property name="stock_id">gtk-find-and-replace</property>
 	      <property name="visible_horizontal">True</property>
 	      <property name="visible_vertical">True</property>
 	      <property name="is_important">False</property>
@@ -4292,7 +4232,7 @@ Free Software Foundation, Inc.</property>
 	      <property name="tooltip" translatable="yes">Output font</property>
 	      <property name="label" translatable="yes">Font</property>
 	      <property name="use_underline">True</property>
-	      <property name="icon">font.xpm</property>
+	      <property name="stock_id">gtk-select-font</property>
 	      <property name="visible_horizontal">True</property>
 	      <property name="visible_vertical">True</property>
 	      <property name="is_important">False</property>
@@ -4312,37 +4252,17 @@ Free Software Foundation, Inc.</property>
       </child>
 
       <child>
-	<widget class="GtkNotebook" id="devices_notebook">
+	<widget class="GtkScrolledWindow" id="devices_container">
 	  <property name="visible">True</property>
 	  <property name="can_focus">True</property>
-	  <property name="show_tabs">True</property>
-	  <property name="show_border">True</property>
-	  <property name="tab_pos">GTK_POS_TOP</property>
-	  <property name="scrollable">True</property>
-	  <property name="enable_popup">False</property>
+	  <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
+	  <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
+	  <property name="shadow_type">GTK_SHADOW_NONE</property>
+	  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
 
 	  <child>
 	    <placeholder/>
 	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">label</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_CENTER</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>
-	    </widget>
-	    <packing>
-	      <property name="type">tab</property>
-	    </packing>
-	  </child>
 	</widget>
 	<packing>
 	  <property name="padding">0</property>
@@ -4520,1103 +4440,133 @@ Free Software Foundation, Inc.</property>
       <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
 
       <child>
-	<widget class="GtkHBox" id="hbox29">
-	  <property name="visible">True</property>
-	  <property name="homogeneous">False</property>
-	  <property name="spacing">0</property>
-
-	  <child>
-	    <widget class="GtkVBox" id="vbox7">
-	      <property name="border_width">1</property>
-	      <property name="visible">True</property>
-	      <property name="homogeneous">False</property>
-	      <property name="spacing">1</property>
-
-	      <child>
-		<widget class="GtkFrame" id="frame24">
-		  <property name="border_width">2</property>
-		  <property name="visible">True</property>
-		  <property name="label_xalign">0</property>
-		  <property name="label_yalign">0.5</property>
-		  <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-
-		  <child>
-		    <widget class="GtkTable" id="table2">
-		      <property name="border_width">8</property>
-		      <property name="visible">True</property>
-		      <property name="n_rows">3</property>
-		      <property name="n_columns">6</property>
-		      <property name="homogeneous">False</property>
-		      <property name="row_spacing">6</property>
-		      <property name="column_spacing">11</property>
-
-		      <child>
-			<widget class="GtkLabel" id="label1415">
-			  <property name="width_request">0</property>
-			  <property name="height_request">0</property>
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">A</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_CENTER</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>
-			</widget>
-			<packing>
-			  <property name="left_attach">0</property>
-			  <property name="right_attach">1</property>
-			  <property name="top_attach">0</property>
-			  <property name="bottom_attach">1</property>
-			  <property name="x_options">fill</property>
-			  <property name="y_options"></property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkLabel" id="label1416">
-			  <property name="width_request">0</property>
-			  <property name="height_request">0</property>
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">I1</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_CENTER</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>
-			</widget>
-			<packing>
-			  <property name="left_attach">2</property>
-			  <property name="right_attach">3</property>
-			  <property name="top_attach">0</property>
-			  <property name="bottom_attach">1</property>
-			  <property name="x_options">fill</property>
-			  <property name="y_options"></property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkLabel" id="label1417">
-			  <property name="width_request">0</property>
-			  <property name="height_request">0</property>
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">I2</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_CENTER</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>
-			</widget>
-			<packing>
-			  <property name="left_attach">2</property>
-			  <property name="right_attach">3</property>
-			  <property name="top_attach">1</property>
-			  <property name="bottom_attach">2</property>
-			  <property name="x_options">fill</property>
-			  <property name="y_options"></property>
-			</packing>
-		      </child>
+	<placeholder/>
+      </child>
 
-		      <child>
-			<widget class="GtkEntry" id="entry52">
-			  <property name="width_request">0</property>
-			  <property name="height_request">0</property>
-			  <property name="visible">True</property>
-			  <property name="can_focus">True</property>
-			  <property name="editable">False</property>
-			  <property name="visibility">True</property>
-			  <property name="max_length">0</property>
-			  <property name="text" translatable="yes"></property>
-			  <property name="has_frame">True</property>
-			  <property name="invisible_char" translatable="yes">*</property>
-			  <property name="activates_default">False</property>
-			  <property name="width_chars">19</property>
-			  <signal name="button_press_event" handler="on_register_click"/>
-			</widget>
-			<packing>
-			  <property name="left_attach">1</property>
-			  <property name="right_attach">2</property>
-			  <property name="top_attach">0</property>
-			  <property name="bottom_attach">1</property>
-			  <property name="x_options"></property>
-			  <property name="y_options"></property>
-			</packing>
-		      </child>
+      <child>
+	<widget class="GtkLabel" id="label1414">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">MIX Virtual Machine </property>
+	  <property name="use_underline">False</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">2</property>
+	  <property name="ypad">0</property>
+	</widget>
+	<packing>
+	  <property name="type">label_item</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
 
-		      <child>
-			<widget class="GtkEntry" id="entry53">
-			  <property name="width_request">0</property>
-			  <property name="height_request">0</property>
-			  <property name="visible">True</property>
-			  <property name="can_focus">True</property>
-			  <property name="editable">False</property>
-			  <property name="visibility">True</property>
-			  <property name="max_length">0</property>
-			  <property name="text" translatable="yes"></property>
-			  <property name="has_frame">True</property>
-			  <property name="invisible_char" translatable="yes">*</property>
-			  <property name="activates_default">False</property>
-			  <property name="width_chars">9</property>
-			  <signal name="button_press_event" handler="on_register_click"/>
-			</widget>
-			<packing>
-			  <property name="left_attach">3</property>
-			  <property name="right_attach">4</property>
-			  <property name="top_attach">1</property>
-			  <property name="bottom_attach">2</property>
-			  <property name="x_options"></property>
-			  <property name="y_options"></property>
-			</packing>
-		      </child>
+<widget class="GtkDialog" id="input_dialog">
+  <property name="visible">True</property>
+  <property name="title" translatable="yes">MIX Console input</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">True</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="has_separator">True</property>
+  <signal name="destroy_event" handler="gtk_widget_hide" last_modification_time="Wed, 23 Jun 2004 20:54:59 GMT"/>
+  <signal name="close" handler="gtk_widget_hide" last_modification_time="Wed, 23 Jun 2004 20:55:16 GMT"/>
 
-		      <child>
-			<widget class="GtkEntry" id="entry54">
-			  <property name="width_request">0</property>
-			  <property name="height_request">0</property>
-			  <property name="visible">True</property>
-			  <property name="can_focus">True</property>
-			  <property name="editable">False</property>
-			  <property name="visibility">True</property>
-			  <property name="max_length">0</property>
-			  <property name="text" translatable="yes">+ 00 00</property>
-			  <property name="has_frame">True</property>
-			  <property name="invisible_char" translatable="yes">*</property>
-			  <property name="activates_default">False</property>
-			  <property name="width_chars">9</property>
-			  <signal name="button_press_event" handler="on_register_click"/>
-			</widget>
-			<packing>
-			  <property name="left_attach">3</property>
-			  <property name="right_attach">4</property>
-			  <property name="top_attach">0</property>
-			  <property name="bottom_attach">1</property>
-			  <property name="x_options"></property>
-			  <property name="y_options"></property>
-			</packing>
-		      </child>
+  <child internal-child="vbox">
+    <widget class="GtkVBox" id="dialog-vbox12">
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">0</property>
 
-		      <child>
-			<widget class="GtkLabel" id="label1418">
-			  <property name="width_request">0</property>
-			  <property name="height_request">0</property>
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">X</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_CENTER</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>
-			</widget>
-			<packing>
-			  <property name="left_attach">0</property>
-			  <property name="right_attach">1</property>
-			  <property name="top_attach">1</property>
-			  <property name="bottom_attach">2</property>
-			  <property name="x_options">fill</property>
-			  <property name="y_options"></property>
-			</packing>
-		      </child>
+      <child internal-child="action_area">
+	<widget class="GtkHButtonBox" id="dialog-action_area12">
+	  <property name="visible">True</property>
+	  <property name="layout_style">GTK_BUTTONBOX_END</property>
 
-		      <child>
-			<widget class="GtkLabel" id="label1419">
-			  <property name="width_request">16</property>
-			  <property name="height_request">16</property>
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">I3</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_CENTER</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>
-			</widget>
-			<packing>
-			  <property name="left_attach">2</property>
-			  <property name="right_attach">3</property>
-			  <property name="top_attach">2</property>
-			  <property name="bottom_attach">3</property>
-			  <property name="x_options">fill</property>
-			  <property name="y_options"></property>
-			</packing>
-		      </child>
+	  <child>
+	    <widget class="GtkButton" id="okbutton1">
+	      <property name="visible">True</property>
+	      <property name="can_default">True</property>
+	      <property name="has_default">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="label">gtk-ok</property>
+	      <property name="use_stock">True</property>
+	      <property name="relief">GTK_RELIEF_NORMAL</property>
+	      <property name="focus_on_click">True</property>
+	      <property name="response_id">-5</property>
+	    </widget>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">True</property>
+	  <property name="pack_type">GTK_PACK_END</property>
+	</packing>
+      </child>
 
-		      <child>
-			<widget class="GtkLabel" id="label1420">
-			  <property name="width_request">0</property>
-			  <property name="height_request">0</property>
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">I4</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_CENTER</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>
-			</widget>
-			<packing>
-			  <property name="left_attach">4</property>
-			  <property name="right_attach">5</property>
-			  <property name="top_attach">0</property>
-			  <property name="bottom_attach">1</property>
-			  <property name="x_options">fill</property>
-			  <property name="y_options"></property>
-			</packing>
-		      </child>
+      <child>
+	<widget class="GtkVBox" id="vbox7">
+	  <property name="border_width">3</property>
+	  <property name="visible">True</property>
+	  <property name="homogeneous">True</property>
+	  <property name="spacing">0</property>
 
-		      <child>
-			<widget class="GtkLabel" id="label1421">
-			  <property name="width_request">16</property>
-			  <property name="height_request">16</property>
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">I5</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_CENTER</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>
-			</widget>
-			<packing>
-			  <property name="left_attach">4</property>
-			  <property name="right_attach">5</property>
-			  <property name="top_attach">1</property>
-			  <property name="bottom_attach">2</property>
-			  <property name="x_options">fill</property>
-			  <property name="y_options"></property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkLabel" id="label1422">
-			  <property name="width_request">16</property>
-			  <property name="height_request">16</property>
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">I6</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_CENTER</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>
-			</widget>
-			<packing>
-			  <property name="left_attach">4</property>
-			  <property name="right_attach">5</property>
-			  <property name="top_attach">2</property>
-			  <property name="bottom_attach">3</property>
-			  <property name="x_options">fill</property>
-			  <property name="y_options"></property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkLabel" id="label1423">
-			  <property name="width_request">0</property>
-			  <property name="height_request">0</property>
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">J</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_CENTER</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>
-			</widget>
-			<packing>
-			  <property name="left_attach">0</property>
-			  <property name="right_attach">1</property>
-			  <property name="top_attach">2</property>
-			  <property name="bottom_attach">3</property>
-			  <property name="x_options">fill</property>
-			  <property name="y_options"></property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkEntry" id="entry55">
-			  <property name="width_request">0</property>
-			  <property name="height_request">0</property>
-			  <property name="visible">True</property>
-			  <property name="can_focus">True</property>
-			  <property name="editable">False</property>
-			  <property name="visibility">True</property>
-			  <property name="max_length">0</property>
-			  <property name="text" translatable="yes">+ 00 00 00 00 00</property>
-			  <property name="has_frame">True</property>
-			  <property name="invisible_char" translatable="yes">*</property>
-			  <property name="activates_default">False</property>
-			  <property name="width_chars">19</property>
-			  <signal name="button_press_event" handler="on_register_click"/>
-			</widget>
-			<packing>
-			  <property name="left_attach">1</property>
-			  <property name="right_attach">2</property>
-			  <property name="top_attach">1</property>
-			  <property name="bottom_attach">2</property>
-			  <property name="x_options"></property>
-			  <property name="y_options"></property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkEntry" id="entry56">
-			  <property name="width_request">0</property>
-			  <property name="height_request">0</property>
-			  <property name="visible">True</property>
-			  <property name="can_focus">True</property>
-			  <property name="editable">False</property>
-			  <property name="visibility">True</property>
-			  <property name="max_length">0</property>
-			  <property name="text" translatable="yes"></property>
-			  <property name="has_frame">True</property>
-			  <property name="invisible_char" translatable="yes">*</property>
-			  <property name="activates_default">False</property>
-			  <property name="width_chars">9</property>
-			  <signal name="button_press_event" handler="on_register_click"/>
-			</widget>
-			<packing>
-			  <property name="left_attach">5</property>
-			  <property name="right_attach">6</property>
-			  <property name="top_attach">0</property>
-			  <property name="bottom_attach">1</property>
-			  <property name="x_options"></property>
-			  <property name="y_options"></property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkEntry" id="entry57">
-			  <property name="width_request">0</property>
-			  <property name="height_request">0</property>
-			  <property name="visible">True</property>
-			  <property name="can_focus">True</property>
-			  <property name="editable">False</property>
-			  <property name="visibility">True</property>
-			  <property name="max_length">0</property>
-			  <property name="text" translatable="yes"></property>
-			  <property name="has_frame">True</property>
-			  <property name="invisible_char" translatable="yes">*</property>
-			  <property name="activates_default">False</property>
-			  <property name="width_chars">9</property>
-			  <signal name="button_press_event" handler="on_register_click"/>
-			</widget>
-			<packing>
-			  <property name="left_attach">5</property>
-			  <property name="right_attach">6</property>
-			  <property name="top_attach">1</property>
-			  <property name="bottom_attach">2</property>
-			  <property name="x_options"></property>
-			  <property name="y_options"></property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkEntry" id="entry58">
-			  <property name="width_request">0</property>
-			  <property name="height_request">0</property>
-			  <property name="visible">True</property>
-			  <property name="can_focus">True</property>
-			  <property name="editable">False</property>
-			  <property name="visibility">True</property>
-			  <property name="max_length">0</property>
-			  <property name="text" translatable="yes"></property>
-			  <property name="has_frame">True</property>
-			  <property name="invisible_char" translatable="yes">*</property>
-			  <property name="activates_default">False</property>
-			  <property name="width_chars">9</property>
-			  <signal name="button_press_event" handler="on_register_click"/>
-			</widget>
-			<packing>
-			  <property name="left_attach">5</property>
-			  <property name="right_attach">6</property>
-			  <property name="top_attach">2</property>
-			  <property name="bottom_attach">3</property>
-			  <property name="x_options"></property>
-			  <property name="y_options"></property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkEntry" id="entry59">
-			  <property name="width_request">0</property>
-			  <property name="height_request">0</property>
-			  <property name="visible">True</property>
-			  <property name="can_focus">True</property>
-			  <property name="editable">False</property>
-			  <property name="visibility">True</property>
-			  <property name="max_length">0</property>
-			  <property name="text" translatable="yes"></property>
-			  <property name="has_frame">True</property>
-			  <property name="invisible_char" translatable="yes">*</property>
-			  <property name="activates_default">False</property>
-			  <property name="width_chars">9</property>
-			  <signal name="button_press_event" handler="on_register_click"/>
-			</widget>
-			<packing>
-			  <property name="left_attach">3</property>
-			  <property name="right_attach">4</property>
-			  <property name="top_attach">2</property>
-			  <property name="bottom_attach">3</property>
-			  <property name="x_options"></property>
-			  <property name="y_options"></property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkHBox" id="hbox30">
-			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">0</property>
-
-			  <child>
-			    <widget class="GtkEntry" id="entry60">
-			      <property name="width_request">0</property>
-			      <property name="height_request">0</property>
-			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="editable">False</property>
-			      <property name="visibility">True</property>
-			      <property name="max_length">0</property>
-			      <property name="text" translatable="yes"></property>
-			      <property name="has_frame">True</property>
-			      <property name="invisible_char" translatable="yes">*</property>
-			      <property name="activates_default">False</property>
-			      <property name="width_chars">9</property>
-			      <signal name="button_press_event" handler="on_register_click"/>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <placeholder/>
-			  </child>
-			</widget>
-			<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="x_options">fill</property>
-			  <property name="y_options">fill</property>
-			</packing>
-		      </child>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkLabel" id="label1424">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">Registers </property>
-		      <property name="use_underline">False</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">2</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="type">label_item</property>
-		    </packing>
-		  </child>
-		</widget>
-		<packing>
-		  <property name="padding">5</property>
-		  <property name="expand">False</property>
-		  <property name="fill">True</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkHBox" id="hbox31">
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">0</property>
-
-		  <child>
-		    <widget class="GtkFrame" id="frame25">
-		      <property name="border_width">2</property>
-		      <property name="visible">True</property>
-		      <property name="label_xalign">0</property>
-		      <property name="label_yalign">0.5</property>
-		      <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-
-		      <child>
-			<widget class="GtkHBox" id="hbox32">
-			  <property name="border_width">1</property>
-			  <property name="visible">True</property>
-			  <property name="homogeneous">True</property>
-			  <property name="spacing">5</property>
-
-			  <child>
-			    <widget class="GtkRadioButton" id="radiobutton11">
-			      <property name="width_request">0</property>
-			      <property name="height_request">0</property>
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Greater</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">G</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="on_cmp_g_toggled"/>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <widget class="GtkRadioButton" id="radiobutton12">
-			      <property name="width_request">0</property>
-			      <property name="height_request">0</property>
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Equal</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">E</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="on_cmp_e_toggled"/>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <widget class="GtkRadioButton" id="radiobutton13">
-			      <property name="width_request">0</property>
-			      <property name="height_request">0</property>
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Lesser</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">L</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="on_cmp_l_toggled"/>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-			</widget>
-		      </child>
-
-		      <child>
-			<widget class="GtkLabel" id="label1425">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">Comparison flag </property>
-			  <property name="use_underline">False</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">2</property>
-			  <property name="ypad">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="frame26">
-		      <property name="border_width">2</property>
-		      <property name="visible">True</property>
-		      <property name="label_xalign">0</property>
-		      <property name="label_yalign">0.5</property>
-		      <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-
-		      <child>
-			<widget class="GtkHBox" id="hbox33">
-			  <property name="border_width">2</property>
-			  <property name="visible">True</property>
-			  <property name="homogeneous">True</property>
-			  <property name="spacing">2</property>
-
-			  <child>
-			    <widget class="GtkCheckButton" id="checkbutton1">
-			      <property name="border_width">3</property>
-			      <property name="width_request">0</property>
-			      <property name="height_request">0</property>
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Click to toggle</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">Off</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="on_overflow_toggled"/>
-			    </widget>
-			    <packing>
-			      <property name="padding">5</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-			</widget>
-		      </child>
-
-		      <child>
-			<widget class="GtkLabel" id="label1426">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">Overflow toggle</property>
-			  <property name="use_underline">False</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">2</property>
-			  <property name="ypad">0</property>
-			</widget>
-			<packing>
-			  <property name="type">label_item</property>
-			</packing>
-		      </child>
-		    </widget>
-		    <packing>
-		      <property name="padding">15</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkFrame" id="frame27">
-		      <property name="border_width">2</property>
-		      <property name="visible">True</property>
-		      <property name="label_xalign">0</property>
-		      <property name="label_yalign">0.5</property>
-		      <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-
-		      <child>
-			<widget class="GtkHBox" id="hbox34">
-			  <property name="border_width">4</property>
-			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">1</property>
-
-			  <child>
-			    <widget class="GtkEntry" id="entry61">
-			      <property name="width_request">0</property>
-			      <property name="height_request">0</property>
-			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="editable">False</property>
-			      <property name="visibility">True</property>
-			      <property name="max_length">4</property>
-			      <property name="text" translatable="yes">0</property>
-			      <property name="has_frame">True</property>
-			      <property name="invisible_char" translatable="yes">*</property>
-			      <property name="activates_default">False</property>
-			      <property name="width_chars">6</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">5</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <widget class="GtkButton" id="button34">
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">View loc address</property>
-			      <property name="can_focus">True</property>
-			      <property name="relief">GTK_RELIEF_NORMAL</property>
-			      <property name="focus_on_click">True</property>
-			      <signal name="clicked" handler="on_loc_arrow_clicked"/>
-
-			      <child>
-				<widget class="GtkImage" id="image5">
-				  <property name="visible">True</property>
-				  <property name="stock">gtk-jump-to</property>
-				  <property name="icon_size">4</property>
-				  <property name="xalign">0.5</property>
-				  <property name="yalign">0.5</property>
-				  <property name="xpad">0</property>
-				  <property name="ypad">0</property>
-				</widget>
-			      </child>
-			    </widget>
-			    <packing>
-			      <property name="padding">1</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-			</widget>
-		      </child>
-
-		      <child>
-			<widget class="GtkLabel" id="label1427">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">Location </property>
-			  <property name="use_underline">False</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">2</property>
-			  <property name="ypad">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>
-		      <property name="pack_type">GTK_PACK_END</property>
-		    </packing>
-		  </child>
-		</widget>
-		<packing>
-		  <property name="padding">5</property>
-		  <property name="expand">False</property>
-		  <property name="fill">True</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkFrame" id="frame28">
-		  <property name="border_width">2</property>
-		  <property name="visible">True</property>
-		  <property name="label_xalign">0</property>
-		  <property name="label_yalign">0.5</property>
-		  <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-
-		  <child>
-		    <widget class="GtkHBox" id="hbox35">
-		      <property name="border_width">5</property>
-		      <property name="visible">True</property>
-		      <property name="homogeneous">False</property>
-		      <property name="spacing">5</property>
-
-		      <child>
-			<widget class="GtkLabel" id="label1428">
-			  <property name="width_request">0</property>
-			  <property name="height_request">0</property>
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">Up:</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_CENTER</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>
-			</widget>
-			<packing>
-			  <property name="padding">0</property>
-			  <property name="expand">False</property>
-			  <property name="fill">False</property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkLabel" id="label1429">
-			  <property name="width_request">0</property>
-			  <property name="height_request">0</property>
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">00000000</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_CENTER</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">5</property>
-			  <property name="ypad">0</property>
-			</widget>
-			<packing>
-			  <property name="padding">0</property>
-			  <property name="expand">False</property>
-			  <property name="fill">False</property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkLabel" id="label1430">
-			  <property name="width_request">0</property>
-			  <property name="height_request">0</property>
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">Lap:</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_CENTER</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>
-			</widget>
-			<packing>
-			  <property name="padding">3</property>
-			  <property name="expand">False</property>
-			  <property name="fill">False</property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkLabel" id="label1431">
-			  <property name="width_request">0</property>
-			  <property name="height_request">0</property>
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">000000</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_CENTER</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">5</property>
-			  <property name="ypad">0</property>
-			</widget>
-			<packing>
-			  <property name="padding">0</property>
-			  <property name="expand">False</property>
-			  <property name="fill">False</property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkLabel" id="label1432">
-			  <property name="width_request">0</property>
-			  <property name="height_request">0</property>
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">Program:</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_CENTER</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>
-			</widget>
-			<packing>
-			  <property name="padding">2</property>
-			  <property name="expand">False</property>
-			  <property name="fill">False</property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkLabel" id="label1433">
-			  <property name="width_request">0</property>
-			  <property name="height_request">0</property>
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">000000</property>
-			  <property name="use_underline">False</property>
-			  <property name="use_markup">False</property>
-			  <property name="justify">GTK_JUSTIFY_CENTER</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">5</property>
-			  <property name="ypad">0</property>
-			</widget>
-			<packing>
-			  <property name="padding">0</property>
-			  <property name="expand">False</property>
-			  <property name="fill">False</property>
-			</packing>
-		      </child>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkLabel" id="label1434">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">Times </property>
-		      <property name="use_underline">False</property>
-		      <property name="use_markup">False</property>
-		      <property name="justify">GTK_JUSTIFY_CENTER</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">2</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="type">label_item</property>
-		    </packing>
-		  </child>
-		</widget>
-		<packing>
-		  <property name="padding">5</property>
-		  <property name="expand">False</property>
-		  <property name="fill">True</property>
-		</packing>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="padding">2</property>
-	      <property name="expand">False</property>
-	      <property name="fill">False</property>
-	    </packing>
-	  </child>
+	  <child>
+	    <widget class="GtkLabel" id="label1438">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">Enter up to 70 characters</property>
+	      <property name="use_underline">False</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>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
 
 	  <child>
-	    <widget class="GtkFrame" id="frame29">
-	      <property name="border_width">7</property>
+	    <widget class="GtkEntry" id="input_entry">
 	      <property name="visible">True</property>
-	      <property name="label_xalign">0</property>
-	      <property name="label_yalign">0.5</property>
-	      <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
-
-	      <child>
-		<widget class="GtkScrolledWindow" id="scrolledwindow32">
-		  <property name="border_width">5</property>
-		  <property name="visible">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-		  <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-		  <property name="shadow_type">GTK_SHADOW_IN</property>
-		  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
-		  <child>
-		    <widget class="GtkTreeView" id="treeview2">
-		      <property name="border_width">1</property>
-		      <property name="visible">True</property>
-		      <property name="tooltip" translatable="yes">Click cell to change value</property>
-		      <property name="can_focus">True</property>
-		      <property name="headers_visible">True</property>
-		      <property name="rules_hint">True</property>
-		      <property name="reorderable">False</property>
-		      <property name="enable_search">True</property>
-		      <signal name="select_row" handler="on_memory_cells_select_row" after="yes"/>
-		      <signal name="click_column" handler="on_memory_cells_click_column"/>
-		    </widget>
-		  </child>
-		</widget>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="label1435">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">Memory </property>
-		  <property name="use_underline">False</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">2</property>
-		  <property name="ypad">0</property>
-		</widget>
-		<packing>
-		  <property name="type">label_item</property>
-		</packing>
-	      </child>
+	      <property name="can_focus">True</property>
+	      <property name="editable">True</property>
+	      <property name="visibility">True</property>
+	      <property name="max_length">70</property>
+	      <property name="text" translatable="yes"></property>
+	      <property name="has_frame">True</property>
+	      <property name="invisible_char" translatable="yes">*</property>
+	      <property name="activates_default">True</property>
+	      <property name="width_chars">70</property>
 	    </widget>
 	    <packing>
-	      <property name="padding">3</property>
-	      <property name="expand">True</property>
-	      <property name="fill">True</property>
-	      <property name="pack_type">GTK_PACK_END</property>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
 	    </packing>
 	  </child>
 	</widget>
-      </child>
-
-      <child>
-	<widget class="GtkLabel" id="label1414">
-	  <property name="visible">True</property>
-	  <property name="label" translatable="yes">MIX Virtual Machine </property>
-	  <property name="use_underline">False</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">2</property>
-	  <property name="ypad">0</property>
-	</widget>
 	<packing>
-	  <property name="type">label_item</property>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
 	</packing>
       </child>
     </widget>
diff --git a/mixgtk/mixgtk_cmd_dispatcher.c b/mixgtk/mixgtk_cmd_dispatcher.c
index f237a1a..98782ce 100644
--- a/mixgtk/mixgtk_cmd_dispatcher.c
+++ b/mixgtk/mixgtk_cmd_dispatcher.c
@@ -1,7 +1,7 @@
 /* -*-c-*- -------------- mixgtk_cmd_dispatcher.c :
  * Implementation of the functions declared in mixgtk_cmd_dispatcher.h
  * ------------------------------------------------------------------
- * $Id: mixgtk_cmd_dispatcher.c,v 1.16 2004/06/23 10:50:10 jao Exp $
+ * $Id: mixgtk_cmd_dispatcher.c,v 1.17 2004/06/24 01:40:47 jao Exp $
  * ------------------------------------------------------------------
  * Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
  *
@@ -43,6 +43,7 @@
 #include <mixlib/mix_vm_command.h>
 #include "mixgtk_mixvm.h"
 #include "mixgtk_mixal.h"
+#include "mixgtk_fontsel.h"
 #include "mixgtk_config.h"
 #include "mixgtk_cmd_dispatcher.h"
 
@@ -361,6 +362,9 @@ mixgtk_cmd_dispatcher_init (mixgtk_dialog_id_t top)
       (GTK_WINDOW (mixgtk_widget_factory_get_dialog (MIXGTK_MAIN)),
        dis_data_.last_file);
 
+  mixgtk_fontsel_set_font (MIX_FONT_LOG, dis_data_.log);
+  mixgtk_fontsel_set_font (MIX_FONT_PROMPT, dis_data_.prompt);
+
   restart = TRUE;
   return TRUE;
 }
@@ -514,3 +518,17 @@ on_command_prompt_activate (GtkEntry *prompt, gpointer data)
     }
   g_free (text);
 }
+
+void
+on_log_font_activate ()
+{
+  GtkWidget *w[] = { dis_data_.log };
+  mixgtk_fontsel_query_font (MIX_FONT_LOG, w, 1);
+}
+
+void
+on_prompt_font_activate ()
+{
+  GtkWidget *w[] = { dis_data_.prompt };
+  mixgtk_fontsel_query_font (MIX_FONT_PROMPT, w, 1);
+}
diff --git a/mixgtk/mixgtk_device.c b/mixgtk/mixgtk_device.c
index 69faa02..e701728 100644
--- a/mixgtk/mixgtk_device.c
+++ b/mixgtk/mixgtk_device.c
@@ -1,7 +1,7 @@
 /* -*-c-*- ---------------- mixgtk_device.c :
  * actual types for mixgtk devices
  * ------------------------------------------------------------------
- * $Id: mixgtk_device.c,v 1.21 2004/06/23 10:50:10 jao Exp $
+ * $Id: mixgtk_device.c,v 1.22 2004/06/24 01:40:47 jao Exp $
  * ------------------------------------------------------------------
  * Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
  *
@@ -32,6 +32,7 @@
 #include "mixgtk.h"
 #include "mixgtk_gen_handlers.h"
 #include "mixgtk_widgets.h"
+#include "mixgtk_fontsel.h"
 #include "mixgtk_config.h"
 #include "mixgtk_cmd_dispatcher.h"
 #include "mixgtk_device.h"
@@ -41,7 +42,8 @@
 static const gchar *DEV_FORMAT_KEY_ = "Device.format";
 
 /* device container */
-static GtkNotebook *container_ = NULL;
+static GtkContainer *container_ = NULL;
+static GtkNotebook *dev_nb_ = NULL;
 /* devdir dialog */
 static GtkWidget *devdir_dlg_ = NULL;
 static GtkEntry *devdir_entry_ = NULL;
@@ -136,12 +138,15 @@ write_bin_  (struct mixgtk_bin_device_t *dev, const mix_word_t *block)
 
   dec = IS_DEC(decs_, dev->gtk_device.device.type);
 
-  for (k = 0, len = SIZES_[dev->gtk_device.device.type]; k < len;  k += 5)
+  for (k = 0, len = SIZES_[dev->gtk_device.device.type];
+       k < len;  k += BIN_DEV_COL_)
     {
       gtk_list_store_append (store, &iter);
-      for (col = 0; col < 5; ++col)
+      for (col = 0; col < BIN_DEV_COL_; ++col)
         gtk_list_store_set (store, &iter,
-                            col, get_word_string_ (block[k + col], dec), -1);
+                            col, get_word_string_ (block[k + col], dec),
+                            col + BIN_DEV_COL_, (guint)block[k + col],
+                            -1);
       dev->last_insert++;
     }
 }
@@ -157,8 +162,8 @@ write_ (mix_device_t *dev, const mix_word_t *block)
   if (MODES_[dev->type] == mix_dev_CHAR) write_char_ (gtkdev, block);
   else write_bin_ ((struct mixgtk_bin_device_t *)gtkdev, block);
 
-  gtk_notebook_set_current_page (container_,
-                                 gtk_notebook_page_num (container_,
+  gtk_notebook_set_current_page (dev_nb_,
+                                 gtk_notebook_page_num (dev_nb_,
                                                         gtkdev->scroll));
 
   return TRUE;
@@ -179,8 +184,9 @@ read_cons_ (mix_word_t *block)
       g_assert (input_dlg_entry_);
     }
 
-  gtk_widget_show (input_dlg_);
-  gtk_main ();              /* wait until dialog closes */
+  gtk_entry_set_text (input_dlg_entry_, "");
+  gtk_dialog_run (GTK_DIALOG (input_dlg_));
+  gtk_widget_hide (input_dlg_);
   text = g_strdup_printf ("%-70s", gtk_entry_get_text (input_dlg_entry_));
   for (i = 0; i < 70; ++i)
     for (j = 0; j < 5; ++j)
@@ -204,8 +210,8 @@ read_ (mix_device_t *dev, mix_word_t *block)
   if (MODES_[dev->type] == mix_dev_CHAR) write_char_ (gtkdev, block);
   else write_bin_ ((struct mixgtk_bin_device_t *)gtkdev, block);
 
-  gtk_notebook_set_current_page (container_,
-                                 gtk_notebook_page_num (container_,
+  gtk_notebook_set_current_page (dev_nb_,
+                                 gtk_notebook_page_num (dev_nb_,
                                                         gtkdev->scroll));
   return TRUE;
 }
@@ -232,8 +238,8 @@ destroy_ (mix_device_t *dev)
     g_object_unref ((gpointer)bdev->store);
   }
   (DEF_DEV_VTABLE_->destroy) (dev);
-  gtk_notebook_remove_page (container_,
-                            gtk_notebook_page_num (container_,
+  gtk_notebook_remove_page (dev_nb_,
+                            gtk_notebook_page_num (dev_nb_,
                                                    gtkdev->scroll));
 }
 
@@ -263,15 +269,17 @@ mixgtk_device_construct_gui_ (struct mixgtk_device_t *dev)
     {
       gint k;
       struct mixgtk_bin_device_t *bindev = (struct mixgtk_bin_device_t *)dev;
-
       GtkCellRenderer *renderer = gtk_cell_renderer_text_new ();
+      GType *types = g_new (GType, BIN_DEV_COL_ * 2);
+
+      for (k = 0; k < BIN_DEV_COL_; ++k)
+        {
+          types[k] = G_TYPE_STRING;
+          types[k + BIN_DEV_COL_] = G_TYPE_UINT;
+        }
+
+      bindev->store = gtk_list_store_newv (BIN_DEV_COL_ * 2, types);
 
-      bindev->store = gtk_list_store_new (5,
-                                          G_TYPE_STRING,
-                                          G_TYPE_STRING,
-                                          G_TYPE_STRING,
-                                          G_TYPE_STRING,
-                                          G_TYPE_STRING);
       dev->widget =
         gtk_tree_view_new_with_model (GTK_TREE_MODEL (bindev->store));
 
@@ -284,18 +292,54 @@ mixgtk_device_construct_gui_ (struct mixgtk_device_t *dev)
              gtk_tree_view_column_new_with_attributes ("", renderer,
                                                        "text", k, NULL));
 	}
+
+      g_free (types);
     }
 
   g_assert (dev->widget);
   gtk_container_add (GTK_CONTAINER (dev->scroll), dev->widget);
-  gtk_notebook_append_page (container_, dev->scroll, label);
+  gtk_notebook_append_page (dev_nb_, dev->scroll, label);
   gtk_widget_set_style (dev->widget,
-			gtk_widget_get_style (GTK_WIDGET (container_)));
+			gtk_widget_get_style (GTK_WIDGET (dev_nb_)));
   gtk_widget_show (label);
   gtk_widget_show (dev->scroll);
   gtk_widget_show (dev->widget);
 }
 
+static void
+redraw_bin_device_ (struct mixgtk_bin_device_t *dev)
+{
+  if (dev != NULL)
+    {
+      GtkTreeModel *store = GTK_TREE_MODEL (dev->store);
+      GtkTreeIter iter;
+      gboolean valid;
+
+      g_assert (store);
+
+      valid =
+        gtk_tree_model_get_iter_first (store, &iter);
+
+      while (valid)
+        {
+          gint k;
+          guint word;
+
+          for (k = 0; k < BIN_DEV_COL_; ++k)
+            {
+              gtk_tree_model_get (store, &iter, k + BIN_DEV_COL_, &word, -1);
+              gtk_list_store_set (GTK_LIST_STORE (store), &iter,
+                                  k, get_word_string_ ((mix_word_t)word,
+                                                       dev->dec),
+                                  -1);
+            }
+          valid = gtk_tree_model_iter_next (store, &iter);
+        }
+      gtk_widget_queue_draw (((struct mixgtk_device_t *)dev)->widget);
+    }
+}
+
+
 /* create a new mixgtk device */
 static mix_device_t *
 mixgtk_device_new_ (mix_device_type_t type)
@@ -323,42 +367,12 @@ mixgtk_device_new_ (mix_device_type_t type)
   return (mix_device_t *)dev;
 }
 
-static mix_device_t *
-mixgtk_device_copy_ (const struct mixgtk_device_t *from)
-{
-  struct mixgtk_device_t *result =
-    (struct mixgtk_device_t *)mixgtk_device_new_ (from->device.type);
-  g_return_val_if_fail (result != NULL, NULL);
-  if (MODES_[from->device.type] == mix_dev_CHAR)
-    {
-      gchar *text = gtk_editable_get_chars (GTK_EDITABLE (from->widget),
-					    0, -1);
-      gtk_text_buffer_insert_at_cursor
-        (gtk_text_view_get_buffer (GTK_TEXT_VIEW (result->widget)), text, -1);
-      g_free (text);
-    }
-  else
-    {
-      struct mixgtk_bin_device_t *to = (struct mixgtk_bin_device_t *) result;
-      struct mixgtk_bin_device_t *fr = (struct mixgtk_bin_device_t *) from;
-      to->last_insert = fr->last_insert;
-      to->dec = fr->dec;
-      gtk_tree_view_set_model (GTK_TREE_VIEW (result->widget),
-                               GTK_TREE_MODEL (fr->store));
-      to->store = fr->store;
-    }
-  return (mix_device_t *)result;
-}
-
 /* init default devices */
 gboolean
-mixgtk_device_init (GtkNotebook *container, mix_vm_t *vm)
+mixgtk_device_init (GtkContainer *container, mix_vm_t *vm)
 {
-  gint k = 0;
-
   g_return_val_if_fail (container != NULL, FALSE);
   g_return_val_if_fail (vm != NULL, FALSE);
-  container_ = container;
   vm_ = vm;
   devdlg_ = NULL;
   devdir_dlg_ = NULL;
@@ -368,27 +382,31 @@ mixgtk_device_init (GtkNotebook *container, mix_vm_t *vm)
   wtoggle_ = NULL;
   combo_ = NULL;
 
-  /* remove dummy page from container */
-  gtk_notebook_remove_page (container_, 0);
-
-  mix_vm_set_device_factory (vm, mixgtk_device_new_);
+  if (dev_nb_ == NULL)
+    {
+      mix_vm_set_device_factory (vm, mixgtk_device_new_);
 
-  /* read format configuration */
-  if (mixgtk_config_get (DEV_FORMAT_KEY_))
-    decs_ =  atoi (mixgtk_config_get (DEV_FORMAT_KEY_));
+      /* read format configuration */
+      if (mixgtk_config_get (DEV_FORMAT_KEY_))
+        decs_ =  atoi (mixgtk_config_get (DEV_FORMAT_KEY_));
 
-  /* re-create existing devices */
-  for (k = 0; k < mix_dev_INVALID; ++k)
+      dev_nb_ = GTK_NOTEBOOK (gtk_notebook_new ());
+      gtk_notebook_set_tab_pos (dev_nb_, GTK_POS_RIGHT);
+      gtk_notebook_set_scrollable (dev_nb_, TRUE);
+      gtk_container_add (container, GTK_WIDGET (dev_nb_));
+    }
+  else if (container_)
     {
-      mix_device_t *dev = mix_vm_get_device (vm, k);
-      if (dev != NULL)
-	{
-	  mix_device_t *newdev =
-	    mixgtk_device_copy_ ((struct mixgtk_device_t *)dev);
-	  mix_vm_connect_device (vm, newdev);
-	}
+      gtk_widget_reparent (GTK_WIDGET (dev_nb_), GTK_WIDGET (container));
     }
 
+  container_ = container;
+
+  gtk_widget_show (GTK_WIDGET (dev_nb_));
+  gtk_widget_show (GTK_WIDGET (container_));
+
+  mixgtk_fontsel_set_font (MIX_FONT_DEVICES, GTK_WIDGET (dev_nb_));
+
   return TRUE;
 }
 
@@ -403,34 +421,32 @@ mixgtk_device_set_format (mix_device_type_t dev, gboolean dec)
 
   if (changed && (MODES_[dev] == mix_dev_BIN))
     {
-      if (dec) SET_DEC (decs_, dev);
-      else CLEAR_DEC (decs_, dev);
-/*       redraw_bin_device_ ((struct mixgtk_bin_device_t *) */
-/* 			  mix_vm_get_device (vm_, dev)); */
+      struct mixgtk_bin_device_t *gdev =
+        (struct mixgtk_bin_device_t *) mix_vm_get_device (vm_, dev);
+
+      if (gdev != NULL)
+        {
+          if (dec) SET_DEC (decs_, dev); else CLEAR_DEC (decs_, dev);
+          gdev->dec = !(gdev->dec);
+          redraw_bin_device_ (gdev);
+        }
     }
-
 }
 
 
 static mix_device_type_t
 get_device_idx_ (void)
 {
-/*   const gchar *name =  gtk_entry_get_text */
-/*     (GTK_ENTRY (GTK_COMBO (combo_)->entry)); */
-/*   /\* inefficient, but the list is short *\/ */
-/*   int k; */
-/*   for (k = 0; k <= LAST_BIN_DEV_; ++k) */
-/*     if (!strcmp (name, DEF_NAMES_[k])) return k; */
-/*   g_assert_not_reached (); */
-  return 0;
+  int k;
+  const gchar *name = gtk_entry_get_text (GTK_ENTRY (GTK_BIN (combo_)->child));
+  for (k = 0; k <= LAST_BIN_DEV_; ++k)
+    if (!strcmp (name, DEF_NAMES_[k])) break;
+  return k;
 }
 
 static void
 init_devform_ (void)
 {
-  GList *names = NULL;
-  int k;
-
   devdlg_ = mixgtk_widget_factory_get_dialog (MIXGTK_DEVFORM_DIALOG);
   g_assert (devdlg_);
   dtoggle_ = mixgtk_widget_factory_get_child_by_name
@@ -442,29 +458,47 @@ init_devform_ (void)
   combo_ = mixgtk_widget_factory_get_child_by_name
     (MIXGTK_DEVFORM_DIALOG, "dev_combo");
   g_assert (combo_);
-
-  for (k = 0; k <= LAST_BIN_DEV_; ++k)
-    names = g_list_append (names, (gchar *)DEF_NAMES_[k]);
-/*   gtk_combo_set_popdown_strings (GTK_COMBO (combo_), names); */
+  gtk_editable_set_editable (GTK_EDITABLE (GTK_BIN (combo_)->child), FALSE);
 }
 
 void
-on_deventry_changed ()
+on_dev_combo_changed ()
 {
   mix_device_type_t dev = get_device_idx_ ();
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dtoggle_),
-				IS_DEC (new_decs_, dev));
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wtoggle_),
-				!IS_DEC (new_decs_, dev));
+  if (dev <= LAST_BIN_DEV_)
+    {
+      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dtoggle_),
+                                    IS_DEC (new_decs_, dev));
+      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wtoggle_),
+                                    !IS_DEC (new_decs_, dev));
+    }
 }
 
 void
 on_devform_activate ()
 {
+  gint result = GTK_RESPONSE_APPLY;
+
   if (!devdlg_) init_devform_ ();
   new_decs_ = decs_;
-  gtk_widget_show (devdlg_);
-  on_deventry_changed ();
+
+  while (result == GTK_RESPONSE_APPLY)
+    {
+      //on_dev_combo_changed ();
+      result = gtk_dialog_run (GTK_DIALOG (devdlg_));
+      if (result != GTK_RESPONSE_CANCEL)
+        {
+          int k;
+          gchar value[20];
+          for (k = 0; k <= LAST_BIN_DEV_; ++k)
+            mixgtk_device_set_format (k, IS_DEC (new_decs_, k));
+          decs_ = new_decs_;
+          g_snprintf (value, 20, "%d", decs_);
+          mixgtk_config_update (DEV_FORMAT_KEY_, value);
+        }
+    }
+
+  gtk_widget_hide (devdlg_);
 }
 
 void
@@ -476,31 +510,6 @@ on_decradio_toggled (GtkToggleButton *button)
     CLEAR_DEC (new_decs_, get_device_idx_ ());
 }
 
-void
-on_devapp_button_clicked ()
-{
-  int k;
-  gchar value[20];
-  for (k = 0; k <= LAST_BIN_DEV_; ++k)
-    mixgtk_device_set_format (k, IS_DEC (new_decs_, k));
-  decs_ = new_decs_;
-  g_snprintf (value, 20, "%d", decs_);
-  mixgtk_config_update (DEV_FORMAT_KEY_, value);
-}
-
-void
-on_devok_button_clicked ()
-{
-  on_devapp_button_clicked ();
-  gtk_widget_hide (devdlg_);
-}
-
-void
-on_devcancel_button_clicked ()
-{
-  gtk_widget_hide (devdlg_);
-}
-
 void
 on_devset_button_clicked ()
 {
@@ -572,20 +581,22 @@ on_devdir_ok_clicked ()
 }
 
 void
-on_input_ok_clicked ()
+on_devices_font_activate ()
 {
-  gtk_widget_hide (input_dlg_);
-  gtk_main_quit ();
-}
+  gint no = gtk_notebook_get_n_pages (dev_nb_);
+  GtkWidget **w = g_new (GtkWidget *, 2 * no + 1);
+  gint k;
 
-void
-on_input_clear_clicked ()
-{
-  gtk_entry_set_text (input_dlg_entry_, "");
-}
+  w[2 * no] = GTK_WIDGET (dev_nb_);
+  for (k = 0; k < no; ++k)
+    {
+      w[k] = gtk_notebook_get_nth_page (dev_nb_, k);
+      w[k + no] = gtk_bin_get_child (GTK_BIN (w[k]));
+      g_assert (w[k]);
+      g_assert (w[k + no]);
+    }
 
-void
-on_input_entry_activate ()
-{
-  on_input_ok_clicked ();
+  mixgtk_fontsel_query_font (MIX_FONT_DEVICES, w, 2 * no + 1);
+
+  g_free (w);
 }
diff --git a/mixgtk/mixgtk_device.h b/mixgtk/mixgtk_device.h
index cdfec66..dde8a5c 100644
--- a/mixgtk/mixgtk_device.h
+++ b/mixgtk/mixgtk_device.h
@@ -3,22 +3,22 @@
  * ------------------------------------------------------------------
  *  Last change: Time-stamp: <01/03/04 23:43:59 jose>
  * ------------------------------------------------------------------
- * Copyright (C) 2001 Free Software Foundation, Inc.
- *  
+ * Copyright (C) 2001, 2004 Free Software Foundation, Inc.
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
- *  
+ *
  * This program 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 General Public License for more details.
- *  
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *  
+ *
  */
 
 
@@ -31,7 +31,7 @@
 
 /* init default devices */
 extern gboolean
-mixgtk_device_init (GtkNotebook *container, mix_vm_t *vm);
+mixgtk_device_init (GtkContainer *container, mix_vm_t *vm);
 
 /* change the output format of a device */
 extern void
diff --git a/mixgtk/mixgtk_fontsel.c b/mixgtk/mixgtk_fontsel.c
index 50bcceb..59849b1 100644
--- a/mixgtk/mixgtk_fontsel.c
+++ b/mixgtk/mixgtk_fontsel.c
@@ -1,7 +1,7 @@
 /* -*-c-*- -------------- mixgtk_fontsel.c :
  * Implementation of the functions declared in mixgtk_fontsel.h
  * ------------------------------------------------------------------
- *  $Id: mixgtk_fontsel.c,v 1.15 2004/06/23 10:50:10 jao Exp $
+ *  $Id: mixgtk_fontsel.c,v 1.16 2004/06/24 01:40:47 jao Exp $
  * ------------------------------------------------------------------
  * Copyright (C) 2001, 2004 Free Software Foundation, Inc.
  *
@@ -26,223 +26,81 @@
 #include "mixgtk_config.h"
 #include "mixgtk_fontsel.h"
 
-static GtkWidget *fontsel_dialog_ = NULL;
-static mixgtk_widget_id_t widget_;
-static GHashTable *winfo_ = NULL;
+static GtkFontSelectionDialog *fontsel_dialog_ = NULL;
 
-typedef struct winfo
-{
-  GtkWidget *widget;
-  const gchar *font;
-  const gchar *key;
-} winfo;
-
-static mixgtk_widget_id_t widget_ids_[] = {
-  MIXGTK_WIDGET_MIXVM,
-  MIXGTK_WIDGET_PROMPT,
-  MIXGTK_WIDGET_LOG,
-  MIXGTK_WIDGET_MIXAL,
-  MIXGTK_WIDGET_DEVICE
-};
-
-static mixgtk_dialog_id_t dialog_ids_no_split_[] = {
-  MIXGTK_MAIN,
-  MIXGTK_MAIN,
-  MIXGTK_MAIN,
-  MIXGTK_MAIN,
-  MIXGTK_MAIN,
-};
-
-static mixgtk_dialog_id_t dialog_ids_split_[] = {
-  MIXGTK_MIXVM_DIALOG,
-  MIXGTK_MAIN,
-  MIXGTK_MAIN,
-  MIXGTK_MIXAL_DIALOG,
-  MIXGTK_DEVICES_DIALOG
-};
-
-static mixgtk_widget_id_t mixvm_children_[] = {
-  MIXGTK_WIDGET_rA,
-  MIXGTK_WIDGET_rX,
-  MIXGTK_WIDGET_rJ,
-  MIXGTK_WIDGET_rI1,
-  MIXGTK_WIDGET_rI2,
-  MIXGTK_WIDGET_rI3,
-  MIXGTK_WIDGET_rI4,
-  MIXGTK_WIDGET_rI5,
-  MIXGTK_WIDGET_rI6,
-  MIXGTK_WIDGET_CMP_L,
-  MIXGTK_WIDGET_CMP_E,
-  MIXGTK_WIDGET_CMP_G,
-  MIXGTK_WIDGET_OVER,
-  MIXGTK_WIDGET_CELLS,
-  MIXGTK_WIDGET_LAPTIME,
-  MIXGTK_WIDGET_PROGTIME,
-  MIXGTK_WIDGET_UPTIME,
-  MIXGTK_WIDGET_LOC
+static const gchar *keys_[MIX_FONT_NO] = {
+  "MIX.font", "Prompt.font", "Log.font", "MIXAL.font", "Devices.font"
 };
 
-static const int CHILDREN_NO_ =
-(sizeof (mixvm_children_) / sizeof (mixvm_children_[0]));
-
-static mixgtk_dialog_id_t *dialog_ids_ = NULL;
-
-static const gchar *keys_[] = {
-  "MIX.font", "Prompt.font", "Log.font", "MIXAL.font", "Device.font"
-};
-
-
-
-#define WIDGET_NO_  (sizeof (widget_ids_) / sizeof (widget_ids_[0]))
-
-static winfo infos_[WIDGET_NO_];
 
 /* initialise the font selection dialog */
 static void
 init_fontsel_ (void)
 {
-  fontsel_dialog_ = mixgtk_widget_factory_get_dialog (MIXGTK_FONTSEL_DIALOG);
+  fontsel_dialog_ =
+    GTK_FONT_SELECTION_DIALOG
+    (mixgtk_widget_factory_get_dialog (MIXGTK_FONTSEL_DIALOG));
   g_assert (fontsel_dialog_ != NULL);
 }
 
 void
-change_font_ (mixgtk_widget_id_t widget)
+mixgtk_fontsel_set_font (mixgtk_font_t f, GtkWidget *w)
 {
-  winfo *info;
-  if (!fontsel_dialog_) init_fontsel_ ();
-  info = (winfo *) g_hash_table_lookup (winfo_,	GINT_TO_POINTER (widget));
-  g_assert (info);
-  widget_ = widget;
-  if (info->font)
-    gtk_font_selection_dialog_set_font_name
-      (GTK_FONT_SELECTION_DIALOG (fontsel_dialog_), info->font);
-
-  gtk_widget_show (fontsel_dialog_);
-
-}
-
-void
-mixgtk_fontsel_load_defaults (void)
-{
-
-  int i;
   const gchar *font;
-  gboolean split = mixgtk_config_is_split ();
+  PangoFontDescription *font_desc;
 
-  fontsel_dialog_ = NULL;
+  if (f >= MIX_FONT_NO || w == NULL) return;
 
-  if (winfo_) g_hash_table_destroy (winfo_);
-  winfo_ = g_hash_table_new (NULL, NULL);
-  dialog_ids_ = split? dialog_ids_split_ : dialog_ids_no_split_;
-  for (i = 0; i < WIDGET_NO_; ++i)
+  font = mixgtk_config_get (keys_[f]);
+  if (!font)
     {
-      infos_[i].widget =
-	mixgtk_widget_factory_get (dialog_ids_[i], widget_ids_[i]);
-      g_assert (infos_[i].widget != NULL);
-      infos_[i].key = keys_[i];
-      g_hash_table_insert (winfo_, GINT_TO_POINTER (widget_ids_[i]),
-			   (gpointer)(infos_ + i));
-
-      infos_[i].font = NULL;
-      font = mixgtk_config_get (keys_[i]);
-      mixgtk_fontsel_set (widget_ids_[i], font? font : "Monospace");
+      mixgtk_config_update (keys_[f], "Monospace");
+      font = mixgtk_config_get (keys_[f]);
+      g_assert (font);
     }
-}
 
-void
-mixgtk_fontsel_set (mixgtk_widget_id_t widget, const gchar *font)
-{
-  winfo *w = (winfo *)
-    g_hash_table_lookup (winfo_, GINT_TO_POINTER (widget));
-  if (w != NULL && font != NULL)
+  font_desc = pango_font_description_from_string (font);
+
+  if (font_desc)
     {
-      PangoFontDescription *font_desc =
-        pango_font_description_from_string (font);
-     if (font_desc != NULL)
-	{
-          gtk_widget_modify_font (w->widget, font_desc);
-
-	  if (widget == MIXGTK_WIDGET_MIXVM)
-	    {
-	      int k;
-	      for (k = 0; k < CHILDREN_NO_; ++k)
-                {
-                  GtkWidget *child =
-                    mixgtk_widget_factory_get (MIXGTK_MIXVM_DIALOG,
-                                               mixvm_children_[k]);
-                  gtk_widget_modify_font (child, font_desc);
-                }
-	    }
-          w->font = font;
-	  mixgtk_config_update (w->key, w->font);
-          pango_font_description_free (font_desc);
-	}
-      else
-	mixgtk_config_remove (w->key);
+      gtk_widget_modify_font (w, font_desc);
+      gtk_widget_queue_draw (w);
+      pango_font_description_free (font_desc);
     }
-}
+  else
+    mixgtk_config_remove (keys_[f]);
 
-const gchar *
-mixgtk_fontsel_get (mixgtk_widget_id_t widget)
-{
-  const gchar *result = NULL;
-  winfo *w = (winfo *)
-    g_hash_table_lookup (winfo_, GINT_TO_POINTER (widget));
-  if (w != NULL) result = w->font;
-  return result;
 }
 
-/* callbacks */
-void
-on_log_font_activate (void)
+extern gboolean
+mixgtk_fontsel_query_font (mixgtk_font_t f, GtkWidget **w, size_t no)
 {
-  change_font_ (MIXGTK_WIDGET_LOG);
-}
-
-void
-on_mixal_font_activate (void)
-{
-  change_font_ (MIXGTK_WIDGET_MIXAL);
-}
+  gint result = GTK_RESPONSE_APPLY;
+  const gchar *current;
+  gboolean ret = FALSE;
 
-void
-on_prompt_font_activate (void)
-{
-  change_font_ (MIXGTK_WIDGET_PROMPT);
-}
-
-void
-on_mix_font_activate (void)
-{
-  change_font_ (MIXGTK_WIDGET_MIXVM);
-}
-
-void
-on_devices_font_activate (void)
-{
-  change_font_ (MIXGTK_WIDGET_DEVICE);
-}
-
-void
-on_fontsel_apply_clicked (void)
-{
-  gchar * name = gtk_font_selection_dialog_get_font_name
-    (GTK_FONT_SELECTION_DIALOG (fontsel_dialog_));
-  mixgtk_fontsel_set (widget_, name);
-  g_free (name);
-}
+  if (f >= MIX_FONT_NO) return FALSE;
+  if (!fontsel_dialog_) init_fontsel_ ();
 
-void
-on_fontsel_ok_clicked (void)
-{
-  on_fontsel_apply_clicked ();
-  gtk_widget_hide (fontsel_dialog_);
-}
+  current = mixgtk_config_get (keys_[f]);
+  gtk_font_selection_dialog_set_font_name (fontsel_dialog_,
+                                           current? current : "Monospace");
 
-void
-on_fontsel_cancel_clicked (void)
-{
-  gtk_widget_hide (fontsel_dialog_);
+  while (result == GTK_RESPONSE_APPLY)
+    {
+      result = gtk_dialog_run (GTK_DIALOG (fontsel_dialog_));
+      if (result != GTK_RESPONSE_CANCEL)
+        {
+          gint k;
+          mixgtk_config_update
+            (keys_[f],
+             gtk_font_selection_dialog_get_font_name (fontsel_dialog_));
+          for (k = 0; k < no; ++k)
+            mixgtk_fontsel_set_font (f, w[k]);
+          ret = TRUE;
+        }
+    }
+  gtk_widget_hide (GTK_WIDGET (fontsel_dialog_));
+  return ret;
 }
 
-
diff --git a/mixgtk/mixgtk_fontsel.h b/mixgtk/mixgtk_fontsel.h
index af09c15..0b288d4 100644
--- a/mixgtk/mixgtk_fontsel.h
+++ b/mixgtk/mixgtk_fontsel.h
@@ -1,24 +1,24 @@
 /* -*-c-*- ---------------- mixgtk_fontsel.h :
  * Functions for handling font selection.
  * ------------------------------------------------------------------
- *  Last change: Time-stamp: <2001-04-28 00:42:39 jao>
+ *  $Id: mixgtk_fontsel.h,v 1.5 2004/06/24 01:40:47 jao Exp $
  * ------------------------------------------------------------------
- * Copyright (C) 2001 Free Software Foundation, Inc.
- *  
+ * Copyright (C) 2001, 2004 Free Software Foundation, Inc.
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
- *  
+ *
  * This program 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 General Public License for more details.
- *  
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *  
+ *
  */
 
 
@@ -28,17 +28,21 @@
 #include <glib.h>
 #include "mixgtk_widgets.h"
 
-/* load default (configured) fonts */
-extern void
-mixgtk_fontsel_load_defaults (void);
+typedef enum {
+  MIX_FONT_MIXVM,
+  MIX_FONT_LOG,
+  MIX_FONT_PROMPT,
+  MIX_FONT_MIXAL,
+  MIX_FONT_DEVICES,
+  MIX_FONT_NO
+} mixgtk_font_t;
 
-/* set a widget's font */
+/* configured fonts */
 extern void
-mixgtk_fontsel_set (mixgtk_widget_id_t widget, const gchar *font);
+mixgtk_fontsel_set_font (mixgtk_font_t f, GtkWidget *w);
 
-/* get a widget's font */
-extern const gchar *
-mixgtk_fontsel_get (mixgtk_widget_id_t widget);
+extern gboolean
+mixgtk_fontsel_query_font (mixgtk_font_t f, GtkWidget **ws, size_t no);
 
 
 #endif /* MIXGTK_FONTSEL_H */
diff --git a/mixgtk/mixgtk_mixal.c b/mixgtk/mixgtk_mixal.c
index b805c30..17f726f 100644
--- a/mixgtk/mixgtk_mixal.c
+++ b/mixgtk/mixgtk_mixal.c
@@ -1,7 +1,7 @@
 /* -*-c-*- -------------- mixgtk_mixal.c :
  * Implementation of the functions declared in mixgtk_mixal.h
  * ------------------------------------------------------------------
- * $Id: mixgtk_mixal.c,v 1.17 2004/06/23 10:50:10 jao Exp $
+ * $Id: mixgtk_mixal.c,v 1.18 2004/06/24 01:40:47 jao Exp $
  * ------------------------------------------------------------------
  * Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
  *
@@ -27,6 +27,7 @@
 
 #include "mixgtk_widgets.h"
 #include "mixgtk_config.h"
+#include "mixgtk_fontsel.h"
 #include "mixgtk_mixal.h"
 
 
@@ -236,9 +237,12 @@ mixgtk_mixal_init (mix_vm_t *vm, mixgtk_dialog_id_t top)
   g_signal_connect (G_OBJECT (clist_), "event",
                     G_CALLBACK (mixal_event_), NULL);
 
+  mixgtk_fontsel_set_font (MIX_FONT_MIXAL, GTK_WIDGET (clist_));
+
   if (restart) mixgtk_mixal_load_file ();
   else restart = TRUE;
 
+
   return TRUE;
 }
 
@@ -555,3 +559,13 @@ on_mixal_leave_notify_event ()
 {
   gtk_statusbar_pop (status_, status_context_);
 }
+
+void
+on_mixal_font_activate ()
+{
+  GtkWidget *w[] = { GTK_WIDGET (clist_) };
+  mixgtk_fontsel_query_font (MIX_FONT_MIXAL, w, 1);
+}
+
+
+
diff --git a/mixgtk/mixgtk_mixvm.c b/mixgtk/mixgtk_mixvm.c
index 57fbb90..ca4b482 100644
--- a/mixgtk/mixgtk_mixvm.c
+++ b/mixgtk/mixgtk_mixvm.c
@@ -1,7 +1,7 @@
 /* -*-c-*- -------------- mixgtk_mixvm.c :
  * Implementation of the functions declared in mixgtk_mixvm.h
  * ------------------------------------------------------------------
- * $Id: mixgtk_mixvm.c,v 1.11 2004/06/23 10:50:10 jao Exp $
+ * $Id: mixgtk_mixvm.c,v 1.12 2004/06/24 01:40:47 jao Exp $
  * ------------------------------------------------------------------
  * Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
  *
@@ -24,6 +24,7 @@
 #include <stdlib.h>
 #include <mixlib/xmix_vm.h>
 #include "mixgtk_widgets.h"
+#include "mixgtk_fontsel.h"
 #include "mixgtk_mixvm.h"
 #include "mixgtk_cmd_dispatcher.h"
 #include "mixgtk_input.h"
@@ -79,10 +80,12 @@ mixgtk_mixvm_init (mix_vm_t *vm, mixgtk_dialog_id_t top)
       reg_entries_[k] =
 	GTK_ENTRY (mixgtk_widget_factory_get (top, MIXGTK_WIDGET_rA + k));
       g_return_val_if_fail (reg_entries_[k] != NULL, FALSE);
+      mixgtk_fontsel_set_font (MIX_FONT_MIXVM, GTK_WIDGET (reg_entries_[k]));
     }
 
   loc_entry_ = GTK_ENTRY (mixgtk_widget_factory_get (top, MIXGTK_WIDGET_LOC));
   g_return_val_if_fail (loc_entry_ != NULL, FALSE);
+  mixgtk_fontsel_set_font (MIX_FONT_MIXVM, GTK_WIDGET (loc_entry_));
 
   uptime_ = GTK_LABEL (mixgtk_widget_factory_get (top, MIXGTK_WIDGET_UPTIME));
   g_return_val_if_fail (uptime_ != NULL, FALSE);
@@ -332,6 +335,21 @@ on_goto_ok_clicked (GtkWidget *w, gpointer data)
     }
 }
 
+void
+on_mix_font_activate (void)
+{
+  GtkWidget *w[REGISTER_NO_ + 2] = {
+    GTK_WIDGET (loc_entry_), GTK_WIDGET (memory_)
+  };
+
+  gint k;
+
+  for (k = 0; k < REGISTER_NO_; ++k) w[k + 2] = GTK_WIDGET (reg_entries_[k]);
+
+  mixgtk_fontsel_query_font (MIX_FONT_MIXVM, w, REGISTER_NO_ + 2);
+
+}
+
 
 
 /* static functions */
@@ -485,6 +503,8 @@ init_mem_ (mixgtk_dialog_id_t top)
   g_signal_connect (G_OBJECT (memory_), "event-after",
                     G_CALLBACK (cont_clicked_), NULL);
 
+  mixgtk_fontsel_set_font (MIX_FONT_MIXVM, GTK_WIDGET (memory_));
+
   return TRUE;
 }
 
diff --git a/mixgtk/mixgtk_widgets.c b/mixgtk/mixgtk_widgets.c
index 8a5e91f..6ffff1e 100644
--- a/mixgtk/mixgtk_widgets.c
+++ b/mixgtk/mixgtk_widgets.c
@@ -77,7 +77,7 @@ static const gchar *names_[] = {
   "program_label",
   "uptime_label",
   "memory_scroll",
-  "devices_notebook",
+  "devices_container",
   "loc_entry",
   NULL
 };
diff --git a/mixgtk/mixgtk_widgets.h b/mixgtk/mixgtk_widgets.h
index 6d84fc5..5be3fb6 100644
--- a/mixgtk/mixgtk_widgets.h
+++ b/mixgtk/mixgtk_widgets.h
@@ -72,7 +72,7 @@ typedef enum {
   MIXGTK_WIDGET_PROGTIME,
   MIXGTK_WIDGET_UPTIME,
   MIXGTK_WIDGET_CELLS_SCROLL,
-  MIXGTK_WIDGET_DEVICE,
+  MIXGTK_WIDGET_DEVICES,
   MIXGTK_WIDGET_LOC,
   MIXGTK_WIDGET_NONE
 } mixgtk_widget_id_t;
-- 
cgit v1.2.3