]> git.sur5r.net Git - glabels/commitdiff
2003-12-30 Wayne Schuller <k_wayne@linuxpower.org>
authorJim Evins <evins@snaught.com>
Tue, 30 Dec 2003 07:25:43 +0000 (07:25 +0000)
committerJim Evins <evins@snaught.com>
Tue, 30 Dec 2003 07:25:43 +0000 (07:25 +0000)
Added feature: line spacing - allows you to comfortably space a text box to
fit a label perfectly.

* data/glabels-2.0.dtd:
* src/label-object.c: (gl_label_object_set_text_line_spacing),
(gl_label_object_get_text_alignment),
(gl_label_object_get_text_line_spacing):
* src/label-object.h:
* src/label-text.c: (gl_label_text_class_init),
(gl_label_text_instance_init), (copy), (get_size),
(set_text_line_spacing), (get_text_alignment),
(get_text_line_spacing):
* src/object-editor-private.h:
* src/object-editor-text-page.c:
(gl_object_editor_prepare_text_page),
(gl_object_editor_set_text_line_spacing),
(gl_object_editor_get_text_line_spacing):
* src/object-editor.glade:
* src/object-editor.h:
* src/prefs-dialog.c: (construct_object_page),
(update_object_page_from_prefs), (update_prefs_from_object_page):
* src/prefs-dialog.glade:
* src/prefs-model.c: (gl_prefs_model_save_settings),
(gl_prefs_model_load_settings), (get_float):
* src/prefs-model.h:
* src/print.c: (draw_text_object):
* src/ui-sidebar.c:
* src/view-text.c: (update_object_from_editor_cb),
(update_editor_from_object_cb),
(gl_view_text_create_event_handler), (draw_hacktext):
* src/view.c: (gl_view_construct),
(gl_view_set_selection_text_line_spacing),
(gl_view_set_default_text_line_spacing),
(gl_view_get_default_text_line_spacing):
* src/view.h:
* src/xml-label.c: (xml_parse_toplevel_span),
(xml_create_toplevel_span):

git-svn-id: https://glabels.svn.sourceforge.net/svnroot/glabels/trunk@398 f5e0f49d-192f-0410-a22d-a8d8700d0965

19 files changed:
glabels2/ChangeLog
glabels2/data/glabels-2.0.dtd
glabels2/src/label-object.c
glabels2/src/label-object.h
glabels2/src/label-text.c
glabels2/src/object-editor-private.h
glabels2/src/object-editor-text-page.c
glabels2/src/object-editor.glade
glabels2/src/object-editor.h
glabels2/src/prefs-dialog.c
glabels2/src/prefs-dialog.glade
glabels2/src/prefs-model.c
glabels2/src/prefs-model.h
glabels2/src/print.c
glabels2/src/ui-sidebar.c
glabels2/src/view-text.c
glabels2/src/view.c
glabels2/src/view.h
glabels2/src/xml-label.c

index 2c2a6bc4e3d84c89847a761cf32e04d262a3d997..ae921b95b12454a30857d43cd009c9101c38db90 100644 (file)
@@ -1,3 +1,43 @@
+2003-12-30  Wayne Schuller  <k_wayne@linuxpower.org>
+
+       Added feature: line spacing - allows you to comfortably space a text box to
+       fit a label perfectly.
+
+       * data/glabels-2.0.dtd:
+       * src/label-object.c: (gl_label_object_set_text_line_spacing),
+       (gl_label_object_get_text_alignment),
+       (gl_label_object_get_text_line_spacing):
+       * src/label-object.h:
+       * src/label-text.c: (gl_label_text_class_init),
+       (gl_label_text_instance_init), (copy), (get_size),
+       (set_text_line_spacing), (get_text_alignment),
+       (get_text_line_spacing):
+       * src/object-editor-private.h:
+       * src/object-editor-text-page.c:
+       (gl_object_editor_prepare_text_page),
+       (gl_object_editor_set_text_line_spacing),
+       (gl_object_editor_get_text_line_spacing):
+       * src/object-editor.glade:
+       * src/object-editor.h:
+       * src/prefs-dialog.c: (construct_object_page),
+       (update_object_page_from_prefs), (update_prefs_from_object_page):
+       * src/prefs-dialog.glade:
+       * src/prefs-model.c: (gl_prefs_model_save_settings),
+       (gl_prefs_model_load_settings), (get_float):
+       * src/prefs-model.h:
+       * src/print.c: (draw_text_object):
+       * src/ui-sidebar.c:
+       * src/view-text.c: (update_object_from_editor_cb),
+       (update_editor_from_object_cb),
+       (gl_view_text_create_event_handler), (draw_hacktext):
+       * src/view.c: (gl_view_construct),
+       (gl_view_set_selection_text_line_spacing),
+       (gl_view_set_default_text_line_spacing),
+       (gl_view_get_default_text_line_spacing):
+       * src/view.h:
+       * src/xml-label.c: (xml_parse_toplevel_span),
+       (xml_create_toplevel_span):
+
 2003-12-30  Jim Evins  <evins@snaught.com>
 
        * src/template-designer.c:
index 7132aedb08d8f1f975003468087241131602f755..287dfd3a2c657e1242e8ed975dd7a921059d1039 100644 (file)
                  font_weight     %FONT_WEIGHT_TYPE;      #IMPLIED
                  font_italic     %BOOLEAN_TYPE;          #IMPLIED
                  color           %UINT_TYPE;             #IMPLIED
+                 line_spacing    %LENGTH_TYPE;           #IMPLIED
 >
 
 <!ELEMENT Field EMPTY>
index ebdafab116d726a6c2dee2fb3f91ed719979c415..1f9b95387411b346bd356ca109e0eced59fa9203 100644 (file)
@@ -684,6 +684,27 @@ gl_label_object_set_text_alignment (glLabelObject     *object,
        gl_debug (DEBUG_LABEL, "END");
 }
 
+/****************************************************************************/
+/* Set text line spacing for all text contained in object.                  */
+/****************************************************************************/
+void
+gl_label_object_set_text_line_spacing (glLabelObject     *object,
+                                      gdouble            text_line_spacing)
+{
+       gl_debug (DEBUG_LABEL, "START");
+
+       g_return_if_fail (object && GL_IS_LABEL_OBJECT (object));
+
+       if ( GL_LABEL_OBJECT_GET_CLASS(object)->set_text_line_spacing != NULL ) {
+
+               /* We have an object specific method, use it */
+               GL_LABEL_OBJECT_GET_CLASS(object)->set_text_line_spacing (object, text_line_spacing);
+
+       }
+
+       gl_debug (DEBUG_LABEL, "END");
+}
+
 /****************************************************************************/
 /* Set text color for all text contained in object.                         */
 /****************************************************************************/
@@ -825,6 +846,30 @@ gl_label_object_get_text_alignment (glLabelObject     *object)
        return ret;
 }
 
+/****************************************************************************/
+/* Get text line spacing for all text contained in object.                  */
+/****************************************************************************/
+gdouble
+gl_label_object_get_text_line_spacing (glLabelObject     *object)
+{
+       gdouble ret = 0.0;
+
+       gl_debug (DEBUG_LABEL, "START");
+
+       g_return_val_if_fail (object && GL_IS_LABEL_OBJECT (object), 0.0);
+
+       if ( GL_LABEL_OBJECT_GET_CLASS(object)->get_text_line_spacing != NULL ) {
+
+               /* We have an object specific method, use it */
+               ret = GL_LABEL_OBJECT_GET_CLASS(object)->get_text_line_spacing (object);
+
+       }
+
+       gl_debug (DEBUG_LABEL, "END");
+
+       return ret;
+}
+
 /****************************************************************************/
 /* Get text color for all text contained in object.                         */
 /****************************************************************************/
