diff --git a/src/menu.cpp b/src/menu.cpp index 2fd5d525..9aac641a 100644 --- a/src/menu.cpp +++ b/src/menu.cpp @@ -20,6 +20,8 @@ #include "menu.h" +using namespace NCurses; + void List::SelectCurrent() { if (Empty()) diff --git a/src/menu.h b/src/menu.h index 235cfcb5..81bd350a 100644 --- a/src/menu.h +++ b/src/menu.h @@ -25,154 +25,156 @@ #include "strbuffer.h" #include "misc.h" -class List +namespace NCurses { - public: - - class InvalidItem { }; - - List() { } - virtual ~List() { } - - virtual void Select(int, bool) = 0; - virtual void Static(int, bool) = 0; - virtual bool Empty() const = 0; - virtual bool isSelected(int = -1) const = 0; - virtual bool isStatic(int = -1) const = 0; - virtual bool hasSelected() const = 0; - virtual void GetSelected(std::vector &) const = 0; - virtual void Highlight(size_t) = 0; - virtual size_t Size() const = 0; - virtual size_t Choice() const = 0; - virtual size_t RealChoice() const = 0; - - void SelectCurrent(); - void ReverseSelection(size_t = 0); - bool Deselect(); - - virtual void ApplyFilter(const std::string &, size_t = 0, bool = 0) = 0; - virtual const std::string &GetFilter() = 0; - virtual std::string GetOption(size_t) = 0; - - virtual bool isFiltered() = 0; - //virtual void ShowAll() = 0; - //virtual void ShowFiltered() = 0; - -}; - -template class Menu : public Window, public List -{ - typedef void (*ItemDisplayer) (const T &, void *, Menu *); - typedef std::string (*GetStringFunction) (const T &, void *); - - struct Option + class List { - Option() : isBold(0), isSelected(0), isStatic(0) { } - Option(const T &t, bool is_bold, bool is_static) : - Item(t), isBold(is_bold), isSelected(0), isStatic(is_static) { } - - T Item; - bool isBold; - bool isSelected; - bool isStatic; + public: + + class InvalidItem { }; + + List() { } + virtual ~List() { } + + virtual void Select(int, bool) = 0; + virtual void Static(int, bool) = 0; + virtual bool Empty() const = 0; + virtual bool isSelected(int = -1) const = 0; + virtual bool isStatic(int = -1) const = 0; + virtual bool hasSelected() const = 0; + virtual void GetSelected(std::vector &) const = 0; + virtual void Highlight(size_t) = 0; + virtual size_t Size() const = 0; + virtual size_t Choice() const = 0; + virtual size_t RealChoice() const = 0; + + void SelectCurrent(); + void ReverseSelection(size_t = 0); + bool Deselect(); + + virtual void ApplyFilter(const std::string &, size_t = 0, bool = 0) = 0; + virtual const std::string &GetFilter() = 0; + virtual std::string GetOption(size_t) = 0; + + virtual bool isFiltered() = 0; }; - typedef typename std::vector