ui/qt/toolkit.cpp

Mon, 29 Sep 2025 21:14:46 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Mon, 29 Sep 2025 21:14:46 +0200
changeset 779
b84cbe57e0bd
parent 674
51670b0bc625
child 795
d466b6edfebc
permissions
-rw-r--r--

change UiCellValue from struct to union and pass it as pointer to the onsave function, for better compatibility with other languages

54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 /*
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 *
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
4 * Copyright 2014 Olaf Wintermann. All rights reserved.
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
5 *
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
8 *
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
11 *
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
15 *
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
97bafeca1c7c added Qt window and menu implementation
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
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
27 */
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
28
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
29 #include <stdio.h>
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
30 #include <string.h>
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
31
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
32 #include "toolkit.h"
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
33 #include "window.h"
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
34 #include "stock.h"
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
35
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
36 #include "../common/document.h"
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
37 #include "../common/properties.h"
535
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
38 #include "../common/menu.h"
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
39 #include "../common/toolbar.h"
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
40
516
4b31c74666d7 remove old Qt code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 130
diff changeset
41 static const char *application_name;
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
42
518
45ed276ba7a4 use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
43 static ui_callback startup_func;
45ed276ba7a4 use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
44 static void *startup_data;
45ed276ba7a4 use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
45 static ui_callback open_func;
674
51670b0bc625 implement ui_app_exit_on_shutdown for Motif, Qt, Cocoa
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 659
diff changeset
46 static void *open_data;
518
45ed276ba7a4 use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
47 static ui_callback exit_func;
674
51670b0bc625 implement ui_app_exit_on_shutdown for Motif, Qt, Cocoa
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 659
diff changeset
48 static void *exit_data;
518
45ed276ba7a4 use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
49
45ed276ba7a4 use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
50 static int is_toplevel_realized = 0;
45ed276ba7a4 use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
51
674
51670b0bc625 implement ui_app_exit_on_shutdown for Motif, Qt, Cocoa
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 659
diff changeset
52 static int app_argc;
51670b0bc625 implement ui_app_exit_on_shutdown for Motif, Qt, Cocoa
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 659
diff changeset
53 static char **app_argv;
51670b0bc625 implement ui_app_exit_on_shutdown for Motif, Qt, Cocoa
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 659
diff changeset
54 static QApplication *application = NULL;
51670b0bc625 implement ui_app_exit_on_shutdown for Motif, Qt, Cocoa
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 659
diff changeset
55
51670b0bc625 implement ui_app_exit_on_shutdown for Motif, Qt, Cocoa
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 659
diff changeset
56 static UiBool exit_on_shutdown;
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
57
516
4b31c74666d7 remove old Qt code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 130
diff changeset
58 void ui_init(const char *appname, int argc, char **argv) {
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
59 application_name = appname;
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
60
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
61 app_argc = argc;
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
62 app_argv = argv;
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
63 application = new QApplication(app_argc, app_argv);
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
64
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
65 uic_docmgr_init();
535
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
66 uic_menu_init();
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
67 uic_toolbar_init();
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
68
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
69 uic_load_app_properties();
535
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
70
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
71 }
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
72
516
4b31c74666d7 remove old Qt code
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 130
diff changeset
73 const char* ui_appname() {
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
74 return application_name;
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
75 }
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
76
518
45ed276ba7a4 use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
77 void ui_onstartup(ui_callback f, void *userdata) {
45ed276ba7a4 use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
78 startup_func = f;
45ed276ba7a4 use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
79 startup_data = userdata;
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
80 }
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
81
518
45ed276ba7a4 use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
82 void ui_onopen(ui_callback f, void *userdata) {
45ed276ba7a4 use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
83 open_func = f;
45ed276ba7a4 use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
84 open_data = userdata;
45ed276ba7a4 use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
85 }
45ed276ba7a4 use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
86
45ed276ba7a4 use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
87 void ui_onexit(ui_callback f, void *userdata) {
45ed276ba7a4 use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
88 exit_func = f;
45ed276ba7a4 use pkg-config for qt5 compiler flags
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
89 exit_data = userdata;
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
90 }
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
91
674
51670b0bc625 implement ui_app_exit_on_shutdown for Motif, Qt, Cocoa
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 659
diff changeset
92 void ui_app_exit_on_shutdown(UiBool exitapp) {
51670b0bc625 implement ui_app_exit_on_shutdown for Motif, Qt, Cocoa
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 659
diff changeset
93 exit_on_shutdown = exitapp;
51670b0bc625 implement ui_app_exit_on_shutdown for Motif, Qt, Cocoa
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 659
diff changeset
94 }
51670b0bc625 implement ui_app_exit_on_shutdown for Motif, Qt, Cocoa
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 659
diff changeset
95
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
96 void ui_main() {
519
8884c7fbe4cb add box container (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 518
diff changeset
97 if(startup_func) {
8884c7fbe4cb add box container (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 518
diff changeset
98 startup_func(NULL, startup_data);
8884c7fbe4cb add box container (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 518
diff changeset
99 }
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
100 application->exec();
519
8884c7fbe4cb add box container (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 518
diff changeset
101 if(exit_func) {
8884c7fbe4cb add box container (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 518
diff changeset
102 exit_func(NULL, exit_data);
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
103 }
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
104 uic_store_app_properties();
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
105
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
106 delete application;
674
51670b0bc625 implement ui_app_exit_on_shutdown for Motif, Qt, Cocoa
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 659
diff changeset
107
51670b0bc625 implement ui_app_exit_on_shutdown for Motif, Qt, Cocoa
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 659
diff changeset
108 if(exit_on_shutdown) {
51670b0bc625 implement ui_app_exit_on_shutdown for Motif, Qt, Cocoa
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 659
diff changeset
109 exit(0);
51670b0bc625 implement ui_app_exit_on_shutdown for Motif, Qt, Cocoa
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 659
diff changeset
110 }
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
111 }
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
112
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
113 void ui_show(UiObject *obj) {
519
8884c7fbe4cb add box container (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 518
diff changeset
114 obj->widget->show();
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
115 }
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
116
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
117 void ui_close(UiObject *obj) {
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
118 QMainWindow *window = (QMainWindow*)obj->widget;
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
119 window->close();
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
120 }
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
121
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
122 void ui_set_enabled(UIWIDGET widget, int enabled) {
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
123
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
124 }
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
125
130
212b63dd61be adds some qt stuff
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 66
diff changeset
126 void ui_set_visible(UIWIDGET widget, int visible) {
212b63dd61be adds some qt stuff
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 66
diff changeset
127
212b63dd61be adds some qt stuff
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 66
diff changeset
128 }
212b63dd61be adds some qt stuff
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 66
diff changeset
129
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
130
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
131
535
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
132 /* --------------------- Implemtation UiEventWrapper --------------------- */
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
133
66
8d490d97aab8 added button and box container (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 54
diff changeset
134 UiEventWrapper::UiEventWrapper(UiObject *obj, ui_callback f, void* userdata) {
8d490d97aab8 added button and box container (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 54
diff changeset
135 this->obj = obj;
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
136 this->callback = f;
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
137 this->userdata = userdata;
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
138 }
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
139
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
140 void UiEventWrapper::slot() {
535
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
141 if(!callback) {
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
142 return;
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
143 }
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
144
66
8d490d97aab8 added button and box container (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 54
diff changeset
145 UiEvent e;
8d490d97aab8 added button and box container (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 54
diff changeset
146 e.obj = obj;
8d490d97aab8 added button and box container (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 54
diff changeset
147 e.window = obj->window;
8d490d97aab8 added button and box container (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 54
diff changeset
148 e.document = obj->ctx->document;
8d490d97aab8 added button and box container (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 54
diff changeset
149 e.eventdata = NULL;
659
d6baaa93f7be add UiEvent eventdatatype
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 551
diff changeset
150 e.eventdatatype = 0;
66
8d490d97aab8 added button and box container (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 54
diff changeset
151 e.intval = 0;
526
f6a6b0b08641 add togglebutton and checkbox (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 519
diff changeset
152 e.set = ui_get_setop();
f6a6b0b08641 add togglebutton and checkbox (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 519
diff changeset
153 if(prepare_event) {
f6a6b0b08641 add togglebutton and checkbox (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 519
diff changeset
154 prepare_event(&e, this);
f6a6b0b08641 add togglebutton and checkbox (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 519
diff changeset
155 }
66
8d490d97aab8 added button and box container (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 54
diff changeset
156 callback(&e, userdata);
526
f6a6b0b08641 add togglebutton and checkbox (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 519
diff changeset
157
f6a6b0b08641 add togglebutton and checkbox (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 519
diff changeset
158 // TODO: notify var observers
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
159 }
526
f6a6b0b08641 add togglebutton and checkbox (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 519
diff changeset
160
f6a6b0b08641 add togglebutton and checkbox (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 519
diff changeset
161 void UiEventWrapper::destroy() {
f6a6b0b08641 add togglebutton and checkbox (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 519
diff changeset
162 delete this;
f6a6b0b08641 add togglebutton and checkbox (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 519
diff changeset
163 }
535
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
164
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
165
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
166 /* --------------------- Implemtation UiAction --------------------- */
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
167
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
168 UiAction::UiAction(UiObject *obj, QString &label, ui_callback f, void *userdata) : QAction(label, NULL) {
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
169 this->obj = obj;
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
170 this->callback = f;
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
171 this->userdata = userdata;
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
172 }
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
173
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
174 UiAction::~UiAction() {
551
0e543e1d060e handle radiobutton click event (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 536
diff changeset
175 // TODO: unbind var
535
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
176 }
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
177
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
178 void UiAction::trigger() {
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
179 if(!callback) {
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
180 return;
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
181 }
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
182
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
183 UiEvent e;
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
184 e.obj = obj;
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
185 e.window = obj->window;
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
186 e.document = obj->ctx->document;
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
187 e.eventdata = NULL;
659
d6baaa93f7be add UiEvent eventdatatype
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 551
diff changeset
188 e.eventdatatype = 0;
535
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
189 e.intval = 0;
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
190 e.set = ui_get_setop();
536
4a1c2eae4bcd implement menu toggleitem (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 535
diff changeset
191 if(prepare_event) {
4a1c2eae4bcd implement menu toggleitem (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 535
diff changeset
192 prepare_event(&e, this);
4a1c2eae4bcd implement menu toggleitem (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 535
diff changeset
193 }
535
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
194 callback(&e, userdata);
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
195
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
196 // TODO: notify var observers
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 526
diff changeset
197 }
536
4a1c2eae4bcd implement menu toggleitem (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 535
diff changeset
198
4a1c2eae4bcd implement menu toggleitem (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 535
diff changeset
199 // ui_enablefunc for UiAction
4a1c2eae4bcd implement menu toggleitem (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 535
diff changeset
200 void ui_action_enable(UiAction *action, int enable) {
4a1c2eae4bcd implement menu toggleitem (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 535
diff changeset
201 action->setEnabled((bool)enable);
4a1c2eae4bcd implement menu toggleitem (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 535
diff changeset
202 }
4a1c2eae4bcd implement menu toggleitem (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 535
diff changeset
203

mercurial