libergtk/include/erGtkSelectionGroup.h File Reference

ereader gtk library - control a group of GtkToggleButton objects, similar to a radiobutton. More...

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _erGtkSelectionGroup
struct  _erGtkSelectionGroupClass

Defines

#define ERGTK_SELECTION_GROUP_TYPE   (ergtk_selection_group_get_type())
#define ERGTK_SELECTION_GROUP(obj)   (G_TYPE_CHECK_INSTANCE_CAST((obj), ERGTK_SELECTION_GROUP_TYPE, erGtkSelectionGroup))
#define ERGTK_IS_SELECTION_GROUP(obj)   (G_TYPE_CHECK_INSTANCE_TYPE((obj), ERGTK_SELECTION_GROUP_TYPE))
#define ERGTK_SELECTION_GROUP_CLASS(klass)   (G_TYPE_CHECK_CLASS_CAST((klass), ERGTK_SELECTION_GROUP_TYPE, erGtkSelectionGroupClass))
#define ERGTK_SELECTION_GROUP_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), ERGTK_SELECTION_GROUP_TYPE, erGtkSelectionGroupClass))
#define ERGTK_IS_SELECTION_GROUP_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE((klass), ERGTK_SELECTION_GROUP_TYPE))

Typedefs

typedef struct _erGtkSelectionGroup erGtkSelectionGroup
typedef struct
_erGtkSelectionGroupClass 
erGtkSelectionGroupClass

Functions

GtkWidget * ergtk_selection_group_new (GtkToggleButton **button_tbl)
gboolean ergtk_selection_group_set_details (erGtkSelectionGroup *item, const guint min_selected, const guint max_selected)
void ergtk_selection_group_freeze_buttons (erGtkSelectionGroup *item, const gboolean freeze)
GtkToggleButton * ergtk_selection_group_get_button (erGtkSelectionGroup *item, const guint button_id)
void ergtk_selection_group_get_selected_buttons (erGtkSelectionGroup *item, gint *button_ids, const guint len)
gint ergtk_selection_group_get_length (erGtkSelectionGroup *item)
GType ergtk_selection_group_get_type (void)


Detailed Description

ereader gtk library - control a group of GtkToggleButton objects, similar to a radiobutton.

Ensure only the allowed number of buttons is selected at any time. Note: no relation with the standard GTK class erGtkSelection.

Copyright (C) 2007 iRex Technologies B.V. All rights reserved.

Definition in file erGtkSelectionGroup.h.


Define Documentation

#define ERGTK_IS_SELECTION_GROUP ( obj   )     (G_TYPE_CHECK_INSTANCE_TYPE((obj), ERGTK_SELECTION_GROUP_TYPE))

Definition at line 38 of file erGtkSelectionGroup.h.

#define ERGTK_IS_SELECTION_GROUP_CLASS ( klass   )     (G_TYPE_CHECK_CLASS_TYPE((klass), ERGTK_SELECTION_GROUP_TYPE))

Definition at line 42 of file erGtkSelectionGroup.h.

#define ERGTK_SELECTION_GROUP ( obj   )     (G_TYPE_CHECK_INSTANCE_CAST((obj), ERGTK_SELECTION_GROUP_TYPE, erGtkSelectionGroup))

Definition at line 37 of file erGtkSelectionGroup.h.

#define ERGTK_SELECTION_GROUP_CLASS ( klass   )     (G_TYPE_CHECK_CLASS_CAST((klass), ERGTK_SELECTION_GROUP_TYPE, erGtkSelectionGroupClass))

Definition at line 40 of file erGtkSelectionGroup.h.

#define ERGTK_SELECTION_GROUP_GET_CLASS ( obj   )     (G_TYPE_INSTANCE_GET_CLASS ((obj), ERGTK_SELECTION_GROUP_TYPE, erGtkSelectionGroupClass))

Definition at line 41 of file erGtkSelectionGroup.h.

#define ERGTK_SELECTION_GROUP_TYPE   (ergtk_selection_group_get_type())

Definition at line 36 of file erGtkSelectionGroup.h.


Typedef Documentation

Definition at line 45 of file erGtkSelectionGroup.h.

Definition at line 46 of file erGtkSelectionGroup.h.


Function Documentation

void ergtk_selection_group_freeze_buttons ( erGtkSelectionGroup item,
const gboolean  freeze 
)

force buttons to stay in their current state, even when user changes them

Parameters:
item - the erGtkSelectionGroup object
freeze - TRUE force buttons in current state, FALSE allow user to change buttons
Returns:
--

Definition at line 319 of file erGtkSelectionGroup.c.

00321 {
00322     LOGPRINTF("entry: item [%p] freeze [%d]", item, freeze);
00323     g_return_if_fail(ERGTK_IS_SELECTION_GROUP(item));
00324     g_return_if_fail((item->dispose_has_run == FALSE));
00325 
00326     erGtkSelectionGroupClass* klass = ERGTK_SELECTION_GROUP_GET_CLASS(item);
00327 
00328     // chain to real method, which may be overloaded
00329     if (klass->freeze_buttons)
00330     {
00331         klass->freeze_buttons(item, freeze);
00332     }
00333 }

GtkToggleButton* ergtk_selection_group_get_button ( erGtkSelectionGroup item,
const guint  button_id 
)

get button by index

Parameters:
item - the erGtkSelectionGroup object
button_id - id of the requested button as an index (0 ..) in button_tbl on .._new()
Returns:
ptr to the requested button, or NULL

Definition at line 346 of file erGtkSelectionGroup.c.

