source:
src/UIElements/Menu/TextMenu/TxMenu.hpp@
7f3f9c
Last change on this file since 7f3f9c was 56f73b, checked in by , 14 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.