make/xcode/toolkit/toolkit/main.m

Sun, 24 Aug 2025 11:14:31 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sun, 24 Aug 2025 11:14:31 +0200
changeset 717
c35b2f18841c
parent 716
99386f34efc9
child 719
6963d97a38d3
permissions
-rw-r--r--

add combobox (Cocoa)

404
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 /*
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 *
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
4 * Copyright 2024 Olaf Wintermann. All rights reserved.
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
5 *
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
8 *
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
11 *
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
15 *
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
27 */
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
28
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
29 #import <Cocoa/Cocoa.h>
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
30
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
31 #include <ui/ui.h>
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
32
707
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
33 typedef struct WindowData {
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
34 UiInteger *tbtoggle;
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
35 } WindowData;
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
36
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
37 typedef struct MyDocument {
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
38 UiInteger *tbtoggle;
711
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 710
diff changeset
39 UiList *list1;
717
c35b2f18841c add combobox (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 716
diff changeset
40 UiList *list2;
707
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
41 } MyDocument;
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
42
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
43 MyDocument* create_doc(void) {
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
44 MyDocument *doc = ui_document_new(sizeof(MyDocument));
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
45 UiContext *ctx = ui_document_context(doc);
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
46 doc->tbtoggle = ui_int_new(ctx, "tbtoggle");
711
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 710
diff changeset
47 doc->list1 = ui_list_new(ctx, "list1");
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 710
diff changeset
48 ui_list_append(doc->list1, "Item 1");
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 710
diff changeset
49 ui_list_append(doc->list1, "Item 2");
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 710
diff changeset
50 ui_list_append(doc->list1, "Item 3");
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 710
diff changeset
51 ui_list_append(doc->list1, "Item 4");
717
c35b2f18841c add combobox (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 716
diff changeset
52
c35b2f18841c add combobox (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 716
diff changeset
53 doc->list2 = ui_list_new(ctx, "list2");
c35b2f18841c add combobox (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 716
diff changeset
54 ui_list_append(doc->list2, "Option 1");
c35b2f18841c add combobox (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 716
diff changeset
55 ui_list_append(doc->list2, "Option 2");
c35b2f18841c add combobox (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 716
diff changeset
56 ui_list_append(doc->list2, "Option 3");
c35b2f18841c add combobox (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 716
diff changeset
57 ui_list_append(doc->list2, "Option 4");
c35b2f18841c add combobox (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 716
diff changeset
58 ui_list_append(doc->list2, "Option 5");
c35b2f18841c add combobox (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 716
diff changeset
59 ui_list_append(doc->list2, "Option 6");
c35b2f18841c add combobox (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 716
diff changeset
60
707
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
61 return doc;
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
62 }
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
63
404
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
64 static void action_button(UiEvent *event, void *userdata) {
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
65 printf("button click\n");
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
66 }
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
67
687
d43b4fcd3d8c add support for toolbar icons (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 677
diff changeset
68 static void toolbar_action(UiEvent *event, void *userdata) {
d43b4fcd3d8c add support for toolbar icons (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 677
diff changeset
69 printf("toolbar item\n");
d43b4fcd3d8c add support for toolbar icons (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 677
diff changeset
70 }
d43b4fcd3d8c add support for toolbar icons (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 677
diff changeset
71
707
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
72 static void toolbar_toggle(UiEvent *event, void *userdata) {
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
73 MyDocument *doc = event->document;
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
74 int i = (int)(doc ? ui_get(doc->tbtoggle) : -1);
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
75 printf("toolbar toggle button %d %d\n", event->intval, i);
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
76 }
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
77
708
0598e70c6489 add toolbar menu item (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 707
diff changeset
78 static void action_menuitem(UiEvent *event, void *userdata) {
0598e70c6489 add toolbar menu item (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 707
diff changeset
79 printf("menuitem\n");
0598e70c6489 add toolbar menu item (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 707
diff changeset
80 }
0598e70c6489 add toolbar menu item (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 707
diff changeset
81
711
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 710
diff changeset
82 static void action_list_selection(UiEvent *event, void *userdata) {
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 710
diff changeset
83 printf("selection\n");
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 710
diff changeset
84 }
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 710
diff changeset
85
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 710
diff changeset
86 static void action_list_activate(UiEvent *event, void *userdata) {
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 710
diff changeset
87 printf("activate\n");
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 710
diff changeset
88 }
673e7e41c93e add minimally working listview (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 710
diff changeset
89
715
2082c80fb010 add table widget (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 713
diff changeset
90 static void* table_getvalue(void *elm, int col) {
2082c80fb010 add table widget (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 713
diff changeset
91 return elm;
2082c80fb010 add table widget (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 713
diff changeset
92 }
2082c80fb010 add table widget (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 713
diff changeset
93
404
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
94 void application_startup(UiEvent *event, void *data) {
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
95 UiObject *obj = ui_window("My Window", NULL);
707
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
96 //WindowData *wdata = ui_malloc(obj->ctx, sizeof(WindowData));
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
97 //wdata->tbtoggle = ui_int_new(obj->ctx, "tbtoggle");
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
98 //obj->window = wdata;
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
99 MyDocument *doc = create_doc();
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
100 ui_attach_document(obj->ctx, doc);
404
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
101
716
99386f34efc9 improve table columnsize handling (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 715
diff changeset
102 UiModel *model = ui_model(obj->ctx, UI_STRING, "Column 0", UI_STRING, "Column 1", UI_STRING, "Column 2", -1);
99386f34efc9 improve table columnsize handling (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 715
diff changeset
103 model->columnsize[1] = -1;
539
96f466ceaf23 fix textview creation (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 538
diff changeset
104 ui_grid(obj, .columnspacing = 10, .rowspacing = 10) {
715
2082c80fb010 add table widget (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 713
diff changeset
105 ui_table(obj, .fill = UI_ON, .varname = "list1", .model = model, .getvalue = table_getvalue, .onactivate = action_list_activate, .onselection = action_list_selection, .multiselection = TRUE);
454
57a2c6c04966 implement togglebutton, checkbox, switch and unfinished radiobutton (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 449
diff changeset
106 }
538
5004b4a9b16d use view.fittingSize as backup to intrisicContentSize in GridLayout (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 500
diff changeset
107
5004b4a9b16d use view.fittingSize as backup to intrisicContentSize in GridLayout (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 500
diff changeset
108
5004b4a9b16d use view.fittingSize as backup to intrisicContentSize in GridLayout (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 500
diff changeset
109 ui_vbox(obj, .spacing = 0, .fill = UI_OFF) {
717
c35b2f18841c add combobox (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 716
diff changeset
110 ui_combobox(obj, .varname = "list2");
c35b2f18841c add combobox (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 716
diff changeset
111
590
07ecff1fa805 add textfield (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 584
diff changeset
112 ui_textfield(obj, .varname = "textfield1");
562
88ed463e5433 implement radio button (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 541
diff changeset
113 ui_radiobutton(obj, .label = "V Button 1", .varname = "radio1");
88ed463e5433 implement radio button (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 541
diff changeset
114 ui_radiobutton(obj, .label = "V Button 2", .varname = "radio1");
88ed463e5433 implement radio button (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 541
diff changeset
115 ui_radiobutton(obj, .label = "V Button 3", .varname = "radio1");
88ed463e5433 implement radio button (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 541
diff changeset
116
88ed463e5433 implement radio button (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 541
diff changeset
117 ui_radiobutton(obj, .label = "V Button 1 R2", .varname = "radio2");
88ed463e5433 implement radio button (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 541
diff changeset
118 ui_radiobutton(obj, .label = "V Button 2 R2", .varname = "radio2");
88ed463e5433 implement radio button (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 541
diff changeset
119 ui_radiobutton(obj, .label = "V Button 3 R2", .varname = "radio2");
538
5004b4a9b16d use view.fittingSize as backup to intrisicContentSize in GridLayout (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 500
diff changeset
120 }
404
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
121
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
122 ui_show(obj);
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
123 }
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
124
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
125 int main(int argc, char * argv[]) {
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
126 ui_init("app1", argc, argv);
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
127 ui_onstartup(application_startup, NULL);
541
63289f61fb7f add basic code structure for cocoa menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 539
diff changeset
128
63289f61fb7f add basic code structure for cocoa menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 539
diff changeset
129 // menu
63289f61fb7f add basic code structure for cocoa menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 539
diff changeset
130 ui_menu("File") {
708
0598e70c6489 add toolbar menu item (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 707
diff changeset
131 ui_menuitem(.label = "Test", .onclick = action_menuitem);
541
63289f61fb7f add basic code structure for cocoa menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 539
diff changeset
132 }
63289f61fb7f add basic code structure for cocoa menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 539
diff changeset
133
63289f61fb7f add basic code structure for cocoa menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 539
diff changeset
134 ui_menu("Edit") {
63289f61fb7f add basic code structure for cocoa menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 539
diff changeset
135 ui_menuitem(.label = "Undo");
63289f61fb7f add basic code structure for cocoa menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 539
diff changeset
136 ui_menu_toggleitem(.label = "Checkbox");
63289f61fb7f add basic code structure for cocoa menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 539
diff changeset
137 ui_menuseparator();
63289f61fb7f add basic code structure for cocoa menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 539
diff changeset
138 ui_menu_radioitem(.label = "Option 1", .varname = "menuoption");
63289f61fb7f add basic code structure for cocoa menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 539
diff changeset
139 ui_menu_radioitem(.label = "Option 2", .varname = "menuoption");
63289f61fb7f add basic code structure for cocoa menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 539
diff changeset
140 ui_menu_radioitem(.label = "Option 3", .varname = "menuoption");
63289f61fb7f add basic code structure for cocoa menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 539
diff changeset
141 ui_menu_radioitem(.label = "Option 4", .varname = "menuoption");
63289f61fb7f add basic code structure for cocoa menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 539
diff changeset
142 ui_menuseparator();
63289f61fb7f add basic code structure for cocoa menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 539
diff changeset
143 ui_menu("Submenu") {
63289f61fb7f add basic code structure for cocoa menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 539
diff changeset
144 ui_menuitem(.label = "Subitem");
63289f61fb7f add basic code structure for cocoa menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 539
diff changeset
145 }
63289f61fb7f add basic code structure for cocoa menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 539
diff changeset
146 }
63289f61fb7f add basic code structure for cocoa menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 539
diff changeset
147
687
d43b4fcd3d8c add support for toolbar icons (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 677
diff changeset
148 ui_toolbar_item("item1", .label = "Test 1", .icon = "NSImageNameGoBackTemplate", .onclick = toolbar_action);
d43b4fcd3d8c add support for toolbar icons (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 677
diff changeset
149 ui_toolbar_item("item2", .label = "Test 2", .icon = "NSImageNameGoForwardTemplate", .onclick = toolbar_action);
707
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
150 ui_toolbar_toggleitem("item3", .label = "Toggle", .icon = "NSImageNameActionTemplate", .varname = "tbtoggle", .onchange = toolbar_toggle);
708
0598e70c6489 add toolbar menu item (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 707
diff changeset
151 ui_toolbar_menu("item4", .label = "Add", .icon = "NSImageNameAddTemplate") {
710
6c7f700e4900 handle toggle menu items separately when not created as AppMenu item (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 708
diff changeset
152 ui_menuitem(.label = "Test1", .onclick = action_menuitem);
6c7f700e4900 handle toggle menu items separately when not created as AppMenu item (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 708
diff changeset
153 ui_menu_toggleitem(.label = "Check");
708
0598e70c6489 add toolbar menu item (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 707
diff changeset
154 }
677
04bcb1930fbf semi functional toolbar (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 590
diff changeset
155
708
0598e70c6489 add toolbar menu item (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 707
diff changeset
156 ui_toolbar_add_default("item4", UI_TOOLBAR_LEFT);
707
e9f63774b0e0 implement toolbar toggle itmem (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 687
diff changeset
157 ui_toolbar_add_default("item3", UI_TOOLBAR_LEFT);
677
04bcb1930fbf semi functional toolbar (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 590
diff changeset
158 ui_toolbar_add_default("item1", UI_TOOLBAR_LEFT);
687
d43b4fcd3d8c add support for toolbar icons (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 677
diff changeset
159 ui_toolbar_add_default("item2", UI_TOOLBAR_RIGHT);
677
04bcb1930fbf semi functional toolbar (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 590
diff changeset
160
708
0598e70c6489 add toolbar menu item (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 707
diff changeset
161
404
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
162 ui_main();
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
163 return 0;
384f6d1f5784 add first working cocoa code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
164 }

mercurial