ui/gtk/text.c

changeset 801
e096c441e874
parent 788
27f126f6e361
child 809
f5ddce392617
equal deleted inserted replaced
800:814d374fb689 801:e096c441e874
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;

mercurial