Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members

FXExTreeList.h

Go to the documentation of this file.
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