index d2fe2009eefc20a4f2a1aa1320d31cffc6cc0b23..1ffa6209d82bfc99a13922d447b065e5cb0e584c 100644 (file)
@@ -93,6 +93,9 @@ struct _glLabelObjectClass {
        void              (*set_text_alignment)   (glLabelObject     *object,
                                                   GtkJustification   text_alignment);
 
+       void              (*set_text_line_spacing) (glLabelObject     *object,
+                                                   gdouble            text_line_spacing);
+
        void              (*set_text_color)       (glLabelObject     *object,
                                                   guint              text_color);
 
@@ -115,6 +118,8 @@ struct _glLabelObjectClass {
 
        GtkJustification  (*get_text_alignment)   (glLabelObject     *object);
 
+       gdouble           (*get_text_line_spacing) (glLabelObject     *object);
+
        guint             (*get_text_color)       (glLabelObject     *object);
 
        guint             (*get_fill_color)       (glLabelObject     *object);
@@ -217,6 +222,9 @@ void           gl_label_object_set_text_alignment    (glLabelObject     *object,
 void           gl_label_object_set_text_color        (glLabelObject     *object,
                                                      guint              text_color);
 
+void           gl_label_object_set_text_line_spacing (glLabelObject     *object,
+                                                     gdouble            text_line_spacing);
+
 
 gchar           *gl_label_object_get_font_family       (glLabelObject     *object);
 
@@ -228,6 +236,8 @@ gboolean         gl_label_object_get_font_italic_flag  (glLabelObject     *objec
 
 GtkJustification gl_label_object_get_text_alignment    (glLabelObject     *object);
 
+gdouble          gl_label_object_get_text_line_spacing (glLabelObject     *object);
+
 guint            gl_label_object_get_text_color        (glLabelObject     *object);
 
 
index 2bd0380c5c7498c035f3933c60357c4d9f8a8b85..b85c860d5ad1db352720e7fbe8c9918df8a56bc3 100644 (file)
@@ -39,6 +39,7 @@
 #define DEFAULT_FONT_ITALIC_FLAG FALSE
 #define DEFAULT_JUST             GTK_JUSTIFY_LEFT
 #define DEFAULT_COLOR            GNOME_CANVAS_COLOR (0,0,0)
+#define DEFAULT_TEXT_LINE_SPACING 1.0
 
 /*========================================================*/
 /* Private types.                                         */
@@ -54,6 +55,7 @@ struct _glLabelTextPrivate {
        gboolean         font_italic_flag;
        GtkJustification just;
        guint            color;
+       gdouble          line_spacing;
 };
 
 /*========================================================*/
@@ -97,6 +99,9 @@ static void set_font_italic_flag        (glLabelObject    *object,
 static void set_text_alignment          (glLabelObject    *object,
                                         GtkJustification  text_alignment);
 
+static void set_text_line_spacing       (glLabelObject    *object,
+                                        gdouble           text_line_spacing);
+
 static void set_text_color              (glLabelObject    *object,
                                         guint             text_color);
 
@@ -110,6 +115,8 @@ static gboolean         get_font_italic_flag       (glLabelObject    *object);
 
 static GtkJustification get_text_alignment          (glLabelObject    *object);
 
+static gdouble         get_text_line_spacing        (glLabelObject    *object);
+
 static guint            get_text_color              (glLabelObject    *object);
 
 \f
@@ -158,12 +165,14 @@ gl_label_text_class_init (glLabelTextClass *klass)
        label_object_class->set_font_weight      = set_font_weight;
        label_object_class->set_font_italic_flag = set_font_italic_flag;
        label_object_class->set_text_alignment   = set_text_alignment;
+       label_object_class->set_text_line_spacing = set_text_line_spacing;
        label_object_class->set_text_color       = set_text_color;
        label_object_class->get_font_family      = get_font_family;
        label_object_class->get_font_size        = get_font_size;
        label_object_class->get_font_weight      = get_font_weight;
        label_object_class->get_font_italic_flag = get_font_italic_flag;
        label_object_class->get_text_alignment   = get_text_alignment;
+       label_object_class->get_text_line_spacing = get_text_line_spacing;
        label_object_class->get_text_color       = get_text_color;
 
        object_class->finalize = gl_label_text_finalize;
@@ -183,6 +192,7 @@ gl_label_text_instance_init (glLabelText *ltext)
        ltext->private->font_italic_flag = DEFAULT_FONT_ITALIC_FLAG;
        ltext->private->just             = DEFAULT_JUST;
        ltext->private->color            = DEFAULT_COLOR;
+       ltext->private->line_spacing     = DEFAULT_TEXT_LINE_SPACING;
 
        g_signal_connect (G_OBJECT(ltext->private->buffer), "changed",
                          G_CALLBACK(buffer_changed_cb), ltext);
@@ -244,6 +254,7 @@ copy (glLabelObject *dst_object,
        new_ltext->private->font_italic_flag = ltext->private->font_italic_flag;
        new_ltext->private->color            = ltext->private->color;
        new_ltext->private->just             = ltext->private->just;
+       new_ltext->private->line_spacing     = ltext->private->line_spacing;
 
        gl_text_node_lines_free (&lines);
 
@@ -377,7 +388,11 @@ get_size (glLabelObject *object,
 
                if ( bbox.x1 > *w ) *w = bbox.x1;
 
-               *h += ltext->private->font_size;
+               if (i) {
+                       *h += ltext->private->line_spacing * ltext->private->font_size;
+               } else {
+                       *h += ltext->private->font_size;
+               }
 
        }
 
@@ -529,6 +544,29 @@ set_text_alignment (glLabelObject    *object,
        gl_debug (DEBUG_LABEL, "END");
 }
 
+/*---------------------------------------------------------------------------*/
+/* PRIVATE.  set text line spacing method.                                   */
+/*---------------------------------------------------------------------------*/
+static void
+set_text_line_spacing (glLabelObject *object,
+                      gdouble        line_spacing)
+{
+       glLabelText    *ltext = (glLabelText *)object;
+
+       gl_debug (DEBUG_LABEL, "START");
+
+       g_return_if_fail (ltext && GL_IS_LABEL_TEXT (ltext));
+
+       if (ltext->private->line_spacing != line_spacing) {
+
+               ltext->private->line_spacing = line_spacing;
+               gl_label_object_emit_changed (GL_LABEL_OBJECT(ltext));
+
+       }
+
+       gl_debug (DEBUG_LABEL, "END");
+}
+
 /*---------------------------------------------------------------------------*/
 /* PRIVATE.  set text color method.                                          */
 /*---------------------------------------------------------------------------*/
@@ -627,6 +665,21 @@ get_text_alignment (glLabelObject    *object)
        return ltext->private->just;
 }
 
+/*---------------------------------------------------------------------------*/
+/* PRIVATE.  get text line spacing method.                                   */
+/*---------------------------------------------------------------------------*/
+static gdouble
+get_text_line_spacing (glLabelObject *object)
+{
+       glLabelText    *ltext = (glLabelText *)object;
+
+       gl_debug (DEBUG_LABEL, "");
+
+       g_return_val_if_fail (ltext && GL_IS_LABEL_TEXT (ltext), 0.0);
+
+       return ltext->private->line_spacing;
+}
+
 /*---------------------------------------------------------------------------*/
 /* PRIVATE.  get text color method.                                          */
 /*---------------------------------------------------------------------------*/
index f3672d2048150d206a365d3b6baf6ceb58d99c21..61122cd7bd9387da2a90ec1f51cfc783d62738e3 100644 (file)
@@ -96,6 +96,7 @@ struct _glObjectEditorPrivate {
        GtkWidget  *text_left_toggle;
        GtkWidget  *text_center_toggle;
        GtkWidget  *text_right_toggle;
+       GtkWidget  *text_line_spacing_spin;
 
        GtkWidget  *edit_page_vbox;
        GtkWidget  *edit_text_view;
index 4a8ce49a948cc998575b955d4aea84ef6f60b52a..f22b1cd64e8c9e4a4b24afa6d7fd8431af5eadd5 100644 (file)
@@ -86,6 +86,8 @@ gl_object_editor_prepare_text_page (glObjectEditor       *editor)
                glade_xml_get_widget (editor->priv->gui, "text_center_toggle");
        editor->priv->text_right_toggle =
                glade_xml_get_widget (editor->priv->gui, "text_right_toggle");
+       editor->priv->text_line_spacing_spin =
+               glade_xml_get_widget (editor->priv->gui, "text_line_spacing_spin");
 
        /* Load family names */
        family_names = gnome_font_family_list ();
@@ -105,6 +107,8 @@ gl_object_editor_prepare_text_page (glObjectEditor       *editor)
        gtk_size_group_add_widget (label_size_group, label);
        label = glade_xml_get_widget (editor->priv->gui, "text_align_label");
        gtk_size_group_add_widget (label_size_group, label);
+       label = glade_xml_get_widget (editor->priv->gui, "text_line_spacing_label");
+       gtk_size_group_add_widget (label_size_group, label);
 
        /* Un-hide */
        gtk_widget_show_all (editor->priv->text_page_vbox);
@@ -144,6 +148,11 @@ gl_object_editor_prepare_text_page (glObjectEditor       *editor)
                          G_CALLBACK (align_toggle_cb),
                          G_OBJECT (editor));
 
+       g_signal_connect_swapped (G_OBJECT (editor->priv->text_line_spacing_spin),
+                                 "changed",
+                                 G_CALLBACK (gl_object_editor_changed_cb),
+                                 G_OBJECT (editor));
+
        gl_debug (DEBUG_EDITOR, "END");
 }
 
@@ -496,4 +505,44 @@ gl_object_editor_get_text_color (glObjectEditor      *editor)
 }
 
 
+/*****************************************************************************/
+/* Set text line spacing.                                                    */
+/*****************************************************************************/
+void
+gl_object_editor_set_text_line_spacing (glObjectEditor      *editor,
+                                       gdouble              text_line_spacing)
+{
+       gl_debug (DEBUG_EDITOR, "START");
+
+       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->text_line_spacing_spin),
+                                        gl_object_editor_changed_cb,
+                                        editor);
+
+        gtk_spin_button_set_value (GTK_SPIN_BUTTON (editor->priv->text_line_spacing_spin),
+                                   text_line_spacing);
+
+       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->text_line_spacing_spin),
+                                          gl_object_editor_changed_cb,
+                                          editor);
+
+       gl_debug (DEBUG_EDITOR, "END");
+}
+
+/*****************************************************************************/
+/* Query text line spacing.                                                  */
+/*****************************************************************************/
+gdouble
+gl_object_editor_get_text_line_spacing (glObjectEditor      *editor)
+{
+       gdouble text_line_spacing;
+
+       gl_debug (DEBUG_EDITOR, "START");
+
+       text_line_spacing = 
+               gtk_spin_button_get_value (GTK_SPIN_BUTTON(editor->priv->text_line_spacing_spin));
+
+       gl_debug (DEBUG_EDITOR, "END");
+
+       return text_line_spacing;
+}
 
index b44974797abc77d0fcde3cb36b69c9f8422d56b1..d2ed9164d044929bbebe8a5aaad0c973570257c7 100644 (file)
                        </widget>
                        <packing>
                          <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <property name="expand">True</property>
+                         <property name="fill">True</property>
                        </packing>
                      </child>
                    </widget>
                  <property name="border_width">12</property>
                  <property name="visible">True</property>
                  <property name="homogeneous">False</property>
-                 <property name="spacing">12</property>
+                 <property name="spacing">0</property>
 
                  <child>
-                   <widget class="GtkHBox" id="hbox2">
+                   <widget class="GtkTable" id="table1">
                      <property name="visible">True</property>
+                     <property name="n_rows">6</property>
+                     <property name="n_columns">2</property>
                      <property name="homogeneous">False</property>
-                     <property name="spacing">12</property>
+                     <property name="row_spacing">12</property>
+                     <property name="column_spacing">12</property>
 
                      <child>
                        <widget class="GtkLabel" id="text_family_label">
                          <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="GtkCombo" id="text_family_combo">
-                         <property name="visible">True</property>
-                         <property name="value_in_list">True</property>
-                         <property name="allow_empty">False</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="text_family_entry">
-                             <property name="visible">True</property>
-                             <property name="can_focus">True</property>
-                             <property name="editable">True</property>
-                             <property name="visibility">True</property>
-                             <property name="max_length">0</property>
-                             <property name="text" translatable="yes"></property>
-                             <property name="has_frame">True</property>
-                             <property name="invisible_char" translatable="yes">*</property>
-                             <property name="activates_default">False</property>
-                           </widget>
-                         </child>
-
-                         <child internal-child="list">
-                           <widget class="GtkList" id="combo-list2">
-                             <property name="visible">True</property>
-                             <property name="selection_mode">GTK_SELECTION_BROWSE</property>
-                           </widget>
-                         </child>
-                       </widget>
-                       <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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>
-                   </widget>
-                   <packing>
-                     <property name="padding">0</property>
-                     <property name="expand">False</property>
-                     <property name="fill">False</property>
-                   </packing>
-                 </child>
-
-                 <child>
-                   <widget class="GtkHBox" id="hbox28">
-                     <property name="visible">True</property>
-                     <property name="homogeneous">False</property>
-                     <property name="spacing">12</property>
 
                      <child>
                        <widget class="GtkLabel" id="text_size_label">
                          <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="GtkSpinButton" id="text_size_spin">
-                         <property name="visible">True</property>
-                         <property name="can_focus">True</property>
-                         <property name="climb_rate">1</property>
-                         <property name="digits">0</property>
-                         <property name="numeric">True</property>
-                         <property name="update_policy">GTK_UPDATE_ALWAYS</property>
-                         <property name="snap_to_ticks">False</property>
-                         <property name="wrap">False</property>
-                         <property name="adjustment">1 1 100 1 10 10</property>
-                       </widget>
-                       <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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>
-                   </widget>
-                   <packing>
-                     <property name="padding">0</property>
-                     <property name="expand">False</property>
-                     <property name="fill">False</property>
-                   </packing>
-                 </child>
-
-                 <child>
-                   <widget class="GtkHBox" id="hbox29">
-                     <property name="visible">True</property>
-                     <property name="homogeneous">False</property>
-                     <property name="spacing">12</property>
 
                      <child>
                        <widget class="GtkLabel" id="text_style_label">
                          <property name="ypad">0</property>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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="GtkToggleButton" id="text_bold_toggle">
+                       <widget class="GtkLabel" id="text_color_label">
                          <property name="visible">True</property>
-                         <property name="can_focus">True</property>
-                         <property name="relief">GTK_RELIEF_NORMAL</property>
-                         <property name="active">False</property>
-                         <property name="inconsistent">False</property>
-
-                         <child>
-                           <widget class="GtkImage" id="image1">
-                             <property name="visible">True</property>
-                             <property name="stock">gtk-bold</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>
+                         <property name="label" translatable="yes">Color:</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>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <property name="left_attach">0</property>
+                         <property name="right_attach">1</property>
+                         <property name="top_attach">3</property>
+                         <property name="bottom_attach">4</property>
+                         <property name="x_options">fill</property>
+                         <property name="y_options"></property>
                        </packing>
                      </child>
 
                      <child>
-                       <widget class="GtkToggleButton" id="text_italic_toggle">
+                       <widget class="GtkLabel" id="text_align_label">
                          <property name="visible">True</property>
-                         <property name="can_focus">True</property>
-                         <property name="relief">GTK_RELIEF_NORMAL</property>
-                         <property name="active">False</property>
-                         <property name="inconsistent">False</property>
-
-                         <child>
-                           <widget class="GtkImage" id="image2">
-                             <property name="visible">True</property>
-                             <property name="stock">gtk-italic</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>
+                         <property name="label" translatable="yes">Alignment:</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>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <property name="left_attach">0</property>
+                         <property name="right_attach">1</property>
+                         <property name="top_attach">4</property>
+                         <property name="bottom_attach">5</property>
+                         <property name="x_options">fill</property>
+                         <property name="y_options"></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="GtkHBox" id="hbox3">
-                     <property name="visible">True</property>
-                     <property name="homogeneous">False</property>
-                     <property name="spacing">12</property>
 
                      <child>
