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