gwenhywfar  4.3.1
w_tabbook.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_WTabBook_SetIntProperty(GWEN_WIDGET *w,
00016                                     GWEN_DIALOG_PROPERTY prop,
00017                                     int index,
00018                                     int value,
00019                                     int doSignal) {
00020   GtkWidget *g;
00021 
00022   g=GTK_WIDGET(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_Value:
00035     gtk_notebook_set_current_page(GTK_NOTEBOOK(g), value);
00036     return 0;
00037 
00038   default:
00039     break;
00040   }
00041 
00042   DBG_WARN(GWEN_LOGDOMAIN,
00043            "Function is not appropriate for this type of widget (%s)",
00044            GWEN_Widget_Type_toString(GWEN_Widget_GetType(w)));
00045   return GWEN_ERROR_INVALID;
00046 }
00047 
00048 
00049 
00050 
00051 static GWENHYWFAR_CB
00052 int Gtk2Gui_WTabBook_GetIntProperty(GWEN_WIDGET *w,
00053                                     GWEN_DIALOG_PROPERTY prop,
00054                                     int index,
00055                                     int defaultValue) {
00056   GtkWidget *g;
00057 
00058   g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK2_DIALOG_WIDGET_REAL));
00059   assert(g);
00060 
00061   switch(prop) {
00062   case GWEN_DialogProperty_Enabled:
00063     return (gtk_widget_get_sensitive(GTK_WIDGET(g))==TRUE)?1:0;
00064 
00065   case GWEN_DialogProperty_Focus:
00066     return (gtk_widget_has_focus(GTK_WIDGET(g))==TRUE)?1:0;
00067     return 0;
00068 
00069   case GWEN_DialogProperty_Value:
00070     return gtk_notebook_get_current_page(GTK_NOTEBOOK(g));
00071 
00072   default:
00073     break;
00074   }
00075 
00076   DBG_WARN(GWEN_LOGDOMAIN,
00077            "Function is not appropriate for this type of widget (%s)",
00078            GWEN_Widget_Type_toString(GWEN_Widget_GetType(w)));
00079   return defaultValue;
00080 }
00081 
00082 
00083 
00084 static GWENHYWFAR_CB
00085 int Gtk2Gui_WTabBook_SetCharProperty(GWEN_WIDGET *w,
00086                                      GWEN_DIALOG_PROPERTY prop,
00087                                      int index,
00088                                      const char *value,
00089                                      int doSignal) {
00090   GtkWidget *g;
00091 
00092   g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK2_DIALOG_WIDGET_REAL));
00093   assert(g);
00094 
00095   DBG_WARN(GWEN_LOGDOMAIN,
00096            "Function is not appropriate for this type of widget (%s)",
00097            GWEN_Widget_Type_toString(GWEN_Widget_GetType(w)));
00098   return GWEN_ERROR_INVALID;
00099 }
00100 
00101 
00102 
00103 static GWENHYWFAR_CB
00104 const char* Gtk2Gui_WTabBook_GetCharProperty(GWEN_WIDGET *w,
00105                                              GWEN_DIALOG_PROPERTY prop,
00106                                              int index,
00107                                              const char *defaultValue) {
00108   GtkWidget *g;
00109 
00110   g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK2_DIALOG_WIDGET_REAL));
00111   assert(g);
00112 
00113   DBG_WARN(GWEN_LOGDOMAIN,
00114            "Function is not appropriate for this type of widget (%s)",
00115            GWEN_Widget_Type_toString(GWEN_Widget_GetType(w)));
00116   return defaultValue;
00117 }
00118 
00119 
00120 
00121 static GWENHYWFAR_CB
00122 int Gtk2Gui_WTabBook_AddChildGuiWidget(GWEN_WIDGET *w, GWEN_WIDGET *wChild) {
00123   GtkWidget *g;
00124   GtkWidget *gChild;
00125   const char *s;
00126 
00127   g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK2_DIALOG_WIDGET_REAL));
00128   assert(g);
00129 
00130   gChild=GTK_WIDGET(GWEN_Widget_GetImplData(wChild, GTK2_DIALOG_WIDGET_REAL));
00131   assert(gChild);
00132 
00133   s=GWEN_Widget_GetText(wChild, 0);
00134 
00135   gtk_notebook_append_page(GTK_NOTEBOOK(g), gChild, (s && *s)?gtk_label_new(s):NULL);
00136 
00137   return 0;
00138 }
00139 
00140 
00141 
00142 int Gtk2Gui_WTabBook_Setup(GWEN_WIDGET *w) {
00143   GtkWidget *g;
00144   uint32_t flags;
00145   GWEN_WIDGET *wParent;
00146 
00147   flags=GWEN_Widget_GetFlags(w);
00148   wParent=GWEN_Widget_Tree_GetParent(w);
00149 
00150   g=gtk_notebook_new();
00151   GWEN_Widget_SetImplData(w, GTK2_DIALOG_WIDGET_REAL, (void*) g);
00152   GWEN_Widget_SetImplData(w, GTK2_DIALOG_WIDGET_CONTENT, (void*) g);
00153 
00154   GWEN_Widget_SetSetIntPropertyFn(w, Gtk2Gui_WTabBook_SetIntProperty);
00155   GWEN_Widget_SetGetIntPropertyFn(w, Gtk2Gui_WTabBook_GetIntProperty);
00156   GWEN_Widget_SetSetCharPropertyFn(w, Gtk2Gui_WTabBook_SetCharProperty);
00157   GWEN_Widget_SetGetCharPropertyFn(w, Gtk2Gui_WTabBook_GetCharProperty);
00158   GWEN_Widget_SetAddChildGuiWidgetFn(w, Gtk2Gui_WTabBook_AddChildGuiWidget);
00159 
00160   if (wParent)
00161     GWEN_Widget_AddChildGuiWidget(wParent, w);
00162 
00163   return 0;
00164 }
00165 
00166