Sun, 07 Dec 2025 19:20:48 +0100
implement radiobutton (Client)
| 0 | 1 | /* |
| 2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. | |
| 3 | * | |
|
144
29d98cff4f56
UiInteger uses int64 now
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
143
diff
changeset
|
4 | * Copyright 2017 Olaf Wintermann. All rights reserved. |
| 0 | 5 | * |
| 6 | * Redistribution and use in source and binary forms, with or without | |
| 7 | * modification, are permitted provided that the following conditions are met: | |
| 8 | * | |
| 9 | * 1. Redistributions of source code must retain the above copyright | |
| 10 | * notice, this list of conditions and the following disclaimer. | |
| 11 | * | |
| 12 | * 2. Redistributions in binary form must reproduce the above copyright | |
| 13 | * notice, this list of conditions and the following disclaimer in the | |
| 14 | * documentation and/or other materials provided with the distribution. | |
| 15 | * | |
| 16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |
| 17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
| 18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
| 19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE | |
| 20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |
| 21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
| 22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |
| 23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |
| 24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |
| 25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
| 26 | * POSSIBILITY OF SUCH DAMAGE. | |
| 27 | */ | |
| 28 | ||
| 29 | #include <stdio.h> | |
| 30 | #include <stdlib.h> | |
|
404
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
31 | #include <string.h> |
| 0 | 32 | |
| 33 | #include <ui/ui.h> | |
| 174 | 34 | #include <cx/buffer.h> |
| 0 | 35 | |
|
468
1f251c462f74
use UiGeneric for WebView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
465
diff
changeset
|
36 | #include "cx/string.h" |
|
503
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
37 | #include "cx/list.h" |
|
468
1f251c462f74
use UiGeneric for WebView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
465
diff
changeset
|
38 | |
|
559
dc5ed4c10d83
fix radio buttons (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
554
diff
changeset
|
39 | //define UI_TEST |
|
553
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
40 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
41 | #ifdef UI_TEST |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
42 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
43 | #define STATE_DOC 10 |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
44 | #define STATE_SUB 100 |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
45 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
46 | typedef struct ToplevelDoc { |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
47 | UiContext *ctx; |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
48 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
49 | UiList *doclist; |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
50 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
51 | void *current; |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
52 | } ToplevelDoc; |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
53 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
54 | typedef struct Document { |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
55 | UiContext *ctx; |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
56 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
57 | UiString *name; |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
58 | char *name_str; |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
59 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
60 | UiInteger *i; |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
61 | UiString *s; |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
62 | UiText *t; |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
63 | UiList *ls1; |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
64 | UiList *ls2; |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
65 | } Document; |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
66 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
67 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
68 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
69 | Document* create_doc(int i) { |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
70 | Document *doc = ui_document_new(sizeof(Document)); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
71 | doc->ctx = ui_document_context(doc); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
72 | doc->name = ui_string_new(doc->ctx, "name"); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
73 | doc->i = ui_int_new(doc->ctx, "int"); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
74 | doc->s = ui_string_new(doc->ctx, "string"); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
75 | doc->t = ui_text_new(doc->ctx, "text"); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
76 | doc->ls1 = ui_list_new(doc->ctx, "list1"); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
77 | doc->ls2 = ui_list_new(doc->ctx, "list2"); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
78 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
79 | ui_list_append(doc->ls1, "Hello"); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
80 | ui_list_append(doc->ls1, "World"); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
81 | ui_list_append(doc->ls1, "Test"); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
82 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
83 | for(int x=0;x<(i+1)*2;x++) { |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
84 | char buf[32]; |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
85 | snprintf(buf, 32, "%d", x); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
86 | ui_list_append(doc->ls2, strdup(buf)); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
87 | } |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
88 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
89 | return doc; |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
90 | } |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
91 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
92 | ToplevelDoc* create_toplevel() { |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
93 | ToplevelDoc *doc = ui_document_new(sizeof(ToplevelDoc)); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
94 | doc->ctx = ui_document_context(doc); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
95 | doc->doclist = ui_list_new(doc->ctx, "doclist"); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
96 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
97 | for(int i=0;i<3;i++) { |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
98 | Document *sub = create_doc(i); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
99 | char buf[32]; |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
100 | snprintf(buf, 32, "%d", i); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
101 | ui_set(sub->name, buf); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
102 | sub->name_str = strdup(buf); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
103 | ui_list_append(doc->doclist, sub); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
104 | } |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
105 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
106 | return doc; |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
107 | } |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
108 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
109 | static void* doclist_getvalue(void *elm, int col) { |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
110 | Document *doc = elm; |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
111 | return doc->name_str; |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
112 | } |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
113 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
114 | static void action_document_selected(UiEvent *event, void *userdata) { |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
115 | Document *sub = event->eventdata; |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
116 | ToplevelDoc *doc = event->document; |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
117 | if(doc->current) { |
|
623
1ebc781c7d17
rename ui_detach_document2 to ui_detach_document
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
594
diff
changeset
|
118 | ui_detach_document(doc->ctx, doc->current); |
|
553
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
119 | } |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
120 | ui_attach_document(doc->ctx, sub); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
121 | doc->current = sub; |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
122 | } |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
123 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
124 | void application_startup(UiEvent *event, void *data) { |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
125 | UiObject *obj = ui_window("Test", NULL); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
126 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
127 | ui_grid(obj, .margin = 10, .columnspacing = 10, .rowspacing = 10) { |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
128 | ui_hbox(obj, .colspan = 2, .spacing = 10) { |
|
969
7385c26d998d
rename combobox to dropdown
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
967
diff
changeset
|
129 | ui_dropdown(obj, .varname = "doclist", .getvalue = doclist_getvalue, .onactivate = action_document_selected); |
|
553
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
130 | ui_textfield(obj, .varname = "name"); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
131 | ui_button(obj, .colspan = 4, .label = "Test Groups", .groups = UI_GROUPS(STATE_DOC, STATE_SUB)); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
132 | } |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
133 | ui_newline(obj); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
134 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
135 | ui_rlabel(obj, .label = "Integer", .vfill = TRUE); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
136 | ui_togglebutton(obj, .label = "Test", .varname = "int", .hfill = TRUE); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
137 | ui_newline(obj); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
138 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
139 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
140 | ui_rlabel(obj, .label = "String", .vfill = TRUE); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
141 | ui_textfield(obj, .varname = "string", .hfill = TRUE); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
142 | ui_newline(obj); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
143 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
144 | ui_rlabel(obj, .label = "Text"); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
145 | UIWIDGET textarea = ui_textarea(obj, .varname = "text", .hfill =TRUE); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
146 | ui_widget_set_size(textarea, 300, 300); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
147 | ui_newline(obj); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
148 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
149 | ui_rlabel(obj, .label = "List 1", .vfill = TRUE); |
|
969
7385c26d998d
rename combobox to dropdown
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
967
diff
changeset
|
150 | ui_dropdown(obj, .varname = "list1"); |
|
553
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
151 | } |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
152 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
153 | ToplevelDoc *doc = create_toplevel(); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
154 | ui_attach_document(obj->ctx, doc); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
155 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
156 | ui_show(obj); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
157 | } |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
158 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
159 | int main(int argc, char** argv) { |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
160 | ui_init("app1", argc, argv); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
161 | ui_onstartup(application_startup, NULL); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
162 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
163 | ui_set_property("ui.gtk.window.showtitle", "main"); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
164 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
165 | // menu |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
166 | ui_menu("File") { |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
167 | ui_menuitem(.label = "Static Item"); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
168 | ui_menuseparator(); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
169 | ui_menu_itemlist(.varname = "list2"); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
170 | } |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
171 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
172 | ui_main(); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
173 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
174 | return (EXIT_SUCCESS); |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
175 | } |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
176 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
177 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
178 | #endif |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
179 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
180 | |
|
90e38db0c755
rework uic_copy_binding and refactore menu itemlists to bind directly to lists without using observers
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
550
diff
changeset
|
181 | #if !defined(UI_COCOA) && !defined(UI_MOTIF) && !defined(UI_WIN32) && !defined(UI_QT) && !defined(UI_TEST) |
|
404
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
182 | |
|
163
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
183 | typedef struct { |
|
253
087cc9216f28
initial newapi GTK port
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
174
diff
changeset
|
184 | UiString *str1; |
|
087cc9216f28
initial newapi GTK port
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
174
diff
changeset
|
185 | UiString *str2; |
|
282
3a77b9048664
add path textfield (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
279
diff
changeset
|
186 | UiString *path; |
|
335
91d4f0391282
add new textarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
333
diff
changeset
|
187 | UiText *text; |
|
266
37d5b49b1c91
fix progressbar using the wrong var type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
265
diff
changeset
|
188 | UiDouble *progress; |
|
268
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
189 | UiList *list; |
|
390
b130f80ec7f9
implement list/table contextmenu (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
389
diff
changeset
|
190 | UiList *list2; |
|
311
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
191 | UiList *menulist; |
|
275
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
192 | UiInteger *radio; |
|
332
7e7c05af8f3a
implement stack set/get/remove (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
331
diff
changeset
|
193 | UiInteger *tabview; |
|
339
b68b5f984074
add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
336
diff
changeset
|
194 | UiGeneric *image; |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
195 | UiList *srclist1; |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
196 | UiList *srclist2; |
|
422
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
197 | UiList *items; |
|
468
1f251c462f74
use UiGeneric for WebView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
465
diff
changeset
|
198 | UiGeneric *web; |
|
503
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
199 | UiString *list_input; |
|
965
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
955
diff
changeset
|
200 | UiString *list_new_col; |
|
701
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
201 | UiList *list11; |
|
704
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
202 | UiString *link; |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
203 | UiString *link_label; |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
204 | UiString *link_uri; |
|
797
47008843b468
fix global menu list binding
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
789
diff
changeset
|
205 | UiList *submenulist; |
|
965
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
955
diff
changeset
|
206 | |
|
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
955
diff
changeset
|
207 | UiModel *model; |
|
163
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
208 | } MyDocument; |
|
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
209 | |
|
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
210 | MyDocument *doc1; |
|
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
211 | MyDocument *doc2; |
|
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
212 | |
|
333
634e3ce80afe
implement gtk3 stack tabview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
332
diff
changeset
|
213 | UIWIDGET tabview; |
|
163
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
214 | |
|
347
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
215 | static UiCondVar *cond; |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
216 | static int thr_end = 0; |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
217 | static int thr_started = 0; |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
218 | |
|
955
ea9a999b4fc8
implement ui_queue_free
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
954
diff
changeset
|
219 | static UiThreadpool *threadpool; |
|
ea9a999b4fc8
implement ui_queue_free
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
954
diff
changeset
|
220 | |
|
347
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
221 | int threadfunc(void *data) { |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
222 | printf("thr wait for data...\n"); |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
223 | ui_condvar_wait(cond); |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
224 | printf("thr data received: {%s} [%d]\n", cond->data, cond->intdata); |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
225 | ui_condvar_destroy(cond); |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
226 | cond = NULL; |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
227 | |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
228 | return 0; |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
229 | } |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
230 | |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
231 | void action_start_thread(UiEvent *event, void *data) { |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
232 | if(!thr_started) { |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
233 | cond = ui_condvar_create(); |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
234 | ui_job(event->obj, threadfunc, NULL, NULL, NULL); |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
235 | thr_started = 1; |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
236 | } |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
237 | } |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
238 | |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
239 | void action_notify_thread(UiEvent *event, void *data) { |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
240 | if(!thr_end) { |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
241 | ui_condvar_signal(cond, "hello thread", 123); |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
242 | thr_end = 1; |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
243 | } |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
244 | } |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
245 | |
| 162 | 246 | void action_menu(UiEvent *event, void *userdata) { |
|
253
087cc9216f28
initial newapi GTK port
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
174
diff
changeset
|
247 | |
|
145
853685152c1d
adds spinner widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
144
diff
changeset
|
248 | } |
|
853685152c1d
adds spinner widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
144
diff
changeset
|
249 | |
|
279
2ad83650d797
implement file dialog (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
278
diff
changeset
|
250 | void action_file_selected(UiEvent *event, void *userdata) { |
|
2ad83650d797
implement file dialog (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
278
diff
changeset
|
251 | UiFileList *files = event->eventdata; |
|
339
b68b5f984074
add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
336
diff
changeset
|
252 | MyDocument *doc = event->document; |
|
279
2ad83650d797
implement file dialog (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
278
diff
changeset
|
253 | printf("files: %d\n", (int)files->nfiles); |
|
2ad83650d797
implement file dialog (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
278
diff
changeset
|
254 | if(files->nfiles > 0) { |
|
2ad83650d797
implement file dialog (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
278
diff
changeset
|
255 | printf("selected file: %s\n", files->files[0]); |
|
339
b68b5f984074
add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
336
diff
changeset
|
256 | ui_image_load_file(doc->image, files->files[0]); |
|
279
2ad83650d797
implement file dialog (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
278
diff
changeset
|
257 | } |
|
2ad83650d797
implement file dialog (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
278
diff
changeset
|
258 | } |
|
2ad83650d797
implement file dialog (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
278
diff
changeset
|
259 | |
|
163
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
260 | void action_button(UiEvent *event, void *userdata) { |
|
339
b68b5f984074
add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
336
diff
changeset
|
261 | ui_openfiledialog(event->obj, UI_FILEDIALOG_SELECT_SINGLE, action_file_selected, NULL); |
|
163
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
262 | } |
|
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
263 | |
|
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
264 | void action_switch(UiEvent *event, void *userdata) { |
|
253
087cc9216f28
initial newapi GTK port
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
174
diff
changeset
|
265 | |
|
163
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
266 | } |
|
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
267 | |
|
275
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
268 | void action_toolbar_button(UiEvent *event, void *userdata) { |
|
320
be224cf1f50e
add alternative ui_dialog implementation for libadwaita
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
269 | printf("toolbar button\n"); |
|
275
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
270 | |
|
320
be224cf1f50e
add alternative ui_dialog implementation for libadwaita
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
271 | ui_dialog(event->obj, .title = "Dialog Title", .content = "Content Label", .button1_label = "btn1", .button2_label = "btn2", .input = TRUE, .closebutton_label = "Cancel"); |
|
275
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
272 | } |
|
163
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
273 | |
|
344
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
274 | void action_dialog_button(UiEvent *event, void *userdata) { |
|
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
275 | ui_close(event->obj); |
|
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
276 | } |
|
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
277 | |
|
402
96a055be7f0b
add textfield onactivate event (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
390
diff
changeset
|
278 | void action_dialog_onactivate(UiEvent *event, void *userdata) { |
|
96a055be7f0b
add textfield onactivate event (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
390
diff
changeset
|
279 | printf("textfield activate\n"); |
|
96a055be7f0b
add textfield onactivate event (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
390
diff
changeset
|
280 | ui_close(event->obj); |
|
96a055be7f0b
add textfield onactivate event (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
390
diff
changeset
|
281 | } |
|
96a055be7f0b
add textfield onactivate event (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
390
diff
changeset
|
282 | |
|
344
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
283 | void action_toolbar_dialog(UiEvent *event, void *userdata) { |
|
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
284 | |
|
345
d2ccc543f432
add style for dialog window default button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
344
diff
changeset
|
285 | UiObject *dialog = ui_dialog_window(event->obj, .title = "Dialog Window", .lbutton1 = "Cancel 1", .lbutton2 = "Btn2", .rbutton3 = "Btn3", .rbutton4 = "Login 4", .onclick = action_dialog_button, .default_button = 4, .show_closebutton = UI_OFF); |
|
344
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
286 | |
|
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
287 | ui_vbox(dialog, .margin = 10, .spacing = 10) { |
|
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
288 | ui_label(dialog, .label = "Enter password:"); |
|
402
96a055be7f0b
add textfield onactivate event (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
390
diff
changeset
|
289 | ui_passwordfield(dialog, .varname = "password", .onactivate = action_dialog_onactivate); |
|
344
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
290 | } |
|
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
291 | |
|
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
292 | ui_show(dialog); |
|
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
293 | } |
|
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
294 | |
|
336
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
295 | void action_toolbar_newwindow(UiEvent *event, void *userdata) { |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
296 | UiObject *obj = ui_simple_window("New Window", NULL); |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
297 | |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
298 | ui_headerbar0(obj) { |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
299 | ui_headerbar_start(obj) { |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
300 | ui_button(obj, .label = "Open"); |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
301 | } |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
302 | ui_headerbar_end(obj) { |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
303 | ui_button(obj, .label = "Test"); |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
304 | } |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
305 | } |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
306 | |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
307 | ui_textarea(obj, .varname="text"); |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
308 | |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
309 | ui_show(obj); |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
310 | } |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
311 | |
|
163
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
312 | MyDocument* create_doc(void) { |
|
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
313 | MyDocument *doc = ui_document_new(sizeof(MyDocument)); |
|
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
314 | UiContext *docctx = ui_document_context(doc); |
|
797
47008843b468
fix global menu list binding
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
789
diff
changeset
|
315 | doc->submenulist = ui_list_new(docctx, "sub_menulist"); |
|
47008843b468
fix global menu list binding
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
789
diff
changeset
|
316 | ui_list_append(doc->submenulist, "Sub Menu List Item 1"); |
|
47008843b468
fix global menu list binding
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
789
diff
changeset
|
317 | ui_list_append(doc->submenulist, "Sub Menu List Item 2"); |
|
47008843b468
fix global menu list binding
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
789
diff
changeset
|
318 | ui_list_append(doc->submenulist, "Sub Menu List Item 3"); |
|
47008843b468
fix global menu list binding
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
789
diff
changeset
|
319 | ui_list_append(doc->submenulist, "Sub Menu List Item 4"); |
|
47008843b468
fix global menu list binding
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
789
diff
changeset
|
320 | ui_list_append(doc->submenulist, "Sub Menu List Item 5"); |
|
47008843b468
fix global menu list binding
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
789
diff
changeset
|
321 | ui_list_append(doc->submenulist, "Sub Menu List Item 6"); |
|
253
087cc9216f28
initial newapi GTK port
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
174
diff
changeset
|
322 | doc->str1 = ui_string_new(docctx, "str1"); |
|
087cc9216f28
initial newapi GTK port
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
174
diff
changeset
|
323 | doc->str1 = ui_string_new(docctx, "str2"); |
|
282
3a77b9048664
add path textfield (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
279
diff
changeset
|
324 | doc->path = ui_string_new(docctx, "path"); |
|
266
37d5b49b1c91
fix progressbar using the wrong var type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
265
diff
changeset
|
325 | doc->progress = ui_double_new(docctx, "progress"); |
|
268
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
326 | doc->list = ui_list_new(docctx, "list"); |
|
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
327 | ui_list_append(doc->list, "test1"); |
|
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
328 | ui_list_append(doc->list, "test2"); |
|
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
329 | ui_list_append(doc->list, "test3"); |
|
390
b130f80ec7f9
implement list/table contextmenu (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
389
diff
changeset
|
330 | doc->list2 = ui_list_new(docctx, "list2"); |
|
503
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
331 | ui_list_append(doc->list2, strdup("test1")); |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
332 | ui_list_append(doc->list2, strdup("test2")); |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
333 | ui_list_append(doc->list2, strdup("test3")); |
|
275
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
334 | doc->radio = ui_int_new(docctx, "radio"); |
|
332
7e7c05af8f3a
implement stack set/get/remove (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
331
diff
changeset
|
335 | doc->tabview = ui_int_new(docctx, "tabview"); |
|
339
b68b5f984074
add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
336
diff
changeset
|
336 | doc->image = ui_generic_new(docctx, "image"); |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
337 | |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
338 | doc->srclist1 = ui_list_new(docctx, "srclist1"); |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
339 | doc->srclist2 = ui_list_new(docctx, "srclist2"); |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
340 | ui_list_append(doc->srclist1, "test1"); |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
341 | ui_list_append(doc->srclist1, "test2"); |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
342 | ui_list_append(doc->srclist1, "test3"); |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
343 | ui_list_append(doc->srclist2, "x1"); |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
344 | ui_list_append(doc->srclist2, "x2"); |
|
937
06e03c7e39db
implement sourcelist get/set selection list methods (gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
936
diff
changeset
|
345 | ui_list_append(doc->srclist2, "select 0"); |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
346 | |
|
422
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
347 | doc->items = ui_list_new(docctx, "items"); |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
348 | ui_list_append(doc->items, "Item 1"); |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
349 | ui_list_append(doc->items, "Item 2"); |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
350 | ui_list_append(doc->items, "Item 3"); |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
351 | |
|
468
1f251c462f74
use UiGeneric for WebView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
465
diff
changeset
|
352 | doc->web = ui_generic_new(docctx, NULL); |
|
1f251c462f74
use UiGeneric for WebView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
465
diff
changeset
|
353 | |
|
503
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
354 | doc->list_input = ui_string_new(docctx, "list_input"); |
|
965
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
955
diff
changeset
|
355 | doc->list_new_col = ui_string_new(docctx, NULL); |
|
503
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
356 | |
|
701
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
357 | doc->list11 = ui_list_new(docctx, "list11"); |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
358 | ui_list_append(doc->list11, "Item 1"); |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
359 | ui_list_append(doc->list11, "Item 2"); |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
360 | ui_list_append(doc->list11, "Item 3"); |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
361 | |
|
704
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
362 | doc->link = ui_string_new(docctx, "link"); |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
363 | doc->link_label = ui_string_new(docctx, "link_label"); |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
364 | doc->link_uri = ui_string_new(docctx, "link_uri"); |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
365 | |
|
335
91d4f0391282
add new textarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
333
diff
changeset
|
366 | //doc->text = ui_text_new(docctx, "text"); |
|
163
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
367 | return doc; |
|
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
368 | } |
|
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
369 | |
|
268
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
370 | UiIcon *icon = NULL; |
|
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
371 | |
|
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
372 | static void* list_getvalue(void *elm, int col) { |
|
269
3380100e20f5
implement listview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
268
diff
changeset
|
373 | /* |
|
268
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
374 | if(col == 0) { |
|
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
375 | if(!icon) { |
|
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
376 | icon = ui_icon("folder", 24); |
|
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
377 | } |
|
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
378 | return icon; |
|
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
379 | } |
|
269
3380100e20f5
implement listview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
268
diff
changeset
|
380 | */ |
|
3380100e20f5
implement listview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
268
diff
changeset
|
381 | |
|
268
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
382 | char *str = elm; |
|
270
9389313ac00f
port combobox to new API (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
269
diff
changeset
|
383 | return col == 0 ? str : "x"; |
|
268
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
384 | } |
|
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
385 | |
|
311
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
386 | static UiList *menu_list; |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
387 | int new_item_count = 0; |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
388 | |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
389 | void action_add_menu_item(UiEvent *event, void *userdata) { |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
390 | char str[64]; |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
391 | snprintf(str, 64, "new item %d", new_item_count++); |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
392 | |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
393 | ui_list_append(menu_list, strdup(str)); |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
394 | ui_list_notify(menu_list); |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
395 | } |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
396 | |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
397 | void action_menu_list(UiEvent *event, void *userdata) { |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
398 | printf("menu list item: %d\n", event->intval); |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
399 | } |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
400 | |
|
332
7e7c05af8f3a
implement stack set/get/remove (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
331
diff
changeset
|
401 | static int tab_x = 0; |
|
7e7c05af8f3a
implement stack set/get/remove (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
331
diff
changeset
|
402 | void action_tab2_button(UiEvent *event, void *userdata) { |
|
7e7c05af8f3a
implement stack set/get/remove (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
331
diff
changeset
|
403 | MyDocument *doc = event->document; |
|
7e7c05af8f3a
implement stack set/get/remove (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
331
diff
changeset
|
404 | printf("current page: %d\n", (int)ui_get(doc->tabview)); |
|
7e7c05af8f3a
implement stack set/get/remove (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
331
diff
changeset
|
405 | ui_set(doc->tabview, 0); |
|
7e7c05af8f3a
implement stack set/get/remove (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
331
diff
changeset
|
406 | } |
|
7e7c05af8f3a
implement stack set/get/remove (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
331
diff
changeset
|
407 | |
|
343
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
408 | |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
409 | void action_group1(UiEvent *event, void *userdata) { |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
410 | UiContext *ctx = event->obj->ctx; |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
411 | if(userdata) { |
|
967
ff4a8d10307b
rename ui_set_group/ui_unset_group
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
966
diff
changeset
|
412 | ui_unset_state(ctx, 1); |
|
343
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
413 | } else { |
|
967
ff4a8d10307b
rename ui_set_group/ui_unset_group
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
966
diff
changeset
|
414 | ui_set_state(ctx, 1); |
|
343
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
415 | } |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
416 | } |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
417 | |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
418 | void action_group2(UiEvent *event, void *userdata) { |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
419 | UiContext *ctx = event->obj->ctx; |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
420 | if(userdata) { |
|
967
ff4a8d10307b
rename ui_set_group/ui_unset_group
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
966
diff
changeset
|
421 | ui_unset_state(ctx, 2); |
|
343
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
422 | } else { |
|
967
ff4a8d10307b
rename ui_set_group/ui_unset_group
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
966
diff
changeset
|
423 | ui_set_state(ctx, 2); |
|
343
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
424 | } |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
425 | } |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
426 | |
|
383
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
427 | static UiObject *ref_window; |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
428 | |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
429 | void action_button_ref(UiEvent *event, void *userdata) { |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
430 | UiObject *obj = event->obj; |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
431 | printf("action_button_ref: %u\n", obj->ref); |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
432 | ui_object_ref(obj); |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
433 | ref_window = obj; |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
434 | } |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
435 | |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
436 | void action_button_unref(UiEvent *event, void *userdata) { |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
437 | UiObject *obj = userdata; |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
438 | printf("action_button_unref: %u\n", obj->ref); |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
439 | ui_object_unref(obj); |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
440 | } |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
441 | |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
442 | void action_toolbar_unrefwindow(UiEvent *event, void *userdata) { |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
443 | UiObject *obj = ui_simple_window("Unref", NULL); |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
444 | ui_grid(obj, .margin = 20) { |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
445 | ui_button(obj, .label = "Unref", .onclick = action_button_unref, .onclickdata = ref_window); |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
446 | } |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
447 | ui_show(obj); |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
448 | } |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
449 | |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
450 | void action_sourcelist_activate(UiEvent *event, void *userdata) { |
|
742
f63d8125fcbd
fix wrong gtk3 treeviewmodel when using multiple UI_TEXT columns
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
738
diff
changeset
|
451 | UiSubListEventData *eventdata = event->eventdata; |
|
776
867ff911492d
fix ui_listbox_list_update
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
771
diff
changeset
|
452 | printf("sourcelist %s index %d\n", eventdata->row_data, eventdata->row_index); |
|
853
380ec881faa2
add support for selectable source list header rows (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
849
diff
changeset
|
453 | if(eventdata->row_index >= 0) { |
|
380ec881faa2
add support for selectable source list header rows (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
849
diff
changeset
|
454 | ui_list_update_row(eventdata->list, eventdata->row_index); |
|
380ec881faa2
add support for selectable source list header rows (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
849
diff
changeset
|
455 | } |
|
937
06e03c7e39db
implement sourcelist get/set selection list methods (gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
936
diff
changeset
|
456 | UiListSelection sel = ui_list_getselection(eventdata->list); |
|
06e03c7e39db
implement sourcelist get/set selection list methods (gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
936
diff
changeset
|
457 | printf("sel: %d: %d\n", sel.count, sel.count > 0 ? sel.rows[0] : -1); |
|
06e03c7e39db
implement sourcelist get/set selection list methods (gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
936
diff
changeset
|
458 | |
|
06e03c7e39db
implement sourcelist get/set selection list methods (gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
936
diff
changeset
|
459 | if(eventdata->sublist_index == 1 && eventdata->row_index == 2) { |
|
06e03c7e39db
implement sourcelist get/set selection list methods (gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
936
diff
changeset
|
460 | ui_list_setselection(eventdata->list, 0); |
|
06e03c7e39db
implement sourcelist get/set selection list methods (gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
936
diff
changeset
|
461 | } |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
462 | } |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
463 | |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
464 | void action_table_activate(UiEvent *event, void *userdata) { |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
465 | char *s = userdata; |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
466 | printf("table event: %s\n", s); |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
467 | UiListSelection *sel = event->eventdata; |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
468 | for(int i=0;i<sel->count;i++) { |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
469 | printf("%d\n", sel->rows[i]); |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
470 | } |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
471 | printf("\n"); |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
472 | } |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
473 | |
|
389
d15eca5fd8b3
implement image viewer context menus (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
388
diff
changeset
|
474 | UiMenuBuilder *menubuilder; |
|
856
b769e01035a7
implement sourcelist item popup menu (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
855
diff
changeset
|
475 | UiMenuBuilder *sourcelist_menu; |
|
389
d15eca5fd8b3
implement image viewer context menus (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
388
diff
changeset
|
476 | |
|
390
b130f80ec7f9
implement list/table contextmenu (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
389
diff
changeset
|
477 | void* table_getvalue(void *row, int col) { |
|
965
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
955
diff
changeset
|
478 | return "test"; |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
479 | switch(col) { |
|
742
f63d8125fcbd
fix wrong gtk3 treeviewmodel when using multiple UI_TEXT columns
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
738
diff
changeset
|
480 | case 0: return ui_foldericon(16); |
|
f63d8125fcbd
fix wrong gtk3 treeviewmodel when using multiple UI_TEXT columns
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
738
diff
changeset
|
481 | case 1: return row; |
|
f63d8125fcbd
fix wrong gtk3 treeviewmodel when using multiple UI_TEXT columns
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
738
diff
changeset
|
482 | case 2: return (void*)(intptr_t)1234; |
|
f63d8125fcbd
fix wrong gtk3 treeviewmodel when using multiple UI_TEXT columns
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
738
diff
changeset
|
483 | case 3: return ui_foldericon(16); |
|
f63d8125fcbd
fix wrong gtk3 treeviewmodel when using multiple UI_TEXT columns
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
738
diff
changeset
|
484 | case 4: return ui_fileicon(16); |
|
f63d8125fcbd
fix wrong gtk3 treeviewmodel when using multiple UI_TEXT columns
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
738
diff
changeset
|
485 | case 5: return "file"; |
|
777
622efebfab37
add UI_STRING_EDITABLE model type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
776
diff
changeset
|
486 | case 6: return (void*)(intptr_t)123; |
|
622efebfab37
add UI_STRING_EDITABLE model type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
776
diff
changeset
|
487 | case 7: return "edit me"; |
|
622efebfab37
add UI_STRING_EDITABLE model type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
776
diff
changeset
|
488 | case 8: return "edit me too"; |
|
821
2aa2f75f8da4
fix qt build system
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
818
diff
changeset
|
489 | case 9: return (void*)(intptr_t)1; |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
490 | } |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
491 | return NULL; |
|
390
b130f80ec7f9
implement list/table contextmenu (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
389
diff
changeset
|
492 | } |
|
b130f80ec7f9
implement list/table contextmenu (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
389
diff
changeset
|
493 | |
|
738
0dbf92544d4f
add stylefunc for table/listview for row and cell styling options (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
729
diff
changeset
|
494 | UiBool table_getstyle(UiList *list, void *elm, int row, int col, void *userdata, UiTextStyle *style) { |
|
777
622efebfab37
add UI_STRING_EDITABLE model type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
776
diff
changeset
|
495 | if(col > 6) { |
|
622efebfab37
add UI_STRING_EDITABLE model type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
776
diff
changeset
|
496 | return FALSE; |
|
622efebfab37
add UI_STRING_EDITABLE model type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
776
diff
changeset
|
497 | } |
|
738
0dbf92544d4f
add stylefunc for table/listview for row and cell styling options (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
729
diff
changeset
|
498 | if(row < 2 && col != -1) { |
|
0dbf92544d4f
add stylefunc for table/listview for row and cell styling options (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
729
diff
changeset
|
499 | style->text_style = UI_TEXT_STYLE_BOLD; |
|
745
a4ee36ff7147
implement table styling for gtk3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
742
diff
changeset
|
500 | if(col == 2) { |
|
a4ee36ff7147
implement table styling for gtk3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
742
diff
changeset
|
501 | style->text_style = UI_TEXT_STYLE_ITALIC; |
|
a4ee36ff7147
implement table styling for gtk3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
742
diff
changeset
|
502 | } |
|
a4ee36ff7147
implement table styling for gtk3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
742
diff
changeset
|
503 | if(row == 1) { |
|
a4ee36ff7147
implement table styling for gtk3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
742
diff
changeset
|
504 | style->text_style |= UI_TEXT_STYLE_UNDERLINE; |
|
a4ee36ff7147
implement table styling for gtk3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
742
diff
changeset
|
505 | } |
|
742
f63d8125fcbd
fix wrong gtk3 treeviewmodel when using multiple UI_TEXT columns
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
738
diff
changeset
|
506 | style->fg.blue = col == 1 ? 255 : 0; |
|
f63d8125fcbd
fix wrong gtk3 treeviewmodel when using multiple UI_TEXT columns
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
738
diff
changeset
|
507 | style->fg.green = col == 2 ? 255 : 0; |
|
f63d8125fcbd
fix wrong gtk3 treeviewmodel when using multiple UI_TEXT columns
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
738
diff
changeset
|
508 | style->fg.red = col == 5 ? 255 : 0; |
|
745
a4ee36ff7147
implement table styling for gtk3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
742
diff
changeset
|
509 | style->fg_set = TRUE; |
|
738
0dbf92544d4f
add stylefunc for table/listview for row and cell styling options (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
729
diff
changeset
|
510 | return TRUE; |
|
0dbf92544d4f
add stylefunc for table/listview for row and cell styling options (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
729
diff
changeset
|
511 | } |
|
0dbf92544d4f
add stylefunc for table/listview for row and cell styling options (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
729
diff
changeset
|
512 | return FALSE; |
|
0dbf92544d4f
add stylefunc for table/listview for row and cell styling options (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
729
diff
changeset
|
513 | } |
|
0dbf92544d4f
add stylefunc for table/listview for row and cell styling options (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
729
diff
changeset
|
514 | |
|
658
b25f54b51d76
allow sourcelist getvalue func to be null
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
653
diff
changeset
|
515 | void sourcelist_getvalue(UiList *list, void *sublistdata, void *rowdata, int index, UiSubListItem *item, void *userdata) { |
|
860
7f2287ae2b78
add reference counting to the menu builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
856
diff
changeset
|
516 | ui_menubuilder_ref(sourcelist_menu); |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
517 | item->label = strdup(rowdata); |
|
855
37f8a9fa8251
hide sourcelist row button if the row is not hovered (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
853
diff
changeset
|
518 | item->button_icon = strdup("view-more-horizontal"); |
|
856
b769e01035a7
implement sourcelist item popup menu (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
855
diff
changeset
|
519 | item->button_menu = sourcelist_menu; |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
520 | item->eventdata = sublistdata; |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
521 | } |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
522 | |
|
422
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
523 | typedef struct Item { |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
524 | UiObject *obj; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
525 | MyDocument *doc; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
526 | void *elm; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
527 | } Item; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
528 | |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
529 | void item_remove(UiEvent *event, void *userdata) { |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
530 | Item *item = userdata; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
531 | int index = 0; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
532 | void *elm = ui_list_first(item->doc->items); |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
533 | while(elm) { |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
534 | if(elm == item->elm) { |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
535 | break; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
536 | } |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
537 | elm = ui_list_next(item->doc->items); |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
538 | index++; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
539 | } |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
540 | |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
541 | ui_list_remove(item->doc->items, index); |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
542 | ui_list_update(item->doc->items); |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
543 | } |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
544 | |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
545 | void create_item(UiObject *obj, int index, void *elm, void *userdata) { |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
546 | Item *i = ui_malloc(obj->ctx, sizeof(Item)); |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
547 | i->obj = obj; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
548 | i->elm = elm; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
549 | i->doc = userdata; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
550 | |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
551 | char *item = elm; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
552 | ui_button(obj, .label = item); |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
553 | ui_checkbox(obj, .label = "Check"); |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
554 | ui_label(obj, .fill = UI_ON); |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
555 | ui_button(obj, .label = "X", .onclick = item_remove, .onclickdata = i); |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
556 | |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
557 | |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
558 | |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
559 | } |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
560 | |
|
489
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
481
diff
changeset
|
561 | static void action_static_dropdown(UiEvent *event, void *userdata) { |
|
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
481
diff
changeset
|
562 | printf("dropdown[%d]: %s\n", event->intval, event->eventdata); |
|
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
481
diff
changeset
|
563 | } |
|
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
481
diff
changeset
|
564 | |
|
503
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
565 | static void action_update_list(UiEvent *event, void *userdata) { |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
566 | MyDocument *doc = event->document; |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
567 | |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
568 | char *newvalue = ui_get(doc->list_input); |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
569 | CxList *list2 = doc->list2->data; |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
570 | cxListRemove(list2, 1); |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
571 | cxListInsert(list2, 1, strdup(newvalue)); |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
572 | |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
573 | doc->list2->update(doc->list2, 1); |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
574 | } |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
575 | |
|
965
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
955
diff
changeset
|
576 | static void action_add_col(UiEvent *event, void *userdata) { |
|
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
955
diff
changeset
|
577 | MyDocument *doc = event->document; |
|
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
955
diff
changeset
|
578 | |
|
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
955
diff
changeset
|
579 | char *colname = ui_get(doc->list_new_col); |
|
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
955
diff
changeset
|
580 | ui_model_add_column(doc->model, UI_STRING, colname, 200); |
|
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
955
diff
changeset
|
581 | } |
|
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
955
diff
changeset
|
582 | |
|
701
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
583 | static void action_list_selection(UiEvent *event, void *userdata) { |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
584 | UiListSelection *sel = event->eventdata; |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
585 | printf("list selection[%d]\n", sel->count); |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
586 | for(int i=0;i<sel->count;i++) { |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
587 | printf("[%d]: %d\n", i, sel->rows[i]); |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
588 | } |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
589 | printf("\n"); |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
590 | } |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
591 | |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
592 | static void action_list_activate(UiEvent *event, void *userdata) { |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
593 | printf("activate\n"); |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
594 | action_list_selection(event, userdata); |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
595 | } |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
596 | |
|
704
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
597 | static void action_link(UiEvent *event, void *userdata) { |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
598 | printf("action_link: %s\n", event->eventdata); |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
599 | } |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
600 | |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
601 | static void action_change_link(UiEvent *event, void *userdata) { |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
602 | MyDocument *doc = event->document; |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
603 | char *label = ui_get(doc->link_label); |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
604 | char *uri = ui_get(doc->link_uri); |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
605 | ui_linkbutton_value_set(doc->link, label, uri); |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
606 | } |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
607 | |
|
779
b84cbe57e0bd
change UiCellValue from struct to union and pass it as pointer to the onsave function, for better compatibility with other languages
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
778
diff
changeset
|
608 | static UiBool list_save(UiList *list, int row, int col, UiCellValue *value, void *userdata) { |
|
b84cbe57e0bd
change UiCellValue from struct to union and pass it as pointer to the onsave function, for better compatibility with other languages
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
778
diff
changeset
|
609 | printf("list new value at [%d, %d]: %s\n", row, col, value->string); |
|
778
85b6cef7fcba
implement listview onsave handler (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
777
diff
changeset
|
610 | return FALSE; |
|
85b6cef7fcba
implement listview onsave handler (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
777
diff
changeset
|
611 | } |
|
85b6cef7fcba
implement listview onsave handler (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
777
diff
changeset
|
612 | |
|
848
5a4b72489111
add new drawingarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
844
diff
changeset
|
613 | static void draw(UiEvent *event, UiGraphics *g, void *userdata) { |
|
5a4b72489111
add new drawingarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
844
diff
changeset
|
614 | ui_draw_line(g, 0, 0, g->width, g->height); |
|
5a4b72489111
add new drawingarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
844
diff
changeset
|
615 | ui_draw_line(g, g->width, 0, 0, g->height); |
|
5a4b72489111
add new drawingarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
844
diff
changeset
|
616 | |
|
5a4b72489111
add new drawingarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
844
diff
changeset
|
617 | ui_draw_rect(g, (g->width/2)-80, (g->height/2)-40, 160, 80, FALSE); |
|
5a4b72489111
add new drawingarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
844
diff
changeset
|
618 | } |
|
5a4b72489111
add new drawingarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
844
diff
changeset
|
619 | |
|
133
6dd780cbc8c6
using GtkApplication now
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
127
diff
changeset
|
620 | void application_startup(UiEvent *event, void *data) { |
|
311
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
621 | // global list |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
622 | UiContext *global = ui_global_context(); |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
623 | menu_list = ui_list_new(global, "menulist"); |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
624 | ui_list_append(menu_list, "menu list item 1"); |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
625 | ui_list_append(menu_list, "menu list item 2"); |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
626 | ui_list_append(menu_list, "menu list item 3"); |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
627 | |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
628 | |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
629 | |
|
783
25b2da0aac15
add ui_splitview_window
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
779
diff
changeset
|
630 | UiObject *obj = ui_splitview_window("Test", TRUE); |
|
409
86fbc80f0be7
add sidebar (libadwaita)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
408
diff
changeset
|
631 | |
|
266
37d5b49b1c91
fix progressbar using the wrong var type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
265
diff
changeset
|
632 | MyDocument *doc = create_doc(); |
|
37d5b49b1c91
fix progressbar using the wrong var type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
265
diff
changeset
|
633 | ui_attach_document(obj->ctx, doc); |
|
37d5b49b1c91
fix progressbar using the wrong var type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
265
diff
changeset
|
634 | |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
635 | ui_sidebar(obj, .margin = 0, .spacing = 0) { |
|
673
90a32d739b8e
improve exit behavior (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
666
diff
changeset
|
636 | ui_sourcelist(obj, .fill = TRUE, |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
637 | .getvalue = sourcelist_getvalue, |
|
853
380ec881faa2
add support for selectable source list header rows (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
849
diff
changeset
|
638 | .header_is_item = TRUE, |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
639 | .sublists = UI_SUBLISTS(UI_SUBLIST(.varname = "srclist1", .header = "Header 1", .userdata = "Sublist1"), UI_SUBLIST(.varname = "srclist2", .header = "Header 2", .userdata = "Sublist2")), |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
640 | .onactivate = action_sourcelist_activate); |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
641 | } |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
642 | |
|
783
25b2da0aac15
add ui_splitview_window
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
779
diff
changeset
|
643 | ui_right_panel(obj, .margin = 10, .spacing = 10) { |
|
25b2da0aac15
add ui_splitview_window
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
779
diff
changeset
|
644 | ui_button(obj, .label = "Test"); |
|
25b2da0aac15
add ui_splitview_window
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
779
diff
changeset
|
645 | } |
|
25b2da0aac15
add ui_splitview_window
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
779
diff
changeset
|
646 | |
|
742
f63d8125fcbd
fix wrong gtk3 treeviewmodel when using multiple UI_TEXT columns
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
738
diff
changeset
|
647 | ui_tabview(obj, .spacing=10, .margin=10, .tabview = UI_TABVIEW_NAVIGATION_SIDE, .varname="tabview", .fill = TRUE) { |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
648 | ui_tab(obj, "Tab 0") { |
|
673
90a32d739b8e
improve exit behavior (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
666
diff
changeset
|
649 | ui_vbox(obj, .fill = FALSE, .margin = 15, .spacing = 15) { |
|
328
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
650 | ui_button(obj, .label = "Test Button", .icon = "application-x-generic", .onclick = action_button); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
651 | ui_togglebutton(obj, .label = "Toggle"); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
652 | ui_checkbox(obj, .label = "My Checkbox"); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
653 | } |
|
673
90a32d739b8e
improve exit behavior (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
666
diff
changeset
|
654 | ui_grid(obj, .fill = FALSE, .columnspacing = 15, .rowspacing = 15, .margin = 15) { |
|
343
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
655 | ui_button(obj, .label = "Activate Group 1", .hexpand = TRUE, .onclick = action_group1); |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
656 | ui_button(obj, .label = "Disable Group 1", .onclick = action_group1, .onclickdata = "disable"); |
|
328
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
657 | ui_newline(obj); |
|
343
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
658 | ui_button(obj, .label = "Activate Group 2", .hexpand = TRUE, .onclick = action_group2); |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
659 | ui_button(obj, .label = "Disable Group 2", .onclick = action_group2, .onclickdata = "disable"); |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
660 | ui_newline(obj); |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
661 | |
|
966
e411ed7c5f10
rename groups to states
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
965
diff
changeset
|
662 | ui_button(obj, .label = "Groups 1,2", .colspan = 2, .states = UI_GROUPS(1, 2)); |
|
328
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
663 | ui_newline(obj); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
664 | |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
665 | ui_label(obj, .label = "Label Col 1", .align = UI_ALIGN_LEFT); |
|
358
98b26a19cbeb
add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
354
diff
changeset
|
666 | ui_label(obj, .label = "Label Col 2", .style = UI_LABEL_STYLE_TITLE, .align = UI_ALIGN_RIGHT); |
|
328
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
667 | ui_newline(obj); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
668 | |
|
754
fb5f560e81d9
rename ui_spinner to ui_spinbox
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
745
diff
changeset
|
669 | ui_spinbox(obj, .step = 5); |
|
328
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
670 | ui_newline(obj); |
|
771
155f8722b927
implement switch (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
768
diff
changeset
|
671 | |
|
155f8722b927
implement switch (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
768
diff
changeset
|
672 | ui_switch(obj, .varname = "switch"); |
|
155f8722b927
implement switch (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
768
diff
changeset
|
673 | ui_newline(obj); |
|
328
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
674 | |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
675 | ui_progressbar(obj, .colspan = 2, .varname = "progress"); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
676 | ui_set(doc->progress, 0.75); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
677 | ui_newline(obj); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
678 | |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
679 | ui_textfield(obj, .value = doc->str1); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
680 | ui_newline(obj); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
681 | |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
682 | //ui_button(obj, .label="Test"); |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
683 | ui_path_textfield(obj, .varname = "path", .hfill = TRUE, .hexpand = TRUE); |
|
328
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
684 | ui_set(doc->path, "/test/path/longdirectoryname/123"); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
685 | ui_newline(obj); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
686 | |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
687 | //UiModel *model = ui_model(obj->ctx, UI_ICON_TEXT, "Col 1", UI_STRING, "Col 2", -1); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
688 | //model->getvalue = list_getvalue; |
|
969
7385c26d998d
rename combobox to dropdown
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
967
diff
changeset
|
689 | ui_dropdown(obj, .hexpand = true, .vexpand = false, .colspan = 2, .varname = "list", .getvalue = list_getvalue); |
|
328
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
690 | ui_newline(obj); |
|
489
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
481
diff
changeset
|
691 | char *dropdown[] = { |
|
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
481
diff
changeset
|
692 | "Sun", |
|
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
481
diff
changeset
|
693 | "Apple", |
|
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
481
diff
changeset
|
694 | "IBM", |
|
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
481
diff
changeset
|
695 | "SGI", |
|
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
481
diff
changeset
|
696 | "HP" |
|
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
481
diff
changeset
|
697 | }; |
|
969
7385c26d998d
rename combobox to dropdown
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
967
diff
changeset
|
698 | ui_dropdown(obj, .hexpand = true, .vexpand = false, .colspan = 2, .static_elements = dropdown, .static_nelm = 5, .onactivate = action_static_dropdown); |
|
489
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
481
diff
changeset
|
699 | ui_newline(obj); |
|
328
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
700 | |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
701 | ui_hbox0(obj) { |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
702 | ui_radiobutton(obj, .label = "Radio 1", .varname = "radio"); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
703 | ui_radiobutton(obj, .label = "Radio 2", .varname = "radio"); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
704 | ui_radiobutton(obj, .label = "Radio 3", .varname = "radio"); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
705 | } |
|
390
b130f80ec7f9
implement list/table contextmenu (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
389
diff
changeset
|
706 | ui_newline(obj); |
|
328
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
707 | } |
|
275
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
708 | } |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
709 | ui_tab(obj, "Tab 1") { |
|
965
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
955
diff
changeset
|
710 | //UiModel *model = ui_model(obj->ctx, UI_ICON_TEXT, "col1", UI_INTEGER, "col2", UI_ICON, "col3", UI_ICON_TEXT, "col4", UI_INTEGER, "col5", UI_STRING_EDITABLE, "edit6", UI_STRING_EDITABLE, "edit7", UI_BOOL_EDITABLE, "Check", -1); |
|
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
955
diff
changeset
|
711 | UiModel *model = ui_model(obj->ctx, UI_STRING, "Col", -1); |
|
445
5059f2435775
fix int columns in gtk3 tables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
444
diff
changeset
|
712 | model->columnsize[0] = -1; |
|
965
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
955
diff
changeset
|
713 | doc->model = model; |
|
673
90a32d739b8e
improve exit behavior (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
666
diff
changeset
|
714 | ui_table(obj, .model = model, .list = doc->list2, .colspan = 2, .fill = TRUE, .contextmenu = menubuilder, .multiselection = TRUE, .fill = TRUE, |
|
778
85b6cef7fcba
implement listview onsave handler (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
777
diff
changeset
|
715 | .getvalue = table_getvalue, .getstyle = table_getstyle, .onsave = list_save, |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
716 | .onactivate = action_table_activate, .onactivatedata = "activate", |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
717 | .onselection = action_table_activate, .onselectiondata = "selection"); |
|
965
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
955
diff
changeset
|
718 | ui_hbox(obj, .fill = FALSE, .columnspacing = 4) { |
|
503
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
719 | ui_textfield(obj, .value = doc->list_input); |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
720 | ui_button(obj, .label = "Update List Item 1", .onclick = action_update_list); |
|
965
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
955
diff
changeset
|
721 | ui_label(obj, .label = "Column Name"); |
|
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
955
diff
changeset
|
722 | ui_textfield(obj, .value = doc->list_new_col); |
|
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
955
diff
changeset
|
723 | ui_button(obj, .label = "Add Column", .onclick = action_add_col); |
|
503
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
724 | } |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
725 | } |
|
331
cdad8b7e83db
implement side navigation tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
328
diff
changeset
|
726 | ui_tab(obj, "Tab 2") { |
|
347
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
727 | ui_button(obj, .label = "Button 1 Start Thread", .onclick=action_start_thread); |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
728 | ui_button(obj, .label = "Button 2 Notify Thread", .onclick=action_notify_thread); |
|
383
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
729 | ui_button(obj, .label = "Obj Ref", .onclick=action_button_ref); |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
730 | ui_button(obj, .label = "Obj Unref", .onclick=action_button_unref, .onclickdata = obj); |
|
344
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
731 | ui_button(obj, .label = "Button 5", .onclick=action_tab2_button); |
|
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
732 | ui_button(obj, .label = "Button 6", .onclick=action_tab2_button); |
|
331
cdad8b7e83db
implement side navigation tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
328
diff
changeset
|
733 | } |
|
335
91d4f0391282
add new textarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
333
diff
changeset
|
734 | ui_tab(obj, "Tab 3") { |
|
673
90a32d739b8e
improve exit behavior (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
666
diff
changeset
|
735 | UiTabViewArgs args = {.fill = TRUE}; |
|
594
fc854e0ab924
pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
589
diff
changeset
|
736 | UI_CTN(obj, tabview=ui_tabview_create(obj, &args)) { |
|
335
91d4f0391282
add new textarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
333
diff
changeset
|
737 | UiObject *tab1 = ui_tabview_add(tabview, "Sub 1", -1); |
|
91d4f0391282
add new textarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
333
diff
changeset
|
738 | ui_button(tab1, .label = "Button 1"); |
|
91d4f0391282
add new textarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
333
diff
changeset
|
739 | |
|
91d4f0391282
add new textarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
333
diff
changeset
|
740 | |
|
91d4f0391282
add new textarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
333
diff
changeset
|
741 | UiObject *tab2 = ui_tabview_add(tabview, "Sub 2", -1); |
|
91d4f0391282
add new textarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
333
diff
changeset
|
742 | ui_button(tab2, .label = "Button 2"); |
|
91d4f0391282
add new textarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
333
diff
changeset
|
743 | } |
|
91d4f0391282
add new textarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
333
diff
changeset
|
744 | } |
|
91d4f0391282
add new textarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
333
diff
changeset
|
745 | ui_tab(obj, "Tab 4") { |
|
673
90a32d739b8e
improve exit behavior (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
666
diff
changeset
|
746 | ui_textarea(obj, .varname = "text", .fill = TRUE); |
|
333
634e3ce80afe
implement gtk3 stack tabview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
332
diff
changeset
|
747 | } |
|
339
b68b5f984074
add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
336
diff
changeset
|
748 | ui_tab(obj, "Tab 5") { |
|
b68b5f984074
add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
336
diff
changeset
|
749 | ui_button(obj, .label = "Test Button", .icon = "application-x-generic", .onclick = action_button); |
|
673
90a32d739b8e
improve exit behavior (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
666
diff
changeset
|
750 | ui_imageviewer(obj, .varname = "image", .style_class = "imageviewer", .contextmenu = menubuilder, .scrollarea = TRUE, .useradjustable = TRUE, .autoscale = TRUE, .fill = TRUE); |
|
339
b68b5f984074
add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
336
diff
changeset
|
751 | } |
|
350
70305d427f25
fix ui_scrolledwindow (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
752 | |
|
70305d427f25
fix ui_scrolledwindow (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
753 | ui_tab(obj, "Tab 6") { |
|
673
90a32d739b8e
improve exit behavior (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
666
diff
changeset
|
754 | ui_scrolledwindow(obj, .fill = TRUE) { |
|
354
baf9bcc98d87
add expander container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
352
diff
changeset
|
755 | ui_expander(obj, .label = "Expander", .margin = 10, .spacing = 10) { |
|
baf9bcc98d87
add expander container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
352
diff
changeset
|
756 | ui_label(obj, .label = "Test"); |
|
baf9bcc98d87
add expander container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
352
diff
changeset
|
757 | ui_button(obj, .label = "Button"); |
|
baf9bcc98d87
add expander container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
352
diff
changeset
|
758 | } |
|
803
f0c4322741c8
readd frame subcontainer arg (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
797
diff
changeset
|
759 | |
|
354
baf9bcc98d87
add expander container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
352
diff
changeset
|
760 | ui_frame(obj, .label = "Frame", .margin = 10, .spacing = 10) { |
|
358
98b26a19cbeb
add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
354
diff
changeset
|
761 | ui_label(obj, .label = "Title", .style = UI_LABEL_STYLE_TITLE); |
|
98b26a19cbeb
add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
354
diff
changeset
|
762 | ui_label(obj, .label = "Sub-Title", .style = UI_LABEL_STYLE_SUBTITLE); |
|
98b26a19cbeb
add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
354
diff
changeset
|
763 | ui_label(obj, .label = "Dim Label", .style = UI_LABEL_STYLE_DIM); |
|
98b26a19cbeb
add more label styles (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
354
diff
changeset
|
764 | ui_label(obj, .label = "No Style"); |
|
354
baf9bcc98d87
add expander container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
352
diff
changeset
|
765 | } |
|
803
f0c4322741c8
readd frame subcontainer arg (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
797
diff
changeset
|
766 | |
|
351
63db7e35e2e9
implement scrolledwindow sub container type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
767 | for(int i=0;i<100;i++) { |
|
63db7e35e2e9
implement scrolledwindow sub container type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
768 | char labelstr[32]; |
|
63db7e35e2e9
implement scrolledwindow sub container type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
769 | snprintf(labelstr, 32, "button %d", i); |
|
804
ce992dbfbc39
implement margin parameters (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
803
diff
changeset
|
770 | ui_button(obj, .label = labelstr, .margin_left = i, .margin_right = 99-i, .margin_top = 5, .margin_bottom = 5); |
|
350
70305d427f25
fix ui_scrolledwindow (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
771 | } |
|
70305d427f25
fix ui_scrolledwindow (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
772 | } |
|
70305d427f25
fix ui_scrolledwindow (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
773 | } |
|
422
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
774 | |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
775 | ui_tab(obj, "Tab 7") { |
|
673
90a32d739b8e
improve exit behavior (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
666
diff
changeset
|
776 | ui_itemlist(obj, .create_ui = create_item, .varname = "items", .subcontainer = UI_CONTAINER_HBOX, .sub_spacing = 10, .margin = 10, .spacing = 4, .userdata = doc, .fill = TRUE); |
|
422
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
777 | } |
|
456
6712b08e4f74
add new splitpane (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
452
diff
changeset
|
778 | |
|
6712b08e4f74
add new splitpane (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
452
diff
changeset
|
779 | ui_tab(obj, "Tab 8") { |
| 768 | 780 | ui_hsplitpane(obj, .initial_position = 100, .position_property = "hsplitpane.position", .fill = TRUE) { |
|
456
6712b08e4f74
add new splitpane (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
452
diff
changeset
|
781 | ui_button(obj, .label = "Button 1"); |
|
6712b08e4f74
add new splitpane (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
452
diff
changeset
|
782 | ui_button(obj, .label = "Button 2"); |
|
6712b08e4f74
add new splitpane (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
452
diff
changeset
|
783 | } |
|
6712b08e4f74
add new splitpane (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
452
diff
changeset
|
784 | } |
|
465
00735562b25b
implement hfill/vfill, def_hfill/def_vfill and override_defaults (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
463
diff
changeset
|
785 | ui_tab(obj, "Tab 9") { |
|
463
e8ee57cc052e
prepare webview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
462
diff
changeset
|
786 | #ifdef UI_WEBVIEW |
|
673
90a32d739b8e
improve exit behavior (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
666
diff
changeset
|
787 | ui_webview(obj, .fill = TRUE, .value = doc->web); |
|
468
1f251c462f74
use UiGeneric for WebView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
465
diff
changeset
|
788 | cxstring html = CX_STR("<html><body><h1>Hello Toolkit</h1><p>Toolkit WebView</p></body></html>"); |
|
1f251c462f74
use UiGeneric for WebView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
465
diff
changeset
|
789 | ui_webview_load_content(doc->web, "mypage", html.ptr, html.length, NULL, NULL); |
|
463
e8ee57cc052e
prepare webview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
462
diff
changeset
|
790 | #else |
|
490
0206161e92d5
fix gtk3 build and implement new combobox
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
489
diff
changeset
|
791 | ui_label(obj, .label = "Webview is not supported"); |
|
463
e8ee57cc052e
prepare webview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
462
diff
changeset
|
792 | #endif |
|
465
00735562b25b
implement hfill/vfill, def_hfill/def_vfill and override_defaults (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
463
diff
changeset
|
793 | } |
|
00735562b25b
implement hfill/vfill, def_hfill/def_vfill and override_defaults (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
463
diff
changeset
|
794 | ui_tab(obj, "Tab 10") { |
|
00735562b25b
implement hfill/vfill, def_hfill/def_vfill and override_defaults (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
463
diff
changeset
|
795 | ui_grid(obj, .margin = 10, .rowspacing = 10, .columnspacing = 10, .def_vfill = TRUE) { |
|
625
1726c5109ccd
remove deprecated functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
623
diff
changeset
|
796 | ui_label(obj, 1, .label = "Name"); |
|
465
00735562b25b
implement hfill/vfill, def_hfill/def_vfill and override_defaults (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
463
diff
changeset
|
797 | ui_textfield(obj, .hexpand = TRUE); |
|
00735562b25b
implement hfill/vfill, def_hfill/def_vfill and override_defaults (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
463
diff
changeset
|
798 | ui_newline(obj); |
|
00735562b25b
implement hfill/vfill, def_hfill/def_vfill and override_defaults (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
463
diff
changeset
|
799 | |
|
00735562b25b
implement hfill/vfill, def_hfill/def_vfill and override_defaults (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
463
diff
changeset
|
800 | ui_label(obj, .label = "No vfill", .override_defaults = TRUE); |
|
00735562b25b
implement hfill/vfill, def_hfill/def_vfill and override_defaults (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
463
diff
changeset
|
801 | ui_textfield(obj, .hexpand = TRUE); |
|
00735562b25b
implement hfill/vfill, def_hfill/def_vfill and override_defaults (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
463
diff
changeset
|
802 | ui_newline(obj); |
|
00735562b25b
implement hfill/vfill, def_hfill/def_vfill and override_defaults (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
463
diff
changeset
|
803 | |
|
00735562b25b
implement hfill/vfill, def_hfill/def_vfill and override_defaults (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
463
diff
changeset
|
804 | ui_label(obj, .label = "Manual vfill", .override_defaults = TRUE, .vfill = TRUE); |
|
00735562b25b
implement hfill/vfill, def_hfill/def_vfill and override_defaults (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
463
diff
changeset
|
805 | ui_textfield(obj, .hexpand = TRUE); |
|
00735562b25b
implement hfill/vfill, def_hfill/def_vfill and override_defaults (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
463
diff
changeset
|
806 | ui_newline(obj); |
|
00735562b25b
implement hfill/vfill, def_hfill/def_vfill and override_defaults (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
463
diff
changeset
|
807 | } |
|
00735562b25b
implement hfill/vfill, def_hfill/def_vfill and override_defaults (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
463
diff
changeset
|
808 | } |
|
701
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
809 | ui_tab(obj, "Tab 11") { |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
810 | ui_grid(obj, .margin = 10, .rowspacing = 10, .columnspacing = 10, .fill = TRUE) { |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
811 | ui_listview(obj, .varname = "list11", .multiselection = FALSE, .onselection = action_list_selection, .onactivate = action_list_activate, .hexpand = TRUE, .hfill = TRUE, .vexpand = TRUE, .vfill = TRUE); |
|
704
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
812 | ui_newline(obj); |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
813 | |
|
729
81b698792386
add ui-nopadding style class (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
723
diff
changeset
|
814 | ui_grid(obj, .rowspacing = 10, .columnspacing = 10) { |
|
81b698792386
add ui-nopadding style class (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
723
diff
changeset
|
815 | ui_rlabel(obj, .label = "Link: ", .vfill = TRUE); |
|
81b698792386
add ui-nopadding style class (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
723
diff
changeset
|
816 | ui_linkbutton(obj, .varname = "link", .label = "Linkbutton", .onclick = action_link, .style_class = "ui-nopadding", .vfill = TRUE); |
|
81b698792386
add ui-nopadding style class (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
723
diff
changeset
|
817 | ui_newline(obj); |
|
81b698792386
add ui-nopadding style class (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
723
diff
changeset
|
818 | |
|
81b698792386
add ui-nopadding style class (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
723
diff
changeset
|
819 | ui_rlabel(obj, .label = "Test1"); |
|
81b698792386
add ui-nopadding style class (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
723
diff
changeset
|
820 | ui_llabel(obj, .label = "Test2"); |
|
81b698792386
add ui-nopadding style class (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
723
diff
changeset
|
821 | } |
|
704
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
822 | ui_newline(obj); |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
823 | |
|
729
81b698792386
add ui-nopadding style class (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
723
diff
changeset
|
824 | ui_vbox(obj, .spacing = 10, .colspan = 2) { |
|
81b698792386
add ui-nopadding style class (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
723
diff
changeset
|
825 | ui_textfield(obj, .varname = "link_label", .colspan = 2); |
|
81b698792386
add ui-nopadding style class (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
723
diff
changeset
|
826 | ui_textfield(obj, .varname = "link_uri", .colspan = 2); |
|
81b698792386
add ui-nopadding style class (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
723
diff
changeset
|
827 | ui_button(obj, .label = "Update Link", .onclick = action_change_link, .colspan = 2); |
|
81b698792386
add ui-nopadding style class (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
723
diff
changeset
|
828 | } |
|
701
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
829 | } |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
830 | } |
|
848
5a4b72489111
add new drawingarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
844
diff
changeset
|
831 | ui_tab(obj, "Tab 12") { |
|
5a4b72489111
add new drawingarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
844
diff
changeset
|
832 | ui_drawingarea(obj, .fill = TRUE, .draw = draw); |
|
5a4b72489111
add new drawingarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
844
diff
changeset
|
833 | } |
|
260
eebb0626d020
implement grid colspan/rowspan (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
259
diff
changeset
|
834 | } |
|
eebb0626d020
implement grid colspan/rowspan (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
259
diff
changeset
|
835 | |
|
328
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
836 | /* |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
837 | |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
838 | */ |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
839 | |
|
133
6dd780cbc8c6
using GtkApplication now
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
127
diff
changeset
|
840 | ui_show(obj); |
|
95
29f5cd5f5367
added drawing area (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
94
diff
changeset
|
841 | } |
|
111
40dbf1a7526a
added close handler to UiContext (GTK, Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
110
diff
changeset
|
842 | |
|
29
c96169444d88
added locale support (Cocoa) and ucx update
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
28
diff
changeset
|
843 | int main(int argc, char** argv) { |
|
88
04c81be1c5a0
added textarea (WPF)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
86
diff
changeset
|
844 | ui_init("app1", argc, argv); |
|
133
6dd780cbc8c6
using GtkApplication now
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
127
diff
changeset
|
845 | ui_onstartup(application_startup, NULL); |
|
88
04c81be1c5a0
added textarea (WPF)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
86
diff
changeset
|
846 | |
|
789
d70799b3333e
add new toolbar positions for splitview windows
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
783
diff
changeset
|
847 | ui_set_property("ui.gtk.window.showtitle", "sidebar"); |
|
d70799b3333e
add new toolbar positions for splitview windows
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
783
diff
changeset
|
848 | ui_set_property("ui.gtk.window.appmenu.position", "rightpanel"); |
|
441
752bd110375e
add ui.gtk.window.showtitle property for configuring the gtk headerbar show_title property
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
438
diff
changeset
|
849 | |
|
133
6dd780cbc8c6
using GtkApplication now
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
127
diff
changeset
|
850 | // menu |
|
255
ebdce2bb62be
minimal working menubar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
253
diff
changeset
|
851 | ui_menu("File") { |
|
ebdce2bb62be
minimal working menubar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
253
diff
changeset
|
852 | ui_menuitem(.label = "Test"); |
|
ebdce2bb62be
minimal working menubar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
253
diff
changeset
|
853 | } |
|
253
087cc9216f28
initial newapi GTK port
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
174
diff
changeset
|
854 | |
|
388
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
855 | ui_contextmenu(&menubuilder) { |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
856 | ui_menuitem(.label = "Context Item 1"); |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
857 | ui_menuitem(.label = "Context Item 2"); |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
858 | ui_menu("Context Submenu") { |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
859 | ui_menuitem(.label = "Context Sub Item"); |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
860 | } |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
861 | } |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
862 | |
|
856
b769e01035a7
implement sourcelist item popup menu (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
855
diff
changeset
|
863 | ui_contextmenu(&sourcelist_menu) { |
|
b769e01035a7
implement sourcelist item popup menu (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
855
diff
changeset
|
864 | ui_menuitem(.label = "Item 1"); |
|
b769e01035a7
implement sourcelist item popup menu (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
855
diff
changeset
|
865 | ui_menuitem(.label = "Item 2"); |
|
b769e01035a7
implement sourcelist item popup menu (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
855
diff
changeset
|
866 | } |
|
b769e01035a7
implement sourcelist item popup menu (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
855
diff
changeset
|
867 | |
|
388
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
868 | ui_menu("Edit") { |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
869 | ui_menuitem(.label = "Undo"); |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
870 | ui_menuseparator(); |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
871 | ui_menu("Submenu") { |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
872 | ui_menuitem(.label = "Subitem"); |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
873 | } |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
874 | } |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
875 | |
|
308
4efc7c19e31d
simplify gtk button code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
306
diff
changeset
|
876 | ui_toolbar_item("Test", .label = "Test", .onclick = action_toolbar_button); |
|
336
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
877 | ui_toolbar_item("Test2", .label = "New Window", .onclick = action_toolbar_newwindow); |
|
344
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
878 | ui_toolbar_item("Test3", .label = "Dialog", .onclick = action_toolbar_dialog); |
|
383
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
879 | ui_toolbar_item("Test4", .label = "Unref Window", .onclick = action_toolbar_unrefwindow); |
|
308
4efc7c19e31d
simplify gtk button code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
306
diff
changeset
|
880 | ui_toolbar_item("Test5", .label = "Test 5", .onclick = action_toolbar_button); |
|
4efc7c19e31d
simplify gtk button code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
306
diff
changeset
|
881 | ui_toolbar_item("Test6", .label = "Test 6", .onclick = action_toolbar_button); |
|
275
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
882 | ui_toolbar_toggleitem("Toggle", .label = "Toggle", .onchange = action_toolbar_button); |
|
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
883 | ui_toolbar_menu("Menu", .label = "Menu") { |
|
311
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
884 | ui_menuitem("Secondary Test", .onclick = action_toolbar_button, NULL); |
|
275
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
885 | ui_menu("Secondary Sub") { |
|
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
886 | ui_menuitem("Secondary subitem", NULL, NULL); |
|
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
887 | } |
|
322
22f6dadd9f46
implement ui_menuseparator (GTK4)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
320
diff
changeset
|
888 | ui_menuseparator(); |
|
311
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
889 | ui_menu_itemlist(.varname = "menulist", .onselect=action_menu_list); |
|
322
22f6dadd9f46
implement ui_menuseparator (GTK4)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
320
diff
changeset
|
890 | ui_menuseparator(); |
|
797
47008843b468
fix global menu list binding
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
789
diff
changeset
|
891 | ui_menu("Sub Menu List") { |
|
47008843b468
fix global menu list binding
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
789
diff
changeset
|
892 | ui_menu_itemlist(.varname = "sub_menulist"); |
|
47008843b468
fix global menu list binding
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
789
diff
changeset
|
893 | } |
|
311
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
894 | ui_menuitem("last", .onclick = action_add_menu_item); |
|
275
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
895 | } |
|
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
896 | |
|
322
22f6dadd9f46
implement ui_menuseparator (GTK4)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
320
diff
changeset
|
897 | ui_toolbar_appmenu() { |
|
22f6dadd9f46
implement ui_menuseparator (GTK4)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
320
diff
changeset
|
898 | ui_menuitem("New"); |
|
22f6dadd9f46
implement ui_menuseparator (GTK4)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
320
diff
changeset
|
899 | ui_menuitem("Open"); |
|
22f6dadd9f46
implement ui_menuseparator (GTK4)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
320
diff
changeset
|
900 | ui_menuitem("Save"); |
|
22f6dadd9f46
implement ui_menuseparator (GTK4)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
320
diff
changeset
|
901 | |
|
22f6dadd9f46
implement ui_menuseparator (GTK4)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
320
diff
changeset
|
902 | ui_menuseparator(); |
|
849
63623ef950e5
implement gtk4 menu radio items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
848
diff
changeset
|
903 | ui_menu_radioitem(.label = "Option 1", .varname = "menu_radio"); |
|
63623ef950e5
implement gtk4 menu radio items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
848
diff
changeset
|
904 | ui_menu_radioitem(.label = "Option 2", .varname = "menu_radio"); |
|
63623ef950e5
implement gtk4 menu radio items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
848
diff
changeset
|
905 | ui_menu_radioitem(.label = "Option 3", .varname = "menu_radio"); |
|
63623ef950e5
implement gtk4 menu radio items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
848
diff
changeset
|
906 | ui_menuseparator(); |
|
322
22f6dadd9f46
implement ui_menuseparator (GTK4)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
320
diff
changeset
|
907 | |
|
22f6dadd9f46
implement ui_menuseparator (GTK4)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
320
diff
changeset
|
908 | ui_menuitem("Close"); |
|
22f6dadd9f46
implement ui_menuseparator (GTK4)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
320
diff
changeset
|
909 | } |
|
22f6dadd9f46
implement ui_menuseparator (GTK4)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
320
diff
changeset
|
910 | |
|
275
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
911 | ui_toolbar_add_default("Test", UI_TOOLBAR_LEFT); |
|
306
d02e1149cdb9
add headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
304
diff
changeset
|
912 | ui_toolbar_add_default("Test6", UI_TOOLBAR_LEFT); |
|
275
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
913 | ui_toolbar_add_default("Toggle", UI_TOOLBAR_LEFT); |
|
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
914 | ui_toolbar_add_default("Menu", UI_TOOLBAR_LEFT); |
|
89
9a7e4a335b2b
added toolbar (WPF)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
88
diff
changeset
|
915 | |
|
306
d02e1149cdb9
add headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
304
diff
changeset
|
916 | ui_toolbar_add_default("Test2", UI_TOOLBAR_CENTER); |
|
d02e1149cdb9
add headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
304
diff
changeset
|
917 | ui_toolbar_add_default("Test3", UI_TOOLBAR_CENTER); |
|
d02e1149cdb9
add headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
304
diff
changeset
|
918 | |
|
d02e1149cdb9
add headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
304
diff
changeset
|
919 | ui_toolbar_add_default("Test4", UI_TOOLBAR_RIGHT); |
|
d02e1149cdb9
add headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
304
diff
changeset
|
920 | ui_toolbar_add_default("Test5", UI_TOOLBAR_RIGHT); |
|
d02e1149cdb9
add headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
304
diff
changeset
|
921 | |
|
955
ea9a999b4fc8
implement ui_queue_free
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
954
diff
changeset
|
922 | threadpool = ui_threadpool_create(10); |
|
ea9a999b4fc8
implement ui_queue_free
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
954
diff
changeset
|
923 | |
|
88
04c81be1c5a0
added textarea (WPF)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
86
diff
changeset
|
924 | ui_main(); |
|
29
c96169444d88
added locale support (Cocoa) and ucx update
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
28
diff
changeset
|
925 | |
| 0 | 926 | return (EXIT_SUCCESS); |
| 927 | } | |
|
404
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
928 | |
|
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
929 | #endif |
|
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
930 | |
|
554
28e490aa15e3
implement new text functions (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
553
diff
changeset
|
931 | #if (defined(UI_COCOA) || defined(UI_MOTIF)) && !defined(UI_TEST) |
|
406
0ebf9d7b23e8
add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
404
diff
changeset
|
932 | |
|
420
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
933 | static UiList *menulist; |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
934 | int items = 4; |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
935 | |
|
406
0ebf9d7b23e8
add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
404
diff
changeset
|
936 | void action_button(UiEvent *event, void *data) { |
|
0ebf9d7b23e8
add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
404
diff
changeset
|
937 | printf("action_button\n"); |
|
420
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
938 | |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
939 | char *newitem = malloc(32); |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
940 | snprintf(newitem, 32, "Item %d", ++items); |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
941 | ui_list_append(menulist, newitem); |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
942 | ui_list_notify(menulist); |
|
406
0ebf9d7b23e8
add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
404
diff
changeset
|
943 | } |
|
404
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
944 | |
|
414
ef60d527c066
add text field widgets (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
945 | typedef struct WData { |
|
461
b480e133b576
implement missing tabview functions (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
460
diff
changeset
|
946 | UIWIDGET tabview; |
|
b480e133b576
implement missing tabview functions (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
460
diff
changeset
|
947 | |
|
414
ef60d527c066
add text field widgets (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
948 | UiString *path; |
|
427
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
949 | UiList *list; |
|
433
605bb5dc34f1
implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
429
diff
changeset
|
950 | UiInteger *spinner; |
|
475
8e06a446d552
implement tabview UiInteger binding (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
468
diff
changeset
|
951 | UiInteger *tab; |
|
898
0484fc666c1d
implement spinbox value binding (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
897
diff
changeset
|
952 | UiDouble *num; |
|
902
6872b59217a7
fix var creation when a widget is already bound to this var name
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
901
diff
changeset
|
953 | UiInteger *toggle1; |
|
6872b59217a7
fix var creation when a widget is already bound to this var name
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
901
diff
changeset
|
954 | UiInteger *toggle2; |
|
921
c2b318b93062
take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
919
diff
changeset
|
955 | |
|
c2b318b93062
take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
919
diff
changeset
|
956 | UiInteger *checkbox1; |
|
414
ef60d527c066
add text field widgets (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
957 | } WData; |
|
ef60d527c066
add text field widgets (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
958 | |
|
420
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
959 | |
|
427
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
960 | int lsitems = 4; |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
961 | |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
962 | void action_button2(UiEvent *event, void *data) { |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
963 | WData *wdata = event->window; |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
964 | char *newitem = malloc(32); |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
965 | snprintf(newitem, 32, "List Item %d", ++lsitems); |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
966 | ui_list_append(wdata->list, newitem); |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
967 | ui_list_update(wdata->list); |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
968 | UiListSelection sel; |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
969 | int index = lsitems-1; |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
970 | sel.count = 1; |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
971 | sel.rows = &index; |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
972 | wdata->list->setselection(wdata->list, sel); |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
973 | } |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
974 | |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
975 | void action_listevent(UiEvent *event, void *data) { |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
976 | printf("%s: %d\n", data, event->intval); |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
977 | UiListSelection *sel = event->eventdata; |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
978 | for(int i=0;i<sel->count;i++) { |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
979 | printf("sel: %d\n", sel->rows[i]); |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
980 | } |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
981 | printf("\n"); |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
982 | } |
|
420
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
983 | |
|
461
b480e133b576
implement missing tabview functions (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
460
diff
changeset
|
984 | static void action_remove_tab3(UiEvent *event, void *data) { |
|
b480e133b576
implement missing tabview functions (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
460
diff
changeset
|
985 | WData *wdata = event->window; |
|
b480e133b576
implement missing tabview functions (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
460
diff
changeset
|
986 | printf("remove tab 3\n"); |
|
b480e133b576
implement missing tabview functions (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
460
diff
changeset
|
987 | ui_tabview_remove(wdata->tabview, 2); |
|
b480e133b576
implement missing tabview functions (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
460
diff
changeset
|
988 | } |
|
b480e133b576
implement missing tabview functions (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
460
diff
changeset
|
989 | |
|
475
8e06a446d552
implement tabview UiInteger binding (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
468
diff
changeset
|
990 | static void action_next_tab(UiEvent *event, void *data) { |
|
8e06a446d552
implement tabview UiInteger binding (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
468
diff
changeset
|
991 | WData *wdata = event->window; |
|
8e06a446d552
implement tabview UiInteger binding (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
468
diff
changeset
|
992 | int index = ui_get(wdata->tab); |
|
8e06a446d552
implement tabview UiInteger binding (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
468
diff
changeset
|
993 | ui_set(wdata->tab, index+1); |
|
8e06a446d552
implement tabview UiInteger binding (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
468
diff
changeset
|
994 | } |
|
8e06a446d552
implement tabview UiInteger binding (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
468
diff
changeset
|
995 | |
|
902
6872b59217a7
fix var creation when a widget is already bound to this var name
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
901
diff
changeset
|
996 | static void action_menu_toggle(UiEvent *event, void *data) { |
|
6872b59217a7
fix var creation when a widget is already bound to this var name
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
901
diff
changeset
|
997 | WData *wdata = event->window; |
|
6872b59217a7
fix var creation when a widget is already bound to this var name
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
901
diff
changeset
|
998 | printf("toggle1: %d\n", (int)ui_get(wdata->toggle1)); |
|
6872b59217a7
fix var creation when a widget is already bound to this var name
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
901
diff
changeset
|
999 | printf("toggle2: %d\n\n", (int)ui_get(wdata->toggle2)); |
|
6872b59217a7
fix var creation when a widget is already bound to this var name
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
901
diff
changeset
|
1000 | } |
|
6872b59217a7
fix var creation when a widget is already bound to this var name
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
901
diff
changeset
|
1001 | |
|
921
c2b318b93062
take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
919
diff
changeset
|
1002 | static void action_show_button1(UiEvent *event, void *data) { |
|
c2b318b93062
take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
919
diff
changeset
|
1003 | WData *wdata = event->window; |
|
c2b318b93062
take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
919
diff
changeset
|
1004 | if(event->intval) { |
|
967
ff4a8d10307b
rename ui_set_group/ui_unset_group
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
966
diff
changeset
|
1005 | ui_set_state(event->obj->ctx, 10); |
|
921
c2b318b93062
take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
919
diff
changeset
|
1006 | } else { |
|
967
ff4a8d10307b
rename ui_set_group/ui_unset_group
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
966
diff
changeset
|
1007 | ui_unset_state(event->obj->ctx, 10); |
|
921
c2b318b93062
take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
919
diff
changeset
|
1008 | } |
|
c2b318b93062
take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
919
diff
changeset
|
1009 | } |
|
c2b318b93062
take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
919
diff
changeset
|
1010 | |
|
404
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
1011 | void application_startup(UiEvent *event, void *data) { |
|
420
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
1012 | |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
1013 | menulist = ui_list_new(ui_global_context(), "menulist"); |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
1014 | ui_list_append(menulist, "Item 1"); |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
1015 | ui_list_append(menulist, "Item 2"); |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
1016 | ui_list_append(menulist, "Item 3"); |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
1017 | ui_list_append(menulist, "Item 4"); |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
1018 | |
|
406
0ebf9d7b23e8
add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
404
diff
changeset
|
1019 | UiObject *obj = ui_window("Test", NULL); |
|
407
8ea123dd89db
semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
406
diff
changeset
|
1020 | |
|
414
ef60d527c066
add text field widgets (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
1021 | WData *wdata = ui_malloc(obj->ctx, sizeof(WData)); |
|
ef60d527c066
add text field widgets (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
1022 | wdata->path = ui_string_new(obj->ctx, NULL); |
|
427
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
1023 | wdata->list = ui_list_new(obj->ctx, NULL); |
|
433
605bb5dc34f1
implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
429
diff
changeset
|
1024 | wdata->spinner = ui_int_new(obj->ctx, NULL); |
|
475
8e06a446d552
implement tabview UiInteger binding (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
468
diff
changeset
|
1025 | wdata->tab = ui_int_new(obj->ctx, NULL); |
|
898
0484fc666c1d
implement spinbox value binding (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
897
diff
changeset
|
1026 | wdata->num = ui_double_new(obj->ctx, "num"); |
|
902
6872b59217a7
fix var creation when a widget is already bound to this var name
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
901
diff
changeset
|
1027 | wdata->toggle1 = ui_int_new(obj->ctx, "toggle1"); |
|
6872b59217a7
fix var creation when a widget is already bound to this var name
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
901
diff
changeset
|
1028 | wdata->toggle2 = ui_int_new(obj->ctx, "toggle2"); |
|
921
c2b318b93062
take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
919
diff
changeset
|
1029 | wdata->checkbox1 = ui_int_new(obj->ctx, NULL); |
|
414
ef60d527c066
add text field widgets (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
1030 | obj->window = wdata; |
|
ef60d527c066
add text field widgets (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
1031 | |
|
427
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
1032 | ui_list_append(wdata->list, "List Item 1"); |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
1033 | ui_list_append(wdata->list, "List Item 2"); |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
1034 | ui_list_append(wdata->list, "List Item 3"); |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
1035 | ui_list_append(wdata->list, "List Item 4"); |
|
424
51e856688fba
add form widget to a window to fix layout problems (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
422
diff
changeset
|
1036 | |
|
452
a0620cf552a6
add first code for motif tabview (incomplete)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
445
diff
changeset
|
1037 | /* |
|
427
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
1038 | ui_button(obj, .label = "Add Menu Item", .onclick = action_button, .name = "mybutton1"); |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
1039 | ui_button(obj, .label = "Add List Item", .onclick = action_button2); |
|
433
605bb5dc34f1
implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
429
diff
changeset
|
1040 | ui_hbox0(obj) { |
|
605bb5dc34f1
implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
429
diff
changeset
|
1041 | ui_progressbar(obj, .name = "pb", .fill = UI_ON); |
|
605bb5dc34f1
implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
429
diff
changeset
|
1042 | ui_progressspinner(obj, .value = wdata->spinner); |
|
605bb5dc34f1
implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
429
diff
changeset
|
1043 | } |
|
427
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
1044 | ui_listview(obj, .list = wdata->list, .fill = UI_ON, .multiselection = TRUE, |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
1045 | .onactivate = action_listevent, .onactivatedata = "activate", |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
1046 | .onselection = action_listevent, .onselectiondata = "selection"); |
|
452
a0620cf552a6
add first code for motif tabview (incomplete)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
445
diff
changeset
|
1047 | */ |
|
a0620cf552a6
add first code for motif tabview (incomplete)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
445
diff
changeset
|
1048 | |
|
475
8e06a446d552
implement tabview UiInteger binding (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
468
diff
changeset
|
1049 | ui_button(obj, .label = "Next Tab", .onclick = action_next_tab); |
|
921
c2b318b93062
take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
919
diff
changeset
|
1050 | ui_tabview_w(obj, wdata->tabview, .value = wdata->tab, .fill = UI_ON) { |
|
452
a0620cf552a6
add first code for motif tabview (incomplete)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
445
diff
changeset
|
1051 | ui_tab(obj, "Tab 1") { |
|
921
c2b318b93062
take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
919
diff
changeset
|
1052 | ui_vbox(obj, .margin = 10, .spacing = 10) { |
|
c2b318b93062
take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
919
diff
changeset
|
1053 | UIWIDGET w = ui_button(obj, .label = "Button 1"); |
|
c2b318b93062
take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
919
diff
changeset
|
1054 | int state = 10; |
|
c2b318b93062
take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
919
diff
changeset
|
1055 | ui_widget_set_visibility_states(obj->ctx, w, &state, 1); |
|
c2b318b93062
take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
919
diff
changeset
|
1056 | ui_button(obj, .label = "Button 2"); |
|
c2b318b93062
take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
919
diff
changeset
|
1057 | ui_checkbox(obj, .label = "Hide Button 1", .value = wdata->checkbox1, .onchange = action_show_button1); |
|
c2b318b93062
take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
919
diff
changeset
|
1058 | } |
|
452
a0620cf552a6
add first code for motif tabview (incomplete)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
445
diff
changeset
|
1059 | } |
|
a0620cf552a6
add first code for motif tabview (incomplete)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
445
diff
changeset
|
1060 | |
|
a0620cf552a6
add first code for motif tabview (incomplete)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
445
diff
changeset
|
1061 | ui_tab(obj, "Tab 2") { |
|
921
c2b318b93062
take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
919
diff
changeset
|
1062 | |
|
901
884d70e847a3
implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
898
diff
changeset
|
1063 | } |
|
452
a0620cf552a6
add first code for motif tabview (incomplete)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
445
diff
changeset
|
1064 | } |
|
427
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
1065 | |
|
921
c2b318b93062
take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
919
diff
changeset
|
1066 | ui_set(wdata->checkbox1, 1); |
|
967
ff4a8d10307b
rename ui_set_group/ui_unset_group
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
966
diff
changeset
|
1067 | ui_set_state(obj->ctx, 10); |
|
921
c2b318b93062
take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
919
diff
changeset
|
1068 | |
|
406
0ebf9d7b23e8
add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
404
diff
changeset
|
1069 | |
|
0ebf9d7b23e8
add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
404
diff
changeset
|
1070 | ui_show(obj); |
|
433
605bb5dc34f1
implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
429
diff
changeset
|
1071 | |
|
605bb5dc34f1
implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
429
diff
changeset
|
1072 | ui_set(wdata->spinner, 1); |
|
404
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
1073 | } |
|
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
1074 | |
|
417
f0fee61a70be
implement menu item callbacks (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
416
diff
changeset
|
1075 | void action_test(UiEvent *event, void *data) { |
|
f0fee61a70be
implement menu item callbacks (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
416
diff
changeset
|
1076 | printf("action test\n"); |
|
f0fee61a70be
implement menu item callbacks (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
416
diff
changeset
|
1077 | } |
|
f0fee61a70be
implement menu item callbacks (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
416
diff
changeset
|
1078 | |
|
404
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
1079 | int main(int argc, char** argv) { |
|
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
1080 | ui_init("app1", argc, argv); |
|
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
1081 | ui_onstartup(application_startup, NULL); |
|
416
89ad8467c39f
implement motif menu/menu item
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
1082 | |
|
89ad8467c39f
implement motif menu/menu item
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
1083 | // menu |
|
89ad8467c39f
implement motif menu/menu item
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
1084 | ui_menu("File") { |
|
417
f0fee61a70be
implement menu item callbacks (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
416
diff
changeset
|
1085 | ui_menuitem(.label = "Test 1", .onclick = action_test); |
|
f0fee61a70be
implement menu item callbacks (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
416
diff
changeset
|
1086 | ui_menuitem(.label = "Test 2", .onclick = action_test); |
|
f0fee61a70be
implement menu item callbacks (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
416
diff
changeset
|
1087 | ui_menuitem(.label = "Test 3", .onclick = action_test); |
|
420
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
1088 | ui_menuseparator(); |
|
902
6872b59217a7
fix var creation when a widget is already bound to this var name
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
901
diff
changeset
|
1089 | ui_menu_toggleitem(.label = "Toggle 1", .varname = "toggle1", .onchange = action_menu_toggle); |
|
6872b59217a7
fix var creation when a widget is already bound to this var name
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
901
diff
changeset
|
1090 | ui_menu_toggleitem(.label = "Toggle 2", .varname = "toggle2", .onchange = action_menu_toggle); |
|
420
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
1091 | ui_menuseparator(); |
|
419
7d15cad351fc
add menu toggle/radio button (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
417
diff
changeset
|
1092 | ui_menu_radioitem(.label = "Radio 1", .varname = "menu_radio"); |
|
7d15cad351fc
add menu toggle/radio button (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
417
diff
changeset
|
1093 | ui_menu_radioitem(.label = "Radio 2", .varname = "menu_radio"); |
|
7d15cad351fc
add menu toggle/radio button (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
417
diff
changeset
|
1094 | ui_menu_radioitem(.label = "Radio 3", .varname = "menu_radio"); |
|
7d15cad351fc
add menu toggle/radio button (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
417
diff
changeset
|
1095 | ui_menu_radioitem(.label = "Radio 4", .varname = "menu_radio"); |
|
420
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
1096 | ui_menuseparator(); |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
1097 | ui_menu_itemlist(.varname = "menulist"); |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
1098 | ui_menuseparator(); |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
1099 | ui_menuitem(.label = "Quit"); |
|
416
89ad8467c39f
implement motif menu/menu item
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
1100 | } |
|
89ad8467c39f
implement motif menu/menu item
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
1101 | |
|
404
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
1102 | ui_main(); |
|
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
1103 | return (EXIT_SUCCESS); |
|
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
1104 | } |
|
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
1105 | |
|
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
1106 | #endif |
|
510
9f562a7de4a2
prepare buildsystem for win32
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
503
diff
changeset
|
1107 | |
|
516
4b31c74666d7
remove old Qt code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
510
diff
changeset
|
1108 | #ifdef UI_QT |
|
4b31c74666d7
remove old Qt code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
510
diff
changeset
|
1109 | |
|
579
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1110 | static void list_activate(UiEvent *event, void *userdata) { |
|
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1111 | UiListSelection *sel = event->eventdata; |
|
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1112 | printf("selection [%d]\n", sel->rows[0]); |
|
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1113 | } |
|
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1114 | |
|
582
6c86efe60b37
implement table (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
579
diff
changeset
|
1115 | void* table_getvalue(void *elm, int col) { |
|
6c86efe60b37
implement table (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
579
diff
changeset
|
1116 | char *s = elm; |
|
6c86efe60b37
implement table (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
579
diff
changeset
|
1117 | if(col == 0) { |
|
6c86efe60b37
implement table (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
579
diff
changeset
|
1118 | return s; |
|
6c86efe60b37
implement table (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
579
diff
changeset
|
1119 | } else { |
|
585
e71867b33bfd
fix wrong value interpretation for UI_INTEGER
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
582
diff
changeset
|
1120 | return (void*)(intptr_t)12; |
|
582
6c86efe60b37
implement table (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
579
diff
changeset
|
1121 | } |
|
6c86efe60b37
implement table (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
579
diff
changeset
|
1122 | } |
|
6c86efe60b37
implement table (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
579
diff
changeset
|
1123 | |
|
518
45ed276ba7a4
use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
517
diff
changeset
|
1124 | void application_startup(UiEvent *event, void *data) { |
|
519
8884c7fbe4cb
add box container (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
518
diff
changeset
|
1125 | UiObject *obj = ui_window("My Window", NULL); |
|
579
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1126 | |
|
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1127 | UiList *list = ui_list_new(obj->ctx, "mylist"); |
|
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1128 | ui_list_append(list, "Entry 1"); |
|
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1129 | ui_list_append(list, "Entry 2"); |
|
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1130 | ui_list_append(list, "Entry 3"); |
|
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1131 | ui_list_append(list, "Entry 4"); |
|
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1132 | ui_list_append(list, "Entry 5"); |
|
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1133 | |
|
522
bb0d05f45046
add grid container (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
520
diff
changeset
|
1134 | ui_grid(obj, .margin = 10, .columnspacing = 10, .rowspacing = 10) { |
|
bb0d05f45046
add grid container (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
520
diff
changeset
|
1135 | ui_button(obj, .label = "Button 1"); |
|
525
878df45e6441
implement all grid layout features (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
522
diff
changeset
|
1136 | ui_button(obj, .label = "Button 2", .hexpand = TRUE, .hfill = TRUE); |
|
878df45e6441
implement all grid layout features (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
522
diff
changeset
|
1137 | ui_button(obj, .label = "Button end"); |
|
522
bb0d05f45046
add grid container (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
520
diff
changeset
|
1138 | ui_newline(obj); |
|
bb0d05f45046
add grid container (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
520
diff
changeset
|
1139 | |
|
527
7273a78e8e5b
add textarea (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
1140 | ui_textarea(obj, .vexpand = TRUE, .vfill = TRUE); |
|
582
6c86efe60b37
implement table (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
579
diff
changeset
|
1141 | |
|
6c86efe60b37
implement table (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
579
diff
changeset
|
1142 | UiModel *model = ui_model(obj->ctx, UI_STRING, "col1", UI_INTEGER, "col2", -1); |
|
6c86efe60b37
implement table (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
579
diff
changeset
|
1143 | model->columnsize[0] = -1; |
| 723 | 1144 | ui_table(obj, .model = model, .getvalue = table_getvalue, .varname = "mylist", .colspan = 2, .fill = UI_ON, .multiselection = TRUE, .fill = TRUE, .onactivate = list_activate); |
|
582
6c86efe60b37
implement table (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
579
diff
changeset
|
1145 | |
|
525
878df45e6441
implement all grid layout features (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
522
diff
changeset
|
1146 | ui_newline(obj); |
|
878df45e6441
implement all grid layout features (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
522
diff
changeset
|
1147 | |
|
878df45e6441
implement all grid layout features (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
522
diff
changeset
|
1148 | ui_button(obj, .label = "Button Y"); |
|
526
f6a6b0b08641
add togglebutton and checkbox (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
525
diff
changeset
|
1149 | ui_checkbox(obj, .label = "Checkbox"); |
|
761
b963af4aac40
implement spinbox min/max args (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
754
diff
changeset
|
1150 | ui_spinbox(obj, .digits = 2); |
|
550
0412c4c1048e
implement radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
537
diff
changeset
|
1151 | ui_newline(obj); |
|
0412c4c1048e
implement radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
537
diff
changeset
|
1152 | |
|
0412c4c1048e
implement radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
537
diff
changeset
|
1153 | ui_hbox(obj, .colspan = 3) { |
|
0412c4c1048e
implement radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
537
diff
changeset
|
1154 | ui_radiobutton(obj, .label = "Radio 1", .varname = "radio"); |
|
0412c4c1048e
implement radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
537
diff
changeset
|
1155 | ui_radiobutton(obj, .label = "Radio 2", .varname = "radio"); |
|
0412c4c1048e
implement radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
537
diff
changeset
|
1156 | ui_radiobutton(obj, .label = "Radio 3", .varname = "radio"); |
|
0412c4c1048e
implement radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
537
diff
changeset
|
1157 | ui_radiobutton(obj, .label = "Radio 4", .varname = "radio"); |
|
0412c4c1048e
implement radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
537
diff
changeset
|
1158 | } |
|
822
54e43e4efac2
implement widget margin (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
821
diff
changeset
|
1159 | ui_newline(obj); |
|
54e43e4efac2
implement widget margin (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
821
diff
changeset
|
1160 | |
|
54e43e4efac2
implement widget margin (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
821
diff
changeset
|
1161 | ui_hbox(obj, .colspan = 3) { |
|
54e43e4efac2
implement widget margin (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
821
diff
changeset
|
1162 | ui_button(obj, .label = "Margin Test 1", .margin_top = 10); |
|
54e43e4efac2
implement widget margin (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
821
diff
changeset
|
1163 | ui_button(obj, .label = "Margin Test 2", .margin_top = 20); |
|
54e43e4efac2
implement widget margin (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
821
diff
changeset
|
1164 | UIWIDGET w = ui_button(obj, .label = "Margin Test 3", .margin = 30); |
|
54e43e4efac2
implement widget margin (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
821
diff
changeset
|
1165 | //ui_set_visible(w, FALSE); |
|
54e43e4efac2
implement widget margin (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
821
diff
changeset
|
1166 | ui_button(obj, .label = "Margin Test 4", .margin_top = 40); |
|
54e43e4efac2
implement widget margin (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
821
diff
changeset
|
1167 | ui_button(obj, .label = "Margin Test 5", .margin_top = 50); |
|
54e43e4efac2
implement widget margin (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
821
diff
changeset
|
1168 | ui_button(obj, .label = "Margin Test 6", .margin_top = 60); |
|
54e43e4efac2
implement widget margin (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
821
diff
changeset
|
1169 | } |
|
522
bb0d05f45046
add grid container (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
520
diff
changeset
|
1170 | } |
|
519
8884c7fbe4cb
add box container (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
518
diff
changeset
|
1171 | ui_show(obj); |
|
518
45ed276ba7a4
use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
517
diff
changeset
|
1172 | } |
|
45ed276ba7a4
use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
517
diff
changeset
|
1173 | |
|
516
4b31c74666d7
remove old Qt code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
510
diff
changeset
|
1174 | int main(int argc, char **argv) { |
|
518
45ed276ba7a4
use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
517
diff
changeset
|
1175 | ui_init("app1", 0, NULL); |
|
45ed276ba7a4
use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
517
diff
changeset
|
1176 | ui_onstartup(application_startup, NULL); |
|
535
ede57f5b6178
add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
532
diff
changeset
|
1177 | |
|
ede57f5b6178
add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
532
diff
changeset
|
1178 | // menu |
|
ede57f5b6178
add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
532
diff
changeset
|
1179 | ui_menu("File") { |
|
ede57f5b6178
add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
532
diff
changeset
|
1180 | ui_menuitem(.label = "Test"); |
|
ede57f5b6178
add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
532
diff
changeset
|
1181 | } |
|
ede57f5b6178
add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
532
diff
changeset
|
1182 | |
|
ede57f5b6178
add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
532
diff
changeset
|
1183 | ui_menu("Edit") { |
|
ede57f5b6178
add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
532
diff
changeset
|
1184 | ui_menuitem(.label = "Undo"); |
|
536
4a1c2eae4bcd
implement menu toggleitem (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
535
diff
changeset
|
1185 | ui_menu_toggleitem(.label = "Checkbox"); |
|
535
ede57f5b6178
add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
532
diff
changeset
|
1186 | ui_menuseparator(); |
|
537
81e46644f1aa
implement menu radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
536
diff
changeset
|
1187 | ui_menu_radioitem(.label = "Option 1", .varname = "menuoption"); |
|
81e46644f1aa
implement menu radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
536
diff
changeset
|
1188 | ui_menu_radioitem(.label = "Option 2", .varname = "menuoption"); |
|
81e46644f1aa
implement menu radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
536
diff
changeset
|
1189 | ui_menu_radioitem(.label = "Option 3", .varname = "menuoption"); |
|
81e46644f1aa
implement menu radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
536
diff
changeset
|
1190 | ui_menu_radioitem(.label = "Option 4", .varname = "menuoption"); |
|
81e46644f1aa
implement menu radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
536
diff
changeset
|
1191 | ui_menuseparator(); |
|
535
ede57f5b6178
add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
532
diff
changeset
|
1192 | ui_menu("Submenu") { |
|
ede57f5b6178
add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
532
diff
changeset
|
1193 | ui_menuitem(.label = "Subitem"); |
|
ede57f5b6178
add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
532
diff
changeset
|
1194 | } |
|
ede57f5b6178
add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
532
diff
changeset
|
1195 | } |
|
574
19de5292f08f
add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
560
diff
changeset
|
1196 | |
|
19de5292f08f
add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
560
diff
changeset
|
1197 | ui_toolbar_item("new", .label = "New"); |
|
19de5292f08f
add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
560
diff
changeset
|
1198 | ui_toolbar_item("add", .label = "Add"); |
|
19de5292f08f
add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
560
diff
changeset
|
1199 | ui_toolbar_item("copy", .label = "Copy"); |
|
19de5292f08f
add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
560
diff
changeset
|
1200 | ui_toolbar_item("paste", .label = "Paste"); |
|
575
50da9696a865
implement toolbar icons and events (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
574
diff
changeset
|
1201 | ui_toolbar_toggleitem("toggle", .label = "Toggle"); |
|
574
19de5292f08f
add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
560
diff
changeset
|
1202 | |
|
19de5292f08f
add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
560
diff
changeset
|
1203 | ui_toolbar_add_default("new", UI_TOOLBAR_LEFT); |
|
19de5292f08f
add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
560
diff
changeset
|
1204 | ui_toolbar_add_default("add", UI_TOOLBAR_LEFT); |
|
19de5292f08f
add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
560
diff
changeset
|
1205 | ui_toolbar_add_default("copy", UI_TOOLBAR_LEFT); |
|
19de5292f08f
add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
560
diff
changeset
|
1206 | ui_toolbar_add_default("paste", UI_TOOLBAR_LEFT); |
|
575
50da9696a865
implement toolbar icons and events (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
574
diff
changeset
|
1207 | ui_toolbar_add_default("toggle", UI_TOOLBAR_LEFT); |
|
518
45ed276ba7a4
use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
517
diff
changeset
|
1208 | |
|
45ed276ba7a4
use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
517
diff
changeset
|
1209 | ui_main(); |
|
45ed276ba7a4
use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
517
diff
changeset
|
1210 | |
|
516
4b31c74666d7
remove old Qt code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
510
diff
changeset
|
1211 | return 0; |
|
4b31c74666d7
remove old Qt code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
510
diff
changeset
|
1212 | } |
|
4b31c74666d7
remove old Qt code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
510
diff
changeset
|
1213 | |
|
4b31c74666d7
remove old Qt code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
510
diff
changeset
|
1214 | #endif |
|
4b31c74666d7
remove old Qt code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
510
diff
changeset
|
1215 | |
|
510
9f562a7de4a2
prepare buildsystem for win32
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
503
diff
changeset
|
1216 | #ifdef UI_WIN32 |
|
9f562a7de4a2
prepare buildsystem for win32
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
503
diff
changeset
|
1217 | |
|
825
1bac7e45712b
implement button onclick event (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
822
diff
changeset
|
1218 | static void action_button(UiEvent *event, void *data) { |
|
1bac7e45712b
implement button onclick event (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
822
diff
changeset
|
1219 | printf("button clicked\n"); |
|
1bac7e45712b
implement button onclick event (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
822
diff
changeset
|
1220 | } |
|
1bac7e45712b
implement button onclick event (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
822
diff
changeset
|
1221 | |
|
917
ca3918f9c96b
add first win32 listview/table code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
902
diff
changeset
|
1222 | typedef struct Person { |
|
ca3918f9c96b
add first win32 listview/table code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
902
diff
changeset
|
1223 | char *name; |
|
ca3918f9c96b
add first win32 listview/table code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
902
diff
changeset
|
1224 | char *email; |
|
ca3918f9c96b
add first win32 listview/table code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
902
diff
changeset
|
1225 | } Person; |
|
ca3918f9c96b
add first win32 listview/table code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
902
diff
changeset
|
1226 | |
|
ca3918f9c96b
add first win32 listview/table code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
902
diff
changeset
|
1227 | Person person1 = { "Alice", "alice@localhost" }; |
|
ca3918f9c96b
add first win32 listview/table code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
902
diff
changeset
|
1228 | Person person2 = { "Bob", "bob@localhost" }; |
|
ca3918f9c96b
add first win32 listview/table code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
902
diff
changeset
|
1229 | |
|
ca3918f9c96b
add first win32 listview/table code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
902
diff
changeset
|
1230 | void* person_getvalue(void *elm, int col) { |
|
ca3918f9c96b
add first win32 listview/table code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
902
diff
changeset
|
1231 | Person *p = (Person *) elm; |
|
ca3918f9c96b
add first win32 listview/table code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
902
diff
changeset
|
1232 | if (col == 0) { |
|
ca3918f9c96b
add first win32 listview/table code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
902
diff
changeset
|
1233 | return p->name; |
|
ca3918f9c96b
add first win32 listview/table code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
902
diff
changeset
|
1234 | } else { |
|
ca3918f9c96b
add first win32 listview/table code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
902
diff
changeset
|
1235 | return p->email; |
|
ca3918f9c96b
add first win32 listview/table code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
902
diff
changeset
|
1236 | } |
|
ca3918f9c96b
add first win32 listview/table code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
902
diff
changeset
|
1237 | } |
|
ca3918f9c96b
add first win32 listview/table code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
902
diff
changeset
|
1238 | |
|
919
d9018dcd4e2d
implement listview selection events (Win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
917
diff
changeset
|
1239 | void list_onselection(UiEvent *event, void *userdata) { |
|
d9018dcd4e2d
implement listview selection events (Win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
917
diff
changeset
|
1240 | UiListSelection *sel = event->eventdata; |
|
d9018dcd4e2d
implement listview selection events (Win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
917
diff
changeset
|
1241 | for (int i=0;i<sel->count;i++) { |
|
d9018dcd4e2d
implement listview selection events (Win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
917
diff
changeset
|
1242 | printf("selection: %d\n", sel->rows[i]); |
|
d9018dcd4e2d
implement listview selection events (Win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
917
diff
changeset
|
1243 | } |
|
d9018dcd4e2d
implement listview selection events (Win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
917
diff
changeset
|
1244 | printf("\n"); |
|
d9018dcd4e2d
implement listview selection events (Win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
917
diff
changeset
|
1245 | fflush(stdout); |
|
d9018dcd4e2d
implement listview selection events (Win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
917
diff
changeset
|
1246 | } |
|
d9018dcd4e2d
implement listview selection events (Win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
917
diff
changeset
|
1247 | |
|
513
a4e0ef98a8b4
implement first toolkit functions (WIN32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
512
diff
changeset
|
1248 | void application_startup(UiEvent *event, void *data) { |
|
666
86c3f109ed3b
fix wrong w32 string type
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
658
diff
changeset
|
1249 | UiObject *obj = ui_window("Test w32", NULL); |
|
841
651cf2c59dd9
implement ui_grid_create (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
825
diff
changeset
|
1250 | |
|
917
ca3918f9c96b
add first win32 listview/table code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
902
diff
changeset
|
1251 | UiList *list = ui_list_new(obj->ctx, "persons"); |
|
ca3918f9c96b
add first win32 listview/table code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
902
diff
changeset
|
1252 | ui_list_append(list, &person1); |
|
ca3918f9c96b
add first win32 listview/table code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
902
diff
changeset
|
1253 | ui_list_append(list, &person2); |
|
844
3106d9ca2f9c
fix wrong child height in grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
841
diff
changeset
|
1254 | |
|
917
ca3918f9c96b
add first win32 listview/table code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
902
diff
changeset
|
1255 | ui_grid(obj, .margin = 10, .columnspacing = 10, .rowspacing = 10, .fill = TRUE) { |
|
936
d40a72210be8
add ui_combobox (Win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
921
diff
changeset
|
1256 | //UiModel *model = ui_model(obj->ctx, UI_STRING, "Name", UI_STRING, "Email", -1); |
|
d40a72210be8
add ui_combobox (Win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
921
diff
changeset
|
1257 | //ui_table(obj, .fill = TRUE, .varname = "persons", .model = model, .getvalue = person_getvalue, .onselection = list_onselection); |
|
d40a72210be8
add ui_combobox (Win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
921
diff
changeset
|
1258 | //ui_model_free(obj->ctx, model); |
|
969
7385c26d998d
rename combobox to dropdown
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
967
diff
changeset
|
1259 | ui_dropdown(obj, .varname = "persons", .getvalue = person_getvalue, .onactivate = list_onselection, .hexpand = TRUE, .hfill = TRUE); |
|
938
be4c88ded783
change w32 eventproc signature + fix grid repaint bug (Win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
937
diff
changeset
|
1260 | |
|
be4c88ded783
change w32 eventproc signature + fix grid repaint bug (Win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
937
diff
changeset
|
1261 | ui_button(obj, .label = "Test 1"); |
|
be4c88ded783
change w32 eventproc signature + fix grid repaint bug (Win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
937
diff
changeset
|
1262 | ui_newline(obj); |
|
be4c88ded783
change w32 eventproc signature + fix grid repaint bug (Win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
937
diff
changeset
|
1263 | |
|
be4c88ded783
change w32 eventproc signature + fix grid repaint bug (Win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
937
diff
changeset
|
1264 | ui_button(obj, .label = "Button 1", .hfill = TRUE); |
|
be4c88ded783
change w32 eventproc signature + fix grid repaint bug (Win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
937
diff
changeset
|
1265 | ui_button(obj, .label = "Button 2"); |
|
be4c88ded783
change w32 eventproc signature + fix grid repaint bug (Win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
937
diff
changeset
|
1266 | ui_button(obj, .label = "Button 2"); |
| 940 | 1267 | ui_newline(obj); |
| 1268 | ||
| 1269 | ui_textarea(obj, .colspan = 3, .fill = TRUE); | |
|
841
651cf2c59dd9
implement ui_grid_create (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
825
diff
changeset
|
1270 | } |
|
651cf2c59dd9
implement ui_grid_create (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
825
diff
changeset
|
1271 | |
|
813
6d9066951cdb
implement ui_show (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
804
diff
changeset
|
1272 | ui_show(obj); |
|
513
a4e0ef98a8b4
implement first toolkit functions (WIN32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
512
diff
changeset
|
1273 | } |
|
a4e0ef98a8b4
implement first toolkit functions (WIN32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
512
diff
changeset
|
1274 | |
|
512
3cb2587f8891
fix win32 build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
510
diff
changeset
|
1275 | int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { |
|
844
3106d9ca2f9c
fix wrong child height in grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
841
diff
changeset
|
1276 | //int main() { |
|
513
a4e0ef98a8b4
implement first toolkit functions (WIN32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
512
diff
changeset
|
1277 | ui_init("app1", 0, NULL); |
|
953
c98404829cd3
fix win32 build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
940
diff
changeset
|
1278 | |
|
c98404829cd3
fix win32 build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
940
diff
changeset
|
1279 | ui_menu("File") { |
|
c98404829cd3
fix win32 build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
940
diff
changeset
|
1280 | ui_menuitem("Open"); |
|
c98404829cd3
fix win32 build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
940
diff
changeset
|
1281 | ui_menuitem("Close"); |
|
c98404829cd3
fix win32 build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
940
diff
changeset
|
1282 | } |
|
c98404829cd3
fix win32 build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
940
diff
changeset
|
1283 | |
|
513
a4e0ef98a8b4
implement first toolkit functions (WIN32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
512
diff
changeset
|
1284 | ui_onstartup(application_startup, NULL); |
|
a4e0ef98a8b4
implement first toolkit functions (WIN32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
512
diff
changeset
|
1285 | |
|
a4e0ef98a8b4
implement first toolkit functions (WIN32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
512
diff
changeset
|
1286 | ui_main(); |
|
a4e0ef98a8b4
implement first toolkit functions (WIN32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
512
diff
changeset
|
1287 | |
|
510
9f562a7de4a2
prepare buildsystem for win32
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
503
diff
changeset
|
1288 | return 0; |
|
9f562a7de4a2
prepare buildsystem for win32
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
503
diff
changeset
|
1289 | } |
|
9f562a7de4a2
prepare buildsystem for win32
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
503
diff
changeset
|
1290 | |
|
9f562a7de4a2
prepare buildsystem for win32
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
503
diff
changeset
|
1291 | #endif |
|
513
a4e0ef98a8b4
implement first toolkit functions (WIN32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
512
diff
changeset
|
1292 |