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

/home/jeroen/FOX/fox/fox-1.7.33/include/FXDockBar.h
00001 /********************************************************************************
00002 *                                                                               *
00003 *                        D o c k B a r   W i d g e t                            *
00004 *                                                                               *
00005 *********************************************************************************
00006 * Copyright (C) 2004,2012 by Jeroen van der Zijp.   All Rights Reserved.        *
00007 *********************************************************************************
00008 * This library is free software; you can redistribute it and/or modify          *
00009 * it under the terms of the GNU Lesser General Public License as published by   *
00010 * the Free Software Foundation; either version 3 of the License, or             *
00011 * (at your option) any later version.                                           *
00012 *                                                                               *
00013 * This library is distributed in the hope that it will be useful,               *
00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of                *
00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                 *
00016 * GNU Lesser General Public License for more details.                           *
00017 *                                                                               *
00018 * You should have received a copy of the GNU Lesser General Public License      *
00019 * along with this program.  If not, see <http://www.gnu.org/licenses/>          *
00020 ********************************************************************************/
00021 #ifndef FXDOCKBAR_H
00022 #define FXDOCKBAR_H
00023 
00024 #ifndef FXPACKER_H
00025 #include "FXPacker.h"
00026 #endif
00027 
00028 namespace FX {
00029 
00030 class FXDockSite;
00031 
00032 
00041 class FXAPI FXDockBar : public FXPacker {
00042   FXDECLARE(FXDockBar)
00043 protected:
00044   FXComposite *drydock;         // Parent when docked
00045   FXComposite *wetdock;         // Parent when floating
00046   FXint        gripx;           // Grip offset x
00047   FXint        gripy;           // Grip offset y
00048   FXuchar      allowed;         // Where we're allowed to dock
00049 //  FXuchar      mode;            // Dragging mode
00050 //protected:
00051 //  static const FXDefaultCursor cursorType[16];
00052 protected:
00053   FXDockBar();
00054   FXbool isAllowable(FXuint hints) const;
00055 //  FXuchar where(FXint x,FXint y) const;
00056 protected:
00057   enum {
00058     DRAG_NONE        = 0,
00059     DRAG_TOP         = 1,
00060     DRAG_BOTTOM      = 2,
00061     DRAG_LEFT        = 4,
00062     DRAG_RIGHT       = 8,
00063     DRAG_TOPLEFT     = (DRAG_TOP|DRAG_LEFT),
00064     DRAG_TOPRIGHT    = (DRAG_TOP|DRAG_RIGHT),
00065     DRAG_BOTTOMLEFT  = (DRAG_BOTTOM|DRAG_LEFT),
00066     DRAG_BOTTOMRIGHT = (DRAG_BOTTOM|DRAG_RIGHT)
00067     };
00068 private:
00069   FXDockBar(const FXDockBar&);
00070   FXDockBar &operator=(const FXDockBar&);
00071 public:
00072 //  long onEnter(FXObject*,FXSelector,void*);
00073 //  long onLeave(FXObject*,FXSelector,void*);
00074 //  long onMotion(FXObject*,FXSelector,void*);
00075 //  long onLeftBtnPress(FXObject*,FXSelector,void*);
00076 //  long onLeftBtnRelease(FXObject*,FXSelector,void*);
00077   long onCmdUndock(FXObject*,FXSelector,void*);
00078   long onUpdUndock(FXObject*,FXSelector,void*);
00079   long onCmdDockTop(FXObject*,FXSelector,void*);
00080   long onUpdDockTop(FXObject*,FXSelector,void*);
00081   long onCmdDockBottom(FXObject*,FXSelector,void*);
00082   long onUpdDockBottom(FXObject*,FXSelector,void*);
00083   long onCmdDockLeft(FXObject*,FXSelector,void*);
00084   long onUpdDockLeft(FXObject*,FXSelector,void*);
00085   long onCmdDockRight(FXObject*,FXSelector,void*);
00086   long onUpdDockRight(FXObject*,FXSelector,void*);
00087   long onUpdDockFlip(FXObject*,FXSelector,void*);
00088   long onBeginDragGrip(FXObject*,FXSelector,void*);
00089   long onEndDragGrip(FXObject*,FXSelector,void*);
00090   long onDraggedGrip(FXObject*,FXSelector,void*);
00091   long onPopupMenu(FXObject*,FXSelector,void*);
00092   long onDockTimer(FXObject*,FXSelector,void*);
00093 public:
00094   enum {
00095     ID_DOCK_FLOAT=FXPacker::ID_LAST,    
00096     ID_DOCK_TOP,                        
00097     ID_DOCK_BOTTOM,                     
00098     ID_DOCK_LEFT,                       
00099     ID_DOCK_RIGHT,                      
00100     ID_DOCK_FLIP,                       
00101     ID_TOOLBARGRIP,                     
00102     ID_TIMER,
00103     ID_LAST
00104     };
00105 public:
00106   enum {
00107     ALLOW_NOWHERE=0,                                    
00108     ALLOW_TOP=1,                                        
00109     ALLOW_BOTTOM=2,                                     
00110     ALLOW_LEFT=4,                                       
00111     ALLOW_RIGHT=8,                                      
00112     ALLOW_HORIZONTAL=ALLOW_TOP|ALLOW_BOTTOM,            
00113     ALLOW_VERTICAL=ALLOW_LEFT|ALLOW_RIGHT,              
00114     ALLOW_EVERYWHERE=ALLOW_HORIZONTAL|ALLOW_VERTICAL    
00115     };
00116 public:
00117 
00127   FXDockBar(FXComposite* p,FXComposite* q,FXuint opts=LAYOUT_TOP|LAYOUT_LEFT|LAYOUT_FILL_X,FXint x=0,FXint y=0,FXint w=0,FXint h=0,FXint pl=3,FXint pr=3,FXint pt=2,FXint pb=2,FXint hs=DEFAULT_SPACING,FXint vs=DEFAULT_SPACING);
00128 
00133   FXDockBar(FXComposite* p,FXuint opts,FXint x=0,FXint y=0,FXint w=0,FXint h=0,FXint pl=2,FXint pr=3,FXint pt=3,FXint pb=2,FXint hs=DEFAULT_SPACING,FXint vs=DEFAULT_SPACING);
00134 
00136   FXbool isDocked() const;
00137 
00141   FXbool insideDock(FXDockSite* docksite,FXint barx,FXint bary);
00142 
00147   void setDryDock(FXComposite* dry);
00148 
00153   void setWetDock(FXComposite* wet);
00154 
00156   FXComposite* getDryDock() const { return drydock; }
00157 
00159   FXComposite* getWetDock() const { return wetdock; }
00160 
00162   FXDockSite* findDockAtSide(FXuint side=LAYOUT_SIDE_TOP);
00163 
00165   FXDockSite* findDockNear(FXint rootx,FXint rooty);
00166 
00172   virtual void dock(FXDockSite* docksite,FXWindow* other=NULL,FXbool notify=false);
00173 
00178   virtual void dock(FXDockSite* docksite,FXint localx,FXint localy,FXbool notify);
00179 
00185   virtual void undock(FXint rootx,FXint rooty,FXbool notify=false);
00186 
00191   void allowedSides(FXuchar allow){ allowed=allow; }
00192 
00196   FXuchar allowedSides() const { return allowed; }
00197 
00199   virtual void save(FXStream& store) const;
00200 
00202   virtual void load(FXStream& store);
00203 
00205   virtual ~FXDockBar();
00206   };
00207 
00208 }
00209 
00210 #endif

Copyright © 1997-2011 Jeroen van der Zijp