source:
src/UIElements/Menu/TextMenu/TxMenu.hpp@
ef8667
| Last change on this file since ef8667 was 56f73b, checked in by , 15 years ago | |
|---|---|
|
|
| File size: 1.6 KB | |
| Rev | Line | |
|---|---|---|
| [65b6e0] | 1 | /* |
| [56f73b] | 2 | * TxMenu.hpp |
| [65b6e0] | 3 | * |
| 4 | * Created on: Dec 10, 2009 | |
| 5 | * Author: crueger | |
| 6 | */ | |
| 7 | ||
| [56f73b] | 8 | #ifndef TXMENU_HPP_ |
| 9 | #define TXMENU_HPP_ | |
| 10 | ||
| 11 | // include config.h | |
| 12 | #ifdef HAVE_CONFIG_H | |
| 13 | #include <config.h> | |
| 14 | #endif | |
| [65b6e0] | 15 | |
| 16 | #include <list> | |
| [311d688] | 17 | #include <iosfwd> |
| [65b6e0] | 18 | #include <string> |
| 19 | ||
| 20 | #include "Menu/Menu.hpp" | |
| [e4fe8d] | 21 | #include "Helpers/defs.hpp" |
| [65b6e0] | 22 | |
| 23 | class MenuItem; | |
| 24 | ||
| [8f3f40] | 25 | /** Menu for the TextUI. |
| [ef81b0] | 26 | * |
| [8f3f40] | 27 | * Used to produce any kind of text menu. This is a generic text menu user |
| 28 | * interface, i.e. we have a list of MenuItem's, which can either be | |
| 29 | * -# Action's | |
| 30 | * -# Displayers | |
| 31 | * -# Separators | |
| 32 | * -# other Menu's | |
| 33 | * | |
| 34 | * In this manner we have a tree structure, the (sub)menus generating new | |
| 35 | * branches, the rest making up the leaves. | |
| 36 | * | |
| 37 | * All Items are displayed via a given output stream and user is prompted | |
| 38 | * for a key. The item corresponding to that key is then activated. | |
| [ef81b0] | 39 | */ |
| [b59da6] | 40 | class TxMenu |
| [65b6e0] | 41 | { |
| 42 | public: | |
| [f0f9a6] | 43 | class LeaveAction; |
| [d56640] | 44 | |
| [b59da6] | 45 | TxMenu(std::ostream& _outputter, const std::string _title, char _spacer=STD_MENU_TITLE_SPACER,int _length=STD_MENU_LENGTH); |
| [b2151f5] | 46 | ~TxMenu(); |
| [65b6e0] | 47 | |
| [b59da6] | 48 | void addItem(MenuItem*); |
| 49 | void removeItem(MenuItem*); | |
| 50 | void display(); | |
| 51 | std::string getTitle(); | |
| 52 | std::ostream& getOutputter(); | |
| 53 | char getSuitableShortForm(std::set <char> &ShortcutList, const std::string name) const; | |
| [65b6e0] | 54 | |
| [ef81b0] | 55 | /** |
| 56 | * Call doQuit if you want to return from this menu. | |
| 57 | */ | |
| [b59da6] | 58 | void doQuit(); |
| [ef81b0] | 59 | /** |
| [8f113e] | 60 | * Check whether someone has chosen to quit |
| [ef81b0] | 61 | */ |
| [b59da6] | 62 | bool hasQuit(); |
| [65b6e0] | 63 | |
| [b59da6] | 64 | void addDefault(MenuItem*); |
| [8f113e] | 65 | |
| [65b6e0] | 66 | protected: |
| [b59da6] | 67 | void showEntry(MenuItem*); |
| [65b6e0] | 68 | |
| 69 | private: | |
| [b59da6] | 70 | std::list<MenuItem*> items; |
| [8f113e] | 71 | |
| 72 | MenuItem* defaultItem; | |
| 73 | ||
| [b59da6] | 74 | std::ostream& outputter; |
| 75 | std::string title; | |
| [5b9bba] | 76 | char spacer; |
| 77 | int length; | |
| 78 | ||
| [65b6e0] | 79 | bool quit; |
| 80 | }; | |
| 81 | ||
| [56f73b] | 82 | #endif /* TXMENU_HPP_ */ |
Note:
See TracBrowser
for help on using the repository browser.
