91 G_CALLBACK(selection_handler), |
91 G_CALLBACK(selection_handler), |
92 uitext); |
92 uitext); |
93 } |
93 } |
94 #endif |
94 #endif |
95 |
95 |
|
96 static GtkTextBuffer* create_textbuffer(UiTextArea *textarea) { |
|
97 GtkTextBuffer *buf = gtk_text_buffer_new(NULL); |
|
98 if(textarea) { |
|
99 g_signal_connect( |
|
100 buf, |
|
101 "changed", |
|
102 G_CALLBACK(ui_textbuf_changed), |
|
103 textarea); |
|
104 } else { |
|
105 fprintf(stderr, "Error: create_textbuffer: textarea == NULL\n"); |
|
106 } |
|
107 return buf; |
|
108 } |
|
109 |
96 UIWIDGET ui_textarea_create(UiObject *obj, UiTextAreaArgs args) { |
110 UIWIDGET ui_textarea_create(UiObject *obj, UiTextAreaArgs args) { |
97 UiObject* current = uic_current_obj(obj); |
111 UiObject* current = uic_current_obj(obj); |
98 UiVar* var = uic_widget_var(obj->ctx, current->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); |
99 |
113 |
100 GtkWidget *text_area = gtk_text_view_new(); |
114 GtkWidget *text_area = gtk_text_view_new(); |
114 uitext->var = var; |
128 uitext->var = var; |
115 uitext->last_selection_state = 0; |
129 uitext->last_selection_state = 0; |
116 uitext->onchange = args.onchange; |
130 uitext->onchange = args.onchange; |
117 uitext->onchangedata = args.onchangedata; |
131 uitext->onchangedata = args.onchangedata; |
118 |
132 |
|
133 g_object_set_data(G_OBJECT(text_area), "ui_textarea", uitext); |
|
134 |
119 g_signal_connect( |
135 g_signal_connect( |
120 text_area, |
136 text_area, |
121 "destroy", |
137 "destroy", |
122 G_CALLBACK(ui_textarea_destroy), |
138 G_CALLBACK(ui_textarea_destroy), |
123 uitext); |
139 uitext); |
124 |
|
125 g_signal_connect( |
|
126 buf, |
|
127 "changed", |
|
128 G_CALLBACK(ui_textbuf_changed), |
|
129 uitext); |
|
130 |
140 |
131 GtkWidget *scroll_area = SCROLLEDWINDOW_NEW(); |
141 GtkWidget *scroll_area = SCROLLEDWINDOW_NEW(); |
132 gtk_scrolled_window_set_policy( |
142 gtk_scrolled_window_set_policy( |
133 GTK_SCROLLED_WINDOW(scroll_area), |
143 GTK_SCROLLED_WINDOW(scroll_area), |
134 GTK_POLICY_AUTOMATIC, |
144 GTK_POLICY_AUTOMATIC, |
153 UiText *value = var->value; |
163 UiText *value = var->value; |
154 GtkTextBuffer *buf; |
164 GtkTextBuffer *buf; |
155 if(value->data1 && value->datatype == UI_TEXT_TYPE_BUFFER) { |
165 if(value->data1 && value->datatype == UI_TEXT_TYPE_BUFFER) { |
156 buf = value->data1; |
166 buf = value->data1; |
157 } else { |
167 } else { |
158 buf = gtk_text_buffer_new(NULL); |
168 buf = create_textbuffer(uitext); |
159 if(value->value.ptr) { |
169 if(value->value.ptr) { |
160 gtk_text_buffer_set_text(buf, value->value.ptr, -1); |
170 gtk_text_buffer_set_text(buf, value->value.ptr, -1); |
161 value->value.free(value->value.ptr); |
171 value->value.free(value->value.ptr); |
162 } |
172 } |
163 } |
173 } |
205 } |
215 } |
206 |
216 |
207 void ui_textarea_restore(UiText *text) { |
217 void ui_textarea_restore(UiText *text) { |
208 GtkWidget *textarea = text->obj; |
218 GtkWidget *textarea = text->obj; |
209 if(!text->data1) { |
219 if(!text->data1) { |
210 text->data1 = gtk_text_buffer_new(NULL); |
220 text->data1 = create_textbuffer(g_object_get_data(G_OBJECT(textarea), "ui_textarea")); |
211 text->datatype = UI_TEXT_TYPE_BUFFER; |
221 text->datatype = UI_TEXT_TYPE_BUFFER; |
212 } |
222 } |
213 gtk_text_view_set_buffer(GTK_TEXT_VIEW(textarea), text->data1); |
223 gtk_text_view_set_buffer(GTK_TEXT_VIEW(textarea), text->data1); |
214 } |
224 } |
215 |
225 |
796 evt.obj = event->obj; |
806 evt.obj = event->obj; |
797 evt.window = evt.obj->window; |
807 evt.window = evt.obj->window; |
798 evt.document = evt.obj->ctx->document; |
808 evt.document = evt.obj->ctx->document; |
799 evt.eventdata = elm->path; |
809 evt.eventdata = elm->path; |
800 evt.intval = event->value0; |
810 evt.intval = event->value0; |
801 e.set = ui_get_setop(); |
811 evt.set = ui_get_setop(); |
802 event->callback(&evt, event->userdata); |
812 event->callback(&evt, event->userdata); |
803 free(path.ptr); |
813 free(path.ptr); |
804 } |
814 } |
805 |
815 |
806 int ui_pathtextfield_update(UiPathTextField* pathtf, const char *full_path) { |
816 int ui_pathtextfield_update(UiPathTextField* pathtf, const char *full_path) { |