00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
#ifndef FXICONLIST_H
00025
#define FXICONLIST_H
00026
00027
#ifndef FXSCROLLAREA_H
00028
#include "FXScrollArea.h"
00029
#endif
00030
00031
namespace FX {
00032
00033
00034
00035
enum {
00036
ICONLIST_EXTENDEDSELECT = 0,
00037
ICONLIST_SINGLESELECT = 0x00100000,
00038
ICONLIST_BROWSESELECT = 0x00200000,
00039
ICONLIST_MULTIPLESELECT = 0x00300000,
00040
ICONLIST_AUTOSIZE = 0x00400000,
00041
ICONLIST_DETAILED = 0,
00042
ICONLIST_MINI_ICONS = 0x00800000,
00043
ICONLIST_BIG_ICONS = 0x01000000,
00044
ICONLIST_ROWS = 0,
00045
ICONLIST_COLUMNS = 0x02000000,
00046 ICONLIST_NORMAL =
ICONLIST_EXTENDEDSELECT
00047 };
00048
00049
00050
class FXIcon;
00051
class FXHeader;
00052
class FXFont;
00053
class FXIconList;
00054
class FXFileList;
00055
00056
00057
00058
class FXAPI FXIconItem :
public FXObject {
00059 FXDECLARE(FXIconItem)
00060 friend class FXIconList;
00061 friend class FXFileList;
00062 protected:
00063 FXString label;
00064 FXIcon *bigIcon;
00065 FXIcon *miniIcon;
00066 void *data;
00067 FXuint state;
00068 protected:
00069 FXIconItem():bigIcon(NULL),miniIcon(NULL),data(NULL),state(0){}
00070
virtual void draw(
const FXIconList* list,
FXDC& dc,FXint x,FXint y,FXint w,FXint h)
const;
00071
virtual FXint hitItem(
const FXIconList* list,FXint rx,FXint ry,FXint rw=1,FXint rh=1)
const;
00072
protected:
00073
virtual void drawBigIcon(
const FXIconList* list,
FXDC& dc,FXint x,FXint y,FXint w,FXint h)
const;
00074
virtual void drawMiniIcon(
const FXIconList* list,
FXDC& dc,FXint x,FXint y,FXint w,FXint h)
const;
00075
virtual void drawDetails(
const FXIconList* list,
FXDC& dc,FXint x,FXint y,FXint w,FXint h)
const;
00076
public:
00077
enum {
00078 SELECTED = 1,
00079 FOCUS = 2,
00080 DISABLED = 4,
00081 DRAGGABLE = 8,
00082 BIGICONOWNED = 16,
00083 MINIICONOWNED = 32
00084 };
00085
public:
00086
00087
00088 FXIconItem(
const FXString& text,
FXIcon* bi=NULL,
FXIcon* mi=NULL,
void* ptr=NULL):label(text),bigIcon(bi),miniIcon(mi),data(ptr),state(0){}
00089
00090
00091
virtual void setText(
const FXString& txt);
00092
00093
00094 const FXString& getText()
const {
return label; }
00095
00096
00097
virtual void setBigIcon(
FXIcon* icn,FXbool owned=FALSE);
00098
00099
00100 FXIcon* getBigIcon()
const {
return bigIcon; }
00101
00102
00103 virtual void setMiniIcon(
FXIcon* icn,FXbool owned=FALSE);
00104
00105
00106 FXIcon* getMiniIcon()
const {
return miniIcon; }
00107
00108
00109
void setData(
void* ptr){ data=ptr; }
00110
00111
00112 void* getData()
const {
return data; }
00113
00114
00115
virtual void setFocus(FXbool focus);
00116
00117
00118 FXbool hasFocus()
const {
return (state&FOCUS)!=0; }
00119
00120
00121
virtual void setSelected(FXbool selected);
00122
00123
00124 FXbool isSelected()
const {
return (state&SELECTED)!=0; }
00125
00126
00127
virtual void setEnabled(FXbool enabled);
00128
00129
00130 FXbool isEnabled()
const {
return (state&DISABLED)==0; }
00131
00132
00133
virtual void setDraggable(FXbool draggable);
00134
00135
00136 FXbool isDraggable()
const {
return (state&DRAGGABLE)!=0; }
00137
00138
00139
virtual FXint getWidth(
const FXIconList* list)
const;
00140
00141
00142
virtual FXint getHeight(
const FXIconList* list)
const;
00143
00144
00145
virtual void create();
00146
00147
00148
virtual void detach();
00149
00150
00151
virtual void destroy();
00152
00153
00154
virtual void save(FXStream& store)
const;
00155
00156
00157
virtual void load(FXStream& store);
00158
00159
00160
virtual ~FXIconItem();
00161 };
00162
00163
00164
00165
typedef FXint (*FXIconListSortFunc)(
const FXIconItem*,
const FXIconItem*);
00166
00167
00168
typedef FXObjectListOf<FXIconItem> FXIconItemList;
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
class FXAPI FXIconList :
public FXScrollArea {
00192 FXDECLARE(FXIconList)
00193
protected:
00194
FXHeader *header;
00195
FXIconItemList items;
00196 FXint nrows;
00197 FXint ncols;
00198 FXint anchor;
00199 FXint current;
00200 FXint extent;
00201 FXint cursor;
00202
FXFont *font;
00203 FXIconListSortFunc sortfunc;
00204 FXColor textColor;
00205 FXColor selbackColor;
00206 FXColor seltextColor;
00207 FXint itemWidth;
00208 FXint itemHeight;
00209 FXint itemSpace;
00210 FXint anchorx;
00211 FXint anchory;
00212 FXint currentx;
00213 FXint currenty;
00214 FXint grabx;
00215 FXint graby;
00216
FXString lookup;
00217
FXString help;
00218 FXbool state;
00219
protected:
00220 FXIconList();
00221
virtual FXIconItem *createItem(
const FXString& text,
FXIcon *big,
FXIcon* mini,
void* ptr);
00222
virtual void moveContents(FXint x,FXint y);
00223
void drawLasso(FXint x0,FXint y0,FXint x1,FXint y1);
00224
void recompute();
00225
void getrowscols(FXint& nr,FXint& nc,FXint w,FXint h)
const;
00226
void lassoChanged(FXint ox,FXint oy,FXint ow,FXint oh,FXint nx,FXint ny,FXint nw,FXint nh,FXbool notify);
00227
private:
00228 FXIconList(
const FXIconList&);
00229 FXIconList &operator=(
const FXIconList&);
00230
public:
00231
long onPaint(
FXObject*,FXSelector,
void*);
00232
long onEnter(
FXObject*,FXSelector,
void*);
00233
long onLeave(
FXObject*,FXSelector,
void*);
00234
long onUngrabbed(
FXObject*,FXSelector,
void*);
00235
long onKeyPress(
FXObject*,FXSelector,
void*);
00236
long onKeyRelease(
FXObject*,FXSelector,
void*);
00237
long onLeftBtnPress(
FXObject*,FXSelector,
void*);
00238
long onLeftBtnRelease(
FXObject*,FXSelector,
void*);
00239
long onRightBtnPress(
FXObject*,FXSelector,
void*);
00240
long onRightBtnRelease(
FXObject*,FXSelector,
void*);
00241
long onMotion(
FXObject*,FXSelector,
void*);
00242
long onQueryTip(
FXObject*,FXSelector,
void*);
00243
long onQueryHelp(
FXObject*,FXSelector,
void*);
00244
long onTipTimer(
FXObject*,FXSelector,
void*);
00245
long onCmdSelectAll(
FXObject*,FXSelector,
void*);
00246
long onCmdDeselectAll(
FXObject*,FXSelector,
void*);
00247
long onCmdSelectInverse(
FXObject*,FXSelector,
void*);
00248
long onCmdArrangeByRows(
FXObject*,FXSelector,
void*);
00249
long onUpdArrangeByRows(
FXObject*,FXSelector,
void*);
00250
long onCmdArrangeByColumns(
FXObject*,FXSelector,
void*);
00251
long onUpdArrangeByColumns(
FXObject*,FXSelector,
void*);
00252
long onCmdShowDetails(
FXObject*,FXSelector,
void*);
00253
long onUpdShowDetails(
FXObject*,FXSelector,
void*);
00254
long onCmdShowBigIcons(
FXObject*,FXSelector,
void*);
00255
long onUpdShowBigIcons(
FXObject*,FXSelector,
void*);
00256
long onCmdShowMiniIcons(
FXObject*,FXSelector,
void*);
00257
long onUpdShowMiniIcons(
FXObject*,FXSelector,
void*);
00258
long onHeaderChanged(
FXObject*,FXSelector,
void*);
00259
long onHeaderResize(
FXObject*,FXSelector,
void*);
00260
long onFocusIn(
FXObject*,FXSelector,
void*);
00261
long onFocusOut(
FXObject*,FXSelector,
void*);
00262
long onClicked(
FXObject*,FXSelector,
void*);
00263
long onDoubleClicked(
FXObject*,FXSelector,
void*);
00264
long onTripleClicked(
FXObject*,FXSelector,
void*);
00265
long onCommand(
FXObject*,FXSelector,
void*);
00266
long onAutoScroll(
FXObject*,FXSelector,
void*);
00267
long onLookupTimer(
FXObject*,FXSelector,
void*);
00268
long onCmdSetValue(
FXObject*,FXSelector,
void*);
00269
long onCmdGetIntValue(
FXObject*,FXSelector,
void*);
00270
long onCmdSetIntValue(
FXObject*,FXSelector,
void*);
00271
public:
00272
static FXint ascending(
const FXIconItem* a,
const FXIconItem* b);
00273
static FXint descending(
const FXIconItem* a,
const FXIconItem* b);
00274
static FXint ascendingCase(
const FXIconItem* a,
const FXIconItem* b);
00275
static FXint descendingCase(
const FXIconItem* a,
const FXIconItem* b);
00276
public:
00277
enum {
00278 ID_SHOW_DETAILS=FXScrollArea::ID_LAST,
00279 ID_SHOW_MINI_ICONS,
00280 ID_SHOW_BIG_ICONS,
00281 ID_ARRANGE_BY_ROWS,
00282 ID_ARRANGE_BY_COLUMNS,
00283 ID_HEADER_CHANGE,
00284 ID_LOOKUPTIMER,
00285 ID_SELECT_ALL,
00286 ID_DESELECT_ALL,
00287 ID_SELECT_INVERSE,
00288 ID_LAST
00289 };
00290
public:
00291
00292
00293 FXIconList(
FXComposite *p,
FXObject* tgt=NULL,FXSelector sel=0,FXuint opts=ICONLIST_NORMAL,FXint x=0,FXint y=0,FXint w=0,FXint h=0);
00294
00295
00296
virtual void create();
00297
00298
00299
virtual void detach();
00300
00301
00302
virtual void recalc();
00303
00304
00305
virtual void layout();
00306
00307
00308
virtual FXint getContentWidth();
00309
00310
00311
virtual FXint getContentHeight();
00312
00313
00314
virtual FXbool canFocus() const;
00315
00316
00317 virtual
void setFocus();
00318
00319
00320 virtual
void killFocus();
00321
00322
00323 virtual FXint getViewportHeight();
00324
00325
00326 virtual
void resize(FXint w,FXint h);
00327
00328
00329 virtual
void position(FXint x,FXint y,FXint w,FXint h);
00330
00331
00332 FXint getNumItems()
const {
return items.no(); }
00333
00334
00335 FXint getNumRows()
const {
return nrows; }
00336
00337
00338 FXint getNumCols()
const {
return ncols; }
00339
00340
00341 FXHeader* getHeader()
const {
return header; }
00342
00343
00344
void setHeaders(
const FXchar** strings,FXint size=1);
00345
00346
00347
void setHeaders(
const FXString& strings,FXint size=1);
00348
00349
00350
void appendHeader(
const FXString& text,FXIcon *icon=NULL,FXint size=1);
00351
00352
00353
void removeHeader(FXint index);
00354
00355
00356
void setHeaderText(FXint index,
const FXString& text);
00357
00358
00359 FXString getHeaderText(FXint index)
const;
00360
00361
00362
void setHeaderIcon(FXint index,FXIcon *icon);
00363
00364
00365 FXIcon* getHeaderIcon(FXint index)
const;
00366
00367
00368
void setHeaderSize(FXint index,FXint size);
00369
00370
00371 FXint getHeaderSize(FXint index)
const;
00372
00373
00374 FXint getNumHeaders() const;
00375
00376
00377 FXIconItem *getItem(FXint index) const;
00378
00379
00380 FXint setItem(FXint index,FXIconItem* item,FXbool notify=FALSE);
00381
00382
00383 FXint setItem(FXint index,const
FXString& text,
FXIcon *big=NULL,
FXIcon* mini=NULL,
void* ptr=NULL,FXbool notify=FALSE);
00384
00385
00386 FXint fillItems(const FXchar** strings,
FXIcon *big=NULL,
FXIcon* mini=NULL,
void* ptr=NULL,FXbool notify=FALSE);
00387
00388
00389 FXint fillItems(const
FXString& strings,
FXIcon *big=NULL,
FXIcon* mini=NULL,
void* ptr=NULL,FXbool notify=FALSE);
00390
00391
00392 FXint insertItem(FXint index,FXIconItem* item,FXbool notify=FALSE);
00393
00394
00395 FXint insertItem(FXint index,const
FXString& text,
FXIcon *big=NULL,
FXIcon* mini=NULL,
void* ptr=NULL,FXbool notify=FALSE);
00396
00397
00398 FXint appendItem(FXIconItem* item,FXbool notify=FALSE);
00399
00400
00401 FXint appendItem(const
FXString& text,
FXIcon *big=NULL,
FXIcon* mini=NULL,
void* ptr=NULL,FXbool notify=FALSE);
00402
00403
00404 FXint prependItem(FXIconItem* item,FXbool notify=FALSE);
00405
00406
00407 FXint prependItem(const
FXString& text,
FXIcon *big=NULL,
FXIcon* mini=NULL,
void* ptr=NULL,FXbool notify=FALSE);
00408
00409
00410 FXint moveItem(FXint newindex,FXint oldindex,FXbool notify=FALSE);
00411
00412
00413
void removeItem(FXint index,FXbool notify=FALSE);
00414
00415
00416
void clearItems(FXbool notify=FALSE);
00417
00418
00419 FXint getItemWidth()
const {
return itemWidth; }
00420
00421
00422 FXint getItemHeight()
const {
return itemHeight; }
00423
00424
00425
virtual FXint getItemAt(FXint x,FXint y)
const;
00426
00427
00428
00429
00430
00431
00432
00433
00434
00435
00436
00437 FXint findItem(
const FXString& text,FXint start=-1,FXuint flags=SEARCH_FORWARD|SEARCH_WRAP)
const;
00438
00439
00440
00441
00442
00443
00444
00445
00446
00447
00448
00449 FXint findItemByData(
const void *ptr,FXint start=-1,FXuint flags=SEARCH_FORWARD|SEARCH_WRAP)
const;
00450
00451
00452
virtual void makeItemVisible(FXint index);
00453
00454
00455
void setItemText(FXint index,
const FXString& text);
00456
00457
00458 FXString getItemText(FXint index)
const;
00459
00460
00461
void setItemBigIcon(FXint index,FXIcon* icon,FXbool owned=FALSE);
00462
00463
00464 FXIcon* getItemBigIcon(FXint index)
const;
00465
00466
00467
void setItemMiniIcon(FXint index,FXIcon* icon,FXbool owned=FALSE);
00468
00469
00470 FXIcon* getItemMiniIcon(FXint index)
const;
00471
00472
00473
void setItemData(FXint index,
void* ptr);
00474
00475
00476
void* getItemData(FXint index)
const;
00477
00478
00479 FXbool isItemSelected(FXint index)
const;
00480
00481
00482 FXbool isItemCurrent(FXint index)
const;
00483
00484
00485 FXbool isItemVisible(FXint index)
const;
00486
00487
00488 FXbool isItemEnabled(FXint index)
const;
00489
00490
00491 FXint hitItem(FXint index,FXint x,FXint y,FXint ww=1,FXint hh=1)
const;
00492
00493
00494
void updateItem(FXint index)
const;
00495
00496
00497
virtual FXbool enableItem(FXint index);
00498
00499
00500
virtual FXbool disableItem(FXint index);
00501
00502
00503
virtual FXbool selectItem(FXint index,FXbool notify=FALSE);
00504
00505
00506
virtual FXbool deselectItem(FXint index,FXbool notify=FALSE);
00507
00508
00509
virtual FXbool toggleItem(FXint index,FXbool notify=FALSE);
00510
00511
00512
virtual FXbool selectInRectangle(FXint x,FXint y,FXint w,FXint h,FXbool notify=FALSE);
00513
00514
00515
virtual FXbool extendSelection(FXint index,FXbool notify=FALSE);
00516
00517
00518
virtual FXbool killSelection(FXbool notify=FALSE);
00519
00520
00521
virtual void setCurrentItem(FXint index,FXbool notify=FALSE);
00522
00523
00524 FXint getCurrentItem()
const {
return current; }
00525
00526
00527
void setAnchorItem(FXint index);
00528
00529
00530 FXint getAnchorItem()
const {
return anchor; }
00531
00532
00533 FXint getCursorItem()
const {
return cursor; }
00534
00535
00536
void sortItems();
00537
00538
00539 FXIconListSortFunc getSortFunc()
const {
return sortfunc; }
00540
00541
00542
void setSortFunc(FXIconListSortFunc func){ sortfunc=func; }
00543
00544
00545
void setFont(FXFont* fnt);
00546
00547
00548 FXFont* getFont()
const {
return font; }
00549
00550
00551 FXColor getTextColor()
const {
return textColor; }
00552
00553
00554
void setTextColor(FXColor clr);
00555
00556
00557 FXColor getSelBackColor()
const {
return selbackColor; }
00558
00559
00560
void setSelBackColor(FXColor clr);
00561
00562
00563 FXColor getSelTextColor()
const {
return seltextColor; }
00564
00565
00566
void setSelTextColor(FXColor clr);
00567
00568
00569
void setItemSpace(FXint s);
00570
00571
00572 FXint getItemSpace()
const {
return itemSpace; }
00573
00574
00575 FXuint getListStyle() const;
00576
00577
00578
void setListStyle(FXuint style);
00579
00580
00581
void setHelpText(const FXString& text);
00582
00583
00584 const FXString& getHelpText()
const {
return help; }
00585
00586
00587
virtual void save(FXStream& store)
const;
00588
00589
00590
virtual void load(FXStream& store);
00591
00592
00593
virtual ~FXIconList();
00594 };
00595
00596 }
00597
00598
#endif