00001
00002
00003
00004
00005
00006
00007
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