-                       <widget class="GtkLabel" id="text_color_label">
+                       <widget class="GtkLabel" id="text_line_spacing_label">
                          <property name="visible">True</property>
-                         <property name="label" translatable="yes">Color:</property>
+                         <property name="label" translatable="yes">Line Spacing:</property>
                          <property name="use_underline">False</property>
                          <property name="use_markup">False</property>
                          <property name="justify">GTK_JUSTIFY_LEFT</property>
                          <property name="ypad">0</property>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <property name="left_attach">0</property>
+                         <property name="right_attach">1</property>
+                         <property name="top_attach">5</property>
+                         <property name="bottom_attach">6</property>
+                         <property name="x_options">fill</property>
+                         <property name="y_options"></property>
                        </packing>
                      </child>
 
                      <child>
-                       <widget class="Custom" id="text_color_combo">
+                       <widget class="GtkHBox" id="hbox2">
                          <property name="visible">True</property>
-                         <property name="creation_function">gl_object_editor_construct_color_combo</property>
-                         <property name="int1">2</property>
-                         <property name="int2">0</property>
-                         <property name="last_modification_time">Sun, 16 Nov 2003 06:52:23 GMT</property>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">12</property>
+
+                         <child>
+                           <widget class="GtkCombo" id="text_family_combo">
+                             <property name="visible">True</property>
+                             <property name="value_in_list">True</property>
+                             <property name="allow_empty">False</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="text_family_entry">
+                                 <property name="visible">True</property>
+                                 <property name="can_focus">True</property>
+                                 <property name="editable">True</property>
+                                 <property name="visibility">True</property>
+                                 <property name="max_length">0</property>
+                                 <property name="text" translatable="yes"></property>
+                                 <property name="has_frame">True</property>
+                                 <property name="invisible_char" translatable="yes">*</property>
+                                 <property name="activates_default">False</property>
+                               </widget>
+                             </child>
+
+                             <child internal-child="list">
+                               <widget class="GtkList" id="combo-list2">
+                                 <property name="visible">True</property>
+                                 <property name="selection_mode">GTK_SELECTION_BROWSE</property>
+                               </widget>
+                             </child>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
+                         </child>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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="y_options">fill</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="GtkHBox" id="hbox4">
-                     <property name="visible">True</property>
-                     <property name="homogeneous">False</property>
-                     <property name="spacing">12</property>
 
                      <child>
-                       <widget class="GtkLabel" id="text_align_label">
+                       <widget class="GtkHBox" id="hbox28">
                          <property name="visible">True</property>
-                         <property name="label" translatable="yes">Alignment:</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>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">12</property>
+
+                         <child>
+                           <widget class="GtkSpinButton" id="text_size_spin">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="climb_rate">0.01</property>
+                             <property name="digits">0</property>
+                             <property name="numeric">True</property>
+                             <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+                             <property name="snap_to_ticks">False</property>
+                             <property name="wrap">False</property>
+                             <property name="adjustment">1 1 100 1 10 10</property>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
+                         </child>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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">fill</property>
+                         <property name="y_options">fill</property>
                        </packing>
                      </child>
 
                      <child>
-                       <widget class="GtkToggleButton" id="text_left_toggle">
+                       <widget class="GtkHBox" id="hbox29">
                          <property name="visible">True</property>
-                         <property name="can_focus">True</property>
-                         <property name="relief">GTK_RELIEF_NORMAL</property>
-                         <property name="active">False</property>
-                         <property name="inconsistent">False</property>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">12</property>
 
                          <child>
-                           <widget class="GtkImage" id="image3">
+                           <widget class="GtkToggleButton" id="text_bold_toggle">
                              <property name="visible">True</property>
-                             <property name="stock">gtk-justify-left</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>
+                             <property name="can_focus">True</property>
+                             <property name="relief">GTK_RELIEF_NORMAL</property>
+                             <property name="active">False</property>
+                             <property name="inconsistent">False</property>
+
+                             <child>
+                               <widget class="GtkImage" id="image1">
+                                 <property name="visible">True</property>
+                                 <property name="stock">gtk-bold</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">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
+                         </child>
+
+                         <child>
+                           <widget class="GtkToggleButton" id="text_italic_toggle">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="relief">GTK_RELIEF_NORMAL</property>
+                             <property name="active">False</property>
+                             <property name="inconsistent">False</property>
+
+                             <child>
+                               <widget class="GtkImage" id="image2">
+                                 <property name="visible">True</property>
+                                 <property name="stock">gtk-italic</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">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
                          </child>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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>
 
                      <child>
-                       <widget class="GtkToggleButton" id="text_center_toggle">
+                       <widget class="GtkHBox" id="hbox4">
                          <property name="visible">True</property>
-                         <property name="can_focus">True</property>
-                         <property name="relief">GTK_RELIEF_NORMAL</property>
-                         <property name="active">False</property>
-                         <property name="inconsistent">False</property>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">12</property>
 
                          <child>
-                           <widget class="GtkImage" id="image4">
+                           <widget class="GtkToggleButton" id="text_left_toggle">
                              <property name="visible">True</property>
-                             <property name="stock">gtk-justify-center</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>
+                             <property name="can_focus">True</property>
+                             <property name="relief">GTK_RELIEF_NORMAL</property>
+                             <property name="active">False</property>
+                             <property name="inconsistent">False</property>
+
+                             <child>
+                               <widget class="GtkImage" id="image3">
+                                 <property name="visible">True</property>
+                                 <property name="stock">gtk-justify-left</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">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
+                         </child>
+
+                         <child>
+                           <widget class="GtkToggleButton" id="text_center_toggle">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="relief">GTK_RELIEF_NORMAL</property>
+                             <property name="active">False</property>
+                             <property name="inconsistent">False</property>
+
+                             <child>
+                               <widget class="GtkImage" id="image4">
+                                 <property name="visible">True</property>
+                                 <property name="stock">gtk-justify-center</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">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
+                         </child>
+
+                         <child>
+                           <widget class="GtkToggleButton" id="text_right_toggle">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="relief">GTK_RELIEF_NORMAL</property>
+                             <property name="active">False</property>
+                             <property name="inconsistent">False</property>
+
+                             <child>
+                               <widget class="GtkImage" id="image5">
+                                 <property name="visible">True</property>
+                                 <property name="stock">gtk-justify-right</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">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
                          </child>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <property name="left_attach">1</property>
+                         <property name="right_attach">2</property>
+                         <property name="top_attach">4</property>
+                         <property name="bottom_attach">5</property>
+                         <property name="x_options">fill</property>
+                         <property name="y_options">fill</property>
                        </packing>
                      </child>
 
                      <child>
-                       <widget class="GtkToggleButton" id="text_right_toggle">
+                       <widget class="GtkHBox" id="hbox3">
                          <property name="visible">True</property>
-                         <property name="can_focus">True</property>
-                         <property name="relief">GTK_RELIEF_NORMAL</property>
-                         <property name="active">False</property>
-                         <property name="inconsistent">False</property>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">12</property>
 
                          <child>
-                           <widget class="GtkImage" id="image5">
+                           <widget class="Custom" id="text_color_combo">
                              <property name="visible">True</property>
-                             <property name="stock">gtk-justify-right</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>
+                             <property name="creation_function">gl_object_editor_construct_color_combo</property>
+                             <property name="int1">2</property>
+                             <property name="int2">0</property>
+                             <property name="last_modification_time">Sun, 16 Nov 2003 06:52:23 GMT</property>
                            </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
                          </child>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <property name="left_attach">1</property>
+                         <property name="right_attach">2</property>
+                         <property name="top_attach">3</property>
+                         <property name="bottom_attach">4</property>
+                         <property name="x_options">fill</property>
+                         <property name="y_options">fill</property>
                        </packing>
                      </child>
-                   </widget>
-                   <packing>
-                     <property name="padding">0</property>
-                     <property name="expand">False</property>
-                     <property name="fill">False</property>
+
+                     <child>
+                       <widget class="GtkHBox" id="hbox31">
+                         <property name="visible">True</property>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">12</property>
+
+                         <child>
+                           <widget class="GtkSpinButton" id="text_line_spacing_spin">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="climb_rate">0.01</property>
+                             <property name="digits">2</property>
+                             <property name="numeric">False</property>
+                             <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+                             <property name="snap_to_ticks">False</property>
+                             <property name="wrap">False</property>
+                             <property name="adjustment">1 0 5 0.01 0.1 0.1</property>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
+                         </child>
+                       </widget>
+                       <packing>
+                         <property name="left_attach">1</property>
+                         <property name="right_attach">2</property>
+                         <property name="top_attach">5</property>
+                         <property name="bottom_attach">6</property>
+                         <property name="x_options">fill</property>
+                         <property name="y_options">fill</property>
+                       </packing>
+                     </child>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">True</property>
+                     <property name="fill">True</property>
                    </packing>
                  </child>
                </widget>
                  <property name="spacing">12</property>
 
                  <child>
-                   <widget class="GtkHBox" id="hbox7">
+                   <widget class="GtkTable" id="table2">
                      <property name="visible">True</property>
+                     <property name="n_rows">2</property>
+                     <property name="n_columns">2</property>
                      <property name="homogeneous">False</property>
-                     <property name="spacing">12</property>
+                     <property name="row_spacing">12</property>
+                     <property name="column_spacing">12</property>
 
                      <child>
                        <widget class="GtkLabel" id="line_w_label">
                          <property name="ypad">0</property>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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="GtkSpinButton" id="line_width_spin">
+                       <widget class="GtkHBox" id="hbox7">
                          <property name="visible">True</property>
-                         <property name="can_focus">True</property>
-                         <property name="climb_rate">0.25</property>
-                         <property name="digits">2</property>
-                         <property name="numeric">True</property>
-                         <property name="update_policy">GTK_UPDATE_ALWAYS</property>
-                         <property name="snap_to_ticks">False</property>
-                         <property name="wrap">False</property>
-                         <property name="adjustment">1 0.25 4 0.25 1 1</property>
-                       </widget>
-                       <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
-                       </packing>
-                     </child>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">12</property>
 
-                     <child>
-                       <widget class="GtkLabel" id="label21">
-                         <property name="visible">True</property>
-                         <property name="label" translatable="yes">points</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>
+                         <child>
+                           <widget class="GtkSpinButton" id="line_width_spin">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="climb_rate">0.01</property>
+                             <property name="digits">2</property>
+                             <property name="numeric">True</property>
+                             <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+                             <property name="snap_to_ticks">False</property>
+                             <property name="wrap">False</property>
+                             <property name="adjustment">1 0.25 4 0.25 1 1</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="label21">
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">points</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>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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="y_options">fill</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="GtkHBox" id="hbox8">
-                     <property name="visible">True</property>
-                     <property name="homogeneous">False</property>
-                     <property name="spacing">12</property>
 
                      <child>
                        <widget class="GtkLabel" id="line_color_label">
                          <property name="ypad">0</property>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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>
-                       <widget class="Custom" id="line_color_combo">
+                       <widget class="GtkHBox" id="hbox8">
                          <property name="visible">True</property>