00347 {
00348     LOGPRINTF("entry: item [%p] button_id [%d]", item, button_id);
00349     g_return_val_if_fail(ERGTK_IS_SELECTION_GROUP(item),   NULL);
00350     g_return_val_if_fail((item->dispose_has_run == FALSE), NULL);
00351 
00352     erGtkSelectionGroupClass* klass = ERGTK_SELECTION_GROUP_GET_CLASS(item);
00353 
00354     // chain to real method, which may be overloaded
00355     if (klass->get_button)
00356     {
00357         return klass->get_button(item, button_id);
00358     }
00359     else
00360     {
00361         return NULL;
00362     }
00363 }

gint ergtk_selection_group_get_length ( erGtkSelectionGroup item  ) 

get the number of how many buttons in erGtkSelectionGroup

Parameters:
item - the erGtkSelectionGroup object
Returns:
the number of buttons

Definition at line 545 of file erGtkSelectionGroup.c.

00546 {
00547     LOGPRINTF("entry: item [%p]", item);
00548 
00549     gint num_buttons = 0;
00550     
00551     g_return_val_if_fail(ERGTK_IS_SELECTION_GROUP(item), 0);
00552     g_return_val_if_fail(item->buttons, 0);
00553  
00554     num_buttons = g_slist_length(item->buttons);
00555 
00556     LOGPRINTF("%d buttons cotrolled by erGtkSelectionGroup [%p]",num_buttons, item);
00557 
00558     return num_buttons;
00559 }

void ergtk_selection_group_get_selected_buttons ( erGtkSelectionGroup item,
gint *  button_ids,
const guint  len 
)

get index of currently selected buttons

Parameters:
item - the erGtkSelectionGroup object
button_ids (out) - array selected buttons id (0 ..), latest selected first, unused items set to -1
len - number of elements in array button_ids
Returns:
--

Definition at line 377 of file erGtkSelectionGroup.c.

00378 {
00379     LOGPRINTF("entry: item [%p]", item);
00380     g_return_if_fail(ERGTK_IS_SELECTION_GROUP(item));
00381     g_return_if_fail((item->dispose_has_run == FALSE));
00382 
00383     erGtkSelectionGroupClass* klass = ERGTK_SELECTION_GROUP_GET_CLASS(item);
00384 
00385     // chain to real method, which may be overloaded
00386     if (klass->get_selected_buttons)
00387     {
00388         klass->get_selected_buttons(item, button_ids, len);
00389     }
00390 }

GType ergtk_selection_group_get_type ( void   ) 

Definition at line 120 of file erGtkSelectionGroup.c.

00121 {
00122     static GType class_type = 0;
00123 
00124     if (class_type == 0)
00125     {
00126         static const GTypeInfo class_info =
00127         {
00128             sizeof(erGtkSelectionGroupClass),
00129             NULL,               /* base_init */
00130             NULL,               /* base_finalize */
00131             (GClassInitFunc) ergtk_selection_group_class_init,
00132             NULL,               /* class_finalize */
00133             NULL,               /* class_data */
00134             sizeof(erGtkSelectionGroup),
00135             0,                  /* n_preallocs */
00136             (GInstanceInitFunc) ergtk_selection_group_init,
00137         };
00138 
00139         class_type = g_type_register_static(GTK_TYPE_EVENT_BOX, "erGtkSelectionGroup", &class_info, 0);
00140     }
00141     return class_type;
00142 }

Here is the call graph for this function:

GtkWidget* ergtk_selection_group_new ( GtkToggleButton **  button_tbl  ) 

create a new erGtkSelectionGroup object

Parameters:
button_tbl - NULL-terminated array of ptrs to the buttons that must be controlled
Returns:
reference to created widget

Definition at line 76 of file erGtkSelectionGroup.c.

00077 {
00078     GtkToggleButton** p_button;
00079 
00080     // check input
00081     for (p_button = button_tbl ; *p_button ; p_button++)
00082     {
00083         g_return_val_if_fail(GTK_IS_TOGGLE_BUTTON(*p_button), FALSE);
00084     }
00085 
00086     // create new object
00087     erGtkSelectionGroup* item = (erGtkSelectionGroup*) g_object_new(ERGTK_SELECTION_GROUP_TYPE, NULL);
00088 
00089     // add buttons to new object
00090     add_buttons(item, button_tbl);
00091     
00092     return GTK_WIDGET(item);
00093 }

Here is the call graph for this function:

gboolean ergtk_selection_group_set_details ( erGtkSelectionGroup item,
const guint  min_selected,
const guint  max_selected 
)

set selection details for the buttons controlled by the erGtkSelectionGroup object

Parameters:
item - the erGtkSelectionGroup object
min_selected - the minimum number of buttons that must be selected
max_selected - the maximum number of buttons that must be selected
enforce_min - enforce that at least min_selected buttons are selected
enforce_max - enforce that at most max_selected buttons are selected
Returns:
TRUE ok, FALSE error

Definition at line 238 of file erGtkSelectionGroup.c.

00239 {
00240     LOGPRINTF("entry: item [%p] min [%u] max [%u]", item, min_selected, max_selected);
00241     g_return_val_if_fail(ERGTK_IS_SELECTION_GROUP(item),   FALSE);
00242     g_return_val_if_fail((item->dispose_has_run == FALSE), FALSE);
00243 
00244     erGtkSelectionGroupClass* klass = ERGTK_SELECTION_GROUP_GET_CLASS(item);
00245 
00246     // chain to real method, which may be overloaded
00247     if (klass->set_details)
00248     {
00249         return klass->set_details(item, min_selected, max_selected);
00250     }
00251     else
00252     {
00253         return FALSE;  // not ok
00254     }
00255 }


Generated on Sun Dec 14 17:12:33 2008 by  doxygen 1.5.6