gwenhywfar 4.0.3

w_dialog.c

Go to the documentation of this file.
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