-                         <property name="creation_function">gl_object_editor_construct_color_combo</property>
-                         <property name="int1">1</property>
-                         <property name="int2">0</property>
-                         <property name="last_modification_time">Sat, 15 Nov 2003 22:10:18 GMT</property>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">12</property>
+
+                         <child>
+                           <widget class="Custom" id="line_color_combo">
+                             <property name="visible">True</property>
+                             <property name="creation_function">gl_object_editor_construct_color_combo</property>
+                             <property name="int1">1</property>
+                             <property name="int2">0</property>
+                             <property name="last_modification_time">Sat, 15 Nov 2003 22:10:18 GMT</property>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
+                         </child>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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">fill</property>
+                         <property name="y_options">fill</property>
                        </packing>
                      </child>
                    </widget>
                  <property name="spacing">0</property>
 
                  <child>
-                   <widget class="GtkHBox" id="hbox9">
+                   <widget class="GtkTable" id="table3">
                      <property name="visible">True</property>
+                     <property name="n_rows">1</property>
+                     <property name="n_columns">2</property>
                      <property name="homogeneous">False</property>
-                     <property name="spacing">12</property>
+                     <property name="row_spacing">12</property>
+                     <property name="column_spacing">12</property>
 
                      <child>
                        <widget class="GtkLabel" id="label23">
                          <property name="ypad">0</property>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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="Custom" id="fill_color_combo">
+                       <widget class="GtkHBox" id="hbox9">
                          <property name="visible">True</property>
-                         <property name="creation_function">gl_object_editor_construct_color_combo</property>
-                         <property name="string1"></property>
-                         <property name="int1">0</property>
-                         <property name="int2">0</property>
-                         <property name="last_modification_time">Sat, 15 Nov 2003 20:47:48 GMT</property>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">12</property>
+
+                         <child>
+                           <widget class="Custom" id="fill_color_combo">
+                             <property name="visible">True</property>
+                             <property name="creation_function">gl_object_editor_construct_color_combo</property>
+                             <property name="string1"></property>
+                             <property name="int1">0</property>
+                             <property name="int2">0</property>
+                             <property name="last_modification_time">Sat, 15 Nov 2003 20:47:48 GMT</property>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
+                         </child>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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="y_options">fill</property>
                        </packing>
                      </child>
                    </widget>
                    <packing>
                      <property name="padding">0</property>
-                     <property name="expand">False</property>
-                     <property name="fill">False</property>
+                     <property name="expand">True</property>
+                     <property name="fill">True</property>
                    </packing>
                  </child>
                </widget>
                  <property name="spacing">12</property>
 
                  <child>
-                   <widget class="GtkHBox" id="hbox18">
+                   <widget class="GtkTable" id="table4">
                      <property name="visible">True</property>
+                     <property name="n_rows">2</property>
+                     <property name="n_columns">2</property>
                      <property name="homogeneous">False</property>
-                     <property name="spacing">12</property>
+                     <property name="row_spacing">12</property>
+                     <property name="column_spacing">12</property>
 
                      <child>
                        <widget class="GtkRadioButton" id="data_literal_radio">
                          <property name="draw_indicator">True</property>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
-                       </packing>
-                     </child>
-
-                     <child>
-                       <widget class="GtkEntry" id="data_text_entry">
-                         <property name="visible">True</property>
-                         <property name="can_focus">True</property>
-                         <property name="editable">True</property>
-                         <property name="visibility">True</property>
-                         <property name="max_length">0</property>
-                         <property name="text" translatable="yes"></property>
-                         <property name="has_frame">True</property>
-                         <property name="invisible_char" translatable="yes">*</property>
-                         <property name="activates_default">False</property>
-                       </widget>
-                       <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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>
-                   </widget>
-                   <packing>
-                     <property name="padding">0</property>
-                     <property name="expand">False</property>
-                     <property name="fill">False</property>
-                   </packing>
-                 </child>
-
-                 <child>
-                   <widget class="GtkHBox" id="hbox19">
-                     <property name="visible">True</property>
-                     <property name="homogeneous">False</property>
-                     <property name="spacing">12</property>
 
                      <child>
                        <widget class="GtkRadioButton" id="data_key_radio">
                          <property name="active">False</property>
                          <property name="inconsistent">False</property>
                          <property name="draw_indicator">True</property>
-                         <property name="group">data_literal_radio</property>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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>
-                       <widget class="GtkCombo" id="data_key_combo">
+                       <widget class="GtkHBox" id="hbox18">
                          <property name="visible">True</property>
-                         <property name="value_in_list">False</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>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">12</property>
 
-                         <child internal-child="entry">
-                           <widget class="GtkEntry" id="data_key_entry">
+                         <child>
+                           <widget class="GtkEntry" id="data_text_entry">
                              <property name="visible">True</property>
                              <property name="can_focus">True</property>
                              <property name="editable">True</property>
                              <property name="invisible_char" translatable="yes">*</property>
                              <property name="activates_default">False</property>
                            </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
                          </child>
+                       </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="y_options">fill</property>
+                       </packing>
+                     </child>
 
-                         <child internal-child="list">
-                           <widget class="GtkList" id="combo-list5">
+                     <child>
+                       <widget class="GtkHBox" id="hbox19">
+                         <property name="visible">True</property>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">12</property>
+
+                         <child>
+                           <widget class="GtkCombo" id="data_key_combo">
                              <property name="visible">True</property>
-                             <property name="selection_mode">GTK_SELECTION_BROWSE</property>
+                             <property name="value_in_list">False</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="data_key_entry">
+                                 <property name="visible">True</property>
+                                 <property name="can_focus">True</property>
+                                 <property name="editable">True</property>
+                                 <property name="visibility">True</property>
+                                 <property name="max_length">0</property>
+                                 <property name="text" translatable="yes"></property>
+                                 <property name="has_frame">True</property>
+                                 <property name="invisible_char" translatable="yes">*</property>
+                                 <property name="activates_default">False</property>
+                               </widget>
+                             </child>
+
+                             <child internal-child="list">
+                               <widget class="GtkList" id="combo-list5">
+                                 <property name="visible">True</property>
+                                 <property name="selection_mode">GTK_SELECTION_BROWSE</property>
+                               </widget>
+                             </child>
                            </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
                          </child>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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">fill</property>
+                         <property name="y_options">fill</property>
                        </packing>
                      </child>
                    </widget>
                    <packing>
                      <property name="padding">0</property>
-                     <property name="expand">False</property>
-                     <property name="fill">False</property>
+                     <property name="expand">True</property>
+                     <property name="fill">True</property>
                    </packing>
                  </child>
                </widget>
                  <property name="spacing">12</property>
 
                  <child>
-                   <widget class="GtkHBox" id="hbox20">
+                   <widget class="GtkTable" id="table5">
                      <property name="visible">True</property>
+                     <property name="n_rows">4</property>
+                     <property name="n_columns">2</property>
                      <property name="homogeneous">False</property>
-                     <property name="spacing">12</property>
+                     <property name="row_spacing">12</property>
+                     <property name="column_spacing">12</property>
 
                      <child>
                        <widget class="GtkLabel" id="bc_style_label">
                          <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="xalign">0</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>
+                         <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="GtkCombo" id="bc_style_combo">
+                       <widget class="GtkLabel" id="bc_color_label">
                          <property name="visible">True</property>
-                         <property name="value_in_list">False</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>
+                         <property name="label" translatable="yes">Color:</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>
+                       <packing>
+                         <property name="left_attach">0</property>
+                         <property name="right_attach">1</property>
+                         <property name="top_attach">3</property>
+                         <property name="bottom_attach">4</property>
+                         <property name="x_options">fill</property>
+                         <property name="y_options"></property>
+                       </packing>
+                     </child>
 
-                         <child internal-child="entry">
-                           <widget class="GtkEntry" id="bc_style_entry">
+                     <child>
+                       <widget class="GtkHBox" id="hbox20">
+                         <property name="visible">True</property>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">12</property>
+
+                         <child>
+                           <widget class="GtkCombo" id="bc_style_combo">
                              <property name="visible">True</property>
-                             <property name="can_focus">True</property>
-                             <property name="editable">True</property>
-                             <property name="visibility">True</property>
-                             <property name="max_length">0</property>
-                             <property name="text" translatable="yes"></property>
-                             <property name="has_frame">True</property>
-                             <property name="invisible_char" translatable="yes">*</property>
-                             <property name="activates_default">False</property>
+                             <property name="value_in_list">False</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="bc_style_entry">
+                                 <property name="visible">True</property>
+                                 <property name="can_focus">True</property>
+                                 <property name="editable">True</property>
+                                 <property name="visibility">True</property>
+                                 <property name="max_length">0</property>
+                                 <property name="text" translatable="yes"></property>
+                                 <property name="has_frame">True</property>
+                                 <property name="invisible_char" translatable="yes">*</property>
+                                 <property name="activates_default">False</property>
+                               </widget>
+                             </child>
+
+                             <child internal-child="list">
+                               <widget class="GtkList" id="combo-list4">
+                                 <property name="visible">True</property>
+                                 <property name="selection_mode">GTK_SELECTION_BROWSE</property>
+                               </widget>
+                             </child>
                            </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">True</property>
+                             <property name="fill">True</property>
+                           </packing>
                          </child>
+                       </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">fill</property>
+                         <property name="y_options">fill</property>
+                       </packing>
+                     </child>
 
-                         <child internal-child="list">
-                           <widget class="GtkList" id="combo-list4">
+                     <child>
+                       <widget class="GtkHBox" id="hbox23">
+                         <property name="visible">True</property>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">12</property>
+
+                         <child>
+                           <widget class="Custom" id="bc_color_combo">
                              <property name="visible">True</property>
-                             <property name="selection_mode">GTK_SELECTION_BROWSE</property>
+                             <property name="creation_function">gl_object_editor_construct_color_combo</property>
+                             <property name="int1">1</property>
+                             <property name="int2">0</property>
+                             <property name="last_modification_time">Sun, 16 Nov 2003 07:00:32 GMT</property>
                            </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
                          </child>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">True</property>
-                         <property name="fill">True</property>
+                         <property name="left_attach">1</property>
+                         <property name="right_attach">2</property>
+                         <property name="top_attach">3</property>
+                         <property name="bottom_attach">4</property>
+                         <property name="x_options">fill</property>
+                         <property name="y_options">fill</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="GtkHBox" id="hbox21">
-                     <property name="visible">True</property>
-                     <property name="homogeneous">False</property>
-                     <property name="spacing">12</property>
 
                      <child>
                        <widget class="GtkCheckButton" id="bc_text_check">
                          <property name="draw_indicator">True</property>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <property name="left_attach">0</property>
+                         <property name="right_attach">2</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>
-                   </widget>
-                   <packing>
-                     <property name="padding">0</property>
-                     <property name="expand">False</property>
-                     <property name="fill">False</property>
-                   </packing>
-                 </child>
-
-                 <child>
-                   <widget class="GtkHBox" id="hbox22">
-                     <property name="visible">True</property>
-                     <property name="homogeneous">False</property>
-                     <property name="spacing">12</property>
 
                      <child>
                        <widget class="GtkCheckButton" id="bc_cs_check">
                          <property name="draw_indicator">True</property>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <property name="left_attach">0</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"></property>
                        </packing>
                      </child>
                    </widget>
                    <packing>
                      <property name="padding">0</property>
-                     <property name="expand">False</property>
-                     <property name="fill">False</property>
+                     <property name="expand">True</property>
+                     <property name="fill">True</property>
                    </packing>
                  </child>
