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 FXDOCKBAR_H
00025
#define FXDOCKBAR_H
00026
00027
#ifndef FXPACKER_H
00028
#include "FXPacker.h"
00029
#endif
00030
00031
namespace FX {
00032
00033
class FXDockSite;
00034
00035
00036
00037
00038
00039
00040
00041 class FXAPI FXDockBar :
public FXPacker {
00042 FXDECLARE(FXDockBar)
00043
protected:
00044
FXComposite *drydock;
00045
FXComposite *wetdock;
00046 FXint gripx;
00047 FXint gripy;
00048 FXuchar allowed;
00049
protected:
00050 FXDockBar();
00051 FXbool insideDock(
FXDockSite* docksite,FXint barx,FXint bary);
00052
private:
00053 FXDockBar(
const FXDockBar&);
00054 FXDockBar &operator=(
const FXDockBar&);
00055
public:
00056
long onCmdUndock(
FXObject*,FXSelector,
void*);
00057
long onUpdUndock(
FXObject*,FXSelector,
void*);
00058
long onCmdDockTop(
FXObject*,FXSelector,
void*);
00059
long onUpdDockTop(
FXObject*,FXSelector,
void*);
00060
long onCmdDockBottom(
FXObject*,FXSelector,
void*);
00061
long onUpdDockBottom(
FXObject*,FXSelector,
void*);
00062
long onCmdDockLeft(
FXObject*,FXSelector,
void*);
00063
long onUpdDockLeft(
FXObject*,FXSelector,
void*);
00064
long onCmdDockRight(
FXObject*,FXSelector,
void*);
00065
long onUpdDockRight(
FXObject*,FXSelector,
void*);
00066
long onUpdDockFlip(
FXObject*,FXSelector,
void*);
00067
long onBeginDragGrip(
FXObject*,FXSelector,
void*);
00068
long onEndDragGrip(
FXObject*,FXSelector,
void*);
00069
long onDraggedGrip(
FXObject*,FXSelector,
void*);
00070
long onPopupMenu(
FXObject*,FXSelector,
void*);
00071
long onDockTimer(
FXObject*,FXSelector,
void*);
00072
public:
00073
enum {
00074 ID_DOCK_FLOAT=FXPacker::ID_LAST,
00075 ID_DOCK_TOP,
00076 ID_DOCK_BOTTOM,
00077 ID_DOCK_LEFT,
00078 ID_DOCK_RIGHT,
00079 ID_DOCK_FLIP,
00080 ID_TOOLBARGRIP,
00081 ID_TIMER,
00082 ID_LAST
00083 };
00084
public:
00085
enum {
00086 ALLOW_NOWHERE=0,
00087 ALLOW_TOP=1,
00088 ALLOW_BOTTOM=2,
00089 ALLOW_LEFT=4,
00090 ALLOW_RIGHT=8,
00091 ALLOW_HORIZONTAL=ALLOW_TOP|ALLOW_BOTTOM,
00092 ALLOW_VERTICAL=ALLOW_LEFT|ALLOW_RIGHT,
00093 ALLOW_EVERYWHERE=ALLOW_HORIZONTAL|ALLOW_VERTICAL
00094 };
00095
public:
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106 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);
00107
00108
00109
00110
00111
00112 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);
00113
00114
00115 FXbool isDocked()
const;
00116
00117
00118
00119
00120
00121 void setDryDock(
FXComposite* dry);
00122
00123
00124
00125
00126
00127
void setWetDock(
FXComposite* wet);
00128
00129
00130
FXComposite* getDryDock()
const {
return drydock; }
00131
00132
00133
FXComposite* getWetDock()
const {
return wetdock; }
00134
00135
00136 FXDockSite* findDockAtSide(FXuint side=LAYOUT_SIDE_TOP);
00137
00138
00139 FXDockSite* findDockNear(FXint rootx,FXint rooty);
00140
00141
00142
00143
00144
00145
00146
virtual void dock(FXDockSite* docksite,FXWindow* before=NULL);
00147
00148
00149
00150
00151
00152
virtual void dock(FXDockSite* docksite,FXint localx,FXint localy);
00153
00154
00155
00156
00157
00158
00159
virtual void undock(FXint rootx,FXint rooty);
00160
00161
00162
00163
00164
00165
void allowedSides(FXuchar allow=ALLOW_EVERYWHERE){ allowed=allow; }
00166
00167
00168
00169
00170 FXuchar allowedSides()
const {
return allowed; }
00171
00172
00173
virtual void save(FXStream& store)
const;
00174
00175
00176
virtual void load(FXStream& store);
00177
00178
00179
virtual ~FXDockBar();
00180 };
00181
00182 }
00183
00184
#endif