[glom] Print Layout: Allow the user to choose row and column line widths and color.



commit 996134e870d0cc522811a85f76245b1bb3e3fc15
Author: Murray Cumming <murrayc murrayc com>
Date:   Wed Aug 31 13:23:24 2011 +0200

    Print Layout: Allow the user to choose row and column line widths and color.
    
    * glom/libglom/data_structure/layout/layoutitem_portal.[h|cc]: Added
    get/set_print_layout_row_line_width(),
      get/set_print_layout_column_line_width(), and
      get/set_print_layout_line_color().
    * glom/libglom/document/document.cc: load_after(), save_before(): Store the
    new details in the document.
    * ui/developer/window_data_layout.glade: Added an optional extra section
    with line details for print layouts.
    * glom/mode_design/layout/dialog_layout_list_related.[h|cc]: Use the new
    widgets, hiding them for non-print-layout uses.
    * glom/mode_design/layout/dialog_layout_details.[h|cc]: Hide the new widgets
    by default.
    * glom/utility_widgets/canvas/canvas_table_movable.[h|cc]:
      Added set_line_details().
    * glom/print_layout/canvas_layout_item.cc:
      create_canvas_item_for_layout_item(): Call set_line_details().

 ChangeLog                                          |   21 ++
 .../data_structure/layout/layoutitem_portal.cc     |   40 +++-
 .../data_structure/layout/layoutitem_portal.h      |   21 ++
 glom/libglom/document/document.cc                  |   34 +++-
 glom/mode_design/layout/dialog_layout_details.cc   |    2 +
 glom/mode_design/layout/dialog_layout_details.h    |    1 +
 .../layout/dialog_layout_list_related.cc           |   39 +++-
 .../layout/dialog_layout_list_related.h            |    6 +-
 glom/print_layout/canvas_layout_item.cc            |   11 +-
 .../utility_widgets/canvas/canvas_table_movable.cc |   21 ++-
 glom/utility_widgets/canvas/canvas_table_movable.h |    8 +-
 ui/developer/window_data_layout.glade              |  242 ++++++++++++++++----
 12 files changed, 376 insertions(+), 70 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index cc05570..c1f4845 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
+2011-08-31  Murray Cumming  <murrayc murrayc com>
+
+	Print Layout: Allow the user to choose row and column line widths and color.
+
+	* glom/libglom/data_structure/layout/layoutitem_portal.[h|cc]: Added 
+	get/set_print_layout_row_line_width(), 
+  get/set_print_layout_column_line_width(), and 
+  get/set_print_layout_line_color().
+	* glom/libglom/document/document.cc: load_after(), save_before(): Store the 
+	new details in the document.
+	* ui/developer/window_data_layout.glade: Added an optional extra section 
+	with line details for print layouts.
+	* glom/mode_design/layout/dialog_layout_list_related.[h|cc]: Use the new
+	widgets, hiding them for non-print-layout uses.
+	* glom/mode_design/layout/dialog_layout_details.[h|cc]: Hide the new widgets 
+	by default.
+	* glom/utility_widgets/canvas/canvas_table_movable.[h|cc]: 
+  Added set_line_details().
+	* glom/print_layout/canvas_layout_item.cc:
+  create_canvas_item_for_layout_item(): Call set_line_details().
+
 2011-08-30  Murray Cumming  <murrayc murrayc com>
 
 	Disable the canvas test.
diff --git a/glom/libglom/data_structure/layout/layoutitem_portal.cc b/glom/libglom/data_structure/layout/layoutitem_portal.cc
index b1ea335..3b17492 100644
--- a/glom/libglom/data_structure/layout/layoutitem_portal.cc
+++ b/glom/libglom/data_structure/layout/layoutitem_portal.cc
@@ -26,6 +26,8 @@ namespace Glom
 
 LayoutItem_Portal::LayoutItem_Portal()
 : m_print_layout_row_height(20), //arbitrary default.
