Wed, 15 Oct 2025 18:08:43 +0200
implement gtk4 menu radio items
| 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> |
| 35 | #include <cx/utils.h> | |
| 0 | 36 | |
|
468
1f251c462f74
use UiGeneric for WebView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
465
diff
changeset
|
37 | #include "cx/string.h" |
|
503
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
38 | #include "cx/list.h" |
|
468
1f251c462f74
use UiGeneric for WebView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
465
diff
changeset
|
39 | |
|
559
dc5ed4c10d83
fix radio buttons (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
554
diff
changeset
|
40 | //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
|
41 | |
|
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 | #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
|
43 | |
|
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_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
|
45 | #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
|
46 | |
|
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 | 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
|
48 | 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
|
49 | |
|
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 | 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
|
51 | |
|
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 | 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
|
53 | } 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
|
54 | |
|
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 | 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
|
56 | 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
|
57 | |
|
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 | 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
|
59 | 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
|
60 | |
|
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 | 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
|
62 | 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
|
63 | 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
|
64 | 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
|
65 | 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
|
66 | } 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
|
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 | |
|
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* 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
|
71 | 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
|
72 | 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
|
73 | 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
|
74 | 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
|
75 | 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
|
76 | 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
|
77 | 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
|
78 | 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
|
79 | |
|
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, "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
|
81 | 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
|
82 | 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
|
83 | |
|
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 | 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
|
85 | 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
|
86 | 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
|
87 | 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
|
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 | |
|
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 | 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
|
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 | |
|
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* 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
|
94 | 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
|
95 | 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
|
96 | 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
|
97 | |
|
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 | 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
|
99 | 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
|
100 | 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
|
101 | 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
|
102 | 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
|
103 | 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
|
104 | 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
|
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 | |
|
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 | 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
|
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 | |
|
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 | 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
|
111 | 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
|
112 | 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
|
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 | |
|
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 | 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
|
116 | 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
|
117 | 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
|
118 | if(doc->current) { |
|
623
1ebc781c7d17
rename ui_detach_document2 to ui_detach_document
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
594
diff
changeset
|
119 | 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
|
120 | } |
|
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 | 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
|
122 | 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
|
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 | |
|
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 | 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
|
126 | 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
|
127 | |
|
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_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
|
129 | ui_hbox(obj, .colspan = 2, .spacing = 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
|
130 | ui_combobox(obj, .varname = "doclist", .getvalue = doclist_getvalue, .onactivate = action_document_selected); |
|
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_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
|
132 | 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
|
133 | } |
|
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 | 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
|
135 | |
|
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_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
|
137 | 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
|
138 | 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
|
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 | |
|
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_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
|
142 | 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
|
143 | 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
|
144 | |
|
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 | 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
|
146 | 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
|
147 | 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
|
148 | 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
|
149 | |
|
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
|
150 | ui_rlabel(obj, .label = "List 1", .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
|
151 | ui_combobox(obj, .varname = "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
|
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 | |
|
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 | 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
|
155 | 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
|
156 | |
|
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 | 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
|
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 | |
|
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 | 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
|
161 | 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
|
162 | 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
|
163 | |
|
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 | 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
|
165 | |
|
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 | // 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
|
167 | 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
|
168 | 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
|
169 | 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
|
170 | 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
|
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 | |
|
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 | 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
|
174 | |
|
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 | 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
|
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 | |
|
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 | #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
|
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 | |
|
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
|
182 | #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
|
183 | |
|
163
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
184 | typedef struct { |
|
253
087cc9216f28
initial newapi GTK port
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
174
diff
changeset
|
185 | UiString *str1; |
|
087cc9216f28
initial newapi GTK port
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
174
diff
changeset
|
186 | UiString *str2; |
|
282
3a77b9048664
add path textfield (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
279
diff
changeset
|
187 | UiString *path; |
|
335
91d4f0391282
add new textarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
333
diff
changeset
|
188 | UiText *text; |
|
266
37d5b49b1c91
fix progressbar using the wrong var type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
265
diff
changeset
|
189 | 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
|
190 | UiList *list; |
|
390
b130f80ec7f9
implement list/table contextmenu (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
389
diff
changeset
|
191 | UiList *list2; |
|
311
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
192 | UiList *menulist; |
|
275
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
193 | UiInteger *radio; |
|
332
7e7c05af8f3a
implement stack set/get/remove (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
331
diff
changeset
|
194 | UiInteger *tabview; |
|
339
b68b5f984074
add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
336
diff
changeset
|
195 | UiGeneric *image; |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
196 | UiList *srclist1; |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
197 | UiList *srclist2; |
|
422
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
198 | UiList *items; |
|
468
1f251c462f74
use UiGeneric for WebView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
465
diff
changeset
|
199 | UiGeneric *web; |
|
503
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
200 | UiString *list_input; |
|
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; |
|
163
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
206 | } MyDocument; |
|
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
207 | |
|
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
208 | MyDocument *doc1; |
|
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
209 | MyDocument *doc2; |
|
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
210 | |
|
333
634e3ce80afe
implement gtk3 stack tabview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
332
diff
changeset
|
211 | UIWIDGET tabview; |
|
163
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
212 | |
|
347
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
213 | static UiCondVar *cond; |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
214 | static int thr_end = 0; |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
215 | static int thr_started = 0; |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
216 | |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
217 | int threadfunc(void *data) { |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
218 | printf("thr wait for data...\n"); |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
219 | ui_condvar_wait(cond); |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
220 | 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
|
221 | ui_condvar_destroy(cond); |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
222 | cond = NULL; |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
223 | |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
224 | return 0; |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
225 | } |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
226 | |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
227 | void action_start_thread(UiEvent *event, void *data) { |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
228 | if(!thr_started) { |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
229 | cond = ui_condvar_create(); |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
230 | ui_job(event->obj, threadfunc, NULL, NULL, NULL); |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
231 | thr_started = 1; |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
232 | } |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
233 | } |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
234 | |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
235 | void action_notify_thread(UiEvent *event, void *data) { |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
236 | if(!thr_end) { |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
237 | ui_condvar_signal(cond, "hello thread", 123); |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
238 | thr_end = 1; |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
239 | } |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
240 | } |
|
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
241 | |
| 162 | 242 | void action_menu(UiEvent *event, void *userdata) { |
|
253
087cc9216f28
initial newapi GTK port
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
174
diff
changeset
|
243 | |
|
145
853685152c1d
adds spinner widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
144
diff
changeset
|
244 | } |
|
853685152c1d
adds spinner widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
144
diff
changeset
|
245 | |
|
279
2ad83650d797
implement file dialog (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
278
diff
changeset
|
246 | void action_file_selected(UiEvent *event, void *userdata) { |
|
2ad83650d797
implement file dialog (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
278
diff
changeset
|
247 | UiFileList *files = event->eventdata; |
|
339
b68b5f984074
add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
336
diff
changeset
|
248 | MyDocument *doc = event->document; |
|
279
2ad83650d797
implement file dialog (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
278
diff
changeset
|
249 | printf("files: %d\n", (int)files->nfiles); |
|
2ad83650d797
implement file dialog (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
278
diff
changeset
|
250 | if(files->nfiles > 0) { |
|
2ad83650d797
implement file dialog (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
278
diff
changeset
|
251 | 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
|
252 | 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
|
253 | } |
|
2ad83650d797
implement file dialog (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
278
diff
changeset
|
254 | } |
|
2ad83650d797
implement file dialog (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
278
diff
changeset
|
255 | |
|
163
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
256 | 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
|
257 | 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
|
258 | } |
|
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
259 | |
|
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
260 | void action_switch(UiEvent *event, void *userdata) { |
|
253
087cc9216f28
initial newapi GTK port
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
174
diff
changeset
|
261 | |
|
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 | |
|
275
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
264 | 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
|
265 | printf("toolbar button\n"); |
|
275
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
266 | |
|
320
be224cf1f50e
add alternative ui_dialog implementation for libadwaita
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
267 | 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
|
268 | } |
|
163
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
269 | |
|
344
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
270 | void action_dialog_button(UiEvent *event, void *userdata) { |
|
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
271 | ui_close(event->obj); |
|
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
272 | } |
|
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
273 | |
|
402
96a055be7f0b
add textfield onactivate event (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
390
diff
changeset
|
274 | void action_dialog_onactivate(UiEvent *event, void *userdata) { |
|
96a055be7f0b
add textfield onactivate event (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
390
diff
changeset
|
275 | printf("textfield activate\n"); |
|
96a055be7f0b
add textfield onactivate event (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
390
diff
changeset
|
276 | ui_close(event->obj); |
|
96a055be7f0b
add textfield onactivate event (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
390
diff
changeset
|
277 | } |
|
96a055be7f0b
add textfield onactivate event (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
390
diff
changeset
|
278 | |
|
344
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
279 | void action_toolbar_dialog(UiEvent *event, void *userdata) { |
|
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
280 | |
|
345
d2ccc543f432
add style for dialog window default button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
344
diff
changeset
|
281 | 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
|
282 | |
|
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
283 | ui_vbox(dialog, .margin = 10, .spacing = 10) { |
|
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
284 | ui_label(dialog, .label = "Enter password:"); |
|
402
96a055be7f0b
add textfield onactivate event (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
390
diff
changeset
|
285 | 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
|
286 | } |
|
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
287 | |
|
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
288 | ui_show(dialog); |
|
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
289 | } |
|
870dd3d41d83
add dialog window (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
343
diff
changeset
|
290 | |
|
336
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
291 | void action_toolbar_newwindow(UiEvent *event, void *userdata) { |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
292 | UiObject *obj = ui_simple_window("New Window", NULL); |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
293 | |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
294 | ui_headerbar0(obj) { |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
295 | ui_headerbar_start(obj) { |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
296 | ui_button(obj, .label = "Open"); |
|
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_headerbar_end(obj) { |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
299 | ui_button(obj, .label = "Test"); |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
300 | } |
|
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 | |
|
56c12f44c2d3
add custom headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
335
diff
changeset
|
303 | ui_textarea(obj, .varname="text"); |
|
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 | ui_show(obj); |
|
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 | |
|
163
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
308 | MyDocument* create_doc(void) { |
|
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
309 | 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
|
310 | UiContext *docctx = ui_document_context(doc); |
|
797
47008843b468
fix global menu list binding
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
789
diff
changeset
|
311 | doc->submenulist = ui_list_new(docctx, "sub_menulist"); |
|
47008843b468
fix global menu list binding
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
789
diff
changeset
|
312 | 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
|
313 | 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
|
314 | 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
|
315 | 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
|
316 | 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
|
317 | 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
|
318 | doc->str1 = ui_string_new(docctx, "str1"); |
|
087cc9216f28
initial newapi GTK port
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
174
diff
changeset
|
319 | doc->str1 = ui_string_new(docctx, "str2"); |
|
282
3a77b9048664
add path textfield (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
279
diff
changeset
|
320 | 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
|
321 | 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
|
322 | 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
|
323 | 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
|
324 | 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
|
325 | ui_list_append(doc->list, "test3"); |
|
390
b130f80ec7f9
implement list/table contextmenu (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
389
diff
changeset
|
326 | 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
|
327 | ui_list_append(doc->list2, strdup("test1")); |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
328 | ui_list_append(doc->list2, strdup("test2")); |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
329 | ui_list_append(doc->list2, strdup("test3")); |
|
275
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
330 | 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
|
331 | 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
|
332 | doc->image = ui_generic_new(docctx, "image"); |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
333 | |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
334 | doc->srclist1 = ui_list_new(docctx, "srclist1"); |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
335 | doc->srclist2 = ui_list_new(docctx, "srclist2"); |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
336 | ui_list_append(doc->srclist1, "test1"); |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
337 | ui_list_append(doc->srclist1, "test2"); |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
338 | ui_list_append(doc->srclist1, "test3"); |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
339 | ui_list_append(doc->srclist2, "x1"); |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
340 | ui_list_append(doc->srclist2, "x2"); |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
341 | |
|
422
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
342 | doc->items = ui_list_new(docctx, "items"); |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
343 | ui_list_append(doc->items, "Item 1"); |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
344 | ui_list_append(doc->items, "Item 2"); |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
345 | ui_list_append(doc->items, "Item 3"); |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
346 | |
|
468
1f251c462f74
use UiGeneric for WebView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
465
diff
changeset
|
347 | doc->web = ui_generic_new(docctx, NULL); |
|
1f251c462f74
use UiGeneric for WebView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
465
diff
changeset
|
348 | |
|
503
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
349 | doc->list_input = ui_string_new(docctx, "list_input"); |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
350 | |
|
701
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
351 | doc->list11 = ui_list_new(docctx, "list11"); |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
352 | ui_list_append(doc->list11, "Item 1"); |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
353 | ui_list_append(doc->list11, "Item 2"); |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
354 | ui_list_append(doc->list11, "Item 3"); |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
355 | |
|
704
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
356 | doc->link = ui_string_new(docctx, "link"); |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
357 | doc->link_label = ui_string_new(docctx, "link_label"); |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
358 | doc->link_uri = ui_string_new(docctx, "link_uri"); |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
359 | |
|
335
91d4f0391282
add new textarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
333
diff
changeset
|
360 | //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
|
361 | return doc; |
|
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
362 | } |
|
b70e2a77dea0
refactore document system to support document trees
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
162
diff
changeset
|
363 | |
|
268
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
364 | 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
|
365 | |
|
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
366 | static void* list_getvalue(void *elm, int col) { |
|
269
3380100e20f5
implement listview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
268
diff
changeset
|
367 | /* |
|
268
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
368 | 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
|
369 | if(!icon) { |
|
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
370 | 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
|
371 | } |
|
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
372 | return icon; |
|
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
373 | } |
|
269
3380100e20f5
implement listview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
268
diff
changeset
|
374 | */ |
|
3380100e20f5
implement listview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
268
diff
changeset
|
375 | |
|
268
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
376 | char *str = elm; |
|
270
9389313ac00f
port combobox to new API (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
269
diff
changeset
|
377 | 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
|
378 | } |
|
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
267
diff
changeset
|
379 | |
|
311
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
380 | static UiList *menu_list; |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
381 | int new_item_count = 0; |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
382 | |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
383 | 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
|
384 | char str[64]; |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
385 | 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
|
386 | |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
387 | 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
|
388 | ui_list_notify(menu_list); |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
389 | } |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
390 | |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
391 | 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
|
392 | 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
|
393 | } |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
394 | |
|
332
7e7c05af8f3a
implement stack set/get/remove (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
331
diff
changeset
|
395 | static int tab_x = 0; |
|
7e7c05af8f3a
implement stack set/get/remove (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
331
diff
changeset
|
396 | 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
|
397 | MyDocument *doc = event->document; |
|
7e7c05af8f3a
implement stack set/get/remove (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
331
diff
changeset
|
398 | 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
|
399 | ui_set(doc->tabview, 0); |
|
7e7c05af8f3a
implement stack set/get/remove (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
331
diff
changeset
|
400 | } |
|
7e7c05af8f3a
implement stack set/get/remove (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
331
diff
changeset
|
401 | |
|
343
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
402 | |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
403 | void action_group1(UiEvent *event, void *userdata) { |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
404 | UiContext *ctx = event->obj->ctx; |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
405 | if(userdata) { |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
406 | ui_unset_group(ctx, 1); |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
407 | } else { |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
408 | ui_set_group(ctx, 1); |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
409 | } |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
410 | } |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
411 | |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
412 | void action_group2(UiEvent *event, void *userdata) { |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
413 | UiContext *ctx = event->obj->ctx; |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
414 | if(userdata) { |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
415 | ui_unset_group(ctx, 2); |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
416 | } else { |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
417 | ui_set_group(ctx, 2); |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
418 | } |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
419 | } |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
420 | |
|
383
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
421 | static UiObject *ref_window; |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
422 | |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
423 | void action_button_ref(UiEvent *event, void *userdata) { |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
424 | UiObject *obj = event->obj; |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
425 | printf("action_button_ref: %u\n", obj->ref); |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
426 | ui_object_ref(obj); |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
427 | ref_window = obj; |
|
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 | |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
430 | void action_button_unref(UiEvent *event, void *userdata) { |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
431 | UiObject *obj = userdata; |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
432 | printf("action_button_unref: %u\n", obj->ref); |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
433 | ui_object_unref(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_toolbar_unrefwindow(UiEvent *event, void *userdata) { |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
437 | UiObject *obj = ui_simple_window("Unref", NULL); |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
438 | ui_grid(obj, .margin = 20) { |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
439 | 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
|
440 | } |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
441 | ui_show(obj); |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
442 | } |
|
03599608d555
add UiObject reference counting (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
358
diff
changeset
|
443 | |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
444 | 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
|
445 | UiSubListEventData *eventdata = event->eventdata; |
|
776
867ff911492d
fix ui_listbox_list_update
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
771
diff
changeset
|
446 | printf("sourcelist %s index %d\n", eventdata->row_data, eventdata->row_index); |
|
867ff911492d
fix ui_listbox_list_update
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
771
diff
changeset
|
447 | ui_list_update_row(eventdata->list, eventdata->row_index); |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
448 | } |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
449 | |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
450 | void action_table_activate(UiEvent *event, void *userdata) { |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
451 | char *s = userdata; |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
452 | printf("table event: %s\n", s); |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
453 | UiListSelection *sel = event->eventdata; |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
454 | for(int i=0;i<sel->count;i++) { |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
455 | printf("%d\n", sel->rows[i]); |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
456 | } |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
457 | printf("\n"); |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
458 | } |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
459 | |
|
389
d15eca5fd8b3
implement image viewer context menus (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
388
diff
changeset
|
460 | UiMenuBuilder *menubuilder; |
|
d15eca5fd8b3
implement image viewer context menus (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
388
diff
changeset
|
461 | |
|
390
b130f80ec7f9
implement list/table contextmenu (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
389
diff
changeset
|
462 | void* table_getvalue(void *row, int col) { |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
463 | switch(col) { |
|
742
f63d8125fcbd
fix wrong gtk3 treeviewmodel when using multiple UI_TEXT columns
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
738
diff
changeset
|
464 | 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
|
465 | 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
|
466 | 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
|
467 | 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
|
468 | 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
|
469 | case 5: return "file"; |
|
777
622efebfab37
add UI_STRING_EDITABLE model type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
776
diff
changeset
|
470 | 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
|
471 | case 7: return "edit me"; |
|
622efebfab37
add UI_STRING_EDITABLE model type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
776
diff
changeset
|
472 | case 8: return "edit me too"; |
|
821
2aa2f75f8da4
fix qt build system
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
818
diff
changeset
|
473 | case 9: return (void*)(intptr_t)1; |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
474 | } |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
475 | return NULL; |
|
390
b130f80ec7f9
implement list/table contextmenu (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
389
diff
changeset
|
476 | } |
|
b130f80ec7f9
implement list/table contextmenu (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
389
diff
changeset
|
477 | |
|
738
0dbf92544d4f
add stylefunc for table/listview for row and cell styling options (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
729
diff
changeset
|
478 | 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
|
479 | if(col > 6) { |
|
622efebfab37
add UI_STRING_EDITABLE model type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
776
diff
changeset
|
480 | return FALSE; |
|
622efebfab37
add UI_STRING_EDITABLE model type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
776
diff
changeset
|
481 | } |
|
738
0dbf92544d4f
add stylefunc for table/listview for row and cell styling options (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
729
diff
changeset
|
482 | 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
|
483 | style->text_style = UI_TEXT_STYLE_BOLD; |
|
745
a4ee36ff7147
implement table styling for gtk3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
742
diff
changeset
|
484 | if(col == 2) { |
|
a4ee36ff7147
implement table styling for gtk3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
742
diff
changeset
|
485 | style->text_style = UI_TEXT_STYLE_ITALIC; |
|
a4ee36ff7147
implement table styling for gtk3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
742
diff
changeset
|
486 | } |
|
a4ee36ff7147
implement table styling for gtk3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
742
diff
changeset
|
487 | if(row == 1) { |
|
a4ee36ff7147
implement table styling for gtk3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
742
diff
changeset
|
488 | style->text_style |= UI_TEXT_STYLE_UNDERLINE; |
|
a4ee36ff7147
implement table styling for gtk3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
742
diff
changeset
|
489 | } |
|
742
f63d8125fcbd
fix wrong gtk3 treeviewmodel when using multiple UI_TEXT columns
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
738
diff
changeset
|
490 | 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
|
491 | 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
|
492 | style->fg.red = col == 5 ? 255 : 0; |
|
745
a4ee36ff7147
implement table styling for gtk3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
742
diff
changeset
|
493 | 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
|
494 | 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
|
495 | } |
|
0dbf92544d4f
add stylefunc for table/listview for row and cell styling options (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
729
diff
changeset
|
496 | 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
|
497 | } |
|
0dbf92544d4f
add stylefunc for table/listview for row and cell styling options (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
729
diff
changeset
|
498 | |
|
658
b25f54b51d76
allow sourcelist getvalue func to be null
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
653
diff
changeset
|
499 | void sourcelist_getvalue(UiList *list, void *sublistdata, void *rowdata, int index, UiSubListItem *item, void *userdata) { |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
500 | item->label = strdup(rowdata); |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
501 | item->eventdata = sublistdata; |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
502 | } |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
503 | |
|
422
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
504 | typedef struct Item { |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
505 | UiObject *obj; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
506 | MyDocument *doc; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
507 | void *elm; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
508 | } Item; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
509 | |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
510 | void item_remove(UiEvent *event, void *userdata) { |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
511 | Item *item = userdata; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
512 | int index = 0; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
513 | void *elm = ui_list_first(item->doc->items); |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
514 | while(elm) { |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
515 | if(elm == item->elm) { |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
516 | break; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
517 | } |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
518 | elm = ui_list_next(item->doc->items); |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
519 | index++; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
520 | } |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
521 | |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
522 | ui_list_remove(item->doc->items, index); |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
523 | ui_list_update(item->doc->items); |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
524 | } |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
525 | |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
526 | 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
|
527 | Item *i = ui_malloc(obj->ctx, sizeof(Item)); |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
528 | i->obj = obj; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
529 | i->elm = elm; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
530 | i->doc = userdata; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
531 | |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
532 | char *item = elm; |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
533 | ui_button(obj, .label = item); |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
534 | ui_checkbox(obj, .label = "Check"); |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
535 | ui_label(obj, .fill = UI_ON); |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
536 | 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
|
537 | |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
538 | |
|
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 | |
|
489
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
481
diff
changeset
|
542 | 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
|
543 | 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
|
544 | } |
|
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
481
diff
changeset
|
545 | |
|
503
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
546 | 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
|
547 | MyDocument *doc = event->document; |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
548 | |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
549 | char *newvalue = ui_get(doc->list_input); |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
550 | CxList *list2 = doc->list2->data; |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
551 | cxListRemove(list2, 1); |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
552 | cxListInsert(list2, 1, strdup(newvalue)); |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
553 | |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
554 | doc->list2->update(doc->list2, 1); |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
555 | } |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
556 | |
|
701
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
557 | 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
|
558 | UiListSelection *sel = event->eventdata; |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
559 | printf("list selection[%d]\n", sel->count); |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
560 | for(int i=0;i<sel->count;i++) { |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
561 | printf("[%d]: %d\n", i, sel->rows[i]); |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
562 | } |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
563 | printf("\n"); |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
564 | } |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
565 | |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
566 | 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
|
567 | printf("activate\n"); |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
568 | action_list_selection(event, userdata); |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
569 | } |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
570 | |
|
704
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
571 | static void action_link(UiEvent *event, void *userdata) { |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
572 | printf("action_link: %s\n", event->eventdata); |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
573 | } |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
574 | |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
575 | static void action_change_link(UiEvent *event, void *userdata) { |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
576 | MyDocument *doc = event->document; |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
577 | char *label = ui_get(doc->link_label); |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
578 | char *uri = ui_get(doc->link_uri); |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
579 | ui_linkbutton_value_set(doc->link, label, uri); |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
580 | } |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
581 | |
|
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
|
582 | 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
|
583 | 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
|
584 | return FALSE; |
|
85b6cef7fcba
implement listview onsave handler (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
777
diff
changeset
|
585 | } |
|
85b6cef7fcba
implement listview onsave handler (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
777
diff
changeset
|
586 | |
|
848
5a4b72489111
add new drawingarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
844
diff
changeset
|
587 | static void draw(UiEvent *event, UiGraphics *g, void *userdata) { |
|
5a4b72489111
add new drawingarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
844
diff
changeset
|
588 | 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
|
589 | 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
|
590 | |
|
5a4b72489111
add new drawingarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
844
diff
changeset
|
591 | 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
|
592 | } |
|
5a4b72489111
add new drawingarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
844
diff
changeset
|
593 | |
|
133
6dd780cbc8c6
using GtkApplication now
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
127
diff
changeset
|
594 | 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
|
595 | // global list |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
596 | UiContext *global = ui_global_context(); |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
597 | 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
|
598 | 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
|
599 | 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
|
600 | 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
|
601 | |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
602 | |
|
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
603 | |
|
783
25b2da0aac15
add ui_splitview_window
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
779
diff
changeset
|
604 | UiObject *obj = ui_splitview_window("Test", TRUE); |
|
409
86fbc80f0be7
add sidebar (libadwaita)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
408
diff
changeset
|
605 | |
|
266
37d5b49b1c91
fix progressbar using the wrong var type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
265
diff
changeset
|
606 | MyDocument *doc = create_doc(); |
|
37d5b49b1c91
fix progressbar using the wrong var type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
265
diff
changeset
|
607 | 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
|
608 | |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
609 | ui_sidebar(obj, .margin = 0, .spacing = 0) { |
|
673
90a32d739b8e
improve exit behavior (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
666
diff
changeset
|
610 | ui_sourcelist(obj, .fill = TRUE, |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
611 | .getvalue = sourcelist_getvalue, |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
612 | .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
|
613 | .onactivate = action_sourcelist_activate); |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
614 | } |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
615 | |
|
783
25b2da0aac15
add ui_splitview_window
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
779
diff
changeset
|
616 | ui_right_panel(obj, .margin = 10, .spacing = 10) { |
|
25b2da0aac15
add ui_splitview_window
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
779
diff
changeset
|
617 | ui_button(obj, .label = "Test"); |
|
25b2da0aac15
add ui_splitview_window
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
779
diff
changeset
|
618 | } |
|
25b2da0aac15
add ui_splitview_window
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
779
diff
changeset
|
619 | |
|
742
f63d8125fcbd
fix wrong gtk3 treeviewmodel when using multiple UI_TEXT columns
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
738
diff
changeset
|
620 | 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
|
621 | ui_tab(obj, "Tab 0") { |
|
673
90a32d739b8e
improve exit behavior (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
666
diff
changeset
|
622 | 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
|
623 | 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
|
624 | ui_togglebutton(obj, .label = "Toggle"); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
625 | ui_checkbox(obj, .label = "My Checkbox"); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
626 | } |
|
673
90a32d739b8e
improve exit behavior (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
666
diff
changeset
|
627 | 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
|
628 | 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
|
629 | 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
|
630 | ui_newline(obj); |
|
343
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
631 | 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
|
632 | 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
|
633 | ui_newline(obj); |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
634 | |
|
54f5d7eb1335
implement widget groups for buttons (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
340
diff
changeset
|
635 | ui_button(obj, .label = "Groups 1,2", .colspan = 2, .groups = UI_GROUPS(1, 2)); |
|
328
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
636 | ui_newline(obj); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
637 | |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
638 | 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
|
639 | 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
|
640 | ui_newline(obj); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
641 | |
|
754
fb5f560e81d9
rename ui_spinner to ui_spinbox
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
745
diff
changeset
|
642 | ui_spinbox(obj, .step = 5); |
|
328
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
643 | ui_newline(obj); |
|
771
155f8722b927
implement switch (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
768
diff
changeset
|
644 | |
|
155f8722b927
implement switch (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
768
diff
changeset
|
645 | ui_switch(obj, .varname = "switch"); |
|
155f8722b927
implement switch (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
768
diff
changeset
|
646 | ui_newline(obj); |
|
328
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
647 | |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
648 | ui_progressbar(obj, .colspan = 2, .varname = "progress"); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
649 | ui_set(doc->progress, 0.75); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
650 | ui_newline(obj); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
651 | |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
652 | ui_textfield(obj, .value = doc->str1); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
653 | ui_newline(obj); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
654 | |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
655 | //ui_button(obj, .label="Test"); |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
409
diff
changeset
|
656 | 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
|
657 | ui_set(doc->path, "/test/path/longdirectoryname/123"); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
658 | ui_newline(obj); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
659 | |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
660 | //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
|
661 | //model->getvalue = list_getvalue; |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
662 | ui_combobox(obj, .hexpand = true, .vexpand = false, .colspan = 2, .varname = "list", .getvalue = list_getvalue); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
663 | ui_newline(obj); |
|
489
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
481
diff
changeset
|
664 | char *dropdown[] = { |
|
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
481
diff
changeset
|
665 | "Sun", |
|
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
481
diff
changeset
|
666 | "Apple", |
|
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
481
diff
changeset
|
667 | "IBM", |
|
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
481
diff
changeset
|
668 | "SGI", |
|
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
481
diff
changeset
|
669 | "HP" |
|
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
481
diff
changeset
|
670 | }; |
|
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
481
diff
changeset
|
671 | ui_combobox(obj, .hexpand = true, .vexpand = false, .colspan = 2, .static_elements = dropdown, .static_nelm = 5, .onactivate = action_static_dropdown); |
|
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
481
diff
changeset
|
672 | ui_newline(obj); |
|
328
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
673 | |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
674 | ui_hbox0(obj) { |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
675 | ui_radiobutton(obj, .label = "Radio 1", .varname = "radio"); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
676 | ui_radiobutton(obj, .label = "Radio 2", .varname = "radio"); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
677 | ui_radiobutton(obj, .label = "Radio 3", .varname = "radio"); |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
678 | } |
|
390
b130f80ec7f9
implement list/table contextmenu (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
389
diff
changeset
|
679 | ui_newline(obj); |
|
328
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
680 | } |
|
275
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
681 | } |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
682 | ui_tab(obj, "Tab 1") { |
|
821
2aa2f75f8da4
fix qt build system
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
818
diff
changeset
|
683 | 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); |
|
445
5059f2435775
fix int columns in gtk3 tables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
444
diff
changeset
|
684 | model->columnsize[0] = -1; |
|
673
90a32d739b8e
improve exit behavior (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
666
diff
changeset
|
685 | 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
|
686 | .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
|
687 | .onactivate = action_table_activate, .onactivatedata = "activate", |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
688 | .onselection = action_table_activate, .onselectiondata = "selection"); |
|
673
90a32d739b8e
improve exit behavior (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
666
diff
changeset
|
689 | ui_hbox(obj, .fill = FALSE) { |
|
503
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
690 | ui_textfield(obj, .value = doc->list_input); |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
691 | ui_button(obj, .label = "Update List Item 1", .onclick = action_update_list); |
|
fefdfe7b2fc5
implement single row list updates (GTK)
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
692 | } |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
433
diff
changeset
|
693 | } |
|
331
cdad8b7e83db
implement side navigation tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
328
diff
changeset
|
694 | ui_tab(obj, "Tab 2") { |
|
347
6f0d0b0d97f5
add conditional variable API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
345
diff
changeset
|
695 | 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
|
696 | 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
|
697 | 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
|
698 | 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
|
699 | 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
|
700 | 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
|
701 | } |
|
335
91d4f0391282
add new textarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
333
diff
changeset
|
702 | ui_tab(obj, "Tab 3") { |
|
673
90a32d739b8e
improve exit behavior (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
666
diff
changeset
|
703 | UiTabViewArgs args = {.fill = TRUE}; |
|
594
fc854e0ab924
pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
589
diff
changeset
|
704 | 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
|
705 | UiObject *tab1 = ui_tabview_add(tabview, "Sub 1", -1); |
|
91d4f0391282
add new textarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
333
diff
changeset
|
706 | ui_button(tab1, .label = "Button 1"); |
|
91d4f0391282
add new textarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
333
diff
changeset
|
707 | |
|
91d4f0391282
add new textarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
333
diff
changeset
|
708 | |
|
91d4f0391282
add new textarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
333
diff
changeset
|
709 | UiObject *tab2 = ui_tabview_add(tabview, "Sub 2", -1); |
|
91d4f0391282
add new textarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
333
diff
changeset
|
710 | ui_button(tab2, .label = "Button 2"); |
|
91d4f0391282
add new textarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
333
diff
changeset
|
711 | } |
|
91d4f0391282
add new textarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
333
diff
changeset
|
712 | } |
|
91d4f0391282
add new textarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
333
diff
changeset
|
713 | ui_tab(obj, "Tab 4") { |
|
673
90a32d739b8e
improve exit behavior (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
666
diff
changeset
|
714 | ui_textarea(obj, .varname = "text", .fill = TRUE); |
|
333
634e3ce80afe
implement gtk3 stack tabview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
332
diff
changeset
|
715 | } |
|
339
b68b5f984074
add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
336
diff
changeset
|
716 | ui_tab(obj, "Tab 5") { |
|
b68b5f984074
add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
336
diff
changeset
|
717 | 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
|
718 | 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
|
719 | } |
|
350
70305d427f25
fix ui_scrolledwindow (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
720 | |
|
70305d427f25
fix ui_scrolledwindow (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
721 | ui_tab(obj, "Tab 6") { |
|
673
90a32d739b8e
improve exit behavior (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
666
diff
changeset
|
722 | ui_scrolledwindow(obj, .fill = TRUE) { |
|
354
baf9bcc98d87
add expander container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
352
diff
changeset
|
723 | ui_expander(obj, .label = "Expander", .margin = 10, .spacing = 10) { |
|
baf9bcc98d87
add expander container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
352
diff
changeset
|
724 | ui_label(obj, .label = "Test"); |
|
baf9bcc98d87
add expander container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
352
diff
changeset
|
725 | ui_button(obj, .label = "Button"); |
|
baf9bcc98d87
add expander container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
352
diff
changeset
|
726 | } |
|
803
f0c4322741c8
readd frame subcontainer arg (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
797
diff
changeset
|
727 | |
|
354
baf9bcc98d87
add expander container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
352
diff
changeset
|
728 | 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
|
729 | 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
|
730 | 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
|
731 | 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
|
732 | ui_label(obj, .label = "No Style"); |
|
354
baf9bcc98d87
add expander container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
352
diff
changeset
|
733 | } |
|
803
f0c4322741c8
readd frame subcontainer arg (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
797
diff
changeset
|
734 | |
|
351
63db7e35e2e9
implement scrolledwindow sub container type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
735 | for(int i=0;i<100;i++) { |
|
63db7e35e2e9
implement scrolledwindow sub container type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
736 | char labelstr[32]; |
|
63db7e35e2e9
implement scrolledwindow sub container type (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
737 | snprintf(labelstr, 32, "button %d", i); |
|
804
ce992dbfbc39
implement margin parameters (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
803
diff
changeset
|
738 | 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
|
739 | } |
|
70305d427f25
fix ui_scrolledwindow (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
740 | } |
|
70305d427f25
fix ui_scrolledwindow (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
347
diff
changeset
|
741 | } |
|
422
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
742 | |
|
c1354a29a7e9
add item list container (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
420
diff
changeset
|
743 | ui_tab(obj, "Tab 7") { |
|
673
90a32d739b8e
improve exit behavior (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
666
diff
changeset
|
744 | 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
|
745 | } |
|
456
6712b08e4f74
add new splitpane (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
452
diff
changeset
|
746 | |
|
6712b08e4f74
add new splitpane (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
452
diff
changeset
|
747 | ui_tab(obj, "Tab 8") { |
| 768 | 748 | 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
|
749 | ui_button(obj, .label = "Button 1"); |
|
6712b08e4f74
add new splitpane (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
452
diff
changeset
|
750 | ui_button(obj, .label = "Button 2"); |
|
6712b08e4f74
add new splitpane (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
452
diff
changeset
|
751 | } |
|
6712b08e4f74
add new splitpane (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
452
diff
changeset
|
752 | } |
|
465
00735562b25b
implement hfill/vfill, def_hfill/def_vfill and override_defaults (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
463
diff
changeset
|
753 | ui_tab(obj, "Tab 9") { |
|
463
e8ee57cc052e
prepare webview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
462
diff
changeset
|
754 | #ifdef UI_WEBVIEW |
|
673
90a32d739b8e
improve exit behavior (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
666
diff
changeset
|
755 | ui_webview(obj, .fill = TRUE, .value = doc->web); |
|
468
1f251c462f74
use UiGeneric for WebView
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
465
diff
changeset
|
756 | 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
|
757 | 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
|
758 | #else |
|
490
0206161e92d5
fix gtk3 build and implement new combobox
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
489
diff
changeset
|
759 | ui_label(obj, .label = "Webview is not supported"); |
|
463
e8ee57cc052e
prepare webview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
462
diff
changeset
|
760 | #endif |
|
465
00735562b25b
implement hfill/vfill, def_hfill/def_vfill and override_defaults (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
463
diff
changeset
|
761 | } |
|
00735562b25b
implement hfill/vfill, def_hfill/def_vfill and override_defaults (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
463
diff
changeset
|
762 | 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
|
763 | 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
|
764 | 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
|
765 | 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
|
766 | 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
|
767 | |
|
00735562b25b
implement hfill/vfill, def_hfill/def_vfill and override_defaults (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
463
diff
changeset
|
768 | 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
|
769 | 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
|
770 | 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
|
771 | |
|
00735562b25b
implement hfill/vfill, def_hfill/def_vfill and override_defaults (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
463
diff
changeset
|
772 | 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
|
773 | 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
|
774 | 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
|
775 | } |
|
00735562b25b
implement hfill/vfill, def_hfill/def_vfill and override_defaults (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
463
diff
changeset
|
776 | } |
|
701
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
777 | ui_tab(obj, "Tab 11") { |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
778 | 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
|
779 | 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
|
780 | ui_newline(obj); |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
781 | |
|
729
81b698792386
add ui-nopadding style class (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
723
diff
changeset
|
782 | ui_grid(obj, .rowspacing = 10, .columnspacing = 10) { |
|
81b698792386
add ui-nopadding style class (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
723
diff
changeset
|
783 | ui_rlabel(obj, .label = "Link: ", .vfill = TRUE); |
|
81b698792386
add ui-nopadding style class (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
723
diff
changeset
|
784 | 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
|
785 | ui_newline(obj); |
|
81b698792386
add ui-nopadding style class (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
723
diff
changeset
|
786 | |
|
81b698792386
add ui-nopadding style class (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
723
diff
changeset
|
787 | ui_rlabel(obj, .label = "Test1"); |
|
81b698792386
add ui-nopadding style class (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
723
diff
changeset
|
788 | ui_llabel(obj, .label = "Test2"); |
|
81b698792386
add ui-nopadding style class (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
723
diff
changeset
|
789 | } |
|
704
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
790 | ui_newline(obj); |
|
6105e9d9b7e1
add linkbutton (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
701
diff
changeset
|
791 | |
|
729
81b698792386
add ui-nopadding style class (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
723
diff
changeset
|
792 | ui_vbox(obj, .spacing = 10, .colspan = 2) { |
|
81b698792386
add ui-nopadding style class (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
723
diff
changeset
|
793 | 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
|
794 | 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
|
795 | 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
|
796 | } |
|
701
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
797 | } |
|
6fdec085c385
allow unselection in gtk4 listview
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
673
diff
changeset
|
798 | } |
|
848
5a4b72489111
add new drawingarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
844
diff
changeset
|
799 | ui_tab(obj, "Tab 12") { |
|
5a4b72489111
add new drawingarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
844
diff
changeset
|
800 | ui_drawingarea(obj, .fill = TRUE, .draw = draw); |
|
5a4b72489111
add new drawingarea (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
844
diff
changeset
|
801 | } |
|
260
eebb0626d020
implement grid colspan/rowspan (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
259
diff
changeset
|
802 | } |
|
eebb0626d020
implement grid colspan/rowspan (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
259
diff
changeset
|
803 | |
|
328
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
804 | /* |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
805 | |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
806 | */ |
|
059cba080ab4
implement new tabview (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
322
diff
changeset
|
807 | |
|
133
6dd780cbc8c6
using GtkApplication now
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
127
diff
changeset
|
808 | ui_show(obj); |
|
95
29f5cd5f5367
added drawing area (Gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
94
diff
changeset
|
809 | } |
|
111
40dbf1a7526a
added close handler to UiContext (GTK, Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
110
diff
changeset
|
810 | |
|
29
c96169444d88
added locale support (Cocoa) and ucx update
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
28
diff
changeset
|
811 | int main(int argc, char** argv) { |
|
88
04c81be1c5a0
added textarea (WPF)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
86
diff
changeset
|
812 | ui_init("app1", argc, argv); |
|
133
6dd780cbc8c6
using GtkApplication now
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
127
diff
changeset
|
813 | ui_onstartup(application_startup, NULL); |
|
88
04c81be1c5a0
added textarea (WPF)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
86
diff
changeset
|
814 | |
|
789
d70799b3333e
add new toolbar positions for splitview windows
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
783
diff
changeset
|
815 | 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
|
816 | 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
|
817 | |
|
133
6dd780cbc8c6
using GtkApplication now
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
127
diff
changeset
|
818 | // menu |
|
255
ebdce2bb62be
minimal working menubar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
253
diff
changeset
|
819 | ui_menu("File") { |
|
ebdce2bb62be
minimal working menubar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
253
diff
changeset
|
820 | ui_menuitem(.label = "Test"); |
|
ebdce2bb62be
minimal working menubar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
253
diff
changeset
|
821 | } |
|
253
087cc9216f28
initial newapi GTK port
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
174
diff
changeset
|
822 | |
|
388
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
823 | ui_contextmenu(&menubuilder) { |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
824 | ui_menuitem(.label = "Context Item 1"); |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
825 | ui_menuitem(.label = "Context Item 2"); |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
826 | ui_menu("Context Submenu") { |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
827 | ui_menuitem(.label = "Context Sub Item"); |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
828 | } |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
829 | } |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
830 | |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
831 | ui_menu("Edit") { |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
832 | ui_menuitem(.label = "Undo"); |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
833 | ui_menuseparator(); |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
834 | ui_menu("Submenu") { |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
835 | ui_menuitem(.label = "Subitem"); |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
836 | } |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
837 | } |
|
473c03f85197
add menu builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
383
diff
changeset
|
838 | |
|
308
4efc7c19e31d
simplify gtk button code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
306
diff
changeset
|
839 | 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
|
840 | 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
|
841 | 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
|
842 | 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
|
843 | 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
|
844 | 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
|
845 | 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
|
846 | 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
|
847 | 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
|
848 | ui_menu("Secondary Sub") { |
|
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
849 | ui_menuitem("Secondary subitem", NULL, NULL); |
|
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
850 | } |
|
322
22f6dadd9f46
implement ui_menuseparator (GTK4)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
320
diff
changeset
|
851 | ui_menuseparator(); |
|
311
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
852 | 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
|
853 | ui_menuseparator(); |
|
797
47008843b468
fix global menu list binding
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
789
diff
changeset
|
854 | ui_menu("Sub Menu List") { |
|
47008843b468
fix global menu list binding
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
789
diff
changeset
|
855 | ui_menu_itemlist(.varname = "sub_menulist"); |
|
47008843b468
fix global menu list binding
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
789
diff
changeset
|
856 | } |
|
311
450a813dc2a5
implement GTK4 gmenu item and item list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
310
diff
changeset
|
857 | ui_menuitem("last", .onclick = action_add_menu_item); |
|
275
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
858 | } |
|
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
859 | |
|
322
22f6dadd9f46
implement ui_menuseparator (GTK4)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
320
diff
changeset
|
860 | ui_toolbar_appmenu() { |
|
22f6dadd9f46
implement ui_menuseparator (GTK4)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
320
diff
changeset
|
861 | ui_menuitem("New"); |
|
22f6dadd9f46
implement ui_menuseparator (GTK4)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
320
diff
changeset
|
862 | ui_menuitem("Open"); |
|
22f6dadd9f46
implement ui_menuseparator (GTK4)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
320
diff
changeset
|
863 | ui_menuitem("Save"); |
|
22f6dadd9f46
implement ui_menuseparator (GTK4)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
320
diff
changeset
|
864 | |
|
22f6dadd9f46
implement ui_menuseparator (GTK4)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
320
diff
changeset
|
865 | ui_menuseparator(); |
|
849
63623ef950e5
implement gtk4 menu radio items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
848
diff
changeset
|
866 | 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
|
867 | 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
|
868 | 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
|
869 | ui_menuseparator(); |
|
322
22f6dadd9f46
implement ui_menuseparator (GTK4)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
320
diff
changeset
|
870 | |
|
22f6dadd9f46
implement ui_menuseparator (GTK4)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
320
diff
changeset
|
871 | ui_menuitem("Close"); |
|
22f6dadd9f46
implement ui_menuseparator (GTK4)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
320
diff
changeset
|
872 | } |
|
22f6dadd9f46
implement ui_menuseparator (GTK4)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
320
diff
changeset
|
873 | |
|
275
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
874 | ui_toolbar_add_default("Test", UI_TOOLBAR_LEFT); |
|
306
d02e1149cdb9
add headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
304
diff
changeset
|
875 | ui_toolbar_add_default("Test6", UI_TOOLBAR_LEFT); |
|
275
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
876 | ui_toolbar_add_default("Toggle", UI_TOOLBAR_LEFT); |
|
132c7bcc6997
implement new toolbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
877 | ui_toolbar_add_default("Menu", UI_TOOLBAR_LEFT); |
|
89
9a7e4a335b2b
added toolbar (WPF)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
88
diff
changeset
|
878 | |
|
306
d02e1149cdb9
add headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
304
diff
changeset
|
879 | ui_toolbar_add_default("Test2", UI_TOOLBAR_CENTER); |
|
d02e1149cdb9
add headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
304
diff
changeset
|
880 | ui_toolbar_add_default("Test3", UI_TOOLBAR_CENTER); |
|
d02e1149cdb9
add headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
304
diff
changeset
|
881 | |
|
d02e1149cdb9
add headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
304
diff
changeset
|
882 | ui_toolbar_add_default("Test4", UI_TOOLBAR_RIGHT); |
|
d02e1149cdb9
add headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
304
diff
changeset
|
883 | ui_toolbar_add_default("Test5", UI_TOOLBAR_RIGHT); |
|
d02e1149cdb9
add headerbar (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
304
diff
changeset
|
884 | |
|
88
04c81be1c5a0
added textarea (WPF)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
86
diff
changeset
|
885 | ui_main(); |
|
29
c96169444d88
added locale support (Cocoa) and ucx update
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
28
diff
changeset
|
886 | |
| 0 | 887 | return (EXIT_SUCCESS); |
| 888 | } | |
|
404
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
889 | |
|
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
890 | #endif |
|
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
891 | |
|
554
28e490aa15e3
implement new text functions (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
553
diff
changeset
|
892 | #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
|
893 | |
|
420
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
894 | static UiList *menulist; |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
895 | int items = 4; |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
896 | |
|
406
0ebf9d7b23e8
add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
404
diff
changeset
|
897 | 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
|
898 | printf("action_button\n"); |
|
420
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
899 | |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
900 | char *newitem = malloc(32); |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
901 | snprintf(newitem, 32, "Item %d", ++items); |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
902 | ui_list_append(menulist, newitem); |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
903 | 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
|
904 | } |
|
404
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
905 | |
|
414
ef60d527c066
add text field widgets (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
906 | typedef struct WData { |
|
461
b480e133b576
implement missing tabview functions (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
460
diff
changeset
|
907 | UIWIDGET tabview; |
|
b480e133b576
implement missing tabview functions (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
460
diff
changeset
|
908 | |
|
414
ef60d527c066
add text field widgets (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
909 | UiString *path; |
|
427
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
910 | UiList *list; |
|
433
605bb5dc34f1
implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
429
diff
changeset
|
911 | UiInteger *spinner; |
|
475
8e06a446d552
implement tabview UiInteger binding (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
468
diff
changeset
|
912 | UiInteger *tab; |
|
414
ef60d527c066
add text field widgets (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
913 | } WData; |
|
ef60d527c066
add text field widgets (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
914 | |
|
420
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
915 | |
|
427
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
916 | int lsitems = 4; |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
917 | |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
918 | void action_button2(UiEvent *event, void *data) { |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
919 | WData *wdata = event->window; |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
920 | char *newitem = malloc(32); |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
921 | snprintf(newitem, 32, "List Item %d", ++lsitems); |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
922 | ui_list_append(wdata->list, newitem); |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
923 | ui_list_update(wdata->list); |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
924 | UiListSelection sel; |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
925 | int index = lsitems-1; |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
926 | sel.count = 1; |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
927 | sel.rows = &index; |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
928 | wdata->list->setselection(wdata->list, sel); |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
929 | } |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
930 | |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
931 | void action_listevent(UiEvent *event, void *data) { |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
932 | printf("%s: %d\n", data, event->intval); |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
933 | UiListSelection *sel = event->eventdata; |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
934 | for(int i=0;i<sel->count;i++) { |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
935 | printf("sel: %d\n", sel->rows[i]); |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
936 | } |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
937 | printf("\n"); |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
938 | } |
|
420
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
939 | |
|
461
b480e133b576
implement missing tabview functions (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
460
diff
changeset
|
940 | 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
|
941 | WData *wdata = event->window; |
|
b480e133b576
implement missing tabview functions (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
460
diff
changeset
|
942 | printf("remove tab 3\n"); |
|
b480e133b576
implement missing tabview functions (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
460
diff
changeset
|
943 | ui_tabview_remove(wdata->tabview, 2); |
|
b480e133b576
implement missing tabview functions (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
460
diff
changeset
|
944 | } |
|
b480e133b576
implement missing tabview functions (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
460
diff
changeset
|
945 | |
|
475
8e06a446d552
implement tabview UiInteger binding (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
468
diff
changeset
|
946 | 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
|
947 | WData *wdata = event->window; |
|
8e06a446d552
implement tabview UiInteger binding (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
468
diff
changeset
|
948 | int index = ui_get(wdata->tab); |
|
8e06a446d552
implement tabview UiInteger binding (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
468
diff
changeset
|
949 | ui_set(wdata->tab, index+1); |
|
8e06a446d552
implement tabview UiInteger binding (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
468
diff
changeset
|
950 | } |
|
8e06a446d552
implement tabview UiInteger binding (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
468
diff
changeset
|
951 | |
|
404
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
952 | void application_startup(UiEvent *event, void *data) { |
|
420
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
953 | |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
954 | menulist = ui_list_new(ui_global_context(), "menulist"); |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
955 | ui_list_append(menulist, "Item 1"); |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
956 | ui_list_append(menulist, "Item 2"); |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
957 | ui_list_append(menulist, "Item 3"); |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
958 | ui_list_append(menulist, "Item 4"); |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
959 | |
|
406
0ebf9d7b23e8
add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
404
diff
changeset
|
960 | UiObject *obj = ui_window("Test", NULL); |
|
407
8ea123dd89db
semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
406
diff
changeset
|
961 | |
|
414
ef60d527c066
add text field widgets (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
962 | WData *wdata = ui_malloc(obj->ctx, sizeof(WData)); |
|
ef60d527c066
add text field widgets (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
963 | wdata->path = ui_string_new(obj->ctx, NULL); |
|
427
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
964 | wdata->list = ui_list_new(obj->ctx, NULL); |
|
433
605bb5dc34f1
implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
429
diff
changeset
|
965 | 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
|
966 | wdata->tab = ui_int_new(obj->ctx, NULL); |
|
414
ef60d527c066
add text field widgets (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
967 | obj->window = wdata; |
|
ef60d527c066
add text field widgets (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
968 | |
|
427
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
969 | ui_list_append(wdata->list, "List Item 1"); |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
970 | ui_list_append(wdata->list, "List Item 2"); |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
971 | ui_list_append(wdata->list, "List Item 3"); |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
972 | 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
|
973 | |
|
452
a0620cf552a6
add first code for motif tabview (incomplete)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
445
diff
changeset
|
974 | /* |
|
427
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
975 | 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
|
976 | 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
|
977 | ui_hbox0(obj) { |
|
605bb5dc34f1
implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
429
diff
changeset
|
978 | ui_progressbar(obj, .name = "pb", .fill = UI_ON); |
|
605bb5dc34f1
implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
429
diff
changeset
|
979 | ui_progressspinner(obj, .value = wdata->spinner); |
|
605bb5dc34f1
implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
429
diff
changeset
|
980 | } |
|
427
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
981 | 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
|
982 | .onactivate = action_listevent, .onactivatedata = "activate", |
|
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
983 | .onselection = action_listevent, .onselectiondata = "selection"); |
|
452
a0620cf552a6
add first code for motif tabview (incomplete)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
445
diff
changeset
|
984 | */ |
|
a0620cf552a6
add first code for motif tabview (incomplete)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
445
diff
changeset
|
985 | |
|
475
8e06a446d552
implement tabview UiInteger binding (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
468
diff
changeset
|
986 | ui_button(obj, .label = "Next Tab", .onclick = action_next_tab); |
|
8e06a446d552
implement tabview UiInteger binding (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
468
diff
changeset
|
987 | ui_tabview_w(obj, wdata->tabview, .tabview = UI_TABVIEW_INVISIBLE, .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
|
988 | ui_tab(obj, "Tab 1") { |
|
a0620cf552a6
add first code for motif tabview (incomplete)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
445
diff
changeset
|
989 | ui_textarea(obj, .varname = "text", .fill = UI_ON); |
|
a0620cf552a6
add first code for motif tabview (incomplete)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
445
diff
changeset
|
990 | } |
|
a0620cf552a6
add first code for motif tabview (incomplete)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
445
diff
changeset
|
991 | |
|
a0620cf552a6
add first code for motif tabview (incomplete)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
445
diff
changeset
|
992 | ui_tab(obj, "Tab 2") { |
|
462
9e499276136a
add combobox (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
461
diff
changeset
|
993 | ui_combobox(obj, .list = wdata->list); |
|
481
bead55b1e6ca
add separator (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
475
diff
changeset
|
994 | ui_label(obj, .label = "Test"); |
|
bead55b1e6ca
add separator (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
475
diff
changeset
|
995 | ui_separator(obj, .name = "s1"); |
|
452
a0620cf552a6
add first code for motif tabview (incomplete)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
445
diff
changeset
|
996 | } |
|
460
1274d84f44de
finish minimal tabview implementation (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
456
diff
changeset
|
997 | |
|
1274d84f44de
finish minimal tabview implementation (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
456
diff
changeset
|
998 | ui_tab(obj, "Tab 3") { |
|
461
b480e133b576
implement missing tabview functions (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
460
diff
changeset
|
999 | ui_button(obj, .label = "Test Tab 3", .onclick = action_remove_tab3); |
|
460
1274d84f44de
finish minimal tabview implementation (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
456
diff
changeset
|
1000 | } |
|
452
a0620cf552a6
add first code for motif tabview (incomplete)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
445
diff
changeset
|
1001 | } |
|
427
7ead63398a50
implement listview (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
426
diff
changeset
|
1002 | |
|
406
0ebf9d7b23e8
add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
404
diff
changeset
|
1003 | |
|
0ebf9d7b23e8
add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
404
diff
changeset
|
1004 | ui_show(obj); |
|
433
605bb5dc34f1
implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
429
diff
changeset
|
1005 | |
|
605bb5dc34f1
implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
429
diff
changeset
|
1006 | ui_set(wdata->spinner, 1); |
|
404
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
1007 | } |
|
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
1008 | |
|
417
f0fee61a70be
implement menu item callbacks (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
416
diff
changeset
|
1009 | void action_test(UiEvent *event, void *data) { |
|
f0fee61a70be
implement menu item callbacks (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
416
diff
changeset
|
1010 | printf("action test\n"); |
|
f0fee61a70be
implement menu item callbacks (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
416
diff
changeset
|
1011 | } |
|
f0fee61a70be
implement menu item callbacks (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
416
diff
changeset
|
1012 | |
|
404
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
1013 | int main(int argc, char** argv) { |
|
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
1014 | ui_init("app1", argc, argv); |
|
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
1015 | ui_onstartup(application_startup, NULL); |
|
416
89ad8467c39f
implement motif menu/menu item
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
1016 | |
|
89ad8467c39f
implement motif menu/menu item
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
1017 | // menu |
|
89ad8467c39f
implement motif menu/menu item
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
1018 | ui_menu("File") { |
|
417
f0fee61a70be
implement menu item callbacks (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
416
diff
changeset
|
1019 | ui_menuitem(.label = "Test 1", .onclick = action_test); |
|
f0fee61a70be
implement menu item callbacks (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
416
diff
changeset
|
1020 | ui_menuitem(.label = "Test 2", .onclick = action_test); |
|
f0fee61a70be
implement menu item callbacks (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
416
diff
changeset
|
1021 | ui_menuitem(.label = "Test 3", .onclick = action_test); |
|
420
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
1022 | ui_menuseparator(); |
|
419
7d15cad351fc
add menu toggle/radio button (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
417
diff
changeset
|
1023 | ui_menu_toggleitem(.label = "Toggle 1"); |
|
7d15cad351fc
add menu toggle/radio button (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
417
diff
changeset
|
1024 | ui_menu_toggleitem(.label = "Toggle 2"); |
|
420
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
1025 | ui_menuseparator(); |
|
419
7d15cad351fc
add menu toggle/radio button (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
417
diff
changeset
|
1026 | 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
|
1027 | 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
|
1028 | 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
|
1029 | 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
|
1030 | ui_menuseparator(); |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
1031 | ui_menu_itemlist(.varname = "menulist"); |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
1032 | ui_menuseparator(); |
|
28a5920bebe0
implement menu itemlist (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
419
diff
changeset
|
1033 | ui_menuitem(.label = "Quit"); |
|
416
89ad8467c39f
implement motif menu/menu item
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
1034 | } |
|
89ad8467c39f
implement motif menu/menu item
Olaf Winermann <olaf.wintermann@gmail.com>
parents:
414
diff
changeset
|
1035 | |
|
404
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
1036 | ui_main(); |
|
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
1037 | return (EXIT_SUCCESS); |
|
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
1038 | } |
|
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
1039 | |
|
384f6d1f5784
add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
402
diff
changeset
|
1040 | #endif |
|
510
9f562a7de4a2
prepare buildsystem for win32
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
503
diff
changeset
|
1041 | |
|
516
4b31c74666d7
remove old Qt code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
510
diff
changeset
|
1042 | #ifdef UI_QT |
|
4b31c74666d7
remove old Qt code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
510
diff
changeset
|
1043 | |
|
579
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1044 | static void list_activate(UiEvent *event, void *userdata) { |
|
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1045 | UiListSelection *sel = event->eventdata; |
|
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1046 | printf("selection [%d]\n", sel->rows[0]); |
|
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1047 | } |
|
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1048 | |
|
582
6c86efe60b37
implement table (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
579
diff
changeset
|
1049 | void* table_getvalue(void *elm, int col) { |
|
6c86efe60b37
implement table (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
579
diff
changeset
|
1050 | char *s = elm; |
|
6c86efe60b37
implement table (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
579
diff
changeset
|
1051 | if(col == 0) { |
|
6c86efe60b37
implement table (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
579
diff
changeset
|
1052 | return s; |
|
6c86efe60b37
implement table (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
579
diff
changeset
|
1053 | } else { |
|
585
e71867b33bfd
fix wrong value interpretation for UI_INTEGER
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
582
diff
changeset
|
1054 | return (void*)(intptr_t)12; |
|
582
6c86efe60b37
implement table (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
579
diff
changeset
|
1055 | } |
|
6c86efe60b37
implement table (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
579
diff
changeset
|
1056 | } |
|
6c86efe60b37
implement table (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
579
diff
changeset
|
1057 | |
|
518
45ed276ba7a4
use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
517
diff
changeset
|
1058 | void application_startup(UiEvent *event, void *data) { |
|
519
8884c7fbe4cb
add box container (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
518
diff
changeset
|
1059 | UiObject *obj = ui_window("My Window", NULL); |
|
579
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1060 | |
|
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1061 | UiList *list = ui_list_new(obj->ctx, "mylist"); |
|
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1062 | ui_list_append(list, "Entry 1"); |
|
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1063 | ui_list_append(list, "Entry 2"); |
|
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1064 | ui_list_append(list, "Entry 3"); |
|
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1065 | ui_list_append(list, "Entry 4"); |
|
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1066 | ui_list_append(list, "Entry 5"); |
|
810b848e2e4f
implement listview (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
575
diff
changeset
|
1067 | |
|
522
bb0d05f45046
add grid container (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
520
diff
changeset
|
1068 | ui_grid(obj, .margin = 10, .columnspacing = 10, .rowspacing = 10) { |
|
bb0d05f45046
add grid container (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
520
diff
changeset
|
1069 | ui_button(obj, .label = "Button 1"); |
|
525
878df45e6441
implement all grid layout features (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
522
diff
changeset
|
1070 | 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
|
1071 | ui_button(obj, .label = "Button end"); |
|
522
bb0d05f45046
add grid container (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
520
diff
changeset
|
1072 | ui_newline(obj); |
|
bb0d05f45046
add grid container (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
520
diff
changeset
|
1073 | |
|
527
7273a78e8e5b
add textarea (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
526
diff
changeset
|
1074 | ui_textarea(obj, .vexpand = TRUE, .vfill = TRUE); |
|
582
6c86efe60b37
implement table (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
579
diff
changeset
|
1075 | |
|
6c86efe60b37
implement table (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
579
diff
changeset
|
1076 | 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
|
1077 | model->columnsize[0] = -1; |
| 723 | 1078 | 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
|
1079 | |
|
525
878df45e6441
implement all grid layout features (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
522
diff
changeset
|
1080 | ui_newline(obj); |
|
878df45e6441
implement all grid layout features (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
522
diff
changeset
|
1081 | |
|
878df45e6441
implement all grid layout features (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
522
diff
changeset
|
1082 | ui_button(obj, .label = "Button Y"); |
|
526
f6a6b0b08641
add togglebutton and checkbox (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
525
diff
changeset
|
1083 | ui_checkbox(obj, .label = "Checkbox"); |
|
761
b963af4aac40
implement spinbox min/max args (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
754
diff
changeset
|
1084 | ui_spinbox(obj, .digits = 2); |
|
550
0412c4c1048e
implement radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
537
diff
changeset
|
1085 | ui_newline(obj); |
|
0412c4c1048e
implement radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
537
diff
changeset
|
1086 | |
|
0412c4c1048e
implement radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
537
diff
changeset
|
1087 | ui_hbox(obj, .colspan = 3) { |
|
0412c4c1048e
implement radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
537
diff
changeset
|
1088 | ui_radiobutton(obj, .label = "Radio 1", .varname = "radio"); |
|
0412c4c1048e
implement radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
537
diff
changeset
|
1089 | ui_radiobutton(obj, .label = "Radio 2", .varname = "radio"); |
|
0412c4c1048e
implement radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
537
diff
changeset
|
1090 | ui_radiobutton(obj, .label = "Radio 3", .varname = "radio"); |
|
0412c4c1048e
implement radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
537
diff
changeset
|
1091 | ui_radiobutton(obj, .label = "Radio 4", .varname = "radio"); |
|
0412c4c1048e
implement radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
537
diff
changeset
|
1092 | } |
|
822
54e43e4efac2
implement widget margin (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
821
diff
changeset
|
1093 | ui_newline(obj); |
|
54e43e4efac2
implement widget margin (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
821
diff
changeset
|
1094 | |
|
54e43e4efac2
implement widget margin (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
821
diff
changeset
|
1095 | ui_hbox(obj, .colspan = 3) { |
|
54e43e4efac2
implement widget margin (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
821
diff
changeset
|
1096 | 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
|
1097 | 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
|
1098 | 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
|
1099 | //ui_set_visible(w, FALSE); |
|
54e43e4efac2
implement widget margin (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
821
diff
changeset
|
1100 | 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
|
1101 | 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
|
1102 | 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
|
1103 | } |
|
522
bb0d05f45046
add grid container (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
520
diff
changeset
|
1104 | } |
|
519
8884c7fbe4cb
add box container (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
518
diff
changeset
|
1105 | ui_show(obj); |
|
518
45ed276ba7a4
use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
517
diff
changeset
|
1106 | } |
|
45ed276ba7a4
use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
517
diff
changeset
|
1107 | |
|
516
4b31c74666d7
remove old Qt code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
510
diff
changeset
|
1108 | 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
|
1109 | ui_init("app1", 0, NULL); |
|
45ed276ba7a4
use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
517
diff
changeset
|
1110 | 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
|
1111 | |
|
ede57f5b6178
add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
532
diff
changeset
|
1112 | // menu |
|
ede57f5b6178
add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
532
diff
changeset
|
1113 | 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
|
1114 | 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
|
1115 | } |
|
ede57f5b6178
add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
532
diff
changeset
|
1116 | |
|
ede57f5b6178
add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
532
diff
changeset
|
1117 | 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
|
1118 | ui_menuitem(.label = "Undo"); |
|
536
4a1c2eae4bcd
implement menu toggleitem (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
535
diff
changeset
|
1119 | 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
|
1120 | ui_menuseparator(); |
|
537
81e46644f1aa
implement menu radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
536
diff
changeset
|
1121 | ui_menu_radioitem(.label = "Option 1", .varname = "menuoption"); |
|
81e46644f1aa
implement menu radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
536
diff
changeset
|
1122 | ui_menu_radioitem(.label = "Option 2", .varname = "menuoption"); |
|
81e46644f1aa
implement menu radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
536
diff
changeset
|
1123 | ui_menu_radioitem(.label = "Option 3", .varname = "menuoption"); |
|
81e46644f1aa
implement menu radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
536
diff
changeset
|
1124 | ui_menu_radioitem(.label = "Option 4", .varname = "menuoption"); |
|
81e46644f1aa
implement menu radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
536
diff
changeset
|
1125 | 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
|
1126 | 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
|
1127 | 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
|
1128 | } |
|
ede57f5b6178
add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
532
diff
changeset
|
1129 | } |
|
574
19de5292f08f
add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
560
diff
changeset
|
1130 | |
|
19de5292f08f
add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
560
diff
changeset
|
1131 | ui_toolbar_item("new", .label = "New"); |
|
19de5292f08f
add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
560
diff
changeset
|
1132 | ui_toolbar_item("add", .label = "Add"); |
|
19de5292f08f
add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
560
diff
changeset
|
1133 | ui_toolbar_item("copy", .label = "Copy"); |
|
19de5292f08f
add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
560
diff
changeset
|
1134 | ui_toolbar_item("paste", .label = "Paste"); |
|
575
50da9696a865
implement toolbar icons and events (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
574
diff
changeset
|
1135 | ui_toolbar_toggleitem("toggle", .label = "Toggle"); |
|
574
19de5292f08f
add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
560
diff
changeset
|
1136 | |
|
19de5292f08f
add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
560
diff
changeset
|
1137 | ui_toolbar_add_default("new", UI_TOOLBAR_LEFT); |
|
19de5292f08f
add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
560
diff
changeset
|
1138 | ui_toolbar_add_default("add", UI_TOOLBAR_LEFT); |
|
19de5292f08f
add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
560
diff
changeset
|
1139 | ui_toolbar_add_default("copy", UI_TOOLBAR_LEFT); |
|
19de5292f08f
add toolbar (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
560
diff
changeset
|
1140 | 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
|
1141 | 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
|
1142 | |
|
45ed276ba7a4
use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
517
diff
changeset
|
1143 | ui_main(); |
|
45ed276ba7a4
use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
517
diff
changeset
|
1144 | |
|
516
4b31c74666d7
remove old Qt code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
510
diff
changeset
|
1145 | return 0; |
|
4b31c74666d7
remove old Qt code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
510
diff
changeset
|
1146 | } |
|
4b31c74666d7
remove old Qt code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
510
diff
changeset
|
1147 | |
|
4b31c74666d7
remove old Qt code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
510
diff
changeset
|
1148 | #endif |
|
4b31c74666d7
remove old Qt code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
510
diff
changeset
|
1149 | |
|
510
9f562a7de4a2
prepare buildsystem for win32
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
503
diff
changeset
|
1150 | #ifdef UI_WIN32 |
|
9f562a7de4a2
prepare buildsystem for win32
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
503
diff
changeset
|
1151 | |
|
825
1bac7e45712b
implement button onclick event (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
822
diff
changeset
|
1152 | static void action_button(UiEvent *event, void *data) { |
|
1bac7e45712b
implement button onclick event (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
822
diff
changeset
|
1153 | printf("button clicked\n"); |
|
1bac7e45712b
implement button onclick event (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
822
diff
changeset
|
1154 | } |
|
1bac7e45712b
implement button onclick event (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
822
diff
changeset
|
1155 | |
|
513
a4e0ef98a8b4
implement first toolkit functions (WIN32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
512
diff
changeset
|
1156 | void application_startup(UiEvent *event, void *data) { |
|
666
86c3f109ed3b
fix wrong w32 string type
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
658
diff
changeset
|
1157 | UiObject *obj = ui_window("Test w32", NULL); |
|
841
651cf2c59dd9
implement ui_grid_create (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
825
diff
changeset
|
1158 | |
|
651cf2c59dd9
implement ui_grid_create (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
825
diff
changeset
|
1159 | ui_grid(obj, .margin = 10, .columnspacing = 10, .rowspacing = 10, .fill = TRUE) { |
|
651cf2c59dd9
implement ui_grid_create (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
825
diff
changeset
|
1160 | ui_button(obj, .label = "Test", .hfill = TRUE, .hexpand = TRUE, .colspan = 3, .margin = 10); |
|
651cf2c59dd9
implement ui_grid_create (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
825
diff
changeset
|
1161 | ui_newline(obj); |
|
651cf2c59dd9
implement ui_grid_create (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
825
diff
changeset
|
1162 | |
|
651cf2c59dd9
implement ui_grid_create (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
825
diff
changeset
|
1163 | ui_button(obj, .label = "Test 2-1"); |
|
651cf2c59dd9
implement ui_grid_create (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
825
diff
changeset
|
1164 | ui_button(obj, .label = "Test 2-2"); |
|
651cf2c59dd9
implement ui_grid_create (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
825
diff
changeset
|
1165 | ui_button(obj, .label = "Test 2-3"); |
|
651cf2c59dd9
implement ui_grid_create (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
825
diff
changeset
|
1166 | ui_newline(obj); |
|
651cf2c59dd9
implement ui_grid_create (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
825
diff
changeset
|
1167 | |
|
651cf2c59dd9
implement ui_grid_create (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
825
diff
changeset
|
1168 | ui_button(obj, .label = "Test 3XX", .colspan = 3, .fill = TRUE, .onclick = action_button); |
|
844
3106d9ca2f9c
fix wrong child height in grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
841
diff
changeset
|
1169 | ui_newline(obj); |
|
3106d9ca2f9c
fix wrong child height in grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
841
diff
changeset
|
1170 | |
|
3106d9ca2f9c
fix wrong child height in grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
841
diff
changeset
|
1171 | ui_button(obj, .label = "End"); |
|
841
651cf2c59dd9
implement ui_grid_create (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
825
diff
changeset
|
1172 | } |
|
651cf2c59dd9
implement ui_grid_create (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
825
diff
changeset
|
1173 | |
|
651cf2c59dd9
implement ui_grid_create (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
825
diff
changeset
|
1174 | |
|
651cf2c59dd9
implement ui_grid_create (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
825
diff
changeset
|
1175 | |
|
813
6d9066951cdb
implement ui_show (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
804
diff
changeset
|
1176 | ui_show(obj); |
|
513
a4e0ef98a8b4
implement first toolkit functions (WIN32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
512
diff
changeset
|
1177 | } |
|
a4e0ef98a8b4
implement first toolkit functions (WIN32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
512
diff
changeset
|
1178 | |
|
512
3cb2587f8891
fix win32 build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
510
diff
changeset
|
1179 | 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
|
1180 | //int main() { |
|
513
a4e0ef98a8b4
implement first toolkit functions (WIN32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
512
diff
changeset
|
1181 | ui_init("app1", 0, NULL); |
|
a4e0ef98a8b4
implement first toolkit functions (WIN32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
512
diff
changeset
|
1182 | ui_onstartup(application_startup, NULL); |
|
a4e0ef98a8b4
implement first toolkit functions (WIN32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
512
diff
changeset
|
1183 | |
|
a4e0ef98a8b4
implement first toolkit functions (WIN32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
512
diff
changeset
|
1184 | ui_main(); |
|
a4e0ef98a8b4
implement first toolkit functions (WIN32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
512
diff
changeset
|
1185 | |
|
510
9f562a7de4a2
prepare buildsystem for win32
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
503
diff
changeset
|
1186 | return 0; |
|
9f562a7de4a2
prepare buildsystem for win32
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
503
diff
changeset
|
1187 | } |
|
9f562a7de4a2
prepare buildsystem for win32
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
503
diff
changeset
|
1188 | |
|
9f562a7de4a2
prepare buildsystem for win32
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
503
diff
changeset
|
1189 | #endif |
|
513
a4e0ef98a8b4
implement first toolkit functions (WIN32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
512
diff
changeset
|
1190 |