ui/ui/menu.h

branch
newapi
changeset 208
f632bc0589ab
parent 207
93b9f502cb88
child 229
a952760955b4
--- a/ui/ui/menu.h	Wed Oct 11 19:11:38 2023 +0200
+++ b/ui/ui/menu.h	Wed Oct 11 22:59:42 2023 +0200
@@ -35,24 +35,67 @@
 extern "C" {
 #endif
 
-/*
- * application menu functions
- */
-UIEXPORT void ui_menu(char *label);
-UIEXPORT void ui_submenu(char *label); // deprecated
-UIEXPORT void ui_submenu_end(); // deprecated
+
+typedef struct UiMenuItemArgs {
+	const char* label;
+	const char* stockid;
+	const char* icon;
+
+	ui_callback onclick;
+	void* onclickdata;
+
+	const int* groups;
+} UiMenuItemArgs;
+
+typedef struct UiMenuToggleItemArgs {
+	const char* label;
+	const char* stockid;
+	const char* icon;
+
+	const char* varname;
+	ui_callback onchange;
+	void* onchangedata;
+
+	const int* groups;
+} UiMenuToggleItemArgs;
 
-UIEXPORT void ui_menuitem(char *label, ui_callback f, void *userdata);
+typedef struct UiMenuItemListArgs {
+	const char* varname;
+	ui_callback onselect;
+	void* onselectdata;
+} UiMenuItemListArgs;
+
+#define ui_menu(label) for(ui_menu_create(label);ui_menu_is_open();ui_menu_close())
+
+#define ui_menuitem(...) ui_menuitem_create((UiMenuItemArgs){ __VA_ARGS__ })
+#define ui_menu_toggleitem(...) ui_menu_toggleitem_create((UiMenuToggleItemArgs){ __VA_ARGS__ })
+#define ui_menu_radioitem(...) ui_menu_radioitem_create((UiMenuToggleItemArgs){ __VA_ARGS__ })
+
+UIEXPORT void ui_menu_create(const char* label);
+UIEXPORT void ui_menuitem_create(UiMenuItemArgs args);
+UIEXPORT void ui_menu_toggleitem_create(UiMenuToggleItemArgs args);
+UIEXPORT void ui_menu_radioitem_create(UiMenuToggleItemArgs args);
+
+UIEXPORT void ui_menuseparator();
+
+UIEXPORT void ui_menu_itemlist_create(UiMenuItemListArgs args);
+UIEXPORT void ui_menu_toggleitemlist_create(UiMenuItemListArgs args);
+UIEXPORT void ui_menu_radioitemlist_create(UiMenuItemListArgs args);
+
+UIEXPORT void ui_menu_deprecated(char *label);
+UIEXPORT void ui_submenu_deprecated(char *label); // deprecated
+UIEXPORT void ui_submenu_end_deprecated(); // deprecated
+
+UIEXPORT void ui_menuitem_deprecated(char *label, ui_callback f, void *userdata);
 UIEXPORT void ui_menuitem_st(char *stockid, ui_callback f, void *userdata);
 UIEXPORT void ui_menuitem_gr(char *label, ui_callback f, void *userdata, ...);
 UIEXPORT void ui_menuitem_stgr(char *stockid, ui_callback f, void *userdata, ...);
 
-UIEXPORT void ui_menuseparator();
 
-UIEXPORT void ui_checkitem(char *label, ui_callback f, void *userdata);
-UIEXPORT void ui_checkitem_nv(char *label, char *vname);
+UIEXPORT void ui_checkitem_deprecated(char *label, ui_callback f, void *userdata);
+UIEXPORT void ui_checkitem_nv_deprecated(char *label, char *vname);
 
-UIEXPORT void ui_menuitem_list(UiList *items, ui_callback f, void *userdata);
+UIEXPORT void ui_menuitem_list_deprecated(UiList *items, ui_callback f, void *userdata);
 
 UIEXPORT void ui_menu_end(void);
 

mercurial