+  m_print_layout_row_line_width(1), //Sensible default.
+  m_print_layout_column_line_width(1), //Sensible default.
   m_navigation_type(LayoutItem_Portal::NAVIGATION_AUTOMATIC),
   m_rows_count(6) //Sensible default.
 {
@@ -37,6 +39,9 @@ LayoutItem_Portal::LayoutItem_Portal(const LayoutItem_Portal& src)
   //HasTitleSingular(src),
   m_navigation_relationship_specific(src.m_navigation_relationship_specific),
   m_print_layout_row_height(src.m_print_layout_row_height),
+  m_print_layout_row_line_width(src.m_print_layout_row_line_width),
+  m_print_layout_column_line_width(src.m_print_layout_column_line_width),
+  m_print_layout_line_color(src.m_print_layout_line_color),
   m_navigation_type(src.m_navigation_type),
   m_rows_count(src.m_rows_count)
 {
@@ -60,6 +65,9 @@ LayoutItem_Portal& LayoutItem_Portal::operator=(const LayoutItem_Portal& src)
 
   m_navigation_relationship_specific = src.m_navigation_relationship_specific;
   m_print_layout_row_height = src.m_print_layout_row_height;
+  m_print_layout_row_line_width = src.m_print_layout_row_line_width;
+  m_print_layout_column_line_width = src.m_print_layout_column_line_width;
+  m_print_layout_line_color = src.m_print_layout_line_color;
   m_navigation_type = src.m_navigation_type;
   m_rows_count = src.m_rows_count;
 
@@ -180,12 +188,34 @@ void LayoutItem_Portal::set_rows_count(double rows_count)
   m_rows_count = rows_count;
 }
 
-/*
-void LayoutItem_Portal::debug(guint level) const
+double LayoutItem_Portal::get_print_layout_row_line_width() const
 {
-  g_warning("LayoutItem_Portal::debug: level = %d", level);
-  //LayoutGroup::debug(level);
+  return m_print_layout_row_line_width;
+}
+
+void LayoutItem_Portal::set_print_layout_row_line_width(double width)
+{
+  m_print_layout_row_line_width = width;
+}
+
+double LayoutItem_Portal::get_print_layout_column_line_width() const
+{
+  return m_print_layout_column_line_width;
+}
+  
+void LayoutItem_Portal::set_print_layout_column_line_width(double width)
+{
+  m_print_layout_column_line_width = width;
+}
+
+Glib::ustring LayoutItem_Portal::get_print_layout_line_color() const
+{
+  return m_print_layout_line_color;
+}
+
+void LayoutItem_Portal::set_print_layout_line_color(const Glib::ustring& color)
+{
+  m_print_layout_line_color = color;
 }
-*/
 
 } //namespace Glom
diff --git a/glom/libglom/data_structure/layout/layoutitem_portal.h b/glom/libglom/data_structure/layout/layoutitem_portal.h
index d1272eb..b5ae9a4 100644
--- a/glom/libglom/data_structure/layout/layoutitem_portal.h
+++ b/glom/libglom/data_structure/layout/layoutitem_portal.h
@@ -98,6 +98,25 @@ public:
 
   /// This is used only for the print layouts.
   void set_print_layout_row_height(double row_height);
+
+
+  /// This is used only for the print layouts.
+  double get_print_layout_row_line_width() const;
+    
+  /// This is used only for the print layouts.
+  void set_print_layout_row_line_width(double width);
+  
+  /// This is used only for the print layouts.
+  double get_print_layout_column_line_width() const;
+  
+  /// This is used only for the print layouts.
+  void set_print_layout_column_line_width(double width);
+  
+  /// This is used only for the print layouts.
+  Glib::ustring get_print_layout_line_color() const;
+  
+  /// This is used only for the print layouts.
+  void set_print_layout_line_color(const Glib::ustring& color);
   
   /** Get the number of rows that should be displayed.
    */
@@ -114,6 +133,8 @@ private:
 
   // This is used only for the print layouts.
   double m_print_layout_row_height;
