[glade/offscreen-design-layout] * gladeui/glade-signal-model.c: Watch the "support-changed" signal on GladeWidget and update sup
- From: Juan Pablo Ugarte <jpu src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glade/offscreen-design-layout] * gladeui/glade-signal-model.c: Watch the "support-changed" signal on GladeWidget and update sup
- Date: Sat, 22 Jan 2011 17:49:21 +0000 (UTC)
commit 76677e6f0718c16b53d80b612e7d6663ae4a84bd
Author: Tristan Van Berkom <tristan van berkom gmail com>
Date: Thu Jan 13 18:21:07 2011 +0900
* gladeui/glade-signal-model.c: Watch the "support-changed" signal on GladeWidget and
update support warnings on dummy rows as well as emit "row-changed" for all rows
* gladeui/glade-signal-editor.c: Left align the warning icon and expand the first
row of the signal tree when loading a widget.
ChangeLog | 8 ++++++
gladeui/glade-signal-editor.c | 13 +++++++++-
gladeui/glade-signal-model.c | 55 ++++++++++++++++++++++++++++++++++------
gladeui/glade-signal.c | 2 +
4 files changed, 68 insertions(+), 10 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 6df5d45..bca39dd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2011-01-13 Tristan Van Berkom <tristanvb openismus com>
+
+ * gladeui/glade-signal-model.c: Watch the "support-changed" signal on GladeWidget and
+ update support warnings on dummy rows as well as emit "row-changed" for all rows
+
+ * gladeui/glade-signal-editor.c: Left align the warning icon and expand the first
+ row of the signal tree when loading a widget.
+
2011-01-12 Tristan Van Berkom <tristanvb openismus com>
* gladeui/glade-palette.c: Fixed leaking project (set_project NULL when
diff --git a/gladeui/glade-signal-editor.c b/gladeui/glade-signal-editor.c
index 9c63aef..337a6a9 100644
--- a/gladeui/glade-signal-editor.c
+++ b/gladeui/glade-signal-editor.c
@@ -395,6 +395,8 @@ glade_signal_editor_load_widget (GladeSignalEditor *editor,
GladeWidget *widget)
{
GladeSignalEditorPrivate *priv = editor->priv;
+ GtkTreePath *path;
+ GtkTreeIter iter;
if (priv->widget != widget)
{
@@ -416,6 +418,13 @@ glade_signal_editor_load_widget (GladeSignalEditor *editor,
priv->model = glade_widget_get_signal_model (widget);
gtk_tree_view_set_model (GTK_TREE_VIEW (priv->signal_tree), priv->model);
+
+ if (gtk_tree_model_iter_children (priv->model, &iter, NULL))
+ {
+ path = gtk_tree_model_get_path (priv->model, &iter);
+ gtk_tree_view_expand_row (GTK_TREE_VIEW (priv->signal_tree), path, FALSE);
+ gtk_tree_path_free (path);
+ }
}
/**
@@ -751,7 +760,9 @@ glade_signal_editor_init (GladeSignalEditor *self)
/* version warning */
renderer = gtk_cell_renderer_pixbuf_new ();
- g_object_set (G_OBJECT (renderer), "icon-name", GTK_STOCK_DIALOG_WARNING,
+ g_object_set (G_OBJECT (renderer),
+ "icon-name", GTK_STOCK_DIALOG_WARNING,
+ "xalign", 0.0,
NULL);
gtk_tree_view_column_set_cell_data_func (priv->column_name, renderer,
glade_signal_editor_warning_cell_data_func,
diff --git a/gladeui/glade-signal-model.c b/gladeui/glade-signal-model.c
index b2fccd4..25e79c1 100644
--- a/gladeui/glade-signal-model.c
+++ b/gladeui/glade-signal-model.c
@@ -56,6 +56,7 @@ static void on_glade_signal_model_removed (GladeWidget* widget, const GladeSigna
GladeSignalModel* model);
static void on_glade_signal_model_changed (GladeWidget* widget, const GladeSignal* signal,
GladeSignalModel* model);
+static void on_glade_widget_support_changed (GladeWidget *widget, GladeSignalModel* model);
G_DEFINE_TYPE_WITH_CODE (GladeSignalModel, glade_signal_model, G_TYPE_OBJECT,
G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_MODEL,
@@ -133,12 +134,12 @@ glade_signal_model_set_property (GObject *object, guint prop_id, const GValue *v
g_signal_connect (sig_model->priv->widget,
"add-signal-handler",
G_CALLBACK (on_glade_signal_model_added), sig_model);
- g_signal_connect (sig_model->priv->widget,
- "remove-signal-handler",
+ g_signal_connect (sig_model->priv->widget, "remove-signal-handler",
G_CALLBACK (on_glade_signal_model_removed), sig_model);
- g_signal_connect (sig_model->priv->widget,
- "change-signal-handler",
- G_CALLBACK (on_glade_signal_model_changed), sig_model);
+ g_signal_connect (sig_model->priv->widget, "change-signal-handler",
+ G_CALLBACK (on_glade_signal_model_changed), sig_model);
+ g_signal_connect (sig_model->priv->widget, "support-changed",
+ G_CALLBACK (on_glade_widget_support_changed), sig_model);
break;
case PROP_SIGNALS:
sig_model->priv->signals = g_value_get_pointer (value);
@@ -294,6 +295,8 @@ glade_signal_model_get_dummy_handler (GladeSignalModel* model,
g_hash_table_insert (model->priv->dummy_signals,
(gpointer) glade_signal_class_get_name (sig_class),
signal);
+
+ glade_project_verify_signal (model->priv->widget, signal);
}
return signal;
}
@@ -389,14 +392,12 @@ on_glade_signal_model_changed (GladeWidget* widget, const GladeSignal* signal,
{
GtkTreeIter iter;
GtkTreePath* path;
- const GladeSignalClass* sig_class =
- glade_signal_get_class (signal);
+ const GladeSignalClass* sig_class = glade_signal_get_class (signal);
glade_signal_model_create_signal_iter (model,
glade_signal_class_get_type (sig_class),
signal,
&iter);
- path = gtk_tree_model_get_path (GTK_TREE_MODEL (model),
- &iter);
+ path = gtk_tree_model_get_path (GTK_TREE_MODEL (model), &iter);
gtk_tree_model_row_changed (GTK_TREE_MODEL (model),
path,
&iter);
@@ -404,6 +405,42 @@ on_glade_signal_model_changed (GladeWidget* widget, const GladeSignal* signal,
model->priv->stamp++;
}
+static void
+verify_dummies (const gchar *signal_name,
+ GladeSignal *signal,
+ GladeSignalModel *model)
+{
+ glade_project_verify_signal (model->priv->widget, signal);
+
+ on_glade_signal_model_changed (model->priv->widget, signal, model);
+}
+
+static void
+emit_changed (const gchar *signal_name,
+ GPtrArray *signals,
+ GladeSignalModel *model)
+{
+ gint i;
+ GladeSignal *signal;
+
+ for (i = 0; i < signals->len; i++)
+ {
+ signal = (GladeSignal *)signals->pdata[i];
+ on_glade_signal_model_changed (model->priv->widget, signal, model);
+ }
+}
+
+static void
+on_glade_widget_support_changed (GladeWidget *widget,
+ GladeSignalModel *model)
+{
+ /* Update support warning on dummy signals */
+ g_hash_table_foreach (model->priv->dummy_signals, (GHFunc)verify_dummies, model);
+
+ /* row changed on every row */
+ g_hash_table_foreach (model->priv->signals, (GHFunc)emit_changed, model);
+}
+
static gboolean
glade_signal_model_get_iter (GtkTreeModel* model,
GtkTreeIter* iter,
diff --git a/gladeui/glade-signal.c b/gladeui/glade-signal.c
index 73efb99..77c8d1a 100644
--- a/gladeui/glade-signal.c
+++ b/gladeui/glade-signal.c
@@ -238,6 +238,8 @@ glade_signal_new (const GladeSignalClass* sig_class,
gboolean after,
gboolean swapped)
{
+ g_return_if_fail (sig_class != NULL);
+
return (GladeSignal *)g_object_new (GLADE_TYPE_SIGNAL,
"class", sig_class,
"handler", handler,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]