Library which creates a serial test console, it supports pages and menu items. The items are added and the pages are added as necessary when the user sets it up. This is a great too for creating an easy to maintain menu system, whether for a test sytem, or anything else.
Dependencies: Terminal
page.h@9:b1fdd7ea6f72, 2015-07-24 (annotated)
- Committer:
- glansberry
- Date:
- Fri Jul 24 22:18:19 2015 +0000
- Revision:
- 9:b1fdd7ea6f72
- Parent:
- 6:e992366d0684
Fixed bug is choosing the first page.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
glansberry | 0:907d2d5e77f7 | 1 | #ifndef __PAGE_H |
glansberry | 0:907d2d5e77f7 | 2 | #define __PAGE_H |
glansberry | 0:907d2d5e77f7 | 3 | #include "menuitem.h" |
glansberry | 0:907d2d5e77f7 | 4 | #include "Terminal.h" |
glansberry | 0:907d2d5e77f7 | 5 | //this class contains Pages of menu items |
glansberry | 0:907d2d5e77f7 | 6 | |
glansberry | 0:907d2d5e77f7 | 7 | extern Terminal term; |
glansberry | 0:907d2d5e77f7 | 8 | #define MAX_MENUITEMS 15 |
glansberry | 0:907d2d5e77f7 | 9 | #define LEVEL_INDENT 8 |
glansberry | 0:907d2d5e77f7 | 10 | #define DATA_GAP 4 |
glansberry | 0:907d2d5e77f7 | 11 | #define ITEM_ROW_START 3 |
glansberry | 0:907d2d5e77f7 | 12 | #define TERM_LOC_DEBUG 40,24 //x,y for printing debug info |
glansberry | 0:907d2d5e77f7 | 13 | #define TERM_LOC_INPUT 10,23 // X,Y for getting input |
glansberry | 0:907d2d5e77f7 | 14 | #define TERM_LOC_FEEDBACK 10,24 // X,Y for getting input |
glansberry | 0:907d2d5e77f7 | 15 | //class MenuItem; //forward declare |
glansberry | 0:907d2d5e77f7 | 16 | |
glansberry | 0:907d2d5e77f7 | 17 | class Page{ |
glansberry | 0:907d2d5e77f7 | 18 | private: |
glansberry | 6:e992366d0684 | 19 | bool make_active_flag; |
glansberry | 0:907d2d5e77f7 | 20 | public: |
glansberry | 0:907d2d5e77f7 | 21 | Page(); |
glansberry | 6:e992366d0684 | 22 | Page(const char * name_p, Terminal * term_p); |
glansberry | 6:e992366d0684 | 23 | const char * name; //reference to the name of the Page |
glansberry | 6:e992366d0684 | 24 | Terminal * term; |
glansberry | 0:907d2d5e77f7 | 25 | int num_menuitems; |
glansberry | 0:907d2d5e77f7 | 26 | int data_start_x; //starting column for printing the data |
glansberry | 0:907d2d5e77f7 | 27 | MenuItem item[MAX_MENUITEMS]; |
glansberry | 0:907d2d5e77f7 | 28 | char command_letter[MAX_MENUITEMS]; //the character in front of the menuitem |
glansberry | 0:907d2d5e77f7 | 29 | char max_upper_letter_cmd; |
glansberry | 0:907d2d5e77f7 | 30 | char max_lower_letter_cmd; |
glansberry | 0:907d2d5e77f7 | 31 | char max_number_cmd; |
glansberry | 0:907d2d5e77f7 | 32 | int page_num; |
glansberry | 0:907d2d5e77f7 | 33 | bool refresh_required; |
glansberry | 6:e992366d0684 | 34 | Page& add(Page *page_p) { return add(MenuItem((*page_p))); } |
iillyyaa | 3:f308cd7a34ed | 35 | Page& add(char const *text) { return add(MenuItem(text, NULL, 0, heading)); } |
iillyyaa | 3:f308cd7a34ed | 36 | Page& add(char const *text, MenuAction *action_p) { return add(MenuItem(text, action_p, 0, ::display, -1)); } |
iillyyaa | 3:f308cd7a34ed | 37 | Page& add(MenuItem const &item_p); |
glansberry | 0:907d2d5e77f7 | 38 | void display(); |
glansberry | 0:907d2d5e77f7 | 39 | void update(); |
glansberry | 0:907d2d5e77f7 | 40 | char * set_active() {make_active_flag = true; return NULL;} //flag the current page to be active |
glansberry | 0:907d2d5e77f7 | 41 | void ack_active() {make_active_flag = false;} //call to clear the set_active flag |
glansberry | 0:907d2d5e77f7 | 42 | bool check_active() {return make_active_flag;} // check to see if this page wants to be active |
glansberry | 0:907d2d5e77f7 | 43 | }; |
glansberry | 0:907d2d5e77f7 | 44 | |
glansberry | 0:907d2d5e77f7 | 45 | #endif |