--- a/ui/qt/menu.h Tue Feb 25 21:11:00 2025 +0100 +++ b/ui/qt/menu.h Sat Apr 05 16:46:11 2025 +0200 @@ -30,105 +30,34 @@ #define MENU_H #include "../ui/menu.h" -#include <ucx/list.h> +#include "../common/menu.h" + +#include "toolkit.h" #include <QMainWindow> #include <QMenu> #include <QMenuBar> #include <QContextMenuEvent> -class UiMenuItemI { -public: - virtual void addTo(UiObject *obj, QMenuBar *menubar, QMenu *menu) = 0; -}; - -class UiMenu : public UiMenuItemI { -public: - - UcxList *items; - char *label; - - UiMenu(char *label); - - void addMenuItem(UiMenuItemI *item); - - virtual void addTo(UiObject *obj, QMenuBar *menubar, QMenu *menu); -}; - -class UiMenuItem : public UiMenuItemI { - char *label; - ui_callback callback; - void *userdata; - UcxList *groups; - bool checkable = false; - -public: - UiMenuItem(char *label, ui_callback f, void *userdata); - void addGroup(int group); - void setCheckable(bool c); - - virtual void addTo(UiObject *obj, QMenuBar *menubar, QMenu *menu); -}; - -class UiStMenuItem : public UiMenuItemI { - char *stockid; - ui_callback callback; - void *userdata; - UcxList *groups; - -public: - UiStMenuItem(char *stockid, ui_callback f, void *userdata); - void addGroup(int group); - - virtual void addTo(UiObject *obj, QMenuBar *menubar, QMenu *menu); -}; - -class UiMenuSeparator : public UiMenuItemI { -public: - virtual void addTo(UiObject *obj, QMenuBar *menubar, QMenu *menu); -}; - -class UiCheckItemNV : public UiMenuItemI { - char *label; - char *varname; - -public: - UiCheckItemNV(char *label, char *varname); - virtual void addTo(UiObject *obj, QMenuBar *menubar, QMenu *menu); -}; - - -class UiAction : public QAction { - Q_OBJECT - - UiObject *obj; - ui_callback callback; - void *userdata; - -public: - UiAction(UiObject *obj, QString &label, ui_callback f, void *userdata); - -private slots: - void trigger(); -}; - void ui_add_menus(UiObject *obj, QMainWindow *window); -extern "C" int ui_checkitem_get(UiInteger *i); -extern "C" void ui_checkitem_set(UiInteger *i, int value); +typedef void(*ui_menu_add_f)(QMenu*, int, UiMenuItemI*, UiObject*); -class UiContextMenuHandler : public QObject { - Q_OBJECT - - QWidget *widget; - QMenu *menu; - -public: - UiContextMenuHandler(QWidget *widget, QMenu *menu); - -public slots: - void contextMenuEvent(const QPoint & pos); -}; +void add_menu_widget(QMenu *parent, int i, UiMenuItemI *item, UiObject *obj); +void add_menuitem_widget(QMenu *parent, int i, UiMenuItemI *item, UiObject *obj); +void add_menuseparator_widget(QMenu *parent, int i, UiMenuItemI *item, UiObject *obj); +void add_checkitem_widget(QMenu *parent, int i, UiMenuItemI *item, UiObject *obj); +void add_radioitem_widget(QMenu *parent, int index, UiMenuItemI *item, UiObject *obj); +void add_checkitemnv_widget(QMenu *parent, int i, UiMenuItemI *item, UiObject *obj); +void add_menuitem_list_widget(QMenu *parent, int i, UiMenuItemI *item, UiObject *obj); + +void ui_checkableaction_prepare_event(UiEvent *event, UiAction *action); +int64_t ui_checkableaction_get(UiInteger *value); +void ui_checkableaction_set(UiInteger *value, int64_t i); + +void ui_actiongroup_prepare_event(UiEvent *event, UiAction *action); +int64_t ui_actiongroup_get(UiInteger *value); +void ui_actiongroup_set(UiInteger *value, int64_t i); #endif /* MENU_H */