+  double m_print_layout_row_line_width, m_print_layout_column_line_width;
+  Glib::ustring m_print_layout_line_color; //TODO: Patch GooCanvasTable to allow different colors for rows and columns?
 
   //If no navigation relationship has been specified then it will be automatically chosen or navigation will be disabled:
   navigation_type m_navigation_type;
diff --git a/glom/libglom/document/document.cc b/glom/libglom/document/document.cc
index 813ea1e..db45ac3 100644
--- a/glom/libglom/document/document.cc
+++ b/glom/libglom/document/document.cc
@@ -81,6 +81,10 @@ static const char GLOM_ATTRIBUTE_PORTAL_NAVIGATION_TYPE_NONE[] = "none";
 
 static const char GLOM_NODE_DATA_LAYOUT_CALENDAR_PORTAL[] = "data_layout_calendar_portal";
 static const char GLOM_ATTRIBUTE_PORTAL_PRINT_LAYOUT_ROW_HEIGHT[] = "row_height";
+static const char GLOM_ATTRIBUTE_PORTAL_PRINT_LAYOUT_ROW_LINE_WIDTH[] = "row_line_width";
+static const char GLOM_ATTRIBUTE_PORTAL_PRINT_LAYOUT_ROW_LINE_COLOR[] = "column_line_color";
+static const char GLOM_ATTRIBUTE_PORTAL_PRINT_LAYOUT_COLUMN_LINE_WIDTH[] = "row_line_width";
+static const char GLOM_ATTRIBUTE_PORTAL_PRINT_LAYOUT_LINE_COLOR[] = "line_color";
 static const char GLOM_ATTRIBUTE_PORTAL_CALENDAR_DATE_FIELD[] = "date_field";
 static const char GLOM_NODE_DATA_LAYOUT_ITEM[] = "data_layout_item"; //A field.
 static const char GLOM_NODE_LAYOUT_ITEM_CUSTOM_TITLE[] = "title_custom";
@@ -2366,8 +2370,20 @@ void Document::load_after_layout_group(const xmlpp::Element* node, const Glib::u
         }
 
         //Print Layout specific stuff:
-        portal->set_print_layout_row_height( get_node_attribute_value_as_decimal(element, GLOM_ATTRIBUTE_PORTAL_PRINT_LAYOUT_ROW_HEIGHT) );
-
+        portal->set_print_layout_row_height(
+          get_node_attribute_value_as_decimal(element, 
+            GLOM_ATTRIBUTE_PORTAL_PRINT_LAYOUT_ROW_HEIGHT) );
+            
+        portal->set_print_layout_row_line_width(
+          get_node_attribute_value_as_decimal(element, 
+            GLOM_ATTRIBUTE_PORTAL_PRINT_LAYOUT_ROW_LINE_WIDTH) );
+        portal->set_print_layout_column_line_width(
+          get_node_attribute_value_as_decimal(element, 
+            GLOM_ATTRIBUTE_PORTAL_PRINT_LAYOUT_COLUMN_LINE_WIDTH) );
+        portal->set_print_layout_line_color(
+          get_node_attribute_value(element, 
+            GLOM_ATTRIBUTE_PORTAL_PRINT_LAYOUT_LINE_COLOR) );
+                
         item_added = portal;
       }
       else if(element->get_name() == GLOM_NODE_DATA_LAYOUT_ITEM_GROUPBY)
@@ -3321,7 +3337,19 @@ void Document::save_before_layout_group(xmlpp::Element* node, const sharedptr<co
                 GLOM_ATTRIBUTE_PORTAL_ROWS_COUNT, portal->get_rows_count());
 
               //Print Layout specific stuff:
