application/main.c

changeset 39
4e66271541e8
parent 37
56016468753d
child 42
29b2821d1262
--- a/application/main.c	Thu May 15 17:17:58 2014 +0200
+++ b/application/main.c	Thu May 15 20:06:28 2014 +0200
@@ -33,206 +33,60 @@
 #include <ucx/buffer.h>
 #include <ucx/utils.h>
 
-typedef struct TestDocument {
-    UiInteger check1;
-} TestDocument;
 
-typedef struct TestWindowData {
-    TestDocument *doc1;
-    TestDocument *doc2;
-    UiText       text;
-} TestWindowData;
-
-UiInteger check1;
-
-UiList *list;
-
-///*
-
-void action_new(UiEvent *event, void *data) {
-    UiObject *window = ui_window("Mod1", NULL);
-    //ui_window_addint(window, "check1");
-    ui_show(window);
-    if(event->eventdata)  {
-        printf("%s\n", event->eventdata);
-    }
-}
-
-void action_open(UiEvent *event, void *data) {
-    //printf("check1: %s\n", event->intval ? "true" : "false");
-    //printf("check1: %s\n", ui_getint(event->obj, "check1") ? "true" : "false");
-    TestDocument *doc = event->document;
-    TestWindowData *wd = event->window;
-    printf("check1: %s\n", ui_getval(doc->check1) ? "true" : "false");
-    
-    char *path = ui_openfiledialog(event->obj);
-    if(path) {
-        UcxBuffer *buf = ucx_buffer_new(NULL, 4096, UCX_BUFFER_AUTOEXTEND);
-        FILE *file = fopen(path, "r");
-        if(file) {
-            ucx_stream_hcopy(file, buf, fread, ucx_buffer_write);
-            ucx_buffer_putc(buf, '\0');
-            ui_setval(wd->text, buf->space);
-            fclose(file);
-        }
-        ucx_buffer_free(buf);
-    }
-}
-
-void action_save(UiEvent *event, void *data) {
-    TestWindowData *wd = event->window;
-    printf("Text: {%s}\n", ui_getval(wd->text));
-    ui_setval(wd->text, uistr("hello"));
-    
-    ui_list_append(list, "abc");
-    ui_notify(list->observers, NULL);
-}
+typedef struct Person {
+    char *name;
+    char *mail;
+} Person;
 
 void action_close(UiEvent *event, void *data) {
-    exit(0);
+    ui_close(event->obj);
 }
 
