| 106 } |
106 } |
| 107 return buf; |
107 return buf; |
| 108 } |
108 } |
| 109 |
109 |
| 110 UIWIDGET ui_textarea_create(UiObject *obj, UiTextAreaArgs *args) { |
110 UIWIDGET ui_textarea_create(UiObject *obj, UiTextAreaArgs *args) { |
| 111 UiObject* current = uic_current_obj(obj); |
111 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_TEXT); |
| 112 UiVar* var = uic_widget_var(obj->ctx, current->ctx, args->value, args->varname, UI_VAR_TEXT); |
|
| 113 |
112 |
| 114 GtkWidget *text_area = gtk_text_view_new(); |
113 GtkWidget *text_area = gtk_text_view_new(); |
| 115 ui_set_name_and_style(text_area, args->name, args->style_class); |
114 ui_set_name_and_style(text_area, args->name, args->style_class); |
| 116 ui_set_widget_groups(obj->ctx, text_area, args->groups); |
115 ui_set_widget_groups(obj->ctx, text_area, args->groups); |
| 117 |
116 |
| 153 |
152 |
| 154 gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text_area), 2); |
153 gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text_area), 2); |
| 155 gtk_text_view_set_right_margin(GTK_TEXT_VIEW(text_area), 2); |
154 gtk_text_view_set_right_margin(GTK_TEXT_VIEW(text_area), 2); |
| 156 |
155 |
| 157 // add |
156 // add |
| 158 UI_APPLY_LAYOUT2(current, args); |
157 UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; |
| 159 current->container->add(current->container, scroll_area); |
158 UiLayout layout = UI_ARGS2LAYOUT(args); |
| |
159 ct->add(ct, scroll_area, &layout); |
| 160 |
160 |
| 161 // bind value |
161 // bind value |
| 162 if(var) { |
162 if(var) { |
| 163 UiText *value = var->value; |
163 UiText *value = var->value; |
| 164 GtkTextBuffer *buf; |
164 GtkTextBuffer *buf; |
| 596 static UIWIDGET create_textfield(UiObject *obj, UiBool frameless, UiBool password, UiTextFieldArgs *args) { |
596 static UIWIDGET create_textfield(UiObject *obj, UiBool frameless, UiBool password, UiTextFieldArgs *args) { |
| 597 GtkWidget *textfield = gtk_entry_new(); |
597 GtkWidget *textfield = gtk_entry_new(); |
| 598 ui_set_name_and_style(textfield, args->name, args->style_class); |
598 ui_set_name_and_style(textfield, args->name, args->style_class); |
| 599 ui_set_widget_groups(obj->ctx, textfield, args->groups); |
599 ui_set_widget_groups(obj->ctx, textfield, args->groups); |
| 600 |
600 |
| 601 UiObject* current = uic_current_obj(obj); |
601 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_STRING); |
| 602 UiVar* var = uic_widget_var(obj->ctx, current->ctx, args->value, args->varname, UI_VAR_STRING); |
|
| 603 |
602 |
| 604 UiTextField *uitext = malloc(sizeof(UiTextField)); |
603 UiTextField *uitext = malloc(sizeof(UiTextField)); |
| 605 uitext->obj = obj; |
604 uitext->obj = obj; |
| 606 uitext->var = var; |
605 uitext->var = var; |
| 607 uitext->onchange = args->onchange; |
606 uitext->onchange = args->onchange; |
| 628 } |
627 } |
| 629 if(password) { |
628 if(password) { |
| 630 gtk_entry_set_visibility(GTK_ENTRY(textfield), FALSE); |
629 gtk_entry_set_visibility(GTK_ENTRY(textfield), FALSE); |
| 631 } |
630 } |
| 632 |
631 |
| 633 UI_APPLY_LAYOUT2(current, args); |
632 UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; |
| 634 current->container->add(current->container, textfield); |
633 UiLayout layout = UI_ARGS2LAYOUT(args); |
| |
634 ct->add(ct, textfield, &layout); |
| 635 |
635 |
| 636 if(var) { |
636 if(var) { |
| 637 UiString *value = var->value; |
637 UiString *value = var->value; |
| 638 if(value->value.ptr) { |
638 if(value->value.ptr) { |
| 639 ENTRY_SET_TEXT(textfield, value->value.ptr); |
639 ENTRY_SET_TEXT(textfield, value->value.ptr); |
| 920 } |
920 } |
| 921 return FALSE; |
921 return FALSE; |
| 922 } |
922 } |
| 923 |
923 |
| 924 UIWIDGET ui_path_textfield_create(UiObject* obj, UiPathTextFieldArgs *args) { |
924 UIWIDGET ui_path_textfield_create(UiObject* obj, UiPathTextFieldArgs *args) { |
| 925 UiObject* current = uic_current_obj(obj); |
|
| 926 |
|
| 927 UiPathTextField *pathtf = malloc(sizeof(UiPathTextField)); |
925 UiPathTextField *pathtf = malloc(sizeof(UiPathTextField)); |
| 928 memset(pathtf, 0, sizeof(UiPathTextField)); |
926 memset(pathtf, 0, sizeof(UiPathTextField)); |
| 929 pathtf->obj = obj; |
927 pathtf->obj = obj; |
| 930 pathtf->getpathelm = args->getpathelm; |
928 pathtf->getpathelm = args->getpathelm; |
| 931 pathtf->getpathelmdata = args->getpathelmdata; |
929 pathtf->getpathelmdata = args->getpathelmdata; |
| 944 } |
942 } |
| 945 |
943 |
| 946 pathtf->stack = gtk_stack_new(); |
944 pathtf->stack = gtk_stack_new(); |
| 947 gtk_widget_set_name(pathtf->stack, "path-textfield-box"); |
945 gtk_widget_set_name(pathtf->stack, "path-textfield-box"); |
| 948 |
946 |
| 949 UI_APPLY_LAYOUT2(current, args); |
947 UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; |
| 950 current->container->add(current->container, pathtf->stack); |
948 UiLayout layout = UI_ARGS2LAYOUT(args); |
| |
949 ct->add(ct, pathtf->stack, &layout); |
| 951 |
950 |
| 952 pathtf->entry_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); |
951 pathtf->entry_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); |
| 953 pathtf->entry = gtk_entry_new(); |
952 pathtf->entry = gtk_entry_new(); |
| 954 gtk_box_append(GTK_BOX(pathtf->entry_box), pathtf->entry); |
953 gtk_box_append(GTK_BOX(pathtf->entry_box), pathtf->entry); |
| 955 gtk_widget_set_hexpand(pathtf->entry, TRUE); |
954 gtk_widget_set_hexpand(pathtf->entry, TRUE); |
| 977 g_signal_connect(entry_cancel, "key-pressed", G_CALLBACK(ui_path_textfield_key_controller), pathtf); |
976 g_signal_connect(entry_cancel, "key-pressed", G_CALLBACK(ui_path_textfield_key_controller), pathtf); |
| 978 |
977 |
| 979 gtk_stack_set_visible_child(GTK_STACK(pathtf->stack), pathtf->entry_box); |
978 gtk_stack_set_visible_child(GTK_STACK(pathtf->stack), pathtf->entry_box); |
| 980 |
979 |
| 981 |
980 |
| 982 UiVar* var = uic_widget_var(obj->ctx, current->ctx, args->value, args->varname, UI_VAR_STRING); |
981 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_STRING); |
| 983 if (var) { |
982 if (var) { |
| 984 UiString* value = (UiString*)var->value; |
983 UiString* value = (UiString*)var->value; |
| 985 value->obj = pathtf; |
984 value->obj = pathtf; |
| 986 value->get = ui_path_textfield_get; |
985 value->get = ui_path_textfield_get; |
| 987 value->set = ui_path_textfield_set; |
986 value->set = ui_path_textfield_set; |
| 1081 gtk_box_set_spacing(GTK_BOX(bb), 0); |
1080 gtk_box_set_spacing(GTK_BOX(bb), 0); |
| 1082 return bb; |
1081 return bb; |
| 1083 } |
1082 } |
| 1084 |
1083 |
| 1085 UIWIDGET ui_path_textfield_create(UiObject* obj, UiPathTextFieldArgs *args) { |
1084 UIWIDGET ui_path_textfield_create(UiObject* obj, UiPathTextFieldArgs *args) { |
| 1086 UiObject* current = uic_current_obj(obj); |
|
| 1087 |
|
| 1088 UiPathTextField *pathtf = malloc(sizeof(UiPathTextField)); |
1085 UiPathTextField *pathtf = malloc(sizeof(UiPathTextField)); |
| 1089 memset(pathtf, 0, sizeof(UiPathTextField)); |
1086 memset(pathtf, 0, sizeof(UiPathTextField)); |
| 1090 pathtf->obj = obj; |
1087 pathtf->obj = obj; |
| 1091 pathtf->getpathelm = args->getpathelm; |
1088 pathtf->getpathelm = args->getpathelm; |
| 1092 pathtf->getpathelmdata = args->getpathelmdata; |
1089 pathtf->getpathelmdata = args->getpathelmdata; |
| 1116 eventbox, |
1113 eventbox, |
| 1117 "destroy", |
1114 "destroy", |
| 1118 G_CALLBACK(ui_path_textfield_destroy), |
1115 G_CALLBACK(ui_path_textfield_destroy), |
| 1119 pathtf); |
1116 pathtf); |
| 1120 |
1117 |
| 1121 UI_APPLY_LAYOUT2(current, args); |
1118 UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; |
| 1122 current->container->add(current->container, eventbox); |
1119 UiLayout layout = UI_ARGS2LAYOUT(args); |
| |
1120 ct->add(ct, eventbox, &layout); |
| 1123 |
1121 |
| 1124 // hbox as parent for the GtkEntry and GtkButtonBox |
1122 // hbox as parent for the GtkEntry and GtkButtonBox |
| 1125 GtkWidget *hbox = ui_gtk_hbox_new(0); |
1123 GtkWidget *hbox = ui_gtk_hbox_new(0); |
| 1126 pathtf->hbox = hbox; |
1124 pathtf->hbox = hbox; |
| 1127 gtk_container_add(GTK_CONTAINER(eventbox), hbox); |
1125 gtk_container_add(GTK_CONTAINER(eventbox), hbox); |
| 1141 pathtf->entry, |
1139 pathtf->entry, |
| 1142 "key-press-event", |
1140 "key-press-event", |
| 1143 G_CALLBACK(ui_path_textfield_key_press), |
1141 G_CALLBACK(ui_path_textfield_key_press), |
| 1144 pathtf); |
1142 pathtf); |
| 1145 |
1143 |
| 1146 UiVar* var = uic_widget_var(obj->ctx, current->ctx, args->value, args->varname, UI_VAR_STRING); |
1144 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_STRING); |
| 1147 if (var) { |
1145 if (var) { |
| 1148 UiString* value = (UiString*)var->value; |
1146 UiString* value = (UiString*)var->value; |
| 1149 value->obj = pathtf; |
1147 value->obj = pathtf; |
| 1150 value->get = ui_path_textfield_get; |
1148 value->get = ui_path_textfield_get; |
| 1151 value->set = ui_path_textfield_set; |
1149 value->set = ui_path_textfield_set; |