summaryrefslogtreecommitdiffstatshomepage
path: root/trunk/src/emu/uimenu.h
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/src/emu/uimenu.h')
-rw-r--r--trunk/src/emu/uimenu.h154
1 files changed, 154 insertions, 0 deletions
diff --git a/trunk/src/emu/uimenu.h b/trunk/src/emu/uimenu.h
new file mode 100644
index 00000000000..e8d42e12e34
--- /dev/null
+++ b/trunk/src/emu/uimenu.h
@@ -0,0 +1,154 @@
+/***************************************************************************
+
+ uimenu.h
+
+ Internal MAME menus for the user interface.
+
+ Copyright Nicola Salmoria and the MAME Team.
+ Visit http://mamedev.org for licensing and usage restrictions.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __UIMENU_H__
+#define __UIMENU_H__
+
+#include "render.h"
+
+
+/***************************************************************************
+ CONSTANTS
+***************************************************************************/
+
+/* flags for menu items */
+#define MENU_FLAG_LEFT_ARROW (1 << 0)
+#define MENU_FLAG_RIGHT_ARROW (1 << 1)
+#define MENU_FLAG_INVERT (1 << 2)
+#define MENU_FLAG_MULTILINE (1 << 3)
+#define MENU_FLAG_REDTEXT (1 << 4)
+#define MENU_FLAG_DISABLE (1 << 5)
+
+/* special menu item for separators */
+#define MENU_SEPARATOR_ITEM "---"
+
+/* flags to pass to ui_menu_process */
+#define UI_MENU_PROCESS_NOKEYS 1
+#define UI_MENU_PROCESS_LR_REPEAT 2
+#define UI_MENU_PROCESS_CUSTOM_ONLY 4
+
+/* options for ui_menu_reset */
+enum _ui_menu_reset_options
+{
+ UI_MENU_RESET_SELECT_FIRST,
+ UI_MENU_RESET_REMEMBER_POSITION,
+ UI_MENU_RESET_REMEMBER_REF
+};
+typedef enum _ui_menu_reset_options ui_menu_reset_options;
+
+
+
+/***************************************************************************
+ TYPE DEFINITIONS
+***************************************************************************/
+
+/* forward declarations */
+class ui_menu;
+
+
+/* menu-related callback functions */
+typedef void (*ui_menu_handler_func)(running_machine &machine, ui_menu *menu, void *parameter, void *state);
+typedef void (*ui_menu_custom_func)(running_machine &machine, ui_menu *menu, void *state, void *selectedref, float top, float bottom, float x, float y, float x2, float y2);
+typedef void (*ui_menu_destroy_state_func)(ui_menu *menu, void *state);
+
+
+/* menu-related events */
+typedef struct _ui_menu_event ui_menu_event;
+struct _ui_menu_event
+{
+ void * itemref; /* reference for the selected item */
+ int iptkey; /* one of the IPT_* values from inptport.h */
+ unicode_char unichar; /* unicode character if iptkey == IPT_SPECIAL */
+};
+
+
+
+/***************************************************************************
+ FUNCTION PROTOTYPES
+***************************************************************************/
+
+
+/* ----- core system management ----- */
+
+/* initialization */
+void ui_menu_init(running_machine &machine);
+
+
+
+/* ----- core menu management ----- */
+
+/* allocate a new menu */
+ui_menu *ui_menu_alloc(running_machine &machine, render_container *container, ui_menu_handler_func handler, void *parameter);
+
+/* free a menu */
+void ui_menu_free(ui_menu *menu);
+
+/* free all items in the menu, and all memory allocated from the memory pool */
+void ui_menu_reset(ui_menu *menu, ui_menu_reset_options options);
+
+/* returns TRUE if the menu has any non-default items in it */
+int ui_menu_populated(ui_menu *menu);
+
+/* append a new item to the end of the menu */
+void ui_menu_item_append(ui_menu *menu, const char *text, const char *subtext, UINT32 flags, void *ref);
+
+/* process a menu, drawing it and returning any interesting events */
+const ui_menu_event *ui_menu_process(running_machine &machine, ui_menu *menu, UINT32 flags);
+
+/* configure the menu for custom rendering */
+void ui_menu_set_custom_render(ui_menu *menu, ui_menu_custom_func custom, float top, float bottom);
+
+/* allocate permanent memory to represent the menu's state */
+void *ui_menu_alloc_state(ui_menu *menu, size_t size, ui_menu_destroy_state_func destroy_state);
+
+/* allocate temporary memory from the menu's memory pool */
+void *ui_menu_pool_alloc(ui_menu *menu, size_t size);
+
+/* make a temporary string copy in the menu's memory pool */
+const char *ui_menu_pool_strdup(ui_menu *menu, const char *string);
+
+/* retrieves the index of the currently selected menu item */
+void *ui_menu_get_selection(ui_menu *menu);
+
+/* changes the index of the currently selected menu item */
+void ui_menu_set_selection(ui_menu *menu, void *selected_itemref);
+
+
+
+/* ----- menu stack management ----- */
+
+/* reset the menus, clearing everything */
+void ui_menu_stack_reset(running_machine &machine);
+
+/* push a new menu onto the stack */
+void ui_menu_stack_push(ui_menu *menu);
+
+/* pop a menu from the stack */
+void ui_menu_stack_pop(running_machine &machine);
+
+
+
+/* ----- UI system interaction ----- */
+
+/* master handler */
+UINT32 ui_menu_ui_handler(running_machine &machine, render_container *container, UINT32 state);
+
+/* slider handler */
+UINT32 ui_slider_ui_handler(running_machine &machine, render_container *container, UINT32 state);
+
+/* force game select menu */
+void ui_menu_force_game_select(running_machine &machine, render_container *container);
+int ui_menu_is_force_game_select(void);
+
+
+#endif /* __UIMENU_H__ */