-              set_node_attribute_value_as_decimal(child, GLOM_ATTRIBUTE_PORTAL_PRINT_LAYOUT_ROW_HEIGHT, portal->get_print_layout_row_height());
+              set_node_attribute_value_as_decimal(child,
+                GLOM_ATTRIBUTE_PORTAL_PRINT_LAYOUT_ROW_HEIGHT, 
+                portal->get_print_layout_row_height());
+                
+              set_node_attribute_value_as_decimal(child,
+                GLOM_ATTRIBUTE_PORTAL_PRINT_LAYOUT_ROW_LINE_WIDTH, 
+                portal->get_print_layout_row_line_width());
+              set_node_attribute_value(child,
+                GLOM_ATTRIBUTE_PORTAL_PRINT_LAYOUT_ROW_LINE_COLOR, 
+                portal->get_print_layout_line_color());
+              set_node_attribute_value(child,
+                GLOM_ATTRIBUTE_PORTAL_PRINT_LAYOUT_LINE_COLOR, 
+                portal->get_print_layout_line_color());
             }
             else
             {
diff --git a/glom/mode_design/layout/dialog_layout_details.cc b/glom/mode_design/layout/dialog_layout_details.cc
index 1cd8cce..e608b9d 100644
--- a/glom/mode_design/layout/dialog_layout_details.cc
+++ b/glom/mode_design/layout/dialog_layout_details.cc
@@ -69,6 +69,8 @@ Dialog_Layout_Details::Dialog_Layout_Details(BaseObjectType* cobject, const Glib
   m_box_related_table_widgets->hide();
   builder->get_widget("frame_related_table_navigation", m_box_related_navigation);
   m_box_related_navigation->hide();
+  builder->get_widget("frame_lines", m_box_frame_lines);
+  m_box_frame_lines->hide();
 
   Gtk::Frame* box_calendar = 0;
   builder->get_widget("frame_calendar", box_calendar);
diff --git a/glom/mode_design/layout/dialog_layout_details.h b/glom/mode_design/layout/dialog_layout_details.h
index 70285f8..384c63f 100644
--- a/glom/mode_design/layout/dialog_layout_details.h
+++ b/glom/mode_design/layout/dialog_layout_details.h
@@ -105,6 +105,7 @@ protected:
   Gtk::Box* m_box_table_widgets;
   Gtk::Box* m_box_related_table_widgets;
   Gtk::Frame* m_box_related_navigation;
+  Gtk::Frame* m_box_frame_lines;
 
   Gtk::Button* m_button_up;
   Gtk::Button* m_button_down;
diff --git a/glom/mode_design/layout/dialog_layout_list_related.cc b/glom/mode_design/layout/dialog_layout_list_related.cc
index ec0f332..181c245 100644
--- a/glom/mode_design/layout/dialog_layout_list_related.cc
+++ b/glom/mode_design/layout/dialog_layout_list_related.cc
@@ -44,7 +44,10 @@ Dialog_Layout_List_Related::Dialog_Layout_List_Related(BaseObjectType* cobject,
   m_radio_navigation_none(0),
   m_radio_navigation_specify(0),
   m_label_navigation_automatic(0),
-  m_combo_navigation_specify(0)
+  m_combo_navigation_specify(0),
+  m_spinbutton_row_line_width(0),
+  m_spinbutton_column_line_width(0),
+  m_colorbutton_line(0)
 {
   // Show the appropriate alternate widgets:
   m_box_table_widgets->hide();
@@ -55,7 +58,7 @@ Dialog_Layout_List_Related::Dialog_Layout_List_Related(BaseObjectType* cobject,
   m_spinbutton_rows_count->set_range(0, 100); //Otherwise only 0 would be allowed.
   m_spinbutton_rows_count->set_increments(1, 10); //Otherwise the buttons do nothing.
   m_spinbutton_rows_count->signal_value_changed().connect(
-    sigc::mem_fun(*this, &Dialog_Layout_List_Related::on_spinbutton_rows_count_changed));
+    sigc::mem_fun(*this, &Dialog_Layout_List_Related::on_spinbutton_changed));
 
   builder->get_widget_derived("combo_relationship_name", m_combo_relationship);
   m_combo_relationship->signal_changed().connect(sigc::mem_fun(*this, &Dialog_Layout_List_Related::on_combo_relationship_changed));
@@ -76,6 +79,16 @@ Dialog_Layout_List_Related::Dialog_Layout_List_Related(BaseObjectType* cobject,
   make_sensitivity_depend_on_toggle_button(*m_radio_navigation_specify, *m_combo_navigation_specify);
   m_combo_navigation_specify->signal_changed().connect(sigc::mem_fun(*this, &Dialog_Layout_List_Related::on_combo_navigation_specific_changed));
 
+  builder->get_widget("spinbutton_row_line_width", m_spinbutton_row_line_width);
+  m_spinbutton_row_line_width->signal_value_changed().connect(
+    sigc::mem_fun(*this, &Dialog_Layout_List_Related::on_spinbutton_changed));
+  builder->get_widget("spinbutton_column_line_width", m_spinbutton_column_line_width);
+  m_spinbutton_column_line_width->signal_value_changed().connect(
+    sigc::mem_fun(*this, &Dialog_Layout_List_Related::on_spinbutton_changed));
+  builder->get_widget("colorbutton_line", m_colorbutton_line);
+  m_colorbutton_line->signal_color_set().connect(
+    sigc::mem_fun(*this, &Dialog_Layout_List_Related::on_spinbutton_changed));
+
 
   m_modified = false;
 
@@ -120,10 +133,19 @@ void Dialog_Layout_List_Related::set_document(const Glib::ustring& layout_name,
   Dialog_Layout::set_document(layout_name, layout_platform, document, actual_from_table, empty_fields);
   //m_table_name is now actually the parent_table_name.
 
-  //Hide unwanted widgets:
+  //Hide unwanted widgets and show extra ones:
   if(for_print_layout)
   {
     m_box_related_navigation->hide();
+    m_box_frame_lines->show();
+    
+    m_spinbutton_row_line_width->set_value(
+      portal->get_print_layout_row_line_width());
+    m_spinbutton_column_line_width->set_value(
+      portal->get_print_layout_column_line_width());
+
+    Gdk::Color color( portal->get_print_layout_line_color() );
+    m_colorbutton_line->set_color(color);
   }
   
   update_ui();
@@ -335,8 +357,15 @@ void Dialog_Layout_List_Related::save_to_document()
       m_portal->set_navigation_type(LayoutItem_Portal::NAVIGATION_NONE);
     }
     
-    std::cout << "debug: saving rows_count=" << m_spinbutton_rows_count->get_value() << std::endl;
     m_portal->set_rows_count( m_spinbutton_rows_count->get_value() );
+    
+   
+    m_portal->set_print_layout_row_line_width(
+      m_spinbutton_row_line_width->get_value());
+    m_portal->set_print_layout_column_line_width(
+      m_spinbutton_column_line_width->get_value());      
+    //TODO: Use GdkRGBA's color string (CSS) format instead, everywhere:
+    m_portal->set_print_layout_line_color( m_colorbutton_line->get_color().to_string() );
   }
 }
 
@@ -416,7 +445,7 @@ void Dialog_Layout_List_Related::on_combo_relationship_changed()
   m_modified = true;
 }
 
-void Dialog_Layout_List_Related::on_spinbutton_rows_count_changed()
+void Dialog_Layout_List_Related::on_spinbutton_changed()
 {
   m_modified = true;
 }
diff --git a/glom/mode_design/layout/dialog_layout_list_related.h b/glom/mode_design/layout/dialog_layout_list_related.h
index 02a6fc9..0880cab 100644
--- a/glom/mode_design/layout/dialog_layout_list_related.h
+++ b/glom/mode_design/layout/dialog_layout_list_related.h
@@ -66,7 +66,7 @@ protected:
   
   void on_combo_navigation_specific_changed();
   void on_checkbutton_show_child_relationships();
-  void on_spinbutton_rows_count_changed();
+  void on_spinbutton_changed();
 
   ComboBox_Relationship* m_combo_relationship;
   Gtk::CheckButton* m_checkbutton_show_child_relationships;
@@ -77,6 +77,10 @@ protected:
   Gtk::RadioButton* m_radio_navigation_specify;
   Gtk::Label* m_label_navigation_automatic;
   ComboBox_Relationship* m_combo_navigation_specify;
+  
+  Gtk::SpinButton* m_spinbutton_row_line_width;
+  Gtk::SpinButton* m_spinbutton_column_line_width;
+  Gtk::ColorButton* m_colorbutton_line;
 };
 
 } //namespace Glom
