00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00029 #ifndef __ERGTK_SELECTION_GROUP_H__
00030 #define __ERGTK_SELECTION_GROUP_H__
00031 #ifdef __cplusplus
00032 extern "C" {
00033 #endif 
00034 
00035 
00036 #define ERGTK_SELECTION_GROUP_TYPE             (ergtk_selection_group_get_type())
00037 #define ERGTK_SELECTION_GROUP(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj), ERGTK_SELECTION_GROUP_TYPE, erGtkSelectionGroup))
00038 #define ERGTK_IS_SELECTION_GROUP(obj)          (G_TYPE_CHECK_INSTANCE_TYPE((obj), ERGTK_SELECTION_GROUP_TYPE))
00039 
00040 #define ERGTK_SELECTION_GROUP_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST((klass),  ERGTK_SELECTION_GROUP_TYPE, erGtkSelectionGroupClass))
00041 #define ERGTK_SELECTION_GROUP_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), ERGTK_SELECTION_GROUP_TYPE, erGtkSelectionGroupClass))
00042 #define ERGTK_IS_SELECTION_GROUP_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE((klass),  ERGTK_SELECTION_GROUP_TYPE))
00043 
00044 
00045 typedef struct _erGtkSelectionGroup       erGtkSelectionGroup;
00046 typedef struct _erGtkSelectionGroupClass  erGtkSelectionGroupClass;
00047 
00048 struct _erGtkSelectionGroup
00049 {
00050     GtkEventBox       parent;
00051 
00052     
00053     GSList*           buttons;               
00054 
00055     
00056     gboolean          dispose_has_run;
00057     guint             min_selected;          
00058     guint             max_selected;          
00059     gboolean          freeze_buttons;        
00060     GSList*           history;               
00061 };
00062 
00063 struct _erGtkSelectionGroupClass
00064 {
00065     GtkEventBoxClass                parent_class;
00066 
00067     
00068     
00069     gboolean (*set_details)        (erGtkSelectionGroup *item, const guint min_selected, const guint max_selected);
00070     void (*freeze_buttons)         (erGtkSelectionGroup *item, const gboolean freeze);
00071     GtkToggleButton* (*get_button) (erGtkSelectionGroup *item, const guint button_id);
00072     void (*get_selected_buttons)   (erGtkSelectionGroup *item, gint* button_ids, const guint len);
00073 
00074     
00075     
00076     void (*add_buttons)            (erGtkSelectionGroup *item, GtkToggleButton** button_tbl);
00077 
00078     
00079     
00080     void (*selection_update)       (erGtkSelectionGroup *selection_group);
00081 };
00082 
00083 
00091 GtkWidget* ergtk_selection_group_new(GtkToggleButton** button_tbl);
00092 
00104 gboolean ergtk_selection_group_set_details(erGtkSelectionGroup *item,
00105                                            const guint min_selected,
00106                                            const guint max_selected);
00107 
00116 void ergtk_selection_group_freeze_buttons(erGtkSelectionGroup *item,
00117                                           const gboolean freeze);
00118 
00127 GtkToggleButton* ergtk_selection_group_get_button(erGtkSelectionGroup *item,
00128                                                   const guint button_id);
00129 
00139 void ergtk_selection_group_get_selected_buttons(erGtkSelectionGroup *item,
00140                                                 gint* button_ids, const guint len);
00141 
00149 gint ergtk_selection_group_get_length(erGtkSelectionGroup *item);
00150 
00151 
00152 GType ergtk_selection_group_get_type (void);
00153 
00154 
00155 #ifdef __cplusplus
00156 }
00157 #endif
00158 
00159 #endif  // __ERGTK_SELECTION_GROUP_H__
00160 
00161 
00162