aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher James Lahey <clahey@ximian.com>2002-03-26 03:33:20 +0800
committerChris Lahey <clahey@src.gnome.org>2002-03-26 03:33:20 +0800
commita020c2bd2ff5b6f417fb836c3b461ca7aaa915f2 (patch)
tree4eb7eb5d6c60e088f8c5b1171b56d6eb7dc2ea43
parent660118fcbe6e5d08d2c54588bfd0a58b5d346f20 (diff)
downloadgsoc2013-evolution-a020c2bd2ff5b6f417fb836c3b461ca7aaa915f2.tar
gsoc2013-evolution-a020c2bd2ff5b6f417fb836c3b461ca7aaa915f2.tar.gz
gsoc2013-evolution-a020c2bd2ff5b6f417fb836c3b461ca7aaa915f2.tar.bz2
gsoc2013-evolution-a020c2bd2ff5b6f417fb836c3b461ca7aaa915f2.tar.lz
gsoc2013-evolution-a020c2bd2ff5b6f417fb836c3b461ca7aaa915f2.tar.xz
gsoc2013-evolution-a020c2bd2ff5b6f417fb836c3b461ca7aaa915f2.tar.zst
gsoc2013-evolution-a020c2bd2ff5b6f417fb836c3b461ca7aaa915f2.zip
Added widgets/e-option-menu.lo.
2002-03-25 Christopher James Lahey <clahey@ximian.com> * gal/Makefile.am (libgal_la_LIBADD): Added widgets/e-option-menu.lo. * gal/util/e-util.c, gal/util/e-util.h (e_strdupv): Copied this function from glib2. (GET_STRING_ARRAY_FROM_ELLIPSIS, GET_DUPLICATED_STRING_ARRAY_FROM_ELLIPSIS): Added these macros to automate getting a NULL terminated array off of the stack. * gal/widgets/Makefile.am (libwidgets_la_SOURCES): Added e-option-menu.c. (libwidgetsinclude_HEADERS): Added e-option-menu.h. * gal/widgets/e-canvas.c (e_canvas_class_init): Reformatted this function. * gal/widgets/e-gui-utils.c, gal/widgets/e-gui-utils.h (e_glade_xml_connect_widget, e_glade_xml_set_sensitive): Two new functions to automate pulling a widget from a GladeXML and either connecting a signal or setting the sensitivity. * gal/widgets/e-option-menu.c, gal/widgets/e-option-menu.h: New class to simplify the interface to GtkOptionMenu. svn path=/trunk/; revision=16246
-rw-r--r--e-util/e-util.c26
-rw-r--r--e-util/e-util.h35
-rw-r--r--widgets/misc/e-canvas.c28
-rw-r--r--widgets/misc/e-gui-utils.c31
-rw-r--r--widgets/misc/e-gui-utils.h38
5 files changed, 130 insertions, 28 deletions
diff --git a/e-util/e-util.c b/e-util/e-util.c
index 1696338858..5d8e9b19db 100644
--- a/e-util/e-util.c
+++ b/e-util/e-util.c
@@ -1592,3 +1592,29 @@ e_strdup_append_strings (gchar *first_string, ...)
return buffer;
}
+
+gchar **
+e_strdupv (const gchar **str_array)
+{
+ if (str_array) {
+ gint i;
+ gchar **retval;
+
+ i = 0;
+ while (str_array[i])
+ i++;
+
+ retval = g_new (gchar*, i + 1);
+
+ i = 0;
+ while (str_array[i]) {
+ retval[i] = g_strdup (str_array[i]);
+ i++;
+ }
+ retval[i] = NULL;
+
+ return retval;
+ } else {
+ return NULL;
+ }
+}
diff --git a/e-util/e-util.h b/e-util/e-util.h
index e636a0fbbf..65a8d0d618 100644
--- a/e-util/e-util.h
+++ b/e-util/e-util.h
@@ -75,6 +75,40 @@ GtkType l##_get_type(void)\
return type;\
}
+#define GET_STRING_ARRAY_FROM_ELLIPSIS(labels, first_string) \
+ { \
+ va_list args; \
+ int i; \
+ char *s; \
+ \
+ va_start (args, (first_string)); \
+ \
+ i = 0; \
+ for (s = (first_string); s; s = va_arg (args, char *)) \
+ i++; \
+ va_end (args); \
+ \
+ (labels) = g_new (char *, i + 1); \
+ \
+ va_start (args, (first_string)); \
+ i = 0; \
+ for (s = (first_string); s; s = va_arg (args, char *)) \
+ (labels)[i++] = s; \
+ \
+ va_end (args); \
+ (labels)[i] = NULL; \
+ }
+
+
+#define GET_DUPLICATED_STRING_ARRAY_FROM_ELLIPSIS(labels, first_string) \
+ { \
+ int i; \
+ GET_STRING_ARRAY_FROM_ELLIPSIS ((labels), (first_string)); \
+ for (i = 0; labels[i]; i++) \
+ labels[i] = g_strdup (labels[i]); \
+ }
+
+
#if 1
# define E_OBJECT_CLASS_ADD_SIGNALS(oc,sigs,last) \
gtk_object_class_add_signals (oc, sigs, last)
@@ -118,6 +152,7 @@ void e_filename_make_safe (gcha
gchar *e_format_number (gint number);
gchar *e_format_number_float (gfloat number);
gboolean e_create_directory (gchar *directory);
+gchar **e_strdupv (const gchar **str_array);
typedef int (*ESortCompareFunc) (const void *first,
diff --git a/widgets/misc/e-canvas.c b/widgets/misc/e-canvas.c
index 7afdd21073..50443a4364 100644
--- a/widgets/misc/e-canvas.c
+++ b/widgets/misc/e-canvas.c
@@ -90,25 +90,25 @@ e_canvas_class_init (ECanvasClass *klass)
GnomeCanvasClass *canvas_class;
GtkWidgetClass *widget_class;
- object_class = (GtkObjectClass*) klass;
- canvas_class = (GnomeCanvasClass *) klass;
- widget_class = (GtkWidgetClass *) klass;
+ object_class = (GtkObjectClass*) klass;
+ canvas_class = (GnomeCanvasClass *) klass;
+ widget_class = (GtkWidgetClass *) klass;
- parent_class = gtk_type_class (gnome_canvas_get_type ());
+ parent_class = gtk_type_class (gnome_canvas_get_type ());
- object_class->destroy = e_canvas_destroy;
+ object_class->destroy = e_canvas_destroy;
- widget_class->key_press_event = e_canvas_key;
- widget_class->key_release_event = e_canvas_key;
- widget_class->button_press_event = e_canvas_button;
+ widget_class->key_press_event = e_canvas_key;
+ widget_class->key_release_event = e_canvas_key;
+ widget_class->button_press_event = e_canvas_button;
widget_class->button_release_event = e_canvas_button;
- widget_class->focus_in_event = e_canvas_focus_in;
- widget_class->focus_out_event = e_canvas_focus_out;
- widget_class->style_set = e_canvas_style_set;
- widget_class->realize = e_canvas_realize;
- widget_class->unrealize = e_canvas_unrealize;
+ widget_class->focus_in_event = e_canvas_focus_in;
+ widget_class->focus_out_event = e_canvas_focus_out;
+ widget_class->style_set = e_canvas_style_set;
+ widget_class->realize = e_canvas_realize;
+ widget_class->unrealize = e_canvas_unrealize;
- klass->reflow = NULL;
+ klass->reflow = NULL;
e_canvas_signals [REFLOW] =
gtk_signal_new ("reflow",
diff --git a/widgets/misc/e-gui-utils.c b/widgets/misc/e-gui-utils.c
index 122d0a86d9..d70bb829a6 100644
--- a/widgets/misc/e-gui-utils.c
+++ b/widgets/misc/e-gui-utils.c
@@ -229,3 +229,34 @@ e_container_focus_nth_entry(GtkContainer *container, int n)
if (data.widget)
gtk_widget_grab_focus(data.widget);
}
+
+gboolean
+e_glade_xml_connect_widget (GladeXML *gui, char *name, char *signal, GtkSignalFunc cb, gpointer closure)
+{
+ GtkWidget *widget;
+
+ widget = glade_xml_get_widget (gui, name);
+
+ if (widget) {
+ gtk_signal_connect (GTK_OBJECT (widget), signal,
+ cb, closure);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+gboolean
+e_glade_xml_set_sensitive (GladeXML *gui, char *name, gboolean sensitive)
+{
+ GtkWidget *widget;
+
+ widget = glade_xml_get_widget (gui, name);
+
+ if (widget) {
+ gtk_widget_set_sensitive (widget, sensitive);
+ return TRUE;
+ }
+
+ return FALSE;
+}
diff --git a/widgets/misc/e-gui-utils.h b/widgets/misc/e-gui-utils.h
index b6f6b99e47..7cbf774c9e 100644
--- a/widgets/misc/e-gui-utils.h
+++ b/widgets/misc/e-gui-utils.h
@@ -29,23 +29,33 @@
#include <libgnomeui/gnome-messagebox.h>
#include <libgnome/gnome-defs.h>
+#include <glade/glade-xml.h>
BEGIN_GNOME_DECLS
-void e_popup_menu (GtkMenu *menu,
- GdkEvent *event);
-void e_auto_kill_popup_menu_on_hide (GtkMenu *menu);
-void e_notice (GtkWindow *window,
- const char *type,
- const char *format,
- ...);
-void e_container_foreach_leaf (GtkContainer *container,
- GtkCallback callback,
- gpointer closure);
-void e_container_focus_nth_entry (GtkContainer *container,
- int n);
-gint e_container_change_tab_order (GtkContainer *container,
- GList *widgets);
+void e_popup_menu (GtkMenu *menu,
+ GdkEvent *event);
+void e_auto_kill_popup_menu_on_hide (GtkMenu *menu);
+void e_notice (GtkWindow *window,
+ const char *type,
+ const char *format,
+ ...);
+void e_container_foreach_leaf (GtkContainer *container,
+ GtkCallback callback,
+ gpointer closure);
+void e_container_focus_nth_entry (GtkContainer *container,
+ int n);
+gint e_container_change_tab_order (GtkContainer *container,
+ GList *widgets);
+/* Returns TRUE on success. */
+gboolean e_glade_xml_connect_widget (GladeXML *gui,
+ char *name,
+ char *signal,
+ GtkSignalFunc cb,
+ gpointer closure);
+gboolean e_glade_xml_set_sensitive (GladeXML *gui,
+ char *name,
+ gboolean sensitive);
END_GNOME_DECLS