gwenhywfar
4.3.1
|
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 * Note: This is a special use case for gtk_notebook. 00014 * To use it as a WidgetStack we have to disable drawing od tabs 00015 * and borders by calling: 00016 * - gtk_notebook_set_show_tabs(GTK_NOTEBOOK(g), FALSE); 00017 * - gtk_notebook_set_show_border(GTK_NOTEBOOK(g), FALSE); 00018 * 00019 */ 00020 00021 00022 00023 static GWENHYWFAR_CB 00024 int Gtk2Gui_WStack_SetIntProperty(GWEN_WIDGET *w, 00025 GWEN_DIALOG_PROPERTY prop, 00026 int index, 00027 int value, 00028 int doSignal) { 00029 GtkWidget *g; 00030 00031 g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK2_DIALOG_WIDGET_REAL)); 00032 assert(g); 00033 00034 switch(prop) { 00035 case GWEN_DialogProperty_Enabled: 00036 gtk_widget_set_sensitive(GTK_WIDGET(g), (value==0)?FALSE:TRUE); 00037 return 0; 00038 00039 case GWEN_DialogProperty_Focus: 00040 gtk_widget_grab_focus(GTK_WIDGET(g)); 00041 return 0; 00042 00043 case GWEN_DialogProperty_Value: 00044 gtk_notebook_set_current_page(GTK_NOTEBOOK(g), value); 00045 return 0; 00046 00047 default: 00048 break; 00049 } 00050 00051 DBG_WARN(GWEN_LOGDOMAIN, 00052 "Function is not appropriate for this type of widget (%s)", 00053 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 00054 return GWEN_ERROR_INVALID; 00055 } 00056 00057 00058 00059 00060 static GWENHYWFAR_CB 00061 int Gtk2Gui_WStack_GetIntProperty(GWEN_WIDGET *w, 00062 GWEN_DIALOG_PROPERTY prop, 00063 int index, 00064 int defaultValue) { 00065 GtkWidget *g; 00066 00067 g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK2_DIALOG_WIDGET_REAL)); 00068 assert(g); 00069 00070 switch(prop) { 00071 case GWEN_DialogProperty_Enabled: 00072 return (gtk_widget_get_sensitive(GTK_WIDGET(g))==TRUE)?1:0; 00073 00074 case GWEN_DialogProperty_Focus: 00075 return (gtk_widget_has_focus(GTK_WIDGET(g))==TRUE)?1:0; 00076 return 0; 00077 00078 case GWEN_DialogProperty_Value: 00079 return gtk_notebook_get_current_page(GTK_NOTEBOOK(g)); 00080 00081 default: 00082 break; 00083 } 00084 00085 DBG_WARN(GWEN_LOGDOMAIN, 00086 "Function is not appropriate for this type of widget (%s)", 00087 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 00088 return defaultValue; 00089 } 00090 00091 00092 00093 static GWENHYWFAR_CB 00094 int Gtk2Gui_WStack_SetCharProperty(GWEN_WIDGET *w, 00095 GWEN_DIALOG_PROPERTY prop, 00096 int index, 00097 const char *value, 00098 int doSignal) { 00099 GtkWidget *g; 00100 00101 g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK2_DIALOG_WIDGET_REAL)); 00102 assert(g); 00103 00104 DBG_WARN(GWEN_LOGDOMAIN, 00105 "Function is not appropriate for this type of widget (%s)", 00106 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 00107 return GWEN_ERROR_INVALID; 00108 } 00109 00110 00111 00112 static GWENHYWFAR_CB 00113 const char* Gtk2Gui_WStack_GetCharProperty(GWEN_WIDGET *w, 00114 GWEN_DIALOG_PROPERTY prop, 00115 int index, 00116 const char *defaultValue) { 00117 GtkWidget *g; 00118 00119 g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK2_DIALOG_WIDGET_REAL)); 00120 assert(g); 00121 00122 DBG_WARN(GWEN_LOGDOMAIN, 00123 "Function is not appropriate for this type of widget (%s)", 00124 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 00125 return defaultValue; 00126 } 00127 00128 00129 00130 static GWENHYWFAR_CB 00131 int Gtk2Gui_WStack_AddChildGuiWidget(GWEN_WIDGET *w, GWEN_WIDGET *wChild) { 00132 GtkWidget *g; 00133 GtkWidget *gChild; 00134 00135 g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK2_DIALOG_WIDGET_REAL)); 00136 assert(g); 00137 00138 gChild=GTK_WIDGET(GWEN_Widget_GetImplData(wChild, GTK2_DIALOG_WIDGET_REAL)); 00139 assert(gChild); 00140 00141 gtk_notebook_append_page(GTK_NOTEBOOK(g), gChild, NULL); 00142 00143 return 0; 00144 } 00145 00146 00147 00148 int Gtk2Gui_WStack_Setup(GWEN_WIDGET *w) { 00149 GtkWidget *g; 00150 uint32_t flags; 00151 GWEN_WIDGET *wParent; 00152 00153 flags=GWEN_Widget_GetFlags(w); 00154 wParent=GWEN_Widget_Tree_GetParent(w); 00155 00156 g=gtk_notebook_new(); 00157 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(g), FALSE); 00158 gtk_notebook_set_show_border(GTK_NOTEBOOK(g), FALSE); 00159 00160 GWEN_Widget_SetImplData(w, GTK2_DIALOG_WIDGET_REAL, (void*) g); 00161 GWEN_Widget_SetImplData(w, GTK2_DIALOG_WIDGET_CONTENT, (void*) g); 00162 00163 GWEN_Widget_SetSetIntPropertyFn(w, Gtk2Gui_WStack_SetIntProperty); 00164 GWEN_Widget_SetGetIntPropertyFn(w, Gtk2Gui_WStack_GetIntProperty); 00165 GWEN_Widget_SetSetCharPropertyFn(w, Gtk2Gui_WStack_SetCharProperty); 00166 GWEN_Widget_SetGetCharPropertyFn(w, Gtk2Gui_WStack_GetCharProperty); 00167 GWEN_Widget_SetAddChildGuiWidgetFn(w, Gtk2Gui_WStack_AddChildGuiWidget); 00168 00169 if (wParent) 00170 GWEN_Widget_AddChildGuiWidget(wParent, w); 00171 00172 return 0; 00173 } 00174 00175