summaryrefslogtreecommitdiff
path: root/plugins/gtk+/glade-image-item-editor.c
diff options
context:
space:
mode:
authorTristan Van Berkom <tristan.van.berkom@gmail.com>2011-01-07 22:48:48 +0900
committerTristan Van Berkom <tristan.van.berkom@gmail.com>2011-01-07 22:49:44 +0900
commit31cc1165e751c8a3283945b8035a2d5d6fb19165 (patch)
treed75ba12a5cb0d15bf1c6389146a0c2f5956b9725 /plugins/gtk+/glade-image-item-editor.c
parente1fd5a3d402459dc8d28a193117bb0828330b2d9 (diff)
downloadglade-31cc1165e751c8a3283945b8035a2d5d6fb19165.tar.gz
* gladeui/glade-editable.[ch], plugins/gtk+/.. [ All GladeEditable editors ].
GladeEditable now watches the project for changes and updates itself by way of the base class implementation (and is fixed for removed widgets that no longer have a project pointer available), also glade_editable_block/unblock() is added for implementations to avoid firing implicit loads while executing commands... all custom editors updated to lose much code.
Diffstat (limited to 'plugins/gtk+/glade-image-item-editor.c')
-rw-r--r--plugins/gtk+/glade-image-item-editor.c61
1 files changed, 10 insertions, 51 deletions
diff --git a/plugins/gtk+/glade-image-item-editor.c b/plugins/gtk+/glade-image-item-editor.c
index f6be1b09..374d8e35 100644
--- a/plugins/gtk+/glade-image-item-editor.c
+++ b/plugins/gtk+/glade-image-item-editor.c
@@ -33,6 +33,7 @@ static void glade_image_item_editor_editable_init (GladeEditableIface * iface);
static void glade_image_item_editor_grab_focus (GtkWidget * widget);
+static GladeEditableIface *parent_editable_iface;
G_DEFINE_TYPE_WITH_CODE (GladeImageItemEditor, glade_image_item_editor,
GTK_TYPE_VBOX,
@@ -55,30 +56,6 @@ glade_image_item_editor_init (GladeImageItemEditor * self)
{
}
-static void
-project_changed (GladeProject * project,
- GladeCommand * command,
- gboolean execute, GladeImageItemEditor * item_editor)
-{
- if (item_editor->modifying ||
- !gtk_widget_get_mapped (GTK_WIDGET (item_editor)))
- return;
-
- /* Reload on all commands */
- glade_editable_load (GLADE_EDITABLE (item_editor),
- item_editor->loaded_widget);
-}
-
-
-static void
-project_finalized (GladeImageItemEditor * item_editor,
- GladeProject * where_project_was)
-{
- item_editor->loaded_widget = NULL;
-
- glade_editable_load (GLADE_EDITABLE (item_editor), NULL);
-}
-
static GladeWidget *
get_image_widget (GladeWidget * widget)
{
@@ -95,34 +72,14 @@ glade_image_item_editor_load (GladeEditable * editable, GladeWidget * widget)
GList *l;
gboolean use_stock = FALSE;
- item_editor->loading = TRUE;
-
- /* Since we watch the project */
- if (item_editor->loaded_widget)
- {
- g_signal_handlers_disconnect_by_func (glade_widget_get_project (item_editor->loaded_widget),
- G_CALLBACK (project_changed),
- item_editor);
+ /* Chain up to default implementation */
+ parent_editable_iface->load (editable, widget);
- /* The widget could die unexpectedly... */
- g_object_weak_unref (G_OBJECT (glade_widget_get_project (item_editor->loaded_widget)),
- (GWeakNotify) project_finalized, item_editor);
- }
+ item_editor->loading = TRUE;
/* Mark our widget... */
item_editor->loaded_widget = widget;
- if (item_editor->loaded_widget)
- {
- /* This fires for undo/redo */
- g_signal_connect (glade_widget_get_project (item_editor->loaded_widget),
- "changed", G_CALLBACK (project_changed), item_editor);
-
- /* The widget/project could die unexpectedly... */
- g_object_weak_ref (G_OBJECT (glade_widget_get_project (item_editor->loaded_widget)),
- (GWeakNotify) project_finalized, item_editor);
- }
-
/* load the embedded editable... */
if (item_editor->embed)
glade_editable_load (GLADE_EDITABLE (item_editor->embed), widget);
@@ -169,6 +126,8 @@ glade_image_item_editor_set_show_name (GladeEditable * editable,
static void
glade_image_item_editor_editable_init (GladeEditableIface * iface)
{
+ parent_editable_iface = g_type_default_interface_peek (GLADE_TYPE_EDITABLE);
+
iface->load = glade_image_item_editor_load;
iface->set_show_name = glade_image_item_editor_set_show_name;
}
@@ -212,7 +171,7 @@ stock_toggled (GtkWidget * widget, GladeImageItemEditor * item_editor)
(GTK_TOGGLE_BUTTON (item_editor->stock_radio)))
return;
- item_editor->modifying = TRUE;
+ glade_editable_block (GLADE_EDITABLE (item_editor));
loaded = item_editor->loaded_widget;
glade_command_push_group (_("Setting %s to use a stock item"), glade_widget_get_name (loaded));
@@ -238,7 +197,7 @@ stock_toggled (GtkWidget * widget, GladeImageItemEditor * item_editor)
glade_command_pop_group ();
- item_editor->modifying = FALSE;
+ glade_editable_unblock (GLADE_EDITABLE (item_editor));
/* reload buttons and sensitivity and stuff... */
glade_editable_load (GLADE_EDITABLE (item_editor),
@@ -258,7 +217,7 @@ custom_toggled (GtkWidget * widget, GladeImageItemEditor * item_editor)
(GTK_TOGGLE_BUTTON (item_editor->custom_radio)))
return;
- item_editor->modifying = TRUE;
+ glade_editable_block (GLADE_EDITABLE (item_editor));
adaptor = glade_widget_get_adaptor (item_editor->loaded_widget);
@@ -303,7 +262,7 @@ custom_toggled (GtkWidget * widget, GladeImageItemEditor * item_editor)
}
glade_command_pop_group ();
- item_editor->modifying = FALSE;
+ glade_editable_unblock (GLADE_EDITABLE (item_editor));
/* reload buttons and sensitivity and stuff... */
glade_editable_load (GLADE_EDITABLE (item_editor),