#ifndef ROOT_TGDockableFrame
#define ROOT_TGDockableFrame
#ifndef ROOT_TGFrame
#include "TGFrame.h"
#endif
#ifndef ROOT_TGWidget
#include "TGWidget.h"
#endif
#ifndef ROOT_TGButton
#include "TGButton.h"
#endif
#ifndef ROOT_TGWindow
#include "TGWindow.h"
#endif
class TGDockableFrame;
class TGDockButton : public TGButton {
protected:
Bool_t fMouseOn;
ULong_t fNormBg;
ULong_t fHiBg;
virtual void DrawBorder();
virtual void DoRedraw();
public:
TGDockButton(const TGCompositeFrame *p = 0, Int_t id = 1);
virtual ~TGDockButton();
virtual Bool_t HandleCrossing(Event_t *event);
ClassDef(TGDockButton,0)
};
class TGDockHideButton : public TGDockButton {
protected:
Int_t fAspectRatio;
virtual void DoRedraw();
public:
TGDockHideButton(const TGCompositeFrame *p = 0);
void SetAspectRatio(Int_t a) { fAspectRatio = a; DoRedraw(); }
ClassDef(TGDockHideButton,0)
};
class TGUndockedFrame : public TGTransientFrame {
private:
TGUndockedFrame(const TGUndockedFrame&);
TGUndockedFrame& operator=(const TGUndockedFrame&);
protected:
TGDockableFrame *fDockable;
public:
TGUndockedFrame(const TGWindow *p = 0, TGDockableFrame *dockable = 0);
virtual ~TGUndockedFrame();
void FixSize();
void CloseWindow();
ClassDef(TGUndockedFrame,0)
};
class TGDockableFrame : public TGCompositeFrame, public TGWidget {
friend class TGUndockedFrame;
private:
TGDockableFrame(const TGDockableFrame&);
TGDockableFrame& operator=(const TGDockableFrame&);
protected:
Bool_t fHidden;
Bool_t fEnableHide;
Bool_t fEnableUndock;
Bool_t fDeleted;
Bool_t fFixedSize;
TString fDockName;
TGCompositeFrame *fContainer;
TGCompositeFrame *fButtons;
TGDockButton *fDockButton;
TGDockHideButton *fHideButton;
TGUndockedFrame *fFrame;
TGLayoutHints *fCl, *fHints;
TGLayoutHints *fLb, *fLc;
public:
TGDockableFrame(const TGWindow *p = 0, Int_t id = -1,
UInt_t options = kHorizontalFrame);
virtual ~TGDockableFrame();
virtual void AddFrame(TGFrame *f, TGLayoutHints *hints);
virtual Bool_t ProcessMessage(Long_t, Long_t, Long_t);
virtual void Docked() { Emit("Docked()"); }
virtual void Undocked() { Emit("Undocked()"); }
void UndockContainer();
void DockContainer(Int_t del = kTRUE);
void HideContainer();
void ShowContainer();
void EnableUndock(Bool_t onoff);
Bool_t EnableUndock() const { return fEnableUndock; }
void EnableHide(Bool_t onoff);
Bool_t EnableHide() const { return fEnableHide; }
void SetWindowName(const char *name);
Bool_t IsUndocked() const { return (fFrame != 0); }
Bool_t IsHidden() const { return fHidden; }
Bool_t IsFixedSize() const { return fFixedSize; }
void SetFixedSize(Bool_t fixed) { fFixedSize = fixed; }
TGCompositeFrame *GetContainer() const { return fContainer; }
TGUndockedFrame *GetUndocked() const { return fFrame; }
virtual void SavePrimitive(ostream &out, Option_t *option = "");
ClassDef(TGDockableFrame,0)
};
#endif