diff --git a/glom/print_layout/canvas_layout_item.cc b/glom/print_layout/canvas_layout_item.cc
index 7c71d3f..7feca5c 100644
--- a/glom/print_layout/canvas_layout_item.cc
+++ b/glom/print_layout/canvas_layout_item.cc
@@ -278,13 +278,10 @@ Glib::RefPtr<CanvasItemMovable> CanvasLayoutItem::create_canvas_item_for_layout_
           {
             Glib::RefPtr<CanvasTableMovable> canvas_item = CanvasTableMovable::create();
 
-            Glib::ustring stroke_color;
-            double stroke_width = 0;
-            CanvasGroupResizable::get_outline_stroke(stroke_color, stroke_width);
-
-            canvas_item->property_vert_grid_line_width() = stroke_width;
-            canvas_item->property_horz_grid_line_width() = stroke_width;
-            canvas_item->property_stroke_color() = stroke_color;
+            canvas_item->set_lines_details(
+              portal->get_print_layout_row_line_width(),
+              portal->get_print_layout_column_line_width(),
+              portal->get_print_layout_line_color());
 
             //Show as many rows as can fit in the height.
             double row_height = 0;
diff --git a/glom/utility_widgets/canvas/canvas_table_movable.cc b/glom/utility_widgets/canvas/canvas_table_movable.cc
index aad39d6..0325b88 100644
--- a/glom/utility_widgets/canvas/canvas_table_movable.cc
+++ b/glom/utility_widgets/canvas/canvas_table_movable.cc
@@ -28,6 +28,9 @@ namespace Glom
 
 
 CanvasTableMovable::CanvasTableMovable()
+: m_row_line_width(0),
+  m_column_line_width(0)
+  
 {
   signal_motion_notify_event().connect(sigc::mem_fun(*this, &CanvasItemMovable::on_motion_notify_event));
   signal_button_press_event().connect(sigc::mem_fun(*this, &CanvasItemMovable::on_button_press_event));
@@ -181,18 +184,30 @@ Goocanvas::Canvas* CanvasTableMovable::get_parent_canvas_widget()
   return get_canvas();
 }
 
+void CanvasTableMovable::set_lines_details(double row_line_width, double column_line_width, const Glib::ustring& color)
+{
+  m_column_line_width = row_line_width;
+  m_row_line_width = column_line_width;
+  m_line_color = color;
+  
+  set_lines_visibility(false);
+}
+
 void CanvasTableMovable::set_lines_visibility(bool show)
 {
-  if(show)
+  if(show && 
+    (m_line_color.empty() || ((m_row_line_width == 0) && (m_column_line_width == 0))))
   {
+    //TODO: Use constants or function calls from somewhere else:
     property_vert_grid_line_width() = 0.5f;
     property_horz_grid_line_width() = 0.5f;
     property_stroke_color() = "black";
   }
   else
   {
-    property_vert_grid_line_width() = 0.0f;
-    property_horz_grid_line_width() = 0.0f;
+    property_vert_grid_line_width() = m_column_line_width;
+    property_horz_grid_line_width() = m_row_line_width;
+    property_stroke_color() = m_line_color;
   }
 }
 
diff --git a/glom/utility_widgets/canvas/canvas_table_movable.h b/glom/utility_widgets/canvas/canvas_table_movable.h
index 3c4188b..eabee27 100644
--- a/glom/utility_widgets/canvas/canvas_table_movable.h
+++ b/glom/utility_widgets/canvas/canvas_table_movable.h
@@ -44,7 +44,10 @@ public:
   virtual void set_width_height(double width, double height);
   virtual void set_grid(const Glib::RefPtr<const CanvasGroupGrid>& grid);
 
-  /** Show horizontal and vertical grid lines.
+  void set_lines_details(double row_line_width, double column_line_width, const Glib::ustring& color);
+
+  /** Show horizontal and vertical grid lines, if they were not shown already somehow.
+   * @param show If this is false then the normal lines will be shown, or no lines. See set_line_details().
    */
   void set_lines_visibility(bool show = true);
 
@@ -63,6 +66,9 @@ private:
   void snap_position_one_corner(Corners corner, double& x, double& y) const;
 
   virtual void snap_position(double& x, double& y) const;
+  
+  double m_row_line_width, m_column_line_width;
+  Glib::ustring m_line_color;
 };
 
 } //namespace Glom
