[goffice] Start working on manually sized labels, and fixed style properties widget.



commit ca405b697351711725570baeed8a5d7042547a8c
Author: Jean Brefort <jean brefort normalesup org>
Date:   Fri Oct 28 12:06:51 2011 +0200

    Start working on manually sized labels, and fixed style properties widget.

 ChangeLog                         |   22 +
 goffice/graph/goffice-graph.h     |    8 +-
 goffice/graph/gog-chart.c         |    8 +-
 goffice/graph/gog-label.c         |   54 ++-
 goffice/graph/gog-label.h         |    1 +
 goffice/graph/gog-object-prefs.ui |  373 ++++++----
 goffice/graph/gog-object.c        |   64 ++-
 goffice/graph/gog-object.h        |   10 +-
 goffice/graph/gog-view.c          |    9 +-
 goffice/utils/go-style-prefs.ui   | 1452 ++++++++++++++++++-------------------
 goffice/utils/go-style.c          |   54 +-
 11 files changed, 1111 insertions(+), 944 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 22dbdfe..a0c8c03 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,27 @@
 2011-10-28  Jean Brefort  <jean brefort normalesup org>
 
+	* goffice/graph/goffice-graph.h: some work on manual labels size.
+	* goffice/graph/gog-chart.c (gog_chart_get_manual_size_mode),
+	(gog_chart_class_init): ditto.
+	* goffice/graph/gog-label.c (gog_text_set_property),
+	(gog_text_get_property), (gog_text_get_manual_size_mode),
+	(gog_text_class_init), (wrap_cb), (gog_label_populate_editor):
+	* goffice/graph/gog-label.h: ditto.
+	* goffice/graph/gog-object-prefs.ui: ditto.
+	* goffice/graph/gog-object.c (cb_manual_size_changed),
+	(gog_object_populate_editor), (gog_object_class_init),
+	(gog_object_get_manual_allocation), (gog_object_document_changed),
+	(gog_object_get_manual_size_mode):
+	* goffice/graph/gog-object.h: ditto.
+	* goffice/graph/gog-view.c (gog_tool_resize_object_point),
+	(gog_tool_resize_object_render): ditto.
+	* goffice/utils/go-style-prefs.ui: redesigned the style prefs widget.
+	* goffice/utils/go-style.c (go_style_set_image_preview),
+	(outline_init), (line_init), (fill_image_init),
+	(fill_update_visibilies), (fill_init), (go_style_populate_editor): ditto.
+
+2011-10-28  Jean Brefort  <jean brefort normalesup org>
+
 	* goffice/canvas/goc-canvas.c (goc_canvas_get_bounds): fixed arguments type.
 	* goffice/canvas/goc-canvas.h: ditto.
 	* goffice/canvas/goc-pixbuf.c (goc_pixbuf_draw): cleaned.
diff --git a/goffice/graph/goffice-graph.h b/goffice/graph/goffice-graph.h
index f4e6e7a..aa99e40 100644
--- a/goffice/graph/goffice-graph.h
+++ b/goffice/graph/goffice-graph.h
@@ -192,7 +192,13 @@ typedef enum {
 
 	GOG_POSITION_ANY_MANUAL      = 0xff80,
 
-	GOG_POSITION_PADDING	     = 1 << 16
+	GOG_POSITION_PADDING	     = 1 << 16,
+
+	GOG_POSITION_MANUAL_W        = 1 << 21, /* relative width */
+	GOG_POSITION_MANUAL_W_ABS    = 1 << 22, /* absolute width */
+	GOG_POSITION_MANUAL_H        = 1 << 23, /* relative height */
+	GOG_POSITION_MANUAL_H_ABS    = 1 << 24, /* absolute height */
+	GOG_POSITION_ANY_MANUAL_SIZE = 0xf00000
 } GogObjectPosition;
 
 typedef enum {
diff --git a/goffice/graph/gog-chart.c b/goffice/graph/gog-chart.c
index 0e6bd7e..b56aaaf 100644
--- a/goffice/graph/gog-chart.c
+++ b/goffice/graph/gog-chart.c
@@ -653,6 +653,12 @@ static GogObjectRole const roles[] = {
 	  role_3d_box_can_add, role_3d_box_can_remove, NULL, NULL, NULL, NULL, { -1 } }
 };
 
+static GogManualSizeMode
+gog_chart_get_manual_size_mode (GogObject *gobj)
+{
+	return GOG_MANUAL_SIZE_FULL;
+}
+
 static void
 gog_chart_class_init (GogObjectClass *gog_klass)
 {
@@ -669,7 +675,7 @@ gog_chart_class_init (GogObjectClass *gog_klass)
 	gog_klass->populate_editor = NULL;
 #endif
 
-	gog_klass->can_manual_size = TRUE;
+	gog_klass->get_manual_size_mode = gog_chart_get_manual_size_mode;
 
 	g_object_class_install_property (gobject_klass, CHART_PROP_CARDINALITY_VALID,
 		g_param_spec_boolean ("cardinality-valid",
diff --git a/goffice/graph/gog-label.c b/goffice/graph/gog-label.c
index 45e958d..2e03a1a 100644
--- a/goffice/graph/gog-label.c
+++ b/goffice/graph/gog-label.c
@@ -40,7 +40,8 @@ enum {
 	TEXT_PROP_0,
 	TEXT_PROP_ALLOW_MARKUP,
 	TEXT_PROP_ROTATE_FRAME,
-	TEXT_PROP_ROTATE_BG
+	TEXT_PROP_ROTATE_BG,
+	TEXT_PROP_ALLOW_WRAP
 };
 
 static GObjectClass *text_parent_klass;
@@ -61,6 +62,9 @@ gog_text_set_property (GObject *obj, guint param_id,
 	case TEXT_PROP_ROTATE_BG:
 		text->rotate_bg = g_value_get_boolean (value);
 		break;
+	case TEXT_PROP_ALLOW_WRAP:
+		text->allow_wrap = g_value_get_boolean (value);
+		break;
 
 	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
 		 return; /* NOTE : RETURN */
@@ -84,6 +88,9 @@ gog_text_get_property (GObject *obj, guint param_id,
 	case TEXT_PROP_ROTATE_BG:
 		g_value_set_boolean (value, text->rotate_bg);
 		break;
+	case TEXT_PROP_ALLOW_WRAP:
+		g_value_set_boolean (value, text->allow_wrap);
+		break;
 
 	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
 		 break;
@@ -114,6 +121,12 @@ gog_text_init_style (GogStyledObject *gso, GOStyle *style)
 	}
 }
 
+static GogManualSizeMode
+gog_text_get_manual_size_mode (GogObject *gobj)
+{
+	return GOG_TEXT (gobj)->allow_wrap? GOG_MANUAL_SIZE_WIDTH: GOG_MANUAL_SIZE_AUTO;
+}
+
 static void
 gog_text_class_init (GogTextClass *klass)
 {
@@ -144,8 +157,15 @@ gog_text_class_init (GogTextClass *klass)
 			_("Whether the background should be rotated with the text"),
 			FALSE,
 			GSF_PARAM_STATIC | G_PARAM_READWRITE | GO_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, TEXT_PROP_ALLOW_WRAP,
+		g_param_spec_boolean ("allow-wrap",
+			_("Wrap the text"),
+			_("Whether the text might be displayed using several lines"),
+			FALSE,
+			GSF_PARAM_STATIC | G_PARAM_READWRITE | GO_PARAM_PERSISTENT));
 
 	gog_klass->view_type		= gog_text_view_get_type ();
+	gog_klass->get_manual_size_mode	= gog_text_get_manual_size_mode;
 	style_klass->init_style 	= gog_text_init_style;
 }
 
@@ -226,6 +246,12 @@ allow_markup_cb (GtkToggleButton *btn, GObject *obj)
 }
 
 static void
+wrap_cb (GtkToggleButton *btn, GObject *obj)
+{
+	g_object_set (obj, "allow-wrap", gtk_toggle_button_get_active (btn), NULL);
+}
+
+static void
 gog_label_populate_editor (GogObject *gobj,
 			   GOEditor *editor,
 			   GogDataAllocator *dalloc,
@@ -239,11 +265,19 @@ gog_label_populate_editor (GogObject *gobj,
 					    0, GOG_DATA_SCALAR));
 	GtkWidget *w;
 
-	g_object_set (G_OBJECT (grid),
-	              "margin", 12,
-	              "row-spacing", 12,
-	              "column-spacing", 6,
-	              NULL);
+	if (gtk_check_version (3, 2, 0)) /* Remove when we request 3.2.0 */
+		g_object_set (G_OBJECT (grid),
+			      "margin", 12,
+			      "row-spacing", 6,
+			      "column-spacing", 12,
+			      NULL);
+	else
+		g_object_set (G_OBJECT (grid),
+			      "margin", 12,
+			      "row-spacing", 12,
+			      "column-spacing", 6,
+			      NULL);
+
 	g_object_set (G_OBJECT (editor_widget), "hexpand", TRUE, NULL);
 
 	gtk_grid_attach (GTK_GRID (grid),
@@ -253,15 +287,19 @@ gog_label_populate_editor (GogObject *gobj,
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), GOG_TEXT (gobj)->rotate_frame);
 	g_signal_connect (w, "toggled", G_CALLBACK (rotate_frame_cb), gobj);
 	gtk_grid_attach (GTK_GRID (grid), w, 0, 1, 2, 1);
+	w = gtk_check_button_new_with_label (_("Display the text on several lines if needed"));
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), GOG_TEXT (gobj)->allow_wrap);
+	g_signal_connect (w, "toggled", G_CALLBACK (wrap_cb), gobj);
+	gtk_grid_attach (GTK_GRID (grid), w, 0, 2, 2, 1);
 	w = gtk_check_button_new_with_label (_("Rotate background with text"));
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), GOG_TEXT (gobj)->rotate_bg);
 	g_signal_connect (w, "toggled", G_CALLBACK (rotate_bg_cb), gobj);
