summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan Van Berkom <tvb@src.gnome.org>2008-11-19 19:27:28 +0000
committerTristan Van Berkom <tvb@src.gnome.org>2008-11-19 19:27:28 +0000
commita41091f48d8c2f9322cf5b05277ebcb84d9b130c (patch)
treee100d8d1afa81985fa47252380003de41319169e
parent7aa8246273ee56bc82e7344720d17065e65a85b0 (diff)
downloadglade-a41091f48d8c2f9322cf5b05277ebcb84d9b130c.tar.gz
hide property/attribute when not needed, fixed saving properties.
svn path=/trunk/; revision=2036
-rw-r--r--plugins/gtk+/glade-cell-renderer-editor.c27
-rw-r--r--plugins/gtk+/glade-gtk.c2
2 files changed, 28 insertions, 1 deletions
diff --git a/plugins/gtk+/glade-cell-renderer-editor.c b/plugins/gtk+/glade-cell-renderer-editor.c
index 623ab3d3..9a32ae2c 100644
--- a/plugins/gtk+/glade-cell-renderer-editor.c
+++ b/plugins/gtk+/glade-cell-renderer-editor.c
@@ -42,6 +42,11 @@ typedef struct {
GladePropertyClass *pclass;
GladePropertyClass *attr_pclass;
GladePropertyClass *use_attr_pclass;
+
+ GtkWidget *use_prop_label;
+ GtkWidget *use_attr_label;
+ GtkWidget *use_prop_eprop;
+ GtkWidget *use_attr_eprop;
} CheckTab;
G_DEFINE_TYPE_WITH_CODE (GladeCellRendererEditor, glade_cell_renderer_editor, GTK_TYPE_VBOX,
@@ -140,6 +145,22 @@ glade_cell_renderer_editor_load (GladeEditable *editable,
glade_widget_property_get (widget, tab->use_attr_pclass->id, &use_attr);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tab->attributes_check), use_attr);
+
+
+ if (use_attr)
+ {
+ gtk_widget_show (tab->use_attr_label);
+ gtk_widget_show (tab->use_attr_eprop);
+ gtk_widget_hide (tab->use_prop_label);
+ gtk_widget_hide (tab->use_prop_eprop);
+ }
+ else
+ {
+ gtk_widget_show (tab->use_prop_label);
+ gtk_widget_show (tab->use_prop_eprop);
+ gtk_widget_hide (tab->use_attr_label);
+ gtk_widget_hide (tab->use_attr_eprop);
+ }
}
}
renderer_editor->loading = FALSE;
@@ -441,6 +462,9 @@ glade_cell_renderer_editor_new (GladeWidgetAdaptor *adaptor,
renderer_editor->properties = g_list_prepend (renderer_editor->properties, eprop);
gtk_size_group_add_widget (input_group, GTK_WIDGET (eprop));
+ tab->use_prop_label = eprop->item_label;
+ tab->use_prop_eprop = GTK_WIDGET (eprop);
+
/* Edit attribute */
eprop = glade_widget_adaptor_create_eprop (adaptor, attr_pclass, TRUE);
table_attach (table, eprop->item_label, 0, rows);
@@ -448,6 +472,9 @@ glade_cell_renderer_editor_new (GladeWidgetAdaptor *adaptor,
renderer_editor->properties = g_list_prepend (renderer_editor->properties, eprop);
gtk_size_group_add_widget (input_group, GTK_WIDGET (eprop));
+ tab->use_attr_label = eprop->item_label;
+ tab->use_attr_eprop = GTK_WIDGET (eprop);
+
g_signal_connect (G_OBJECT (tab->attributes_check), "toggled",
G_CALLBACK (attributes_toggled), tab);
diff --git a/plugins/gtk+/glade-gtk.c b/plugins/gtk+/glade-gtk.c
index a2d75a77..5e073157 100644
--- a/plugins/gtk+/glade-gtk.c
+++ b/plugins/gtk+/glade-gtk.c
@@ -10374,7 +10374,7 @@ glade_gtk_cell_renderer_write_properties (GladeWidget *widget,
glade_widget_property_get (widget, use_attr_str, &use_attr);
attr_name = &property->klass->id[attr_len];
- prop = glade_widget_get_property (widget, "attr_name");
+ prop = glade_widget_get_property (widget, attr_name);
if (!use_attr && prop)
glade_property_write (prop, context, node);