[glade/ui-incubator: 1/7] Set minimun and maximun GladeEditorTable property name labels char width. minimun is set to the aver



commit 12a9441d5e1d66cf9bd6a1a2c033baf052c6ea3a
Author: Juan Pablo Ugarte <juanpablougarte gmail com>
Date:   Wed Oct 31 12:48:09 2012 -0700

    Set minimun and maximun GladeEditorTable property name labels char width.
    minimun is set to the average and max is the average plus a third of the difference with the longest name.
    
    Added new function glade_editor_property_label_set_width_chars()

 gladeui/glade-editor-property.c |   13 +++++++++++++
 gladeui/glade-editor-property.h |    4 ++++
 gladeui/glade-editor-table.c    |   29 +++++++++++++++++++++++++++++
 3 files changed, 46 insertions(+), 0 deletions(-)
---
diff --git a/gladeui/glade-editor-property.c b/gladeui/glade-editor-property.c
index 79186f1..bf3cd3f 100644
--- a/gladeui/glade-editor-property.c
+++ b/gladeui/glade-editor-property.c
@@ -177,6 +177,18 @@ glade_editor_property_loading (GladeEditorProperty *eprop)
   return eprop->priv->loading;
 }
 
+
+void
+glade_editor_property_label_set_width_chars (GladeEditorProperty *eprop,
+                                             gint width,
+                                             gint max_width)
+{
+  g_return_if_fail (GLADE_IS_EDITOR_PROPERTY (eprop));
+
+  gtk_label_set_width_chars (GTK_LABEL (eprop->priv->label), width);
+  gtk_label_set_max_width_chars (GTK_LABEL (eprop->priv->label), max_width);
+}
+
 static void
 glade_editor_property_tooltip_cb (GladeProperty *property,
                                   const gchar *tooltip,
@@ -354,6 +366,7 @@ glade_editor_property_constructor (GType type,
 
   gtk_label_set_line_wrap (GTK_LABEL (eprop->priv->label), TRUE);
   gtk_label_set_width_chars (GTK_LABEL (eprop->priv->label), 10);
+  gtk_widget_set_halign (eprop->priv->label, GTK_ALIGN_START);
   gtk_label_set_line_wrap_mode (GTK_LABEL (eprop->priv->label), PANGO_WRAP_WORD_CHAR);
 
   gtk_misc_set_alignment (GTK_MISC (eprop->priv->label), 0.0, 0.5);
diff --git a/gladeui/glade-editor-property.h b/gladeui/glade-editor-property.h
index d1678ae..0793a34 100644
--- a/gladeui/glade-editor-property.h
+++ b/gladeui/glade-editor-property.h
@@ -116,6 +116,10 @@ GladePropertyClass  *glade_editor_property_get_pclass      (GladeEditorProperty
 GladeProperty       *glade_editor_property_get_property    (GladeEditorProperty *eprop);
 gboolean             glade_editor_property_loading         (GladeEditorProperty *eprop);
 
+void                 glade_editor_property_label_set_width_chars (GladeEditorProperty *eprop,
+                                                                  gint width,
+                                                                  gint max_width);
+
 gboolean             glade_editor_property_show_i18n_dialog (GtkWidget            *parent,
 							     gchar               **text,
 							     gchar               **context,
diff --git a/gladeui/glade-editor-table.c b/gladeui/glade-editor-table.c
index a82a29c..c6e2538 100644
--- a/gladeui/glade-editor-table.c
+++ b/gladeui/glade-editor-table.c
@@ -268,6 +268,33 @@ glade_editor_table_update_show_template (GladeEditable *editable, gboolean load)
 }
 
 static void
+refresh_names_width (GladeEditorTable *table)
+{
+  GladeEditorTablePrivate *priv = table->priv;
+  gint i, width = 0, widthest = 0;
+  GList *l;
+  
+  for (i = 0, l = priv->properties; l; l = g_list_next (l), i++)
+    {
+      GladePropertyClass *pclass = glade_editor_property_get_pclass (l->data);
+      gint w;
+
+      w = strlen (glade_property_class_get_name (pclass));
+      if (w > widthest) widthest = w;
+      width += w;
+    }
+
+  if (priv->properties)
+    {
+      gint average = width / i;
+      gint max = (widthest-average)/3 + average;
+
+      for (l = priv->properties; l; l = g_list_next (l))
+        glade_editor_property_label_set_width_chars (l->data, average, max);
+    }
+}
+
+static void
 glade_editor_table_load (GladeEditable * editable, GladeWidget * widget)
 {
   GladeEditorTable *table = GLADE_EDITOR_TABLE (editable);
@@ -279,6 +306,8 @@ glade_editor_table_load (GladeEditable * editable, GladeWidget * widget)
   if (priv->loaded_widget == widget)
     return;
 
+  refresh_names_width (table);
+  
   if (priv->loaded_widget)
     {
       g_signal_handlers_disconnect_by_func (G_OBJECT (priv->loaded_widget),



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