ui/qt/menu.h

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 537
81e46644f1aa
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 #ifndef MENU_H
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
30 #define MENU_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 "../ui/menu.h"
535
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
33 #include "../common/menu.h"
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
34
536
4a1c2eae4bcd implement menu toggleitem (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 535
diff changeset
35 #include "toolkit.h"
4a1c2eae4bcd implement menu toggleitem (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 535
diff changeset
36
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
37 #include <QMainWindow>
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
38 #include <QMenu>
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
39 #include <QMenuBar>
73
473acef47ddd added context menus (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 71
diff changeset
40 #include <QContextMenuEvent>
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
41
535
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
42 void ui_add_menus(UiObject *obj, QMainWindow *window);
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
43
535
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
44 typedef void(*ui_menu_add_f)(QMenu*, int, UiMenuItemI*, UiObject*);
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
45
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
46 void add_menu_widget(QMenu *parent, int i, UiMenuItemI *item, UiObject *obj);
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
47 void add_menuitem_widget(QMenu *parent, int i, UiMenuItemI *item, UiObject *obj);
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
48 void add_menuseparator_widget(QMenu *parent, int i, UiMenuItemI *item, UiObject *obj);
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
49 void add_checkitem_widget(QMenu *parent, int i, UiMenuItemI *item, UiObject *obj);
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
50 void add_radioitem_widget(QMenu *parent, int index, UiMenuItemI *item, UiObject *obj);
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
51 void add_checkitemnv_widget(QMenu *parent, int i, UiMenuItemI *item, UiObject *obj);
ede57f5b6178 add QT implementation for menubars, sub-menus and simple menu items
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 516
diff changeset
52 void add_menuitem_list_widget(QMenu *parent, int i, UiMenuItemI *item, UiObject *obj);
73
473acef47ddd added context menus (Qt)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 71
diff changeset
53
536
4a1c2eae4bcd implement menu toggleitem (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 535
diff changeset
54 void ui_checkableaction_prepare_event(UiEvent *event, UiAction *action);
4a1c2eae4bcd implement menu toggleitem (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 535
diff changeset
55 int64_t ui_checkableaction_get(UiInteger *value);
4a1c2eae4bcd implement menu toggleitem (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 535
diff changeset
56 void ui_checkableaction_set(UiInteger *value, int64_t i);
4a1c2eae4bcd implement menu toggleitem (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 535
diff changeset
57
537
81e46644f1aa implement menu radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 536
diff changeset
58 void ui_actiongroup_prepare_event(UiEvent *event, UiAction *action);
81e46644f1aa implement menu radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 536
diff changeset
59 int64_t ui_actiongroup_get(UiInteger *value);
81e46644f1aa implement menu radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 536
diff changeset
60 void ui_actiongroup_set(UiInteger *value, int64_t i);
81e46644f1aa implement menu radiobutton (QT)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 536
diff changeset
61
54
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
62 #endif /* MENU_H */
97bafeca1c7c added Qt window and menu implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
63

mercurial