00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef KYRA_SCROLLBOX_INCLUDED
00033 #define KYRA_SCROLLBOX_INCLUDED
00034
00035 #ifdef _MSC_VER
00036
00037 #pragma warning( disable : 4530 )
00038 #pragma warning( disable : 4786 )
00039 #endif
00040
00041 #include "widget.h"
00042 class KrTextWidget;
00043
00044
00052 class KrListBox : public KrWidget
00053 {
00054 public:
00062 KrListBox( int width, int height,
00063 const KrScheme& scheme,
00064 bool drawBorder );
00065
00066 virtual ~KrListBox();
00067
00068 virtual const char* WidgetType() { return "ListBox"; }
00069
00071 int NumItems() { return textStrings.size(); }
00073 int SelectedItem() { return selectedItem; }
00075 std::string SelectedItemText() { if ( selectedItem >= 0 && selectedItem < (int)textStrings.size() )
00076 return textStrings[selectedItem];
00077 else
00078 return "";
00079 }
00080
00082 int AddTextChar( const std::string& text );
00084 void GetTextChar( int index, std::string* text );
00086 void MoveSelection( int delta );
00088 void MoveUpOne() { MoveSelection( -1 ); }
00090 void MoveDownOne() { MoveSelection( 1 ); }
00091
00092 virtual bool HandleWidgetEvent( KrWidget* source, const KrWidgetEvent& event );
00093
00094
00095 virtual void AddedtoTree();
00096
00097 private:
00098 void DrawText();
00099 void ItemSelected( KrWidget* source );
00100
00101 int width, height;
00102
00103 KrBevelElement *outerBevel;
00104
00105 std::vector< KrTextWidget* > textWidgets;
00106 std::vector< std::string > textStrings;
00107
00108 int firstItem;
00109 int selectedItem;
00110 };
00111
00112
00113
00114 #endif
00115