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 
12 
13 
14 static GWENHYWFAR_CB
Gtk3Gui_WHLayout_SetIntProperty(GWEN_WIDGET * w,GWEN_DIALOG_PROPERTY prop,GWEN_UNUSED int index,int value,GWEN_UNUSED int doSignal)15 int Gtk3Gui_WHLayout_SetIntProperty(GWEN_WIDGET *w,
16                                     GWEN_DIALOG_PROPERTY prop,
17                                     GWEN_UNUSED int index,
18                                     int value,
19                                     GWEN_UNUSED int doSignal)
20 {
21   GtkWidget *g;
22 
23   g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK3_DIALOG_WIDGET_REAL));
24   assert(g);
25 
26   switch (prop) {
27   case GWEN_DialogProperty_Enabled:
28     gtk_widget_set_sensitive(GTK_WIDGET(g), (value==0)?FALSE:TRUE);
29     return 0;
30 
31   case GWEN_DialogProperty_Focus:
32     gtk_widget_grab_focus(GTK_WIDGET(g));
33     return 0;
34 
35   default:
36     break;
37   }
38 
39   DBG_WARN(GWEN_LOGDOMAIN,
40            "Function is not appropriate for this type of widget (%s)",
41            GWEN_Widget_Type_toString(GWEN_Widget_GetType(w)));
42   return GWEN_ERROR_INVALID;
43 }
44 
45 
46 
47 
48 static GWENHYWFAR_CB
Gtk3Gui_WHLayout_GetIntProperty(GWEN_WIDGET * w,GWEN_DIALOG_PROPERTY prop,GWEN_UNUSED int index,int defaultValue)49 int Gtk3Gui_WHLayout_GetIntProperty(GWEN_WIDGET *w,
50                                     GWEN_DIALOG_PROPERTY prop,
51                                     GWEN_UNUSED int index,
52                                     int defaultValue)
53 {
54   GtkWidget *g;
55 
56   g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK3_DIALOG_WIDGET_REAL));
57   assert(g);
58 
59   switch (prop) {
60   case GWEN_DialogProperty_Enabled:
61     return (gtk_widget_get_sensitive(GTK_WIDGET(g))==TRUE)?1:0;
62 
63   case GWEN_DialogProperty_Focus:
64     return (gtk_widget_has_focus(GTK_WIDGET(g))==TRUE)?1:0;
65     return 0;
66 
67   default:
68     break;
69   }
70 
71   DBG_WARN(GWEN_LOGDOMAIN,
72            "Function is not appropriate for this type of widget (%s)",
73            GWEN_Widget_Type_toString(GWEN_Widget_GetType(w)));
74   return defaultValue;
75 }
76 
77 
78 
79 static GWENHYWFAR_CB
Gtk3Gui_WHLayout_SetCharProperty(GWEN_WIDGET * w,GWEN_UNUSED GWEN_DIALOG_PROPERTY prop,GWEN_UNUSED int index,GWEN_UNUSED const char * value,GWEN_UNUSED int doSignal)80 int Gtk3Gui_WHLayout_SetCharProperty(GWEN_WIDGET *w,
81                                      GWEN_UNUSED GWEN_DIALOG_PROPERTY prop,
82                                      GWEN_UNUSED int index,
83                                      GWEN_UNUSED const char *value,
84                                      GWEN_UNUSED int doSignal)
85 {
86   GtkWidget *g;
87 
88   g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK3_DIALOG_WIDGET_REAL));
89   assert(g);
90 
91   DBG_WARN(GWEN_LOGDOMAIN,
92            "Function is not appropriate for this type of widget (%s)",
93            GWEN_Widget_Type_toString(GWEN_Widget_GetType(w)));
94   return GWEN_ERROR_INVALID;
95 }
96 
97 
98 
99 static GWENHYWFAR_CB
Gtk3Gui_WHLayout_GetCharProperty(GWEN_WIDGET * w,GWEN_UNUSED GWEN_DIALOG_PROPERTY prop,GWEN_UNUSED int index,const char * defaultValue)100 const char *Gtk3Gui_WHLayout_GetCharProperty(GWEN_WIDGET *w,
101                                              GWEN_UNUSED GWEN_DIALOG_PROPERTY prop,
102                                              GWEN_UNUSED int index,
103                                              const char *defaultValue)
104 {
105   GtkWidget *g;
106 
107   g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK3_DIALOG_WIDGET_REAL));
108   assert(g);
109 
110   DBG_WARN(GWEN_LOGDOMAIN,
111            "Function is not appropriate for this type of widget (%s)",
112            GWEN_Widget_Type_toString(GWEN_Widget_GetType(w)));
113   return defaultValue;
114 }
115 
116 
117 
118 static GWENHYWFAR_CB
Gtk3Gui_WHLayout_AddChildGuiWidget(GWEN_WIDGET * w,GWEN_WIDGET * wChild)119 int Gtk3Gui_WHLayout_AddChildGuiWidget(GWEN_WIDGET *w, GWEN_WIDGET *wChild)
120 {
121   GtkWidget *g;
122   GtkWidget *gChild;
123   uint32_t cflags;
124 
125   g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK3_DIALOG_WIDGET_REAL));
126   assert(g);
127 
128   gChild=GTK_WIDGET(GWEN_Widget_GetImplData(wChild, GTK3_DIALOG_WIDGET_REAL));
129   assert(gChild);
130 
131   cflags=GWEN_Widget_GetFlags(wChild);
132 
133   gtk_box_pack_start(GTK_BOX(g), gChild,
134                      (cflags & GWEN_WIDGET_FLAGS_FILLX)?TRUE:FALSE,
135                      (cflags & GWEN_WIDGET_FLAGS_FILLX)?TRUE:FALSE,
136                      0);
137 
138   return 0;
139 }
140 
141 
142 
Gtk3Gui_WHLayout_Setup(GWEN_WIDGET * w)143 int Gtk3Gui_WHLayout_Setup(GWEN_WIDGET *w)
144 {
145   GtkWidget *g;
146   GWEN_WIDGET *wParent;
147 
148   wParent=GWEN_Widget_Tree_GetParent(w);
149 
150   g=gtk_box_new(GTK_ORIENTATION_HORIZONTAL,
151                 GTK3_GUI_DIALOG_DEFAULT_BOX_SPACING);
152 
153   GWEN_Widget_SetImplData(w, GTK3_DIALOG_WIDGET_REAL, (void *) g);
154   GWEN_Widget_SetImplData(w, GTK3_DIALOG_WIDGET_CONTENT, (void *) g);
155 
156   GWEN_Widget_SetSetIntPropertyFn(w, Gtk3Gui_WHLayout_SetIntProperty);
157   GWEN_Widget_SetGetIntPropertyFn(w, Gtk3Gui_WHLayout_GetIntProperty);
158   GWEN_Widget_SetSetCharPropertyFn(w, Gtk3Gui_WHLayout_SetCharProperty);
159   GWEN_Widget_SetGetCharPropertyFn(w, Gtk3Gui_WHLayout_GetCharProperty);
160   GWEN_Widget_SetAddChildGuiWidgetFn(w, Gtk3Gui_WHLayout_AddChildGuiWidget);
161 
162   if (wParent)
163     GWEN_Widget_AddChildGuiWidget(wParent, w);
164 
165   return 0;
166 }
167 
168 
169