-
-                 <child>
-                   <widget class="GtkHBox" id="hbox23">
-                     <property name="visible">True</property>
-                     <property name="homogeneous">False</property>
-                     <property name="spacing">12</property>
-
-                     <child>
-                       <widget class="GtkLabel" id="bc_color_label">
-                         <property name="visible">True</property>
-                         <property name="label" translatable="yes">Color:</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="Custom" id="bc_color_combo">
-                         <property name="visible">True</property>
-                         <property name="creation_function">gl_object_editor_construct_color_combo</property>
-                         <property name="int1">1</property>
-                         <property name="int2">0</property>
-                         <property name="last_modification_time">Sun, 16 Nov 2003 07:00:32 GMT</property>
-                       </widget>
-                       <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
-                       </packing>
-                     </child>
-                   </widget>
-                   <packing>
-                     <property name="padding">0</property>
-                     <property name="expand">False</property>
-                     <property name="fill">False</property>
-                   </packing>
-                 </child>
-               </widget>
-               <packing>
-                 <property name="tab_expand">True</property>
-                 <property name="tab_fill">True</property>
-               </packing>
-             </child>
+               </widget>
+               <packing>
+                 <property name="tab_expand">True</property>
+                 <property name="tab_fill">True</property>
+               </packing>
+             </child>
 
              <child>
                <widget class="GtkLabel" id="bc_tab_label">
                  <property name="spacing">12</property>
 
                  <child>
-                   <widget class="GtkHBox" id="hbox10">
+                   <widget class="GtkTable" id="table6">
                      <property name="visible">True</property>
+                     <property name="n_rows">4</property>
+                     <property name="n_columns">2</property>
                      <property name="homogeneous">False</property>
-                     <property name="spacing">12</property>
+                     <property name="row_spacing">12</property>
+                     <property name="column_spacing">12</property>
 
                      <child>
                        <widget class="GtkLabel" id="size_w_label">
                          <property name="ypad">0</property>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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="GtkSpinButton" id="size_w_spin">
-                         <property name="visible">True</property>
-                         <property name="can_focus">True</property>
-                         <property name="climb_rate">0.01</property>
-                         <property name="digits">2</property>
-                         <property name="numeric">True</property>
-                         <property name="update_policy">GTK_UPDATE_ALWAYS</property>
-                         <property name="snap_to_ticks">True</property>
-                         <property name="wrap">False</property>
-                         <property name="adjustment">1 0 100 0.01 10 10</property>
-                       </widget>
-                       <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">True</property>
-                       </packing>
-                     </child>
-
-                     <child>
-                       <widget class="GtkLabel" id="size_w_units_label">
-                         <property name="visible">True</property>
-                         <property name="label" translatable="yes">inches</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>
-                   </widget>
-                   <packing>
-                     <property name="padding">0</property>
-                     <property name="expand">False</property>
-                     <property name="fill">False</property>
-                   </packing>
-                 </child>
-
-                 <child>
-                   <widget class="GtkHBox" id="hbox11">
-                     <property name="visible">True</property>
-                     <property name="homogeneous">False</property>
-                     <property name="spacing">12</property>
-
                      <child>
                        <widget class="GtkLabel" id="size_h_label">
                          <property name="visible">True</property>
                          <property name="ypad">0</property>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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>
-                       <widget class="GtkSpinButton" id="size_h_spin">
+                       <widget class="GtkHBox" id="hbox10">
                          <property name="visible">True</property>
-                         <property name="can_focus">True</property>
-                         <property name="climb_rate">0.01</property>
-                         <property name="digits">2</property>
-                         <property name="numeric">True</property>
-                         <property name="update_policy">GTK_UPDATE_ALWAYS</property>
-                         <property name="snap_to_ticks">True</property>
-                         <property name="wrap">False</property>
-                         <property name="adjustment">1 0 100 0.01 10 10</property>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">12</property>
+
+                         <child>
+                           <widget class="GtkSpinButton" id="size_w_spin">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="climb_rate">0.01</property>
+                             <property name="digits">2</property>
+                             <property name="numeric">True</property>
+                             <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+                             <property name="snap_to_ticks">True</property>
+                             <property name="wrap">False</property>
+                             <property name="adjustment">1 0 100 0.01 10 10</property>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">True</property>
+                           </packing>
+                         </child>
+
+                         <child>
+                           <widget class="GtkLabel" id="size_w_units_label">
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">inches</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>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">True</property>
+                         <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="y_options">fill</property>
                        </packing>
                      </child>
 
                      <child>
-                       <widget class="GtkLabel" id="size_h_units_label">
+                       <widget class="GtkHBox" id="hbox11">
                          <property name="visible">True</property>
-                         <property name="label" translatable="yes">inches</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="homogeneous">False</property>
+                         <property name="spacing">12</property>
+
+                         <child>
+                           <widget class="GtkSpinButton" id="size_h_spin">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="climb_rate">0.01</property>
+                             <property name="digits">2</property>
+                             <property name="numeric">True</property>
+                             <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+                             <property name="snap_to_ticks">True</property>
+                             <property name="wrap">False</property>
+                             <property name="adjustment">1 0 100 0.01 10 10</property>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">True</property>
+                           </packing>
+                         </child>
+
+                         <child>
+                           <widget class="GtkLabel" id="size_h_units_label">
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">inches</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>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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">fill</property>
+                         <property name="y_options">fill</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="GtkHBox" id="hbox12">
-                     <property name="visible">True</property>
-                     <property name="homogeneous">False</property>
-                     <property name="spacing">12</property>
 
                      <child>
                        <widget class="GtkCheckButton" id="size_aspect_checkbutton">
                          <property name="draw_indicator">True</property>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <property name="left_attach">0</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"></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="GtkHBox" id="hbox13">
-                     <property name="visible">True</property>
-                     <property name="homogeneous">False</property>
-                     <property name="spacing">12</property>
 
                      <child>
-                       <widget class="GtkButton" id="size_reset_image_button">
+                       <widget class="GtkHBox" id="hbox13">
                          <property name="visible">True</property>
-                         <property name="can_focus">True</property>
-                         <property name="label" translatable="yes">Reset image size</property>
-                         <property name="use_underline">True</property>
-                         <property name="relief">GTK_RELIEF_NORMAL</property>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">12</property>
+
+                         <child>
+                           <widget class="GtkButton" id="size_reset_image_button">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="label" translatable="yes">Reset image size</property>
+                             <property name="use_underline">True</property>
+                             <property name="relief">GTK_RELIEF_NORMAL</property>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
+                         </child>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <property name="left_attach">0</property>
+                         <property name="right_attach">2</property>
+                         <property name="top_attach">3</property>
+                         <property name="bottom_attach">4</property>
+                         <property name="x_options">fill</property>
+                         <property name="y_options"></property>
                        </packing>
                      </child>
                    </widget>
                    <packing>
                      <property name="padding">0</property>
-                     <property name="expand">False</property>
-                     <property name="fill">False</property>
+                     <property name="expand">True</property>
+                     <property name="fill">True</property>
                    </packing>
                  </child>
                </widget>
                  <property name="spacing">12</property>
 
                  <child>
-                   <widget class="GtkHBox" id="hbox25">
+                   <widget class="GtkTable" id="table7">
                      <property name="visible">True</property>
+                     <property name="n_rows">2</property>
+                     <property name="n_columns">2</property>
                      <property name="homogeneous">False</property>
-                     <property name="spacing">12</property>
+                     <property name="row_spacing">12</property>
+                     <property name="column_spacing">12</property>
 
                      <child>
                        <widget class="GtkLabel" id="lsize_r_label">
                          <property name="ypad">0</property>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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="GtkSpinButton" id="lsize_r_spin">
-                         <property name="visible">True</property>
-                         <property name="can_focus">True</property>
-                         <property name="climb_rate">0.01</property>
-                         <property name="digits">2</property>
-                         <property name="numeric">True</property>
-                         <property name="update_policy">GTK_UPDATE_ALWAYS</property>
-                         <property name="snap_to_ticks">True</property>
-                         <property name="wrap">False</property>
-                         <property name="adjustment">1 0 100 0.01 10 10</property>
-                       </widget>
-                       <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">True</property>
-                       </packing>
-                     </child>
-
-                     <child>
-                       <widget class="GtkLabel" id="lsize_r_units_label">
-                         <property name="visible">True</property>
-                         <property name="label" translatable="yes">inches</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>
-                   </widget>
-                   <packing>
-                     <property name="padding">0</property>
-                     <property name="expand">False</property>
-                     <property name="fill">False</property>
-                   </packing>
-                 </child>
-
-                 <child>
-                   <widget class="GtkHBox" id="hbox26">
-                     <property name="visible">True</property>
-                     <property name="homogeneous">False</property>
-                     <property name="spacing">12</property>
-
                      <child>
                        <widget class="GtkLabel" id="lsize_theta_label">
                          <property name="visible">True</property>
                          <property name="ypad">0</property>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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>
-                       <widget class="GtkSpinButton" id="lsize_theta_spin">
+                       <widget class="GtkHBox" id="hbox25">
                          <property name="visible">True</property>
-                         <property name="can_focus">True</property>
-                         <property name="climb_rate">0.1</property>
-                         <property name="digits">1</property>
-                         <property name="numeric">True</property>
-                         <property name="update_policy">GTK_UPDATE_ALWAYS</property>
-                         <property name="snap_to_ticks">True</property>
-                         <property name="wrap">False</property>
-                         <property name="adjustment">0 -180 180 0.1 5 5</property>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">12</property>
+
+                         <child>
+                           <widget class="GtkSpinButton" id="lsize_r_spin">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="climb_rate">0.01</property>
+                             <property name="digits">2</property>
+                             <property name="numeric">True</property>
+                             <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+                             <property name="snap_to_ticks">True</property>
+                             <property name="wrap">False</property>
+                             <property name="adjustment">1 0 100 0.01 10 10</property>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">True</property>
+                           </packing>
+                         </child>
+
+                         <child>
+                           <widget class="GtkLabel" id="lsize_r_units_label">
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">inches</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>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">True</property>
+                         <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="y_options">fill</property>
                        </packing>
                      </child>
 
                      <child>
-                       <widget class="GtkLabel" id="label38">
+                       <widget class="GtkHBox" id="hbox26">
                          <property name="visible">True</property>
-                         <property name="label" translatable="yes">degrees</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="homogeneous">False</property>
+                         <property name="spacing">12</property>
+
+                         <child>
+                           <widget class="GtkSpinButton" id="lsize_theta_spin">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="climb_rate">0.01</property>
+                             <property name="digits">1</property>
+                             <property name="numeric">True</property>
+                             <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+                             <property name="snap_to_ticks">True</property>
+                             <property name="wrap">False</property>
+                             <property name="adjustment">0 -180 180 0.1 5 5</property>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">True</property>
+                           </packing>
+                         </child>
+
+                         <child>
+                           <widget class="GtkLabel" id="label38">
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">degrees</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>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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">fill</property>
+                         <property name="y_options">fill</property>
                        </packing>
                      </child>
                    </widget>
                    <packing>
                      <property name="padding">0</property>
-                     <property name="expand">False</property>
-                     <property name="fill">False</property>
+                     <property name="expand">True</property>
+                     <property name="fill">True</property>
                    </packing>
                  </child>
                </widget>
                  <property name="spacing">12</property>
 
                  <child>
-                   <widget class="GtkHBox" id="hbox5">
+                   <widget class="GtkTable" id="table8">
                      <property name="visible">True</property>
+                     <property name="n_rows">2</property>
+                     <property name="n_columns">3</property>
                      <property name="homogeneous">False</property>
-                     <property name="spacing">12</property>
+                     <property name="row_spacing">12</property>
+                     <property name="column_spacing">12</property>
 
                      <child>
                        <widget class="GtkLabel" id="pos_x_label">
+                         <property name="width_request">50</property>
                          <property name="visible">True</property>
                          <property name="label" translatable="yes">X:</property>
                          <property name="use_underline">False</property>
                          <property name="ypad">0</property>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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="GtkSpinButton" id="pos_x_spin">
+                       <widget class="GtkLabel" id="pos_y_label">
                          <property name="visible">True</property>
