gwenhywfar  5.10.1
gtk2/w_radiobutton.c
Go to the documentation of this file.
1 /***************************************************************************
2  begin : Mon Jul 12 2010
3  copyright : (C) 2010 by Martin Preuss
4  email : martin@libchipcard.de
5 
6  ***************************************************************************
7  * Please see toplevel file COPYING for license details *
8  ***************************************************************************/
9 
10 
11 
12 
13 
14 static GWENHYWFAR_CB
17  GWEN_UNUSED int index,
18  int value,
19  GWEN_UNUSED int doSignal)
20 {
21  GtkButton *g;
22 
24  assert(g);
25 
26  switch (prop) {
28  gtk_widget_set_sensitive(GTK_WIDGET(g), (value==0)?FALSE:TRUE);
29  return 0;
30 
32  gtk_widget_grab_focus(GTK_WIDGET(g));
33  return 0;
34 
37  /* just ignore these for now */
38  return 0;
39 
41  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(g), (value==0)?FALSE:TRUE);
42  return 0;
43 
44  default:
45  break;
46  }
47 
49  "Function is not appropriate for this type of widget (%s)",
51  return GWEN_ERROR_INVALID;
52 }
53 
54 
55 
56 
57 static GWENHYWFAR_CB
60  GWEN_UNUSED int index,
61  int defaultValue)
62 {
63  GtkButton *g;
64 
66  assert(g);
67 
68  switch (prop) {
70  return (gtk_widget_get_sensitive(GTK_WIDGET(g))==TRUE)?1:0;
71 
73  return (gtk_widget_has_focus(GTK_WIDGET(g))==TRUE)?1:0;
74 
77  /* just ignore these for now */
78  return 0;
79 
81  return (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(g))==TRUE)?1:0;
82 
83  default:
84  break;
85  }
86 
88  "Function is not appropriate for this type of widget (%s)",
90  return defaultValue;
91 }
92 
93 
94 
95 static GWENHYWFAR_CB
98  GWEN_UNUSED int index,
99  const char *value,
100  GWEN_UNUSED int doSignal)
101 {
102  GtkButton *g;
103 
105  assert(g);
106 
107  switch (prop) {
109  gtk_button_set_label(g, value);
110  return 0;
111  default:
112  break;
113  }
114 
116  "Function is not appropriate for this type of widget (%s)",
118  return GWEN_ERROR_INVALID;
119 }
120 
121 
122 
123 static GWENHYWFAR_CB
126  GWEN_UNUSED int index,
127  const char *defaultValue)
128 {
129  GtkButton *g;
130 
132  assert(g);
133 
134  switch (prop) {
136  return gtk_button_get_label(g);
137  default:
138  break;
139  }
140 
142  "Function is not appropriate for this type of widget (%s)",
144  return defaultValue;
145 }
146 
147 
148 
149 static void Gtk2Gui_WRadioButton_Toggled_handler(GWEN_UNUSED GtkButton *button, gpointer data)
150 {
151  GWEN_WIDGET *w;
152  int rv;
153 
154  w=data;
155  assert(w);
161  else if (rv==GWEN_DialogEvent_ResultReject)
163 }
164 
165 
166 
168 {
169  GtkWidget *g;
170  const char *s;
171  /*uint32_t flags;*/
172  GWEN_WIDGET *wParent;
173  GWEN_WIDGET *wT;
174  /*gulong toggled_handler_id;*/
175  int groupId;
176 
177  /*flags=GWEN_Widget_GetFlags(w);*/
178  wParent=GWEN_Widget_Tree_GetParent(w);
179  groupId=GWEN_Widget_GetGroupId(w);
180 
181  s=GWEN_Widget_GetText(w, 0);
182 
183  /* create widget */
184  if (s && *s)
185  g=gtk_radio_button_new_with_mnemonic(NULL, s);
186  else
187  g=gtk_radio_button_new(NULL);
188 
189  /* get root widget */
190  wT=wParent;
191  while (GWEN_Widget_Tree_GetParent(wT))
192  wT=GWEN_Widget_Tree_GetParent(wT);
193 
194  /* get first radio button of the same group */
195  while (wT) {
197  GWEN_Widget_GetGroupId(wT)==groupId)
198  break;
199  wT=GWEN_Widget_Tree_GetBelow(wT);
200  }
201  if (wT && wT!=w) {
202  GSList *grp;
203 
204  grp=gtk_radio_button_get_group(GTK_RADIO_BUTTON(GWEN_Widget_GetImplData(wT, GTK2_DIALOG_WIDGET_REAL)));
205  gtk_radio_button_set_group(GTK_RADIO_BUTTON(g), grp);
206  }
207 
208  /* set pointers */
211 
216 
217  /*toggled_handler_id=*/g_signal_connect(g,
218  "toggled",
220  w);
221 
222  if (wParent)
223  GWEN_Widget_AddChildGuiWidget(wParent, w);
224 
225  return 0;
226 }
227 
228 
static GWENHYWFAR_CB int Gtk2Gui_WRadioButton_GetIntProperty(GWEN_WIDGET *w, GWEN_DIALOG_PROPERTY prop, GWEN_UNUSED int index, int defaultValue)
GWEN_WIDGET_TYPE GWEN_Widget_GetType(const GWEN_WIDGET *w)
Definition: widget.c:185
static GWENHYWFAR_CB const char * Gtk2Gui_WRadioButton_GetCharProperty(GWEN_WIDGET *w, GWEN_DIALOG_PROPERTY prop, GWEN_UNUSED int index, const char *defaultValue)
#define GWEN_ERROR_INVALID
Definition: error.h:67
const char * GWEN_Widget_GetName(const GWEN_WIDGET *w)
Definition: widget.c:320
GWEN_WIDGET_SETCHARPROPERTY_FN GWEN_Widget_SetSetCharPropertyFn(GWEN_WIDGET *w, GWEN_WIDGET_SETCHARPROPERTY_FN fn)
Definition: widget.c:717
GWEN_WIDGET_GETCHARPROPERTY_FN GWEN_Widget_SetGetCharPropertyFn(GWEN_WIDGET *w, GWEN_WIDGET_GETCHARPROPERTY_FN fn)
Definition: widget.c:732
GWEN_DIALOG_PROPERTY
Definition: dialog.h:260
#define NULL
Definition: binreloc.c:300
#define DBG_WARN(dbg_logger, format, args...)
Definition: debug.h:125
#define GWEN_LOGDOMAIN
Definition: logger.h:35
void GWEN_Widget_SetImplData(GWEN_WIDGET *w, int index, void *ptr)
Store a pointer with the widget.
Definition: widget.c:136
static void Gtk2Gui_WRadioButton_Toggled_handler(GWEN_UNUSED GtkButton *button, gpointer data)
GWEN_WIDGET_GETINTPROPERTY_FN GWEN_Widget_SetGetIntPropertyFn(GWEN_WIDGET *w, GWEN_WIDGET_GETINTPROPERTY_FN fn)
Definition: widget.c:702
void * GWEN_Widget_GetImplData(const GWEN_WIDGET *w, int index)
Definition: widget.c:122
GWEN_DIALOG * GWEN_Widget_GetDialog(const GWEN_WIDGET *w)
Definition: widget.c:92
#define GWENHYWFAR_CB
Definition: gwenhywfarapi.h:89
#define GTK2_DIALOG_WIDGET_REAL
GWEN_WIDGET_SETINTPROPERTY_FN GWEN_Widget_SetSetIntPropertyFn(GWEN_WIDGET *w, GWEN_WIDGET_SETINTPROPERTY_FN fn)
Definition: widget.c:687
GWEN_DIALOG * GWEN_Widget_GetTopDialog(const GWEN_WIDGET *w)
Definition: widget.c:102
struct GWEN_WIDGET GWEN_WIDGET
Definition: widget_be.h:34
int GWEN_Widget_AddChildGuiWidget(GWEN_WIDGET *w, GWEN_WIDGET *wChild)
Definition: widget.c:828
int GWEN_Widget_GetGroupId(const GWEN_WIDGET *w)
Definition: widget.c:239
int GWEN_Dialog_EmitSignal(GWEN_DIALOG *dlg, GWEN_DIALOG_EVENTTYPE t, const char *sender)
Definition: dialog.c:321
#define GTK2_DIALOG_WIDGET_CONTENT
void Gtk2Gui_Dialog_Leave(GWEN_DIALOG *dlg, int result)
static GWENHYWFAR_CB int Gtk2Gui_WRadioButton_SetCharProperty(GWEN_WIDGET *w, GWEN_DIALOG_PROPERTY prop, GWEN_UNUSED int index, const char *value, GWEN_UNUSED int doSignal)
static GWENHYWFAR_CB int Gtk2Gui_WRadioButton_SetIntProperty(GWEN_WIDGET *w, GWEN_DIALOG_PROPERTY prop, GWEN_UNUSED int index, int value, GWEN_UNUSED int doSignal)
const char * GWEN_Widget_Type_toString(GWEN_WIDGET_TYPE t)
Definition: widget.c:452
int Gtk2Gui_WRadioButton_Setup(GWEN_WIDGET *w)
const char * GWEN_Widget_GetText(const GWEN_WIDGET *w, int idx)
Definition: widget.c:293
#define GWEN_UNUSED