00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __CS_CSLISTBX_H__
00021 #define __CS_CSLISTBX_H__
00022
00031 #include "cscomp.h"
00032 #include "csscrbar.h"
00033
00037 enum
00038 {
00046 cscmdListBoxStartTracking = 0x00000400,
00054 cscmdListBoxTrack,
00061 cscmdListBoxMakeVisible,
00065 cscmdListBoxClear,
00074 cscmdListBoxItemCheck,
00082 cscmdListBoxItemSet,
00092 cscmdListBoxItemSelected,
00100 cscmdListBoxItemDeselected,
00111 cscmdListBoxItemClicked,
00121 cscmdListBoxItemDoubleClicked,
00131 cscmdListBoxItemFocused,
00141 cscmdListBoxItemScrollVertically,
00148 cscmdListBoxItemSetHorizOffset,
00155 cscmdListBoxQueryFirstSelected,
00163 cscmdListBoxSelectItem
00164 };
00165
00167 #define CSS_LISTBOXITEM_SELECTED 0x00010000
00168
00170 #define CS_LISTBOXITEMCHECK_SELECTED 0xdeadface
00171
00172 #define CS_LISTBOXITEMCHECK_UNSELECTED 0x0badf00d
00173
00178 enum csListBoxItemStyle
00179 {
00181 cslisNormal,
00183 cslisEmphasized
00184 };
00185
00187 class csListBoxItem : public csComponent
00188 {
00190 csListBoxItemStyle ItemStyle;
00192 int deltax;
00194 csPixmap *ItemBitmap;
00196 bool DeleteBitmap;
00198 int hOffset;
00199
00200 public:
00202 csListBoxItem (csComponent *iParent, const char *iText, int iID = 0,
00203 csListBoxItemStyle iStyle = cslisNormal);
00204
00206 virtual ~csListBoxItem ();
00207
00209 virtual bool HandleEvent (iEvent &Event);
00210
00212 virtual void SetState (int mask, bool enable);
00213
00215 virtual void SuggestSize (int &w, int &h);
00216
00218 void SetBitmap (csPixmap *iBitmap, bool iDelete = true);
00219
00221 void SetOffset (int ihOffset)
00222 { hOffset = ihOffset; Invalidate (); }
00223
00225 virtual char *GetSkinName ()
00226 { return "ListboxItem"; }
00227
00232
00233 csListBoxItemStyle GetItemStyle()
00234 { return ItemStyle; }
00235
00237 int GetDeltaX()
00238 { return deltax; }
00239
00241 csPixmap *GetItemBitmap()
00242 { return ItemBitmap; }
00243
00245 int GetHOffset()
00246 { return hOffset; }
00247
00248 char *GetText()
00249 { return text; }
00250 };
00251
00257
00258 #define CSLBS_MULTIPLESEL 0x00000001
00259
00260 #define CSLBS_HSCROLL 0x00000002
00261
00262 #define CSLBS_VSCROLL 0x00000004
00263
00265 #define CSLBS_DEFAULTVALUE CSLBS_VSCROLL
00266
00268
00269 enum csListBoxFrameStyle
00270 {
00272 cslfsNone,
00274 cslfsThinRect,
00276 cslfsThickRect,
00278 cslfsTextured,
00280 cslfsTexturedNoFrame,
00282 cslfsBitmap
00283 };
00284
00291 class csListBox : public csComponent
00292 {
00294 int ListBoxStyle;
00296 csListBoxFrameStyle FrameStyle;
00298 int BorderWidth, BorderHeight;
00300 csComponent *first;
00302 csComponent *firstvisible;
00304 bool selstate;
00306 int vertcount;
00308 csScrollBar *hscroll, *vscroll;
00310 csScrollBarStatus hsbstatus, vsbstatus;
00312 int deltax, maxdeltax;
00314 bool fPlaceItems;
00316 csPixmap *FrameBitmap;
00318 bool fDelFrameBitmap;
00320 uint8 FrameAlpha;
00321
00322 public:
00324 csListBox (csComponent *iParent, int iStyle = CSLBS_DEFAULTVALUE,
00325 csListBoxFrameStyle iFrameStyle = cslfsThickRect);
00326
00328 ~csListBox();
00329
00331 virtual bool HandleEvent (iEvent &Event);
00332
00334 void PlaceItems (bool setscrollbars = true);
00335
00337 virtual bool SetRect (int xmin, int ymin, int xmax, int ymax);
00338
00340 void SuggestSize (int &w, int &h);
00341
00346 csComponent *ForEachItem (bool (*func) (csComponent *child, void *param),
00347 void *param = NULL, bool iSelected = true);
00348
00350 virtual void SetState (int mask, bool enable);
00351
00353 virtual bool SetFocused (csComponent *comp);
00354
00356 virtual void Insert (csComponent *comp);
00357
00359 virtual void Delete (csComponent *comp);
00360
00362 void SetFrameBitmap(csPixmap *iFrameBitmap, bool iDelFrameBitmap=false);
00363
00365 void SetTexture(csPixmap *iTexture, bool iDelFrameBitmap=false);
00366
00368 void SetAlpha(uint8 iAlpha);
00369
00371 virtual char *GetSkinName ()
00372 { return "Listbox"; }
00373
00379
00380 int GetListBoxStyle()
00381 { return ListBoxStyle; }
00382
00384 csListBoxFrameStyle GetFrameStyle()
00385 { return FrameStyle; }
00386
00388 void GetBorderSize(int *iBorderWidth, int *iBorderHeight);
00389
00391 int VerticalCount()
00392 { return vertcount; }
00393
00395 csScrollBar *GetHScroll()
00396 { return hscroll; }
00397
00399 csScrollBar *GetVScroll()
00400 { return vscroll; }
00401
00403 int GetDeltaX()
00404 { return deltax; }
00405
00407 int GetMaxDeltaX()
00408 { return maxdeltax; }
00409
00411 bool GetPlaceItemsFlag()
00412 { return fPlaceItems; }
00413
00415 csPixmap *GetFrameBitmap()
00416 { return FrameBitmap; }
00417
00419 uint8 GetAlpha()
00420 { return FrameAlpha; }
00421
00422 protected:
00424 void MakeItemVisible (csComponent *item);
00425 };
00426
00429 #endif // __CS_CSLISTBX_H__