-	gtk_grid_attach (GTK_GRID (grid), w, 0, 2, 2, 1);
+	gtk_grid_attach (GTK_GRID (grid), w, 0, 3, 2, 1);
 	w = gtk_check_button_new_with_label (_("Interpret text as markup"));
 	gtk_widget_set_tooltip_text (w, _("Interpret the text as an html like markup as described at http://developer.gnome.org/pango/stable/PangoMarkupFormat.html";));
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), GOG_TEXT (gobj)->allow_markup);
 	g_signal_connect (w, "toggled", G_CALLBACK (allow_markup_cb), gobj);
-	gtk_grid_attach (GTK_GRID (grid), w, 0, 3, 2, 1);
+	gtk_grid_attach (GTK_GRID (grid), w, 0, 4, 2, 1);
 	gtk_widget_show_all (grid);
 
 	go_editor_add_page (editor, grid, _("Details"));
diff --git a/goffice/graph/gog-label.h b/goffice/graph/gog-label.h
index 813e0f3..019351d 100644
--- a/goffice/graph/gog-label.h
+++ b/goffice/graph/gog-label.h
@@ -32,6 +32,7 @@ typedef struct {
 	gboolean	  allow_markup;
 	gboolean	  rotate_frame;
 	gboolean	  rotate_bg;
+	gboolean	  allow_wrap;
 } GogText;
 
 typedef struct {
diff --git a/goffice/graph/gog-object-prefs.ui b/goffice/graph/gog-object-prefs.ui
index c359eb0..81b5857 100644
--- a/goffice/graph/gog-object-prefs.ui
+++ b/goffice/graph/gog-object-prefs.ui
@@ -1,7 +1,6 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <!-- interface-requires gtk+ 3.0 -->
-  <!-- interface-naming-policy toplevel-contextual -->
   <object class="GtkAdjustment" id="adjustment1">
     <property name="lower">-10000</property>
     <property name="upper">10000</property>
@@ -24,32 +23,45 @@
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
-  <object class="GtkListStore" id="position-select-model">
+  <object class="GtkListStore" id="alignment-model">
     <columns>
       <!-- column-name gchararray -->
       <column type="gchararray"/>
     </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">Automatic</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Manual</col>
-      </row>
-    </data>
+  </object>
+  <object class="GtkListStore" id="anchor-model">
+    <columns>
+      <!-- column-name gchararray -->
+      <column type="gchararray"/>
+    </columns>
+  </object>
+  <object class="GtkAdjustment" id="col-adj">
+    <property name="upper">10000</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="col-span-adj">
+    <property name="lower">1</property>
+    <property name="upper">100</property>
+    <property name="value">1</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
   </object>
   <object class="GtkBox" id="gog_object_prefs">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <property name="border_width">12</property>
     <property name="orientation">vertical</property>
     <property name="spacing">6</property>
     <child>
       <object class="GtkBox" id="position_select_box">
         <property name="visible">True</property>
+        <property name="can_focus">False</property>
         <property name="spacing">12</property>
         <child>
           <object class="GtkLabel" id="label47">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <property name="label" translatable="yes">_Object position:</property>
             <property name="use_underline">True</property>
           </object>
@@ -62,6 +74,7 @@
         <child>
           <object class="GtkComboBox" id="position_select_combo">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <property name="model">position-select-model</property>
             <child>
               <object class="GtkCellRendererText" id="renderer1"/>
@@ -72,6 +85,7 @@
           </object>
           <packing>
             <property name="expand">False</property>
+            <property name="fill">True</property>
             <property name="position">1</property>
           </packing>
         </child>
@@ -85,20 +99,24 @@
     <child>
       <object class="GtkNotebook" id="position_notebook">
         <property name="visible">True</property>
+        <property name="can_focus">False</property>
         <property name="show_tabs">False</property>
         <property name="show_border">False</property>
         <child>
           <object class="GtkBox" id="vbox12">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <property name="orientation">vertical</property>
             <property name="spacing">6</property>
             <child>
               <object class="GtkBox" id="compass_position">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
                 <property name="spacing">12</property>
                 <child>
                   <object class="GtkLabel" id="position_label">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <property name="xalign">0</property>
                     <property name="label" translatable="yes">_Position:</property>
                     <property name="use_underline">True</property>
@@ -112,6 +130,7 @@
                 <child>
                   <object class="GtkComboBox" id="position_combo">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <property name="model">position-model</property>
                   </object>
                   <packing>
@@ -123,16 +142,19 @@
               </object>
               <packing>
                 <property name="expand">False</property>
+                <property name="fill">True</property>
                 <property name="position">0</property>
               </packing>
             </child>
             <child>
               <object class="GtkBox" id="compass_alignment">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
                 <property name="spacing">12</property>
                 <child>
                   <object class="GtkLabel" id="alignment_label">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <property name="xalign">0</property>
                     <property name="label" translatable="yes">_Alignment:</property>
                     <property name="use_underline">True</property>
@@ -146,6 +168,7 @@
                 <child>
                   <object class="GtkComboBox" id="alignment_combo">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <property name="model">alignment-model</property>
                   </object>
                   <packing>
@@ -157,6 +180,7 @@
               </object>
               <packing>
                 <property name="expand">False</property>
+                <property name="fill">True</property>
                 <property name="position">1</property>
               </packing>
             </child>
@@ -165,6 +189,7 @@
         <child type="tab">
           <object class="GtkLabel" id="label46">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <property name="label" translatable="yes">label46</property>
           </object>
           <packing>
@@ -174,11 +199,13 @@
         <child>
           <object class="GtkBox" id="vbox9">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <property name="orientation">vertical</property>
             <property name="spacing">6</property>
             <child>
               <object class="GtkTable" id="manual_positions">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
                 <property name="n_rows">3</property>
                 <property name="n_columns">3</property>
                 <property name="column_spacing">12</property>
@@ -186,6 +213,7 @@
                 <child>
                   <object class="GtkLabel" id="label37">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <property name="xalign">0</property>
                     <property name="label" translatable="yes">%</property>
                   </object>
@@ -199,6 +227,7 @@
                 <child>
                   <object class="GtkLabel" id="label38">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <property name="xalign">0</property>
                     <property name="label" translatable="yes">%</property>
                   </object>
@@ -214,6 +243,7 @@
                 <child>
                   <object class="GtkLabel" id="y_label">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <property name="xalign">0</property>
                     <property name="label" translatable="yes">_Y:</property>
                     <property name="use_underline">True</property>
@@ -230,7 +260,7 @@
                   <object class="GtkSpinButton" id="x_spin">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                    <property name="invisible_char">&#x2022;</property>
+                    <property name="invisible_char">â</property>
                     <property name="adjustment">adjustment1</property>
                     <property name="climb_rate">1</property>
                     <property name="digits">1</property>
@@ -247,7 +277,7 @@
                   <object class="GtkSpinButton" id="y_spin">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                    <property name="invisible_char">&#x2022;</property>
+                    <property name="invisible_char">â</property>
                     <property name="adjustment">adjustment2</property>
                     <property name="climb_rate">1</property>
                     <property name="digits">1</property>
@@ -265,6 +295,7 @@
                 <child>
                   <object class="GtkLabel" id="x_label">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <property name="xalign">0</property>
                     <property name="label" translatable="yes">_X:</property>
                     <property name="use_underline">True</property>
@@ -278,6 +309,7 @@
                 <child>
                   <object class="GtkLabel" id="anchor_label">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <property name="xalign">0</property>
                     <property name="label" translatable="yes">Anchor:</property>
                   </object>
@@ -291,6 +323,7 @@
                 <child>
                   <object class="GtkComboBox" id="anchor_combo">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
                     <property name="model">anchor-model</property>
                   </object>
                   <packing>
@@ -309,112 +342,6 @@
                 <property name="position">0</property>
               </packing>
             </child>
-            <child>
-              <object class="GtkTable" id="manual_sizes">
-                <property name="visible">True</property>
-                <property name="n_rows">2</property>
-                <property name="n_columns">3</property>
-                <property name="column_spacing">12</property>
-                <property name="row_spacing">6</property>
-                <child>
-                  <object class="GtkLabel" id="height_label">
-                    <property name="visible">True</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">_Height:</property>
-                    <property name="use_underline">True</property>
-                    <property name="mnemonic_widget">height_spin</property>
-                  </object>
-                  <packing>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkLabel" id="label39">
-                    <property name="visible">True</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">%</property>
-                  </object>
-                  <packing>
-                    <property name="left_attach">2</property>
-                    <property name="right_attach">3</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkLabel" id="label42">
-                    <property name="visible">True</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">%</property>
-                  </object>
-                  <packing>
-                    <property name="left_attach">2</property>
-                    <property name="right_attach">3</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkLabel" id="width_label">
-                    <property name="visible">True</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">_Width:</property>
-                    <property name="use_underline">True</property>
-                    <property name="mnemonic_widget">width_spin</property>
-                  </object>
-                  <packing>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkSpinButton" id="width_spin">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="invisible_char">&#x2022;</property>
-                    <property name="adjustment">adjustment3</property>
-                    <property name="climb_rate">1</property>
-                    <property name="digits">1</property>
-                    <property name="numeric">True</property>
-                  </object>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkSpinButton" id="height_spin">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="invisible_char">&#x2022;</property>
-                    <property name="adjustment">adjustment4</property>
-                    <property name="climb_rate">1</property>
-                    <property name="digits">1</property>
-                    <property name="numeric">True</property>
-                  </object>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
           </object>
           <packing>
             <property name="position">1</property>
@@ -423,6 +350,7 @@
         <child type="tab">
           <object class="GtkLabel" id="label45">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <property name="label" translatable="yes">label45</property>
           </object>
           <packing>
@@ -433,6 +361,7 @@
         <child>
           <object class="GtkTable" id="chart-table">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <property name="n_rows">2</property>
             <property name="n_columns">4</property>
             <property name="column_spacing">12</property>
@@ -440,6 +369,7 @@
             <child>
               <object class="GtkLabel" id="col-lbl">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
                 <property name="xalign">0</property>
                 <property name="label" translatable="yes">Column:</property>
               </object>
@@ -451,6 +381,7 @@
             <child>
               <object class="GtkLabel" id="row-lbl">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
                 <property name="xalign">0</property>
                 <property name="label" translatable="yes">Row:</property>
               </object>
@@ -464,6 +395,7 @@
             <child>
               <object class="GtkLabel" id="col-span-lbl">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
                 <property name="xalign">0</property>
                 <property name="xpad">12</property>
                 <property name="label" translatable="yes">Width in columns:</property>
@@ -478,6 +410,7 @@
             <child>
               <object class="GtkLabel" id="row-span-lbl">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
                 <property name="xalign">0</property>
                 <property name="xpad">12</property>
                 <property name="label" translatable="yes">Height in rows:</property>
@@ -495,7 +428,7 @@
               <object class="GtkSpinButton" id="xpos">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="invisible_char">&#x25CF;</property>
+                <property name="invisible_char">â</property>
                 <property name="adjustment">col-adj</property>
               </object>
               <packing>
@@ -509,7 +442,7 @@
               <object class="GtkSpinButton" id="ypos">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="invisible_char">&#x25CF;</property>
+                <property name="invisible_char">â</property>
                 <property name="adjustment">row-adj</property>
               </object>
               <packing>
@@ -525,7 +458,7 @@
               <object class="GtkSpinButton" id="columns">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="invisible_char">&#x25CF;</property>
+                <property name="invisible_char">â</property>
                 <property name="adjustment">col-span-adj</property>
               </object>
               <packing>
@@ -539,7 +472,7 @@
               <object class="GtkSpinButton" id="rows">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="invisible_char">&#x25CF;</property>
+                <property name="invisible_char">â</property>
                 <property name="adjustment">row-span-adj</property>
               </object>
               <packing>
@@ -560,6 +493,7 @@
         <child type="tab">
           <object class="GtkLabel" id="label1">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <property name="label" translatable="yes">page 3</property>
           </object>
           <packing>
@@ -569,15 +503,174 @@
         </child>
       </object>
       <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
         <property name="position">1</property>
       </packing>
     </child>
-  </object>
-  <object class="GtkListStore" id="alignment-model">
-    <columns>
-      <!-- column-name gchararray -->
-      <column type="gchararray"/>
-    </columns>
+    <child>
+      <object class="GtkSeparator" id="separator1">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">2</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkBox" id="size-select-box">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="spacing">12</property>
+        <child>
+          <object class="GtkLabel" id="obj-size-lbl">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">Object size:</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkComboBoxText" id="object-size-combo">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <items>
+              <item translatable="yes">Automatic</item>
+              <item translatable="yes">Manual</item>
+            </items>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">3</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkTable" id="manual_sizes">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="n_rows">2</property>
+        <property name="n_columns">3</property>
+        <property name="column_spacing">12</property>
+        <property name="row_spacing">6</property>
+        <child>
+          <object class="GtkLabel" id="height_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="xalign">0</property>
+            <property name="label" translatable="yes">_Height:</property>
+            <property name="use_underline">True</property>
+            <property name="mnemonic_widget">height_spin</property>
+          </object>
+          <packing>
+            <property name="top_attach">1</property>
+            <property name="bottom_attach">2</property>
+            <property name="x_options">GTK_FILL</property>
+            <property name="y_options"></property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="width-pc-lbl">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="xalign">0</property>
+            <property name="label" translatable="yes">%</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="right_attach">3</property>
+            <property name="x_options">GTK_FILL</property>
+            <property name="y_options"></property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="height-pc-lbl">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="xalign">0</property>
+            <property name="label" translatable="yes">%</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="right_attach">3</property>
+            <property name="top_attach">1</property>
+            <property name="bottom_attach">2</property>
+            <property name="x_options">GTK_FILL</property>
+            <property name="y_options"></property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="width_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="xalign">0</property>
+            <property name="label" translatable="yes">_Width:</property>
+            <property name="use_underline">True</property>
+            <property name="mnemonic_widget">width_spin</property>
+          </object>
+          <packing>
+            <property name="x_options">GTK_FILL</property>
+            <property name="y_options"></property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkSpinButton" id="width_spin">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="invisible_char">â</property>
+            <property name="invisible_char_set">True</property>
+            <property name="adjustment">adjustment3</property>
+            <property name="climb_rate">1</property>
+            <property name="digits">1</property>
+            <property name="numeric">True</property>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="right_attach">2</property>
+            <property name="x_options">GTK_FILL</property>
+            <property name="y_options"></property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkSpinButton" id="height_spin">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="invisible_char">â</property>
+            <property name="invisible_char_set">True</property>
+            <property name="adjustment">adjustment4</property>
+            <property name="climb_rate">1</property>
+            <property name="digits">1</property>
+            <property name="numeric">True</property>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="right_attach">2</property>
+            <property name="top_attach">1</property>
+            <property name="bottom_attach">2</property>
+            <property name="x_options">GTK_FILL</property>
+            <property name="y_options"></property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">False</property>
+        <property name="position">4</property>
+      </packing>
+    </child>
   </object>
   <object class="GtkListStore" id="position-model">
     <columns>
@@ -585,11 +678,19 @@
       <column type="gchararray"/>
     </columns>
   </object>
-  <object class="GtkListStore" id="anchor-model">
+  <object class="GtkListStore" id="position-select-model">
     <columns>
       <!-- column-name gchararray -->
       <column type="gchararray"/>
     </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">Automatic</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Manual</col>
+      </row>
+    </data>
   </object>
   <object class="GtkAdjustment" id="row-adj">
     <property name="upper">100</property>
@@ -597,21 +698,9 @@
     <property name="page_increment">10.01</property>
   </object>
   <object class="GtkAdjustment" id="row-span-adj">
-    <property name="value">1</property>
     <property name="lower">1</property>
     <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="col-adj">
-    <property name="upper">10000</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="col-span-adj">
     <property name="value">1</property>
-    <property name="lower">1</property>
-    <property name="upper">100</property>
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
diff --git a/goffice/graph/gog-object.c b/goffice/graph/gog-object.c
index 248f916..7c41062 100644
--- a/goffice/graph/gog-object.c
+++ b/goffice/graph/gog-object.c
@@ -392,6 +392,14 @@ cb_chart_position_changed (GtkWidget *spin, ObjectPrefState *state)
 }
 
 static void
