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_WScrollArea_SetIntProperty(GWEN_WIDGET * w,GWEN_DIALOG_PROPERTY prop,GWEN_UNUSED int index,int value,GWEN_UNUSED int doSignal)15 int Gtk3Gui_WScrollArea_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; /* text view */
22 GtkWidget *gs; /* scrollable window */
23
24 g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK3_DIALOG_WIDGET_CONTENT));
25 assert(g);
26 gs=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK3_DIALOG_WIDGET_REAL));
27 assert(gs);
28
29 switch (prop) {
30 case GWEN_DialogProperty_Enabled:
31 gtk_widget_set_sensitive(GTK_WIDGET(gs), (value==0)?FALSE:TRUE);
32 return 0;
33
34 case GWEN_DialogProperty_Focus:
35 gtk_widget_grab_focus(GTK_WIDGET(gs));
36 return 0;
37
38 case GWEN_DialogProperty_Width:
39 case GWEN_DialogProperty_Height:
40 /* just ignore these for now */
41 return 0;
42
43 default:
44 break;
45 }
46
47 DBG_WARN(GWEN_LOGDOMAIN,
48 "Function is not appropriate for this type of widget (%s)",
49 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w)));
50 return GWEN_ERROR_INVALID;
51 }
52
53
54
55
56 static GWENHYWFAR_CB
Gtk3Gui_WScrollArea_GetIntProperty(GWEN_WIDGET * w,GWEN_DIALOG_PROPERTY prop,GWEN_UNUSED int index,int defaultValue)57 int Gtk3Gui_WScrollArea_GetIntProperty(GWEN_WIDGET *w,
58 GWEN_DIALOG_PROPERTY prop,
59 GWEN_UNUSED int index,
60 int defaultValue)
61 {
62 GtkWidget *g; /* text view */
63 GtkWidget *gs; /* scrollable window */
64
65 g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK3_DIALOG_WIDGET_CONTENT));
66 assert(g);
67 gs=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK3_DIALOG_WIDGET_REAL));
68 assert(gs);
69
70 g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK3_DIALOG_WIDGET_CONTENT));
71 assert(g);
72
73 switch (prop) {
74 case GWEN_DialogProperty_Enabled:
75 return (gtk_widget_get_sensitive(GTK_WIDGET(gs))==TRUE)?1:0;
76
77 case GWEN_DialogProperty_Focus:
78 return (gtk_widget_has_focus(GTK_WIDGET(gs))==TRUE)?1:0;
79 return 0;
80
81 case GWEN_DialogProperty_Width:
82 case GWEN_DialogProperty_Height:
83 /* just ignore these for now */
84 return 0;
85
86 default:
87 break;
88 }
89
90 DBG_WARN(GWEN_LOGDOMAIN,
91 "Function is not appropriate for this type of widget (%s)",
92 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w)));
93 return defaultValue;
94 }
95
96
97
98 static GWENHYWFAR_CB
Gtk3Gui_WScrollArea_SetCharProperty(GWEN_WIDGET * w,GWEN_UNUSED GWEN_DIALOG_PROPERTY prop,GWEN_UNUSED int index,GWEN_UNUSED const char * value,GWEN_UNUSED int doSignal)99 int Gtk3Gui_WScrollArea_SetCharProperty(GWEN_WIDGET *w,
100 GWEN_UNUSED GWEN_DIALOG_PROPERTY prop,
101 GWEN_UNUSED int index,
102 GWEN_UNUSED const char *value,
103 GWEN_UNUSED int doSignal)
104 {
105 GtkWidget *g; /* scrollable window */
106 GtkWidget *gContent; /* vbox */
107
108 gContent=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK3_DIALOG_WIDGET_CONTENT));
109 assert(gContent);
110 g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK3_DIALOG_WIDGET_REAL));
111 assert(g);
112
113 DBG_WARN(GWEN_LOGDOMAIN,
114 "Function is not appropriate for this type of widget (%s)",
115 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w)));
116 return GWEN_ERROR_INVALID;
117 }
118
119
120
121 static GWENHYWFAR_CB
Gtk3Gui_WScrollArea_GetCharProperty(GWEN_WIDGET * w,GWEN_UNUSED GWEN_DIALOG_PROPERTY prop,GWEN_UNUSED int index,const char * defaultValue)122 const char *Gtk3Gui_WScrollArea_GetCharProperty(GWEN_WIDGET *w,
123 GWEN_UNUSED GWEN_DIALOG_PROPERTY prop,
124 GWEN_UNUSED int index,
125 const char *defaultValue)
126 {
127 GtkWidget *gs; /* scrollable window */
128 GtkWidget *g; /* vbox */
129
130 g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK3_DIALOG_WIDGET_CONTENT));
131 assert(g);
132 gs=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK3_DIALOG_WIDGET_REAL));
133 assert(gs);
134
135 DBG_WARN(GWEN_LOGDOMAIN,
136 "Function is not appropriate for this type of widget (%s)",
137 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w)));
138 return defaultValue;
139 }
140
141
142
143 static GWENHYWFAR_CB
Gtk3Gui_WScrollArea_AddChildGuiWidget(GWEN_WIDGET * w,GWEN_WIDGET * wChild)144 int Gtk3Gui_WScrollArea_AddChildGuiWidget(GWEN_WIDGET *w, GWEN_WIDGET *wChild)
145 {
146 GtkWidget *g;
147 GtkWidget *gChild;
148 uint32_t cflags;
149
150 g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK3_DIALOG_WIDGET_CONTENT));
151 assert(g);
152
153 gChild=GTK_WIDGET(GWEN_Widget_GetImplData(wChild, GTK3_DIALOG_WIDGET_REAL));
154 assert(gChild);
155
156 cflags=GWEN_Widget_GetFlags(wChild);
157
158 gtk_box_pack_start(GTK_BOX(g), gChild,
159 (cflags & GWEN_WIDGET_FLAGS_FILLY)?TRUE:FALSE,
160 (cflags & GWEN_WIDGET_FLAGS_FILLY)?TRUE:FALSE,
161 0);
162
163 return 0;
164 }
165
166
167
Gtk3Gui_WScrollArea_Setup(GWEN_WIDGET * w)168 int Gtk3Gui_WScrollArea_Setup(GWEN_WIDGET *w)
169 {
170 GtkWidget *g;
171 GtkWidget *gContent;
172 GWEN_WIDGET *wParent;
173
174 wParent=GWEN_Widget_Tree_GetParent(w);
175
176 /* create widget */
177 g=gtk_scrolled_window_new(NULL, NULL);
178 gContent=gtk_box_new(GTK_ORIENTATION_VERTICAL,
179 GTK3_GUI_DIALOG_DEFAULT_BOX_SPACING);
180
181 GWEN_Widget_SetImplData(w, GTK3_DIALOG_WIDGET_REAL, (void *) g);
182 GWEN_Widget_SetImplData(w, GTK3_DIALOG_WIDGET_CONTENT, (void *) gContent);
183
184 GWEN_Widget_SetSetIntPropertyFn(w, Gtk3Gui_WScrollArea_SetIntProperty);
185 GWEN_Widget_SetGetIntPropertyFn(w, Gtk3Gui_WScrollArea_GetIntProperty);
186 GWEN_Widget_SetSetCharPropertyFn(w, Gtk3Gui_WScrollArea_SetCharProperty);
187 GWEN_Widget_SetGetCharPropertyFn(w, Gtk3Gui_WScrollArea_GetCharProperty);
188 GWEN_Widget_SetAddChildGuiWidgetFn(w, Gtk3Gui_WScrollArea_AddChildGuiWidget);
189
190 if (wParent)
191 GWEN_Widget_AddChildGuiWidget(wParent, w);
192
193 return 0;
194 }
195
196
197