-                         <property name="can_focus">True</property>
-                         <property name="climb_rate">0.01</property>
-                         <property name="digits">2</property>
-                         <property name="numeric">True</property>
-                         <property name="update_policy">GTK_UPDATE_ALWAYS</property>
-                         <property name="snap_to_ticks">True</property>
+                         <property name="label" translatable="yes">Y:</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="adjustment">0 0 100 0.01 10 10</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>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">True</property>
+                         <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>
 
                          <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="xalign">0</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>
+                         <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>
-                   </widget>
-                   <packing>
-                     <property name="padding">0</property>
-                     <property name="expand">False</property>
-                     <property name="fill">False</property>
-                   </packing>
-                 </child>
-
-                 <child>
-                   <widget class="GtkHBox" id="hbox6">
-                     <property name="visible">True</property>
-                     <property name="homogeneous">False</property>
-                     <property name="spacing">12</property>
 
                      <child>
-                       <widget class="GtkLabel" id="pos_y_label">
+                       <widget class="GtkLabel" id="pos_y_units_label">
                          <property name="visible">True</property>
-                         <property name="label" translatable="yes">Y:</property>
+                         <property name="label" translatable="yes">inches</property>
                          <property name="use_underline">False</property>
                          <property name="use_markup">False</property>
                          <property name="justify">GTK_JUSTIFY_LEFT</property>
                          <property name="ypad">0</property>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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>
 
                      <child>
-                       <widget class="GtkSpinButton" id="pos_y_spin">
+                       <widget class="GtkSpinButton" id="pos_x_spin">
                          <property name="visible">True</property>
                          <property name="can_focus">True</property>
                          <property name="climb_rate">0.01</property>
                          <property name="adjustment">0 0 100 0.01 10 10</property>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">True</property>
+                         <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="pos_y_units_label">
+                       <widget class="GtkSpinButton" id="pos_y_spin">
                          <property name="visible">True</property>
-                         <property name="label" translatable="yes">inches</property>
-                         <property name="use_underline">False</property>
-                         <property name="use_markup">False</property>
-                         <property name="justify">GTK_JUSTIFY_LEFT</property>
+                         <property name="can_focus">True</property>
+                         <property name="climb_rate">0.01</property>
+                         <property name="digits">2</property>
+                         <property name="numeric">True</property>
+                         <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+                         <property name="snap_to_ticks">True</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="adjustment">0 0 100 0.01 10 10</property>
                        </widget>
                        <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">False</property>
+                         <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>
                    </widget>
                    <packing>
                      <property name="padding">0</property>
-                     <property name="expand">False</property>
-                     <property name="fill">False</property>
+                     <property name="expand">True</property>
+                     <property name="fill">True</property>
                    </packing>
                  </child>
                </widget>
index d91c46c2e3708176d67a1b7356680530678b814c..2e13c9fdcdaed60cfcdb73fc4d0ddd037ac25c62 100644 (file)
@@ -199,6 +199,11 @@ void        gl_object_editor_set_text_alignment   (glObjectEditor      *editor,
 
 GtkJustification gl_object_editor_get_text_alignment (glObjectEditor      *editor);
 
+void        gl_object_editor_set_text_line_spacing (glObjectEditor      *editor,
+                                                  gdouble              text_line_spacing);
+
+gdouble     gl_object_editor_get_text_line_spacing (glObjectEditor      *editor);
+
 void        gl_object_editor_set_text_color       (glObjectEditor      *editor,
                                                   guint                text_color);
 
index bff861b1e5756fd2cf449225be8532e66237ac65..8032463402a24e16a6a4a272d65f15dad398c418 100644 (file)
@@ -65,6 +65,7 @@ struct _glPrefsDialogPrivate
        GtkWidget       *text_left_toggle;
        GtkWidget       *text_center_toggle;
        GtkWidget       *text_right_toggle;
+       GtkWidget       *text_line_spacing_spin;
 
        /* Default line properties */
        GtkWidget       *line_width_spin;
@@ -341,6 +342,8 @@ construct_object_page (glPrefsDialog *dlg)
                glade_xml_get_widget (dlg->priv->gui, "text_center_toggle");
        dlg->priv->text_right_toggle =
                glade_xml_get_widget (dlg->priv->gui, "text_right_toggle");
+       dlg->priv->text_line_spacing_spin =
+               glade_xml_get_widget (dlg->priv->gui, "text_line_spacing_spin");
 
        dlg->priv->line_width_spin =
                glade_xml_get_widget (dlg->priv->gui, "line_width_spin");
@@ -391,6 +394,11 @@ construct_object_page (glPrefsDialog *dlg)
                          G_CALLBACK(align_toggle_cb),
                          G_OBJECT(dlg));
 
+       g_signal_connect_swapped (G_OBJECT(dlg->priv->text_line_spacing_spin),
+                                 "changed",
+                                 G_CALLBACK(update_prefs_from_object_page),
+                                 G_OBJECT(dlg));
+
        g_signal_connect_swapped (G_OBJECT(dlg->priv->line_width_spin),
                                  "changed",
                                  G_CALLBACK(update_prefs_from_object_page),
@@ -553,6 +561,9 @@ update_object_page_from_prefs (glPrefsDialog *dlg)
        g_signal_handlers_block_by_func (
                G_OBJECT(dlg->priv->text_right_toggle),
                G_CALLBACK(align_toggle_cb), G_OBJECT(dlg));
+       g_signal_handlers_block_by_func (
+               G_OBJECT(dlg->priv->text_line_spacing_spin),
+               G_CALLBACK(update_prefs_from_object_page), G_OBJECT(dlg));
        g_signal_handlers_block_by_func (
                G_OBJECT(dlg->priv->line_width_spin),
                G_CALLBACK(update_prefs_from_object_page), G_OBJECT(dlg));
@@ -601,6 +612,8 @@ update_object_page_from_prefs (glPrefsDialog *dlg)
         gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->text_right_toggle),
                                  (gl_prefs->default_text_alignment == GTK_JUSTIFY_RIGHT));
 
+        gtk_spin_button_set_value (GTK_SPIN_BUTTON (dlg->priv->text_line_spacing_spin),
+                                   gl_prefs->default_text_line_spacing);
 
         gtk_spin_button_set_value (GTK_SPIN_BUTTON (dlg->priv->line_width_spin),
                                    gl_prefs->default_line_width);
@@ -639,6 +652,9 @@ update_object_page_from_prefs (glPrefsDialog *dlg)
        g_signal_handlers_unblock_by_func (
                G_OBJECT(dlg->priv->text_right_toggle),
                G_CALLBACK(align_toggle_cb), G_OBJECT(dlg));
+       g_signal_handlers_unblock_by_func (
+               G_OBJECT(dlg->priv->text_line_spacing_spin),
+               G_CALLBACK(update_prefs_from_object_page), G_OBJECT(dlg));
        g_signal_handlers_unblock_by_func (
                G_OBJECT(dlg->priv->line_width_spin),
                G_CALLBACK(update_prefs_from_object_page), G_OBJECT(dlg));
@@ -732,6 +748,9 @@ update_prefs_from_object_page (glPrefsDialog *dlg)
         }
                                                                                 
 
+        gl_prefs->default_text_line_spacing =
+                gtk_spin_button_get_value (GTK_SPIN_BUTTON(dlg->priv->text_line_spacing_spin));
+
         gl_prefs->default_line_width =
                 gtk_spin_button_get_value (GTK_SPIN_BUTTON(dlg->priv->line_width_spin));
 
index e82ca02f881c3171531f10be945bc5e1a623d967..10d32ea755b210444771469d98a5f1cb29842751 100644 (file)
                      </child>
 
                      <child>
-                       <widget class="GtkVBox" id="vbox5">
-                         <property name="border_width">6</property>
+                       <widget class="GtkTable" id="table1">
                          <property name="visible">True</property>
+                         <property name="n_rows">4</property>
+                         <property name="n_columns">2</property>
                          <property name="homogeneous">False</property>
-                         <property name="spacing">12</property>
+                         <property name="row_spacing">12</property>
+                         <property name="column_spacing">12</property>
+
+                         <child>
+                           <widget class="GtkLabel" id="label15">
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">Font:</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>
+                           <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="label16">
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">Color:</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>
+                           <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>
+                           <widget class="GtkLabel" id="label17">
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">Alignment:</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>
+                           <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="GtkLabel" id="label22">
+                             <property name="width_request">90</property>
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">Line Spacing:</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>
+                           <packing>
+                             <property name="left_attach">0</property>
+                             <property name="right_attach">1</property>
+                             <property name="top_attach">3</property>
+                             <property name="bottom_attach">4</property>
+                             <property name="x_options">fill</property>
+                             <property name="y_options"></property>
+                           </packing>
+                         </child>
 
                          <child>
                            <widget class="GtkHBox" id="hbox6">
                              <property name="homogeneous">False</property>
                              <property name="spacing">12</property>
 
-                             <child>
-                               <widget class="GtkLabel" id="label15">
-                                 <property name="width_request">64</property>
-                                 <property name="visible">True</property>
-                                 <property name="label" translatable="yes">Font:</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>
-                               <packing>
-                                 <property name="padding">0</property>
-                                 <property name="expand">False</property>
-                                 <property name="fill">False</property>
-                               </packing>
-                             </child>
-
                              <child>
                                <widget class="GtkCombo" id="text_family_combo">
                                  <property name="visible">True</property>
                              </child>
                            </widget>
                            <packing>
-                             <property name="padding">0</property>
-                             <property name="expand">True</property>
-                             <property name="fill">True</property>
+                             <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="y_options">fill</property>
                            </packing>
                          </child>
 
                              <property name="homogeneous">False</property>
                              <property name="spacing">12</property>
 
-                             <child>
-                               <widget class="GtkLabel" id="label16">
-                                 <property name="width_request">64</property>
-                                 <property name="visible">True</property>
-                                 <property name="label" translatable="yes">Color:</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>
-                               <packing>
-                                 <property name="padding">0</property>
-                                 <property name="expand">False</property>
-                                 <property name="fill">False</property>
-                               </packing>
-                             </child>
-
                              <child>
                                <widget class="Custom" id="text_color_combo">
                                  <property name="visible">True</property>
                              </child>
                            </widget>
                            <packing>
-                             <property name="padding">0</property>
-                             <property name="expand">True</property>
-                             <property name="fill">True</property>
+                             <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">fill</property>
+                             <property name="y_options">fill</property>
                            </packing>
                          </child>
 
                              <property name="homogeneous">False</property>
                              <property name="spacing">12</property>
 
-                             <child>
-                               <widget class="GtkLabel" id="label17">
-                                 <property name="width_request">64</property>
-                                 <property name="visible">True</property>
-                                 <property name="label" translatable="yes">Alignment:</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>
-                               <packing>
-                                 <property name="padding">0</property>
-                                 <property name="expand">False</property>
-                                 <property name="fill">False</property>
-                               </packing>
-                             </child>
-
                              <child>
                                <widget class="GtkToggleButton" id="text_left_toggle">
                                  <property name="visible">True</property>
                              </child>
                            </widget>
                            <packing>
-                             <property name="padding">0</property>
-                             <property name="expand">True</property>
-                             <property name="fill">True</property>
+                             <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>
+
+                         <child>
+                           <widget class="GtkHBox" id="hbox12">
+                             <property name="visible">True</property>
+                             <property name="homogeneous">False</property>
+                             <property name="spacing">40</property>
+
+                             <child>
+                               <widget class="GtkSpinButton" id="text_line_spacing_spin">
+                                 <property name="visible">True</property>
+                                 <property name="can_focus">True</property>
+                                 <property name="climb_rate">0.01</property>
+                                 <property name="digits">2</property>
+                                 <property name="numeric">False</property>
+                                 <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+                                 <property name="snap_to_ticks">False</property>
+                                 <property name="wrap">False</property>
+                                 <property name="adjustment">1 0 5 0.01 0.1 0.1</property>
+                               </widget>
+                               <packing>
+                                 <property name="padding">0</property>
+                                 <property name="expand">False</property>
+                                 <property name="fill">False</property>
+                               </packing>
+                             </child>
+                           </widget>
+                           <packing>
+                             <property name="left_attach">1</property>
+                             <property name="right_attach">2</property>
+                             <property name="top_attach">3</property>
+                             <property name="bottom_attach">4</property>
+                             <property name="x_options">fill</property>
+                             <property name="y_options">fill</property>
                            </packing>
                          </child>
                        </widget>
                      </child>
 
                      <child>