diff --git a/ui/developer/window_data_layout.glade b/ui/developer/window_data_layout.glade
index aa2168d..4579340 100644
--- a/ui/developer/window_data_layout.glade
+++ b/ui/developer/window_data_layout.glade
@@ -2,6 +2,16 @@
 <interface>
   <requires lib="gtk+" version="2.16"/>
   <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkAdjustment" id="adjustment_column_line_width">
+    <property name="upper">100</property>
+    <property name="step_increment">0.5</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment_row_line_width">
+    <property name="upper">100</property>
+    <property name="step_increment">0.5</property>
+    <property name="page_increment">10</property>
+  </object>
   <object class="GtkWindow" id="window_data_layout">
     <property name="can_focus">False</property>
     <property name="border_width">12</property>
@@ -461,26 +471,26 @@
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkButton" id="button_add_group">
+                          <object class="GtkButton" id="button_add_image">
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
                             <property name="can_default">True</property>
                             <property name="receives_default">False</property>
-                            <property name="tooltip_text" translatable="yes">Add a group which can contain other layout items. Use this to group items together, such as fields.</property>
+                            <property name="tooltip_text" translatable="yes">Add an image to the layout, such as a logo. The image will be the same for every record viewed. To show an image field from a record, to show different images for each field, use the field layout item.</property>
                             <property name="use_action_appearance">False</property>
                             <child>
