#pragma once #ifndef TNZ_PANEL_INCLUDED #define TNZ_PANEL_INCLUDED #include "tw/tw.h" #include "tw/button.h" class TPanel : public TWidget { int m_border, m_resizeHandleWidth; TWidget *m_dockWidget; TButton *m_maximizeButton; bool m_maximized; int m_status; public: enum Side { Center, Top, Right, Bottom, Left }; public: TPanel(TWidget *parent, string name); void draw(); void keyDown(int key, TUINT32 flags, const TPoint &p); void close(); void dockToggle(); void maximizeToggle(); void configureNotify(const TDimension &d); void mouseMove(const TPoint &p); void leftButtonDown(const TMouseEvent &e); void leftButtonUp(const TMouseEvent &e); void leave(const TPoint &p); void enter(const TPoint &p); Side findSide(const TPoint &p); bool canMoveSide(Side side); static TPanel *createPanel(TWidget *parent, string name); void setParent(TWidget *p) { TWidget::setParent(p); m_dockWidget = p; }; }; class TPanelResizer { public: TPanelResizer(){}; virtual bool canMoveSide(TPanel *panel, TPanel::Side side) = 0; virtual void moveSide(TPanel *panel, TPanel::Side side) = 0; }; #endif