diff options
author | Christopher James Lahey <clahey@ximian.com> | 2002-03-26 03:33:20 +0800 |
---|---|---|
committer | Chris Lahey <clahey@src.gnome.org> | 2002-03-26 03:33:20 +0800 |
commit | a020c2bd2ff5b6f417fb836c3b461ca7aaa915f2 (patch) | |
tree | 4eb7eb5d6c60e088f8c5b1171b56d6eb7dc2ea43 | |
parent | 660118fcbe6e5d08d2c54588bfd0a58b5d346f20 (diff) | |
download | gsoc2013-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.c | 26 | ||||
-rw-r--r-- | e-util/e-util.h | 35 | ||||
-rw-r--r-- | widgets/misc/e-canvas.c | 28 | ||||
-rw-r--r-- | widgets/misc/e-gui-utils.c | 31 | ||||
-rw-r--r-- | widgets/misc/e-gui-utils.h | 38 |
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 |