gwenhywfar
4.3.3
|
00001 /*************************************************************************** 00002 begin : Sun May 16 2010 00003 copyright : (C) 2010 by Martin Preuss 00004 email : martin@libchipcard.de 00005 00006 *************************************************************************** 00007 * Please see toplevel file COPYING for license details * 00008 ***************************************************************************/ 00009 00010 00011 00012 00013 00014 static GWENHYWFAR_CB 00015 int Gtk2Gui_WDialog_SetIntProperty(GWEN_WIDGET *w, 00016 GWEN_DIALOG_PROPERTY prop, 00017 int index, 00018 int value, 00019 int doSignal) { 00020 GtkWindow *g; 00021 00022 g=GTK_WINDOW(GWEN_Widget_GetImplData(w, GTK2_DIALOG_WIDGET_REAL)); 00023 assert(g); 00024 00025 switch(prop) { 00026 case GWEN_DialogProperty_Enabled: 00027 gtk_widget_set_sensitive(GTK_WIDGET(g), (value==0)?FALSE:TRUE); 00028 return 0; 00029 00030 case GWEN_DialogProperty_Focus: 00031 gtk_widget_grab_focus(GTK_WIDGET(g)); 00032 return 0; 00033 00034 case GWEN_DialogProperty_Width: { 00035 gint width, height; 00036 00037 gtk_window_get_size(GTK_WINDOW(g), &width, &height); 00038 gtk_window_resize(GTK_WINDOW(g), value, height); 00039 return 0; 00040 } 00041 00042 case GWEN_DialogProperty_Height: { 00043 gint width, height; 00044 00045 gtk_window_get_size(GTK_WINDOW(g), &width, &height); 00046 gtk_window_resize(GTK_WINDOW(g), width, value); 00047 return 0; 00048 } 00049 00050 default: 00051 break; 00052 } 00053 00054 DBG_WARN(GWEN_LOGDOMAIN, 00055 "Function is not appropriate for this type of widget (%s)", 00056 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 00057 return GWEN_ERROR_INVALID; 00058 } 00059 00060 00061 00062 00063 static GWENHYWFAR_CB 00064 int Gtk2Gui_WDialog_GetIntProperty(GWEN_WIDGET *w, 00065 GWEN_DIALOG_PROPERTY prop, 00066 int index, 00067 int defaultValue) { 00068 GtkWindow *g; 00069 00070 g=GTK_WINDOW(GWEN_Widget_GetImplData(w, GTK2_DIALOG_WIDGET_REAL)); 00071 assert(g); 00072 00073 switch(prop) { 00074 case GWEN_DialogProperty_Enabled: 00075 return (gtk_widget_get_sensitive(GTK_WIDGET(g))==TRUE)?1:0; 00076 00077 case GWEN_DialogProperty_Focus: 00078 return (gtk_widget_has_focus(GTK_WIDGET(g))==TRUE)?1:0; 00079 return 0; 00080 00081 case GWEN_DialogProperty_Width: { 00082 gint width, height; 00083 00084 gtk_window_get_size(GTK_WINDOW(g), &width, &height); 00085 return width; 00086 } 00087 00088 case GWEN_DialogProperty_Height: { 00089 gint width, height; 00090 00091 gtk_window_get_size(GTK_WINDOW(g), &width, &height); 00092 return height; 00093 } 00094 00095 default: 00096 break; 00097 } 00098 00099 DBG_WARN(GWEN_LOGDOMAIN, 00100 "Function is not appropriate for this type of widget (%s)", 00101 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 00102 return defaultValue; 00103 } 00104 00105 00106 00107 static GWENHYWFAR_CB 00108 int Gtk2Gui_WDialog_SetCharProperty(GWEN_WIDGET *w, 00109 GWEN_DIALOG_PROPERTY prop, 00110 int index, 00111 const char *value, 00112 int doSignal) { 00113 GtkWindow *g; 00114 00115 g=GTK_WINDOW(GWEN_Widget_GetImplData(w, GTK2_DIALOG_WIDGET_REAL)); 00116 assert(g); 00117 00118 switch(prop) { 00119 case GWEN_DialogProperty_Title: 00120 gtk_window_set_title(GTK_WINDOW(g), value); 00121 return 0; 00122 default: 00123 break; 00124 } 00125 00126 DBG_WARN(GWEN_LOGDOMAIN, 00127 "Function is not appropriate for this type of widget (%s)", 00128 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 00129 return GWEN_ERROR_INVALID; 00130 } 00131 00132 00133 00134 static GWENHYWFAR_CB 00135 const char* Gtk2Gui_WDialog_GetCharProperty(GWEN_WIDGET *w, 00136 GWEN_DIALOG_PROPERTY prop, 00137 int index, 00138 const char *defaultValue) { 00139 GtkWindow *g; 00140 00141 g=GTK_WINDOW(GWEN_Widget_GetImplData(w, GTK2_DIALOG_WIDGET_REAL)); 00142 assert(g); 00143 00144 switch(prop) { 00145 case GWEN_DialogProperty_Title: 00146 return gtk_window_get_title(GTK_WINDOW(g)); 00147 default: 00148 break; 00149 } 00150 00151 DBG_WARN(GWEN_LOGDOMAIN, 00152 "Function is not appropriate for this type of widget (%s)", 00153 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 00154 return defaultValue; 00155 } 00156 00157 00158 00159 static GWENHYWFAR_CB 00160 int Gtk2Gui_WDialog_AddChildGuiWidget(GWEN_WIDGET *w, GWEN_WIDGET *wChild) { 00161 GtkWidget *g; 00162 GtkWidget *gChild; 00163 00164 g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK2_DIALOG_WIDGET_REAL)); 00165 assert(g); 00166 00167 gChild=GTK_WIDGET(GWEN_Widget_GetImplData(wChild, GTK2_DIALOG_WIDGET_REAL)); 00168 assert(gChild); 00169 00170 gtk_container_add(GTK_CONTAINER(g), gChild); 00171 00172 return 0; 00173 } 00174 00175 00176 00177 int Gtk2Gui_WDialog_Setup(GWEN_WIDGET *w) { 00178 GtkWidget *g; 00179 const char *s; 00180 uint32_t flags; 00181 00182 flags=GWEN_Widget_GetFlags(w); 00183 s=GWEN_Widget_GetText(w, 0); 00184 00185 g=gtk_window_new(GTK_WINDOW_TOPLEVEL); 00186 gtk_window_set_modal(GTK_WINDOW(g), TRUE); 00187 if (s && *s) 00188 gtk_window_set_title(GTK_WINDOW(g), s); 00189 00190 GWEN_Widget_SetImplData(w, GTK2_DIALOG_WIDGET_REAL, (void*) g); 00191 GWEN_Widget_SetImplData(w, GTK2_DIALOG_WIDGET_CONTENT, (void*) g); 00192 00193 GWEN_Widget_SetSetIntPropertyFn(w, Gtk2Gui_WDialog_SetIntProperty); 00194 GWEN_Widget_SetGetIntPropertyFn(w, Gtk2Gui_WDialog_GetIntProperty); 00195 GWEN_Widget_SetSetCharPropertyFn(w, Gtk2Gui_WDialog_SetCharProperty); 00196 GWEN_Widget_SetGetCharPropertyFn(w, Gtk2Gui_WDialog_GetCharProperty); 00197 GWEN_Widget_SetAddChildGuiWidgetFn(w, Gtk2Gui_WDialog_AddChildGuiWidget); 00198 00199 return 0; 00200 } 00201 00202