diff options
Diffstat (limited to 'lib/egg/egg-radio-action.c')
-rw-r--r-- | lib/egg/egg-radio-action.c | 198 |
1 files changed, 0 insertions, 198 deletions
diff --git a/lib/egg/egg-radio-action.c b/lib/egg/egg-radio-action.c deleted file mode 100644 index 66dd9530b..000000000 --- a/lib/egg/egg-radio-action.c +++ /dev/null @@ -1,198 +0,0 @@ -#include "egg-radio-action.h" -#include "eggradiotoolbutton.h" - -static void egg_radio_action_init (EggRadioAction *action); -static void egg_radio_action_class_init (EggRadioActionClass *class); - -GType -egg_radio_action_get_type (void) -{ - static GtkType type = 0; - - if (!type) - { - static const GTypeInfo type_info = - { - sizeof (EggRadioActionClass), - (GBaseInitFunc) NULL, - (GBaseFinalizeFunc) NULL, - (GClassInitFunc) egg_radio_action_class_init, - (GClassFinalizeFunc) NULL, - NULL, - - sizeof (EggRadioAction), - 0, /* n_preallocs */ - (GInstanceInitFunc) egg_radio_action_init, - }; - - type = g_type_register_static (EGG_TYPE_TOGGLE_ACTION, - "EggRadioAction", - &type_info, 0); - } - return type; -} - -static void egg_radio_action_finalize (GObject *object); -static void egg_radio_action_activate (EggAction *action); - -static GObjectClass *parent_class = NULL; - -static void -egg_radio_action_class_init (EggRadioActionClass *class) -{ - GObjectClass *object_class; - EggActionClass *action_class; - - parent_class = g_type_class_peek_parent (class); - object_class = G_OBJECT_CLASS (class); - action_class = EGG_ACTION_CLASS (class); - - action_class->menu_item_type = GTK_TYPE_RADIO_MENU_ITEM; - action_class->toolbar_item_type = EGG_TYPE_RADIO_TOOL_BUTTON; - - object_class->finalize = egg_radio_action_finalize; - - action_class->activate = egg_radio_action_activate; -} - -static void -egg_radio_action_init (EggRadioAction *action) -{ - action->group = g_slist_prepend (NULL, action); -} - -static void -egg_radio_action_finalize (GObject *object) -{ - EggRadioAction *action; - GSList *tmp_list; - - g_return_if_fail (EGG_IS_RADIO_ACTION (object)); - - action = EGG_RADIO_ACTION (object); - - action->group = g_slist_remove (action->group, action); - - tmp_list = action->group; - - while (tmp_list) - { - EggRadioAction *tmp_action = tmp_list->data; - - tmp_list = tmp_list->next; - tmp_action->group = action->group; - } - - if (parent_class->finalize) - (* parent_class->finalize) (object); -} - -static void -egg_radio_action_activate (EggAction *action) -{ - EggRadioAction *radio_action; - EggToggleAction *toggle_action; - EggToggleAction *tmp_action; - GSList *tmp_list; - - g_return_if_fail (EGG_IS_RADIO_ACTION (action)); - - radio_action = EGG_RADIO_ACTION (action); - toggle_action = EGG_TOGGLE_ACTION (action); - - if (toggle_action->active) - { - tmp_list = radio_action->group; - - while (tmp_list) - { - tmp_action = tmp_list->data; - tmp_list = tmp_list->next; - - if (tmp_action->active && (tmp_action != toggle_action)) - { - toggle_action->active = !toggle_action->active; - break; - } - } - } - else - { - toggle_action->active = !toggle_action->active; - - tmp_list = radio_action->group; - while (tmp_list) - { - tmp_action = tmp_list->data; - tmp_list = tmp_list->next; - - if (tmp_action->active && (tmp_action != toggle_action)) - { - egg_action_activate (EGG_ACTION (tmp_action)); - break; - } - } - } - - egg_toggle_action_toggled (toggle_action); -} - -/** - * egg_radio_action_get_group: - * @action: the action object - * - * Returns: the list representing the radio group for this object - */ -GSList * -egg_radio_action_get_group (EggRadioAction *action) -{ - g_return_val_if_fail (EGG_IS_RADIO_ACTION (action), NULL); - - return action->group; -} - -/** - * egg_radio_action_set_group: - * @action: the action object - * @group: a list representing a radio group - * - * Sets the radio group for the radio action object. - */ -void -egg_radio_action_set_group (EggRadioAction *action, GSList *group) -{ - g_return_if_fail (EGG_IS_RADIO_ACTION (action)); - g_return_if_fail (!g_slist_find (group, action)); - - if (action->group) - { - GSList *slist; - - action->group = g_slist_remove (action->group, action); - - for (slist = action->group; slist; slist = slist->next) - { - EggRadioAction *tmp_action = slist->data; - - tmp_action->group = action->group; - } - } - - action->group = g_slist_prepend (group, action); - - if (group) - { - GSList *slist; - - for (slist = action->group; slist; slist = slist->next) - { - EggRadioAction *tmp_action = slist->data; - - tmp_action->group = action->group; - } - } - else - { - EGG_TOGGLE_ACTION (action)->active = TRUE; - } -} |