From e33e19d0587146859d48a134ec9fd94e7b7ba5cd Mon Sep 17 00:00:00 2001 From: "FWoltermann@gmail.com" Date: Thu, 8 Dec 2011 14:53:40 +0000 Subject: Initial upload --- nGenEx/Menu.h | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 nGenEx/Menu.h (limited to 'nGenEx/Menu.h') diff --git a/nGenEx/Menu.h b/nGenEx/Menu.h new file mode 100644 index 0000000..649784b --- /dev/null +++ b/nGenEx/Menu.h @@ -0,0 +1,124 @@ +/* Project nGenEx + Destroyer Studios LLC + Copyright © 1997-2004. All Rights Reserved. + + SUBSYSTEM: nGenEx.lib + FILE: Menu.h + AUTHOR: John DiCamillo + + + OVERVIEW + ======== + Simple menu hierarchy class +*/ + +#ifndef Menu_h +#define Menu_h + +#include "Types.h" +#include "List.h" +#include "Text.h" + +// +-------------------------------------------------------------------+ + +class Menu; +class MenuItem; +class MenuHistory; + +// +-------------------------------------------------------------------+ + +class Menu +{ +public: + static const char* TYPENAME() { return "Menu"; } + + Menu() { } + Menu(Text t) : title(t) { } + virtual ~Menu() { items.destroy(); } + + virtual Text GetTitle() const { return title; } + virtual void SetTitle(Text t) { title = t; } + virtual Menu* GetParent() const { return parent; } + virtual void SetParent(Menu* p) { parent = p; } + + virtual void AddItem(Text label, DWORD value=0, bool enabled=true); + virtual void AddItem(MenuItem* item); + virtual void AddMenu(Text label, Menu* menu, DWORD value=0); + virtual MenuItem* GetItem(int index); + virtual void SetItem(int index, MenuItem* item); + virtual int NumItems() const; + virtual void ClearItems(); + + ListIter GetItems() { return items; } + +protected: + Text title; + List items; + Menu* parent; + + friend class MenuItem; +}; + +// +-------------------------------------------------------------------+ + +class MenuItem +{ +public: + static const char* TYPENAME() { return "MenuItem"; } + + MenuItem(Text label, DWORD value=0, bool enabled=true); + virtual ~MenuItem(); + + virtual Text GetText() const { return text; } + virtual void SetText(Text t) { text = t; } + + virtual DWORD GetData() const { return data; } + virtual void SetData(DWORD d) { data = d; } + + virtual int GetEnabled() const { return enabled; } + virtual void SetEnabled(int e) { enabled = e; } + + virtual int GetSelected() const { return selected; } + virtual void SetSelected(int s) { selected = s; } + + virtual Menu* GetMenu() const { return menu; } + virtual void SetMenu(Menu* m) { menu = m; } + + virtual Menu* GetSubmenu() const { return submenu; } + virtual void SetSubmenu(Menu* s) { submenu = s; } + +protected: + Text text; + DWORD data; + int enabled; + int selected; + + Menu* menu; + Menu* submenu; + + friend class Menu; +}; + +// +-------------------------------------------------------------------+ + +class MenuHistory +{ +public: + static const char* TYPENAME() { return "MenuHistory"; } + + MenuHistory() { } + virtual ~MenuHistory() { history.clear(); } + + virtual Menu* GetCurrent(); + virtual Menu* GetLevel(int n); + virtual Menu* Find(const char* title); + virtual void Pop(); + virtual void Push(Menu* menu); + virtual void Clear(); + +private: + List history; +}; + +#endif Menu_h + -- cgit v1.1