diff interface.c @ 15:7dbf3879939a

removed support.*
author meillo@marmaro.de
date Thu, 04 Mar 2010 19:16:10 +0100
parents da18f2d4f92f
children 88b8856fccf5
line wrap: on
line diff
--- a/interface.c	Thu Mar 04 18:31:28 2010 +0100
+++ b/interface.c	Thu Mar 04 19:16:10 2010 +0100
@@ -10,7 +10,6 @@
 
 #include "main.h"
 #include "callbacks.h"
-#include "support.h"
 
 #define GLADE_HOOKUP_OBJECT(component,widget,name) \
   g_object_set_data_full(G_OBJECT(component), name, \
@@ -19,6 +18,43 @@
 #define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \
   g_object_set_data(G_OBJECT(component), name, widget)
 
+
+/*
+ * This function returns a widget in a component created by Glade.
+ * Call it with the toplevel widget in the component (i.e. a window/dialog),
+ * or alternatively any widget in the component, and the name of the widget
+ * you want returned.
+ */
+GtkWidget*
+lookup_widget(GtkWidget* widget, const gchar* widget_name)
+{
+	GtkWidget* parent;
+	GtkWidget* found_widget;
+
+	for (;;) {
+		if (GTK_IS_MENU(widget)) {
+			parent = gtk_menu_get_attach_widget(GTK_MENU(widget));
+		} else {
+			parent = widget->parent;
+		}
+		if (!parent) {
+			parent = (GtkWidget*) g_object_get_data(G_OBJECT(widget), "GladeParentKey");
+		}
+		if (parent == NULL) {
+			break;
+		}
+		widget = parent;
+	}
+
+	found_widget = (GtkWidget*) g_object_get_data(G_OBJECT(widget), widget_name);
+	if (!found_widget) {
+		g_warning("Widget not found: %s", widget_name);
+	}
+	return found_widget;
+}
+
+
+
 GtkWidget*
 create_cropper_window(void)
 {