80 text_area, |
80 text_area, |
81 "destroy", |
81 "destroy", |
82 G_CALLBACK(ui_textarea_destroy), |
82 G_CALLBACK(ui_textarea_destroy), |
83 uitext); |
83 uitext); |
84 |
84 |
85 GtkWidget *scroll_area = gtk_scrolled_window_new (NULL, NULL); |
85 GtkWidget *scroll_area = SCROLLEDWINDOW_NEW(); |
86 gtk_scrolled_window_set_policy( |
86 gtk_scrolled_window_set_policy( |
87 GTK_SCROLLED_WINDOW(scroll_area), |
87 GTK_SCROLLED_WINDOW(scroll_area), |
88 GTK_POLICY_AUTOMATIC, |
88 GTK_POLICY_AUTOMATIC, |
89 GTK_POLICY_AUTOMATIC); // GTK_POLICY_ALWAYS |
89 GTK_POLICY_AUTOMATIC); // GTK_POLICY_ALWAYS |
90 gtk_container_add(GTK_CONTAINER(scroll_area), text_area); |
90 SCROLLEDWINDOW_SET_CHILD(scroll_area, text_area); |
91 |
91 |
92 // font and padding |
92 // font and padding |
93 PangoFontDescription *font; |
93 PangoFontDescription *font; |
94 font = pango_font_description_from_string("Monospace"); |
94 font = pango_font_description_from_string("Monospace"); |
95 gtk_widget_modify_font(text_area, font); |
95 //gtk_widget_modify_font(text_area, font); // TODO |
96 pango_font_description_free(font); |
96 pango_font_description_free(font); |
97 |
97 |
98 gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text_area), 2); |
98 gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text_area), 2); |
99 gtk_text_view_set_right_margin(GTK_TEXT_VIEW(text_area), 2); |
99 gtk_text_view_set_right_margin(GTK_TEXT_VIEW(text_area), 2); |
100 |
100 |
178 } |
178 } |
179 return NULL; |
179 return NULL; |
180 } |
180 } |
181 |
181 |
182 UIWIDGET ui_textarea_gettextwidget(UIWIDGET textarea) { |
182 UIWIDGET ui_textarea_gettextwidget(UIWIDGET textarea) { |
183 return gtk_bin_get_child(GTK_BIN(textarea)); |
183 return SCROLLEDWINDOW_GET_CHILD(textarea); |
184 } |
184 } |
185 |
185 |
186 char* ui_textarea_get(UiText *text) { |
186 char* ui_textarea_get(UiText *text) { |
187 if(text->value.ptr) { |
187 if(text->value.ptr) { |
188 text->value.free(text->value.ptr); |
188 text->value.free(text->value.ptr); |
555 "destroy", |
555 "destroy", |
556 G_CALLBACK(ui_textfield_destroy), |
556 G_CALLBACK(ui_textfield_destroy), |
557 uitext); |
557 uitext); |
558 |
558 |
559 if(args.width > 0) { |
559 if(args.width > 0) { |
|
560 // TODO: gtk4 |
|
561 #if GTK_MAJOR_VERSION <= 3 |
560 gtk_entry_set_width_chars(GTK_ENTRY(textfield), args.width); |
562 gtk_entry_set_width_chars(GTK_ENTRY(textfield), args.width); |
|
563 #endif |
561 } |
564 } |
562 if(frameless) { |
565 if(frameless) { |
563 // TODO: gtk2legacy workaroud |
566 // TODO: gtk2legacy workaroud |
564 gtk_entry_set_has_frame(GTK_ENTRY(textfield), FALSE); |
567 gtk_entry_set_has_frame(GTK_ENTRY(textfield), FALSE); |
565 } |
568 } |
571 ct->add(ct, textfield, FALSE); |
574 ct->add(ct, textfield, FALSE); |
572 |
575 |
573 if(var) { |
576 if(var) { |
574 UiString *value = var->value; |
577 UiString *value = var->value; |
575 if(value->value.ptr) { |
578 if(value->value.ptr) { |
576 gtk_entry_set_text(GTK_ENTRY(textfield), value->value.ptr); |
579 ENTRY_SET_TEXT(textfield, value->value.ptr); |
577 value->value.free(value->value.ptr); |
580 value->value.free(value->value.ptr); |
578 value->value.ptr = NULL; |
581 value->value.ptr = NULL; |
579 value->value.free = NULL; |
582 value->value.free = NULL; |
580 } |
583 } |
581 |
584 |
629 |
632 |
630 char* ui_textfield_get(UiString *str) { |
633 char* ui_textfield_get(UiString *str) { |
631 if(str->value.ptr) { |
634 if(str->value.ptr) { |
632 str->value.free(str->value.ptr); |
635 str->value.free(str->value.ptr); |
633 } |
636 } |
634 str->value.ptr = g_strdup(gtk_entry_get_text(str->obj)); |
637 str->value.ptr = g_strdup(ENTRY_GET_TEXT(str->obj)); |
635 str->value.free = (ui_freefunc)g_free; |
638 str->value.free = (ui_freefunc)g_free; |
636 return str->value.ptr; |
639 return str->value.ptr; |
637 } |
640 } |
638 |
641 |
639 void ui_textfield_set(UiString *str, const char *value) { |
642 void ui_textfield_set(UiString *str, const char *value) { |
640 gtk_entry_set_text(str->obj, value); |
643 ENTRY_SET_TEXT(str->obj, value); |
641 if(str->value.ptr) { |
644 if(str->value.ptr) { |
642 str->value.free(str->value.ptr); |
645 str->value.free(str->value.ptr); |
643 str->value.ptr = NULL; |
646 str->value.ptr = NULL; |
644 str->value.free = NULL; |
647 str->value.free = NULL; |
645 } |
648 } |
685 } |
688 } |
686 *ret_nelm = n; |
689 *ret_nelm = n; |
687 |
690 |
688 return elms; |
691 return elms; |
689 } |
692 } |
|
693 |
|
694 |
|
695 #if GTK_MAJOR_VERSION >= 4 |
|
696 |
|
697 UIWIDGET ui_path_textfield_create(UiObject* obj, UiPathTextFieldArgs args) { |
|
698 // TODO |
|
699 return NULL; |
|
700 } |
|
701 |
|
702 #else |
690 |
703 |
691 static gboolean path_textfield_btn_pressed(GtkWidget *widget, GdkEventButton *event, UiPathTextField *pathtf) { |
704 static gboolean path_textfield_btn_pressed(GtkWidget *widget, GdkEventButton *event, UiPathTextField *pathtf) { |
692 gtk_box_pack_start(GTK_BOX(pathtf->hbox), pathtf->entry, TRUE, TRUE, 0); |
705 gtk_box_pack_start(GTK_BOX(pathtf->hbox), pathtf->entry, TRUE, TRUE, 0); |
693 gtk_container_remove(GTK_CONTAINER(pathtf->hbox), pathtf->buttonbox); |
706 gtk_container_remove(GTK_CONTAINER(pathtf->hbox), pathtf->buttonbox); |
694 pathtf->buttonbox = NULL; |
707 pathtf->buttonbox = NULL; |