// ======================================================================================== // TSplitter.h Copyright (C) 2001-2002 Mike Lockwood. All rights reserved. // ======================================================================================== /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef __TSplitter__ #define __TSplitter__ #include "TWindow.h" class TDrawContext; class TSplitter : public TWindow { public: TSplitter(TWindow* parent, const TRect& bounds, bool vertical, bool liveDrag = true, float ratio = 0.5); void SetChildren(TWindow* child1, TWindow* child2); void GetChild1Rect(TRect& rect) const; void GetChild2Rect(TRect& rect) const; void GetSplitterRect(float ratio, TRect& rect) const; virtual void Create(); protected: virtual ~TSplitter(); void ResizeChildren(); virtual void Draw(TRegion* clip); virtual void DoMouseDown(const TPoint& point, TMouseButton button, TModifierState state); virtual void DoMouseUp(const TPoint& point, TMouseButton button, TModifierState state); virtual void DoMouseMoved(const TPoint& point, TModifierState state); void ConstrainMouse(const TPoint& mouse, TPoint& newPoint); void GetTrackingRect(const TPoint& point, TRect& rect); void DrawTrackingRect(const TRect& rect); void DrawSplitterRect(TDrawContext& context); virtual void NotifyBoundsChanged(const TRect& oldBounds); protected: TWindow* fChild1; TWindow* fChild2; bool fVertical; float fRatio; // position of splitter, between 0 and 1 bool fTracking; // true if we are tracking the mouse TPoint fLastMouse; bool fLiveDrag; }; #endif // __TSplitter__