application/demo_bindings.c

Mon, 08 Dec 2025 18:11:54 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Mon, 08 Dec 2025 18:11:54 +0100
changeset 981
1d47e71f26b6
parent 969
7385c26d998d
permissions
-rw-r--r--

add server base structs

872
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 /*
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 *
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
4 * Copyright 2017 Olaf Wintermann. All rights reserved.
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
5 *
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
8 *
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
11 *
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
15 *
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
27 */
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
28
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
29 #include "demo_bindings.h"
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
30
873
78853bfc47cf add textfield (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 872
diff changeset
31 #include <stdio.h>
78853bfc47cf add textfield (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 872
diff changeset
32 #include <stdlib.h>
78853bfc47cf add textfield (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 872
diff changeset
33 #include <string.h>
872
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
34
981
1d47e71f26b6 add server base structs
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 969
diff changeset
35 #if !defined(UI_WIN32) && !defined(UI_SERVER)
872
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
36
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
37 Document* document_create(int id) {
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
38 Document* doc = ui_document_new(sizeof(Document));
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
39 UiContext *ctx = ui_document_context(doc);
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
40
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
41 char buf[32];
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
42 snprintf(buf, 32, "%d", id);
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
43
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
44 doc->id = ui_string_new(ctx, "id");
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
45 doc->name = ui_string_new(ctx, "name");
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
46 doc->input_name = ui_string_new(ctx, "input_name");
915
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
47 doc->subdocuments = ui_list_new(ctx, "subdocuments");
872
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
48
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
49 ui_set(doc->id, buf);
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
50
915
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
51 // create some sub documents
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
52 for(int i=0;i<3;i++) {
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
53 SubDocument *sub = ui_document_new(sizeof(SubDocument));
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
54 UiContext *subctx = ui_document_context(sub);
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
55 sub->id = ui_string_new(subctx, "sub_id");
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
56 sub->name = ui_string_new(subctx, "sub_name");
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
57 sub->input_name = ui_string_new(subctx, "sub_input_name");
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
58
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
59 snprintf(buf, 32, "%d.%d", id, i);
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
60 ui_set(sub->id, buf);
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
61
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
62 ui_list_append(doc->subdocuments, sub);
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
63 }
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
64
872
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
65 return doc;
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
66 }
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
67
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
68 void update_name(UiEvent *event, void *userdata) {
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
69 Document *doc = event->document;
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
70 if(!doc) {
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
71 return;
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
72 }
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
73 char *s = ui_get(doc->input_name);
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
74 ui_set(doc->name, s);
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
75 }
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
76
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
77 void switch_document(UiEvent *event, void *userdata) {
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
78 MainWindow *wdata = event->window;
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
79 if(event->document) {
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
80 ui_detach_document(event->obj->ctx, event->document);
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
81 }
882
75de79b155e3 add ui_motif_get_app()
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 873
diff changeset
82 printf("selection: %d\n", event->intval);
872
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
83 Document *doc = ui_list_get(wdata->doclist, event->intval);
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
84 if(doc) {
882
75de79b155e3 add ui_motif_get_app()
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 873
diff changeset
85 char *s1 = ui_get(doc->id);
75de79b155e3 add ui_motif_get_app()
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 873
diff changeset
86 char *s2 = ui_get(doc->name);
75de79b155e3 add ui_motif_get_app()
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 873
diff changeset
87 printf("doc %s - %s\n", s1, s2);
872
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
88 ui_attach_document(event->obj->ctx, doc);
882
75de79b155e3 add ui_motif_get_app()
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 873
diff changeset
89
872
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
90 }
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
91 }
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
92
915
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
93 void switch_subdocument(UiEvent *event, void *userdata) {
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
94 MainWindow *wdata = event->window;
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
95 Document *doc = event->document;
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
96 UiContext *ctx = ui_document_context(doc);
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
97 if(doc->current_sub) {
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
98 ui_detach_document(ctx, doc->current_sub);
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
99 doc->current_sub = NULL;
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
100 }
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
101
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
102 SubDocument *sub = ui_list_get(doc->subdocuments, event->intval);
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
103 if(sub) {
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
104 char *s1 = ui_get(sub->id);
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
105 char *s2 = ui_get(sub->name);
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
106 printf("sub %s - %s\n", s1, s2);
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
107 ui_attach_document(ctx, sub);
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
108 doc->current_sub = sub;
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
109
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
110 }
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
111 }
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
112
872
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
113 void* doclist_get_value(void *elm, int col) {
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
114 Document *doc = elm;
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
115 return ui_get(doc->id);
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
116 }
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
117
915
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
118 void* sublist_get_value(void *elm, int col) {
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
119 SubDocument *doc = elm;
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
120 return ui_get(doc->id);
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
121 }
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
122
872
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
123 void application_startup(UiEvent *event, void *data) {
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
124 UiObject *obj = ui_simple_window("Bindings Demo", NULL);
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
125 MainWindow *wdata = ui_malloc(obj->ctx, sizeof(MainWindow));
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
126 obj->window = wdata;
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
127
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
128 wdata->doclist = ui_list_new(obj->ctx, "doclist");
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
129
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
130 ui_grid(obj, .margin = 10, .columnspacing = 10, .rowspacing = 10, .fill = TRUE) {
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
131 ui_rlabel(obj, .label = "Document:");
914
4d5aa85bc5ed fix wrong arg count in frame creation (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 912
diff changeset
132 ui_llabel(obj, .varname = "id", .hfill = TRUE, .hexpand = TRUE, .vfill = TRUE);
872
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
133 ui_newline(obj);
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
134
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
135 ui_rlabel(obj, .label = "Name:");
914
4d5aa85bc5ed fix wrong arg count in frame creation (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 912
diff changeset
136 ui_llabel(obj, .varname = "name", .hfill = TRUE, .hexpand = TRUE, .vfill = TRUE);
872
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
137 ui_newline(obj);
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
138
915
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
139 ui_rlabel(obj, .label = "Sub Document:");
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
140 ui_llabel(obj, .varname = "sub_id", .hfill = TRUE, .hexpand = TRUE, .vfill = TRUE);
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
141 ui_newline(obj);
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
142
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
143 ui_rlabel(obj, .label = "Name:");
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
144 ui_llabel(obj, .varname = "sub_name", .hfill = TRUE, .hexpand = TRUE, .vfill = TRUE);
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
145 ui_newline(obj);
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
146
969
7385c26d998d rename combobox to dropdown
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 959
diff changeset
147 ui_dropdown(obj, .varname = "doclist", .colspan = 2, .onactivate = switch_document, .getvalue = doclist_get_value, .colspan = 2, .hfill = TRUE);
872
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
148 ui_newline(obj);
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
149
914
4d5aa85bc5ed fix wrong arg count in frame creation (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 912
diff changeset
150 ui_frame(obj, .label = "Document", .colspan = 2, .fill = TRUE, .subcontainer = UI_CONTAINER_GRID, .columnspacing = 10, .rowspacing = 10, .padding = 10) {
4d5aa85bc5ed fix wrong arg count in frame creation (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 912
diff changeset
151 ui_rlabel(obj, .label = "Name:", .vfill = TRUE);
4d5aa85bc5ed fix wrong arg count in frame creation (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 912
diff changeset
152 ui_textfield(obj, .varname = "input_name", .onchange = update_name);
915
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
153 ui_newline(obj);
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
154 ui_separator(obj, .colspan = 2, .hfill = TRUE);
ddbbceb8c3a5 add sub-documents to bindings demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 914
diff changeset
155 ui_newline(obj);
969
7385c26d998d rename combobox to dropdown
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 959
diff changeset
156 ui_dropdown(obj, .varname = "subdocuments", .getvalue = sublist_get_value, .onactivate = switch_subdocument, .colspan = 2, .hfill = TRUE);
872
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
157 }
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
158 }
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
159
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
160 for(int i=0;i<10;i++) {
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
161 Document *doc = document_create(i);
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
162 ui_list_append(wdata->doclist, doc);
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
163 }
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
164 ui_list_update(wdata->doclist);
882
75de79b155e3 add ui_motif_get_app()
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 873
diff changeset
165 ui_list_setselection(wdata->doclist, 0);
872
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
166 Document *doc = ui_list_get(wdata->doclist, 0);
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
167 ui_attach_document(obj->ctx, doc);
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
168
911
c8e1d40eeab6 fix combobox get/set selection functions (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 909
diff changeset
169 ui_list_setselection(wdata->doclist, 0);
872
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
170
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
171 ui_show(obj);
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
172 }
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
173
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
174 int main(int argc, char **argv) {
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
175 ui_init(NULL, argc, argv);
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
176 ui_onstartup(application_startup, NULL);
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
177 ui_main();
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
178 return 0;
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
179 }
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
180
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
181 #else
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
182
981
1d47e71f26b6 add server base structs
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 969
diff changeset
183 #ifndef UI_WIN32
1d47e71f26b6 add server base structs
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 969
diff changeset
184
1d47e71f26b6 add server base structs
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 969
diff changeset
185 int main(int argc, char **argv) {
1d47e71f26b6 add server base structs
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 969
diff changeset
186 return 0;
1d47e71f26b6 add server base structs
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 969
diff changeset
187 }
1d47e71f26b6 add server base structs
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 969
diff changeset
188
1d47e71f26b6 add server base structs
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 969
diff changeset
189 #else
1d47e71f26b6 add server base structs
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 969
diff changeset
190
872
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
191 int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
192 return 0;
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
193 }
1e34a27e016d add first code for binding demo
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
194
981
1d47e71f26b6 add server base structs
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 969
diff changeset
195 #endif
1d47e71f26b6 add server base structs
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 969
diff changeset
196
1d47e71f26b6 add server base structs
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 969
diff changeset
197 #endif

mercurial