diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 21 | ||||
-rw-r--r-- | src/idocalendarmenuitem.c | 32 | ||||
-rw-r--r-- | src/idoentrymenuitem.c | 28 | ||||
-rw-r--r-- | src/idomessagedialog.c | 24 | ||||
-rw-r--r-- | src/idorange.c | 33 | ||||
-rw-r--r-- | src/idorange.h | 2 | ||||
-rw-r--r-- | src/idoscalemenuitem.c | 32 | ||||
-rw-r--r-- | src/idoswitchmenuitem.c | 120 | ||||
-rw-r--r-- | src/idoswitchmenuitem.h | 57 |
9 files changed, 192 insertions, 157 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 6180422..017874f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,10 +1,5 @@ -if USE_GTK3 VER=3 lib_LTLIBRARIES = libido3-0.1.la -else -VER= -lib_LTLIBRARIES = libido-0.1.la -endif ido_built_public_sources = \ idotypebuiltins.h @@ -19,6 +14,7 @@ sources_h = \ idomessagedialog.h \ idorange.h \ idoscalemenuitem.h \ + idoswitchmenuitem.h \ idotimeline.h \ libido.h @@ -57,6 +53,9 @@ AM_CPPFLAGS = \ $(MAINTAINER_CFLAGS) \ -Wall -Werror -Wextra -Wno-unused-parameter +AM_CFLAGS = \ + $(COVERAGE_CFLAGS) + libido_0_1_la_SOURCES = \ idotypebuiltins.c \ idocalendarmenuitem.c \ @@ -64,6 +63,7 @@ libido_0_1_la_SOURCES = \ idomessagedialog.c \ idorange.c \ idoscalemenuitem.c \ + idoswitchmenuitem.c \ idotimeline.c libido3_0_1_la_SOURCES = $(libido_0_1_la_SOURCES) @@ -76,13 +76,18 @@ libidoinclude_HEADERS = \ idomessagedialog.h \ idorange.h \ idoscalemenuitem.h \ + idoswitchmenuitem.h \ idotimeline.h \ libido.h -libido_0_1_la_LIBADD = $(GTK_LIBS) -libido_0_1_la_LDFLAGS = $(GTK_LT_LDFLAGS) +libido_0_1_la_LIBADD = $(GTK_LIBS) $(LIBM) +libido_0_1_la_LDFLAGS = \ + $(GTK_LT_LDFLAGS) \ + $(COVERAGE_LDFLAGS) libido3_0_1_la_LIBADD = $(libido_0_1_la_LIBADD) -libido3_0_1_la_LDFLAGS = $(libido_0_1_la_LDFLAGS) +libido3_0_1_la_LDFLAGS = \ + $(libido_0_1_la_LDFLAGS) \ + $(COVERAGE_LDFLAGS) DISTCLEANFILES = \ stamp-idotypebuiltins.h \ diff --git a/src/idocalendarmenuitem.c b/src/idocalendarmenuitem.c index da7c436..84bee80 100644 --- a/src/idocalendarmenuitem.c +++ b/src/idocalendarmenuitem.c @@ -27,13 +27,8 @@ #include "idocalendarmenuitem.h" #include "config.h" -#if GTK_CHECK_VERSION (3, 0, 0) static void ido_calendar_menu_item_select (GtkMenuItem *item); static void ido_calendar_menu_item_deselect (GtkMenuItem *item); -#else -static void ido_calendar_menu_item_select (GtkItem *item); -static void ido_calendar_menu_item_deselect (GtkItem *item); -#endif static gboolean ido_calendar_menu_item_button_release (GtkWidget *widget, GdkEventButton *event); static gboolean ido_calendar_menu_item_button_press (GtkWidget *widget, @@ -71,27 +66,16 @@ ido_calendar_menu_item_class_init (IdoCalendarMenuItemClass *klass) GObjectClass *gobject_class; GtkWidgetClass *widget_class; GtkMenuItemClass *menu_item_class; -#if ! GTK_CHECK_VERSION (3, 0, 0) - GtkItemClass *item_class; -#endif gobject_class = G_OBJECT_CLASS (klass); widget_class = GTK_WIDGET_CLASS (klass); menu_item_class = GTK_MENU_ITEM_CLASS (klass); -#if ! GTK_CHECK_VERSION (3, 0, 0) - item_class = GTK_ITEM_CLASS (klass); -#endif widget_class->button_release_event = ido_calendar_menu_item_button_release; widget_class->button_press_event = ido_calendar_menu_item_button_press; -#if GTK_CHECK_VERSION (3, 0, 0) menu_item_class->select = ido_calendar_menu_item_select; menu_item_class->deselect = ido_calendar_menu_item_deselect; -#else - item_class->select = ido_calendar_menu_item_select; - item_class->deselect = ido_calendar_menu_item_deselect; -#endif menu_item_class->hide_on_activate = TRUE; @@ -132,11 +116,7 @@ ido_calendar_menu_item_init (IdoCalendarMenuItem *item) G_CALLBACK (calendar_move_focus_cb), item); -#ifdef USE_GTK3 priv->box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); -#else - priv->box = gtk_hbox_new (FALSE, 0); -#endif gtk_box_pack_start (GTK_BOX (priv->box), priv->calendar, FALSE, FALSE, 0); @@ -213,7 +193,6 @@ ido_calendar_menu_item_button_press (GtkWidget *widget, gtk_widget_grab_focus (calendar); } -#if GTK_CHECK_VERSION (3, 0, 0) GdkEvent * newevent = gdk_event_copy((GdkEvent *)(event)); GList * children = gdk_window_get_children(gtk_widget_get_window(calendar)); GList * child; @@ -242,7 +221,6 @@ ido_calendar_menu_item_button_press (GtkWidget *widget, ((GdkEventButton *)newevent)->window = event->window; gdk_event_free(newevent); -#endif return TRUE; } @@ -254,20 +232,14 @@ static gboolean ido_calendar_menu_item_button_release (GtkWidget *widget, GdkEventButton *event) { -#if GTK_CHECK_VERSION (3, 0, 0) GtkWidget *calendar = IDO_CALENDAR_MENU_ITEM (widget)->priv->calendar; GTK_WIDGET_GET_CLASS(calendar)->button_release_event(GTK_WIDGET(calendar), event); -#endif return TRUE; } static void -#if GTK_CHECK_VERSION (3, 0, 0) ido_calendar_menu_item_select (GtkMenuItem *item) -#else -ido_calendar_menu_item_select (GtkItem *item) -#endif { IDO_CALENDAR_MENU_ITEM (item)->priv->selected = TRUE; @@ -275,11 +247,7 @@ ido_calendar_menu_item_select (GtkItem *item) } static void -#if GTK_CHECK_VERSION (3, 0, 0) ido_calendar_menu_item_deselect (GtkMenuItem *item) -#else -ido_calendar_menu_item_deselect (GtkItem *item) -#endif { IDO_CALENDAR_MENU_ITEM (item)->priv->selected = FALSE; diff --git a/src/idoentrymenuitem.c b/src/idoentrymenuitem.c index 088c559..5390d0b 100644 --- a/src/idoentrymenuitem.c +++ b/src/idoentrymenuitem.c @@ -27,13 +27,8 @@ #include "idoentrymenuitem.h" #include "config.h" -#if GTK_CHECK_VERSION (3, 0, 0) static void ido_entry_menu_item_select (GtkMenuItem *item); static void ido_entry_menu_item_deselect (GtkMenuItem *item); -#else -static void ido_entry_menu_item_select (GtkItem *item); -static void ido_entry_menu_item_deselect (GtkItem *item); -#endif static gboolean ido_entry_menu_item_button_release (GtkWidget *widget, GdkEventButton *event); static gboolean ido_entry_menu_item_key_press (GtkWidget *widget, @@ -66,27 +61,16 @@ ido_entry_menu_item_class_init (IdoEntryMenuItemClass *klass) GObjectClass *gobject_class; GtkWidgetClass *widget_class; GtkMenuItemClass *menu_item_class; -#if ! GTK_CHECK_VERSION (3, 0, 0) - GtkItemClass *item_class; -#endif gobject_class = G_OBJECT_CLASS (klass); widget_class = GTK_WIDGET_CLASS (klass); menu_item_class = GTK_MENU_ITEM_CLASS (klass); -#if ! GTK_CHECK_VERSION (3, 0, 0) - item_class = GTK_ITEM_CLASS (klass); -#endif widget_class->button_release_event = ido_entry_menu_item_button_release; widget_class->button_press_event = ido_entry_menu_item_button_press; -#if GTK_CHECK_VERSION (3, 0, 0) menu_item_class->select = ido_entry_menu_item_select; menu_item_class->deselect = ido_entry_menu_item_deselect; -#else - item_class->select = ido_entry_menu_item_select; - item_class->deselect = ido_entry_menu_item_deselect; -#endif menu_item_class->hide_on_activate = TRUE; @@ -119,11 +103,7 @@ ido_entry_menu_item_init (IdoEntryMenuItem *item) G_CALLBACK (entry_move_focus_cb), item); -#ifdef USE_GTK3 priv->box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); -#else - priv->box = gtk_hbox_new (FALSE, 0); -#endif gtk_box_pack_start (GTK_BOX (priv->box), priv->entry, FALSE, FALSE, 0); @@ -235,11 +215,7 @@ ido_entry_menu_item_button_release (GtkWidget *widget, } static void -#if GTK_CHECK_VERSION (3, 0, 0) ido_entry_menu_item_select (GtkMenuItem *item) -#else -ido_entry_menu_item_select (GtkItem *item) -#endif { IDO_ENTRY_MENU_ITEM (item)->priv->selected = TRUE; @@ -247,11 +223,7 @@ ido_entry_menu_item_select (GtkItem *item) } static void -#if GTK_CHECK_VERSION (3, 0, 0) ido_entry_menu_item_deselect (GtkMenuItem *item) -#else -ido_entry_menu_item_deselect (GtkItem *item) -#endif { IDO_ENTRY_MENU_ITEM (item)->priv->selected = FALSE; diff --git a/src/idomessagedialog.c b/src/idomessagedialog.c index d4a3e2f..41ff2e7 100644 --- a/src/idomessagedialog.c +++ b/src/idomessagedialog.c @@ -167,22 +167,14 @@ ido_message_dialog_focus_in_event (GtkWidget *widget, IdoTimeline *timeline; IdoMessageDialogMorphContext *context; -#ifdef USE_GTK3 gtk_widget_get_preferred_size (GTK_WIDGET (dialog), NULL, &start); -#else - gtk_widget_get_requisition (GTK_WIDGET (dialog), &start); -#endif priv->expanded = TRUE; gtk_widget_show (priv->action_area); gtk_widget_show (priv->secondary_label); -#ifdef USE_GTK3 gtk_widget_get_preferred_size (GTK_WIDGET (dialog), NULL, &end); -#else - gtk_widget_get_requisition (GTK_WIDGET (dialog), &end); -#endif gtk_widget_hide (priv->action_area); gtk_widget_hide (priv->secondary_label); @@ -289,14 +281,6 @@ ido_message_dialog_new (GtkWindow *parent, NULL); dialog = GTK_DIALOG (widget); -#if ! GTK_CHECK_VERSION(3, 0, 0) - if (flags & GTK_DIALOG_NO_SEPARATOR) - { - g_warning ("The GTK_DIALOG_NO_SEPARATOR flag cannot be used for IdoMessageDialog"); - flags &= ~GTK_DIALOG_NO_SEPARATOR; - } -#endif - if (message_format) { va_start (args, message_format); @@ -379,11 +363,7 @@ ido_message_dialog_get_label (IdoMessageDialog *dialog, gboolean primary) for (list = children; list != NULL; list = list->next) { -#ifdef USE_GTK3 if (G_TYPE_FROM_INSTANCE (list->data) == GTK_TYPE_BOX && gtk_orientable_get_orientation (list->data) == GTK_ORIENTATION_HORIZONTAL) -#else - if (G_TYPE_FROM_INSTANCE (list->data) == GTK_TYPE_HBOX) -#endif { GList *hchildren; GList *hlist; @@ -393,11 +373,7 @@ ido_message_dialog_get_label (IdoMessageDialog *dialog, gboolean primary) for (hlist = hchildren; hlist != NULL; hlist = hlist->next) { -#ifdef USE_GTK3 if (G_TYPE_FROM_INSTANCE (hlist->data) == GTK_TYPE_BOX && gtk_orientable_get_orientation (hlist->data) == GTK_ORIENTATION_VERTICAL) -#else - if (G_TYPE_FROM_INSTANCE (hlist->data) == GTK_TYPE_VBOX) -#endif { GList *vlist; GtkWidget *vbox = GTK_WIDGET (hlist->data); diff --git a/src/idorange.c b/src/idorange.c index a97d770..3e88fd9 100644 --- a/src/idorange.c +++ b/src/idorange.c @@ -41,10 +41,6 @@ static void ido_range_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); -#ifdef USE_GTK3 -static void ido_range_grab_notify (GtkWidget *widget, - gboolean was_grabbed); -#endif #define IDO_RANGE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), IDO_TYPE_RANGE, IdoRangePrivate)) @@ -65,10 +61,6 @@ ido_range_class_init (IdoRangeClass *class) gobject_class->set_property = ido_range_set_property; gobject_class->get_property = ido_range_get_property; -#ifdef USE_GTK3 - widget_class->grab_notify = ido_range_grab_notify; -#endif - g_object_class_install_property (gobject_class, PROP_STYLE, g_param_spec_enum ("range-style", @@ -139,21 +131,6 @@ ido_range_set_property (GObject *object, } } -#ifdef USE_GTK3 -static void -ido_range_grab_notify (GtkWidget *widget, gboolean was_grabbed) -{ - /* - * FIXME: workaround for lp bug #865122. - * Without this handler, GtkRange will call remove_grab which results - * in an infinite loop of grab_notifies. - * - * The widget will still work properly, because grab-broken-event will get - * properly fired and internal state of GtkRange will be properly updated. - */ -} -#endif - static void ido_range_constructed (GObject *object) { @@ -176,16 +153,6 @@ ido_range_constructed (GObject *object) "knob-width", &width, "knob-height", &height, NULL); - -#ifndef USE_GTK3 - g_snprintf (buf, sizeof (buf), - "style \"ido-range\" {\n" - " GtkRange::slider-width = %d\n" - " GtkScale::slider-length = %d\n" - "} widget \"*.idorange-%p\" style \"ido-range\"\n", - width, height, range); - gtk_rc_parse_string (buf); -#endif } gtk_range_set_slider_size_fixed (GTK_RANGE (range), TRUE); diff --git a/src/idorange.h b/src/idorange.h index 0dd6952..7c2e79b 100644 --- a/src/idorange.h +++ b/src/idorange.h @@ -28,6 +28,8 @@ #include <gtk/gtk.h> +G_BEGIN_DECLS + #define IDO_TYPE_RANGE (ido_range_get_type ()) #define IDO_RANGE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), IDO_TYPE_RANGE, IdoRange)) #define IDO_RANGE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), IDO_TYPE_RANGE, IdoRangeClass)) diff --git a/src/idoscalemenuitem.c b/src/idoscalemenuitem.c index 499c28f..986d9a7 100644 --- a/src/idoscalemenuitem.c +++ b/src/idoscalemenuitem.c @@ -144,27 +144,15 @@ ido_scale_menu_item_size_allocate (GtkWidget *widget, switch (priv->style) { case IDO_SCALE_MENU_ITEM_STYLE_IMAGE: -#ifdef USE_GTK3 gtk_widget_get_preferred_size (priv->primary_image, &primary_req, NULL); gtk_widget_get_preferred_size (priv->secondary_image, &secondary_req, NULL); -#else - gtk_widget_get_child_requisition (priv->primary_image, &primary_req); - gtk_widget_get_child_requisition (priv->secondary_image, &secondary_req); -#endif - primary_padding = gtk_widget_get_visible (priv->primary_image) ? primary_req.width : 0; secondary_padding = gtk_widget_get_visible (priv->secondary_image) ? secondary_req.width : 0; break; case IDO_SCALE_MENU_ITEM_STYLE_LABEL: -#ifdef USE_GTK3 gtk_widget_get_preferred_size (priv->primary_label, &primary_req, NULL); gtk_widget_get_preferred_size (priv->secondary_label, &secondary_req, NULL); -#else - gtk_widget_get_child_requisition (priv->primary_label, &primary_req); - gtk_widget_get_child_requisition (priv->secondary_label, &secondary_req); -#endif - primary_padding = gtk_widget_get_visible (priv->primary_label) ? primary_req.width : 0; secondary_padding = gtk_widget_get_visible (priv->secondary_label) ? secondary_req.width : 0; break; @@ -236,11 +224,7 @@ ido_scale_menu_item_constructed (GObject *object) g_object_ref (priv->scale); gtk_scale_set_draw_value (GTK_SCALE (priv->scale), FALSE); -#ifdef USE_GTK3 hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); -#else - hbox = gtk_hbox_new (FALSE, 0); -#endif priv->primary_image = gtk_image_new (); g_signal_connect (priv->primary_image, "notify", @@ -485,10 +469,6 @@ ido_scale_menu_item_button_press_event (GtkWidget *menuitem, IdoScaleMenuItemPrivate *priv = GET_PRIVATE (menuitem); gdouble x; -#ifndef USE_GTK3 - GtkWidget *scale = priv->scale; -#endif - // can we block emissions of "grab-notify" on parent?? translate_event_coordinates (menuitem, event->x, &x); @@ -497,28 +477,16 @@ ido_scale_menu_item_button_press_event (GtkWidget *menuitem, translate_event_coordinates (menuitem, event->x_root, &x); event->x_root = x; -#ifndef USE_GTK3 - ubuntu_gtk_widget_set_has_grab (scale, TRUE); -#endif - gtk_widget_event (priv->scale, ((GdkEvent *)(void*)(event))); -#ifndef USE_GTK3 - ubuntu_gtk_widget_set_has_grab (scale, FALSE); -#endif - if (!priv->grabbed) { priv->grabbed = TRUE; g_signal_emit (menuitem, signals[SLIDER_GRABBED], 0); } -#ifdef USE_GTK3 return FALSE; -#else - return TRUE; -#endif } static gboolean diff --git a/src/idoswitchmenuitem.c b/src/idoswitchmenuitem.c new file mode 100644 index 0000000..3831336 --- /dev/null +++ b/src/idoswitchmenuitem.c @@ -0,0 +1,120 @@ +/* + * A GtkCheckMenuItem that uses a GtkSwitch to show its 'active' property + * + * Copyright © 2012 Canonical Ltd. + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3, as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranties of + * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + * + * Author: Charles Kerr <charles.kerr@canonical.com> + */ + +#include "config.h" + +#include "idoswitchmenuitem.h" + +static gboolean ido_switch_menu_button_release_event (GtkWidget * widget, + GdkEventButton * event); + + +struct _IdoSwitchMenuItemPrivate +{ + GtkWidget * box; + GtkWidget * content_area; + GtkWidget * switch_w; +}; + +/*** +**** Life Cycle +***/ + +G_DEFINE_TYPE (IdoSwitchMenuItem, ido_switch_menu_item, GTK_TYPE_CHECK_MENU_ITEM) + +static void +ido_switch_menu_item_class_init (IdoSwitchMenuItemClass *klass) +{ + GObjectClass * gobject_class; + GtkWidgetClass * widget_class; + GtkCheckMenuItemClass * check_class; + + gobject_class = G_OBJECT_CLASS (klass); + g_type_class_add_private (gobject_class, sizeof (IdoSwitchMenuItemPrivate)); + + widget_class = GTK_WIDGET_CLASS (klass); + widget_class->button_release_event = ido_switch_menu_button_release_event; + + check_class = GTK_CHECK_MENU_ITEM_CLASS (klass); + check_class->draw_indicator = NULL; +} + +static void +ido_switch_menu_item_init (IdoSwitchMenuItem *item) +{ + IdoSwitchMenuItemPrivate *priv; + + priv = item->priv = G_TYPE_INSTANCE_GET_PRIVATE (item, IDO_TYPE_SWITCH_MENU_ITEM, IdoSwitchMenuItemPrivate); + priv->box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + priv->content_area = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + priv->switch_w = gtk_switch_new (); + + gtk_box_pack_start (GTK_BOX (priv->box), priv->content_area, TRUE, TRUE, 0); + gtk_box_pack_end (GTK_BOX (priv->box), priv->switch_w, FALSE, FALSE, 0); + gtk_container_add (GTK_CONTAINER (item), priv->box); + gtk_widget_show_all (priv->box); + + g_object_bind_property (item, "active", + priv->switch_w, "active", + G_BINDING_SYNC_CREATE); +} + +/*** +**** Don't popdown the menu immediately after clicking on a switch... +**** wait a moment so the user can see the GtkSwitch be toggled. +***/ + +static gboolean +popdown_later_cb (gpointer widget) +{ + GtkWidget * parent = gtk_widget_get_parent (widget); + if (GTK_IS_MENU (parent)) + { + gtk_menu_shell_deactivate (GTK_MENU_SHELL(parent)); + } + g_object_unref (widget); + return FALSE; /* only call this cb once */ +} + +static gboolean +ido_switch_menu_button_release_event (GtkWidget * widget, GdkEventButton * event) +{ + gtk_menu_item_activate (GTK_MENU_ITEM(widget)); + g_timeout_add (500, popdown_later_cb, g_object_ref(widget)); + return TRUE; /* stop the event so that it doesn't trigger popdown() */ +} + +/*** +**** Public API +***/ + +GtkWidget * +ido_switch_menu_item_new (void) +{ + return g_object_new (IDO_TYPE_SWITCH_MENU_ITEM, NULL); +} + +GtkContainer * +ido_switch_menu_item_get_content_area (IdoSwitchMenuItem * item) +{ + g_return_val_if_fail (IDO_IS_SWITCH_MENU_ITEM(item), NULL); + + return GTK_CONTAINER (item->priv->content_area); +} diff --git a/src/idoswitchmenuitem.h b/src/idoswitchmenuitem.h new file mode 100644 index 0000000..7e7e2d2 --- /dev/null +++ b/src/idoswitchmenuitem.h @@ -0,0 +1,57 @@ +/* + * A GtkCheckMenuItem that uses a GtkSwitch to show its 'active' property. + * + * Copyright © 2012 Canonical Ltd. + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3, as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranties of + * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + * + * Author: Charles Kerr <charles.kerr@canonical.com> + */ + +#ifndef __IDO_SWITCH_MENU_ITEM_H__ +#define __IDO_SWITCH_MENU_ITEM_H__ + +#include <gtk/gtk.h> + +G_BEGIN_DECLS + +#define IDO_TYPE_SWITCH_MENU_ITEM (ido_switch_menu_item_get_type ()) +#define IDO_SWITCH_MENU_ITEM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), IDO_TYPE_SWITCH_MENU_ITEM, IdoSwitchMenuItem)) +#define IDO_SWITCH_MENU_ITEM_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), IDO_TYPE_SWITCH_MENU_ITEM, IdoSwitchMenuItemClass)) +#define IDO_IS_SWITCH_MENU_ITEM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), IDO_TYPE_SWITCH_MENU_ITEM)) +#define IDO_IS_SWITCH_MENU_ITEM_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), IDO_TYPE_SWITCH_MENU_ITEM)) +#define IDO_SWITCH_MENU_ITEM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), IDO_TYPE_SWITCH_MENU_ITEM, IdoSwitchMenuItemClass)) + +typedef struct _IdoSwitchMenuItem IdoSwitchMenuItem; +typedef struct _IdoSwitchMenuItemClass IdoSwitchMenuItemClass; +typedef struct _IdoSwitchMenuItemPrivate IdoSwitchMenuItemPrivate; + +struct _IdoSwitchMenuItem +{ + GtkCheckMenuItem parent_instance; + + IdoSwitchMenuItemPrivate *priv; +}; + +struct _IdoSwitchMenuItemClass +{ + GtkCheckMenuItemClass parent_class; +}; + +GType ido_switch_menu_item_get_type (void) G_GNUC_CONST; +GtkWidget *ido_switch_menu_item_new (void); +GtkContainer *ido_switch_menu_item_get_content_area (IdoSwitchMenuItem * item); + +G_END_DECLS + +#endif /* __IDO_SWITCH_MENU_ITEM_H__ */ |