![]() |
Main Page
Class Hierarchy
Alphabetical List
Compound List
File List
Compound Members
![]() |
00001 /* FXExTreeList ver.0.2.4 00002 * 00003 * This software is in the public domain. 00004 * There are no restrictions on any sort of usage of this software. 00005 * 00006 * $fxextreelist: fxextreelist.h,v 1.74.10 2001/10/25 10:43:00 Toshihiro Inoue Exp $ 00007 */ 00008 #ifndef FXEXTREELIST_H 00009 #define FXEXTREELIST_H 00010 00011 #ifndef FXTREELIST_H 00012 #include <fox/FXTreeList.h> 00013 using namespace FX; 00014 #endif 00015 namespace FXEX { 00016 class FXExTreeItem; 00017 00018 /** 00019 * FXExTreeList is widget which extends the normal FOX FXTreeList widget, with some nice 00020 * features. 00021 */ 00022 class FXAPI FXExTreeList: public FXTreeList { 00023 FXDECLARE(FXExTreeList) 00024 00025 protected: 00026 FXuint itemID; 00027 FXTextField* labelEdit; 00028 FXbool editable; 00029 FXExTreeItem* mEditItem; 00030 FXbool flgEditTimer; 00031 FXbool flgEnter; 00032 FXDragType* offerTypes; 00033 FXint offerCount; 00034 FXDragType* acceptTypes; 00035 FXint acceptCount; 00036 FXExTreeItem* dragItem; 00037 FXDragAction dragAction; 00038 FXDragAction exportMode; 00039 FXDragAction dropAction; 00040 FXbool isTarget; 00041 FXExTreeItem* targetItem; 00042 FXint targetState; 00043 FXint targetType; 00044 FXbool lastAcceptable; 00045 00046 protected: 00047 /// serialisation 00048 FXExTreeList(){} 00049 00050 public: 00051 enum { 00052 ID_LABELEDIT=FXTreeList::ID_LAST, 00053 ID_EDITTIMER, 00054 ID_OPENTIMER, 00055 ID_EDITEND, 00056 ID_NEXTLINE, 00057 ID_LAST 00058 }; 00059 00060 public: 00061 long onLeftBtnPress(FXObject* sender, FXSelector sel, void* ptr); 00062 long onLeftBtnRelease(FXObject* sender, FXSelector sel, void* ptr); 00063 long onEditTimer(FXObject* sender, FXSelector sel, void* ptr); 00064 long onEditKeyPress(FXObject* sender, FXSelector sel, void* ptr); 00065 long onKeyRelease(FXObject* sender, FXSelector sel, void* ptr); 00066 long onEditFocusOut(FXObject* sender, FXSelector sel, void* ptr); 00067 long onPaint(FXObject* sender, FXSelector sel, void* ptr); 00068 long onMotion(FXObject* sender, FXSelector sel, void* ptr); 00069 long onBeginDrag(FXObject* sender, FXSelector sel, void* ptr); 00070 long onEndDrag(FXObject* sender, FXSelector sel, void* ptr); 00071 long onDragged(FXObject* sender, FXSelector sel, void* ptr); 00072 long onDNDEnter(FXObject* sender, FXSelector sel, void* ptr); 00073 long onDNDLeave(FXObject* sender, FXSelector sel, void* ptr); 00074 long onDNDMotion(FXObject* sender, FXSelector sel, void* ptr); 00075 long onDNDRequest(FXObject* sender, FXSelector sel, void* ptr); 00076 long onDNDDrop(FXObject* sender, FXSelector sel, void* ptr); 00077 long onRightBtnRelease(FXObject* sender, FXSelector sel, void* ptr); 00078 long onOpenTimer(FXObject* sender, FXSelector sel, void* ptr); 00079 long onTipTimer(FXObject* sender, FXSelector sel, void* ptr); 00080 long onEditEnd(FXObject* sender, FXSelector sel, void* ptr); 00081 00082 public: 00083 /// is tree list editable 00084 inline FXbool isEditable() const { return editable; } 00085 00086 /// make tree list editable 00087 inline void setEditable(FXbool b) { editable = b; } 00088 00089 /// set mode of drag 00090 inline void setExportMode(FXDragAction a) { exportMode = a; } 00091 00092 /// is the last item accepting items 00093 inline FXbool isLastAcceptable() const { return lastAcceptable; } 00094 00095 /// make the last item accept items 00096 inline void setLastAcceptable(FXbool b) { lastAcceptable = b; } 00097 00098 public: 00099 /// make a new Tree list 00100 FXExTreeList(FXComposite *p,FXint nvis,FXObject* tgt=NULL,FXSelector sel=0,FXuint opts=0,FXint x=0,FXint y=0,FXint w=0,FXint h=0); 00101 00102 /// create an FXTreeItem item 00103 virtual FXTreeItem* createItem(const FXString& text,FXIcon* oi,FXIcon* ci,void* ptr); 00104 00105 /// make a FXExTreeItem at a specific position 00106 virtual FXExTreeItem* newItem(FXTreeItem* parent, FXTreeItem* prev, FXTreeItem* next); 00107 00108 /// copy an item 00109 virtual FXTreeItem* copyItem(FXTreeItem* src,FXTreeItem* parent,FXTreeItem* prev,FXTreeItem* next, FXuint ignore=0); 00110 00111 /// move an item to a new position 00112 virtual FXTreeItem* moveItem(FXTreeItem* src, FXTreeItem* parent, FXTreeItem* prev, FXTreeItem* next); 00113 00114 /// copy selected items 00115 FXTreeItem* copySelectedItems(FXTreeItem* parent, FXTreeItem* prev, FXTreeItem* next, FXbool desel = TRUE); 00116 00117 /// move selected items 00118 FXTreeItem* moveSelectedItems(FXTreeItem* parent, FXTreeItem* prev, FXTreeItem* next); 00119 00120 /// remove selected items 00121 void removeSelectedItems(FXuint ignore = 0); 00122 00123 /// check if item is ancestor 00124 FXbool isAncestor(FXTreeItem* anc, FXTreeItem* desc); 00125 00126 /// check if item is ancestor 00127 FXbool checkAncestor(FXTreeItem* src, FXTreeItem* parent, FXTreeItem* prev, FXTreeItem* next); 00128 00129 /// get the item position x,y 00130 void getItemPos(FXTreeItem* item, FXint& x, FXint& y); 00131 00132 /// get the height of the item 00133 FXint getDescHeight(FXTreeItem* item); 00134 00135 /// get the next item after deletion 00136 FXTreeItem* getAfterDelItem(); 00137 00138 /// start editng an item 00139 void editItem(FXTreeItem* item, int how = 0); 00140 00141 /// finish editing an item 00142 void editEnd(); 00143 00144 /// cancel editing an item 00145 void editCancel(); 00146 00147 /// move the window contents 00148 virtual void moveContents(FXint x, FXint y); 00149 00150 /// called before a DND drag begins 00151 virtual void beforeDrag() {} 00152 00153 /// checks the DND drop site 00154 virtual void checkDrop(FXEvent* e); 00155 00156 /// offer selected item data to stream 00157 virtual void offerSelectedData(FXint type, FXStream* stream); 00158 00159 /// offer item data to stream 00160 virtual void offerData(FXint type, FXStream* stream, FXTreeItem* item){} 00161 00162 /// accept item data from stream 00163 virtual FXTreeItem* acceptData(FXint type, FXuchar* buffer, FXuint size, FXTreeItem* parent, FXTreeItem* prev, FXTreeItem* next) { return NULL; } 00164 00165 /// is the item a DND drag source 00166 FXbool isDragSource(FXTreeItem* item); 00167 00168 /// dtor 00169 virtual ~FXExTreeList(); 00170 }; 00171 00172 } // namespace FXEX 00173 #endif // FXEXTREELIST_H