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 00014 static GWENHYWFAR_CB 00015 int Gtk2Gui_WLineEdit_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_Width: 00035 case GWEN_DialogProperty_Height: 00036 /* just ignore these for now */ 00037 return 0; 00038 00039 default: 00040 break; 00041 } 00042 00043 DBG_WARN(GWEN_LOGDOMAIN, 00044 "Function is not appropriate for this type of widget (%s)", 00045 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 00046 return GWEN_ERROR_INVALID; 00047 } 00048 00049 00050 00051 00052 static GWENHYWFAR_CB 00053 int Gtk2Gui_WLineEdit_GetIntProperty(GWEN_WIDGET *w, 00054 GWEN_DIALOG_PROPERTY prop, 00055 int index, 00056 int defaultValue) { 00057 GtkWidget *g; 00058 00059 g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK2_DIALOG_WIDGET_REAL)); 00060 assert(g); 00061 00062 switch(prop) { 00063 case GWEN_DialogProperty_Enabled: 00064 return (gtk_widget_get_sensitive(GTK_WIDGET(g))==TRUE)?1:0; 00065 00066 case GWEN_DialogProperty_Focus: 00067 return (gtk_widget_has_focus(GTK_WIDGET(g))==TRUE)?1:0; 00068 return 0; 00069 00070 case GWEN_DialogProperty_Width: 00071 case GWEN_DialogProperty_Height: 00072 /* just ignore these for now */ 00073 return 0; 00074 00075 default: 00076 break; 00077 } 00078 00079 DBG_WARN(GWEN_LOGDOMAIN, 00080 "Function is not appropriate for this type of widget (%s)", 00081 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 00082 return defaultValue; 00083 } 00084 00085 00086 00087 static GWENHYWFAR_CB 00088 int Gtk2Gui_WLineEdit_SetCharProperty(GWEN_WIDGET *w, 00089 GWEN_DIALOG_PROPERTY prop, 00090 int index, 00091 const char *value, 00092 int doSignal) { 00093 GtkWidget *g; 00094 00095 g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK2_DIALOG_WIDGET_REAL)); 00096 assert(g); 00097 00098 switch(prop) { 00099 case GWEN_DialogProperty_Value: 00100 gtk_entry_set_text(GTK_ENTRY(g), value); 00101 return 0; 00102 default: 00103 break; 00104 } 00105 00106 DBG_WARN(GWEN_LOGDOMAIN, 00107 "Function is not appropriate for this type of widget (%s)", 00108 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 00109 return GWEN_ERROR_INVALID; 00110 } 00111 00112 00113 00114 static GWENHYWFAR_CB 00115 const char* Gtk2Gui_WLineEdit_GetCharProperty(GWEN_WIDGET *w, 00116 GWEN_DIALOG_PROPERTY prop, 00117 int index, 00118 const char *defaultValue) { 00119 GtkWidget *g; 00120 00121 g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK2_DIALOG_WIDGET_REAL)); 00122 assert(g); 00123 00124 switch(prop) { 00125 case GWEN_DialogProperty_Value: 00126 return gtk_entry_get_text(GTK_ENTRY(g)); 00127 default: 00128 break; 00129 } 00130 00131 DBG_WARN(GWEN_LOGDOMAIN, 00132 "Function is not appropriate for this type of widget (%s)", 00133 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 00134 return defaultValue; 00135 } 00136 00137 00138 00139 static void Gtk2Gui_WLineEdit_Deleted_text_handler(GtkEntryBuffer *entrybuffer, 00140 guint arg1, 00141 guint arg2, 00142 gpointer data) { 00143 GWEN_WIDGET *w; 00144 int rv; 00145 00146 w=data; 00147 assert(w); 00148 rv=GWEN_Dialog_EmitSignal(GWEN_Widget_GetDialog(w), 00149 GWEN_DialogEvent_TypeValueChanged, 00150 GWEN_Widget_GetName(w)); 00151 if (rv==GWEN_DialogEvent_ResultAccept) 00152 Gtk2Gui_Dialog_Leave(GWEN_Widget_GetTopDialog(w), 1); 00153 else if (rv==GWEN_DialogEvent_ResultReject) 00154 Gtk2Gui_Dialog_Leave(GWEN_Widget_GetTopDialog(w), 0); 00155 } 00156 00157 00158 00159 static void Gtk2Gui_WLineEdit_Inserted_text_handler(GtkEntryBuffer *entrybuffer, 00160 guint arg1, 00161 gchar *arg2, 00162 guint arg3, 00163 gpointer data) { 00164 GWEN_WIDGET *w; 00165 int rv; 00166 00167 w=data; 00168 assert(w); 00169 rv=GWEN_Dialog_EmitSignal(GWEN_Widget_GetDialog(w), 00170 GWEN_DialogEvent_TypeValueChanged, 00171 GWEN_Widget_GetName(w)); 00172 if (rv==GWEN_DialogEvent_ResultAccept) 00173 Gtk2Gui_Dialog_Leave(GWEN_Widget_GetTopDialog(w), 1); 00174 else if (rv==GWEN_DialogEvent_ResultReject) 00175 Gtk2Gui_Dialog_Leave(GWEN_Widget_GetTopDialog(w), 0); 00176 } 00177 00178 00179 00180 int Gtk2Gui_WLineEdit_Setup(GWEN_WIDGET *w) { 00181 GtkWidget *g; 00182 const char *s; 00183 uint32_t flags; 00184 GWEN_WIDGET *wParent; 00185 gulong deleted_text_handler_id; 00186 gulong inserted_text_handler_id; 00187 gboolean text_is_visible; 00188 00189 flags=GWEN_Widget_GetFlags(w); 00190 text_is_visible = (flags & GWEN_WIDGET_FLAGS_PASSWORD) == 0; 00191 wParent=GWEN_Widget_Tree_GetParent(w); 00192 s=GWEN_Widget_GetText(w, 0); 00193 00194 /* create widget */ 00195 g=gtk_entry_new(); 00196 if (s && *s) 00197 gtk_entry_set_text(GTK_ENTRY(g), s); 00198 gtk_entry_set_visibility(GTK_ENTRY(g), text_is_visible); 00199 00200 GWEN_Widget_SetImplData(w, GTK2_DIALOG_WIDGET_REAL, (void*) g); 00201 GWEN_Widget_SetImplData(w, GTK2_DIALOG_WIDGET_CONTENT, (void*) g); 00202 00203 GWEN_Widget_SetSetIntPropertyFn(w, Gtk2Gui_WLineEdit_SetIntProperty); 00204 GWEN_Widget_SetGetIntPropertyFn(w, Gtk2Gui_WLineEdit_GetIntProperty); 00205 GWEN_Widget_SetSetCharPropertyFn(w, Gtk2Gui_WLineEdit_SetCharProperty); 00206 GWEN_Widget_SetGetCharPropertyFn(w, Gtk2Gui_WLineEdit_GetCharProperty); 00207 00208 deleted_text_handler_id=g_signal_connect(gtk_entry_get_buffer(GTK_ENTRY(g)), 00209 "deleted-text", 00210 G_CALLBACK (Gtk2Gui_WLineEdit_Deleted_text_handler), 00211 w); 00212 00213 inserted_text_handler_id=g_signal_connect(gtk_entry_get_buffer(GTK_ENTRY(g)), 00214 "inserted-text", 00215 G_CALLBACK (Gtk2Gui_WLineEdit_Inserted_text_handler), 00216 w); 00217 00218 if (wParent) 00219 GWEN_Widget_AddChildGuiWidget(wParent, w); 00220 00221 return 0; 00222 } 00223 00224