-                       <widget class="GtkVBox" id="vbox6">
-                         <property name="border_width">6</property>
+                       <widget class="GtkTable" id="table2">
                          <property name="visible">True</property>
+                         <property name="n_rows">2</property>
+                         <property name="n_columns">2</property>
                          <property name="homogeneous">False</property>
-                         <property name="spacing">12</property>
+                         <property name="row_spacing">12</property>
+                         <property name="column_spacing">12</property>
+
+                         <child>
+                           <widget class="GtkLabel" id="label18">
+                             <property name="width_request">90</property>
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">Width:</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>
+                           <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="label19">
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">Color:</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>
+                           <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>
                            <widget class="GtkHBox" id="hbox9">
                              <property name="homogeneous">False</property>
                              <property name="spacing">12</property>
 
-                             <child>
-                               <widget class="GtkLabel" id="label18">
-                                 <property name="width_request">64</property>
-                                 <property name="visible">True</property>
-                                 <property name="label" translatable="yes">Width:</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>
-                               <packing>
-                                 <property name="padding">0</property>
-                                 <property name="expand">False</property>
-                                 <property name="fill">False</property>
-                               </packing>
-                             </child>
-
                              <child>
                                <widget class="GtkSpinButton" id="line_width_spin">
                                  <property name="visible">True</property>
                                  <property name="can_focus">True</property>
-                                 <property name="climb_rate">0.25</property>
+                                 <property name="climb_rate">0.01</property>
                                  <property name="digits">2</property>
                                  <property name="numeric">True</property>
                                  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
                              </child>
                            </widget>
                            <packing>
-                             <property name="padding">0</property>
-                             <property name="expand">True</property>
-                             <property name="fill">True</property>
+                             <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="y_options">fill</property>
                            </packing>
                          </child>
 
                              <property name="homogeneous">False</property>
                              <property name="spacing">12</property>
 
-                             <child>
-                               <widget class="GtkLabel" id="label19">
-                                 <property name="width_request">64</property>
-                                 <property name="visible">True</property>
-                                 <property name="label" translatable="yes">Color:</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>
-                               <packing>
-                                 <property name="padding">0</property>
-                                 <property name="expand">False</property>
-                                 <property name="fill">False</property>
-                               </packing>
-                             </child>
-
                              <child>
                                <widget class="Custom" id="line_color_combo">
                                  <property name="visible">True</property>
                              </child>
                            </widget>
                            <packing>
-                             <property name="padding">0</property>
-                             <property name="expand">True</property>
-                             <property name="fill">True</property>
+                             <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">fill</property>
+                             <property name="y_options">fill</property>
                            </packing>
                          </child>
                        </widget>
                          <property name="spacing">12</property>
 
                          <child>
-                           <widget class="GtkHBox" id="hbox11">
+                           <widget class="GtkTable" id="table3">
                              <property name="visible">True</property>
+                             <property name="n_rows">1</property>
+                             <property name="n_columns">2</property>
                              <property name="homogeneous">False</property>
-                             <property name="spacing">12</property>
+                             <property name="row_spacing">0</property>
+                             <property name="column_spacing">0</property>
 
                              <child>
                                <widget class="GtkLabel" id="label20">
-                                 <property name="width_request">64</property>
+                                 <property name="width_request">90</property>
                                  <property name="visible">True</property>
                                  <property name="label" translatable="yes">Color:</property>
                                  <property name="use_underline">False</property>
                                  <property name="ypad">0</property>
                                </widget>
                                <packing>
-                                 <property name="padding">0</property>
-                                 <property name="expand">False</property>
-                                 <property name="fill">False</property>
+                                 <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="Custom" id="fill_color_combo">
+                               <widget class="GtkHBox" id="hbox11">
                                  <property name="visible">True</property>
-                                 <property name="creation_function">gl_object_editor_construct_color_combo</property>
-                                 <property name="int1">0</property>
-                                 <property name="int2">0</property>
-                                 <property name="last_modification_time">Sun, 23 Nov 2003 15:43:12 GMT</property>
+                                 <property name="homogeneous">False</property>
+                                 <property name="spacing">12</property>
+
+                                 <child>
+                                   <widget class="Custom" id="fill_color_combo">
+                                     <property name="visible">True</property>
+                                     <property name="creation_function">gl_object_editor_construct_color_combo</property>
+                                     <property name="int1">0</property>
+                                     <property name="int2">0</property>
+                                     <property name="last_modification_time">Sun, 23 Nov 2003 15:43:12 GMT</property>
+                                   </widget>
+                                   <packing>
+                                     <property name="padding">0</property>
+                                     <property name="expand">False</property>
+                                     <property name="fill">False</property>
+                                   </packing>
+                                 </child>
                                </widget>
                                <packing>
-                                 <property name="padding">0</property>
-                                 <property name="expand">False</property>
-                                 <property name="fill">False</property>
+                                 <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="y_options">fill</property>
                                </packing>
                              </child>
                            </widget>
index ab285780aee196d896fc6d211cb88aafa8254584..0ec867ae278c65c4b60444bd982544ab46ae7410 100644 (file)
@@ -46,6 +46,7 @@
 #define PREF_DEFAULT_FONT_ITALIC_FLAG       "/default-font-italic-flag"
 #define PREF_DEFAULT_TEXT_COLOR             "/default-text-color"
 #define PREF_DEFAULT_TEXT_ALIGNMENT         "/default-text-alignment"
+#define PREF_DEFAULT_TEXT_LINE_SPACING      "/default-text-line-spacing"
 
 #define PREF_DEFAULT_LINE_WIDTH             "/default-line-width"
 #define PREF_DEFAULT_LINE_COLOR             "/default-line-color"
@@ -78,6 +79,7 @@
 #define DEFAULT_FONT_ITALIC_FLAG   FALSE
 #define DEFAULT_TEXT_JUST_STRING   gl_util_just_to_string (GTK_JUSTIFY_LEFT)
 #define DEFAULT_TEXT_COLOR         GNOME_CANVAS_COLOR (0,0,0)
+#define DEFAULT_TEXT_LINE_SPACING  1.0
 
 #define DEFAULT_LINE_WIDTH         1.0
 #define DEFAULT_LINE_COLOR         GNOME_CANVAS_COLOR_A (0, 0, 0, 255)
@@ -300,6 +302,10 @@ gl_prefs_model_save_settings (glPrefsModel *prefs_model)
                                 gl_util_just_to_string(prefs_model->default_text_alignment),
                                 NULL);
 