-                              <object class="GtkAlignment" id="alignment17">
+                              <object class="GtkAlignment" id="alignment86">
                                 <property name="visible">True</property>
                                 <property name="can_focus">False</property>
                                 <property name="xscale">0</property>
                                 <property name="yscale">0</property>
                                 <child>
-                                  <object class="GtkHBox" id="hbox17">
+                                  <object class="GtkHBox" id="hbox110">
                                     <property name="visible">True</property>
                                     <property name="can_focus">False</property>
                                     <property name="spacing">2</property>
                                     <child>
-                                      <object class="GtkImage" id="image8">
+                                      <object class="GtkImage" id="image47">
                                         <property name="visible">True</property>
                                         <property name="can_focus">False</property>
                                         <property name="stock">gtk-add</property>
@@ -492,10 +502,10 @@
                                       </packing>
                                     </child>
                                     <child>
-                                      <object class="GtkLabel" id="label56">
+                                      <object class="GtkLabel" id="label240">
                                         <property name="visible">True</property>
                                         <property name="can_focus">False</property>
-                                        <property name="label" translatable="yes">Add _Group</property>
+                                        <property name="label">Add Image</property>
                                         <property name="use_underline">True</property>
                                       </object>
                                       <packing>
@@ -516,26 +526,26 @@
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkButton" id="button_add_image">
+                          <object class="GtkButton" id="button_add_group">
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
                             <property name="can_default">True</property>
                             <property name="receives_default">False</property>
-                            <property name="tooltip_text" translatable="yes">Add an image to the layout, such as a logo. The image will be the same for every record viewed. To show an image field from a record, to show different images for each field, use the field layout item.</property>
+                            <property name="tooltip_text" translatable="yes">Add a group which can contain other layout items. Use this to group items together, such as fields.</property>
                             <property name="use_action_appearance">False</property>
                             <child>