+cb_manual_size_changed (GtkComboBox *combo, ObjectPrefState *state)
+{
+	if (gtk_combo_box_get_active (combo) == 1) {
+	} else {
+	}
+}
+
+static void
 gog_object_populate_editor (GogObject *gobj,
 			    GOEditor *editor,
 			    G_GNUC_UNUSED GogDataAllocator *dalloc,
@@ -400,16 +408,14 @@ gog_object_populate_editor (GogObject *gobj,
 	GtkWidget *w;
 	GtkSizeGroup *widget_size_group, *label_size_group;
 	GtkBuilder *gui;
-	GogObjectClass *gog_klass;
 	GogObjectPosition allowable_positions, flags;
 	ObjectPrefState *state;
 	unsigned i;
+	GogManualSizeMode size_mode = gog_object_get_manual_size_mode (gobj);
 
 	if (gobj->role == NULL)
 		return;
 
-	gog_klass = GOG_OBJECT_GET_CLASS (gobj);
-
        	allowable_positions = gobj->role->allowable_positions;
 	if (!(allowable_positions & (GOG_POSITION_MANUAL | GOG_POSITION_COMPASS)))
 		return;
@@ -505,7 +511,21 @@ gog_object_populate_editor (GogObject *gobj,
 		g_signal_connect (G_OBJECT (w), "changed", G_CALLBACK (cb_anchor_changed), state);
 		gtk_combo_box_set_wrap_width (GTK_COMBO_BOX (w), 3);
 
-		if (gog_klass->can_manual_size) {
+	}
+
+	if (size_mode == GOG_MANUAL_SIZE_AUTO)  {
+		w = go_gtk_builder_get_widget (gui, "manual_sizes");
+		gtk_widget_destroy (w);
+		w = go_gtk_builder_get_widget (gui, "size-select-box");
+		gtk_widget_destroy (w);
+	} else {
+		gboolean manual_size = flags & GOG_POSITION_ANY_MANUAL_SIZE;
+		w = go_gtk_builder_get_widget (gui, "object-size-combo");
+		gtk_combo_box_set_active (GTK_COMBO_BOX (w),
+		                          manual_size? 1: 0);
+		g_signal_connect (G_OBJECT (w),
+				  "changed", G_CALLBACK (cb_manual_size_changed), state);
+		if (manual_size && size_mode & GOG_MANUAL_SIZE_WIDTH) {
 			w = go_gtk_builder_get_widget (gui, "width_label");
 			gtk_size_group_add_widget (label_size_group, w);
 			w = go_gtk_builder_get_widget (gui, "width_spin");
@@ -514,7 +534,13 @@ gog_object_populate_editor (GogObject *gobj,
 			g_signal_connect (G_OBJECT (w), "value-changed",
 					  G_CALLBACK (cb_position_changed), state);
 			state->w_spin = w;
+		} else {
+			gtk_widget_hide (go_gtk_builder_get_widget (gui, "width_label"));
+			gtk_widget_hide (go_gtk_builder_get_widget (gui, "width_spin"));
+			gtk_widget_hide (go_gtk_builder_get_widget (gui, "width-pc-lbl"));
+		}
 
+		if (manual_size && size_mode & GOG_MANUAL_SIZE_HEIGHT) {
 			w = go_gtk_builder_get_widget (gui, "height_label");
 			gtk_size_group_add_widget (label_size_group, w);
 			w = go_gtk_builder_get_widget (gui, "height_spin");
@@ -524,10 +550,13 @@ gog_object_populate_editor (GogObject *gobj,
 					  G_CALLBACK (cb_position_changed), state);
 			state->h_spin = w;
 		} else {
-			w = go_gtk_builder_get_widget (gui, "manual_sizes");
-			gtk_widget_hide (w);
+			gtk_widget_hide (go_gtk_builder_get_widget (gui, "height_label"));
+			gtk_widget_hide (go_gtk_builder_get_widget (gui, "height_spin"));
+			gtk_widget_hide (go_gtk_builder_get_widget (gui, "height-pc-lbl"));
 		}
+
 	}
+
 	if (GOG_IS_CHART (gobj)) {
 		/* setting special notebook page */
 		int col, row, cols, rows;
@@ -607,7 +636,6 @@ gog_object_class_init (GObjectClass *klass)
 	gog_klass->populate_editor = gog_object_populate_editor;
 #endif
 
-	gog_klass->can_manual_size = FALSE;
 	gog_klass->use_parent_as_proxy = FALSE;
 
 	g_object_class_install_property (klass, OBJECT_PROP_ID,
@@ -1716,17 +1744,17 @@ gog_object_get_manual_allocation (GogObject *gobj,
 {
 	GogViewAllocation pos;
 	unsigned anchor;
+	GogManualSizeMode size_mode = gog_object_get_manual_size_mode (gobj);
 
 	pos.x = parent_allocation->x + gobj->manual_position.x * parent_allocation->w;
 	pos.y = parent_allocation->y + gobj->manual_position.y * parent_allocation->h;
 
-	if (GOG_OBJECT_GET_CLASS (gobj)->can_manual_size) {
-		pos.w = gobj->manual_position.w * parent_allocation->w;
-		pos.h = gobj->manual_position.h * parent_allocation->h;
-	} else {
-		pos.w = requisition->w;
-		pos.h = requisition->h;
-	}
+	pos.w = (size_mode & GOG_MANUAL_SIZE_WIDTH)?
+		gobj->manual_position.w * parent_allocation->w:
+		requisition->w;
+	pos.h = (size_mode & GOG_MANUAL_SIZE_HEIGHT)?
+		gobj->manual_position.h * parent_allocation->h:
+		requisition->h;
 
 	anchor = gog_object_get_position_flags (gobj, GOG_POSITION_ANCHOR);
 
@@ -1854,3 +1882,11 @@ gog_object_document_changed (GogObject *obj, GODoc *doc)
 	for (ptr = obj->children; ptr != NULL; ptr = ptr->next)
 		gog_object_document_changed (GOG_OBJECT (ptr->data), doc);
 }
+
+GogManualSizeMode
+gog_object_get_manual_size_mode (GogObject *obj)
+{
+	if (GOG_OBJECT_GET_CLASS (obj)->get_manual_size_mode != NULL)
+		return GOG_OBJECT_GET_CLASS (obj)->get_manual_size_mode (obj);
+	return GOG_MANUAL_SIZE_AUTO;
+}
diff --git a/goffice/graph/gog-object.h b/goffice/graph/gog-object.h
index d418362..958a426 100644
--- a/goffice/graph/gog-object.h
+++ b/goffice/graph/gog-object.h
@@ -31,6 +31,13 @@ typedef enum {
 	GOG_OBJECT_NAME_MANUALLY = 3
 } GogObjectNamingConv;
 
+typedef enum {
+	GOG_MANUAL_SIZE_AUTO,   /* auto size, can't be changed */
+	GOG_MANUAL_SIZE_WIDTH,  /*=1*/
+	GOG_MANUAL_SIZE_HEIGHT, /*=2*/
+	GOG_MANUAL_SIZE_FULL    /*=3 or GOG_MANUAL_SIZE_WIDTH | GOG_MANUAL_SIZE_HEIGHT */
+} GogManualSizeMode;
+
 struct _GogObjectRole {
 	char const *id;	/* for persistence */
 	char const *is_a_typename;
@@ -82,7 +89,6 @@ typedef struct {
 
 	/* using some Private/Public statements to make gtk-doc happy since it does not like the ":1"*/
 	unsigned use_parent_as_proxy /*< private >*/:1/*< public >*/; /* when we change, pretend it was our parent */
-	unsigned can_manual_size /*< private >*/:1/*< public >*/;
 	unsigned roles_allocated /*< private >*/:1/*< public >*/;
 
 	/* Virtuals */
@@ -104,6 +110,7 @@ typedef struct {
 	void (*child_name_changed) (GogObject const *obj, GogObject const *child);
 	void (*children_reordered) (GogObject *obj);
 	void (*update_editor)	   (GogObject *obj);
+	GogManualSizeMode (*get_manual_size_mode) (GogObject *obj);
 } GogObjectClass;
 
 #define GOG_TYPE_OBJECT		(gog_object_get_type ())
@@ -173,6 +180,7 @@ void 	 gog_object_register_roles	  (GogObjectClass *klass,
 void 	 gog_object_request_editor_update (GogObject *obj);
 
 void	 gog_object_document_changed	  (GogObject *obj, GODoc *doc);
+GogManualSizeMode gog_object_get_manual_size_mode  (GogObject *obj);
 
 G_END_DECLS
 
diff --git a/goffice/graph/gog-view.c b/goffice/graph/gog-view.c
index 7af8d3b..9e5adde 100644
--- a/goffice/graph/gog-view.c
+++ b/goffice/graph/gog-view.c
@@ -137,9 +137,7 @@ static GogTool gog_tool_move_object = {
 static gboolean
 gog_tool_resize_object_point (GogView *view, double x, double y, GogObject **gobj)
 {
-	GogObjectClass *gobj_klass = GOG_OBJECT_GET_CLASS (view->model);
-
-	if (!gobj_klass->can_manual_size)
+	if (GOG_MANUAL_SIZE_AUTO == gog_object_get_manual_size_mode (view->model))
 		return FALSE;
 
 	return gog_renderer_in_grip (x, y,
@@ -150,10 +148,7 @@ gog_tool_resize_object_point (GogView *view, double x, double y, GogObject **gob
 static void
 gog_tool_resize_object_render (GogView *view)
 {
-	GogObject *gobj = view->model;
-	GogObjectClass *gobj_klass = GOG_OBJECT_GET_CLASS (gobj);
-
-	if (!gobj_klass->can_manual_size)
+	if (GOG_MANUAL_SIZE_AUTO == gog_object_get_manual_size_mode (view->model))
 		return;
 
 	gog_renderer_draw_grip (view->renderer,
diff --git a/goffice/utils/go-style-prefs.ui b/goffice/utils/go-style-prefs.ui
index b457617..1814c2a 100644
--- a/goffice/utils/go-style-prefs.ui
+++ b/goffice/utils/go-style-prefs.ui
@@ -22,331 +22,563 @@
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
-  <object class="GtkBox" id="go_style_font_prefs">
+  <object class="GtkGrid" id="go-style-prefs">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
-    <property name="border_width">12</property>
-    <property name="orientation">vertical</property>
-    <property name="spacing">12</property>
+    <property name="row_spacing">6</property>
+    <property name="column_spacing">24</property>
     <child>
-      <object class="GtkBox" id="hbox5">
+      <object class="GtkGrid" id="outline-grid">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
+        <property name="halign">start</property>
+        <property name="valign">start</property>
+        <property name="margin_left">18</property>
+        <property name="row_spacing">6</property>
+        <property name="column_spacing">12</property>
         <child>
-          <object class="GtkBox" id="color_box">
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <object class="GtkLabel" id="label37">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="spacing">12</property>
-            <child>
-              <object class="GtkLabel" id="font_color_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">Co_lor:</property>
-                <property name="use_underline">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <placeholder/>
-            </child>
+            <property name="xalign">0</property>
+            <property name="label" translatable="yes">St_yle:</property>
+            <property name="use_underline">True</property>
           </object>
           <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">0</property>
+            <property name="left_attach">0</property>
+            <property name="top_attach">0</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="outline_color_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="xalign">0</property>
+            <property name="label" translatable="yes">Co_lor:</property>
+            <property name="use_underline">True</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">1</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="outline_size_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="xalign">0</property>
+            <property name="label" translatable="yes">_Size:</property>
+            <property name="use_underline">True</property>
+            <property name="mnemonic_widget">outline_size_spin</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">2</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkSpinButton" id="outline_size_spin">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="invisible_char">â</property>
+            <property name="invisible_char_set">True</property>
+            <property name="adjustment">adjustment1</property>
+            <property name="climb_rate">1</property>
+            <property name="digits">1</property>
+            <property name="numeric">True</property>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="top_attach">2</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="label35">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="xalign">0</property>
+            <property name="label" translatable="yes">pts</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">2</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
           </packing>
         </child>
       </object>
       <packing>
-        <property name="expand">False</property>
-        <property name="fill">False</property>
-        <property name="position">0</property>
+        <property name="left_attach">0</property>
+        <property name="top_attach">1</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
       </packing>
     </child>
-  </object>
-  <object class="GtkAlignment" id="go_style_marker_prefs">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="xalign">0</property>
-    <property name="yalign">0</property>
-    <property name="xscale">0</property>
-    <property name="yscale">0</property>
-    <property name="top_padding">12</property>
-    <property name="bottom_padding">12</property>
-    <property name="left_padding">12</property>
-    <property name="right_padding">12</property>
     <child>
-      <object class="GtkBox" id="marker_box">
+      <object class="GtkGrid" id="line-grid">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
-        <property name="orientation">vertical</property>
+        <property name="halign">start</property>
+        <property name="valign">start</property>
+        <property name="margin_left">18</property>
+        <property name="row_spacing">6</property>
+        <property name="column_spacing">12</property>
         <child>
-          <object class="GtkLabel" id="marker_label">
+          <object class="GtkLabel" id="label36">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="xalign">0</property>
-            <property name="label" translatable="yes">&lt;b&gt;Marker&lt;/b&gt;</property>
-            <property name="use_markup">True</property>
+            <property name="label" translatable="yes">St_yle:</property>
+            <property name="use_underline">True</property>
           </object>
           <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">0</property>
+            <property name="left_attach">0</property>
+            <property name="top_attach">0</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
           </packing>
         </child>
         <child>
-          <object class="GtkAlignment" id="alignment7">
+          <object class="GtkLabel" id="line_color_label">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="top_padding">6</property>
-            <property name="left_padding">18</property>
+            <property name="xalign">0</property>
+            <property name="label" translatable="yes">Co_lor:</property>
+            <property name="use_underline">True</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">1</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="line_size_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="xalign">0</property>
+            <property name="label" translatable="yes">_Size:</property>
+            <property name="use_underline">True</property>
+            <property name="mnemonic_widget">line_size_spin</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">2</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="label34">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="xalign">0</property>
+            <property name="label" translatable="yes">pts</property>
+          </object>
+          <packing>
+            <property name="left_attach">2</property>
+            <property name="top_attach">2</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkSpinButton" id="line_size_spin">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="invisible_char">â</property>
+            <property name="invisible_char_set">True</property>
+            <property name="adjustment">adjustment2</property>
+            <property name="climb_rate">1</property>
+            <property name="digits">1</property>
+            <property name="numeric">True</property>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="top_attach">2</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+      </object>
+      <packing>
+        <property name="left_attach">1</property>
+        <property name="top_attach">1</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkGrid" id="fill-grid">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="halign">start</property>
+        <property name="valign">start</property>
+        <property name="margin_left">18</property>
+        <property name="row_spacing">6</property>
+        <property name="column_spacing">12</property>
+        <child>
+          <object class="GtkLabel" id="fill_type_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="xalign">0</property>
+            <property name="label" translatable="yes">_Type:</property>
+            <property name="use_underline">True</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">0</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkComboBoxText" id="fill-type-menu">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <items>
+              <item translatable="yes">None</item>
+              <item translatable="yes">Pattern</item>
+              <item translatable="yes">Bicolor gradient</item>
+              <item translatable="yes">Unicolor gradient</item>
+              <item translatable="yes">Image</item>
+            </items>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="top_attach">0</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkNotebook" id="fill-notebook">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="show_tabs">False</property>
+            <property name="show_border">False</property>
             <child>
-              <object class="GtkTable" id="marker_table">
+              <object class="GtkLabel" id="label31">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="n_rows">4</property>
-                <property name="n_columns">3</property>
-                <property name="column_spacing">12</property>
-                <property name="row_spacing">6</property>
+              </object>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label16">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+              </object>
+              <packing>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkBox" id="vbox3">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="orientation">vertical</property>
+                <property name="spacing">6</property>
                 <child>
-                  <object class="GtkLabel" id="marker_fill_label">
+                  <object class="GtkBox" id="fill_gradient_box">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">_Fill:</property>
-                    <property name="use_underline">True</property>
+                    <property name="spacing">12</property>
+                    <child>
+                      <object class="GtkLabel" id="fill_gradient_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">_Direction:</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
                   </object>
                   <packing>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkLabel" id="marker_outline_label">
+                  <object class="GtkBox" id="fill_pattern_box">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">O_utline:</property>
-                    <property name="use_underline">True</property>
+                    <property name="spacing">12</property>
+                    <child>
+                      <object class="GtkLabel" id="fill_pattern_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">_Pattern:</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
                   </object>
                   <packing>
-                    <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkLabel" id="label7">
+                  <object class="GtkBox" id="fill_foreground_box">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">pts</property>
+                    <property name="spacing">12</property>
+                    <child>
+                      <object class="GtkLabel" id="fill_foreground_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">_Foreground:</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
                   </object>
                   <packing>
-                    <property name="left_attach">2</property>
-                    <property name="right_attach">3</property>
-                    <property name="top_attach">3</property>
-                    <property name="bottom_attach">4</property>
-                    <property name="y_options"></property>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">2</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkSpinButton" id="marker_size_spin">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="invisible_char">â</property>
-                    <property name="adjustment">adjustment4</property>
-                    <property name="climb_rate">1</property>
-                    <property name="numeric">True</property>
-                  </object>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">3</property>
-                    <property name="bottom_attach">4</property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkLabel" id="marker_size_label">
+                  <object class="GtkBox" id="fill_background_box">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">Si_ze:</property>
-                    <property name="use_underline">True</property>
-                    <property name="mnemonic_widget">marker_size_spin</property>
+                    <property name="spacing">12</property>
+                    <child>
+                      <object class="GtkLabel" id="fill_background_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">_Background:</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
                   </object>
                   <packing>
-                    <property name="top_attach">3</property>
-                    <property name="bottom_attach">4</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">3</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkLabel" id="marker_shape_label">
+                  <object class="GtkBox" id="fill_brightness_box">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">Sha_pe:</property>
-                    <property name="use_underline">True</property>
+                    <property name="spacing">12</property>
+                    <child>
+                      <object class="GtkLabel" id="fill_brightness_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">B_rightness:</property>
+                        <property name="use_underline">True</property>
+                        <property name="mnemonic_widget">fill_brightness_scale</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkScale" id="fill_brightness_scale">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="adjustment">adjustment3</property>
+                        <property name="upper_stepper_sensitivity">off</property>
+                        <property name="show_fill_level">True</property>
+                        <property name="restrict_to_fill_level">False</property>
+                        <property name="fill_level">0</property>
+                        <property name="draw_value">False</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
                   </object>
                   <packing>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">4</property>
                   </packing>
                 </child>
-                <child>
-                  <placeholder/>
-                </child>
-                <child>
-                  <placeholder/>
-                </child>
-                <child>
-                  <placeholder/>
-                </child>
-                <child>
-                  <placeholder/>
-                </child>
-                <child>
-                  <placeholder/>
-                </child>
-                <child>
-                  <placeholder/>
-                </child>
               </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label18">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+                <property name="tab_fill">False</property>
+              </packing>
             </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-  </object>
-  <object class="GtkBox" id="go_style_prefs">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="border_width">12</property>
-    <property name="spacing">24</property>
-    <child>
-      <object class="GtkBox" id="outline_box">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="orientation">vertical</property>
-        <child>
-          <object class="GtkLabel" id="outline_label">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="xalign">0</property>
-            <property name="label" translatable="yes">&lt;b&gt;Outline&lt;/b&gt;</property>
-            <property name="use_markup">True</property>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkAlignment" id="alignment5">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="top_padding">6</property>
-            <property name="left_padding">18</property>
             <child>
-              <object class="GtkTable" id="outline_table">
+              <object class="GtkTable" id="fill_image_table">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
+                <property name="valign">start</property>
                 <property name="n_rows">3</property>
                 <property name="n_columns">3</property>
                 <property name="column_spacing">12</property>
                 <property name="row_spacing">6</property>
                 <child>
-                  <object class="GtkLabel" id="label37">
+                  <object class="GtkLabel" id="label33">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="xalign">0</property>
-                    <property name="label" translatable="yes">St_yle:</property>
-                    <property name="use_underline">True</property>
                   </object>
                   <packing>
+                    <property name="top_attach">2</property>
+                    <property name="bottom_attach">3</property>
                     <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkLabel" id="outline_color_label">
+                  <object class="GtkButton" id="fill_image_select_picture">
+                    <property name="use_action_appearance">False</property>
                     <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">Co_lor:</property>
-                    <property name="use_underline">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="use_action_appearance">False</property>
+                    <child>
+                      <object class="GtkAlignment" id="alignment2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="xscale">0</property>
+                        <property name="yscale">0</property>
+                        <child>
+                          <object class="GtkBox" id="hbox4">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="spacing">2</property>
+                            <child>
+                              <object class="GtkImage" id="image1">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="stock">gtk-open</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label32">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">_Select...</property>
+                                <property name="use_underline">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
                   </object>
                   <packing>
+                    <property name="right_attach">2</property>
                     <property name="top_attach">1</property>
                     <property name="bottom_attach">2</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
+                    <property name="x_options">GTK_SHRINK | GTK_FILL</property>
+                    <property name="y_options">GTK_SHRINK</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkLabel" id="label35">
+                  <object class="GtkLabel" id="fill_image_fit_label">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="xalign">0</property>
-                    <property name="label" translatable="yes">pts</property>
+                    <property name="label" translatable="yes">_Fit:</property>
+                    <property name="use_underline">True</property>
                   </object>
                   <packing>
-                    <property name="left_attach">2</property>
-                    <property name="right_attach">3</property>
-                    <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
+                    <property name="x_options">GTK_SHRINK | GTK_FILL</property>
+                    <property name="y_options">GTK_SHRINK</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkSpinButton" id="outline_size_spin">
+                  <object class="GtkComboBoxText" id="fill-image-fit">
                     <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="invisible_char">â</property>
-                    <property name="adjustment">adjustment1</property>
-                    <property name="climb_rate">1</property>
-                    <property name="digits">1</property>
-                    <property name="numeric">True</property>
+                    <property name="can_focus">False</property>
+                    <items>
+                      <item translatable="yes">stretched</item>
+                      <item translatable="yes">wallpaper</item>
+                      <item translatable="yes">centered</item>
+                      <item translatable="yes">centered wallpaper</item>
+                    </items>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
                     <property name="right_attach">2</property>
-                    <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkLabel" id="outline_size_label">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">_Size:</property>
-                    <property name="use_underline">True</property>
-                    <property name="mnemonic_widget">outline_size_spin</property>
-                  </object>
-                  <packing>
-                    <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
+                    <property name="y_options">GTK_FILL</property>
                   </packing>
                 </child>
                 <child>
@@ -359,92 +591,279 @@
                   <placeholder/>
                 </child>
                 <child>
-                  <placeholder/>
+                  <object class="GtkBox" id="vbox2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <object class="GtkImage" id="fill_image_sample">
+                        <property name="width_request">100</property>
+                        <property name="height_request">60</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="stock">gtk-missing-image</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="image-size-label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">2</property>
+                    <property name="bottom_attach">3</property>
+                    <property name="x_options">GTK_FILL</property>
+                    <property name="y_options">GTK_FILL</property>
+                  </packing>
                 </child>
               </object>
+              <packing>
+                <property name="position">2</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label19">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+              </object>
+              <packing>
+                <property name="position">2</property>
+                <property name="tab_fill">False</property>
+              </packing>
             </child>
           </object>
           <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
+            <property name="left_attach">0</property>
+            <property name="top_attach">2</property>
+            <property name="width">3</property>
+            <property name="height">1</property>
           </packing>
         </child>
-      </object>
-      <packing>
-        <property name="expand">False</property>
-        <property name="fill">False</property>
-        <property name="position">0</property>
-      </packing>
-    </child>
-    <child>
-      <object class="GtkBox" id="line_box">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="orientation">vertical</property>
         <child>
-          <object class="GtkLabel" id="line_label">
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <object class="GtkLabel" id="filler">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="xalign">0</property>
-            <property name="label" translatable="yes">&lt;b&gt;Line&lt;/b&gt;</property>
-            <property name="use_markup">True</property>
+            <property name="hexpand">True</property>
           </object>
           <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">0</property>
+            <property name="left_attach">2</property>
+            <property name="top_attach">0</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
           </packing>
         </child>
-        <child>
-          <object class="GtkAlignment" id="alignment6">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="top_padding">6</property>
-            <property name="bottom_padding">10</property>
+      </object>
+      <packing>
+        <property name="left_attach">2</property>
+        <property name="top_attach">1</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkLabel" id="outline-label">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="halign">start</property>
+        <property name="xalign">0</property>
+        <property name="label" translatable="yes">&lt;b&gt;Outline&lt;/b&gt;</property>
+        <property name="use_markup">True</property>
+      </object>
+      <packing>
+        <property name="left_attach">0</property>
+        <property name="top_attach">0</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkLabel" id="line-label">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="halign">start</property>
+        <property name="xalign">0</property>
+        <property name="label" translatable="yes">&lt;b&gt;Line&lt;/b&gt;</property>
+        <property name="use_markup">True</property>
+      </object>
+      <packing>
+        <property name="left_attach">1</property>
+        <property name="top_attach">0</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkLabel" id="fill-label">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="halign">start</property>
+        <property name="xalign">0</property>
+        <property name="label" translatable="yes">&lt;b&gt;Fill&lt;/b&gt;</property>
+        <property name="use_markup">True</property>
+      </object>
+      <packing>
+        <property name="left_attach">2</property>
+        <property name="top_attach">0</property>
+        <property name="width">1</property>
+        <property name="height">1</property>
+      </packing>
+    </child>
+    <child>
+      <placeholder/>
+    </child>
+    <child>
+      <placeholder/>
+    </child>
+    <child>
+      <placeholder/>
+    </child>
+  </object>
+  <object class="GtkBox" id="go_style_font_prefs">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="border_width">12</property>
+    <property name="orientation">vertical</property>
+    <property name="spacing">12</property>
+    <child>
+      <object class="GtkBox" id="hbox5">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <object class="GtkBox" id="color_box">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="spacing">12</property>
+            <child>
+              <object class="GtkLabel" id="font_color_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Co_lor:</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">False</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+  </object>
+  <object class="GtkAlignment" id="go_style_marker_prefs">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="xalign">0</property>
+    <property name="yalign">0</property>
+    <property name="xscale">0</property>
+    <property name="yscale">0</property>
+    <property name="top_padding">12</property>
+    <property name="bottom_padding">12</property>
+    <property name="left_padding">12</property>
+    <property name="right_padding">12</property>
+    <child>
+      <object class="GtkBox" id="marker_box">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <child>
+          <object class="GtkLabel" id="marker_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="xalign">0</property>
+            <property name="label" translatable="yes">&lt;b&gt;Marker&lt;/b&gt;</property>
+            <property name="use_markup">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkAlignment" id="alignment7">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="top_padding">6</property>
             <property name="left_padding">18</property>
             <child>
-              <object class="GtkTable" id="line_table">
+              <object class="GtkTable" id="marker_table">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="n_rows">3</property>
+                <property name="n_rows">4</property>
                 <property name="n_columns">3</property>
                 <property name="column_spacing">12</property>
                 <property name="row_spacing">6</property>
                 <child>
-                  <object class="GtkSpinButton" id="line_size_spin">
+                  <object class="GtkLabel" id="marker_fill_label">
                     <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="invisible_char">â</property>
-                    <property name="adjustment">adjustment2</property>
-                    <property name="climb_rate">1</property>
-                    <property name="digits">1</property>
-                    <property name="numeric">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">_Fill:</property>
+                    <property name="use_underline">True</property>
                   </object>
                   <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
                     <property name="x_options">GTK_FILL</property>
                     <property name="y_options"></property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkLabel" id="label36">
+                  <object class="GtkLabel" id="marker_outline_label">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="xalign">0</property>
-                    <property name="label" translatable="yes">St_yle:</property>
+                    <property name="label" translatable="yes">O_utline:</property>
                     <property name="use_underline">True</property>
                   </object>
                   <packing>
+                    <property name="top_attach">2</property>
+                    <property name="bottom_attach">3</property>
                     <property name="x_options">GTK_FILL</property>
                     <property name="y_options"></property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkLabel" id="label34">
+                  <object class="GtkLabel" id="label7">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="xalign">0</property>
@@ -453,39 +872,53 @@
                   <packing>
                     <property name="left_attach">2</property>
                     <property name="right_attach">3</property>
-                    <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
-                    <property name="x_options">GTK_FILL</property>
+                    <property name="top_attach">3</property>
+                    <property name="bottom_attach">4</property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkSpinButton" id="marker_size_spin">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="invisible_char">â</property>
+                    <property name="adjustment">adjustment4</property>
+                    <property name="climb_rate">1</property>
+                    <property name="numeric">True</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">3</property>
+                    <property name="bottom_attach">4</property>
                     <property name="y_options"></property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkLabel" id="line_size_label">
+                  <object class="GtkLabel" id="marker_size_label">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="xalign">0</property>
-                    <property name="label" translatable="yes">_Size:</property>
+                    <property name="label" translatable="yes">Si_ze:</property>
                     <property name="use_underline">True</property>
-                    <property name="mnemonic_widget">line_size_spin</property>
+                    <property name="mnemonic_widget">marker_size_spin</property>
                   </object>
                   <packing>
-                    <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
+                    <property name="top_attach">3</property>
+                    <property name="bottom_attach">4</property>
                     <property name="x_options">GTK_FILL</property>
                     <property name="y_options"></property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkLabel" id="line_color_label">
+                  <object class="GtkLabel" id="marker_shape_label">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="xalign">0</property>
-                    <property name="label" translatable="yes">Co_lor:</property>
+                    <property name="label" translatable="yes">Sha_pe:</property>
                     <property name="use_underline">True</property>
                   </object>
                   <packing>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
                     <property name="x_options">GTK_FILL</property>
                     <property name="y_options"></property>
                   </packing>
@@ -502,473 +935,11 @@
                 <child>
                   <placeholder/>
                 </child>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </object>
-      <packing>
-        <property name="expand">False</property>
-        <property name="fill">False</property>
-        <property name="position">1</property>
-      </packing>
-    </child>
-    <child>
-      <object class="GtkBox" id="fill_box">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="orientation">vertical</property>
-        <child>
-          <object class="GtkLabel" id="fill_label">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="xalign">0</property>
-            <property name="label" translatable="yes">&lt;b&gt;Fill&lt;/b&gt;</property>
-            <property name="use_markup">True</property>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkAlignment" id="alignment4">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="top_padding">6</property>
-            <property name="left_padding">18</property>
-            <child>
-              <object class="GtkBox" id="vbox1">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="valign">start</property>
-                <property name="orientation">vertical</property>
-                <property name="spacing">6</property>
                 <child>
-                  <object class="GtkBox" id="hbox2">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="spacing">12</property>
-                    <child>
-                      <object class="GtkLabel" id="fill_type_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">_Type:</property>
-                        <property name="use_underline">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBoxText" id="fill-type-menu">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <items>
-                          <item translatable="yes">None</item>
-                          <item translatable="yes">Pattern</item>
-                          <item translatable="yes">Bicolor gradient</item>
-                          <item translatable="yes">Unicolor gradient</item>
-                          <item translatable="yes">Image</item>
-                        </items>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkBox" id="fill_extension_box">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <placeholder/>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                    <property name="position">1</property>
-                  </packing>
+                  <placeholder/>
                 </child>
                 <child>
-                  <object class="GtkNotebook" id="fill_notebook">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="show_tabs">False</property>
-                    <property name="show_border">False</property>
-                    <child>
-                      <object class="GtkLabel" id="label31">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                      </object>
-                    </child>
-                    <child type="tab">
-                      <object class="GtkLabel" id="label16">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                      </object>
-                      <packing>
-                        <property name="tab_fill">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkBox" id="vbox3">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="orientation">vertical</property>
-                        <property name="spacing">6</property>
-                        <child>
-                          <object class="GtkBox" id="fill_gradient_box">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="spacing">12</property>
-                            <child>
-                              <object class="GtkLabel" id="fill_gradient_label">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="xalign">0</property>
-                                <property name="label" translatable="yes">_Direction:</property>
-                                <property name="use_underline">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkBox" id="fill_pattern_box">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="spacing">12</property>
-                            <child>
-                              <object class="GtkLabel" id="fill_pattern_label">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="xalign">0</property>
-                                <property name="label" translatable="yes">_Pattern:</property>
-                                <property name="use_underline">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkBox" id="fill_foreground_box">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="spacing">12</property>
-                            <child>
-                              <object class="GtkLabel" id="fill_foreground_label">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="xalign">0</property>
-                                <property name="label" translatable="yes">_Foreground:</property>
-                                <property name="use_underline">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkBox" id="fill_background_box">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="spacing">12</property>
-                            <child>
-                              <object class="GtkLabel" id="fill_background_label">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="xalign">0</property>
-                                <property name="label" translatable="yes">_Background:</property>
-                                <property name="use_underline">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkBox" id="fill_brightness_box">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="spacing">12</property>
-                            <child>
-                              <object class="GtkLabel" id="fill_brightness_label">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="xalign">0</property>
-                                <property name="label" translatable="yes">B_rightness:</property>
-                                <property name="use_underline">True</property>
-                                <property name="mnemonic_widget">fill_brightness_scale</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkScale" id="fill_brightness_scale">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="adjustment">adjustment3</property>
-                                <property name="upper_stepper_sensitivity">off</property>
-                                <property name="show_fill_level">True</property>
-                                <property name="restrict_to_fill_level">False</property>
-                                <property name="fill_level">0</property>
-                                <property name="draw_value">False</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">4</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child type="tab">
-                      <object class="GtkLabel" id="label18">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                      </object>
-                      <packing>
-                        <property name="position">1</property>
-                        <property name="tab_fill">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkTable" id="fill_image_table">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="valign">start</property>
-                        <property name="n_rows">3</property>
-                        <property name="n_columns">3</property>
-                        <property name="column_spacing">12</property>
-                        <property name="row_spacing">6</property>
-                        <child>
-                          <object class="GtkBox" id="vbox2">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="orientation">vertical</property>
-                            <child>
-                              <object class="GtkImage" id="fill_image_sample">
-                                <property name="width_request">100</property>
-                                <property name="height_request">60</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="stock">gtk-missing-image</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkLabel" id="image-size-label">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="left_attach">2</property>
-                            <property name="right_attach">3</property>
-                            <property name="bottom_attach">3</property>
-                            <property name="x_options">GTK_FILL</property>
-                            <property name="y_options">GTK_FILL</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" id="label33">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="xalign">0</property>
-                          </object>
-                          <packing>
-                            <property name="top_attach">2</property>
-                            <property name="bottom_attach">3</property>
-                            <property name="x_options">GTK_FILL</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkButton" id="fill_image_select_picture">
-                            <property name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="use_action_appearance">False</property>
-                            <child>
-                              <object class="GtkAlignment" id="alignment2">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="xscale">0</property>
-                                <property name="yscale">0</property>
-                                <child>
-                                  <object class="GtkBox" id="hbox4">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="spacing">2</property>
-                                    <child>
-                                      <object class="GtkImage" id="image1">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="stock">gtk-open</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" id="label32">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="label" translatable="yes">_Select...</property>
-                                        <property name="use_underline">True</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                </child>
-                              </object>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="right_attach">2</property>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
-                            <property name="x_options">GTK_SHRINK | GTK_FILL</property>
-                            <property name="y_options">GTK_SHRINK</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" id="fill_image_fit_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="xalign">0</property>
-                            <property name="label" translatable="yes">_Fit:</property>
-                            <property name="use_underline">True</property>
-                          </object>
-                          <packing>
-                            <property name="x_options">GTK_SHRINK | GTK_FILL</property>
-                            <property name="y_options">GTK_SHRINK</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkComboBoxText" id="fill-image-fit">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <items>
-                              <item translatable="yes">stretched</item>
-                              <item translatable="yes">wallpaper</item>
-                              <item translatable="yes">centered</item>
-                              <item translatable="yes">centered wallpaper</item>
-                            </items>
-                          </object>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                            <property name="y_options">GTK_FILL</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <placeholder/>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="position">2</property>
-                        <property name="tab_fill">False</property>
-                      </packing>
-                    </child>
-                    <child type="tab">
-                      <object class="GtkLabel" id="label19">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                      </object>
-                      <packing>
-                        <property name="position">2</property>
-                        <property name="tab_fill">False</property>
-                      </packing>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">2</property>
-                  </packing>
+                  <placeholder/>
                 </child>
               </object>
             </child>
@@ -980,11 +951,6 @@
           </packing>
         </child>
       </object>
-      <packing>
-        <property name="expand">False</property>
-        <property name="fill">False</property>
-        <property name="position">2</property>
-      </packing>
     </child>
   </object>
 </interface>
diff --git a/goffice/utils/go-style.c b/goffice/utils/go-style.c
index be126e7..23fc1ff 100644
--- a/goffice/utils/go-style.c
+++ b/goffice/utils/go-style.c
@@ -67,7 +67,6 @@ typedef struct {
 		GtkWidget *foreground_box;
 		GtkWidget *foreground_label;
 		GtkWidget *notebook;
-		GtkWidget *extension_box;
 		struct {
 			GtkWidget *selector;
 			GtkWidget *box;
@@ -137,14 +136,18 @@ go_style_set_image_preview (GOImage *pix, StylePrefState *state)
 			g_object_ref (state->fill.image.image);
 	}
 
-	if (pix == NULL)
+	if (pix == NULL) {
+		gtk_widget_hide (go_gtk_builder_get_widget (state->gui, "fill_image_sample"));
+		gtk_label_set_text (GTK_LABEL (go_gtk_builder_get_widget (state->gui, "image-size-label")), _("No image!"));
 		return;
+	}
 
 	w = go_gtk_builder_get_widget (state->gui, "fill_image_sample");
 
 	scaled = go_image_get_scaled_pixbuf (pix, HSCALE, VSCALE);
 	gtk_image_set_from_pixbuf (GTK_IMAGE (w), scaled);
 	g_object_unref (scaled);
+	gtk_widget_show (w);
 
 	w = go_gtk_builder_get_widget (state->gui, "image-size-label");
 	g_object_get (pix, "width", &width, "height", &height, NULL);
@@ -194,22 +197,22 @@ outline_init (StylePrefState *state, gboolean enable, GOEditor *editor)
 {
 	GOStyle *style = state->style;
 	GOStyle *default_style = state->default_style;
-	GtkWidget *w, *table;
+	GtkWidget *w, *grid;
 
-	w = go_gtk_builder_get_widget (state->gui, "outline_box");
+	grid = go_gtk_builder_get_widget (state->gui, "outline-grid");
 	if (!enable) {
+		gtk_widget_hide (grid);
+		w = go_gtk_builder_get_widget (state->gui, "outline-label");
 		gtk_widget_hide (w);
 		return;
 	}
 
-	go_editor_register_widget (editor, w);
-
-	table = go_gtk_builder_get_widget (state->gui, "outline_table");
+	go_editor_register_widget (editor, grid);
 
 	/* DashType */
 	w = go_line_dash_selector_new (style->line.dash_type,
 				       default_style->line.dash_type);
-	gtk_table_attach (GTK_TABLE (table), w, 1, 3, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
+	gtk_grid_attach (GTK_GRID (grid), w, 1, 0, 2, 1);
 	g_signal_connect (G_OBJECT (w), "activate",
 			  G_CALLBACK (cb_outline_dash_type_changed), state);
 	/* Size */
@@ -224,8 +227,8 @@ outline_init (StylePrefState *state, gboolean enable, GOEditor *editor)
 		state->gui,
 		"outline_color", "outline_color_label",
 		G_CALLBACK (cb_outline_color_changed));
-	gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, 0);
-	gtk_widget_show_all (table);
+	gtk_grid_attach (GTK_GRID (grid), w, 1, 1, 1, 1);
+	gtk_widget_show_all (grid);
 }
 
 
@@ -268,22 +271,22 @@ line_init (StylePrefState *state, gboolean enable, GOEditor *editor)
 {
 	GOStyle *style = state->style;
 	GOStyle *default_style = state->default_style;
-	GtkWidget *w, *table;
+	GtkWidget *w, *grid;
 
-	w = go_gtk_builder_get_widget (state->gui, "line_box");
+	grid = go_gtk_builder_get_widget (state->gui, "line-grid");
 	if (!enable) {
+		gtk_widget_hide (grid);
+		w = go_gtk_builder_get_widget (state->gui, "line-label");
 		gtk_widget_hide (w);
 		return;
 	}
 
-	go_editor_register_widget (editor, w);
-
-	table = go_gtk_builder_get_widget (state->gui, "line_table");
+	go_editor_register_widget (editor, grid);
 
 	/* DashType */
 	w = go_line_dash_selector_new (style->line.dash_type,
 				       default_style->line.dash_type);
-	gtk_table_attach (GTK_TABLE (table), w, 1, 3, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
+	gtk_grid_attach (GTK_GRID (grid), w, 1, 0, 2, 1);
 	g_signal_connect (G_OBJECT (w), "activate",
 			  G_CALLBACK (cb_line_dash_type_changed), state);
 
@@ -300,8 +303,8 @@ line_init (StylePrefState *state, gboolean enable, GOEditor *editor)
 		state->gui,
 		"line_color", "line_color_label",
 		G_CALLBACK (cb_line_color_changed));
-	gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, 0);
-	gtk_widget_show_all (table);
+	gtk_grid_attach (GTK_GRID (grid), w, 1, 1, 1, 1);
+	gtk_widget_show_all (grid);
 }
 
 static void cb_fill_background_color (GOSelector *selector, StylePrefState *state);
@@ -529,11 +532,11 @@ fill_image_init (StylePrefState *state)
 	type   = go_gtk_builder_get_widget (state->gui, "fill-image-fit");
 
 	state->fill.image.image = NULL;
+	go_style_set_image_preview (style->fill.image.image, state);
 
 	if (GO_STYLE_FILL_IMAGE == style->fill.type) {
 		gtk_combo_box_set_active (GTK_COMBO_BOX (type),
 			style->fill.image.type);
-		go_style_set_image_preview (style->fill.image.image, state);
 		state->fill.image.image = style->fill.image.image;
 		if (state->fill.image.image)
 			g_object_ref (state->fill.image.image);
@@ -577,7 +580,6 @@ fill_update_visibilies (FillType type, StylePrefState *state)
 		      fill_infos[type].show_brightness, NULL);
 	g_object_set (state->fill.foreground_box, "visible",
 		      !fill_infos[type].show_brightness, NULL);
-	g_object_set (state->fill.extension_box, "visible", type != FILL_TYPE_NONE, NULL);
 
 	if (fill_infos[type].show_gradient) {
 		gtk_label_set_text (GTK_LABEL (state->fill.foreground_label), _("Start:"));
@@ -614,13 +616,11 @@ fill_init (StylePrefState *state, gboolean enable, GOEditor *editor)
 	FillType type;
 
 	if (!enable) {
-		gtk_widget_hide (go_gtk_builder_get_widget (state->gui, "fill_box"));
+		gtk_widget_hide (go_gtk_builder_get_widget (state->gui, "fill-grid"));
+		gtk_widget_hide (go_gtk_builder_get_widget (state->gui, "fill-label"));
 		return;
 	}
 
-	state->fill.extension_box = go_gtk_builder_get_widget (state->gui, "fill_extension_box");
-	go_editor_register_widget (editor, state->fill.extension_box);
-
 	state->fill.size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
 
 	fill_color_init (state);
@@ -630,7 +630,7 @@ fill_init (StylePrefState *state, gboolean enable, GOEditor *editor)
 		fill_image_init (state);
 	fill_update_selectors (state);
 
-	state->fill.notebook = go_gtk_builder_get_widget (state->gui, "fill_notebook");
+	state->fill.notebook = go_gtk_builder_get_widget (state->gui, "fill-notebook");
 
 	switch (state->style->fill.type) {
 		case GO_STYLE_FILL_PATTERN:
@@ -663,7 +663,7 @@ fill_init (StylePrefState *state, gboolean enable, GOEditor *editor)
 		"changed",
 		G_CALLBACK (cb_fill_type_changed), state);
 
-	w = go_gtk_builder_get_widget (state->gui, "fill_box");
+	w = go_gtk_builder_get_widget (state->gui, "fill-grid");
 	gtk_widget_show (GTK_WIDGET (w));
 
 	g_object_unref (state->fill.size_group);
@@ -1038,7 +1038,7 @@ go_style_populate_editor (GOStyle *style,
 			return;
 		}
 		state->gui = gui;
-		w = go_gtk_builder_get_widget (gui, "go_style_prefs");
+		w = go_gtk_builder_get_widget (gui, "go-style-prefs");
 		g_object_set_data (G_OBJECT (w), "state", state);
 		g_signal_connect_swapped (G_OBJECT (w), "destroy", G_CALLBACK (go_style_pref_state_free), state);
 		go_editor_add_page (editor, w, _("Style"));



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