--- a/application/main.c Sat Dec 05 10:34:10 2020 +0100 +++ b/application/main.c Sat Dec 05 11:54:58 2020 +0100 @@ -33,164 +33,14 @@ #include <ucx/buffer.h> #include <ucx/utils.h> -typedef struct Document { - UiText *text; - UiString *t1; - UiString *t2; - UiString *t3; - UiInteger *i; - UiDouble *d; - UiRange *r; - UiList *list; - UiDouble *progress; -} Document; - -typedef struct Entry { - char *name; - char *desc; -} Entry; - -Document *d1; -Document *d2; -int n = 1; - -UiImage *img; - -Document* create_doc(char *str); - -Document* next_doc(void) { - Document *doc = d1; - if(n == 1) { - doc = d2; - printf("doc2\n"); - } else { - printf("doc1\n"); - } - n++; - n = n%2; - return doc; -} - -void action_menu(UiEvent *event, void *data) { - printf("action_menu\n"); - - Document *doc = event->document; - char *s = doc->text->get(doc->text); - printf("text: {\n%s\n}\n", s); - //int i = doc->i->get(doc->i); - //printf("i: %d\n", i); +void action_menu(UiEvent *event, void *userdata) { - fflush(stdout); -} - -void list_data_get(UiEvent *event, UiSelection *selection, UiList *l, int i) { - ui_selection_settext(selection, "Hello World!", -1); -} - -void list_drop(UiEvent *event, UiSelection *selection, UiList *l, int i) { - char *text = ui_selection_gettext(selection); - printf("dnd drop: {%s}\n", text); - free(text); -} - -Document* create_doc(char *str) { - Document *doc = ui_document_new(sizeof(Document)); - UiContext *ctx = ui_document_context(doc); - - doc->text = ui_text_new(ctx, "text"); - doc->t1 = ui_string_new(ctx, "t1"); - doc->t2 = ui_string_new(ctx, "t2"); - doc->t3 = ui_string_new(ctx, "t3"); - - doc->i = ui_int_new(ctx, "int"); - doc->d = ui_double_new(ctx, "d"); - doc->r = ui_range_new(ctx, "r"); - - doc->progress = ui_double_new(ctx, "progress"); - - doc->list = ui_list_new(ctx, "list"); - Entry *e1 = calloc(1, sizeof(Entry)); - e1->name = "test"; - e1->desc = "test file"; - Entry *e2 = calloc(1, sizeof(Entry)); - e2->name = str; - e2->desc = "important document"; - ui_list_append(doc->list, e1); - ui_list_append(doc->list, e2); - - return doc; -} - -void* model_get(Entry *e, int col) { - if(col == 0) { - return img; - } else if(col == 1) { - return e->name; - } else if(col == 2) { - return e->desc; - } - return NULL; -} - -void action_newdoc(UiEvent *event, void *data) { - printf("new doc;\n "); - - Document *newd = next_doc(); - ui_set_document(event->obj, newd); -} - -void observ(UiEvent *event, void *data) { - printf("observ: %s\n", (char*)data); -} - -void doublechanged(UiEvent *event, void *data) { - UiDouble *d = event->eventdata; - printf("d: %f\n", (float)d->get(d)); } void application_startup(UiEvent *event, void *data) { - UiIcon *icon = ui_icon("folder", 16); - img = ui_icon_image(icon); - if(!img) { - fprintf(stderr, "Cannot load folder icon\n"); - } - - //Document *doc = create_doc(); - d1 = create_doc("doc1"); - d2 = create_doc("doc2"); UiObject *obj = ui_window("Test", NULL); - ui_set_document(obj, d1); - ui_textarea_nv(obj, "text"); - //ui_radiobutton_nv(obj, "1", "int"); - //ui_radiobutton_nv(obj, "2", "int"); - //ui_radiobutton_nv(obj, "3", "int"); - - ui_textfield_nv(obj, "t1"); - //ui_textarea_nv(obj, "text"); - //d1->t1->observers = ui_add_observer(d1->t1->observers, observ, "t1"); - //d1->text->observers = ui_add_observer(d1->text->observers, observ, "text"); - - UiModel *model = ui_model(obj->ctx, UI_ICON_TEXT, "name", UI_STRING, "desc", -1); - model->getvalue = (ui_getvaluefunc)model_get; - model->drop = list_drop; - model->data_get = list_data_get; - UiListCallbacks cb = {NULL, NULL, NULL}; - //UIWIDGET table = ui_table_nv(obj, "list", model, cb); - //ui_table_dragsource(table, 0, "text/plain", NULL); - - //ui_spinner_setrange(ui_spinnerf_nv(obj, 1, 0, "d"), 0, 1000); - //ui_spinnerr_nv(obj, "r"); - //d1->r->setrange(d1->r, 0, 10); - //d1->r->setextent(d1->r, 1); - //d1->d->observers = ui_add_observer(d1->d->observers, doublechanged, NULL); - - //ui_progressbar_nv(obj, "progress"); - - ui_textfield(obj, NULL); - - ui_button(obj, "Switch Document", action_newdoc, NULL); ui_show(obj); }