ui/gtk/text.c

changeset 121
1cc365c34125
parent 94
d51e334c1439
child 122
e82b01d17a78
--- a/ui/gtk/text.c	Wed Jan 27 20:55:37 2016 +0100
+++ b/ui/gtk/text.c	Fri Jan 29 18:48:56 2016 +0100
@@ -455,15 +455,18 @@
 }
 
 
-UIWIDGET ui_textfield(UiObject *obj, UiString *value) {
-    return ui_textfield_w(obj, 0, value);
-}
-
-UIWIDGET ui_textfield_w(UiObject *obj, int width, UiString *value) {
+static UIWIDGET create_textfield(UiObject *obj, int width, UiBool frameless, UiBool password, UiString *value) {
     GtkWidget *textfield = gtk_entry_new();
     if(width > 0) {
         gtk_entry_set_width_chars(GTK_ENTRY(textfield), width);
     }
+    if(frameless) {
+        // TODO: gtk2legacy workaroud
+        gtk_entry_set_has_frame(GTK_ENTRY(textfield), FALSE);
+    }
+    if(password) {
+        gtk_entry_set_visibility(GTK_ENTRY(textfield), FALSE);
+    }
     
     UiContainer *ct = uic_get_current_container(obj);
     ct->add(ct, textfield, FALSE);
@@ -484,21 +487,57 @@
     return textfield;
 }
 
-UIWIDGET ui_textfield_nv(UiObject *obj, char *varname) {
-    return ui_textfield_wnv(obj, 0, varname);
-}
-
-UIWIDGET ui_textfield_wnv(UiObject *obj, int width, char *varname) {
+static UIWIDGET create_textfield_nv(UiObject *obj, int width, UiBool frameless, UiBool password, char *varname) {
     UiVar *var = uic_connect_var(obj->ctx, varname, UI_VAR_STRING);
     if(var) {
         UiString *value = var->value;
-        return ui_textfield_w(obj, width, value);
+        return create_textfield(obj, width, frameless, password, value);
     } else {
         // TODO: error
     }
     return NULL;
 }
 
+UIWIDGET ui_textfield(UiObject *obj, UiString *value) {
+    return create_textfield(obj, 0, FALSE, FALSE, value);
+}
+
+UIWIDGET ui_textfield_w(UiObject *obj, int width, UiString *value) {
+    return create_textfield(obj, width, FALSE, FALSE, value);
+}
+
+UIWIDGET ui_frameless_textfield(UiObject *obj, UiString *value) {
+    return create_textfield(obj, 0, TRUE, FALSE, value);
+}
+
+UIWIDGET ui_passwordfield(UiObject *obj, UiString *value) {
+    return create_textfield(obj, 0, FALSE, TRUE, value);
+}
+
+UIWIDGET ui_passwordfield_w(UiObject *obj, int width, UiString *value) {
+    return create_textfield(obj, width, FALSE, TRUE, value);
+}
+
+UIWIDGET ui_textfield_nv(UiObject *obj, char *varname) {
+    return create_textfield_nv(obj, 0, FALSE, FALSE, varname);
+}
+
+UIWIDGET ui_textfield_wnv(UiObject *obj, int width, char *varname) {
+    return create_textfield_nv(obj, width, FALSE, FALSE, varname);
+}
+
+UIWIDGET ui_frameless_textfield_nv(UiObject *obj, char *varname) {
+    return create_textfield_nv(obj, 0, TRUE, FALSE, varname);
+}
+
+UIWIDGET ui_passwordfield_nv(UiObject *obj, char *varname) {
+    return create_textfield_nv(obj, 0, FALSE, TRUE, varname);
+}
+
+UIWIDGET ui_passwordfield_wnv(UiObject *obj, int width, char *varname) {
+    return create_textfield_nv(obj, width, FALSE, TRUE, varname);
+}
+
 char* ui_textfield_get(UiString *str) {
     if(str->value) {
         g_free(str->value);

mercurial