+       gconf_client_set_float  (prefs_model->gconf_client,
+                                BASE_KEY PREF_DEFAULT_TEXT_LINE_SPACING,
+                                prefs_model->default_text_line_spacing,
+                                NULL);
 
        /* Line properties */
        gconf_client_set_float  (prefs_model->gconf_client,
@@ -445,6 +451,12 @@ gl_prefs_model_load_settings (glPrefsModel *prefs_model)
        prefs_model->default_text_alignment = gl_util_string_to_just( string );
        g_free( string );
 
+       prefs_model->default_text_line_spacing =
+               get_float (prefs_model->gconf_client,
+                          BASE_KEY PREF_DEFAULT_TEXT_LINE_SPACING,
+                          DEFAULT_TEXT_LINE_SPACING);
+
+       gl_debug (DEBUG_PREFS, "text_line_spacing = %f", prefs_model->default_text_line_spacing);
 
        /* Line properties */
        prefs_model->default_line_width =
@@ -661,7 +673,6 @@ get_float (GConfClient *client,
                return retval;
 
        } else {
-
                return def;
 
        }
index 8d94ba799df47241e99e243ac74e61fcdc927695..f73ad7e4cd509953a86d898bacdaa50a9cc74f68 100644 (file)
@@ -73,6 +73,7 @@ struct _glPrefsModel {
        gboolean          default_font_italic_flag;
        guint             default_text_color;
        GtkJustification  default_text_alignment;
+       gdouble           default_text_line_spacing;
        
        /* Line properties */
        gdouble           default_line_width;
index ea11e0d48c2ba6237e69b597760972fca667bb17..6a4a73b6c1316bc29308c6043d2c9019a1fb519d 100644 (file)
@@ -726,6 +726,7 @@ draw_text_object (PrintInfo     *pi,
        GnomeGlyphList *glyphlist;
        ArtDRect bbox;
        gdouble affine[6];
+       gdouble text_line_spacing;
 
 
        gl_debug (DEBUG_PRINT, "START");
@@ -738,6 +739,7 @@ draw_text_object (PrintInfo     *pi,
        font_italic_flag = gl_label_object_get_font_italic_flag (GL_LABEL_OBJECT(object));
        color = gl_label_object_get_text_color (GL_LABEL_OBJECT(object));
        just = gl_label_object_get_text_alignment (GL_LABEL_OBJECT(object));
+       text_line_spacing = gl_label_object_get_text_line_spacing (GL_LABEL_OBJECT(object));
 
        font = gnome_font_find_closest_from_weight_slant (
                                        font_family,
@@ -782,8 +784,14 @@ draw_text_object (PrintInfo     *pi,
                        break;  /* shouldn't happen */
                }
 
-               y_offset = GL_LABEL_TEXT_MARGIN + (i + 1) * font_size
-                       + gnome_font_get_descender (font);
+               /* Work out the y position to the BOTTOM of the first line */
+               y_offset = GL_LABEL_TEXT_MARGIN +
+                          + gnome_font_get_descender (font)
+                          + (i + 1) * font_size * text_line_spacing;
+
+               /* Remove any text line spacing from the first row. */
+               y_offset -= font_size * (text_line_spacing - 1);
+
 
                gnome_print_moveto (pi->pc, x_offset, y_offset);
 
index 0b23703616eaee739949864dadf64aa3b10fe960..6f9ca793ad3c42bab293c37a0e0fb4ac086a3860 100644 (file)
@@ -35,7 +35,7 @@
 /* Private macros and constants.                                              */
 /*============================================================================*/
 
-#define DEFAULT_SIDEBAR_WIDTH 300
+#define DEFAULT_SIDEBAR_WIDTH 320
 
 /*============================================================================*/
 /* Private globals                                                            */
index 01f268ecb7d9f20f131249f5f92f9f6c271d4977..0727399be452c59b159efdec8824dc42dbdc6477 100644 (file)
@@ -305,6 +305,7 @@ update_object_from_editor_cb (glObjectEditor *editor,
        gboolean           font_italic_flag;
        guint              color;
        GtkJustification   just;
+       gdouble            text_line_spacing;
 
        gl_debug (DEBUG_VIEW, "START");
 
@@ -315,7 +316,6 @@ update_object_from_editor_cb (glObjectEditor *editor,
                                         update_editor_from_move_cb,
                                         editor);
 
-
        gl_object_editor_get_position (editor, &x, &y);
        gl_object_editor_get_size (editor, &w, &h);
        font_family = gl_object_editor_get_font_family (editor);
@@ -324,6 +324,7 @@ update_object_from_editor_cb (glObjectEditor *editor,
        font_italic_flag = gl_object_editor_get_font_italic_flag (editor);
        color = gl_object_editor_get_text_color (editor);
        just = gl_object_editor_get_text_alignment (editor);
+       text_line_spacing = (gdouble) gl_object_editor_get_text_line_spacing (editor);
 
        gl_label_object_set_position (object, x, y);
        gl_label_object_set_size (object, w, h);
@@ -333,6 +334,7 @@ update_object_from_editor_cb (glObjectEditor *editor,
        gl_label_object_set_font_italic_flag (object, font_italic_flag);
        gl_label_object_set_text_color (object, color);
        gl_label_object_set_text_alignment (object, just);
+       gl_label_object_set_text_line_spacing (object, text_line_spacing);
 
        g_free (font_family);
 
@@ -360,6 +362,7 @@ update_editor_from_object_cb (glLabelObject  *object,
        gboolean           font_italic_flag;
        guint              color;
        GtkJustification   just;
+       gdouble            text_line_spacing;
 
        gl_debug (DEBUG_VIEW, "START");
 
@@ -372,6 +375,7 @@ update_editor_from_object_cb (glLabelObject  *object,
        font_italic_flag = gl_label_object_get_font_italic_flag (object);
        color            = gl_label_object_get_text_color (object);
        just             = gl_label_object_get_text_alignment (object);
+       text_line_spacing = gl_label_object_get_text_line_spacing (object);
 
        gl_object_editor_set_font_family (editor, font_family);
        gl_object_editor_set_font_size (editor, font_size);
@@ -379,6 +383,7 @@ update_editor_from_object_cb (glLabelObject  *object,
        gl_object_editor_set_font_italic_flag (editor, font_italic_flag);
        gl_object_editor_set_text_color (editor, color);
        gl_object_editor_set_text_alignment (editor, just);
+       gl_object_editor_set_text_line_spacing (editor, text_line_spacing);
 
        g_free (font_family);
 
@@ -509,6 +514,8 @@ gl_view_text_create_event_handler (GnomeCanvas *canvas,
                                                        gl_color_set_opacity (gl_view_get_default_text_color (view), 0.5));
                        gl_label_object_set_text_alignment (GL_LABEL_OBJECT(object),
                                                            gl_view_get_default_text_alignment (view));
+                       gl_label_object_set_text_line_spacing (GL_LABEL_OBJECT(object), gl_view_get_default_text_line_spacing (view));
+                                                      
                        g_free (family);
                        lines = gl_text_node_lines_new_from_text (_("Text"));
                        gl_label_text_set_lines (GL_LABEL_TEXT(object), lines);
@@ -545,6 +552,8 @@ gl_view_text_create_event_handler (GnomeCanvas *canvas,
                                                        gl_view_get_default_text_color (view));
                        gl_label_object_set_text_alignment (GL_LABEL_OBJECT(object),
                                                            gl_view_get_default_text_alignment (view));
+                       gl_label_object_set_text_line_spacing (GL_LABEL_OBJECT(object), gl_view_get_default_text_line_spacing (view));
+
                        g_free (family);
                        gl_view_unselect_all (view);
                        gl_view_object_select (GL_VIEW_OBJECT(view_text));
@@ -589,6 +598,7 @@ draw_hacktext (glViewText *view_text)
        GnomeFontWeight    font_weight;
        gboolean           font_italic_flag;
        gdouble            font_size;
+       gdouble            text_line_spacing;
        guint              color;
        GtkJustification   just;
        GnomeFont         *font;
@@ -607,6 +617,7 @@ draw_hacktext (glViewText *view_text)
        gl_label_object_get_size (object, &object_w, &object_h);
        font_family = gl_label_object_get_font_family (object);
        font_size = gl_label_object_get_font_size (object);
+       text_line_spacing = gl_label_object_get_text_line_spacing (object);
        font_weight = gl_label_object_get_font_weight (object);
        font_italic_flag = gl_label_object_get_font_italic_flag (object);
        color = gl_label_object_get_text_color (object);
@@ -658,8 +669,13 @@ draw_hacktext (glViewText *view_text)
                        break;  /* shouldn't happen */
                }
 
+               /* Work out the y position to the BOTTOM of the first line */
                y_offset = GL_LABEL_TEXT_MARGIN +
-                       (i + 1) * font_size + gnome_font_get_descender (font);
+                          + gnome_font_get_descender (font)
+                          + (i + 1) * font_size * text_line_spacing;
+
+               /* Remove any text line spacing from the first row. */
+               y_offset -= font_size * (text_line_spacing - 1);
 
                item = gl_view_object_item_new (GL_VIEW_OBJECT(view_text),
                                                gl_canvas_hacktext_get_type (),
index c703a648d5b0094d56c0f0212fc8b17d3a822597..5fd87105dccf50c406f646b02e5a0b066c897c1c 100644 (file)
@@ -394,6 +394,7 @@ gl_view_construct (glView *view)
        gl_view_set_default_font_italic_flag (view, gl_prefs->default_font_italic_flag);
        gl_view_set_default_text_color       (view, gl_prefs->default_text_color);
        gl_view_set_default_text_alignment   (view, gl_prefs->default_text_alignment);
+       gl_view_set_default_text_line_spacing (view, gl_prefs->default_text_line_spacing);
        gl_view_set_default_line_width       (view, gl_prefs->default_line_width);
        gl_view_set_default_line_color       (view, gl_prefs->default_line_color);
        gl_view_set_default_fill_color       (view, gl_prefs->default_fill_color);
@@ -2747,6 +2748,29 @@ gl_view_set_selection_text_alignment (glView            *view,
        gl_debug (DEBUG_VIEW, "END");
 }
 
+/*****************************************************************************/
+/* Set text line spacing for all text contained in selected objects.         */
+/*****************************************************************************/
+void
+gl_view_set_selection_text_line_spacing (glView            *view,
+                                        gdouble            text_line_spacing)
+{
+       GList *p;
+       glLabelObject *object;
+
+       gl_debug (DEBUG_VIEW, "START");
+
+       g_return_if_fail (view && GL_IS_VIEW (view));
+
+       for (p = view->selected_object_list; p != NULL; p = p->next) {
+
+               object = gl_view_object_get_object(GL_VIEW_OBJECT (p->data));
+               gl_label_object_set_text_line_spacing (object, text_line_spacing);
+
+       }
+
+       gl_debug (DEBUG_VIEW, "END");
+}
 /*****************************************************************************/
 /* Set text color for all text contained in selected objects.                */
 /*****************************************************************************/
@@ -3986,6 +4010,22 @@ gl_view_set_default_text_alignment (glView            *view,
        gl_debug (DEBUG_VIEW, "END");
 }
 
+/****************************************************************************/
+/* Set default text line spacing.                                           */
+/****************************************************************************/
+void
+gl_view_set_default_text_line_spacing (glView            *view,
+                                      gdouble            text_line_spacing)
+{
+       gl_debug (DEBUG_VIEW, "START");
+
+       g_return_if_fail (view && GL_IS_VIEW (view));
+
+       view->default_text_line_spacing = text_line_spacing;
+
+       gl_debug (DEBUG_VIEW, "END");
+}
+
 
 /****************************************************************************/
 /* Set default line width.                                                  */
@@ -4134,6 +4174,22 @@ gl_view_get_default_text_alignment (glView            *view)
        return view->default_text_alignment;
 }
 
+/****************************************************************************/
+/* Get default text line spacing.                                           */
+/****************************************************************************/
+gdouble
+gl_view_get_default_text_line_spacing (glView            *view)
+{
+       gl_debug (DEBUG_VIEW, "START");
+
+       g_return_val_if_fail (view && GL_IS_VIEW (view), 1.0);
+
+       gl_debug (DEBUG_VIEW, "END");
+
+       return view->default_text_line_spacing;
+}
+
+
 
 /****************************************************************************/
 /* Get default line width.                                                  */
index 338cf93f244a0065bc0043d46f54e2c55d6c5652..f086bc2406a2ce561b105a607c23683a782d8f3d 100644 (file)
@@ -94,6 +94,7 @@ struct _glView {
        gboolean           default_font_italic_flag;
        guint              default_text_color;
        GtkJustification   default_text_alignment;
+       gdouble            default_text_line_spacing;
 
        /* Default object line properties */
        gdouble            default_line_width;
@@ -221,6 +222,9 @@ void       gl_view_set_selection_font_size        (glView           *view,
 void       gl_view_set_selection_font_weight      (glView           *view,
                                                   GnomeFontWeight   font_weight);
 
+void       gl_view_set_selection_text_line_spacing (glView           *view,
+                                                  gdouble           text_line_spacing);
+
 void       gl_view_set_selection_font_italic_flag (glView           *view,
                                                   gboolean          font_italic_flag);
 
@@ -301,6 +305,9 @@ void       gl_view_set_default_line_color       (glView            *view,
 
 void       gl_view_set_default_fill_color       (glView            *view,
                                                 guint              fill_color);
+void       gl_view_set_default_text_line_spacing (glView            *view,
+                                                gdouble            text_line_spacing);
+
 
 
 gchar           *gl_view_get_default_font_family      (glView            *view);
@@ -315,6 +322,8 @@ guint            gl_view_get_default_text_color       (glView            *view);
 
 GtkJustification gl_view_get_default_text_alignment   (glView            *view);
 
+gdouble          gl_view_get_default_text_line_spacing (glView            *view);
+
 gdouble          gl_view_get_default_line_width       (glView            *view);
 
 guint            gl_view_get_default_line_color       (glView            *view);
index f22827606c6276798b6642e9fac28368b8f120c6..8a97ca687f8169351a838a88ab535722be499deb 100644 (file)
@@ -845,6 +845,7 @@ xml_parse_toplevel_span  (xmlNodePtr        node,
        GnomeFontWeight   font_weight;
        gboolean          font_italic_flag;
        guint             color;
+       gdouble           text_line_spacing;
        gchar            *string;
        GList            *lines, *text_nodes;
        xmlNodePtr        child;
@@ -875,6 +876,10 @@ xml_parse_toplevel_span  (xmlNodePtr        node,
        color = gl_xml_get_prop_uint (node, "color", 0);
        gl_label_object_set_text_color (object, color);
 
+       /* Text line spacing attr  */
+       text_line_spacing = gl_xml_get_prop_double (node, "line_spacing", 1.0);
+       gl_label_object_set_text_line_spacing (object, text_line_spacing); 
+
        /* Now descend children, and build lines of text nodes */
        lines = NULL;
        text_nodes = NULL;
@@ -1508,6 +1513,7 @@ xml_create_toplevel_span (xmlNodePtr        root,
        gboolean          font_italic_flag;
        guint             color;
        GtkJustification  just;
+       gdouble           text_line_spacing;
        GList            *lines, *p_line, *p_node;
        glTextNode       *text_node;
        xmlNodePtr        child;
@@ -1517,6 +1523,7 @@ xml_create_toplevel_span (xmlNodePtr        root,
        /* All span attrs at top level. */
        font_family = gl_label_object_get_font_family (GL_LABEL_OBJECT(object_text));
        font_size = gl_label_object_get_font_size (GL_LABEL_OBJECT(object_text));
+       text_line_spacing = gl_label_object_get_text_line_spacing (GL_LABEL_OBJECT(object_text));
        font_weight = gl_label_object_get_font_weight (GL_LABEL_OBJECT(object_text));
        font_italic_flag = gl_label_object_get_font_italic_flag (GL_LABEL_OBJECT(object_text));
        color = gl_label_object_get_text_color (GL_LABEL_OBJECT(object_text));
@@ -1526,6 +1533,7 @@ xml_create_toplevel_span (xmlNodePtr        root,
        xmlSetProp (node, "font_weight", gl_util_weight_to_string (font_weight));
        gl_xml_set_prop_boolean (node, "font_italic", font_italic_flag);
        gl_xml_set_prop_uint_hex (node, "color", color);
+       gl_xml_set_prop_double (node, "line_spacing", text_line_spacing);
 
        /* Build children. */
        lines = gl_label_text_get_lines (GL_LABEL_TEXT(object_text));