00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifdef HAVE_CONFIG_H
00011 # include <config.h>
00012 #endif
00013
00014 #include <gwenhywfar/gwenhywfar.h>
00015 #include <gwenhywfar/gui.h>
00016 #include <gwenhywfar/dialog.h>
00017 #include <gwenhywfar/debug.h>
00018 #include <gwenhywfar/pathmanager.h>
00019
00020
00021 #ifdef OS_WIN32
00022 # include <windows.h>
00023 # define sleep(x) Sleep(x)
00024 #endif
00025
00026 #include <unistd.h>
00027
00028
00029
00030
00031
00032 static int GWENHYWFAR_CB _gwenGuiSignalHandler(GWEN_DIALOG *dlg,
00033 GWEN_DIALOG_EVENTTYPE t,
00034 const char *sender) {
00035 fprintf(stderr,
00036 "Received event %d from widget [%s]\n", t, sender);
00037
00038 switch(t) {
00039 case GWEN_DialogEvent_TypeInit:
00040 fprintf(stderr, "Init\n");
00041 GWEN_Dialog_SetCharProperty(dlg, "combo1",
00042 GWEN_DialogProperty_AddValue,
00043 0,
00044 "Erster Text in Combo1",
00045 0);
00046 GWEN_Dialog_SetCharProperty(dlg, "combo1",
00047 GWEN_DialogProperty_AddValue,
00048 0,
00049 "Zweiter Text in Combo1",
00050 0);
00051 GWEN_Dialog_SetIntProperty(dlg, "combo1",
00052 GWEN_DialogProperty_Value,
00053 0,
00054 0,
00055 0);
00056
00057
00058 GWEN_Dialog_SetCharProperty(dlg, "combo2",
00059 GWEN_DialogProperty_AddValue,
00060 0,
00061 "Erster Text in Combo2",
00062 0);
00063 GWEN_Dialog_SetCharProperty(dlg, "combo2",
00064 GWEN_DialogProperty_AddValue,
00065 0,
00066 "Zweiter Text in Combo2",
00067 0);
00068 GWEN_Dialog_SetIntProperty(dlg, "combo2",
00069 GWEN_DialogProperty_Value,
00070 0,
00071 0,
00072 0);
00073
00074 GWEN_Dialog_SetCharProperty(dlg, "listbox1",
00075 GWEN_DialogProperty_Title,
00076 0,
00077 "Column1\tColumn2\tColumn3",
00078 0);
00079
00080 GWEN_Dialog_SetCharProperty(dlg, "listbox1",
00081 GWEN_DialogProperty_AddValue,
00082 0,
00083 "Zeile 1 Spalte 1\tZeile 1 Spalte 2\tZeile 1 Spalte 3",
00084 0);
00085 GWEN_Dialog_SetCharProperty(dlg, "listbox1",
00086 GWEN_DialogProperty_AddValue,
00087 0,
00088 "Zeile 2 Spalte 1\tZeile 2 Spalte 2\tZeile 2 Spalte 3",
00089 0);
00090 GWEN_Dialog_SetIntProperty(dlg, "listbox1",
00091 GWEN_DialogProperty_ColumnWidth,
00092 0,
00093 100,
00094 0);
00095 GWEN_Dialog_SetIntProperty(dlg, "listbox1",
00096 GWEN_DialogProperty_ColumnWidth,
00097 1,
00098 200,
00099 0);
00100
00101 GWEN_Dialog_SetCharProperty(dlg, "labelWithHtmlImage",
00102 GWEN_DialogProperty_Title,
00103 0,
00104 "<html>This label contains text which should also contain an image:"
00105 "<img src=\"chipcard.png\">"
00106 "<p>And here the text should continue, followed by another image:"
00107 "<img src=\"disk.png\"></p>"
00108 "And again, this should be on the following line.</html>"
00109 "This label would contain an image if it were able to use "
00110 "HTML.",
00111 0);
00112
00113 GWEN_Dialog_SetCharProperty(dlg, "textBrowser1",
00114 GWEN_DialogProperty_Value,
00115 0,
00116 "<html>"
00117 "<p>This is <b>bold</b> text, while this one is <i>italic</i>.</p>"
00118 "This is a list:"
00119 "<ul>"
00120 "<li>first item</li>"
00121 "<li>second item</li>"
00122 "<li>third item</li>"
00123 "<li>fourth item</li>"
00124 "</ul>"
00125 "<p>This paragraph should follow the list.</p>"
00126 "</html>"
00127 "This is BOLD text, while this one is would be i t a l i c.\n"
00128 "This is a list:\n"
00129 "- first item\n"
00130 "- second item\n"
00131 "- third item\n"
00132 "- fourth item\n"
00133 "This paragraph should follow the list.",
00134 0);
00135
00136 GWEN_Dialog_SetIntProperty(dlg, "progressBar1",
00137 GWEN_DialogProperty_MinValue,
00138 0,
00139 0,
00140 0);
00141 GWEN_Dialog_SetIntProperty(dlg, "progressBar1",
00142 GWEN_DialogProperty_MaxValue,
00143 0,
00144 10,
00145 0);
00146
00147
00148 GWEN_Dialog_SetIntProperty(dlg, "",
00149 GWEN_DialogProperty_Width,
00150 0,
00151 640,
00152 0);
00153 GWEN_Dialog_SetIntProperty(dlg, "",
00154 GWEN_DialogProperty_Height,
00155 0,
00156 480,
00157 0);
00158
00159 break;
00160
00161 case GWEN_DialogEvent_TypeFini:
00162 fprintf(stderr, "Fini\n");
00163 break;
00164 case GWEN_DialogEvent_TypeValueChanged:
00165 fprintf(stderr, "ValueChanged\n");
00166 if (strcasecmp(sender, "listbox1")==0) {
00167 fprintf(stderr, "Selected list entry %d\n",
00168 GWEN_Dialog_GetIntProperty(dlg, "listbox1", GWEN_DialogProperty_Value, 0, -1));
00169 }
00170 else if (strcasecmp(sender, "editPass1")==0) {
00171 const char *s;
00172
00173 s=GWEN_Dialog_GetCharProperty(dlg, "editPass1", GWEN_DialogProperty_Value, 0, NULL);
00174 if (!(s && *s))
00175 s="<empty>";
00176 GWEN_Dialog_SetCharProperty(dlg, "editPass2", GWEN_DialogProperty_Value, 0, s, 0);
00177 }
00178 break;
00179
00180 case GWEN_DialogEvent_TypeActivated:
00181 fprintf(stderr, "Activated\n");
00182 if (strcasecmp(sender, "listbox1")==0) {
00183 int idx;
00184
00185 idx=GWEN_Dialog_GetIntProperty(dlg, "listbox1", GWEN_DialogProperty_Value, 0, -1);
00186 fprintf(stderr, "Selected list entry %d\n", idx);
00187 if (idx>=0) {
00188 const char *s;
00189
00190 s=GWEN_Dialog_GetCharProperty(dlg, "listbox1", GWEN_DialogProperty_Value, idx, NULL);
00191 if (s && *s) {
00192 fprintf(stderr, "Text of selected list entry %d: [%s]\n", idx, s);
00193 }
00194 }
00195 }
00196 else if (strcasecmp(sender, "combo1")==0) {
00197 int idx;
00198
00199 idx=GWEN_Dialog_GetIntProperty(dlg, "combo1", GWEN_DialogProperty_Value, 0, -1);
00200 fprintf(stderr, "Selected list entry %d\n", idx);
00201 if (idx>=0) {
00202 const char *s;
00203
00204 s=GWEN_Dialog_GetCharProperty(dlg, "combo1", GWEN_DialogProperty_Value, idx, NULL);
00205 if (s && *s) {
00206 fprintf(stderr, "Text of selected list entry %d: [%s]\n", idx, s);
00207 }
00208 }
00209
00210 }
00211 else if (strcasecmp(sender, "okButton")==0)
00212 return GWEN_DialogEvent_ResultAccept;
00213 else if (strcasecmp(sender, "abortButton")==0)
00214 return GWEN_DialogEvent_ResultReject;
00215 else if (strcasecmp(sender, "progressMinus")==0) {
00216 int v;
00217
00218 v=GWEN_Dialog_GetIntProperty(dlg, "progressBar1", GWEN_DialogProperty_Value, 0, -1);
00219 if (v>0)
00220 GWEN_Dialog_SetIntProperty(dlg, "progressBar1", GWEN_DialogProperty_Value, 0, v-1, 0);
00221 return GWEN_DialogEvent_ResultHandled;
00222 }
00223 else if (strcasecmp(sender, "progressPlus")==0) {
00224 int v;
00225
00226 v=GWEN_Dialog_GetIntProperty(dlg, "progressBar1", GWEN_DialogProperty_Value, 0, -1);
00227 if (v<10)
00228 GWEN_Dialog_SetIntProperty(dlg, "progressBar1", GWEN_DialogProperty_Value, 0, v+1, 0);
00229 return GWEN_DialogEvent_ResultHandled;
00230 }
00231 else if (strcasecmp(sender, "prevPageButton")==0) {
00232 int v;
00233
00234 v=GWEN_Dialog_GetIntProperty(dlg, "stack1", GWEN_DialogProperty_Value, 0, -1);
00235 if (v>0)
00236 GWEN_Dialog_SetIntProperty(dlg, "stack1", GWEN_DialogProperty_Value, 0, v-1, 0);
00237 return GWEN_DialogEvent_ResultHandled;
00238 }
00239 else if (strcasecmp(sender, "nextPageButton")==0) {
00240 int v;
00241
00242 v=GWEN_Dialog_GetIntProperty(dlg, "stack1", GWEN_DialogProperty_Value, 0, -1);
00243 if (v<3)
00244 GWEN_Dialog_SetIntProperty(dlg, "stack1", GWEN_DialogProperty_Value, 0, v+1, 0);
00245 return GWEN_DialogEvent_ResultHandled;
00246 }
00247 break;
00248
00249 case GWEN_DialogEvent_TypeEnabled:
00250 fprintf(stderr, "Enabled\n");
00251 break;
00252 case GWEN_DialogEvent_TypeDisabled:
00253 fprintf(stderr, "Disabled\n");
00254 break;
00255 case GWEN_DialogEvent_TypeClose:
00256 fprintf(stderr, "Close\n");
00257 return GWEN_DialogEvent_ResultNotHandled;
00258 case GWEN_DialogEvent_TypeLast:
00259 fprintf(stderr, "Last, ignored\n");
00260 return GWEN_DialogEvent_ResultNotHandled;
00261 }
00262 return GWEN_DialogEvent_ResultHandled;
00263 }
00264
00265
00266
00267 GWEN_DIALOG *Dlg_Test1_new() {
00268 GWEN_DIALOG *dlg;
00269 int rv;
00270 const char *s;
00271 GWEN_BUFFER *tbuf;
00272
00273 tbuf=GWEN_Buffer_new(0, 256, 0, 1);
00274 s=getenv("DIALOG_DIR");
00275 if (s && *s)
00276 GWEN_Buffer_AppendString(tbuf, s);
00277 else
00278 GWEN_Buffer_AppendString(tbuf, MEDIAPATH);
00279 dlg=GWEN_Dialog_new("dlg_test");
00280 GWEN_Dialog_SetSignalHandler(dlg, _gwenGuiSignalHandler);
00281 GWEN_Dialog_AddMediaPath(dlg, GWEN_Buffer_GetStart(tbuf));
00282
00283
00284 GWEN_Buffer_AppendString(tbuf, GWEN_DIR_SEPARATOR_S "dlg_test.dlg");
00285 rv=GWEN_Dialog_ReadXmlFile(dlg, GWEN_Buffer_GetStart(tbuf));
00286 GWEN_Buffer_free(tbuf);
00287 if (rv<0) {
00288 DBG_INFO(GWEN_LOGDOMAIN, "here (%d).", rv);
00289 GWEN_Dialog_free(dlg);
00290 return NULL;
00291 }
00292
00293
00294 return dlg;
00295 }
00296
00297
00298
00299
00300