summaryrefslogtreecommitdiffstats
path: root/stone_soup/crawl-ref/source/menu.h
diff options
context:
space:
mode:
Diffstat (limited to 'stone_soup/crawl-ref/source/menu.h')
-rw-r--r--stone_soup/crawl-ref/source/menu.h216
1 files changed, 0 insertions, 216 deletions
diff --git a/stone_soup/crawl-ref/source/menu.h b/stone_soup/crawl-ref/source/menu.h
deleted file mode 100644
index 05e4796383..0000000000
--- a/stone_soup/crawl-ref/source/menu.h
+++ /dev/null
@@ -1,216 +0,0 @@
-#ifndef __MENU_H__
-#define __MENU_H__
-
-#include <string>
-#include <vector>
-#include <algorithm>
-#include "AppHdr.h"
-#include "defines.h"
-#include "libutil.h"
-
-enum MenuEntryLevel
-{
- MEL_NONE = -1,
- MEL_TITLE,
- MEL_SUBTITLE,
- MEL_ITEM
-};
-
-struct menu_letter
-{
- char letter;
-
- menu_letter() : letter('a') { }
- menu_letter(char c) : letter(c) { }
-
- operator char () const { return letter; }
-
- const menu_letter &operator ++ ()
- {
- letter = letter == 'z'? 'A' :
- letter == 'Z'? 'a' :
- letter + 1;
- return *this;
- }
-
- menu_letter operator ++ (int postfix)
- {
- menu_letter copy = *this;
- this->operator++();
- return copy;
- }
-};
-
-struct item_def;
-struct MenuEntry
-{
- std::string text;
- int quantity, selected_qty;
- int colour;
- std::vector<int> hotkeys;
- MenuEntryLevel level;
- void *data;
-
- MenuEntry( const std::string &txt = std::string(""),
- MenuEntryLevel lev = MEL_ITEM,
- int qty = 0,
- int hotk = 0 ) :
- text(txt), quantity(qty), selected_qty(0), colour(-1),
- hotkeys(), level(lev), data(NULL)
- {
- colour = lev == MEL_ITEM? LIGHTGREY :
- lev == MEL_SUBTITLE? BLUE :
- WHITE;
- if (hotk)
- hotkeys.push_back( hotk );
- }
- virtual ~MenuEntry() { }
-
- void add_hotkey( int key )
- {
- if (key && !is_hotkey(key))
- hotkeys.push_back( key );
- }
-
- bool is_hotkey( int key ) const
- {
- return find( hotkeys.begin(), hotkeys.end(), key ) != hotkeys.end();
- }
-
- bool is_primary_hotkey( int key ) const
- {
- return hotkeys.size()? hotkeys[0] == key : false;
- }
-
- virtual std::string get_text() const
- {
- if (level == MEL_ITEM && hotkeys.size())
- {
- char buf[300];
- snprintf(buf, sizeof buf,
- "%c - %s", hotkeys[0], text.c_str());
- return std::string(buf);
- }
- return std::string(level == MEL_SUBTITLE? " " :
- level == MEL_ITEM? "" : " ") + text;
- }
-
- virtual bool selected() const
- {
- return selected_qty > 0 && quantity;
- }
-
- void select( int qty = -1 )
- {
- if (selected())
- selected_qty = 0;
- else if (quantity)
- selected_qty = qty == -1? quantity : qty;
- }
-};
-
-class MenuHighlighter
-{
-public:
- virtual int entry_colour(const MenuEntry *entry) const;
- virtual ~MenuHighlighter() { }
-};
-
-enum MenuFlag
-{
- MF_NOSELECT = 0, // No selection is permitted
- MF_SINGLESELECT = 1, // Select just one item
- MF_MULTISELECT = 2, // Select multiple items
- MF_NO_SELECT_QTY = 4, // Disallow partial selections
- MF_ANYPRINTABLE = 8, // Any printable character is valid, and
- // closes the menu.
- MF_SELECT_ANY_PAGE = 16, // Allow selections to occur on any page.
-
- MF_EASY_EXIT = 64
-};
-
-///////////////////////////////////////////////////////////////////////
-// NOTE
-// As a general contract, any pointers you pass to Menu methods are OWNED BY
-// THE MENU, and will be deleted by the Menu on destruction. So any pointers
-// you pass in MUST be allocated with new, or Crawl will crash.
-
-#define NUMBUFSIZ 10
-class Menu
-{
-public:
- Menu( int flags = MF_MULTISELECT );
- virtual ~Menu();
-
- void set_flags( int new_flags ) { this->flags = new_flags; }
- int get_flags() const { return flags; }
- bool is_set( int flag ) const;
-
- bool draw_title_suffix( const std::string &s, bool titlefirst = true );
- void update_title();
-
- void set_highlighter( MenuHighlighter *h );
- void set_title( MenuEntry *e );
- void add_entry( MenuEntry *entry );
- void get_selected( std::vector<MenuEntry*> *sel ) const;
-
- void set_select_filter( std::vector<text_pattern> filter )
- {
- select_filter = filter;
- }
-
- unsigned char getkey() const { return lastch; }
-
- void reset();
- std::vector<MenuEntry *> show();
-
-public:
- typedef std::string (*selitem_tfn)( const std::vector<MenuEntry*> *sel );
-
- selitem_tfn selitem_text;
-
-protected:
- MenuEntry *title;
- int flags;
-
- int first_entry, y_offset;
- int pagesize;
-
- std::vector<MenuEntry*> items;
- std::vector<MenuEntry*> *sel;
- std::vector<text_pattern> select_filter;
-
- // Class that is queried to colour menu entries.
- MenuHighlighter *highlighter;
-
- int num;
-
- unsigned char lastch;
-
- bool alive;
-
- void do_menu( std::vector<MenuEntry*> *selected );
- virtual void draw_select_count( int count );
- void draw_item( int index ) const;
- virtual void draw_title();
- void draw_menu( std::vector<MenuEntry*> *selected );
- bool page_down();
- bool line_down();
- bool page_up();
- bool line_up();
-
- void deselect_all(bool update_view = true);
- void select_items( int key, int qty = -1 );
- void select_index( int index, int qty = -1 );
-
- bool is_hotkey(int index, int key );
- bool is_selectable(int index) const;
-
- int item_colour(const MenuEntry *me) const;
-
- virtual bool process_key( int keyin );
-};
-
-int menu_colour(const std::string &itemtext);
-
-#endif