-void action_doc1(UiEvent *event, void *data) {
-    TestWindowData *wdata = event->window;
-    if(event->obj->document != wdata->doc1) {
-        ui_set_document(event->obj, wdata->doc1);
-    }
-    ui_unset_group(event->obj->ctx, 1);
-}
-
-void action_doc2(UiEvent *event, void *data) {
-    TestWindowData *wdata = event->window;
-    if(event->obj->document != wdata->doc2) {
-        ui_set_document(event->obj, wdata->doc2);
+char* person_getvalue(Person *p, int column) {
+    switch(column) {
+        case 0: return p->name;
+        case 1: return p->mail;
     }
-    ui_set_group(event->obj->ctx, 1);
-}
-
-void action_undo(UiEvent *event, void *data) {
-    printf("undo\n");
-    TestWindowData *wd = event->window;
-    ui_text_undo(&wd->text);
-}
-
-void action_redo(UiEvent *event, void *data) {
-    printf("redo\n");
-    TestWindowData *wd = event->window;
-    ui_text_redo(&wd->text);
-}
-
-void action_document(UiEvent *event, void *data) {
-    UiList *documents = data;
-    printf("selected document: %d\n", event->intval);
+    return NULL;
 }
 
-void action_cut(UiEvent *event, void *data) {
-    printf("cut\n");
-}
-
-void action_copy(UiEvent *event, void *data) {
-    printf("copy\n");
-    TestWindowData *wd = event->window;
-    int begin;
-    int end;
-    wd->text.selection(&wd->text, &begin, &end);
-    char *selection = wd->text.getsubstr(&wd->text, begin, end);
-    ui_clipboard_set(selection);
-}
-
-void action_paste(UiEvent *event, void *data) {
-    printf("paste\n");
-    TestWindowData *wd = event->window;
-    char *str = ui_clipboard_get();
-    if(str) {
-        int pos = wd->text.position(&wd->text);
-        wd->text.insert(&wd->text, pos, str);
-        free(str);
-    }
-}
-
-void action_delete(UiEvent *event, void *data) {
-    printf("delete\n");
-}
-
-//*/
-
 int main(int argc, char** argv) { 
     ui_init("app1", argc, argv);
     ui_locales_dir("/opt/app1/locales");
     ui_load_lang_def(NULL, "en_EN");
     //ui_openfilefunc(action_new, NULL);
     
-    ///*
-    list = ui_list_new();
-    ui_list_append(list, "file1.txt");
-    ui_list_append(list, "hello.txt");
-    ui_list_append(list, "main.c");
-    
-    ui_menu("File");
-    ui_menuitem_st(UI_STOCK_NEW, action_new, NULL);
-    ui_menuitem_st(UI_STOCK_OPEN, action_open, NULL);
-    ui_menuitem_stgr(UI_STOCK_SAVE, action_save, NULL, 1, -1);
-    ui_menuseparator();
-    
-    ui_menuitem("Dokument 1", action_doc1, NULL);
-    ui_menuitem("Dokument 2", action_doc2, NULL);
-    
-    ui_menuseparator();
-    
-    ui_checkitem_nv("Check", "check1");
-    //ui_checkitem("Check", action_open, NULL);
-    
-    void ui_menuseparator();
-    ui_menuitem_list(list, action_document, list);
-    ui_menuseparator();
-    ui_menuitem_st(UI_STOCK_CLOSE, action_close, NULL);
-    
-    ui_menu("Edit");
-    ui_menuitem_stgr(UI_STOCK_CUT, action_cut, NULL, UI_GROUP_SELECTION, -1);
-    ui_menuitem_stgr(UI_STOCK_COPY, action_copy, NULL, UI_GROUP_SELECTION, -1);
-    ui_menuitem_st(UI_STOCK_PASTE, action_paste, NULL);
-    ui_menuitem_stgr(UI_STOCK_DELETE, action_delete, NULL, UI_GROUP_SELECTION, -1);
     
     
-    ui_toolitem_st("new", UI_STOCK_NEW, action_new, NULL);
-    ui_toolitem_st("open", UI_STOCK_GO_BACK, action_open, NULL);
-    ui_toolitem_stgr("save", UI_STOCK_GO_FORWARD, action_save, NULL, 1, -1);
-    ui_toolitem_st("close", UI_STOCK_CLOSE, action_close, NULL);
-    ui_toolitem_st("undo", UI_STOCK_UNDO, action_undo, NULL);
-    ui_toolitem_st("redo", UI_STOCK_REDO, action_redo, NULL);
-    
-    ui_toolbar_add_default("new");
-    ui_toolbar_add_default("open");
-    ui_toolbar_add_default("save");
-    ui_toolbar_add_default("close");
-    ui_toolbar_add_default("undo");
-    ui_toolbar_add_default("redo");
-    //*/
-    
-    //ui_menu("File");
-    //ui_menuitem("New", NULL, NULL);
-    //ui_menuitem("Close", NULL, NULL);
-    //ui_menu("Edit");
-    //ui_menuitem("Preferences", NULL, NULL);
+    ui_menu("File");
+    ui_menuitem_st(UI_STOCK_CLOSE, action_close, NULL);
     
     printf("create window\n");
-    UiObject *window = ui_window("Mod0", NULL);  
-    TestWindowData *wdata = calloc(1, sizeof(TestWindowData));
-    window->window = wdata;
+    UiObject *window = ui_window("Mod0", NULL);
     
-    TestDocument *doc1 = ui_document_new(sizeof(TestDocument));
-    TestDocument *doc2 = ui_document_new(sizeof(TestDocument));
-    ui_document_regint(doc1, "check1", &doc1->check1);
-    ui_document_regint(doc2, "check1", &doc2->check1);
-    wdata->doc1 = doc1;
-    wdata->doc2 = doc2;
+    UiModelInfo *model = ui_model_info(window->ctx, UI_STRING, "Name", UI_STRING, "Email", -1);
+    model->getvalue = (ui_model_getvalue_f)person_getvalue;
+    UiList *list = ui_list_new();
+    Person *p1 = ui_malloc(window->ctx, sizeof(Person));
+    Person *p2 = ui_malloc(window->ctx, sizeof(Person));
+    Person *p3 = ui_malloc(window->ctx, sizeof(Person));
+    Person *p4 = ui_malloc(window->ctx, sizeof(Person));
+    p1->name = "Some Name";
+    p1->mail = "mail@host.com";
+    p2->name = "Other Person";
+    p2->mail = "other.person@provider.com";
+    p3->name = "My Self";
+    p3->mail = "my@self.org";
+    p4->name = "Gregory House";
+    p4->mail = "greg@pp";
+    ui_list_append(list, p1);
+    ui_list_append(list, p2);
+    ui_list_append(list, p3);
+    ui_list_append(list, p4);
+    ui_table(window, list, model);
     
-    ui_set_document(window, doc1);
     
-    //ui_button(window, "OK", action_open, NULL);
-    ui_textarea(window, &wdata->text);
-    
-    //ui_window_addint(window, "check1");
     ui_show(window);
     ui_main();
     

mercurial