gwenhywfar  5.10.1
gtk2/w_gridlayout.c
Go to the documentation of this file.
1 /***************************************************************************
2  begin : Sun May 16 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 
14  int sortByRow;
17 
20 };
21 
22 
24 
25 
26 
27 static GWENHYWFAR_CB
30  GWEN_UNUSED int index,
31  int value,
32  GWEN_UNUSED int doSignal)
33 {
34  GtkWidget *g;
35 
37  assert(g);
38 
39  switch (prop) {
41  gtk_widget_set_sensitive(GTK_WIDGET(g), (value==0)?FALSE:TRUE);
42  return 0;
43 
45  gtk_widget_grab_focus(GTK_WIDGET(g));
46  return 0;
47 
48  default:
49  break;
50  }
51 
53  "Function is not appropriate for this type of widget (%s)",
55  return GWEN_ERROR_INVALID;
56 }
57 
58 
59 
60 
61 static GWENHYWFAR_CB
64  GWEN_UNUSED int index,
65  int defaultValue)
66 {
67  GtkWidget *g;
68 
70  assert(g);
71 
72  switch (prop) {
74  return (gtk_widget_get_sensitive(GTK_WIDGET(g))==TRUE)?1:0;
75 
77  return (gtk_widget_has_focus(GTK_WIDGET(g))==TRUE)?1:0;
78  return 0;
79 
80  default:
81  break;
82  }
83 
85  "Function is not appropriate for this type of widget (%s)",
87  return defaultValue;
88 }
89 
90 
91 
92 static GWENHYWFAR_CB
95  GWEN_UNUSED int index,
96  GWEN_UNUSED const char *value,
97  GWEN_UNUSED int doSignal)
98 {
99  GtkWidget *g;
100 
102  assert(g);
103 
105  "Function is not appropriate for this type of widget (%s)",
107  return GWEN_ERROR_INVALID;
108 }
109 
110 
111 
112 static GWENHYWFAR_CB
115  GWEN_UNUSED int index,
116  const char *defaultValue)
117 {
118  GtkWidget *g;
119 
121  assert(g);
122 
124  "Function is not appropriate for this type of widget (%s)",
126  return defaultValue;
127 }
128 
129 
130 
131 static GWENHYWFAR_CB
133 {
135  GtkWidget *g;
136  GtkWidget *gChild;
137  uint32_t cflags;
138  int x;
139  int y;
140 
141  assert(w);
143  assert(xw);
144 
145  cflags=GWEN_Widget_GetFlags(wChild);
146 
148  assert(g);
149 
150  gChild=GTK_WIDGET(GWEN_Widget_GetImplData(wChild, GTK2_DIALOG_WIDGET_REAL));
151  assert(gChild);
152 
153  if (xw->sortByRow) {
154  /* fill rows, enter next column if column full */
155  y=(xw->currentRow)++;
156  if (y>=xw->allocatedRows) {
157  xw->currentRow=0;
158  y=(xw->currentRow)++;
159  xw->currentColumn++;
160  }
161 
162  x=xw->currentColumn;
163  if (x>=xw->allocatedColumns) {
164  xw->allocatedColumns=x+1;
165  gtk_table_resize(GTK_TABLE(g), xw->allocatedRows, xw->allocatedColumns);
166  }
167  }
168  else {
169  /* fill columns, enter next row if row full */
170  x=(xw->currentColumn)++;
171  if (x>=xw->allocatedColumns) {
172  xw->currentColumn=0;
173  x=(xw->currentColumn)++;
174  xw->currentRow++;
175  }
176 
177  y=xw->currentRow;
178  if (y>=xw->allocatedRows) {
179  xw->allocatedRows=y+1;
180  gtk_table_resize(GTK_TABLE(g), xw->allocatedRows, xw->allocatedColumns);
181  }
182  }
183 
184  gtk_table_attach(GTK_TABLE(g), gChild,
185  x, x+1, y, y+1,
186  (cflags & GWEN_WIDGET_FLAGS_FILLX)?(GTK_FILL|GTK_EXPAND):0,
187  (cflags & GWEN_WIDGET_FLAGS_FILLY)?(GTK_FILL|GTK_EXPAND):0,
190 
191  return 0;
192 }
193 
194 
195 
196 
197 static GWENHYWFAR_CB
199 {
201 
202  xw=(GTK2_GRIDLAYOUT_WIDGET *) p;
203 
204  GWEN_FREE_OBJECT(xw);
205 }
206 
207 
208 
210 {
211  GtkWidget *g;
212  /*uint32_t flags;*/
213  GWEN_WIDGET *wParent;
215  int rows;
216  int cols;
217 
220 
221  /*flags=GWEN_Widget_GetFlags(w);*/
222  wParent=GWEN_Widget_Tree_GetParent(w);
223  cols=GWEN_Widget_GetColumns(w);
224  rows=GWEN_Widget_GetRows(w);
225 
226  if (rows>0) {
227  xw->sortByRow=1;
228  xw->allocatedRows=rows;
229  xw->allocatedColumns=1;
230  }
231  else {
232  xw->sortByRow=0;
233  xw->allocatedColumns=cols;
234  xw->allocatedRows=1;
235  }
236 
237  g=gtk_table_new(xw->allocatedRows, xw->allocatedColumns, FALSE);
238 
241 
247 
248  if (wParent)
249  GWEN_Widget_AddChildGuiWidget(wParent, w);
250 
251  return 0;
252 }
253 
254 
GWEN_WIDGET_TYPE GWEN_Widget_GetType(const GWEN_WIDGET *w)
Definition: widget.c:185
int Gtk2Gui_WGridLayout_Setup(GWEN_WIDGET *w)
static GWENHYWFAR_CB const char * Gtk2Gui_WGridLayout_GetCharProperty(GWEN_WIDGET *w, GWEN_UNUSED GWEN_DIALOG_PROPERTY prop, GWEN_UNUSED int index, const char *defaultValue)
#define GWEN_ERROR_INVALID
Definition: error.h:67
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 GWEN_FREE_OBJECT(varname)
Definition: memory.h:61
static GWENHYWFAR_CB int Gtk2Gui_WGridLayout_GetIntProperty(GWEN_WIDGET *w, GWEN_DIALOG_PROPERTY prop, GWEN_UNUSED int index, int defaultValue)
uint32_t GWEN_Widget_GetFlags(const GWEN_WIDGET *w)
Definition: widget.c:149
#define GTK2_GUI_DIALOG_DEFAULT_BOX_SPACING
#define DBG_WARN(dbg_logger, format, args...)
Definition: debug.h:125
int GWEN_Widget_GetRows(const GWEN_WIDGET *w)
Definition: widget.c:221
#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
GWEN_WIDGET_GETINTPROPERTY_FN GWEN_Widget_SetGetIntPropertyFn(GWEN_WIDGET *w, GWEN_WIDGET_GETINTPROPERTY_FN fn)
Definition: widget.c:702
static GWENHYWFAR_CB int Gtk2Gui_WGridLayout_SetIntProperty(GWEN_WIDGET *w, GWEN_DIALOG_PROPERTY prop, GWEN_UNUSED int index, int value, GWEN_UNUSED int doSignal)
#define GWEN_NEW_OBJECT(typ, varname)
Definition: memory.h:55
void * GWEN_Widget_GetImplData(const GWEN_WIDGET *w, int index)
Definition: widget.c:122
int GWEN_Widget_GetColumns(const GWEN_WIDGET *w)
Definition: widget.c:203
#define GWENHYWFAR_CB
Definition: gwenhywfarapi.h:89
GWEN_WIDGET_ADDCHILDGUIWIDGET_FN GWEN_Widget_SetAddChildGuiWidgetFn(GWEN_WIDGET *w, GWEN_WIDGET_ADDCHILDGUIWIDGET_FN fn)
Definition: widget.c:747
#define GTK2_DIALOG_WIDGET_REAL
GWEN_WIDGET_SETINTPROPERTY_FN GWEN_Widget_SetSetIntPropertyFn(GWEN_WIDGET *w, GWEN_WIDGET_SETINTPROPERTY_FN fn)
Definition: widget.c:687
struct GWEN_WIDGET GWEN_WIDGET
Definition: widget_be.h:34
int GWEN_Widget_AddChildGuiWidget(GWEN_WIDGET *w, GWEN_WIDGET *wChild)
Definition: widget.c:828
#define GWEN_WIDGET_FLAGS_FILLY
Definition: dialog.h:62
static GWENHYWFAR_CB int Gtk2Gui_WGridLayout_SetCharProperty(GWEN_WIDGET *w, GWEN_UNUSED GWEN_DIALOG_PROPERTY prop, GWEN_UNUSED int index, GWEN_UNUSED const char *value, GWEN_UNUSED int doSignal)
#define GWEN_WIDGET_FLAGS_FILLX
Definition: dialog.h:61
#define GTK2_DIALOG_WIDGET_CONTENT
static GWENHYWFAR_CB int Gtk2Gui_WGridLayout_AddChildGuiWidget(GWEN_WIDGET *w, GWEN_WIDGET *wChild)
#define GWEN_INHERIT(bt, t)
Definition: inherit.h:264
const char * GWEN_Widget_Type_toString(GWEN_WIDGET_TYPE t)
Definition: widget.c:452
#define GWEN_INHERIT_SETDATA(bt, t, element, data, fn)
Definition: inherit.h:292
static GWENHYWFAR_CB void Gtk2Gui_WGridLayout_FreeData(GWEN_UNUSED void *bp, void *p)
#define GWEN_UNUSED
#define GWEN_INHERIT_GETDATA(bt, t, element)
Definition: inherit.h:271