-                              <object class="GtkAlignment" id="alignment86">
+                              <object class="GtkAlignment" id="alignment17">
                                 <property name="visible">True</property>
                                 <property name="can_focus">False</property>
                                 <property name="xscale">0</property>
                                 <property name="yscale">0</property>
                                 <child>
-                                  <object class="GtkHBox" id="hbox110">
+                                  <object class="GtkHBox" id="hbox17">
                                     <property name="visible">True</property>
                                     <property name="can_focus">False</property>
                                     <property name="spacing">2</property>
                                     <child>
-                                      <object class="GtkImage" id="image47">
+                                      <object class="GtkImage" id="image8">
                                         <property name="visible">True</property>
                                         <property name="can_focus">False</property>
                                         <property name="stock">gtk-add</property>
@@ -547,10 +557,10 @@
                                       </packing>
                                     </child>
                                     <child>
-                                      <object class="GtkLabel" id="label240">
+                                      <object class="GtkLabel" id="label56">
                                         <property name="visible">True</property>
                                         <property name="can_focus">False</property>
-                                        <property name="label">Add Image</property>
+                                        <property name="label" translatable="yes">Add _Group</property>
                                         <property name="use_underline">True</property>
                                       </object>
                                       <packing>
@@ -969,6 +979,36 @@
           </packing>
         </child>
         <child>
+          <object class="GtkHButtonBox" id="hbuttonbox7">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="spacing">6</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="button_close">
+                <property name="label">gtk-close</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_action_appearance">False</property>
+                <property name="use_stock">True</property>
+              </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="pack_type">end</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
           <object class="GtkFrame" id="frame_calendar">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
@@ -1023,37 +1063,7 @@
           <packing>
             <property name="expand">False</property>
             <property name="fill">False</property>
-            <property name="position">3</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkHButtonBox" id="hbuttonbox7">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="spacing">6</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="button_close">
-                <property name="label">gtk-close</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_action_appearance">False</property>
-                <property name="use_stock">True</property>
-              </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="pack_type">end</property>
-            <property name="position">3</property>
+            <property name="position">4</property>
           </packing>
         </child>
         <child>
@@ -1078,6 +1088,7 @@
                 <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="primary_icon_activatable">False</property>
                 <property name="secondary_icon_activatable">False</property>
                 <property name="primary_icon_sensitive">True</property>
@@ -1096,6 +1107,147 @@
             <property name="position">5</property>
           </packing>
         </child>
+        <child>
+          <object class="GtkFrame" id="frame_lines">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="alignment2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkHBox" id="hbox2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkTable" id="table1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="n_rows">3</property>
+                        <property name="n_columns">2</property>
+                        <property name="column_spacing">6</property>
+                        <property name="row_spacing">6</property>
+                        <child>
+                          <object class="GtkLabel" id="label3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Row Line Width:</property>
+                          </object>
+                          <packing>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" id="spinbutton_row_line_width">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="invisible_char">â</property>
+                            <property name="primary_icon_activatable">False</property>
+                            <property name="secondary_icon_activatable">False</property>
+                            <property name="primary_icon_sensitive">True</property>
+                            <property name="secondary_icon_sensitive">True</property>
+                            <property name="adjustment">adjustment_row_line_width</property>
+                            <property name="digits">3</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="spinbutton_line_column_width">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Column Line Width:</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" id="spinbutton_column_line_width">
+                            <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="primary_icon_activatable">False</property>
+                            <property name="secondary_icon_activatable">False</property>
+                            <property name="primary_icon_sensitive">True</property>
+                            <property name="secondary_icon_sensitive">True</property>
+                            <property name="adjustment">adjustment_column_line_width</property>
+                            <property name="digits">3</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="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label6">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label" translatable="yes">Line Color:
+</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">2</property>
+                            <property name="bottom_attach">3</property>
+                            <property name="y_options"></property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkColorButton" id="colorbutton_line">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <property name="use_action_appearance">False</property>
+                            <property name="color">#000000000000</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="y_options"></property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="label_lines">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Lines&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">6</property>
+          </packing>
+        </child>
       </object>
     </child>
   </object>



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