// filename: Listbox.h // author: John Flores // date: May, 2003. // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. #ifndef LISTBOX_H #define LISTBOX_H #include "Component.h" #include "List.h" #include "String.h" struct Item { int id; String text; Item(int i, const String &t): id(i), text(t) { } }; typedef List ItmList; typedef ItmList::iterator ItmListItr; class Listbox: public Component { int height; int width; WINDOW *win; ItmList list; ItmListItr startitem; ItmListItr currentitem; enum { SEPARATOR = -1 }; void display(); public: Listbox(int height, int width, int row, int col, Component *parent); virtual ~Listbox(); void additem(int id, const char *text); void addseparator(const char *text); int getitem(int &id, char *text = NULL); void notify(Component *parent); }; #endif