%
% automatically generated by HelpGen $Revision$ from
-% dyntbar.h at 05/Jan/02 22:50:56
+% dyntbar.h at 21/Jan/02 21:14:18
%
\section{\class{BagLayout}}\label{baglayout}
-layouts items in left-to-right order from
-top towards bottom
+BagLayout lays out items in left-to-right order from
+top to bottom.
\wxheading{Derived from}
\helpref{LayoutManagerBase}{layoutmanagerbase}
+\wxheading{Include files}
+
+<dyntbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{void}{Layout}{\param{const wxSize\& }{parentDim}, \param{wxSize\& }{resultingDim}, \param{wxLayoutItemArrayT\& }{items}, \param{int }{horizGap}, \param{int }{vertGap}}
+Constructor.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:50:59
+% controlbar.h at 21/Jan/02 21:14:14
%
\section{\class{wxBarIterator}}\label{wxbariterator}
-used for traversing through all bars of all rows in the pane
+Used for traversing through all bars of all rows in the pane.
\wxheading{Derived from}
No base class
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{wxBarIterator}{\param{RowArrayT\& }{rows}}
+Constructor, taking row array.
+
\membersection{wxBarIterator::BarInfo}\label{wxbariteratorbarinfo}
\func{cbBarInfo\&}{BarInfo}{\void}
+Gets the current bar information.
+
\membersection{wxBarIterator::Next}\label{wxbariteratornext}
\func{bool}{Next}{\void}
-TRUE, if next bar is available
+Advances the iterator and returns TRUE if a bar is available.
\membersection{wxBarIterator::Reset}\label{wxbariteratorreset}
\func{void}{Reset}{\void}
+Resets the iterator to the start of the first row.
+
\membersection{wxBarIterator::RowInfo}\label{wxbariteratorrowinfo}
\func{cbRowInfo\&}{RowInfo}{\void}
-returns reference to currently traversed row
+Returns a reference to the currently traversed row.
\setfooter{\thepage}{}{}{}{}{\thepage}%
A classification of FL classes by category.
-\twocolwidtha{5cm}
-\begin{comment}
-{\large {\bf Service classes}}
+{\large {\bf Plugin classes}}
-\overview{wxMPService class overview}{wxmpserviceoverview}
+Plugins can be added to frame layouts to extend behaviour.
-Service classes reduce the diversity of PMF classes, by making
-them comply to a common interface. A service class serves as an interface (or
-mix-in class in C++ terms), which cannot itself represent an
-independent object. It should be inherited as a second (or
-third) base class.
+\twocolwidtha{6cm}
+\begin{twocollist}\itemsep=0pt
+\twocolitem{\helpref{cbAntiflickerPlugin}{cbantiflickerplugin}}{Double-buffering class}
+\twocolitem{\helpref{cbBarDragPlugin}{cbbardragplugin}}{Implements drag behaviour.}
+\twocolitem{\helpref{cbBarHintsPlugin}{cbbarhintsplugin}}{Implements bar decoration and sizing behaviour.}
+\twocolitem{\helpref{cbHintAnimationPlugin}{cbhintanimationplugin}}{Draws animated hints when the user drags a pane.}
+\twocolitem{\helpref{cbPaneDrawPlugin}{cbpanedrawplugin}}{Implements most of MFC-style control bar implementation.}
+\twocolitem{\helpref{cbPluginBase}{cbpluginbase}}{Abstract base class for all control-bar related plugins.}
+\twocolitem{\helpref{cbRowDragPlugin}{cbrowdragplugin}}{Implements row-dragging functionality.}
+\twocolitem{\helpref{cbRowLayoutPlugin}{cbrowlayoutplugin}}{Implements row layout functionality.}
+\twocolitem{\helpref{cbSimpleCustomizationPlugin}{cbsimplecustomizationplugin}}{Enables customization of a bar.}
+\twocolitem{\helpref{cbBarSpy}{cbbarspy}}{Helper class used for spying for unhandled mouse events on control bars and forwarding them to the frame layout.}
+\end{twocollist}
+
+{\large {\bf Window classes}}
+
+Windows classes (note that the mini-button implementations are not true windows
+in that they do not derive from wxWindow).
+
+\twocolwidtha{6cm}
+\begin{twocollist}\itemsep=0pt
+\twocolitem{\helpref{wxToolWindow}{wxtoolwindow}}{A small frame that paints its own titlebar.}
+\twocolitem{\helpref{cbFloatedBarWindow}{cbfloatedbarwindow}}{A kind of wxToolWindow implementing floating windows.}
+\twocolitem{\helpref{cbMiniButton}{cbminibutton}}{Base class for wxToolWindow titlebar buttons.}
+\twocolitem{\helpref{cbCloseBox}{cbclosebox}}{Close button for wxToolWindow titlebar.}
+\twocolitem{\helpref{cbCollapseBox}{cbcollapsebox}}{Collapse button for wxToolWindow titlebar.}
+\twocolitem{\helpref{cbDockBox}{cbdockbox}}{Dock button for wxToolWindow titlebar.}
+\twocolitem{\helpref{cbCloseBox}{cbclosebox}}{Close button for wxToolWindow titlebar.}
+\twocolitem{\helpref{wxNewBitmapButton}{wxnewbitmapbutton}}{Alternative bitmap button class.}
+\end{twocollist}
+
+{\large {\bf Layout management classes}}
+
+These classes relate to the layout management framework.
+
+\twocolwidtha{6cm}
+\begin{twocollist}\itemsep=0pt
+\twocolitem{\helpref{cbDockPane}{cbdockpane}}{Manages containment and control of bars in a prent frame.}
+\twocolitem{\helpref{BagLayout}{baglayout}}{BagLayout lays out items in left-to-right order from top to bottom.}
+\twocolitem{\helpref{cbUpdatesManagerBase}{cbupdatesmanagerbase}}{An abstract interface for display update optimization logic.}
+\twocolitem{\helpref{cbSimpleUpdatesMgr}{cbsimpleupdatesmgr}}{Implements optimized logic for refreshing areas of frame layout that need to be updated.}
+\twocolitem{\helpref{cbGCUpdatesMgr}{cbgcupdatesmgr}}{Implements optimized logic for refresh, based on a garbage collection algorithm.}
+\twocolitem{\helpref{GarbageCollector}{garbagecollector}}{A garbage collection algorithm for use in display refresh optimization.}
+\twocolitem{\helpref{wxFrameLayout}{wxframelayout}}{Manages containment and docking of control bars, which can be docked along the top, bottom, right, or left side of the parent frame.}
+\end{twocollist}
+
+{\large {\bf Event classes}}
-Derived services classes all derive from wxEvtHandler as well as
-wxPMService.
+Events are used to decouple parts of the layout framework.
+\twocolwidtha{6cm}
\begin{twocollist}\itemsep=0pt
-\twocolitem{\helpref{wxPMService}{wxpmservice}}{Base class}
-\twocolitem{\helpref{wxPMBootstrapService}{wxpmbootstrapservice}}{Boot strap service}
-\twocolitem{\helpref{wxPMLAlgorithm}{wxpmlalgorithm}}{Layout algorithm service}
-\twocolitem{\helpref{wxPMSashLayoutAlgorithm}{wxpmsashlayoutalgorithm}}{Sash layout algorithm service}
-\twocolitem{\helpref{wxPMPane}{wxpmpane}}{Base class for panes lying outside the MDI client area}
+\twocolitem{\helpref{cbCustomizeBarEvent}{cbcustomizebarevent}}{Class for bar customization events.}
+\twocolitem{\helpref{cbCustomizeLayoutEvent}{cbcustomizelayoutevent}}{Class for layout customization events.}
+\twocolitem{\helpref{cbDrawBarDecorEvent}{cbdrawbardecorevent}}{Class for bar decoration drawing events.}
+\twocolitem{\helpref{cbDrawBarHandlesEvent}{cbdrawbarhandlesevent}}{Class for bar handles drawing events.}
+\twocolitem{\helpref{cbDrawHintRectEvent}{cbdrawhintrectevent}}{Class for hint-rectangle drawing events.}
+\twocolitem{\helpref{cbDrawPaneBkGroundEvent}{cbdrawpanebkgroundevent}}{Class for pane background drawing events.}
+\twocolitem{\helpref{cbDrawPaneDecorEvent}{cbdrawpanedecorevent}}{Class for pane decoration drawing events.}
+\twocolitem{\helpref{cbDrawRowBkGroundEvent}{cbdrawrowbkgroundevent}}{Class for row background drawing events.}
+\twocolitem{\helpref{cbDrawRowDecorEvent}{cbdrawrowdecorevent}}{Class for row decoration drawing events.}
+\twocolitem{\helpref{cbDrawRowHandlesEvent}{cbdrawrowhandlesevent}}{Class for row handles drawing events.}
+\twocolitem{\helpref{cbFinishDrawInAreaEvent}{cbfinishdrawinareaevent}}{Class for finish drawing in area events.}
+\twocolitem{\helpref{cbInsertBarEvent}{cbinsertbarevent}}{Class for bar insertion events.}
+\twocolitem{\helpref{cbLayoutRowEvent}{cblayoutrowevent}}{Class for single row layout events.}
+\twocolitem{\helpref{cbLayoutRowsEvent}{cblayoutrowsevent}}{Class for multiple rows layout events.}
+\twocolitem{\helpref{cbLeftDClickEvent}{cbleftdclickevent}}{Class for mouse left double click events.}
+\twocolitem{\helpref{cbLeftDownEvent}{cbleftdownevent}}{Class for mouse left down events.}
+\twocolitem{\helpref{cbLeftUpEvent}{cbleftupevent}}{Class for mouse left up events.}
+\twocolitem{\helpref{cbMotionEvent}{cbmotionevent}}{Class for mouse motion events.}
+\twocolitem{\helpref{cbPluginEvent}{cbpluginevent}}{Base class for all control-bar plugin events.}
+\twocolitem{\helpref{cbRemoveBarEvent}{cbremovebarevent}}{Class for bar removal events.}
+\twocolitem{\helpref{cbResizeBarEvent}{cbresizebarevent}}{Class for bar resize events.}
+\twocolitem{\helpref{cbResizeRowEvent}{cbresizerowevent}}{Class for row resize events.}
+\twocolitem{\helpref{cbRightDownEvent}{cbrightdownevent}}{Class for mouse right down events.}
+\twocolitem{\helpref{cbRightUpEvent}{cbrightupevent}}{Class for mouse right up events.}
+\twocolitem{\helpref{cbSizeBarWndEvent}{cbsizebarwndevent}}{Class for bar window resize events.}
+\twocolitem{\helpref{cbStartBarDraggingEvent}{cbstartbardraggingevent}}{Class for start-bar-dragging events.}
+\twocolitem{\helpref{cbStartDrawInAreaEvent}{cbstartdrawinareaevent}}{Class for start drawing in area events.}
\end{twocollist}
-\end{comment}
%
% automatically generated by HelpGen $Revision$ from
-% antiflickpl.h at 05/Jan/02 22:50:56
+% antiflickpl.h at 21/Jan/02 21:14:17
%
\section{\class{cbAntiflickerPlugin}}\label{cbantiflickerplugin}
+
+Implements double-buffering to reduce flicker.
+Bitmap and memory DC buffers are shared 'resources' among all instances of
+antiflicker plugins within the application.
+
+Locking for multithreaded applications is not yet implemented.
+
\wxheading{Derived from}
\helpref{cbPluginBase}{cbpluginbase}
+\wxheading{Include files}
+
+<antiflickpl.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbAntiflickerPlugin}{\void}
+Default constructor.
+
\func{}{cbAntiflickerPlugin}{\param{wxFrameLayout* }{pPanel}, \param{int }{paneMask = wxALL\_PANES}}
+Constructor taking frame layout panel, and pane mask.
+
\membersection{cbAntiflickerPlugin::\destruct{cbAntiflickerPlugin}}\label{cbantiflickerplugindtor}
\func{}{\destruct{cbAntiflickerPlugin}}{\void}
+Destructor.
+
\membersection{cbAntiflickerPlugin::AllocNewBuffer}\label{cbantiflickerpluginallocnewbuffer}
\func{wxDC*}{AllocNewBuffer}{\param{const wxRect\& }{forArea}}
+Allocates a suitable buffer.
+
\membersection{cbAntiflickerPlugin::FindSuitableBuffer}\label{cbantiflickerpluginfindsuitablebuffer}
\func{wxDC*}{FindSuitableBuffer}{\param{const wxRect\& }{forArea}}
-returns NULL, if sutable buffer is not present
+Finds a suitable buffer. Returns NULL if a suitable buffer is not present.
\membersection{cbAntiflickerPlugin::GetClientDC}\label{cbantiflickerplugingetclientdc}
\func{wxDC\&}{GetClientDC}{\void}
+Gets the client device context.
+
\membersection{cbAntiflickerPlugin::GetWindowDC}\label{cbantiflickerplugingetwindowdc}
\func{wxDC\&}{GetWindowDC}{\void}
+Gets the window device context.
+
\membersection{cbAntiflickerPlugin::OnFinishDrawInArea}\label{cbantiflickerpluginonfinishdrawinarea}
\func{void}{OnFinishDrawInArea}{\param{cbFinishDrawInAreaEvent\& }{event}}
+Handler for plugin event.
+
\membersection{cbAntiflickerPlugin::OnStartDrawInArea}\label{cbantiflickerpluginonstartdrawinarea}
\func{void}{OnStartDrawInArea}{\param{cbStartDrawInAreaEvent\& }{event}}
-handlers for plugin events
+Handler for plugin event.
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:50:58
+% controlbar.h at 21/Jan/02 21:14:13
%
Abstract interface for bar-size handler classes.
- These objects receive notifications, whenever the docking
- state of the bar is changed, thus they have a possibility
- to adjust the values in cbDimInfo::mSizes accordingly.
- Specific handlers can be hooked to specific types of bars.
-
+These objects receive notifications whenever the docking
+state of the bar is changed, thus they provide the possibility
+to adjust the values in cbDimInfo::mSizes accordingly.
+Specific handlers can be hooked up to specific types of bar.
+
\wxheading{Derived from}
\helpref{wxObject}{wxobject}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
to multiple bars, it's instance is
reference-counted
-initial reference count is 0, since handler is not used, until the
-first invocation of AddRef()
+Default constructor. The initial reference count is 0, since
+the handler is not used until the first invocation of AddRef().
\membersection{cbBarDimHandlerBase::AddRef}\label{cbbardimhandlerbaseaddref}
\func{void}{AddRef}{\void}
+Increments the reference count.
+
\membersection{cbBarDimHandlerBase::OnChangeBarState}\label{cbbardimhandlerbaseonchangebarstate}
\func{void}{OnChangeBarState}{\param{cbBarInfo* }{pBar}, \param{int }{newState}}
-"bar-state-changes" notification
+Responds to "bar-state-changes" notifications.
\membersection{cbBarDimHandlerBase::OnResizeBar}\label{cbbardimhandlerbaseonresizebar}
\func{void}{OnResizeBar}{\param{cbBarInfo* }{pBar}, \param{const wxSize\& }{given}, \param{wxSize\& }{preferred}}
+Responds to bar resize notifications.
+
\membersection{cbBarDimHandlerBase::RemoveRef}\label{cbbardimhandlerbaseremoveref}
\func{void}{RemoveRef}{\void}
+Decrements the reference count, and if the count is at zero,
+delete 'this'.
+
%
% automatically generated by HelpGen $Revision$ from
-% bardragpl.h at 05/Jan/02 22:50:56
+% bardragpl.h at 21/Jan/02 21:14:17
%
\section{\class{cbBarDragPlugin}}\label{cbbardragplugin}
+
+Plugin class implementing bar dragging.
+
\wxheading{Derived from}
\helpref{cbPluginBase}{cbpluginbase}
+\wxheading{Include files}
+
+<bardragpl.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbBarDragPlugin}{\void}
+Default constructor.
+
\func{}{cbBarDragPlugin}{\param{wxFrameLayout* }{pPanel}, \param{int }{paneMask = wxALL\_PANES}}
+Constructor taking a parent frame, and flag. See cbPluginBase.
+
\membersection{cbBarDragPlugin::\destruct{cbBarDragPlugin}}\label{cbbardragplugindtor}
\func{}{\destruct{cbBarDragPlugin}}{\void}
+Destructor.
+
\membersection{cbBarDragPlugin::AdjustHintRect}\label{cbbardragpluginadjusthintrect}
the thicker rectangle is drawn using hatched brush,
the default border width for this rectangle is 8 pix.
+Internal implementation function.
\membersection{cbBarDragPlugin::CalcOnScreenDims}\label{cbbardragplugincalconscreendims}
\func{void}{CalcOnScreenDims}{\param{wxRect\& }{rect}}
+Internal implementation function.
+
\membersection{cbBarDragPlugin::ClipPosInFrame}\label{cbbardragpluginclipposinframe}
\func{void}{ClipPosInFrame}{\param{wxPoint\& }{pos}}
+Internal implementation function.
+
\membersection{cbBarDragPlugin::ClipRectInFrame}\label{cbbardragplugincliprectinframe}
\func{void}{ClipRectInFrame}{\param{wxRect\& }{rect}}
+Internal implementation function.
+
\membersection{cbBarDragPlugin::DoDrawHintRect}\label{cbbardragplugindodrawhintrect}
\func{void}{DoDrawHintRect}{\param{wxRect\& }{rect}, \param{bool }{isInClientRect}}
+Internal implementation function.
+Draw the hint rectangle.
+
\membersection{cbBarDragPlugin::DrawHintRect}\label{cbbardragplugindrawhintrect}
\func{void}{DrawHintRect}{\param{wxRect\& }{rect}, \param{bool }{isInClientRect}}
+Internal implementation function.
+Draw the visual hint while dragging.
+
\membersection{cbBarDragPlugin::EraseHintRect}\label{cbbardragpluginerasehintrect}
\func{void}{EraseHintRect}{\param{wxRect\& }{rect}, \param{bool }{isInClientRect}}
+Internal implementation function.
+Erase the visual hint while dragging.
+
\membersection{cbBarDragPlugin::FinishTracking}\label{cbbardragpluginfinishtracking}
\func{void}{FinishTracking}{\void}
+Internal implementation function.
+Stop showing the visual hint while dragging.
+
\membersection{cbBarDragPlugin::GetBarHeightInPane}\label{cbbardragplugingetbarheightinpane}
\func{int}{GetBarHeightInPane}{\param{cbDockPane* }{pPane}}
+Internal implementation function.
+
\membersection{cbBarDragPlugin::GetBarWidthInPane}\label{cbbardragplugingetbarwidthinpane}
\func{int}{GetBarWidthInPane}{\param{cbDockPane* }{pPane}}
+Internal implementation function.
+
\membersection{cbBarDragPlugin::GetDistanceToPane}\label{cbbardragplugingetdistancetopane}
\func{int}{GetDistanceToPane}{\param{cbDockPane* }{pPane}, \param{wxPoint\& }{mousePos}}
+Internal implementation function.
+
\membersection{cbBarDragPlugin::HitTestPanes}\label{cbbardragpluginhittestpanes}
\func{cbDockPane*}{HitTestPanes}{\param{wxRect\& }{rect}}
+Internal implementation function. Finds the pane
+under the specified rectangle.
+
\func{cbDockPane*}{HitTestPanes}{\param{wxPoint\& }{pos}}
+Internal implementation function. Finds the pane
+under the specified point.
+
\membersection{cbBarDragPlugin::HitsPane}\label{cbbardragpluginhitspane}
\func{bool}{HitsPane}{\param{cbDockPane* }{pPane}, \param{wxRect\& }{rect}}
+Internal implementation function.
+
\membersection{cbBarDragPlugin::IsInClientArea}\label{cbbardragpluginisinclientarea}
\func{bool}{IsInClientArea}{\param{wxPoint\& }{mousePos}}
+Internal implementation function.
+
\func{bool}{IsInClientArea}{\param{wxRect\& }{rect}}
+Internal implementation function.
+
\membersection{cbBarDragPlugin::IsInOtherPane}\label{cbbardragpluginisinotherpane}
\func{bool}{IsInOtherPane}{\param{wxPoint\& }{mousePos}}
+Internal implementation function.
+
\membersection{cbBarDragPlugin::OnDrawHintRect}\label{cbbardragpluginondrawhintrect}
\func{void}{OnDrawHintRect}{\param{cbDrawHintRectEvent\& }{event}}
-handles event, which oriniates from itself
+Handles event, which originates from itself.
\membersection{cbBarDragPlugin::OnLButtonDown}\label{cbbardragpluginonlbuttondown}
\func{void}{OnLButtonDown}{\param{cbLeftDownEvent\& }{event}}
+Handler for plugin event.
+
\membersection{cbBarDragPlugin::OnLButtonUp}\label{cbbardragpluginonlbuttonup}
\func{void}{OnLButtonUp}{\param{cbLeftUpEvent\& }{event}}
+Handler for plugin event.
+
\membersection{cbBarDragPlugin::OnLDblClick}\label{cbbardragpluginonldblclick}
\func{void}{OnLDblClick}{\param{cbLeftDClickEvent\& }{event}}
+Handler for plugin event.
+
\membersection{cbBarDragPlugin::OnMouseMove}\label{cbbardragpluginonmousemove}
\func{void}{OnMouseMove}{\param{cbMotionEvent\& }{event}}
-handlers for plugin events
+Handler for plugin event.
\membersection{cbBarDragPlugin::OnStartBarDragging}\label{cbbardragpluginonstartbardragging}
\func{void}{OnStartBarDragging}{\param{cbStartBarDraggingEvent\& }{event}}
+Handler for plugin event.
+
\membersection{cbBarDragPlugin::RectToScr}\label{cbbardragpluginrecttoscr}
\func{void}{RectToScr}{\param{wxRect\& }{frameRect}, \param{wxRect\& }{scrRect}}
+Internal implementation function.
+Converts the given rectangle from window to screen coordinates.
+
\membersection{cbBarDragPlugin::ShowHint}\label{cbbardragpluginshowhint}
\func{void}{ShowHint}{\param{bool }{prevWasInClient}}
+Internal implementation function.
+Show the hint; called within OnMouseMove.
+
\membersection{cbBarDragPlugin::StartTracking}\label{cbbardragpluginstarttracking}
\func{void}{StartTracking}{\void}
on-screen hint-tracking related methods
+Internal implementation function.
+Start showing a visual hint while dragging.
\membersection{cbBarDragPlugin::StickToPane}\label{cbbardragpluginsticktopane}
\func{void}{StickToPane}{\param{cbDockPane* }{pPane}, \param{wxPoint\& }{mousePos}}
+Internal implementation function.
+
\membersection{cbBarDragPlugin::UnstickFromPane}\label{cbbardragpluginunstickfrompane}
\func{void}{UnstickFromPane}{\param{cbDockPane* }{pPane}, \param{wxPoint\& }{mousePos}}
+Internal implementation function.
+
%
% automatically generated by HelpGen $Revision$ from
-% barhintspl.h at 05/Jan/02 22:50:56
+% barhintspl.h at 21/Jan/02 21:14:18
%
\section{\class{cbBarHintsPlugin}}\label{cbbarhintsplugin}
-Intercepts bar-decoration and sizing events, draws 3d-hints
- around fixed and flexible bars, similar to those in Microsoft DevStudio 6.x
-
+This class intercepts bar-decoration and sizing events, and draws 3D hints
+around fixed and flexible bars, similar to those in Microsoft DevStudio 6.x
+
\wxheading{Derived from}
\helpref{cbPluginBase}{cbpluginbase}
+\wxheading{Include files}
+
+<barhintspl.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbBarHintsPlugin}{\void}
+Default constructor.
+
\func{}{cbBarHintsPlugin}{\param{wxFrameLayout* }{pLayout}, \param{int }{paneMask = wxALL\_PANES}}
+Constructor, taking parent frame and pane mask flag.
+
\membersection{cbBarHintsPlugin::\destruct{cbBarHintsPlugin}}\label{cbbarhintsplugindtor}
\func{}{\destruct{cbBarHintsPlugin}}{\void}
+Destructor.
+
\membersection{cbBarHintsPlugin::CreateBoxes}\label{cbbarhintsplugincreateboxes}
\func{void}{CreateBoxes}{\void}
+Helper function: creates close and collapse boxes.
+
\membersection{cbBarHintsPlugin::DoDrawHint}\label{cbbarhintsplugindodrawhint}
\func{void}{DoDrawHint}{\param{wxDC\& }{dc}, \param{wxRect\& }{rect}, \param{int }{pos}, \param{int }{boxOfs}, \param{int }{grooveOfs}, \param{bool }{isFixed}}
+Helper function: draws a hint.
+
\membersection{cbBarHintsPlugin::Draw3DBox}\label{cbbarhintsplugindraw3dbox}
\func{void}{Draw3DBox}{\param{wxDC\& }{dc}, \param{const wxPoint\& }{pos}, \param{bool }{pressed}}
-drawing helpers
+Helper function: draws a 3D box.
\membersection{cbBarHintsPlugin::DrawCloseBox}\label{cbbarhintsplugindrawclosebox}
\func{void}{DrawCloseBox}{\param{wxDC\& }{dc}, \param{const wxPoint\& }{pos}, \param{bool }{pressed}}
+Helper function: draws a close box.
+
\membersection{cbBarHintsPlugin::DrawCollapseBox}\label{cbbarhintsplugindrawcollapsebox}
\func{void}{DrawCollapseBox}{\param{wxDC\& }{dc}, \param{const wxPoint\& }{pos}, \param{bool }{atLeft}, \param{bool }{disabled}, \param{bool }{pressed}}
+Helper function: draws a collapse box.
+
\membersection{cbBarHintsPlugin::DrawGrooves}\label{cbbarhintsplugindrawgrooves}
\func{void}{DrawGrooves}{\param{wxDC\& }{dc}, \param{const wxPoint\& }{pos}, \param{int }{length}}
+Helper function: draws grooves.
+
\membersection{cbBarHintsPlugin::ExcludeHints}\label{cbbarhintspluginexcludehints}
\func{void}{ExcludeHints}{\param{wxRect\& }{rect}, \param{cbBarInfo\& }{info}}
+Helper function.
+
\membersection{cbBarHintsPlugin::GetHintsLayout}\label{cbbarhintsplugingethintslayout}
\func{void}{GetHintsLayout}{\param{wxRect\& }{rect}, \param{cbBarInfo\& }{info}, \param{int\& }{boxOfs}, \param{int\& }{grooveOfs}, \param{int\& }{pos}}
+Helper function: gets the layout of a hint.
+
\membersection{cbBarHintsPlugin::HitTestHints}\label{cbbarhintspluginhittesthints}
\func{int}{HitTestHints}{\param{cbBarInfo\& }{info}, \param{const wxPoint\& }{pos}}
+Helper function: returns information about the hint under the given position.
+
\membersection{cbBarHintsPlugin::OnDrawBarDecorations}\label{cbbarhintspluginondrawbardecorations}
\func{void}{OnDrawBarDecorations}{\param{cbDrawBarDecorEvent\& }{event}}
+Handles a plugin event.
+
\membersection{cbBarHintsPlugin::OnInitPlugin}\label{cbbarhintspluginoninitplugin}
\func{void}{OnInitPlugin}{\void}
+Called to initialize this plugin.
+
\membersection{cbBarHintsPlugin::OnLeftDown}\label{cbbarhintspluginonleftdown}
\func{void}{OnLeftDown}{\param{cbLeftDownEvent\& }{event}}
+Handles a plugin event.
+
\membersection{cbBarHintsPlugin::OnLeftUp}\label{cbbarhintspluginonleftup}
\func{void}{OnLeftUp}{\param{cbLeftUpEvent\& }{event}}
+Handles a plugin event.
+
\membersection{cbBarHintsPlugin::OnMotion}\label{cbbarhintspluginonmotion}
\func{void}{OnMotion}{\param{cbMotionEvent\& }{event}}
+Handles a plugin event.
+
\membersection{cbBarHintsPlugin::OnSizeBarWindow}\label{cbbarhintspluginonsizebarwindow}
\func{void}{OnSizeBarWindow}{\param{cbSizeBarWndEvent\& }{event}}
-handlers of plugin-events
+Handles a plugin event.
\membersection{cbBarHintsPlugin::SetGrooveCount}\label{cbbarhintspluginsetgroovecount}
\func{void}{SetGrooveCount}{\param{int }{nGrooves}}
+Set the number of grooves to be shown in the pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:50:59
+% controlbar.h at 21/Jan/02 21:14:14
%
\section{\class{cbBarInfo}}\label{cbbarinfo}
+
+Helper class used internally by the wxFrameLayout class.
+Holds and manages bar information.
+
\wxheading{Derived from}
\helpref{wxObject}{wxobject}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbBarInfo}{\void}
+Constructor.
+
\membersection{cbBarInfo::\destruct{cbBarInfo}}\label{cbbarinfodtor}
\func{}{\destruct{cbBarInfo}}{\void}
+Destructor.
+
\membersection{cbBarInfo::IsExpanded}\label{cbbarinfoisexpanded}
\constfunc{bool}{IsExpanded}{\void}
+Returns TRUE if this bar is expanded.
+
\membersection{cbBarInfo::IsFixed}\label{cbbarinfoisfixed}
\constfunc{bool}{IsFixed}{\void}
+Returns TRUE if this bar is fixed.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:50:59
+% controlbar.h at 21/Jan/02 21:14:14
%
\section{\class{cbBarShapeData}}\label{cbbarshapedata}
-used for storing original bar's postions in the row, when the "non-destructive-friction"
-option is turned ON
+Used for storing the original bar's positions in the row, when the 'non-destructive-friction'
+option is turned on.
\wxheading{Derived from}
\helpref{wxObject}{wxobject}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:50:58
+% controlbar.h at 21/Jan/02 21:14:13
%
\section{\class{cbBarSpy}}\label{cbbarspy}
-FIXME:: somehow in debug v. originall wxASSERT's are not compiled in...
-\#undef wxASSERT
-\#define wxASSERT(x) if ( !(x) ) throw;
-helper class, used for spying for not-handled mouse events on control-bars
-and forwarding them to the frame layout
+Helper class, used for spying for unhandled mouse events on control bars
+and forwarding them to the frame layout.
\wxheading{Derived from}
\helpref{wxEvtHandler}{wxevthandler}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
+{\small \begin{verbatim}
+typedef cbBarInfo* BarInfoPtrT
+\end{verbatim}}
+forward declarations
+
+{\small \begin{verbatim}
+typedef cbRowInfo* RowInfoPtrT
+\end{verbatim}}
+enumeration of hittest results, see cbDockPane::HitTestPaneItems(..)
+\begin{verbatim}
+enum CB_HITTEST_RESULT
+{
+ CB_NO_ITEMS_HITTED,
+
+ CB_UPPER_ROW_HANDLE_HITTED,
+ CB_LOWER_ROW_HANDLE_HITTED,
+ CB_LEFT_BAR_HANDLE_HITTED,
+ CB_RIGHT_BAR_HANDLE_HITTED,
+ CB_BAR_CONTENT_HITTED
+}
+\end{verbatim}
+
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbBarSpy}{\param{wxFrameLayout* }{pPanel}}
+Constructor, taking a parent pane.
+
\func{}{cbBarSpy}{\void}
+Default constructor.
+
\membersection{cbBarSpy::ProcessEvent}\label{cbbarspyprocessevent}
\func{bool}{ProcessEvent}{\param{wxEvent\& }{event}}
-overriden
+Performs special event processing.
\membersection{cbBarSpy::SetBarWindow}\label{cbbarspysetbarwindow}
\func{void}{SetBarWindow}{\param{wxWindow* }{pWnd}}
+Sets the bar window.
+
%
% automatically generated by HelpGen $Revision$ from
-% toolwnd.h at 05/Jan/02 22:50:58
+% toolwnd.h at 21/Jan/02 21:14:17
%
\section{\class{cbCloseBox}}\label{cbclosebox}
-classes specific to wxFrameLayout engine (FOR NOW in here...)
+cbCloseBox is a window close button, used in a wxToolWindow titlebar.
\wxheading{Derived from}
\helpref{cbMiniButton}{cbminibutton}
+\wxheading{Include files}
+
+<toolwnd.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{void}{Draw}{\param{wxDC\& }{dc}}
+Draws the close button appearance.
+
%
% automatically generated by HelpGen $Revision$ from
-% toolwnd.h at 05/Jan/02 22:50:58
+% toolwnd.h at 21/Jan/02 21:14:17
%
\section{\class{cbCollapseBox}}\label{cbcollapsebox}
+
+cbCollapseBox is a window collapse button, used in a wxToolWindow titlebar.
+
\wxheading{Derived from}
\helpref{cbMiniButton}{cbminibutton}
+\wxheading{Include files}
+
+<toolwnd.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{void}{Draw}{\param{wxDC\& }{dc}}
+Draws the collapse button appearance.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:50:59
+% controlbar.h at 21/Jan/02 21:14:14
%
\section{\class{cbCommonPaneProperties}}\label{cbcommonpaneproperties}
-structure holds configuration options,
- which are usually the same for all panes in
- frame layout
-
+A structure holding configuration options,
+which are usually the same for all panes in
+a frame layout.
+
\wxheading{Derived from}
\helpref{wxObject}{wxobject}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:01
+% controlbar.h at 21/Jan/02 21:14:17
%
\section{\class{cbCustomizeBarEvent}}\label{cbcustomizebarevent}
+
+Class for bar customization events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbCustomizeBarEvent}{\param{cbBarInfo* }{pBar}, \param{const wxPoint\& }{clickPos}, \param{cbDockPane* }{pPane}}
+Constructor, taking bar information, mouse position, and pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:01
+% controlbar.h at 21/Jan/02 21:14:17
%
\section{\class{cbCustomizeLayoutEvent}}\label{cbcustomizelayoutevent}
+
+Class for layout customization events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbCustomizeLayoutEvent}{\param{const wxPoint\& }{clickPos}}
+Constructor, taking mouse position.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:50:59
+% controlbar.h at 21/Jan/02 21:14:13
%
\section{\class{cbDimInfo}}\label{cbdiminfo}
-helper classes (used internally by wxFrameLayout class) holds and manages information about bar dimensions
+Helper class used internally by the wxFrameLayout class.
+Holds and manages information about bar dimensions.
\wxheading{Derived from}
\helpref{wxObject}{wxobject}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbDimInfo}{\param{cbBarDimHandlerBase* }{pDimHandler}, \param{bool }{isFixed}}
+Constructor.
+isFixed is TRUE if vertical/horizontal dimensions cannot be manually adjusted
+by the user using resizing handles. If FALSE, the frame-layout
+automatically places resizing handles among bars that do are not fixed.
+
\func{}{cbDimInfo}{\param{int }{dh\_x}, \param{int }{dh\_y}, \param{int }{dv\_x}, \param{int }{dv\_y}, \param{int }{f\_x}, \param{int }{f\_y}, \param{bool }{isFixed = TRUE}, \param{int }{horizGap = 6}, \param{int }{vertGap = 6}, \param{cbBarDimHandlerBase* }{pDimHandler = NULL}}
-dims when docked horizontally
+Constructor taking dimenstion information.
+dh\_x, dh\_y are the dimensions when docked horizontally.
+dv\_x, dv\_y are the dimensions when docked vertically.
+f\_x, f\_y are the dimensions when floating.
+For information on isFixed, see comments above.
+horizGap is the left/right gap, separating decorations
+from the bar's actual wndow, filled with the frame's background colour.
+The dimension is given in the frame's coordinates.
+vertGap is the top/bottom gap, separating decorations
+from the bar's actual wndow, filled with the frame's background colour.
+The dimension is given in the frame's coordinates.
\func{}{cbDimInfo}{\param{int }{x}, \param{int }{y}, \param{bool }{isFixed = TRUE}, \param{int }{gap = 6}, \param{cbBarDimHandlerBase* }{pDimHandler = NULL}}
+Constructor.
+
\func{}{cbDimInfo}{\void}
+Default constructor.
+
\membersection{cbDimInfo::\destruct{cbDimInfo}}\label{cbdiminfodtor}
\func{}{\destruct{cbDimInfo}}{\void}
-destroys handler automatically, if present
+Destructor. Destroys handler automatically, if present.
\membersection{cbDimInfo::GetDimHandler}\label{cbdiminfogetdimhandler}
\func{cbBarDimHandlerBase*}{GetDimHandler}{\void}
+Returns the handler, if any.
+
\membersection{cbDimInfo::operator=}\label{cbdiminfooperatorassign}
\func{const cbDimInfo\& operator}{operator=}{\param{const cbDimInfo\& }{other}}
+Assignment operator.
+
%
% automatically generated by HelpGen $Revision$ from
-% toolwnd.h at 05/Jan/02 22:50:58
+% toolwnd.h at 21/Jan/02 21:14:17
%
\section{\class{cbDockBox}}\label{cbdockbox}
+
+cbDockBox is a window dock button, used in a wxToolWindow titlebar.
+
\wxheading{Derived from}
\helpref{cbMiniButton}{cbminibutton}
+\wxheading{Include files}
+
+<toolwnd.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{void}{Draw}{\param{wxDC\& }{dc}}
+Draws the dock button appearance.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:50:59
+% controlbar.h at 21/Jan/02 21:14:14
%
\section{\class{cbDockPane}}\label{cbdockpane}
-class manages containment and control of control-bars
- along one of the four edges of the parent frame
-
+This class manages containment and control of control bars
+along one of the four edges of the parent frame.
+
\wxheading{Derived from}
\helpref{wxObject}{wxobject}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbDockPane}{\param{int }{alignment}, \param{wxFrameLayout* }{pPanel}}
+Constructor, taking alignment and layout panel.
+
\func{}{cbDockPane}{\void}
-public members
+public members Default constructor.
+
\membersection{cbDockPane::\destruct{cbDockPane}}\label{cbdockpanedtor}
\func{}{\destruct{cbDockPane}}{\void}
+Destructor.
+
\membersection{cbDockPane::BarPresent}\label{cbdockpanebarpresent}
\func{bool}{BarPresent}{\param{cbBarInfo* }{pBar}}
-TRUE, if the given bar node presents in this pane
+Returns TRUE if the given bar is present in this pane.
\membersection{cbDockPane::CalcLengthRatios}\label{cbdockpanecalclengthratios}
\func{void}{CalcLengthRatios}{\param{cbRowInfo* }{pInRow}}
+Calculate lengths.
+Internal function called by plugins.
+
\membersection{cbDockPane::ContractBar}\label{cbdockpanecontractbar}
\func{void}{ContractBar}{\param{cbBarInfo* }{pBar}}
+Contracts the bar.
+Internal function called by plugins.
+
\membersection{cbDockPane::DoInsertBar}\label{cbdockpanedoinsertbar}
\func{void}{DoInsertBar}{\param{cbBarInfo* }{pBar}, \param{int }{rowNo}}
+Inserts the bar at the given row number.
+Internal function called by plugins.
+
\membersection{cbDockPane::DrawHorizHandle}\label{cbdockpanedrawhorizhandle}
\func{void}{DrawHorizHandle}{\param{wxDC\& }{dc}, \param{int }{x}, \param{int }{y}, \param{int }{width}}
+Row/bar resizing related helper-method.
+
\membersection{cbDockPane::DrawVertHandle}\label{cbdockpanedrawverthandle}
\func{void}{DrawVertHandle}{\param{wxDC\& }{dc}, \param{int }{x}, \param{int }{y}, \param{int }{height}}
-protected really (accessed only by plugins) row/bar resizing related helper-methods
+protected really (accessed only by plugins) Row/bar resizing related helper-method.
\membersection{cbDockPane::ExpandBar}\label{cbdockpaneexpandbar}
\func{void}{ExpandBar}{\param{cbBarInfo* }{pBar}}
+Expands the bar.
+Internal function called by plugins.
+
\membersection{cbDockPane::FinishDrawInArea}\label{cbdockpanefinishdrawinarea}
\func{void}{FinishDrawInArea}{\param{const wxRect\& }{area}}
+Generates cbFinishDrawInAreaEvent and sends it to the layout.
+Internal function called by plugins.
+
\membersection{cbDockPane::FrameToPane}\label{cbdockpaneframetopane}
-\func{void}{FrameToPane}{\param{wxRect* }{pRect}}
+\func{void}{FrameToPane}{\param{int* }{x}, \param{int* }{y}}
+Coordinate translation between parent's frame and this pane.
+Internal function called by plugins.
-\func{void}{FrameToPane}{\param{int* }{x}, \param{int* }{y}}
-coordinate translation between parent's frame and this pane
+\func{void}{FrameToPane}{\param{wxRect* }{pRect}}
+
+Coordinate translation between parent's frame and this pane.
+Internal function called by plugins.
\membersection{cbDockPane::GetAlignment}\label{cbdockpanegetalignment}
\func{int}{GetAlignment}{\void}
+Returns the alignment for this pane. The value is one of
+FL\_ALIGN\_TOP, FL\_ALIGN\_BOTTOM, FL\_ALIGN\_LEFT, FL\_ALIGN\_RIGHT.
+
\membersection{cbDockPane::GetBarInfoByWindow}\label{cbdockpanegetbarinfobywindow}
\func{cbBarInfo*}{GetBarInfoByWindow}{\param{wxWindow* }{pBarWnd}}
+Finds the bar information by corresponding window.
+
\membersection{cbDockPane::GetBarResizeRange}\label{cbdockpanegetbarresizerange}
\func{void}{GetBarResizeRange}{\param{cbBarInfo* }{pBar}, \param{int* }{from}, \param{int* }{till}, \param{bool }{forLeftHandle}}
+Returns the bar's resize range.
+
\membersection{cbDockPane::GetDockingState}\label{cbdockpanegetdockingstate}
\func{int}{GetDockingState}{\void}
+Returns wxCBAR\_DOCKED\_HORIZONTALLY if the alignment is top or bottom,
+or wxCBAR\_DOCKED\_VERTICALLY otherwise.
+
\membersection{cbDockPane::GetFirstRow}\label{cbdockpanegetfirstrow}
\func{cbRowInfo*}{GetFirstRow}{\void}
-convenience method
+Returns the first row.
\membersection{cbDockPane::GetMinimalRowHeight}\label{cbdockpanegetminimalrowheight}
\func{int}{GetMinimalRowHeight}{\param{cbRowInfo* }{pRow}}
+Returns the minimal row height for the given row.
+Internal function called by plugins.
+
\membersection{cbDockPane::GetNotFixedBarsCount}\label{cbdockpanegetnotfixedbarscount}
\func{int}{GetNotFixedBarsCount}{\param{cbRowInfo* }{pRow}}
+Returns the number of bars whose size is not fixed.
+Internal function called by plugins.
+
\membersection{cbDockPane::GetPaneHeight}\label{cbdockpanegetpaneheight}
\func{int}{GetPaneHeight}{\void}
-retuns height, in pane's coordinates
+Returns the height in the pane's coordinates.
\membersection{cbDockPane::GetRealRect}\label{cbdockpanegetrealrect}
\func{wxRect\&}{GetRealRect}{\void}
+Returns the bounds of the pane, in parent coordinates.
+
\membersection{cbDockPane::GetRow}\label{cbdockpanegetrow}
\func{cbRowInfo*}{GetRow}{\param{int }{row}}
-protected really (accessed only by plugins)
+protected really (accessed only by plugins) Returns the row info for a row index. Internal function called by plugins.
+
\membersection{cbDockPane::GetRowAt}\label{cbdockpanegetrowat}
-\func{int}{GetRowAt}{\param{int }{upperY}, \param{int }{lowerY}}
+\func{int}{GetRowAt}{\param{int }{paneY}}
+Returns the row at the given vertical position.
+Returns -1 if the row is not present at given vertical position.
+Internal function called by plugins.
-\func{int}{GetRowAt}{\param{int }{paneY}}
-return -1, if row is not present at given vertical position
+\func{int}{GetRowAt}{\param{int }{upperY}, \param{int }{lowerY}}
+
+Returns the row between the given vertical positions.
+Returns -1 if the row is not present.
+Internal function called by plugins.
\membersection{cbDockPane::GetRowIndex}\label{cbdockpanegetrowindex}
\func{int}{GetRowIndex}{\param{cbRowInfo* }{pRow}}
+Returns the row index for the given row info. Internal function called by plugins.
+
\membersection{cbDockPane::GetRowList}\label{cbdockpanegetrowlist}
\func{RowArrayT\&}{GetRowList}{\void}
-used by updates-managers
+Returns an array of rows. Used by updates-managers.
\membersection{cbDockPane::GetRowResizeRange}\label{cbdockpanegetrowresizerange}
\func{void}{GetRowResizeRange}{\param{cbRowInfo* }{pRow}, \param{int* }{from}, \param{int* }{till}, \param{bool }{forUpperHandle}}
+Returns the row's resize range.
+
\membersection{cbDockPane::GetRowShapeData}\label{cbdockpanegetrowshapedata}
\func{void}{GetRowShapeData}{\param{cbRowInfo* }{pRow}, \param{wxList* }{pLst}}
-cbBarShapeData objects will be placed to given pLst (see comments on cbBarShapeData)
-
-
-\membersection{cbDockPane::GetRowWidth}\label{cbdockpanegetrowwidth}
-
-\func{int}{GetRowWidth}{\param{wxList* }{pRow}}
+Returns row shape data.
+cbBarShapeData objects will be added to the given pLst.
+cbBarShapeData is used for storing the original bar's positions in the row,
+when the 'non-destructive-friction' option is turned on.
\membersection{cbDockPane::GetRowY}\label{cbdockpanegetrowy}
\func{int}{GetRowY}{\param{cbRowInfo* }{pRow}}
+Gets the vertical position at the given row.
+Internal function called by plugins.
+
\membersection{cbDockPane::HasNotFixedBarsLeft}\label{cbdockpanehasnotfixedbarsleft}
\func{bool}{HasNotFixedBarsLeft}{\param{cbBarInfo* }{pBar}}
+Returns TRUE if there are any variable-sized rows to the left of this one.
+Internal function called by plugins.
+
\membersection{cbDockPane::HasNotFixedBarsRight}\label{cbdockpanehasnotfixedbarsright}
\func{bool}{HasNotFixedBarsRight}{\param{cbBarInfo* }{pBar}}
+Returns TRUE if there are any variable-sized rows to the right of this one.
+Internal function called by plugins.
+
\membersection{cbDockPane::HasNotFixedRowsAbove}\label{cbdockpanehasnotfixedrowsabove}
\func{bool}{HasNotFixedRowsAbove}{\param{cbRowInfo* }{pRow}}
+Returns TRUE if there are any variable-sized rows above this one.
+Internal function called by plugins.
+
\membersection{cbDockPane::HasNotFixedRowsBelow}\label{cbdockpanehasnotfixedrowsbelow}
\func{bool}{HasNotFixedRowsBelow}{\param{cbRowInfo* }{pRow}}
+Returns TRUE if there are any variable-sized rows below this one.
+Internal function called by plugins.
+
\membersection{cbDockPane::HasPoint}\label{cbdockpanehaspoint}
\func{bool}{HasPoint}{\param{const wxPoint\& }{pos}, \param{int }{x}, \param{int }{y}, \param{int }{width}, \param{int }{height}}
+Returns TRUE if pos is within the given rectangle.
+Internal function called by plugins.
+
\membersection{cbDockPane::HitTestPaneItems}\label{cbdockpanehittestpaneitems}
\func{int}{HitTestPaneItems}{\param{const wxPoint\& }{pos}, \param{cbRowInfo** }{ppRow}, \param{cbBarInfo** }{ppBar}}
-returns result of hit-testing items in the pane,
-see CB\_HITTEST\_RESULTS enumeration
-position in pane's coordinates
+Returns the result of hit-testing items in the pane.
+See CB\_HITTEST\_RESULT enumerated type.
+pos is the position in this pane's coordinates.
\membersection{cbDockPane::InitLinksForRow}\label{cbdockpaneinitlinksforrow}
\func{void}{InitLinksForRow}{\param{cbRowInfo* }{pRow}}
+Sets up links between bars.
+Internal function called by plugins.
+
\membersection{cbDockPane::InitLinksForRows}\label{cbdockpaneinitlinksforrows}
\func{void}{InitLinksForRows}{\void}
+Sets up links between bars.
+Internal function called by plugins.
+
\membersection{cbDockPane::InsertBar}\label{cbdockpaneinsertbar}
-\func{void}{InsertBar}{\param{cbBarInfo* }{pBar}, \param{const wxRect\& }{atRect}}
+\func{void}{InsertBar}{\param{cbBarInfo* }{pBarInfo}}
-rect given in the parent frame's coordinates
+Inserts bar and sets its position according to the preferred settings
+given in pBarInfo.
-\func{void}{InsertBar}{\param{cbBarInfo* }{pBar}, \param{cbRowInfo* }{pIntoRow}}
+\func{void}{InsertBar}{\param{cbBarInfo* }{pBar}, \param{const wxRect\& }{rect}}
-inserts bar into the given row, with dimensions and position
-stored in pBarInfo->mBounds. Returns the node of inserted bar
+Inserts the bar into this pane. rect is given in the parent frame's coordinates.
-\func{void}{InsertBar}{\param{cbBarInfo* }{pBarInfo}}
+\func{void}{InsertBar}{\param{cbBarInfo* }{pBar}, \param{cbRowInfo* }{pIntoRow}}
-inserts bar, sets its position according to the preferred settings
-given in (*pBarInfo) structure
+Inserts the bar into the given row, with dimensions and position
+stored in pBarInfo->mBounds. Returns the node of inserted bar.
\membersection{cbDockPane::InsertRow}\label{cbdockpaneinsertrow}
\func{void}{InsertRow}{\param{cbRowInfo* }{pRow}, \param{cbRowInfo* }{pBeforeRow}}
-does not refresh the inserted row immediately,
-if pBeforeRowNode arg. is NULL, row is appended to the end of pane's row list
+Inserts a row. Does not refresh the inserted row immediately.
+If pBeforeRowNode is NULL, the row is appended to the end of pane's row list.
\membersection{cbDockPane::IsFixedSize}\label{cbdockpaneisfixedsize}
\func{bool}{IsFixedSize}{\param{cbBarInfo* }{pInfo}}
-layout "AI" helpers:
+Returns TRUE if the bar's dimension information indicates a fixed size.
+Internal function called by plugins.
\membersection{cbDockPane::IsHorizontal}\label{cbdockpaneishorizontal}
\func{bool}{IsHorizontal}{\void}
+Returns TRUE if the pane is aligned to the top or bottom.
+
\membersection{cbDockPane::MatchesMask}\label{cbdockpanematchesmask}
\func{bool}{MatchesMask}{\param{int }{paneMask}}
+Returns TRUE if the given mask matches the pane's mask.
+
\membersection{cbDockPane::PaintBar}\label{cbdockpanepaintbar}
\func{void}{PaintBar}{\param{cbBarInfo* }{pBar}, \param{wxDC\& }{dc}}
+Calls PaintBarDecorations and PaintBarHandles.
+Internal function called by plugins.
+
\membersection{cbDockPane::PaintBarDecorations}\label{cbdockpanepaintbardecorations}
\func{void}{PaintBarDecorations}{\param{cbBarInfo* }{pBar}, \param{wxDC\& }{dc}}
-protected really (accessed only by plugins) methods for incramental on-screen refreshing of the pane
-(simply, they are wrappers around corresponding plugin-events)
+protected really (accessed only by plugins) Generates a cbDrawBarDecorEvent and sends it to the layout to paint the bar decorations.
+Internal function called by plugins.
\membersection{cbDockPane::PaintBarHandles}\label{cbdockpanepaintbarhandles}
\func{void}{PaintBarHandles}{\param{cbBarInfo* }{pBar}, \param{wxDC\& }{dc}}
+Generates a cbDrawBarHandlesEvent and sends it to the layout to paint the bar handles.
+Internal function called by plugins.
+
\membersection{cbDockPane::PaintPane}\label{cbdockpanepaintpane}
\func{void}{PaintPane}{\param{wxDC\& }{dc}}
+Paints the pane background, the row background and decorations,
+and finally the pane decorations.
+Internal function called by plugins.
+
\membersection{cbDockPane::PaintPaneBackground}\label{cbdockpanepaintpanebackground}
\func{void}{PaintPaneBackground}{\param{wxDC\& }{dc}}
+Generates cbDrawPaneBkGroundEvent and sends it to the layout.
+Internal function called by plugins.
+
\membersection{cbDockPane::PaintPaneDecorations}\label{cbdockpanepaintpanedecorations}
\func{void}{PaintPaneDecorations}{\param{wxDC\& }{dc}}
+Generates cbDrawPaneDecorEvent and sends it to the layout.
+Internal function called by plugins.
+
\membersection{cbDockPane::PaintRow}\label{cbdockpanepaintrow}
\func{void}{PaintRow}{\param{cbRowInfo* }{pRow}, \param{wxDC\& }{dc}}
+Calls PaintRowBackground, PaintRowDecorations, PaintRowHandles.
+Internal function called by plugins.
+
\membersection{cbDockPane::PaintRowBackground}\label{cbdockpanepaintrowbackground}
\func{void}{PaintRowBackground}{\param{cbRowInfo* }{pRow}, \param{wxDC\& }{dc}}
+Generates cbDrawRowBkGroundEvent and sends it to the layout.
+Internal function called by plugins.
+
\membersection{cbDockPane::PaintRowDecorations}\label{cbdockpanepaintrowdecorations}
\func{void}{PaintRowDecorations}{\param{cbRowInfo* }{pRow}, \param{wxDC\& }{dc}}
+Calls PaintBarDecorations for each row.
+Internal function called by plugins.
+
\membersection{cbDockPane::PaintRowHandles}\label{cbdockpanepaintrowhandles}
\func{void}{PaintRowHandles}{\param{cbRowInfo* }{pRow}, \param{wxDC\& }{dc}}
+Generates cbDrawRowHandlesEvent and cbDrawRowDecorEvent and sends them to the layout.
+Internal function called by plugins.
+
\membersection{cbDockPane::PaneToFrame}\label{cbdockpanepanetoframe}
\func{void}{PaneToFrame}{\param{wxRect* }{pRect}}
+Coordinate translation between parent's frame and this pane.
+Internal function called by plugins.
+
\func{void}{PaneToFrame}{\param{int* }{x}, \param{int* }{y}}
+Coordinate translation between parent's frame and this pane.
+Internal function called by plugins.
+
\membersection{cbDockPane::RecalcLayout}\label{cbdockpanerecalclayout}
\func{void}{RecalcLayout}{\void}
+Generates events to perform layout calculations.
+
\membersection{cbDockPane::RecalcRowLayout}\label{cbdockpanerecalcrowlayout}
\func{void}{RecalcRowLayout}{\param{cbRowInfo* }{pRow}}
+Generates a cbLayoutRowEvent event to recalculate row layouts.
+Internal function called by plugins.
+
\membersection{cbDockPane::RemoveBar}\label{cbdockpaneremovebar}
\func{void}{RemoveBar}{\param{cbBarInfo* }{pBar}}
-does not destroys the info bar , only removes it's reference
-from this pane
+Removes the bar from this pane. Does not destroy the bar.
\membersection{cbDockPane::RemoveRow}\label{cbdockpaneremoverow}
\func{void}{RemoveRow}{\param{cbRowInfo* }{pRow}}
-does not destroy the row object, only removes the corresponding
-node from this pane
+Removes the row from this pane. Does not destroy the row object.
\membersection{cbDockPane::ResizeBar}\label{cbdockpaneresizebar}
\func{void}{ResizeBar}{\param{cbBarInfo* }{pBar}, \param{int }{ofs}, \param{bool }{forLeftHandle}}
+Row/bar resizing related helper-method.
+
\membersection{cbDockPane::ResizeRow}\label{cbdockpaneresizerow}
\func{void}{ResizeRow}{\param{cbRowInfo* }{pRow}, \param{int }{ofs}, \param{bool }{forUpperHandle}}
+Row/bar resizing related helper-method.
+
\membersection{cbDockPane::SetBoundsInParent}\label{cbdockpanesetboundsinparent}
\func{void}{SetBoundsInParent}{\param{const wxRect\& }{rect}}
-set the position and dims. of the pane in parent frame's coordinates
+Set the position and dimensions of the pane in the parent frame's coordinates.
\membersection{cbDockPane::SetMargins}\label{cbdockpanesetmargins}
\func{void}{SetMargins}{\param{int }{top}, \param{int }{bottom}, \param{int }{left}, \param{int }{right}}
-sets pane's margins in frame's coordinate orientations
+Sets pane's margins in frame's coordinate orientations.
\membersection{cbDockPane::SetPaneWidth}\label{cbdockpanesetpanewidth}
\func{void}{SetPaneWidth}{\param{int }{width}}
-sets pane's width in pane's coordinates (including margins)
+Sets pane's width in the pane's coordinates (including margins).
\membersection{cbDockPane::SetRowHeight}\label{cbdockpanesetrowheight}
\func{void}{SetRowHeight}{\param{cbRowInfo* }{pRow}, \param{int }{newHeight}}
-given row height includes height of row handles, if present
+Sets the row height for the given height. newHeight includes the height of row handles, if present.
+Internal function called by plugins.
\membersection{cbDockPane::SetRowShapeData}\label{cbdockpanesetrowshapedata}
\func{void}{SetRowShapeData}{\param{cbRowInfo* }{pRowNode}, \param{wxList* }{pLst}}
-sets the shape to the given row, using the data provided in pLst
+Sets the shape data for the given row, using the data provided in pLst.
+cbBarShapeData is used for storing the original bar's positions in the row,
+when the 'non-destructive-friction' option is turned on.
\membersection{cbDockPane::SizeBar}\label{cbdockpanesizebar}
\func{void}{SizeBar}{\param{cbBarInfo* }{pBar}}
+Generates a cbSizeBarWndEvent and sends it to the layout.
+Internal function called by plugins.
+
\membersection{cbDockPane::SizePaneObjects}\label{cbdockpanesizepaneobjects}
\func{void}{SizePaneObjects}{\void}
+Calls SizeRowObjects for each row.
+Internal function called by plugins.
+
\membersection{cbDockPane::SizeRowObjects}\label{cbdockpanesizerowobjects}
\func{void}{SizeRowObjects}{\param{cbRowInfo* }{pRow}}
+Calls SizeBar for each bar in the row.
+Internal function called by plugins.
+
\membersection{cbDockPane::StartDrawInArea}\label{cbdockpanestartdrawinarea}
\func{wxDC*}{StartDrawInArea}{\param{const wxRect\& }{area}}
+Generates cbStartDrawInAreaEvent and sends it to the layout.
+Internal function called by plugins.
+
\membersection{cbDockPane::SyncRowFlags}\label{cbdockpanesyncrowflags}
\func{void}{SyncRowFlags}{\param{cbRowInfo* }{pRow}}
-re-setups flags in the row-information structure, so that
-the would match the changed state of row-items correctly
+Sets up flags in the row information structure, so that
+they match the changed state of row items correctly.
+Internal function called by plugins.
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:00
+% controlbar.h at 21/Jan/02 21:14:16
%
\section{\class{cbDrawBarDecorEvent}}\label{cbdrawbardecorevent}
+
+Class for bar decoration drawing events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbDrawBarDecorEvent}{\param{cbBarInfo* }{pBar}, \param{wxDC\& }{dc}, \param{cbDockPane* }{pPane}}
+Constructor, taking bar information, device context, and pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:01
+% controlbar.h at 21/Jan/02 21:14:16
%
\section{\class{cbDrawBarHandlesEvent}}\label{cbdrawbarhandlesevent}
+
+Class for bar handles drawing events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbDrawBarHandlesEvent}{\param{cbBarInfo* }{pBar}, \param{wxDC\& }{dc}, \param{cbDockPane* }{pPane}}
+Constructor, taking bar information, device context, and pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:01
+% controlbar.h at 21/Jan/02 21:14:16
%
\section{\class{cbDrawHintRectEvent}}\label{cbdrawhintrectevent}
+
+Class for hint-rectangle drawing events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbDrawHintRectEvent}{\param{const wxRect\& }{rect}, \param{bool }{isInClient}, \param{bool }{eraseRect}, \param{bool }{lastTime}}
e.g. with fat/hatched border
+Constructor, taking hint rectangle and three flags.
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:01
+% controlbar.h at 21/Jan/02 21:14:16
%
\section{\class{cbDrawPaneBkGroundEvent}}\label{cbdrawpanebkgroundevent}
+
+Class for pane background drawing events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbDrawPaneBkGroundEvent}{\param{wxDC\& }{dc}, \param{cbDockPane* }{pPane}}
+Constructor, taking device context and pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:01
+% controlbar.h at 21/Jan/02 21:14:16
%
\section{\class{cbDrawPaneDecorEvent}}\label{cbdrawpanedecorevent}
+
+Class for pane decoration drawing events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbDrawPaneDecorEvent}{\param{wxDC\& }{dc}, \param{cbDockPane* }{pPane}}
+Constructor, taking device context and pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:01
+% controlbar.h at 21/Jan/02 21:14:16
%
\section{\class{cbDrawRowBkGroundEvent}}\label{cbdrawrowbkgroundevent}
+
+Class for row background drawing events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbDrawRowBkGroundEvent}{\param{cbRowInfo* }{pRow}, \param{wxDC\& }{dc}, \param{cbDockPane* }{pPane}}
+Constructor, taking row information, device context, and pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:00
+% controlbar.h at 21/Jan/02 21:14:16
%
\section{\class{cbDrawRowDecorEvent}}\label{cbdrawrowdecorevent}
+
+Class for row decoration drawing events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbDrawRowDecorEvent}{\param{cbRowInfo* }{pRow}, \param{wxDC\& }{dc}, \param{cbDockPane* }{pPane}}
+Constructor, taking row information, device context, and pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:01
+% controlbar.h at 21/Jan/02 21:14:16
%
\section{\class{cbDrawRowHandlesEvent}}\label{cbdrawrowhandlesevent}
+
+Class for row handles drawing events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbDrawRowHandlesEvent}{\param{cbRowInfo* }{pRow}, \param{wxDC\& }{dc}, \param{cbDockPane* }{pPane}}
+Constructor, taking row information, device context, and pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% dyntbarhnd.h at 05/Jan/02 22:50:56
+% dyntbarhnd.h at 21/Jan/02 21:14:19
%
\section{\class{cbDynToolBarDimHandler}}\label{cbdyntoolbardimhandler}
+
+Dynamic toolbar dimension handler.
+
\wxheading{Derived from}
\helpref{cbBarDimHandlerBase}{cbbardimhandlerbase}
+\wxheading{Include files}
+
+<dyntbarhnd.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{void}{OnChangeBarState}{\param{cbBarInfo* }{pBar}, \param{int }{newState}}
+Called when the bar changes state.
+
\membersection{cbDynToolBarDimHandler::OnResizeBar}\label{cbdyntoolbardimhandleronresizebar}
\func{void}{OnResizeBar}{\param{cbBarInfo* }{pBar}, \param{const wxSize\& }{given}, \param{wxSize\& }{preferred}}
+Called when a bar is resized.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:01
+% controlbar.h at 21/Jan/02 21:14:16
%
\section{\class{cbFinishDrawInAreaEvent}}\label{cbfinishdrawinareaevent}
+
+Class for finish drawing in area events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbFinishDrawInAreaEvent}{\param{const wxRect\& }{area}, \param{cbDockPane* }{pPane}}
+Constructor, taking rectangular area and pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% toolwnd.h at 05/Jan/02 22:50:58
+% toolwnd.h at 21/Jan/02 21:14:17
%
\section{\class{cbFloatedBarWindow}}\label{cbfloatedbarwindow}
+
+cbFloatedBarWindow is a kind of wxToolWindow,
+implementing floating toolbars.
+
\wxheading{Derived from}
\helpref{wxToolWindow}{wxtoolwindow}
+\wxheading{Include files}
+
+<toolwnd.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbFloatedBarWindow}{\void}
+Default constructor.
+
\membersection{cbFloatedBarWindow::GetBar}\label{cbfloatedbarwindowgetbar}
\func{cbBarInfo*}{GetBar}{\void}
+Returns the bar information for this window.
+
\membersection{cbFloatedBarWindow::GetPreferredSize}\label{cbfloatedbarwindowgetpreferredsize}
\func{wxSize}{GetPreferredSize}{\param{const wxSize\& }{given}}
-overriden methods of wxToolWindow
+Overridden function returning the preferred size.
\membersection{cbFloatedBarWindow::HandleTitleClick}\label{cbfloatedbarwindowhandletitleclick}
\func{bool}{HandleTitleClick}{\param{wxMouseEvent\& }{event}}
+Overridden function responding to mouse button clicks on the titlebar.
+
\membersection{cbFloatedBarWindow::OnDblClick}\label{cbfloatedbarwindowondblclick}
\func{void}{OnDblClick}{\param{wxMouseEvent\& }{event}}
+Responds to double-click mouse events.
+
\membersection{cbFloatedBarWindow::OnMiniButtonClicked}\label{cbfloatedbarwindowonminibuttonclicked}
\func{void}{OnMiniButtonClicked}{\param{int }{btnIdx}}
+Overridden function responding to mouse clicks on mini-buttons.
+
\membersection{cbFloatedBarWindow::PositionFloatedWnd}\label{cbfloatedbarwindowpositionfloatedwnd}
\func{void}{PositionFloatedWnd}{\param{int }{scrX}, \param{int }{scrY}, \param{int }{width}, \param{int }{height}}
-given coordinates are those of the bar itself
-floated container window's position and size
-are ajusted accordingly
+Position the floating window. The given coordinates
+are those of the bar itself; the floated container window's
+position and size are ajusted accordingly.
\membersection{cbFloatedBarWindow::SetBar}\label{cbfloatedbarwindowsetbar}
\func{void}{SetBar}{\param{cbBarInfo* }{pBar}}
+Sets the bar information for this window.
+
\membersection{cbFloatedBarWindow::SetLayout}\label{cbfloatedbarwindowsetlayout}
\func{void}{SetLayout}{\param{wxFrameLayout* }{pLayout}}
+Sets the layout for this window.
+
%
% automatically generated by HelpGen $Revision$ from
-% gcupdatesmgr.h at 05/Jan/02 22:50:57
+% gcupdatesmgr.h at 21/Jan/02 21:14:19
%
\section{\class{cbGCUpdatesMgr}}\label{cbgcupdatesmgr}
-class implements optimized logic for refreshing
- areas of frame layout - which actually need to be updated.
- Is used as default updates-manager by wxFrameLayout.
-
- it is called "Garbage Collecting" u.mgr for it's implementation
- tries to find out dependencies between bars, and to order
- them ito "hierarchy", this hierarchical sorting resembles
- implemenation of heap-garbage collectors, which resolve
- dependencies between references.
-
- Example: there are situations where the order of moving
- the windows does matter:
-
- case 1)
- ------ ---
- | A | |B|
- ------ ---> | |
- --- --- ------
- |B| | A |
- | | ------
- ---
- (future)
- (past)
-
- past/future positions of A and B windows completely overlapp, i.e.
- depend on each other, and there is not solution for
- moving the windows witout refreshing both of them,
- -- we have cyclic dependency here. The gc. alg will
- find this cyclic dependecy and will force "refresh"
- after movement.
-
- case 2)
-
- ------
- | A |
- ------ --->
- ---
- |B| ------
- | | | A |
- --- ------
- ---
- |B|
- | |
- ---
-
- (future)
- (past)
-
- in this case past/future positions do not overlapp, thus
- it's enough only to move windows, without refreshing them.
- GC will "notice" it.
-
- there is also third case, when overlapping is partial
- in this case the refershing can be also avoided by
- moving windows in the order of "most-dependant" towards the
- "least-dependent". GC handles this automatically, by
- sorting windows by their dependency-level (or "hierarchy")
-
- See garbagec.h for more details of this method, garbagec.h/cpp
- implement sorting of generic-dependencies (does not deal
- with graphical objects directly)
-
- Summary: improves performance when complex/large windows are
- moved around, by reducing number of repaints. Also helps
- to avoid dirty non-client areas of moved windows
- in some special cases of "overlapping anomalies"
-
+This class implements optimized logic for refreshing
+the areas of frame layout that actually need to be updated.
+It is used as the default updates manager by wxFrameLayout.
+
+It is called 'Garbage Collecting' updates manager because
+its implementation tries to find out dependencies between bars,
+and to order them into a 'hierarchy'. This hierarchical sorting resembles
+the implementation of heap-garbage collectors, which resolve
+dependencies between references.
+
+Example: there are situations where the order in which the user
+moves windows does matter.
+
+\begin{verbatim}
+ case 1)
+ ------ ---
+ | A | |B|
+ ------ ---> | |
+ --- --- ------
+ |B| | A |
+ | | ------
+ ---
+ (future)
+ (past)
+\end{verbatim}
+
+Past/future positions of A and B windows completely overlap, i.e.
+depend on each other, and there is no solution for
+moving the windows without refreshing both of them
+-- we have a cyclic dependency here. The garbage collection algorithm will
+find this cyclic dependecy and will force refresh after movement.
+
+\begin{verbatim}
+ case 2)
+
+ ------
+ | A |
+ ------ --->
+ ---
+ |B| ------
+ | | | A |
+ --- ------
+ ---
+ |B|
+ | |
+ ---
+
+ (future)
+ (past)
+\end{verbatim}
+
+In this case past/future positions do not overlap, so
+it is enough only to move windows without refreshing them.
+Garbage collection will 'notice' this.
+
+There is also a third case, when overlapping is partial.
+In this case the refreshing can also be avoided by
+moving windows in the order of 'most-dependant' towards the
+'least-dependent'. GC handles this automatically, by
+sorting windows by their dependency-level (or 'hierarchy').
+
+See garbagec.h for more details of this method; garbagec.h/cpp
+implement sorting of generic dependencies and does not deal
+with graphical objects directly.
+
+Summary: garbage collection improves performance when complex or large
+windows are moved around, by reducing the number of repaints. It also helps
+to avoid dirty non-client areas of moved windows
+in some special cases of 'overlapping anomalies'.
+
\wxheading{Derived from}
\helpref{cbSimpleUpdatesMgr}{cbsimpleupdatesmgr}
+\wxheading{Include files}
+
+<gcupdatesmgr.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbGCUpdatesMgr}{\void}
+Default constructor.
+
\func{}{cbGCUpdatesMgr}{\param{wxFrameLayout* }{pPanel}}
+Constructor, taking a frame layout.
+
\membersection{cbGCUpdatesMgr::AddItem}\label{cbgcupdatesmgradditem}
\func{void}{AddItem}{\param{wxList\& }{itemList}, \param{cbBarInfo* }{pBar}, \param{cbDockPane* }{pPane}, \param{wxRect\& }{curBounds}, \param{wxRect\& }{prevBounds}}
+Internal function for repositioning items.
+
\membersection{cbGCUpdatesMgr::DoRepositionItems}\label{cbgcupdatesmgrdorepositionitems}
\func{void}{DoRepositionItems}{\param{wxList\& }{items}}
+Internal function for repositioning items.
+
\membersection{cbGCUpdatesMgr::OnStartChanges}\label{cbgcupdatesmgronstartchanges}
\func{void}{OnStartChanges}{\void}
-notificiactions received from Frame Layout :
+Receives notifications from the frame layout.
\membersection{cbGCUpdatesMgr::UpdateNow}\label{cbgcupdatesmgrupdatenow}
\func{void}{UpdateNow}{\void}
-refreshes parts of the frame layout, which need an update
+Refreshes the parts of the frame layout which need an update.
%
% automatically generated by HelpGen $Revision$ from
-% rowdragpl.h at 05/Jan/02 22:50:57
+% rowdragpl.h at 21/Jan/02 21:14:19
%
\section{\class{cbHiddenBarInfo}}\label{cbhiddenbarinfo}
-internal helper-class
+Internal helper class.
\wxheading{Derived from}
\helpref{wxObject}{wxobject}
+\wxheading{Include files}
+
+<rowdragpl.h>
+
\wxheading{Data structures}
%
% automatically generated by HelpGen $Revision$ from
-% hintanimpl.h at 05/Jan/02 22:50:57
+% hintanimpl.h at 21/Jan/02 21:14:18
%
\section{\class{cbHintAnimationPlugin}}\label{cbhintanimationplugin}
+
+A plugin to draw animated hints when the user drags a pane.
+
\wxheading{Derived from}
\helpref{cbPluginBase}{cbpluginbase}
+\wxheading{Include files}
+
+<hintanimpl.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbHintAnimationPlugin}{\void}
+Default constructor.
+
\func{}{cbHintAnimationPlugin}{\param{wxFrameLayout* }{pPanel}, \param{int }{paneMask = wxALL\_PANES}}
+Constructor, taking a layout panel and pane mask.
+
\membersection{cbHintAnimationPlugin::\destruct{cbHintAnimationPlugin}}\label{cbhintanimationplugindtor}
\func{}{\destruct{cbHintAnimationPlugin}}{\void}
+Destructor.
+
\membersection{cbHintAnimationPlugin::DoDrawHintRect}\label{cbhintanimationplugindodrawhintrect}
\func{void}{DoDrawHintRect}{\param{wxRect\& }{rect}, \param{bool }{isInClientRect}}
+Internal function for drawing a hint rectangle.
+
\membersection{cbHintAnimationPlugin::DrawHintRect}\label{cbhintanimationplugindrawhintrect}
\func{void}{DrawHintRect}{\param{wxRect\& }{rect}, \param{bool }{isInClientRect}}
+Internal function for drawing a hint rectangle.
+
\membersection{cbHintAnimationPlugin::EraseHintRect}\label{cbhintanimationpluginerasehintrect}
\func{void}{EraseHintRect}{\param{wxRect\& }{rect}, \param{bool }{isInClientRect}}
+Internal function for erasing a hint rectangle.
+
\membersection{cbHintAnimationPlugin::FinishTracking}\label{cbhintanimationpluginfinishtracking}
\func{void}{FinishTracking}{\void}
+Internal function for finishing tracking.
+
\membersection{cbHintAnimationPlugin::OnDrawHintRect}\label{cbhintanimationpluginondrawhintrect}
\func{void}{OnDrawHintRect}{\param{cbDrawHintRectEvent\& }{event}}
+Event handler respoding to hint draw events.
+
\membersection{cbHintAnimationPlugin::RectToScr}\label{cbhintanimationpluginrecttoscr}
\func{void}{RectToScr}{\param{wxRect\& }{frameRect}, \param{wxRect\& }{scrRect}}
+Internal function for translating coordinates.
+
\membersection{cbHintAnimationPlugin::StartTracking}\label{cbhintanimationpluginstarttracking}
speed is constant. Default: TRUE
TBD:: get/set methods for above members
+Internal function for starting tracking.
%
% automatically generated by HelpGen $Revision$ from
-% hintanimpl.h at 05/Jan/02 22:50:57
+% hintanimpl.h at 21/Jan/02 21:14:19
%
\section{\class{cbHintAnimTimer}}\label{cbhintanimtimer}
+
+A private helper class.
+
\wxheading{Derived from}
\helpref{wxTimer}{wxtimer}
+\wxheading{Include files}
+
+<hintanimpl.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:00
+% controlbar.h at 21/Jan/02 21:14:15
%
\section{\class{cbInsertBarEvent}}\label{cbinsertbarevent}
+
+Class for bar insertion events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbInsertBarEvent}{\param{cbBarInfo* }{pBar}, \param{cbRowInfo* }{pIntoRow}, \param{cbDockPane* }{pPane}}
+Constructor, taking bar information, row information, and pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:00
+% controlbar.h at 21/Jan/02 21:14:15
%
\section{\class{cbLayoutRowEvent}}\label{cblayoutrowevent}
-bar/row events category
+Class for single row layout events.
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbLayoutRowEvent}{\param{cbRowInfo* }{pRow}, \param{cbDockPane* }{pPane}}
+Constructor, taking row information and pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:00
+% controlbar.h at 21/Jan/02 21:14:15
%
\section{\class{cbLayoutRowsEvent}}\label{cblayoutrowsevent}
+
+Class for multiple rows layout events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbLayoutRowsEvent}{\param{cbDockPane* }{pPane}}
+Constructor, taking pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:00
+% controlbar.h at 21/Jan/02 21:14:15
%
\section{\class{cbLeftDClickEvent}}\label{cbleftdclickevent}
+
+Class for mouse left double click events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbLeftDClickEvent}{\param{const wxPoint\& }{pos}, \param{cbDockPane* }{pPane}}
+Constructor, taking mouse position and pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:50:59
+% controlbar.h at 21/Jan/02 21:14:15
%
\section{\class{cbLeftDownEvent}}\label{cbleftdownevent}
-event classes, for each corresponding event type (24 currnetly...uhh) **mouse-events category
+Class for mouse left down events.
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbLeftDownEvent}{\param{const wxPoint\& }{pos}, \param{cbDockPane* }{pPane}}
+Constructor, taking mouse position and pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:50:59
+% controlbar.h at 21/Jan/02 21:14:15
%
\section{\class{cbLeftUpEvent}}\label{cbleftupevent}
+
+Class for mouse left up events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbLeftUpEvent}{\param{const wxPoint\& }{pos}, \param{cbDockPane* }{pPane}}
+Constructor, taking mouse position and pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% toolwnd.h at 05/Jan/02 22:50:58
+% toolwnd.h at 21/Jan/02 21:14:17
%
\section{\class{cbMiniButton}}\label{cbminibutton}
+
+cbMiniButton is the base class for a small button that can be placed in a wxToolWindow
+titlebar.
+
\wxheading{Derived from}
\helpref{wxObject}{wxobject}
+\wxheading{Include files}
+
+<toolwnd.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbMiniButton}{\void}
+Default constructor.
+
\membersection{cbMiniButton::Draw}\label{cbminibuttondraw}
\func{void}{Draw}{\param{wxDC\& }{dc}}
+Draws the button. Override this to implement
+the desired appearance.
+
\membersection{cbMiniButton::Enable}\label{cbminibuttonenable}
\func{void}{Enable}{\param{bool }{enable}}
+Enable or disable the button.
+
\membersection{cbMiniButton::HitTest}\label{cbminibuttonhittest}
\func{bool}{HitTest}{\param{const wxPoint\& }{pos}}
+Returns TRUE if the given position was over the button.
+
\membersection{cbMiniButton::IsPressed}\label{cbminibuttonispressed}
\func{bool}{IsPressed}{\void}
+Returns TRUE if this button is pressed.
+
\membersection{cbMiniButton::OnLeftDown}\label{cbminibuttononleftdown}
\func{void}{OnLeftDown}{\param{const wxPoint\& }{pos}}
+Responds to a left down event.
+
\membersection{cbMiniButton::OnLeftUp}\label{cbminibuttononleftup}
\func{void}{OnLeftUp}{\param{const wxPoint\& }{pos}}
+Responds to a left up event.
+
\membersection{cbMiniButton::OnMotion}\label{cbminibuttononmotion}
\func{void}{OnMotion}{\param{const wxPoint\& }{pos}}
+Responds to a mouse move event.
+
\membersection{cbMiniButton::Refresh}\label{cbminibuttonrefresh}
\func{void}{Refresh}{\void}
+Refreshes the button.
+
\membersection{cbMiniButton::Reset}\label{cbminibuttonreset}
\func{void}{Reset}{\void}
+Reset the button.
+
\membersection{cbMiniButton::SetPos}\label{cbminibuttonsetpos}
\func{void}{SetPos}{\param{const wxPoint\& }{pos}}
+Set the position of the button.
+
\membersection{cbMiniButton::WasClicked}\label{cbminibuttonwasclicked}
\func{bool}{WasClicked}{\void}
+Returns TRUE if the button was clicked.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:00
+% controlbar.h at 21/Jan/02 21:14:15
%
\section{\class{cbMotionEvent}}\label{cbmotionevent}
+
+Class for mouse motion events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbMotionEvent}{\param{const wxPoint\& }{pos}, \param{cbDockPane* }{pPane}}
+Constructor, taking mouse position and pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% panedrawpl.h at 05/Jan/02 22:50:57
+% panedrawpl.h at 21/Jan/02 21:14:19
%
\section{\class{cbPaneDrawPlugin}}\label{cbpanedrawplugin}
-Simple, but all-in-one plugin implementation. Resembles look \& feel of
- to MFC control-bars. Handles painting of pane and items in it.
- Fires bar/layout customization event, when user right-clicks bar/pane.
- Hooking an instance of this and row-layouting plugins per each pane,
- would be enough for the frame layout to function properly.
- (they are plugged in autimatically by wxFrameLayout class)
-
+Simple but all-in-one plugin implementation. Resembles the look and feel of
+to MFC control-bars. The class handles painting of the pane and the items in it;
+it generates bar/layout customization events, when the user right-clicks the bar/pane.
+Hooking an instance of this and row-layout plugins for each pane
+would be enough for the frame layout to function properly
+(they are plugged in automatically by the wxFrameLayout class).
+
\wxheading{Derived from}
\helpref{cbPluginBase}{cbpluginbase}
+\wxheading{Include files}
+
+<panedrawpl.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbPaneDrawPlugin}{\param{wxFrameLayout* }{pPanel}, \param{int }{paneMask = wxALL\_PANES}}
+Constructor taking frame layout pane and a pane mask.
+
\func{}{cbPaneDrawPlugin}{\void}
+Default constructor.
+
\membersection{cbPaneDrawPlugin::\destruct{cbPaneDrawPlugin}}\label{cbpanedrawplugindtor}
\func{}{\destruct{cbPaneDrawPlugin}}{\void}
+Destructor.
+
\membersection{cbPaneDrawPlugin::Clone}\label{cbpanedrawpluginclone}
\func{cbPluginBase*}{Clone}{\void}
+Clone function, returning a new instance of this class.
+
\membersection{cbPaneDrawPlugin::DrawBarInnerShadeRect}\label{cbpanedrawplugindrawbarinnershaderect}
\func{void}{DrawBarInnerShadeRect}{\param{cbBarInfo* }{pBar}, \param{wxDC\& }{dc}}
+Internal helper: draws the inner bar shading.
+
\membersection{cbPaneDrawPlugin::DrawDraggedHandle}\label{cbpanedrawplugindrawdraggedhandle}
\func{void}{DrawDraggedHandle}{\param{const wxPoint\& }{pos}, \param{cbDockPane\& }{pane}}
-helpers
+Internal helper: draws the dragged handle.
\membersection{cbPaneDrawPlugin::DrawLowerRowHandle}\label{cbpanedrawplugindrawlowerrowhandle}
\func{void}{DrawLowerRowHandle}{\param{cbRowInfo* }{pRow}, \param{wxDC\& }{dc}}
+Internal helper: draws the lower row handle.
+
\membersection{cbPaneDrawPlugin::DrawLowerRowShades}\label{cbpanedrawplugindrawlowerrowshades}
\func{void}{DrawLowerRowShades}{\param{cbRowInfo* }{pRow}, \param{wxDC\& }{dc}, \param{int }{level}}
+Internal helper: draws the lower row shading.
+
\membersection{cbPaneDrawPlugin::DrawPaneShade}\label{cbpanedrawplugindrawpaneshade}
\func{void}{DrawPaneShade}{\param{wxDC\& }{dc}, \param{int }{alignment}}
+Internal helper: draws the pane shading.
+
\membersection{cbPaneDrawPlugin::DrawPaneShadeForRow}\label{cbpanedrawplugindrawpaneshadeforrow}
\func{void}{DrawPaneShadeForRow}{\param{cbRowInfo* }{pRow}, \param{wxDC\& }{dc}}
+Internal helper: draws the pane shading for a row.
+
\membersection{cbPaneDrawPlugin::DrawShade}\label{cbpanedrawplugindrawshade}
\func{void}{DrawShade}{\param{int }{level}, \param{wxRect\& }{rect}, \param{int }{alignment}, \param{wxDC\& }{dc}}
+Internal helper: draws shading.
+
\membersection{cbPaneDrawPlugin::DrawShade1}\label{cbpanedrawplugindrawshade1}
\func{void}{DrawShade1}{\param{int }{level}, \param{wxRect\& }{rect}, \param{int }{alignment}, \param{wxDC\& }{dc}}
+Internal helper: draws shading.
+
\membersection{cbPaneDrawPlugin::DrawUpperRowHandle}\label{cbpanedrawplugindrawupperrowhandle}
\func{void}{DrawUpperRowHandle}{\param{cbRowInfo* }{pRow}, \param{wxDC\& }{dc}}
+Internal helper: draws the upper row handle.
+
\membersection{cbPaneDrawPlugin::DrawUpperRowShades}\label{cbpanedrawplugindrawupperrowshades}
\func{void}{DrawUpperRowShades}{\param{cbRowInfo* }{pRow}, \param{wxDC\& }{dc}, \param{int }{level}}
+Internal helper: draws the upper row shading.
+
\membersection{cbPaneDrawPlugin::OnDrawBarDecorations}\label{cbpanedrawpluginondrawbardecorations}
\func{void}{OnDrawBarDecorations}{\param{cbDrawBarDecorEvent\& }{event}}
+Handler for draw bar decorations events.
+
\membersection{cbPaneDrawPlugin::OnDrawBarHandles}\label{cbpanedrawpluginondrawbarhandles}
\func{void}{OnDrawBarHandles}{\param{cbDrawBarHandlesEvent\& }{event}}
+Handler for draw bar handles events.
+
\membersection{cbPaneDrawPlugin::OnDrawPaneBackground}\label{cbpanedrawpluginondrawpanebackground}
\func{void}{OnDrawPaneBackground}{\param{cbDrawPaneBkGroundEvent\& }{event}}
+Handler for draw pane background events.
+
\membersection{cbPaneDrawPlugin::OnDrawPaneDecorations}\label{cbpanedrawpluginondrawpanedecorations}
\func{void}{OnDrawPaneDecorations}{\param{cbDrawPaneDecorEvent\& }{event}}
+Handler for draw pane decoration events.
+
\membersection{cbPaneDrawPlugin::OnDrawRowBackground}\label{cbpanedrawpluginondrawrowbackground}
\func{void}{OnDrawRowBackground}{\param{cbDrawRowBkGroundEvent\& }{event}}
+Handler for draw row background events.
+
\membersection{cbPaneDrawPlugin::OnDrawRowDecorations}\label{cbpanedrawpluginondrawrowdecorations}
\func{void}{OnDrawRowDecorations}{\param{cbDrawRowDecorEvent\& }{event}}
+Handler for draw row decoration events.
+
\membersection{cbPaneDrawPlugin::OnDrawRowHandles}\label{cbpanedrawpluginondrawrowhandles}
\func{void}{OnDrawRowHandles}{\param{cbDrawRowHandlesEvent\& }{event}}
+Handler for draw row handles events.
+
\membersection{cbPaneDrawPlugin::OnFinishDrawInArea}\label{cbpanedrawpluginonfinishdrawinarea}
\func{void}{OnFinishDrawInArea}{\param{cbFinishDrawInAreaEvent\& }{event}}
+Handler for finish draw in area events.
+
\membersection{cbPaneDrawPlugin::OnLButtonDown}\label{cbpanedrawpluginonlbuttondown}
\func{void}{OnLButtonDown}{\param{cbLeftDownEvent\& }{event}}
-handlers for plugin-events
+Handler for left mouse button down events.
\membersection{cbPaneDrawPlugin::OnLButtonUp}\label{cbpanedrawpluginonlbuttonup}
\func{void}{OnLButtonUp}{\param{cbLeftUpEvent\& }{event}}
+Handler for left mouse button up events.
+
\membersection{cbPaneDrawPlugin::OnLDblClick}\label{cbpanedrawpluginonldblclick}
\func{void}{OnLDblClick}{\param{cbLeftDClickEvent\& }{event}}
+Handler for left double-click mouse button down events.
+
\membersection{cbPaneDrawPlugin::OnMouseMove}\label{cbpanedrawpluginonmousemove}
\func{void}{OnMouseMove}{\param{cbMotionEvent\& }{event}}
+Handler for mouse move events.
+
\membersection{cbPaneDrawPlugin::OnRButtonUp}\label{cbpanedrawpluginonrbuttonup}
\func{void}{OnRButtonUp}{\param{cbRightUpEvent\& }{event}}
+Handler for right mouse button up events.
+
\membersection{cbPaneDrawPlugin::OnSizeBarWindow}\label{cbpanedrawpluginonsizebarwindow}
\func{void}{OnSizeBarWindow}{\param{cbSizeBarWndEvent\& }{event}}
+Handler for bar size events.
+
\membersection{cbPaneDrawPlugin::OnStartDrawInArea}\label{cbpanedrawpluginonstartdrawinarea}
\func{void}{OnStartDrawInArea}{\param{cbStartDrawInAreaEvent\& }{event}}
+Handler for start draw in area events.
+
\membersection{cbPaneDrawPlugin::SetDarkPixel}\label{cbpanedrawpluginsetdarkpixel}
\func{void}{SetDarkPixel}{\param{int }{x}, \param{int }{y}, \param{wxDC\& }{dc}}
+Internal helper: sets a dark pixel at the given location.
+
\membersection{cbPaneDrawPlugin::SetLightPixel}\label{cbpanedrawpluginsetlightpixel}
\func{void}{SetLightPixel}{\param{int }{x}, \param{int }{y}, \param{wxDC\& }{dc}}
+Internal helper: sets a light pixel at the given location.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:50:59
+% controlbar.h at 21/Jan/02 21:14:14
%
\section{\class{cbPluginBase}}\label{cbpluginbase}
-abstract base class for all control-bar related plugins
-
+Abstract base class for all control-bar related plugins.
+Note: pointer positions of mouse events sent to plugins
+are always in the pane's coordinates (the pane to which
+this plugin is hooked).
+
\wxheading{Derived from}
\helpref{wxEvtHandler}{wxevthandler}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbPluginBase}{\param{wxFrameLayout* }{pPanel}, \param{int }{paneMask = wxALL\_PANES}}
+Constructor taking layout panel and a mask.
+
\func{}{cbPluginBase}{\void}
+Default constructor.
+
\membersection{cbPluginBase::\destruct{cbPluginBase}}\label{cbpluginbasedtor}
\func{}{\destruct{cbPluginBase}}{\void}
-NOTE:: pointer positions of mouse-events sent to plugins
-are always in pane's coordinates (pane's to which
-this plugin is hooked)
-destroys the whole plugin chain of connected plagins
+Destructor. Destroys the whole plugin chain of connected plugins.
\membersection{cbPluginBase::GetPaneMask}\label{cbpluginbasegetpanemask}
\func{int}{GetPaneMask}{\void}
+Returns the pane mask.
+
\membersection{cbPluginBase::IsReady}\label{cbpluginbaseisready}
\func{bool}{IsReady}{\void}
+Returns TRUE if the plugin is ready to receive events.
+
\membersection{cbPluginBase::OnInitPlugin}\label{cbpluginbaseoninitplugin}
\func{void}{OnInitPlugin}{\void}
-override this method to do plugin-specific initialization
-(at this point plugin is already attached to the frame layout,
-and pane masks are set)
+Override this method to do plugin-specific initialization.
+At this point plugin is already attached to the frame layout,
+and pane masks are set.
\membersection{cbPluginBase::ProcessEvent}\label{cbpluginbaseprocessevent}
\func{bool}{ProcessEvent}{\param{wxEvent\& }{event}}
-overriden, to determine whether the target pane specified in the
-event, matches the pane mask of this plugin (specific plugins
-do not override this method)
+Overridden to determine whether the target pane specified in the
+event matches the pane mask of this plugin (specific plugins
+do not override this method).
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:50:59
+% controlbar.h at 21/Jan/02 21:14:14
%
\section{\class{cbPluginEvent}}\label{cbpluginevent}
-------------------------------------------------------------
- "API" for developing custom plugins of Frame Layout Engine
- TODO:: documentation
- ------------------------------------------------------------
- base class for all control-bar plugin events
+Base class for all control-bar plugin events.
+This is not a dynamically-creatable class.
\wxheading{Derived from}
\helpref{wxEvent}{wxevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbPluginEvent}{\param{wxEventType }{eventType}, \param{cbDockPane* }{pPane}}
+Constructor, taking event type and pane.
+
\membersection{cbPluginEvent::Clone}\label{cbplugineventclone}
\constfunc{wxEvent*}{Clone}{\void}
-OLD STUFF::
- // FOR NOW FOR NOW:: all-in-one plugin event structure
- wxNode* mpObjNode;
- wxNode* mpObjNodeAux;
- wxPoint mPos;
- wxSize mSize;
- wxDC* mpDC;
- bool mAuxBoolVal;
- Not used, but required
+Not used, but required.
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:00
+% controlbar.h at 21/Jan/02 21:14:15
%
\section{\class{cbRemoveBarEvent}}\label{cbremovebarevent}
+
+Class for bar removal events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbRemoveBarEvent}{\param{cbBarInfo* }{pBar}, \param{cbDockPane* }{pPane}}
+Constructor, taking bar information and pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:00
+% controlbar.h at 21/Jan/02 21:14:15
%
\section{\class{cbResizeBarEvent}}\label{cbresizebarevent}
+
+Class for bar resize events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbResizeBarEvent}{\param{cbBarInfo* }{pBar}, \param{cbRowInfo* }{pRow}, \param{cbDockPane* }{pPane}}
+Constructor, taking bar information, row information, and pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:00
+% controlbar.h at 21/Jan/02 21:14:15
%
\section{\class{cbResizeRowEvent}}\label{cbresizerowevent}
+
+Class for row resize events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbResizeRowEvent}{\param{cbRowInfo* }{pRow}, \param{int }{handleOfs}, \param{bool }{forUpperHandle}, \param{cbDockPane* }{pPane}}
+Constructor, taking row information, two parameters of currently unknown use, and pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:00
+% controlbar.h at 21/Jan/02 21:14:15
%
\section{\class{cbRightDownEvent}}\label{cbrightdownevent}
+
+Class for mouse right down events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbRightDownEvent}{\param{const wxPoint\& }{pos}, \param{cbDockPane* }{pPane}}
+Constructor, taking mouse position and pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:00
+% controlbar.h at 21/Jan/02 21:14:15
%
\section{\class{cbRightUpEvent}}\label{cbrightupevent}
+
+Class for mouse right up events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbRightUpEvent}{\param{const wxPoint\& }{pos}, \param{cbDockPane* }{pPane}}
+Constructor, taking mouse position and pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% rowdragpl.h at 05/Jan/02 22:50:57
+% rowdragpl.h at 21/Jan/02 21:14:19
%
\section{\class{cbRowDragPlugin}}\label{cbrowdragplugin}
-Plugin adds row-dragging fuctionality to the pane.
- Handles mouse/movement and pane-background erasing plugin-events.
- Behaviour and appearence resembles drag \& drop posotioning
- of the toolbar-rows int Netscape Comunicator 4.xx.
-
+This plugin adds row-dragging functionality to the pane.
+It handles mouse movement and pane background-erasing plugin events.
+The behaviour and appearance resembles drag and drop positioning
+of the toolbar rows in Netscape Communicator 4.xx.
+
\wxheading{Derived from}
\helpref{cbPluginBase}{cbpluginbase}
+\wxheading{Include files}
+
+<rowdragpl.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbRowDragPlugin}{\param{wxFrameLayout* }{pLayout}, \param{int }{paneMask = wxALL\_PANES}}
+Constructor, taking paren layout frame and pane mask.
+
\func{}{cbRowDragPlugin}{\void}
+Default constructor.
+
\membersection{cbRowDragPlugin::\destruct{cbRowDragPlugin}}\label{cbrowdragplugindtor}
\func{}{\destruct{cbRowDragPlugin}}{\void}
+Destructor.
+
\membersection{cbRowDragPlugin::CaptureDCArea}\label{cbrowdragplugincapturedcarea}
\func{wxBitmap*}{CaptureDCArea}{\param{wxDC\& }{dc}, \param{wxRect\& }{area}}
+Helper for drag and drop.
+
\membersection{cbRowDragPlugin::CheckPrevItemInFocus}\label{cbrowdragplugincheckpreviteminfocus}
\func{void}{CheckPrevItemInFocus}{\param{cbRowInfo* }{pRow}, \param{int }{iconIdx}}
+Helper for drag and drop.
+
\membersection{cbRowDragPlugin::Clone}\label{cbrowdragpluginclone}
\func{cbPluginBase*}{Clone}{\void}
+Clone function, returning a new instance of this class.
+
\membersection{cbRowDragPlugin::CollapseRow}\label{cbrowdragplugincollapserow}
\func{void}{CollapseRow}{\param{cbRowInfo* }{pRow}}
+Helper for drag and drop.
+
\membersection{cbRowDragPlugin::Draw3DPattern}\label{cbrowdragplugindraw3dpattern}
\func{void}{Draw3DPattern}{\param{wxRect\& }{inRect}, \param{wxDC\& }{dc}}
+Implements 'hard-coded metafile' for Netscape Navigator look.
+
\membersection{cbRowDragPlugin::Draw3DRect}\label{cbrowdragplugindraw3drect}
\func{void}{Draw3DRect}{\param{wxRect\& }{inRect}, \param{wxDC\& }{dc}, \param{wxBrush\& }{bkBrush}}
+Implements 'hard-coded metafile' for Netscape Navigator look.
+
\membersection{cbRowDragPlugin::DrawCollapsedRowIcon}\label{cbrowdragplugindrawcollapsedrowicon}
\func{void}{DrawCollapsedRowIcon}{\param{int }{index}, \param{wxDC\& }{dc}, \param{bool }{isHighlighted}}
-overridables (appearence-depedent)
+Draws collapsed row icon (appearance-dependent).
\membersection{cbRowDragPlugin::DrawCollapsedRowsBorder}\label{cbrowdragplugindrawcollapsedrowsborder}
\func{void}{DrawCollapsedRowsBorder}{\param{wxDC\& }{dc}}
+Draws collapsed rows border (appearance-dependent).
+
\membersection{cbRowDragPlugin::DrawEmptyRow}\label{cbrowdragplugindrawemptyrow}
\func{void}{DrawEmptyRow}{\param{wxDC\& }{dc}, \param{wxRect\& }{rowBounds}}
+Draws empty row (appearance-dependent).
+
\membersection{cbRowDragPlugin::DrawOrtoRomb}\label{cbrowdragplugindrawortoromb}
\func{void}{DrawOrtoRomb}{\param{wxRect\& }{inRect}, \param{wxDC\& }{dc}, \param{wxBrush\& }{bkBrush}}
+Implements 'hard-coded metafile' for Netscape Navigator look.
+
\membersection{cbRowDragPlugin::DrawRectShade}\label{cbrowdragplugindrawrectshade}
\func{void}{DrawRectShade}{\param{wxRect\& }{inRect}, \param{wxDC\& }{dc}, \param{int }{level}, \param{wxPen\& }{upperPen}, \param{wxPen\& }{lowerPen}}
+Implements 'hard-coded metafile' for Netscape Navigator look.
+
\membersection{cbRowDragPlugin::DrawRomb}\label{cbrowdragplugindrawromb}
\func{void}{DrawRomb}{\param{wxRect\& }{inRect}, \param{wxDC\& }{dc}, \param{wxBrush\& }{bkBrush}}
+Implements 'hard-coded metafile' for Netscape Navigator look.
+
\membersection{cbRowDragPlugin::DrawRombShades}\label{cbrowdragplugindrawrombshades}
\func{void}{DrawRombShades}{\param{wxPoint\& }{p1}, \param{wxPoint\& }{p2}, \param{wxPoint\& }{p3}, \param{wxPoint\& }{p4}, \param{wxDC\& }{dc}}
+Implements 'hard-coded metafile' for Netscape Navigator look.
+
\membersection{cbRowDragPlugin::DrawRowDragHint}\label{cbrowdragplugindrawrowdraghint}
\func{void}{DrawRowDragHint}{\param{cbRowInfo* }{pRow}, \param{wxDC\& }{dc}, \param{bool }{isHighlighted}}
+Draws row drag hint (appearance-dependent).
+
\membersection{cbRowDragPlugin::DrawRowsDragHintsBorder}\label{cbrowdragplugindrawrowsdraghintsborder}
\func{void}{DrawRowsDragHintsBorder}{\param{wxDC\& }{dc}}
+Draws rows drag hints border (appearance-dependent).
+
\membersection{cbRowDragPlugin::DrawTrianDown}\label{cbrowdragplugindrawtriandown}
\func{void}{DrawTrianDown}{\param{wxRect\& }{inRect}, \param{wxDC\& }{dc}}
+Implements 'hard-coded metafile' for Netscape Navigator look.
+
\membersection{cbRowDragPlugin::DrawTrianRight}\label{cbrowdragplugindrawtrianright}
\func{void}{DrawTrianRight}{\param{wxRect\& }{inRect}, \param{wxDC\& }{dc}}
+Implements 'hard-coded metafile' for Netscape Navigator look.
+
\membersection{cbRowDragPlugin::DrawTrianUp}\label{cbrowdragplugindrawtrianup}
\func{void}{DrawTrianUp}{\param{wxRect\& }{inRect}, \param{wxDC\& }{dc}}
-"hard-coded metafile" for NN-look
+Implements 'hard-coded metafile' for Netscape Navigator look.
\membersection{cbRowDragPlugin::ExpandRow}\label{cbrowdragpluginexpandrow}
\func{void}{ExpandRow}{\param{int }{collapsedIconIdx}}
+Helper for drag and drop.
+
\membersection{cbRowDragPlugin::FinishOnScreenDraw}\label{cbrowdragpluginfinishonscreendraw}
\func{void}{FinishOnScreenDraw}{\void}
+Helper for drag and drop.
+
\membersection{cbRowDragPlugin::GetCollapsedIconsPos}\label{cbrowdragplugingetcollapsediconspos}
\func{int}{GetCollapsedIconsPos}{\void}
+Helper for drag and drop.
+
\membersection{cbRowDragPlugin::GetCollapsedInconRect}\label{cbrowdragplugingetcollapsedinconrect}
\func{void}{GetCollapsedInconRect}{\param{int }{iconIdx}, \param{wxRect\& }{rect}}
+Helper for drag and drop.
+
\membersection{cbRowDragPlugin::GetCollapsedRowIconHeight}\label{cbrowdragplugingetcollapsedrowiconheight}
\func{int}{GetCollapsedRowIconHeight}{\void}
+Gets the collapsed row icon height.
+
\membersection{cbRowDragPlugin::GetFirstRow}\label{cbrowdragplugingetfirstrow}
\func{cbRowInfo*}{GetFirstRow}{\void}
+Helper for drag and drop.
+
\membersection{cbRowDragPlugin::GetHRowsCountForPane}\label{cbrowdragplugingethrowscountforpane}
\func{int}{GetHRowsCountForPane}{\param{cbDockPane* }{pPane}}
-helpers for drag\&drop
+Helper for drag and drop.
\membersection{cbRowDragPlugin::GetRowDragHintWidth}\label{cbrowdragplugingetrowdraghintwidth}
\func{int}{GetRowDragHintWidth}{\void}
+Gets the row drag hint width.
+
\membersection{cbRowDragPlugin::GetRowHintRect}\label{cbrowdragplugingetrowhintrect}
\func{void}{GetRowHintRect}{\param{cbRowInfo* }{pRow}, \param{wxRect\& }{rect}}
+Helper for drag and drop.
+
\membersection{cbRowDragPlugin::HitTestCollapsedRowIcon}\label{cbrowdragpluginhittestcollapsedrowicon}
\func{bool}{HitTestCollapsedRowIcon}{\param{int }{iconIdx}, \param{const wxPoint\& }{pos}}
+Test for the collapsed row icon position.
+
\membersection{cbRowDragPlugin::HitTestRowDragHint}\label{cbrowdragpluginhittestrowdraghint}
\func{bool}{HitTestRowDragHint}{\param{cbRowInfo* }{pRow}, \param{const wxPoint\& }{pos}}
+Test for the row drag hint position.
+
\membersection{cbRowDragPlugin::InsertDraggedRowBefore}\label{cbrowdragplugininsertdraggedrowbefore}
\func{void}{InsertDraggedRowBefore}{\param{cbRowInfo* }{pBeforeRow}}
+Helper for drag and drop.
+
\membersection{cbRowDragPlugin::ItemIsInFocus}\label{cbrowdragpluginitemisinfocus}
\func{bool}{ItemIsInFocus}{\void}
+Helper for drag and drop.
+
\membersection{cbRowDragPlugin::OnDrawPaneBackground}\label{cbrowdragpluginondrawpanebackground}
\func{void}{OnDrawPaneBackground}{\param{cbDrawPaneDecorEvent\& }{event}}
+Handles pane drawing plugin events (appearance-independent logic).
+
\membersection{cbRowDragPlugin::OnInitPlugin}\label{cbrowdragpluginoninitplugin}
\func{void}{OnInitPlugin}{\void}
+Called to initialize this plugin.
+
\membersection{cbRowDragPlugin::OnLButtonDown}\label{cbrowdragpluginonlbuttondown}
\func{void}{OnLButtonDown}{\param{cbLeftDownEvent\& }{event}}
+Handles left button down plugin events (appearance-independent logic).
+
\membersection{cbRowDragPlugin::OnLButtonUp}\label{cbrowdragpluginonlbuttonup}
\func{void}{OnLButtonUp}{\param{cbLeftUpEvent\& }{event}}
+Handles left button up plugin events (appearance-independent logic).
+
\membersection{cbRowDragPlugin::OnMouseMove}\label{cbrowdragpluginonmousemove}
\func{void}{OnMouseMove}{\param{cbMotionEvent\& }{event}}
-handlers for plugin events (appearence-independent logic)
+Handles mouse move plugin events (appearance-independent logic).
\membersection{cbRowDragPlugin::PrepareForRowDrag}\label{cbrowdragpluginprepareforrowdrag}
\func{void}{PrepareForRowDrag}{\void}
+Helper for drag and drop.
+
\membersection{cbRowDragPlugin::SetMouseCapture}\label{cbrowdragpluginsetmousecapture}
\func{void}{SetMouseCapture}{\param{bool }{captureOn}}
+Helper for drag and drop.
+
\membersection{cbRowDragPlugin::SetPaneMargins}\label{cbrowdragpluginsetpanemargins}
\func{void}{SetPaneMargins}{\void}
+Sets the pane margins.
+
\membersection{cbRowDragPlugin::ShowDraggedRow}\label{cbrowdragpluginshowdraggedrow}
\func{void}{ShowDraggedRow}{\param{int }{offset}}
+Helper for drag and drop.
+
\membersection{cbRowDragPlugin::ShowPaneImage}\label{cbrowdragpluginshowpaneimage}
\func{void}{ShowPaneImage}{\void}
+Helper for drag and drop.
+
+
+\membersection{cbRowDragPlugin::UnhighlightItemInFocus}\label{cbrowdragpluginunhighlightiteminfocus}
-\membersection{cbRowDragPlugin::UnhiglightItemInFocus}\label{cbrowdragpluginunhiglightiteminfocus}
+\func{void}{UnhighlightItemInFocus}{\void}
-\func{void}{UnhiglightItemInFocus}{\void}
+Helper for drag and drop.
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:50:59
+% controlbar.h at 21/Jan/02 21:14:13
%
\section{\class{cbRowInfo}}\label{cbrowinfo}
+
+Helper class used internally by the wxFrameLayout class.
+Holds and manages information about bar rows.
+
\wxheading{Derived from}
\helpref{wxObject}{wxobject}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbRowInfo}{\void}
+Constructor.
+
\membersection{cbRowInfo::\destruct{cbRowInfo}}\label{cbrowinfodtor}
\func{}{\destruct{cbRowInfo}}{\void}
+Destructor.
+
\membersection{cbRowInfo::GetFirstBar}\label{cbrowinfogetfirstbar}
\func{cbBarInfo*}{GetFirstBar}{\void}
-convenience method
+Returns the first bar.
%
% automatically generated by HelpGen $Revision$ from
-% rowlayoutpl.h at 05/Jan/02 22:50:58
+% rowlayoutpl.h at 21/Jan/02 21:14:19
%
\section{\class{cbRowLayoutPlugin}}\label{cbrowlayoutplugin}
-Simple implementation of plugin, which handles row-layouting
- requests sent from Frame Layout
-
+Simple implementation of a plugin which handles row layout
+requests sent from a frame layout.
+
\wxheading{Derived from}
\helpref{cbPluginBase}{cbpluginbase}
+\wxheading{Include files}
+
+<rowlayoutpl.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbRowLayoutPlugin}{\param{wxFrameLayout* }{pPanel}, \param{int }{paneMask = wxALL\_PANES}}
+Constructor taking frame layout pane and pane mask.
+
\func{}{cbRowLayoutPlugin}{\void}
+Default constructor.
+
\membersection{cbRowLayoutPlugin::AdjustLengthOfInserted}\label{cbrowlayoutpluginadjustlengthofinserted}
\func{void}{AdjustLengthOfInserted}{\param{cbRowInfo* }{pRow}, \param{cbBarInfo* }{pTheBar}}
+Internal helper relating to not-fixed-bars layout.
+
\membersection{cbRowLayoutPlugin::ApplyLengthRatios}\label{cbrowlayoutpluginapplylengthratios}
\func{void}{ApplyLengthRatios}{\param{cbRowInfo* }{pRow}}
+Internal helper relating to not-fixed-bars layout.
+
\membersection{cbRowLayoutPlugin::CalcRowHeight}\label{cbrowlayoutplugincalcrowheight}
\func{int}{CalcRowHeight}{\param{cbRowInfo\& }{row}}
-row-layouting helpers (simulate "bar-friction")
+Row layout helper simulating bar 'friction'.
\membersection{cbRowLayoutPlugin::CheckIfAtTheBoundary}\label{cbrowlayoutplugincheckifattheboundary}
\func{void}{CheckIfAtTheBoundary}{\param{cbBarInfo* }{pTheBar}, \param{cbRowInfo\& }{rowInfo}}
+Internal helper relating to not-fixed-bars layout.
+
\membersection{cbRowLayoutPlugin::DetectBarHandles}\label{cbrowlayoutplugindetectbarhandles}
\func{void}{DetectBarHandles}{\param{cbRowInfo* }{pRow}}
+Internal helper relating to not-fixed-bars layout.
+
\membersection{cbRowLayoutPlugin::DoInsertBar}\label{cbrowlayoutplugindoinsertbar}
\func{void}{DoInsertBar}{\param{cbBarInfo* }{pTheBar}, \param{cbRowInfo\& }{row}}
+Insert the bar before the given row.
+
\membersection{cbRowLayoutPlugin::ExpandNotFixedBars}\label{cbrowlayoutpluginexpandnotfixedbars}
\func{void}{ExpandNotFixedBars}{\param{cbRowInfo* }{pRow}}
+Internal helper relating to not-fixed-bars layout.
+
\membersection{cbRowLayoutPlugin::FitBarsToRange}\label{cbrowlayoutpluginfitbarstorange}
\func{void}{FitBarsToRange}{\param{int }{from}, \param{int }{till}, \param{cbBarInfo* }{pTheBar}, \param{cbRowInfo* }{pRow}}
-not-fixed-bars layouting related helpers
+Internal helper relating to not-fixed-bars layout.
\membersection{cbRowLayoutPlugin::GetRowFreeSpace}\label{cbrowlayoutplugingetrowfreespace}
\func{int}{GetRowFreeSpace}{\param{cbRowInfo* }{pRow}}
+Internal helper relating to not-fixed-bars layout.
+
\membersection{cbRowLayoutPlugin::InsertBefore}\label{cbrowlayoutplugininsertbefore}
\func{void}{InsertBefore}{\param{cbBarInfo* }{pBeforeBar}, \param{cbBarInfo* }{pTheBar}, \param{cbRowInfo\& }{row}}
+Insert the bar before the given row.
+
\membersection{cbRowLayoutPlugin::LayoutItemsVertically}\label{cbrowlayoutpluginlayoutitemsvertically}
\func{void}{LayoutItemsVertically}{\param{cbRowInfo\& }{row}}
+Row layout helper simulating bar 'friction'.
+
\membersection{cbRowLayoutPlugin::MinimzeNotFixedBars}\label{cbrowlayoutpluginminimzenotfixedbars}
\func{void}{MinimzeNotFixedBars}{\param{cbRowInfo* }{pRow}, \param{cbBarInfo* }{pBarToPreserve}}
+Internal helper relating to not-fixed-bars layout.
+
\membersection{cbRowLayoutPlugin::OnInsertBar}\label{cbrowlayoutpluginoninsertbar}
\func{void}{OnInsertBar}{\param{cbInsertBarEvent\& }{event}}
+Responds to bar insertion event.
+
\membersection{cbRowLayoutPlugin::OnLayoutRow}\label{cbrowlayoutpluginonlayoutrow}
\func{void}{OnLayoutRow}{\param{cbLayoutRowEvent\& }{event}}
+Responds to row layout event.
+
\membersection{cbRowLayoutPlugin::OnLayoutRows}\label{cbrowlayoutpluginonlayoutrows}
\func{void}{OnLayoutRows}{\param{cbLayoutRowsEvent\& }{event}}
+Responds to rows layout event.
+
\membersection{cbRowLayoutPlugin::OnRemoveBar}\label{cbrowlayoutpluginonremovebar}
\func{void}{OnRemoveBar}{\param{cbRemoveBarEvent\& }{event}}
+Responds to bar removal event.
+
\membersection{cbRowLayoutPlugin::OnResizeRow}\label{cbrowlayoutpluginonresizerow}
\func{void}{OnResizeRow}{\param{cbResizeRowEvent\& }{event}}
-event handlers
+Responds to row resize event.
\membersection{cbRowLayoutPlugin::RecalcLengthRatios}\label{cbrowlayoutpluginrecalclengthratios}
\func{void}{RecalcLengthRatios}{\param{cbRowInfo* }{pRow}}
+Internal helper relating to not-fixed-bars layout.
+
\membersection{cbRowLayoutPlugin::RelayoutNotFixedBarsAround}\label{cbrowlayoutpluginrelayoutnotfixedbarsaround}
\func{void}{RelayoutNotFixedBarsAround}{\param{cbBarInfo* }{pTheBar}, \param{cbRowInfo* }{pRow}}
+Internal helper relating to not-fixed-bars layout.
+
\membersection{cbRowLayoutPlugin::ShiftLeftTrashold}\label{cbrowlayoutpluginshiftlefttrashold}
\func{void}{ShiftLeftTrashold}{\param{cbBarInfo* }{pTheBar}, \param{cbRowInfo\& }{row}}
+Row layout helper simulating bar 'friction'.
+
\membersection{cbRowLayoutPlugin::ShiftRightTrashold}\label{cbrowlayoutpluginshiftrighttrashold}
\func{void}{ShiftRightTrashold}{\param{cbBarInfo* }{pTheBar}, \param{cbRowInfo\& }{row}}
+Row layout helper simulating bar 'friction'.
+
\membersection{cbRowLayoutPlugin::SlideLeftSideBars}\label{cbrowlayoutpluginslideleftsidebars}
\func{void}{SlideLeftSideBars}{\param{cbBarInfo* }{pTheBar}}
+Row layout helper simulating bar 'friction'.
+
\membersection{cbRowLayoutPlugin::SlideRightSideBars}\label{cbrowlayoutpluginsliderightsidebars}
\func{void}{SlideRightSideBars}{\param{cbBarInfo* }{pTheBar}}
+Row layout helper simulating bar 'friction'.
+
\membersection{cbRowLayoutPlugin::StickRightSideBars}\label{cbrowlayoutpluginstickrightsidebars}
\func{void}{StickRightSideBars}{\param{cbBarInfo* }{pToBar}}
+Row layout helper simulating bar 'friction'.
+
%
% automatically generated by HelpGen $Revision$ from
-% cbcustom.h at 05/Jan/02 22:50:56
+% cbcustom.h at 21/Jan/02 21:14:18
%
\section{\class{cbSimpleCustomizationPlugin}}\label{cbsimplecustomizationplugin}
+
+This class enables customization of a bar, popping up a
+menu and handling basic customization such as floating
+and horizontal/vertical alignment of the bar.
+
\wxheading{Derived from}
\helpref{cbPluginBase}{cbpluginbase}
+\wxheading{Include files}
+
+<cbcustom.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbSimpleCustomizationPlugin}{\param{wxFrameLayout* }{pPanel}, \param{int }{paneMask = wxALL\_PANES}}
+Constructor, taking parent pane and a pane mask flag.
+
\func{}{cbSimpleCustomizationPlugin}{\void}
+Default constructor.
+
\membersection{cbSimpleCustomizationPlugin::OnCustomizeBar}\label{cbsimplecustomizationpluginoncustomizebar}
\func{void}{OnCustomizeBar}{\param{cbCustomizeBarEvent\& }{event}}
-plugin-event handlers
+Plugin event handler for cbCustomizeBarEvent.
\membersection{cbSimpleCustomizationPlugin::OnCustomizeLayout}\label{cbsimplecustomizationpluginoncustomizelayout}
\func{void}{OnCustomizeLayout}{\param{cbCustomizeLayoutEvent\& }{event}}
+Plugin event handler for cbCustomizeLayoutEvent.
+
\membersection{cbSimpleCustomizationPlugin::OnMenuItemSelected}\label{cbsimplecustomizationpluginonmenuitemselected}
\func{void}{OnMenuItemSelected}{\param{wxCommandEvent\& }{event}}
-menu-event handler
+Menu event handler.
%
% automatically generated by HelpGen $Revision$ from
-% updatesmgr.h at 05/Jan/02 22:50:58
+% updatesmgr.h at 21/Jan/02 21:14:18
%
\section{\class{cbSimpleUpdatesMgr}}\label{cbsimpleupdatesmgr}
-class implements slightly optimized logic for refreshing
- areas of frame layout - which actually need to be updated.
-
+This class implements slightly optimized logic for refreshing
+the areas of frame layout that actually need to be updated.
+
\wxheading{Derived from}
\helpref{cbUpdatesManagerBase}{cbupdatesmanagerbase}
+\wxheading{Include files}
+
+<updatesmgr.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbSimpleUpdatesMgr}{\void}
+Default constructor.
+
\func{}{cbSimpleUpdatesMgr}{\param{wxFrameLayout* }{pPanel}}
+Constructor taking frame layout panel.
+
\membersection{cbSimpleUpdatesMgr::OnBarWillChange}\label{cbsimpleupdatesmgronbarwillchange}
\func{void}{OnBarWillChange}{\param{cbBarInfo* }{pBar}, \param{cbRowInfo* }{pInRow}, \param{cbDockPane* }{pInPane}}
+Notification received from Frame Layout in the order in which
+they would usually be invoked.
+
\membersection{cbSimpleUpdatesMgr::OnFinishChanges}\label{cbsimpleupdatesmgronfinishchanges}
\func{void}{OnFinishChanges}{\void}
+Notification received from Frame Layout in the order in which
+they would usually be invoked.
+
\membersection{cbSimpleUpdatesMgr::OnPaneMarginsWillChange}\label{cbsimpleupdatesmgronpanemarginswillchange}
\func{void}{OnPaneMarginsWillChange}{\param{cbDockPane* }{pPane}}
+Notification received from Frame Layout in the order in which
+they would usually be invoked.
+
\membersection{cbSimpleUpdatesMgr::OnPaneWillChange}\label{cbsimpleupdatesmgronpanewillchange}
\func{void}{OnPaneWillChange}{\param{cbDockPane* }{pPane}}
+Notification received from Frame Layout in the order in which
+they would usually be invoked.
+
\membersection{cbSimpleUpdatesMgr::OnRowWillChange}\label{cbsimpleupdatesmgronrowwillchange}
\func{void}{OnRowWillChange}{\param{cbRowInfo* }{pRow}, \param{cbDockPane* }{pInPane}}
+Notification received from Frame Layout in the order in which
+they would usually be invoked.
+
\membersection{cbSimpleUpdatesMgr::OnStartChanges}\label{cbsimpleupdatesmgronstartchanges}
\func{void}{OnStartChanges}{\void}
-notificiactions received from Frame Layout (in the order, in which
-they usually would be invoked)
+Notification received from Frame Layout in the order in which
+they would usually be invoked.
\membersection{cbSimpleUpdatesMgr::UpdateNow}\label{cbsimpleupdatesmgrupdatenow}
\func{void}{UpdateNow}{\void}
-refreshes parts of the frame layout, which need an update
+Refreshes the parts of the frame layoutthat need an update.
\membersection{cbSimpleUpdatesMgr::WasChanged}\label{cbsimpleupdatesmgrwaschanged}
\func{bool}{WasChanged}{\param{cbUpdateMgrData\& }{data}, \param{wxRect\& }{currentBounds}}
+Helper function.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:00
+% controlbar.h at 21/Jan/02 21:14:16
%
\section{\class{cbSizeBarWndEvent}}\label{cbsizebarwndevent}
+
+Class for bar window resize events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbSizeBarWndEvent}{\param{cbBarInfo* }{pBar}, \param{cbDockPane* }{pPane}}
+Constructor, taking bar information and pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:01
+% controlbar.h at 21/Jan/02 21:14:16
%
\section{\class{cbStartBarDraggingEvent}}\label{cbstartbardraggingevent}
+
+Class for start-bar-dragging events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbStartBarDraggingEvent}{\param{cbBarInfo* }{pBar}, \param{const wxPoint\& }{pos}, \param{cbDockPane* }{pPane}}
+Constructor, taking bar information, mouse position, and pane.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:51:01
+% controlbar.h at 21/Jan/02 21:14:16
%
\section{\class{cbStartDrawInAreaEvent}}\label{cbstartdrawinareaevent}
+
+Class for start drawing in area events.
+
\wxheading{Derived from}
\helpref{cbPluginEvent}{cbpluginevent}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbStartDrawInAreaEvent}{\param{const wxRect\& }{area}, \param{wxDC** }{ppDCForArea}, \param{cbDockPane* }{pPane}}
to the obtained buffer-context should be placed
+Constructor, taking rectangular area, device context pointer to a pointer, and pane.
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:50:58
+% controlbar.h at 21/Jan/02 21:14:13
%
\section{\class{cbUpdateMgrData}}\label{cbupdatemgrdata}
-structure, which is present in each item of layout,
- it used by any specific updates-manager to store
- auxilary information to be used by it's specific
- updating algorithm
-
+A structure that is present in each item of layout,
+used by any particular updates-manager to store
+auxiliary information to be used by its updating algorithm.
+
\wxheading{Derived from}
\helpref{wxObject}{wxobject}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbUpdateMgrData}{\void}
-is-dirty flag is set TRUE initially
+Default constructor. Is-dirty flag is set TRUE initially.
\membersection{cbUpdateMgrData::IsDirty}\label{cbupdatemgrdataisdirty}
\func{bool}{IsDirty}{\void}
+Returns the is-dirty flag.
+
\membersection{cbUpdateMgrData::SetCustomData}\label{cbupdatemgrdatasetcustomdata}
\func{void}{SetCustomData}{\param{wxObject* }{pCustomData}}
+Set custom data.
+
\membersection{cbUpdateMgrData::SetDirty}\label{cbupdatemgrdatasetdirty}
\func{void}{SetDirty}{\param{bool }{isDirty = TRUE}}
+Set the dirty flag.
+
\membersection{cbUpdateMgrData::StoreItemState}\label{cbupdatemgrdatastoreitemstate}
\func{void}{StoreItemState}{\param{const wxRect\& }{boundsInParent}}
+Store the item state.
+
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:50:59
+% controlbar.h at 21/Jan/02 21:14:14
%
\section{\class{cbUpdatesManagerBase}}\label{cbupdatesmanagerbase}
-class declares abstract interface for optimized logic, which should refresh
- areas of frame layout - that actually need to be updated. Should be extended,
- to implement custom updating strategy
-
+This class declares an abstract interface for optimized logic that should refresh
+areas of frame layout that actually need to be updated. This should be extended in future
+to implement a custom updating strategy.
+
\wxheading{Derived from}
\helpref{wxObject}{wxobject}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{cbUpdatesManagerBase}{\param{wxFrameLayout* }{pPanel}}
+Constructor taking layout panel.
+
\func{}{cbUpdatesManagerBase}{\void}
+Default constructor
+
\membersection{cbUpdatesManagerBase::\destruct{cbUpdatesManagerBase}}\label{cbupdatesmanagerbasedtor}
\func{}{\destruct{cbUpdatesManagerBase}}{\void}
+Destructor.
+
\membersection{cbUpdatesManagerBase::OnBarWillChange}\label{cbupdatesmanagerbaseonbarwillchange}
\func{void}{OnBarWillChange}{\param{cbBarInfo* }{pBar}, \param{cbRowInfo* }{pInRow}, \param{cbDockPane* }{pInPane}}
+This function receives a notification from the frame layout (in the order in which
+they would usually be invoked). Custom updates-managers may utilize
+these notifications to implement a more fine-grained updating strategy.
+
\membersection{cbUpdatesManagerBase::OnFinishChanges}\label{cbupdatesmanagerbaseonfinishchanges}
\func{void}{OnFinishChanges}{\void}
+This function receives a notification from the frame layout (in the order in which
+they would usually be invoked). Custom updates-managers may utilize
+these notifications to implement a more fine-grained updating strategy.
+
\membersection{cbUpdatesManagerBase::OnPaneMarginsWillChange}\label{cbupdatesmanagerbaseonpanemarginswillchange}
\func{void}{OnPaneMarginsWillChange}{\param{cbDockPane* }{pPane}}
+This function receives a notification from the frame layout (in the order in which
+they would usually be invoked). Custom updates-managers may utilize
+these notifications to implement a more fine-grained updating strategy.
+
\membersection{cbUpdatesManagerBase::OnPaneWillChange}\label{cbupdatesmanagerbaseonpanewillchange}
\func{void}{OnPaneWillChange}{\param{cbDockPane* }{pPane}}
+This function receives a notification from the frame layout (in the order in which
+they would usually be invoked). Custom updates-managers may utilize
+these notifications to implement a more fine-grained updating strategy.
+
\membersection{cbUpdatesManagerBase::OnRowWillChange}\label{cbupdatesmanagerbaseonrowwillchange}
\func{void}{OnRowWillChange}{\param{cbRowInfo* }{pRow}, \param{cbDockPane* }{pInPane}}
+This function receives a notification from the frame layout (in the order in which
+they would usually be invoked). Custom updates-managers may utilize
+these notifications to implement a more fine-grained updating strategy.
+
\membersection{cbUpdatesManagerBase::OnStartChanges}\label{cbupdatesmanagerbaseonstartchanges}
\func{void}{OnStartChanges}{\void}
-notificiactions received from frame-layout (in the order, in which
-they usually would be invoked). Custom updates-managers may utilize
-these notifications to implement more "fine-grained" updating strategy
+This function receives a notification from the frame layout (in the order in which
+they would usually be invoked). Custom updates-managers may utilize
+these notifications to implement a more fine-grained updating strategy.
\membersection{cbUpdatesManagerBase::SetLayout}\label{cbupdatesmanagerbasesetlayout}
\func{void}{SetLayout}{\param{wxFrameLayout* }{pLayout}}
+Sets the associated layout.
+
\membersection{cbUpdatesManagerBase::UpdateNow}\label{cbupdatesmanagerbaseupdatenow}
\func{void}{UpdateNow}{\void}
-refreshes parts of the frame layout, which need an update
+Refreshes parts of the frame layout that need an update.
\input cbfinishdrawinareaevent.tex
\input cbfloatedbarwindow.tex
\input cbgcupdatesmgr.tex
-\input cbhiddenbarinfo.tex
+%\input cbhiddenbarinfo.tex
\input cbhintanimationplugin.tex
-\input cbhintanimtimer.tex
+%\input cbhintanimtimer.tex
\input cbinsertbarevent.tex
\input cblayoutrowevent.tex
\input cblayoutrowsevent.tex
\input dyntoolinfo.tex
\input framelayout.tex
\input framemanager.tex
-\input frameview.tex
+%\input frameview.tex
\input garbagecollector.tex
-\input gcitem.tex
\input layoutmanagerbase.tex
-\input morphinfot.tex
+%\input morphinfot.tex
\input newbitmapbutton.tex
\input toollayoutitem.tex
\input toolwindow.tex
%
% automatically generated by HelpGen $Revision$ from
-% dyntbar.h at 05/Jan/02 22:50:56
+% dyntbar.h at 21/Jan/02 21:14:18
%
\section{\class{wxDynamicToolBar}}\label{wxdynamictoolbar}
-class manages containment and layouting of tool-windows
+wxDynamicToolBar manages containment and layout of tool windows.
\wxheading{Derived from}
\helpref{wxToolBarBase}{wxtoolbarbase}
+\wxheading{Include files}
+
+<dyntbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{wxDynamicToolBar}{\void}
+Default constructor.
+
\func{}{wxDynamicToolBar}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{const long }{style = wxNO\_BORDER}, \param{const int }{orientation = wxVERTICAL}, \param{const int }{RowsOrColumns = 1}, \param{const wxString\& }{name = wxToolBarNameStr}}
+Constructor: see the documentation for wxToolBar for details.
+
\membersection{wxDynamicToolBar::\destruct{wxDynamicToolBar}}\label{wxdynamictoolbardtor}
\func{}{\destruct{wxDynamicToolBar}}{\void}
+Destructor.
+
\membersection{wxDynamicToolBar::AddSeparator}\label{wxdynamictoolbaraddseparator}
\func{void}{AddSeparator}{\param{wxWindow* }{pSepartorWnd = NULL}}
+Adds a separator. See the documentation for wxToolBar for details.
+
\membersection{wxDynamicToolBar::AddTool}\label{wxdynamictoolbaraddtool}
\func{void}{AddTool}{\param{int }{toolIndex}, \param{wxWindow* }{pToolWindow}, \param{const wxSize\& }{size = wxDefaultSize}}
-overridables
+Adds a tool. See the documentation for wxToolBar for details.
\func{void}{AddTool}{\param{int }{toolIndex}, \param{const wxString\& }{imageFileName}, \param{wxBitmapType }{imageFileType = wxBITMAP\_TYPE\_BMP}, \param{const wxString\& }{labelText = ""}, \param{bool }{alignTextRight = FALSE}, \param{bool }{isFlat = TRUE}}
+Adds a tool. See the documentation for wxToolBar for details.
+
\func{void}{AddTool}{\param{int }{toolIndex}, \param{wxBitmap }{labelBmp}, \param{const wxString\& }{labelText = ""}, \param{bool }{alignTextRight = FALSE}, \param{bool }{isFlat = TRUE}}
+Adds a tool. See the documentation for wxToolBar for details.
+
\func{wxToolBarToolBase*}{AddTool}{\param{const int }{toolIndex}, \param{const wxBitmap\& }{bitmap}, \param{const wxBitmap\& }{pushedBitmap = wxNullBitmap}, \param{const bool }{toggle = FALSE}, \param{const long }{xPos = -1}, \param{const long }{yPos = -1}, \param{wxObject* }{clientData = NULL}, \param{const wxString\& }{helpString1 = ""}, \param{const wxString\& }{helpString2 = ""}}
-method from wxToolBarBase (for compatibility), only
-first two arguments are valid
+Method from wxToolBarBase (for compatibility), only
+the first two arguments are valid.
+See the documentation for wxToolBar for details.
\membersection{wxDynamicToolBar::Create}\label{wxdynamictoolbarcreate}
\func{bool}{Create}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{const long }{style = wxNO\_BORDER}, \param{const int }{orientation = wxVERTICAL}, \param{const int }{RowsOrColumns = 1}, \param{const wxString\& }{name = wxToolBarNameStr}}
+Creation function: see the documentation for wxToolBar for details.
+
+
+\membersection{wxDynamicToolBar::CreateDefaultLayout}\label{wxdynamictoolbarcreatedefaultlayout}
-\membersection{wxDynamicToolBar::CreateDefaulLayout}\label{wxdynamictoolbarcreatedefaullayout}
+\func{LayoutManagerBase*}{CreateDefaultLayout}{\void}
-\func{LayoutManagerBase*}{CreateDefaulLayout}{\void}
+Creates the default layout (BagLayout).
\membersection{wxDynamicToolBar::CreateTool}\label{wxdynamictoolbarcreatetool}
\func{wxToolBarToolBase*}{CreateTool}{\param{wxControl* }{control}}
+Creates a toolbar tool.
+
\func{wxToolBarToolBase*}{CreateTool}{\param{int }{id}, \param{const wxBitmap\& }{bitmap1}, \param{const wxBitmap\& }{bitmap2}, \param{bool }{toggle}, \param{wxObject* }{clientData}, \param{const wxString\& }{shortHelpString}, \param{const wxString\& }{longHelpString}}
-the functions to create toolbar tools
+Creates a toolbar tool.
\membersection{wxDynamicToolBar::DoDeleteTool}\label{wxdynamictoolbardodeletetool}
\func{bool}{DoDeleteTool}{\param{size\_t }{pos}, \param{wxToolBarToolBase* }{tool}}
-the tool is still in m\_tools list when this function is called, it will
-only be deleted from it if it succeeds
+Deletes a tool. The tool is still in m\_tools list when this function is called, and it will
+only be deleted from it if it succeeds.
\membersection{wxDynamicToolBar::DoEnableTool}\label{wxdynamictoolbardoenabletool}
\func{void}{DoEnableTool}{\param{wxToolBarToolBase* }{tool}, \param{bool }{enable}}
-called when the tools enabled flag changes
+Called when the tools enabled flag changes.
\membersection{wxDynamicToolBar::DoInsertTool}\label{wxdynamictoolbardoinserttool}
\func{bool}{DoInsertTool}{\param{size\_t }{pos}, \param{wxToolBarToolBase* }{tool}}
+Inserts a tool at the given position.
+
\membersection{wxDynamicToolBar::DoSetToggle}\label{wxdynamictoolbardosettoggle}
\func{void}{DoSetToggle}{\param{wxToolBarToolBase* }{tool}, \param{bool }{toggle}}
-called when the tools "can be toggled" flag changes
+Called when the tools 'can be toggled' flag changes.
\membersection{wxDynamicToolBar::DoToggleTool}\label{wxdynamictoolbardotoggletool}
\func{void}{DoToggleTool}{\param{wxToolBarToolBase* }{tool}, \param{bool }{toggle}}
-called when the tool is toggled
+Called when the tool is toggled.
\membersection{wxDynamicToolBar::DrawSeparator}\label{wxdynamictoolbardrawseparator}
\func{void}{DrawSeparator}{\param{wxDynToolInfo\& }{info}, \param{wxDC\& }{dc}}
-the default implementation draws shaded line
+Draws a separator. The default implementation draws a shaded line.
\membersection{wxDynamicToolBar::EnableTool}\label{wxdynamictoolbarenabletool}
\func{void}{EnableTool}{\param{const int }{toolIndex}, \param{const bool }{enable = TRUE}}
+Enables or disables the given tool.
+
\membersection{wxDynamicToolBar::FindToolForPosition}\label{wxdynamictoolbarfindtoolforposition}
\constfunc{wxToolBarToolBase*}{FindToolForPosition}{\param{wxCoord }{x}, \param{wxCoord }{y}}
-stuff from the 2.1.15
+Finds a tool for the given position.
\membersection{wxDynamicToolBar::GetPreferredDim}\label{wxdynamictoolbargetpreferreddim}
\func{void}{GetPreferredDim}{\param{const wxSize\& }{givenDim}, \param{wxSize\& }{prefDim}}
+Returns the preferred dimension, taking the given dimension and a reference to the result.
+
\membersection{wxDynamicToolBar::GetToolInfo}\label{wxdynamictoolbargettoolinfo}
\func{wxDynToolInfo*}{GetToolInfo}{\param{int }{toolIndex}}
+Returns tool information for the given tool index.
+
\membersection{wxDynamicToolBar::Layout}\label{wxdynamictoolbarlayout}
\func{bool}{Layout}{\void}
-see definitions of orientation types
+Performs layout. See definitions of orientation types.
\membersection{wxDynamicToolBar::OnEraseBackground}\label{wxdynamictoolbaronerasebackground}
\func{void}{OnEraseBackground}{\param{wxEraseEvent\& }{event}}
+Responds to background erase events. Currently does nothing.
+
\membersection{wxDynamicToolBar::OnPaint}\label{wxdynamictoolbaronpaint}
\func{void}{OnPaint}{\param{wxPaintEvent\& }{event}}
+Responds to paint events, drawing separators.
+
\membersection{wxDynamicToolBar::OnSize}\label{wxdynamictoolbaronsize}
\func{void}{OnSize}{\param{wxSizeEvent\& }{event}}
-event handlers
+Responds to size events, calling Layout.
\membersection{wxDynamicToolBar::Realize}\label{wxdynamictoolbarrealize}
\func{bool}{Realize}{\void}
-overriden from wxToolBarBase
+Overriden from wxToolBarBase; does nothing.
\membersection{wxDynamicToolBar::RemveTool}\label{wxdynamictoolbarremvetool}
\func{void}{RemveTool}{\param{int }{toolIndex}}
+Removes the given tool. Misspelt in order not to clash with a similar function
+in the base class.
+
\membersection{wxDynamicToolBar::SetLayout}\label{wxdynamictoolbarsetlayout}
\func{void}{SetLayout}{\param{LayoutManagerBase* }{pLayout}}
+Sets the layout for this toolbar.
+
\membersection{wxDynamicToolBar::SizeToolWindows}\label{wxdynamictoolbarsizetoolwindows}
\func{void}{SizeToolWindows}{\void}
+Internal function for sizing tool windows.
+
%
% automatically generated by HelpGen $Revision$ from
-% dyntbar.h at 05/Jan/02 22:50:56
+% dyntbar.h at 21/Jan/02 21:14:18
%
\section{\class{wxDynToolInfo}}\label{wxdyntoolinfo}
+
+This class holds dynamic toolbar item information.
+
\wxheading{Derived from}
\helpref{wxToolLayoutItem}{wxtoollayoutitem}
+\wxheading{Include files}
+
+<dyntbar.h>
+
\wxheading{Data structures}
%
% automatically generated by HelpGen $Revision$ from
-% controlbar.h at 05/Jan/02 22:50:58
+% controlbar.h at 21/Jan/02 21:14:13
%
\section{\class{wxFrameLayout}}\label{wxframelayout}
-wxFrameLayout manages containment and docking of control bars.
- which can be docked along top, bottom, righ, or left side of the
- parent frame
-
+wxFrameLayout manages containment and docking of control bars,
+which can be docked along the top, bottom, right, or left side of the
+parent frame.
+
\wxheading{Derived from}
\helpref{wxEvtHandler}{wxevthandler}
+\wxheading{Include files}
+
+<controlbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{wxFrameLayout}{\param{wxWindow* }{pParentFrame}, \param{wxWindow* }{pFrameClient = NULL}, \param{bool }{activateNow = TRUE}}
+Constructor, taking parent window, the (MDI) client of the parent if there
+is one, and flag specifying whether to activate the layout.
+
\func{}{wxFrameLayout}{\void}
-used only while serializing
+Default constructor, used only for serialization.
\membersection{wxFrameLayout::\destruct{wxFrameLayout}}\label{wxframelayoutdtor}
\func{}{\destruct{wxFrameLayout}}{\void}
-(doesn't destroy bar windows)
+Destructor. It does not destroy the bar windows.
\membersection{wxFrameLayout::Activate}\label{wxframelayoutactivate}
\func{void}{Activate}{\void}
-Can be called after some other layout has been deactivated,
-and this one must "take over" the current contents of frame window.
-Effectively hooks itself to the frame window, re-displays all not-hidden
-bar-windows and repaints decorations
+Activate can be called after some other layout has been deactivated,
+and this one must take over the current contents of the frame window.
+Effectively hooks itself to the frame window, re-displays all non-hidden
+bar windows and repaints the decorations.
\membersection{wxFrameLayout::AddBar}\label{wxframelayoutaddbar}
\func{void}{AddBar}{\param{wxWindow* }{pBarWnd}, \param{const cbDimInfo\& }{dimInfo}, \param{int }{alignment = FL\_ALIGN\_TOP}, \param{int }{rowNo = 0}, \param{int }{columnPos = 0}, \param{const wxString\& }{name = "bar"}, \param{bool }{spyEvents = FALSE}, \param{int }{state = wxCBAR\_DOCKED\_HORIZONTALLY}}
-Adds bar information to frame-layout, appearence of layout is not refreshed
-immediately, RefreshNow() can be called if necessary.
-NOTES:: argument pBarWnd can by NULL, resulting bar decorations to be drawn
+Adds bar information to the frame layout. The appearance of the layout is not refreshed
+immediately; RefreshNow() can be called if necessary.
+Notes: the argument pBarWnd can by NULL, resulting in bar decorations to be drawn
around the empty rectangle (filled with default background colour).
-Argument dimInfo, can be re-used for adding any number of bars, since
-it is not used directly, instead it's members are copied. If dimensions-
-handler is present, it's instance shared (reference counted). Dimension
-handler should always be allocated on the heap!)
+Argument dimInfo can be reused for adding any number of bars, since
+it is not used directly - instead its members are copied. If the dimensions
+handler is present, its instance is shared (reference counted). The dimension
+handler should always be allocated on the heap.
+pBarWnd is the window to be managed.
+dimInfo contains dimension information.
+alignment is a value such as FL\_ALIGN\_TOP.
+rowNo is the vertical position or row in the pane (if in docked state).
+columnPos is the horizontal position within the row in pixels (if in docked state).
+name is a name by which the bar can be referred in layout customization dialogs.
+If spyEvents is TRUE, input events for the bar should be "spyed" in order
+to forward unhandled mouse clicks to the frame layout, for example to enable
+easy draggablity of toolbars just by clicking on their interior regions.
+For widgets like text/tree control this value should be FALSE,
+since there's no certain way to detect whether the event was actually handled.
+state is the initial state, such as wxCBAR\_DOCKED\_HORIZONTALLY,
+wxCBAR\_FLOATING, wxCBAR\_HIDDEN.
\membersection{wxFrameLayout::AddPlugin}\label{wxframelayoutaddplugin}
\func{void}{AddPlugin}{\param{wxClassInfo* }{pPlInfo}, \param{int }{paneMask = wxALL\_PANES}}
-"Advanced" methods for plugin-configuration using their dynamic class information (e.g. CLASSINFO(pluginClass) ) first checks if plugin of the given class is already "hooked up",
-if not, adds it to the top of plugins chain
+An advanced methods for plugin configuration using their
+dynamic class information, for example CLASSINFO(pluginClass).
+First checks if the plugin of the given class is already "hooked up".
+If not, adds it to the top of the plugins chain.
\membersection{wxFrameLayout::AddPluginBefore}\label{wxframelayoutaddpluginbefore}
\func{void}{AddPluginBefore}{\param{wxClassInfo* }{pNextPlInfo}, \param{wxClassInfo* }{pPlInfo}, \param{int }{paneMask = wxALL\_PANES}}
-first checks if plugin of the givne class already hooked,
-if so, removes it, and then inserts it to the chain
-before plugin of the class given by "pNextPlInfo"
-NOTE:: this method is "handy" in some cases, where the order
-of plugin-chain could be important, e.g. one plugin overrides
-some functionallity of the other already hooked plugin,
-thefore the former should be hooked before the one
-who's functionality is being overriden
+First checks if the plugin of the given class is already hooked.
+If so, removes it, and then inserts it into the chain
+before the plugin of the class given by pNextPlInfo.
+Note: this method is handy in some cases where the order
+of the plugin-chain could be important, for example when one plugin overrides
+some functionality of another already-hooked plugin,
+so that the former plugin should be hooked before the one
+whose functionality is being overridden.
\membersection{wxFrameLayout::ApplyBarProperties}\label{wxframelayoutapplybarproperties}
\func{void}{ApplyBarProperties}{\param{cbBarInfo* }{pBar}}
-reflects changes in bar information structure visually
-(e.g. moves bar, changes it's dimension info, pane to which it is docked)
+Reflects changes in bar information structure visually.
+For example, moves the bar, changes its dimension information,
+or changes the pane to which it is docked.
\membersection{wxFrameLayout::CanReparent}\label{wxframelayoutcanreparent}
\func{bool}{CanReparent}{\void}
-NOTE:: reparenting of windows may NOT work on all platforms
-(reparenting allows control-bars to be floated)
+Returns TRUE if the platform allows reparenting. This may not return TRUE
+for all platforms. Reparenting allows control bars to be floated.
\membersection{wxFrameLayout::CaptureEventsForPane}\label{wxframelayoutcaptureeventsforpane}
\func{void}{CaptureEventsForPane}{\param{cbDockPane* }{toPane}}
-called by plugins ( also captures/releases mouse in parent frame)
+Called by plugins; also captures the mouse in the parent frame.
\membersection{wxFrameLayout::CaptureEventsForPlugin}\label{wxframelayoutcaptureeventsforplugin}
\func{void}{CaptureEventsForPlugin}{\param{cbPluginBase* }{pPlugin}}
-captures/releases user-input event's for the given plugin
-Input events are: mouse movement, mouse clicks, keyboard input
+Captures user input events for the given plugin.
+Input events are: mouse movement, mouse clicks, keyboard input.
\membersection{wxFrameLayout::CreateCursors}\label{wxframelayoutcreatecursors}
\func{void}{CreateCursors}{\void}
+Creates the cursors.
+
\membersection{wxFrameLayout::CreateUpdatesManager}\label{wxframelayoutcreateupdatesmanager}
\func{cbUpdatesManagerBase*}{CreateUpdatesManager}{\void}
-factory method
+Returns a new cbGCUpdatesMgr object.
\membersection{wxFrameLayout::Deactivate}\label{wxframelayoutdeactivate}
\func{void}{Deactivate}{\void}
-unhooks itself from frame window, and hides all not-hidden windows
-NOTE:: two frame-layouts should not be active at the same time in the
-same frame window, it would cause messy overlapping of bar windows
-from both layouts
+Deactivate unhooks itself from frame window, and hides all non-hidden windows.
+Note: two frame layouts should not be active at the same time in the
+same frame window, since it would cause messy overlapping of bar windows
+from both layouts.
\membersection{wxFrameLayout::DestroyBarWindows}\label{wxframelayoutdestroybarwindows}
\func{void}{DestroyBarWindows}{\void}
+Destroys the bar windows.
+
\membersection{wxFrameLayout::DoSetBarState}\label{wxframelayoutdosetbarstate}
\func{void}{DoSetBarState}{\param{cbBarInfo* }{pBar}}
+Applies the state to the window objects.
+
\membersection{wxFrameLayout::EnableFloating}\label{wxframelayoutenablefloating}
\func{void}{EnableFloating}{\param{bool }{enable = TRUE}}
-(by default floating of control-bars is ON)
+Enables floating behaviour. By default floating of control bars is on.
\membersection{wxFrameLayout::FindBarByName}\label{wxframelayoutfindbarbyname}
\func{cbBarInfo*}{FindBarByName}{\param{const wxString\& }{name}}
-methods for access and modification of bars in frame layout
+Finds the bar in the framelayout, by name.
\membersection{wxFrameLayout::FindBarByWindow}\label{wxframelayoutfindbarbywindow}
\func{cbBarInfo*}{FindBarByWindow}{\param{const wxWindow* }{pWnd}}
+Finds the bar in the framelayout, by window.
+
\membersection{wxFrameLayout::FindPlugin}\label{wxframelayoutfindplugin}
\func{cbPluginBase*}{FindPlugin}{\param{wxClassInfo* }{pPlInfo}}
-returns NULL, if plugin of the given class is not hooked
+Finds a plugin with the given class, or returns NULL if a plugin of the given
+class is not hooked.
\membersection{wxFrameLayout::FirePluginEvent}\label{wxframelayoutfirepluginevent}
\func{void}{FirePluginEvent}{\param{cbPluginEvent\& }{event}}
-plugin-related methods **should be used, instead of passing the event to ProcessEvent(..) method
-of the top-plugin directly. This method checks if events are currently
+This function should be used instead of passing the event to the ProcessEvent method
+of the top-level plugin directly. This method checks if events are currently
captured and ensures that plugin-event is routed correctly.
\func{void}{ForwardMouseEvent}{\param{wxMouseEvent\& }{event}, \param{cbDockPane* }{pToPane}, \param{int }{eventType}}
-delegated from "bar-spy"
+Delegated from "bar-spy".
\membersection{wxFrameLayout::GetBarPane}\label{wxframelayoutgetbarpane}
\func{cbDockPane*}{GetBarPane}{\param{cbBarInfo* }{pBar}}
-returns panes, to which the given bar belongs
+Returns the pane to which the given bar belongs.
\membersection{wxFrameLayout::GetBars}\label{wxframelayoutgetbars}
\func{BarArrayT\&}{GetBars}{\void}
+Gets an array of bars.
+
\membersection{wxFrameLayout::GetClientHeight}\label{wxframelayoutgetclientheight}
\func{int}{GetClientHeight}{\void}
+Returns the client height.
+
\membersection{wxFrameLayout::GetClientRect}\label{wxframelayoutgetclientrect}
\func{wxRect\&}{GetClientRect}{\void}
+Returns the client's rectangle.
+
\membersection{wxFrameLayout::GetClientWidth}\label{wxframelayoutgetclientwidth}
\func{int}{GetClientWidth}{\void}
+Returns the client width.
+
\membersection{wxFrameLayout::GetFrameClient}\label{wxframelayoutgetframeclient}
\func{wxWindow*}{GetFrameClient}{\void}
+Returns the frame client, or NULL if not present.
+
\membersection{wxFrameLayout::GetPane}\label{wxframelayoutgetpane}
\func{cbDockPane*}{GetPane}{\param{int }{alignment}}
-see pane alignment types
+Returns a pane for the given alignment. See pane alignment types.
\membersection{wxFrameLayout::GetPaneProperties}\label{wxframelayoutgetpaneproperties}
\func{void}{GetPaneProperties}{\param{cbCommonPaneProperties\& }{props}, \param{int }{alignment = FL\_ALIGN\_TOP}}
-NOTE:: changing properties of panes, does not result immediate on-screen update
+Gets the pane properties for the given alignment.
\membersection{wxFrameLayout::GetPanesArray}\label{wxframelayoutgetpanesarray}
\func{cbDockPane**}{GetPanesArray}{\void}
-used by updates-managers
+Returns an array of panes. Used by update managers.
\membersection{wxFrameLayout::GetParentFrame}\label{wxframelayoutgetparentframe}
\func{wxWindow\&}{GetParentFrame}{\void}
+Returns the parent frame.
+
\membersection{wxFrameLayout::GetPrevClientRect}\label{wxframelayoutgetprevclientrect}
\func{wxRect\&}{GetPrevClientRect}{\void}
+Returns the previous client window rectangle.
+
\membersection{wxFrameLayout::GetTopPlugin}\label{wxframelayoutgettopplugin}
\func{cbPluginBase\&}{GetTopPlugin}{\void}
-returns current top-level plugin (the one which receives events first,
-with an exception if input-events are currently captured by some other plugin)
+Returns the current top-level plugin (the one that receives events first,
+except if input events are currently captured by some other plugin).
\membersection{wxFrameLayout::GetUpdatesManager}\label{wxframelayoutgetupdatesmanager}
\func{cbUpdatesManagerBase\&}{GetUpdatesManager}{\void}
-NOTE:: in future ubdates-manager will become a normal plugin
+Returns a reference to the updates manager.
+Note: in future, the updates manager will become a normal plugin.
\membersection{wxFrameLayout::HasTopPlugin}\label{wxframelayouthastopplugin}
\func{bool}{HasTopPlugin}{\void}
+Returns true if there is a top plugin.
+
\membersection{wxFrameLayout::HideBarWindows}\label{wxframelayouthidebarwindows}
\func{void}{HideBarWindows}{\void}
-also hides the client window if presents
+Hides the bar windows, and also the client window if present.
\membersection{wxFrameLayout::HitTestPane}\label{wxframelayouthittestpane}
\func{bool}{HitTestPane}{\param{cbDockPane* }{pPane}, \param{int }{x}, \param{int }{y}}
+Returns TRUE if the position is within the given pane.
+
\membersection{wxFrameLayout::HitTestPanes}\label{wxframelayouthittestpanes}
\func{cbDockPane*}{HitTestPanes}{\param{const wxRect\& }{rect}, \param{cbDockPane* }{pCurPane}}
+Returns the pane for which the rectangle hit test succeeds, giving
+preference to the given pane if supplied.
+
\membersection{wxFrameLayout::HookUpToFrame}\label{wxframelayouthookuptoframe}
\func{void}{HookUpToFrame}{\void}
+Hooks the layout up to the frame (pushes the layout onto the
+frame's event handler stack).
+
\membersection{wxFrameLayout::InverseVisibility}\label{wxframelayoutinversevisibility}
\func{void}{InverseVisibility}{\param{cbBarInfo* }{pBar}}
+Toggles the bar between visible and hidden.
+
\membersection{wxFrameLayout::LocateBar}\label{wxframelayoutlocatebar}
\func{bool}{LocateBar}{\param{cbBarInfo* }{pBarInfo}, \param{cbRowInfo** }{ppRow}, \param{cbDockPane** }{ppPane}}
+The purpose of this function is unknown.
+
\membersection{wxFrameLayout::OnActivate}\label{wxframelayoutonactivate}
\func{void}{OnActivate}{\param{wxActivateEvent\& }{event}}
+Handles activation events. Currently does nothing.
+
\membersection{wxFrameLayout::OnEraseBackground}\label{wxframelayoutonerasebackground}
\func{void}{OnEraseBackground}{\param{wxEraseEvent\& }{event}}
+Handles background erase events. Currently does nothing.
+
\membersection{wxFrameLayout::OnIdle}\label{wxframelayoutonidle}
\func{void}{OnIdle}{\param{wxIdleEvent\& }{event}}
+Handles idle events.
+
\membersection{wxFrameLayout::OnKillFocus}\label{wxframelayoutonkillfocus}
\func{void}{OnKillFocus}{\param{wxFocusEvent\& }{event}}
+Handles focus kill events. Currently does nothing.
+
\membersection{wxFrameLayout::OnLButtonDown}\label{wxframelayoutonlbuttondown}
\func{void}{OnLButtonDown}{\param{wxMouseEvent\& }{event}}
+Event handler for a left down button event.
+
\membersection{wxFrameLayout::OnLButtonUp}\label{wxframelayoutonlbuttonup}
\func{void}{OnLButtonUp}{\param{wxMouseEvent\& }{event}}
+Event handler for a left button up event.
+
\membersection{wxFrameLayout::OnLDblClick}\label{wxframelayoutonldblclick}
\func{void}{OnLDblClick}{\param{wxMouseEvent\& }{event}}
+Event handler for a left doubleclick button event.
+
\membersection{wxFrameLayout::OnMouseMove}\label{wxframelayoutonmousemove}
\func{void}{OnMouseMove}{\param{wxMouseEvent\& }{event}}
+Event handler for a mouse move event.
+
\membersection{wxFrameLayout::OnPaint}\label{wxframelayoutonpaint}
\func{void}{OnPaint}{\param{wxPaintEvent\& }{event}}
+Handles paint events, calling PaintPane for each pane.
+
\membersection{wxFrameLayout::OnRButtonDown}\label{wxframelayoutonrbuttondown}
\func{void}{OnRButtonDown}{\param{wxMouseEvent\& }{event}}
+Event handler for a right button down event.
+
\membersection{wxFrameLayout::OnRButtonUp}\label{wxframelayoutonrbuttonup}
\func{void}{OnRButtonUp}{\param{wxMouseEvent\& }{event}}
+Event handler for a right button up event.
+
\membersection{wxFrameLayout::OnSetFocus}\label{wxframelayoutonsetfocus}
\func{void}{OnSetFocus}{\param{wxFocusEvent\& }{event}}
+Handles focus set events. Currently does nothing.
+
\membersection{wxFrameLayout::OnSize}\label{wxframelayoutonsize}
\func{void}{OnSize}{\param{wxSizeEvent\& }{event}}
-event handlers
+Event handler for a size event.
\membersection{wxFrameLayout::PopAllPlugins}\label{wxframelayoutpopallplugins}
\func{void}{PopAllPlugins}{\void}
+Pop all plugins.
+
\membersection{wxFrameLayout::PopPlugin}\label{wxframelayoutpopplugin}
\func{void}{PopPlugin}{\void}
+Similar to wxWindow's "push/pop-event-handler" methods, execept
+that the plugin is deleted upon "popping".
+
\membersection{wxFrameLayout::PositionClientWindow}\label{wxframelayoutpositionclientwindow}
\func{void}{PositionClientWindow}{\void}
-called to set calculated layout to window objects
+Called to apply the calculated layout to window objects.
\membersection{wxFrameLayout::PositionPanes}\label{wxframelayoutpositionpanes}
\func{void}{PositionPanes}{\void}
+Called to apply the calculated layout to window objects.
+
\membersection{wxFrameLayout::PushDefaultPlugins}\label{wxframelayoutpushdefaultplugins}
\func{void}{PushDefaultPlugins}{\void}
-default plugins are : cbPaneDrawPlugin, cbRowLayoutPlugin, cbBarDragPlugin,
-cbAntiflickerPlugin, cbSimpleCustomizePlugin
-this method is automatically invoked, if no plugins were found upon
-fireing of the first plugin-event, i.e. wxFrameLayout *CONFIGURES* itself
+Adds the default plugins. These are cbPaneDrawPlugin, cbRowLayoutPlugin, cbBarDragPlugin,
+cbAntiflickerPlugin, cbSimpleCustomizePlugin.
+This method is automatically invoked if no plugins were found upon
+firing of the first plugin-event, i.e. when wxFrameLayout configures itself.
\membersection{wxFrameLayout::PushPlugin}\label{wxframelayoutpushplugin}
\func{void}{PushPlugin}{\param{cbPluginBase* }{pPugin}}
-similar to wxWindow's "push/pop-event-handler" methods, execept
-that plugin is *deleted* upon "popping"
+Similar to wxWindow's "push/pop-event-handler" methods, execept
+that the plugin is deleted upon "popping".
\membersection{wxFrameLayout::RecalcLayout}\label{wxframelayoutrecalclayout}
\func{void}{RecalcLayout}{\param{bool }{repositionBarsNow = FALSE}}
-recalcualtes layout of panes, and all bars/rows in each pane
+Recalculates the layout of panes, and all bars/rows in each pane.
\membersection{wxFrameLayout::RedockBar}\label{wxframelayoutredockbar}
\func{bool}{RedockBar}{\param{cbBarInfo* }{pBar}, \param{const wxRect\& }{shapeInParent}, \param{cbDockPane* }{pToPane = NULL}, \param{bool }{updateNow = TRUE}}
-can be used for repositioning already existing bars. The given bar is first removed
+ReddockBar can be used for repositioning existing bars. The given bar is first removed
from the pane it currently belongs to, and inserted into the pane, which "matches"
-the given recantular area. If pToPane is not NULL, bar is docked to this given pane
-to dock the bar which is floated, use wxFrameLayout::DockBar(..) method
+the given rectangular area. If pToPane is not NULL, the bar is docked to this given pane.
+To dock a bar which is floating, use the wxFrameLayout::DockBar method.
\membersection{wxFrameLayout::RefreshNow}\label{wxframelayoutrefreshnow}
\func{void}{RefreshNow}{\param{bool }{recalcLayout = TRUE}}
-recalculates layoute and performs on-screen update of all panes
+Recalculates layout and performs on-screen update of all panes.
\membersection{wxFrameLayout::ReleaseEventsFromPane}\label{wxframelayoutreleaseeventsfrompane}
\func{void}{ReleaseEventsFromPane}{\param{cbDockPane* }{fromPane}}
+Called by plugins; also releases mouse in the parent frame.
+
\membersection{wxFrameLayout::ReleaseEventsFromPlugin}\label{wxframelayoutreleaseeventsfromplugin}
\func{void}{ReleaseEventsFromPlugin}{\param{cbPluginBase* }{pPlugin}}
+Releases user input events for the given plugin.
+Input events are: mouse movement, mouse clicks, keyboard input
+
\membersection{wxFrameLayout::RemoveBar}\label{wxframelayoutremovebar}
\func{void}{RemoveBar}{\param{cbBarInfo* }{pBar}}
-removes bar from layout permanently, hides it's corresponding window if present
+Removes the bar from the layout permanently, and hides its corresponding window if present.
\membersection{wxFrameLayout::RemovePlugin}\label{wxframelayoutremoveplugin}
\func{void}{RemovePlugin}{\param{wxClassInfo* }{pPlInfo}}
-checks if plugin of the given class is hooked, removes
-it if found
-@param pPlInfo class information structure for the plugin
-@note
-@see wxFrameLayout::Method
+Checks if the plugin of the given class is hooked, and removes
+it if found.
\membersection{wxFrameLayout::ReparentWindow}\label{wxframelayoutreparentwindow}
\func{void}{ReparentWindow}{\param{wxWindow* }{pChild}, \param{wxWindow* }{pNewParent}}
+Reparents pChild to have parent pNewParent.
+
\membersection{wxFrameLayout::RepositionFloatedBar}\label{wxframelayoutrepositionfloatedbar}
\func{void}{RepositionFloatedBar}{\param{cbBarInfo* }{pBar}}
+Applies the calculated layout to a floating bar.
+
\membersection{wxFrameLayout::RouteMouseEvent}\label{wxframelayoutroutemouseevent}
\func{void}{RouteMouseEvent}{\param{wxMouseEvent\& }{event}, \param{int }{pluginEvtType}}
+Routes the mouse event to the appropriate pane.
+
\membersection{wxFrameLayout::SetBarState}\label{wxframelayoutsetbarstate}
\func{void}{SetBarState}{\param{cbBarInfo* }{pBar}, \param{int }{newStatem}, \param{bool }{updateNow}}
-changes bar's docking state (see possible control bar states)
+Changes the bar's docking state (see possible control bar states).
\membersection{wxFrameLayout::SetFrameClient}\label{wxframelayoutsetframeclient}
\func{void}{SetFrameClient}{\param{wxWindow* }{pFrameClient}}
-passes the client window (e.g. MDI-client frame) to be controled by
+Passes the client window (e.g. MDI client window) to be controlled by
frame layout, the size and position of which should be adjusted to be
-surrounded by controlbar panes, whenever frame is resized, or dimensions
-of control panes change
+surrounded by controlbar panes, whenever the frame is resized or the dimensions
+of control panes change.
\membersection{wxFrameLayout::SetMargins}\label{wxframelayoutsetmargins}
\func{void}{SetMargins}{\param{int }{top}, \param{int }{bottom}, \param{int }{left}, \param{int }{right}, \param{int }{paneMask = wxALL\_PANES}}
-TODO:: margins should go into cbCommonPaneProperties in the future
-NOTE:: this method should be called before any custom plugins are attached
+Sets the margins for the given panes.
+The margins should go into cbCommonPaneProperties in the future.
+Note: this method should be called before any custom plugins are attached.
\membersection{wxFrameLayout::SetPaneBackground}\label{wxframelayoutsetpanebackground}
\func{void}{SetPaneBackground}{\param{const wxColour\& }{colour}}
+Sets the pane background colour.
+
\membersection{wxFrameLayout::SetPaneProperties}\label{wxframelayoutsetpaneproperties}
\func{void}{SetPaneProperties}{\param{const cbCommonPaneProperties\& }{props}, \param{int }{paneMask = wxALL\_PANES}}
+Sets the pane properties for the given alignment.
+Note: changing properties of panes does not result immediate on-screen update.
+
\membersection{wxFrameLayout::SetTopPlugin}\label{wxframelayoutsettopplugin}
\func{void}{SetTopPlugin}{\param{cbPluginBase* }{pPlugin}}
-hooking custom plugins to frame layout
-NOTE:: when hooking one plugin on top of the other -
-use SetNextHandler(..) or similar methods
+Hooking custom plugins to frame layout.
+Note: when hooking one plugin on top of the other,
+use SetNextHandler or similar methods
of wxEvtHandler class to compose the chain of plugins,
than pass the left-most handler in this chain to
the above methods (assuming that events are delegated
-from left-most towards right-most handler)
-NOTE2:: this secenario is very inconvenient and "low-level",
-use Add/Push/PopPlugin methods instead
+from left-most towards right-most handler).
+This secenario is very inconvenient and "low-level",
+so use the Add/Push/PopPlugin methods instead.
\membersection{wxFrameLayout::SetUpdatesManager}\label{wxframelayoutsetupdatesmanager}
\func{void}{SetUpdatesManager}{\param{cbUpdatesManagerBase* }{pUMgr}}
-destroys the previous manager if any, set the new one
+Destroys the previous manager if any, and sets the new one.
\membersection{wxFrameLayout::ShowFloatedWindows}\label{wxframelayoutshowfloatedwindows}
\func{void}{ShowFloatedWindows}{\param{bool }{show}}
+Shows all floated windows.
+
\membersection{wxFrameLayout::UnhookFromFrame}\label{wxframelayoutunhookfromframe}
\func{void}{UnhookFromFrame}{\void}
+Unhooks the layout from the frame.
+
%
% automatically generated by HelpGen $Revision$ from
-% garbagec.h at 05/Jan/02 22:50:57
+% garbagec.h at 21/Jan/02 21:14:19
%
\section{\class{GarbageCollector}}\label{garbagecollector}
-class implements extremely slow, but probably one of the most simple GC algorithms
+This class implements an extremely slow but simple garbage collection algorithm.
\wxheading{Derived from}
No base class
+\wxheading{Include files}
+
+<garbagec.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{GarbageCollector}{\void}
+Default constructor.
+
\membersection{GarbageCollector::\destruct{GarbageCollector}}\label{garbagecollectordtor}
\func{}{\destruct{GarbageCollector}}{\void}
+Destructor.
+
\membersection{GarbageCollector::AddDependency}\label{garbagecollectoradddependency}
\func{void}{AddDependency}{\param{void* }{pObj}, \param{void* }{pDependsOnObj}}
+Prepare data for garbage collection.
+
\membersection{GarbageCollector::AddObject}\label{garbagecollectoraddobject}
\func{void}{AddObject}{\param{void* }{pObj}, \param{int }{refCnt = 1}}
-prepare data for GC alg.
+Prepare data for garbage collection.
\membersection{GarbageCollector::ArrangeCollection}\label{garbagecollectorarrangecollection}
\func{void}{ArrangeCollection}{\void}
-executes GC alg.
+Executes garbage collection algorithm.
\membersection{GarbageCollector::DestroyItemList}\label{garbagecollectordestroyitemlist}
\func{void}{DestroyItemList}{\param{wxList\& }{lst}}
+Destroys a list of items.
+
\membersection{GarbageCollector::FindItemNode}\label{garbagecollectorfinditemnode}
\func{wxNode*}{FindItemNode}{\param{void* }{pForObj}}
+Internal method for finding a node.
+
\membersection{GarbageCollector::FindReferenceFreeItemNode}\label{garbagecollectorfindreferencefreeitemnode}
\func{wxNode*}{FindReferenceFreeItemNode}{\void}
+Internal method for findind and freeing a node.
+
\membersection{GarbageCollector::GetCycledObjects}\label{garbagecollectorgetcycledobjects}
\func{wxList\&}{GetCycledObjects}{\void}
+Get cycled objects.
+
\membersection{GarbageCollector::GetRegularObjects}\label{garbagecollectorgetregularobjects}
\func{wxList\&}{GetRegularObjects}{\void}
-access results of the alg.
+Accesses the results of the algorithm.
\membersection{GarbageCollector::RemoveReferencesToNode}\label{garbagecollectorremovereferencestonode}
\func{void}{RemoveReferencesToNode}{\param{wxNode* }{pItemNode}}
+Remove references to this node.
+
\membersection{GarbageCollector::Reset}\label{garbagecollectorreset}
\func{void}{Reset}{\void}
-removes all data from GC
+Removes all data from the garbage collector.
\membersection{GarbageCollector::ResolveReferences}\label{garbagecollectorresolvereferences}
\func{void}{ResolveReferences}{\void}
+Internal method for resolving references.
+
%
% automatically generated by HelpGen $Revision$ from
-% garbagec.h at 05/Jan/02 22:50:57
+% garbagec.h at 21/Jan/02 21:14:19
%
No base class
+\wxheading{Include files}
+
+<garbagec.h>
+
\wxheading{Data structures}
%
% automatically generated by HelpGen $Revision$ from
-% dyntbar.h at 05/Jan/02 22:50:56
+% dyntbar.h at 21/Jan/02 21:14:18
%
\section{\class{LayoutManagerBase}}\label{layoutmanagerbase}
-base class for layouting algorithm implementations
+This is a base class for layout algorithm implementations.
\wxheading{Derived from}
No base class
+\wxheading{Include files}
+
+<dyntbar.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{\destruct{LayoutManagerBase}}{\void}
+Destructor.
+
\membersection{LayoutManagerBase::Layout}\label{layoutmanagerbaselayout}
\func{void}{Layout}{\param{const wxSize\& }{parentDim}, \param{wxSize\& }{resultingDim}, \param{wxLayoutItemArrayT\& }{items}, \param{int }{horizGap}, \param{int }{vertGap}}
+Constructor.
+
# In order to force document reprocessing
touchmanual:
- -touch $(WXDIR)\docs\latex\fl\manual.tex
+ -touch $(WXDIR)\contrib\docs\latex\fl\manual.tex
updatedocs: touchmanual alldocs
%
% automatically generated by HelpGen $Revision$ from
-% hintanimpl.h at 05/Jan/02 22:50:57
+% hintanimpl.h at 21/Jan/02 21:14:19
%
\section{\class{MorphInfoT}}\label{morphinfot}
-helper classes
+A private helper class.
\wxheading{Derived from}
No base class
+\wxheading{Include files}
+
+<hintanimpl.h>
+
\wxheading{Data structures}
%
% automatically generated by HelpGen $Revision$ from
-% newbmpbtn.h at 05/Jan/02 22:50:57
+% newbmpbtn.h at 21/Jan/02 21:14:19
%
\section{\class{wxNewBitmapButton}}\label{wxnewbitmapbutton}
-alternative class for wxBmpButton
+This is an alternative class to wxBitmapButton. It is used
+in the implementation of dynamic toolbars.
\wxheading{Derived from}
\helpref{wxPanel}{wxpanel}
+\wxheading{Include files}
+
+<newbmpbtn.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{wxNewBitmapButton}{\param{const wxBitmap\& }{labelBitmap = wxNullBitmap}, \param{const wxString\& }{labelText = ""}, \param{int }{alignText = NB\_ALIGN\_TEXT\_BOTTOM}, \param{bool }{isFlat = TRUE}, \param{int }{firedEventType = wxEVT\_COMMAND\_MENU\_SELECTED}, \param{int }{marginX = 2}, \param{int }{marginY = 2}, \param{int }{textToLabelGap = 2}, \param{bool }{isSticky = FALSE}}
+Constructor.
+
\func{}{wxNewBitmapButton}{\param{const wxString\& }{bitmapFileName}, \param{const wxBitmapType }{bitmapFileType = wxBITMAP\_TYPE\_BMP}, \param{const wxString\& }{labelText = ""}, \param{int }{alignText = NB\_ALIGN\_TEXT\_BOTTOM}, \param{bool }{isFlat = TRUE}, \param{int }{firedEventType = wxEVT\_COMMAND\_MENU\_SELECTED}, \param{int }{marginX = 2}, \param{int }{marginY = 2}, \param{int }{textToLabelGap = 2}, \param{bool }{isSticky = FALSE}}
-use this constructor if buttons have to be persistant
+Use this constructor if buttons have to be persistant
\membersection{wxNewBitmapButton::\destruct{wxNewBitmapButton}}\label{wxnewbitmapbuttondtor}
\func{}{\destruct{wxNewBitmapButton}}{\void}
+Destructor.
+
\membersection{wxNewBitmapButton::DestroyLabels}\label{wxnewbitmapbuttondestroylabels}
\func{void}{DestroyLabels}{\void}
+Internal function for destroying labels.
+
\membersection{wxNewBitmapButton::DrawDecorations}\label{wxnewbitmapbuttondrawdecorations}
\func{void}{DrawDecorations}{\param{wxDC\& }{dc}}
+Draws the decorations.
+
\membersection{wxNewBitmapButton::DrawLabel}\label{wxnewbitmapbuttondrawlabel}
\func{void}{DrawLabel}{\param{wxDC\& }{dc}}
+Draws the label.
+
\membersection{wxNewBitmapButton::DrawShade}\label{wxnewbitmapbuttondrawshade}
\func{void}{DrawShade}{\param{int }{outerLevel}, \param{wxDC\& }{dc}, \param{wxPen\& }{upperLeftSidePen}, \param{wxPen\& }{lowerRightSidePen}}
+Draws shading on the button.
+
\membersection{wxNewBitmapButton::GetStateLabel}\label{wxnewbitmapbuttongetstatelabel}
\func{wxBitmap*}{GetStateLabel}{\void}
-returns the label which match the current button state
+Returns the label that matches the current button state.
\membersection{wxNewBitmapButton::IsInWindow}\label{wxnewbitmapbuttonisinwindow}
\func{bool}{IsInWindow}{\param{int }{x}, \param{int }{y}}
+Returns TRUE if the given point is in the window.
+
\membersection{wxNewBitmapButton::OnEraseBackground}\label{wxnewbitmapbuttononerasebackground}
\func{void}{OnEraseBackground}{\param{wxEraseEvent\& }{event}}
+Responds to an erase background event.
+
\membersection{wxNewBitmapButton::OnKillFocus}\label{wxnewbitmapbuttononkillfocus}
\func{void}{OnKillFocus}{\param{wxFocusEvent\& }{event}}
+Responds to a kill focus event.
+
\membersection{wxNewBitmapButton::OnLButtonDown}\label{wxnewbitmapbuttononlbuttondown}
\func{void}{OnLButtonDown}{\param{wxMouseEvent\& }{event}}
-event handlers
+Responds to a left mouse button down event.
\membersection{wxNewBitmapButton::OnLButtonUp}\label{wxnewbitmapbuttononlbuttonup}
\func{void}{OnLButtonUp}{\param{wxMouseEvent\& }{event}}
+Responds to a left mouse button up event.
+
\membersection{wxNewBitmapButton::OnMouseMove}\label{wxnewbitmapbuttononmousemove}
\func{void}{OnMouseMove}{\param{wxMouseEvent\& }{event}}
+Responds to a mouse move event.
+
\membersection{wxNewBitmapButton::OnPaint}\label{wxnewbitmapbuttononpaint}
\func{void}{OnPaint}{\param{wxPaintEvent\& }{event}}
+Responds to a paint event.
+
\membersection{wxNewBitmapButton::OnSize}\label{wxnewbitmapbuttononsize}
\func{void}{OnSize}{\param{wxSizeEvent\& }{event}}
+Responds to a size event.
+
\membersection{wxNewBitmapButton::RenderAllLabelImages}\label{wxnewbitmapbuttonrenderalllabelimages}
\func{void}{RenderAllLabelImages}{\void}
+Renders label images.
+
\membersection{wxNewBitmapButton::RenderLabelImage}\label{wxnewbitmapbuttonrenderlabelimage}
\func{void}{RenderLabelImage}{\param{wxBitmap*\& }{destBmp}, \param{wxBitmap* }{srcBmp}, \param{bool }{isEnabled = TRUE}, \param{bool }{isPressed = FALSE}}
+Renders the label image.
+
\membersection{wxNewBitmapButton::RenderLabelImages}\label{wxnewbitmapbuttonrenderlabelimages}
\func{void}{RenderLabelImages}{\void}
+Renders label images.
+
\membersection{wxNewBitmapButton::Reshape}\label{wxnewbitmapbuttonreshape}
\func{void}{Reshape}{\void}
-should be called after Create();
+This function should be called after Create. It renders the labels, having
+reloaded the button image if necessary.
\membersection{wxNewBitmapButton::SetAlignments}\label{wxnewbitmapbuttonsetalignments}
\func{void}{SetAlignments}{\param{int }{alignText = NB\_ALIGN\_TEXT\_BOTTOM}, \param{int }{marginX = 2}, \param{int }{marginY = 2}, \param{int }{textToLabelGap = 2}}
+Sets the text alignment and margins.
+
\membersection{wxNewBitmapButton::SetLabel}\label{wxnewbitmapbuttonsetlabel}
\func{void}{SetLabel}{\param{const wxBitmap\& }{labelBitmap}, \param{const wxString\& }{labelText = ""}}
-overridables
+Sets the label and optionally label text.
%
% automatically generated by HelpGen $Revision$ from
-% dyntbar.h at 05/Jan/02 22:50:56
+% dyntbar.h at 21/Jan/02 21:14:18
%
\section{\class{wxToolLayoutItem}}\label{wxtoollayoutitem}
-layout item
+Tool layout item.
\wxheading{Derived from}
\helpref{wxObject}{wxobject}
+\wxheading{Include files}
+
+<dyntbar.h>
+
\wxheading{Data structures}
{\small \begin{verbatim}
%
% automatically generated by HelpGen $Revision$ from
-% toolwnd.h at 05/Jan/02 22:50:58
+% toolwnd.h at 21/Jan/02 21:14:17
%
\section{\class{wxToolWindow}}\label{wxtoolwindow}
+
+A tool window is a special kind of frame that paints its own title, and
+can be used to implement small floating windows.
+
\wxheading{Derived from}
\helpref{wxFrame}{wxframe}
+\wxheading{Include files}
+
+<toolwnd.h>
+
\wxheading{Data structures}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{wxToolWindow}{\void}
+Default constructor.
+
\membersection{wxToolWindow::\destruct{wxToolWindow}}\label{wxtoolwindowdtor}
\func{}{\destruct{wxToolWindow}}{\void}
+Destructor.
+
\membersection{wxToolWindow::AddMiniButton}\label{wxtoolwindowaddminibutton}
\func{void}{AddMiniButton}{\param{cbMiniButton* }{pBtn}}
-buttons are added in right-to-left order
+Adds a button. Buttons are added in right-to-left order.
\membersection{wxToolWindow::AdjustRectPos}\label{wxtoolwindowadjustrectpos}
\func{void}{AdjustRectPos}{\param{const wxRect\& }{original}, \param{const wxSize\& }{newDim}, \param{wxRect\& }{newRect}}
+Helper function.
+
\membersection{wxToolWindow::CalcResizedRect}\label{wxtoolwindowcalcresizedrect}
\func{void}{CalcResizedRect}{\param{wxRect\& }{rect}, \param{wxPoint\& }{delta}, \param{const wxSize\& }{minDim}}
+Calculate resized rectangle.
+
\membersection{wxToolWindow::DrawHintRect}\label{wxtoolwindowdrawhintrect}
\func{void}{DrawHintRect}{\param{const wxRect\& }{r}}
+Draws the hint rectangle.
+
\membersection{wxToolWindow::GetClient}\label{wxtoolwindowgetclient}
\func{wxWindow*}{GetClient}{\void}
+Returns the client window.
+
\membersection{wxToolWindow::GetMinimalWndDim}\label{wxtoolwindowgetminimalwnddim}
\func{wxSize}{GetMinimalWndDim}{\void}
+Helper function.
+
\membersection{wxToolWindow::GetPreferredSize}\label{wxtoolwindowgetpreferredsize}
\func{wxSize}{GetPreferredSize}{\param{const wxSize\& }{given}}
-overridables:
+Returns the preferred size for the window.
\membersection{wxToolWindow::GetScrMousePos}\label{wxtoolwindowgetscrmousepos}
\func{void}{GetScrMousePos}{\param{wxMouseEvent\& }{event}, \param{wxPoint\& }{pos}}
+Gets the mouse position in screen coordinates.
+
\membersection{wxToolWindow::GetScrWindowRect}\label{wxtoolwindowgetscrwindowrect}
\func{void}{GetScrWindowRect}{\param{wxRect\& }{r}}
+Maps client coordinates to screen coordinates.
+
\membersection{wxToolWindow::HandleTitleClick}\label{wxtoolwindowhandletitleclick}
\func{bool}{HandleTitleClick}{\param{wxMouseEvent\& }{event}}
+Handles clicking on the title. By default, does nothing.
+
\membersection{wxToolWindow::HitTestWindow}\label{wxtoolwindowhittestwindow}
\func{int}{HitTestWindow}{\param{wxMouseEvent\& }{event}}
+Tests if the mouse position is in this window.
+
\membersection{wxToolWindow::LayoutMiniButtons}\label{wxtoolwindowlayoutminibuttons}
\func{void}{LayoutMiniButtons}{\void}
+Lays out the buttons.
+
\membersection{wxToolWindow::OnEraseBackground}\label{wxtoolwindowonerasebackground}
\func{void}{OnEraseBackground}{\param{wxEraseEvent\& }{event}}
+Responds to an erase background event.
+
\membersection{wxToolWindow::OnLeftDown}\label{wxtoolwindowonleftdown}
\func{void}{OnLeftDown}{\param{wxMouseEvent\& }{event}}
+Responds to a mouse left down event.
+
\membersection{wxToolWindow::OnLeftUp}\label{wxtoolwindowonleftup}
\func{void}{OnLeftUp}{\param{wxMouseEvent\& }{event}}
+Responds to a mouse left up event.
+
\membersection{wxToolWindow::OnMiniButtonClicked}\label{wxtoolwindowonminibuttonclicked}
\func{void}{OnMiniButtonClicked}{\param{int }{btnIdx}}
+Called when a mini button is clicked.
+By default, does nothing.
+
\membersection{wxToolWindow::OnMotion}\label{wxtoolwindowonmotion}
\func{void}{OnMotion}{\param{wxMouseEvent\& }{event}}
+Responds to a mouse move event.
+
\membersection{wxToolWindow::OnPaint}\label{wxtoolwindowonpaint}
\func{void}{OnPaint}{\param{wxPaintEvent\& }{event}}
+Responds to a paint event.
+
\membersection{wxToolWindow::OnSize}\label{wxtoolwindowonsize}
\func{void}{OnSize}{\param{wxSizeEvent\& }{event}}
+Responds to a size event.
+
\membersection{wxToolWindow::SetClient}\label{wxtoolwindowsetclient}
\func{void}{SetClient}{\param{wxWindow* }{pWnd}}
+Sets the client for this tool window.
+
\membersection{wxToolWindow::SetHintCursor}\label{wxtoolwindowsethintcursor}
\func{void}{SetHintCursor}{\param{int }{type}}
+Sets the hint cursor.
+
\membersection{wxToolWindow::SetTitleFont}\label{wxtoolwindowsettitlefont}
\func{void}{SetTitleFont}{\param{wxFont\& }{font}}
+Sets the title font.
+
// Created: 23/10/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __ANTIFLICKPL_G__
/*
Implements double-buffering to reduce flicker.
-Bitmap and memory DC buffers are shared "resources" among all instances of
+Bitmap and memory DC buffers are shared 'resources' among all instances of
antiflicker plugins within the application.
-Locking for multithreaded applications is not yet implemented.
+Locking for multithreaded applications is not yet implemented.
*/
class cbAntiflickerPlugin : public cbPluginBase
{
- DECLARE_DYNAMIC_CLASS( cbAntiflickerPlugin )
+ DECLARE_DYNAMIC_CLASS( cbAntiflickerPlugin )
protected:
- static wxBitmap* mpVertBuf;
- static wxBitmap* mpHorizBuf;
- static wxMemoryDC* mpVertBufDc;
- static wxMemoryDC* mpHorizBufDc;
+ static wxBitmap* mpVertBuf;
+ static wxBitmap* mpHorizBuf;
+ static wxMemoryDC* mpVertBufDc;
+ static wxMemoryDC* mpHorizBufDc;
- static int mRefCount;
+ static int mRefCount;
- wxDC* mpLRUBufDc; // last-recently-used buffer
- wxRect mLRUArea; // last-recently-used area
+ wxDC* mpLRUBufDc; // last-recently-used buffer
+ wxRect mLRUArea; // last-recently-used area
protected:
- // Finds a suitable buffer. Returns NULL if a suitable buffer is not present.
- wxDC* FindSuitableBuffer( const wxRect& forArea );
- // Allocates a suitable buffer.
- wxDC* AllocNewBuffer( const wxRect& forArea );
+ // Finds a suitable buffer. Returns NULL if a suitable buffer is not present.
- wxDC& GetWindowDC();
- wxDC& GetClientDC();
+ wxDC* FindSuitableBuffer( const wxRect& forArea );
+
+ // Allocates a suitable buffer.
+
+ wxDC* AllocNewBuffer( const wxRect& forArea );
+
+ // Gets the window device context.
+
+ wxDC& GetWindowDC();
+
+ // Gets the client device context.
+
+ wxDC& GetClientDC();
public:
- cbAntiflickerPlugin(void);
+ // Default constructor.
+
+ cbAntiflickerPlugin(void);
+
+ // Constructor taking frame layout panel, and pane mask.
+
+ cbAntiflickerPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
+
+ // Destructor.
+
+ virtual ~cbAntiflickerPlugin();
- cbAntiflickerPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
+ // Handler for plugin event.
- virtual ~cbAntiflickerPlugin();
+ void OnStartDrawInArea ( cbStartDrawInAreaEvent& event );
- // Handler for plugin event.
- void OnStartDrawInArea ( cbStartDrawInAreaEvent& event );
+ // Handler for plugin event.
- // Handler for plugin event.
- void OnFinishDrawInArea( cbFinishDrawInAreaEvent& event );
+ void OnFinishDrawInArea( cbFinishDrawInAreaEvent& event );
- DECLARE_EVENT_TABLE()
+ DECLARE_EVENT_TABLE()
};
#endif /* __ANTIFLICKPL_G__ */
// Created: 23/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __BARDRAGPL_G__
#include "wx/fl/controlbar.h"
#include "wx/fl/toolwnd.h"
+/*
+Plugin class implementing bar dragging.
+*/
+
class cbBarDragPlugin : public cbPluginBase
{
- DECLARE_DYNAMIC_CLASS( cbBarDragPlugin )
+ DECLARE_DYNAMIC_CLASS( cbBarDragPlugin )
protected:
- // plugin is active only in bar-dragging state
- bool mBarDragStarted;
- bool mCanStick; // flag used to prevent "bouncing" of hint-rectangle
- wxScreenDC* mpScrDc; // created while tracking hint-rect
- wxCursor* mpCurCursor;
+ // plugin is active only in bar-dragging state
+ bool mBarDragStarted;
+ bool mCanStick; // flag used to prevent "bouncing" of hint-rectangle
+ wxScreenDC* mpScrDc; // created while tracking hint-rect
+ wxCursor* mpCurCursor;
- // rectangle shows the position/dimensions of the bar,
- // if it would be docked now
+ // rectangle shows the position/dimensions of the bar,
+ // if it would be docked now
- wxRect mPrevHintRect;
- wxRect mHintRect;
+ wxRect mPrevHintRect;
+ wxRect mHintRect;
- int mMouseInRectX;
- int mMouseInRectY;
+ int mMouseInRectX;
+ int mMouseInRectY;
- cbDockPane* mpSrcPane; // pane, from which the bar was originally taken
- int mBarWidthInSrcPane;
+ cbDockPane* mpSrcPane; // pane, from which the bar was originally taken
+ int mBarWidthInSrcPane;
- cbDockPane* mpCurPane;
+ cbDockPane* mpCurPane;
- cbBarInfo* mpDraggedBar; // bar, which is being dragged
- bool mBarWasFloating;
- wxRect mFloatedBarBounds;
+ cbBarInfo* mpDraggedBar; // bar, which is being dragged
+ bool mBarWasFloating;
+ wxRect mFloatedBarBounds;
public: /*** public properties ***/
- int mInClientHintBorder; // when hint-rect moves within client window area,
+ int mInClientHintBorder; // when hint-rect moves within client window area,
// the thicker rectangle is drawn using hatched brush,
- // the default border width for this rectangle is 8 pix.
+ // the default border width for this rectangle is 8 pix.
protected:
- // Internal implementation function.
- void AdjustHintRect( wxPoint& mousePos );
+ // Internal implementation function.
+ void AdjustHintRect( wxPoint& mousePos );
+
+ // Internal implementation function.
+ void ClipRectInFrame( wxRect& rect );
- // Internal implementation function.
- void ClipRectInFrame( wxRect& rect );
+ // Internal implementation function.
+ void ClipPosInFrame( wxPoint& pos );
- // Internal implementation function.
- void ClipPosInFrame( wxPoint& pos );
+ // Internal implementation function. Finds the pane
+ // under the specified rectangle.
+ cbDockPane* HitTestPanes( wxRect& rect );
- // Internal implementation function. Finds the pane
- // under the specified rectangle.
- cbDockPane* HitTestPanes( wxRect& rect );
+ // Internal implementation function. Finds the pane
+ // under the specified point.
+ cbDockPane* HitTestPanes( wxPoint& pos );
- // Internal implementation function. Finds the pane
- // under the specified point.
- cbDockPane* HitTestPanes( wxPoint& pos );
+ // Internal implementation function.
+ bool HitsPane( cbDockPane* pPane, wxRect& rect );
- // Internal implementation function.
- bool HitsPane( cbDockPane* pPane, wxRect& rect );
+ // Internal implementation function.
+ void CalcOnScreenDims( wxRect& rect );
- // Internal implementation function.
- void CalcOnScreenDims( wxRect& rect );
+ // Internal implementation function.
+ int GetDistanceToPane( cbDockPane* pPane, wxPoint& mousePos );
- // Internal implementation function.
- int GetDistanceToPane( cbDockPane* pPane, wxPoint& mousePos );
+ // Internal implementation function.
+ bool IsInOtherPane ( wxPoint& mousePos );
- // Internal implementation function.
- bool IsInOtherPane ( wxPoint& mousePos );
+ // Internal implementation function.
+ bool IsInClientArea( wxPoint& mousePos );
- // Internal implementation function.
- bool IsInClientArea( wxPoint& mousePos );
+ // Internal implementation function.
+ bool IsInClientArea( wxRect& rect );
- // Internal implementation function.
- bool IsInClientArea( wxRect& rect );
+ // Internal implementation function.
+ void StickToPane( cbDockPane* pPane, wxPoint& mousePos );
- // Internal implementation function.
- void StickToPane( cbDockPane* pPane, wxPoint& mousePos );
+ // Internal implementation function.
+ void UnstickFromPane( cbDockPane* pPane, wxPoint& mousePos );
- // Internal implementation function.
- void UnstickFromPane( cbDockPane* pPane, wxPoint& mousePos );
+ // Internal implementation function.
+ int GetBarWidthInPane( cbDockPane* pPane );
- // Internal implementation function.
- int GetBarWidthInPane( cbDockPane* pPane );
+ // Internal implementation function.
+ int GetBarHeightInPane( cbDockPane* pPane );
- // Internal implementation function.
- int GetBarHeightInPane( cbDockPane* pPane );
+ // on-screen hint-tracking related methods
- // on-screen hint-tracking related methods
+ // Internal implementation function.
+ // Start showing a visual hint while dragging.
+ void StartTracking();
- // Internal implementation function.
- // Start showing a visual hint while dragging.
- void StartTracking();
+ // Internal implementation function.
+ // Draw the visual hint while dragging.
+ void DrawHintRect ( wxRect& rect, bool isInClientRect);
- // Internal implementation function.
- // Draw the visual hint while dragging.
- void DrawHintRect ( wxRect& rect, bool isInClientRect);
- // Internal implementation function.
- // Erase the visual hint while dragging.
- void EraseHintRect( wxRect& rect, bool isInClientRect);
+ // Internal implementation function.
+ // Erase the visual hint while dragging.
+ void EraseHintRect( wxRect& rect, bool isInClientRect);
- // Internal implementation function.
- // Stop showing the visual hint while dragging.
- void FinishTracking();
+ // Internal implementation function.
+ // Stop showing the visual hint while dragging.
+ void FinishTracking();
- // Internal implementation function.
- // Draw the hint rectangle.
- void DoDrawHintRect( wxRect& rect, bool isInClientRect);
+ // Internal implementation function.
+ // Draw the hint rectangle.
+ void DoDrawHintRect( wxRect& rect, bool isInClientRect);
- // Internal implementation function.
- // Converts the given rectangle from window to screen coordinates.
- void RectToScr( wxRect& frameRect, wxRect& scrRect );
+ // Internal implementation function.
+ // Converts the given rectangle from window to screen coordinates.
+ void RectToScr( wxRect& frameRect, wxRect& scrRect );
- // Internal implementation function.
- // Show the hint; called within OnMouseMove.
- void ShowHint( bool prevWasInClient );
+ // Internal implementation function.
+ // Show the hint; called within OnMouseMove.
+ void ShowHint( bool prevWasInClient );
public:
- // Default constructor.
- cbBarDragPlugin(void);
+ // Default constructor.
+ cbBarDragPlugin(void);
- // Constructor taking a parent frame, and flag. See cbPluginBase.
- cbBarDragPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
+ // Constructor taking a parent frame, and flag. See cbPluginBase.
+ cbBarDragPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
- // Destructor.
- virtual ~cbBarDragPlugin();
+ // Destructor.
+ virtual ~cbBarDragPlugin();
- // Handler for plugin event.
- void OnMouseMove( cbMotionEvent& event );
+ // Handler for plugin event.
+ void OnMouseMove( cbMotionEvent& event );
- // Handler for plugin event.
- void OnLButtonUp( cbLeftUpEvent& event );
+ // Handler for plugin event.
+ void OnLButtonUp( cbLeftUpEvent& event );
- // Handler for plugin event.
- void OnLButtonDown( cbLeftDownEvent& event );
+ // Handler for plugin event.
+ void OnLButtonDown( cbLeftDownEvent& event );
- // Handler for plugin event.
- void OnLDblClick( cbLeftDClickEvent& event );
+ // Handler for plugin event.
+ void OnLDblClick( cbLeftDClickEvent& event );
- // Handles event, which originates from itself.
- void OnDrawHintRect( cbDrawHintRectEvent& event );
+ // Handles event, which originates from itself.
+ void OnDrawHintRect( cbDrawHintRectEvent& event );
- // Handler for plugin event.
- void OnStartBarDragging( cbStartBarDraggingEvent& event );
+ // Handler for plugin event.
+ void OnStartBarDragging( cbStartBarDraggingEvent& event );
- DECLARE_EVENT_TABLE()
+ DECLARE_EVENT_TABLE()
};
#endif /* __BARDRAGPL_G__ */
// Created: 30/11/98 (my 22th birthday :-)
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __DRAGHINTSPL_G__
class cbBarHintsPlugin : public cbPluginBase
{
- DECLARE_DYNAMIC_CLASS( cbBarHintsPlugin )
+ DECLARE_DYNAMIC_CLASS( cbBarHintsPlugin )
protected:
- cbDockPane* mpPane; // is set up temorarely, while handling event
+ cbDockPane* mpPane; // is set up temorarely, while handling event
- cbMiniButton* mBoxes[2];
+ cbMiniButton* mBoxes[2];
- bool mBtnPressed;
- bool mClosePressed;
- cbBarInfo* mpClickedBar;
- bool mDepressed;
+ bool mBtnPressed;
+ bool mClosePressed;
+ cbBarInfo* mpClickedBar;
+ bool mDepressed;
protected:
- // Helper function: draws a 3D box.
- void Draw3DBox ( wxDC& dc, const wxPoint& pos, bool pressed );
+ // Helper function: draws a 3D box.
+ void Draw3DBox ( wxDC& dc, const wxPoint& pos, bool pressed );
- // Helper function: draws a close box.
- void DrawCloseBox ( wxDC& dc, const wxPoint& pos, bool pressed );
+ // Helper function: draws a close box.
+ void DrawCloseBox ( wxDC& dc, const wxPoint& pos, bool pressed );
- // Helper function: draws a collapse box.
- void DrawCollapseBox( wxDC& dc, const wxPoint& pos,
- bool atLeft, bool disabled, bool pressed );
+ // Helper function: draws a collapse box.
+ void DrawCollapseBox( wxDC& dc, const wxPoint& pos,
+ bool atLeft, bool disabled, bool pressed );
- // Helper function: draws grooves.
- void DrawGrooves ( wxDC& dc, const wxPoint& pos, int length );
+ // Helper function: draws grooves.
+ void DrawGrooves ( wxDC& dc, const wxPoint& pos, int length );
- // Helper function: draws a hint.
- void DoDrawHint( wxDC& dc, wxRect& rect, int pos, int boxOfs, int grooveOfs, bool isFixed );
-
- // Helper function: gets the layout of a hint.
- void GetHintsLayout( wxRect& rect, cbBarInfo& info,
- int& boxOfs, int& grooveOfs, int& pos );
+ // Helper function: draws a hint.
+ void DoDrawHint( wxDC& dc, wxRect& rect, int pos, int boxOfs, int grooveOfs, bool isFixed );
- // Helper function: returns information about the hint under the given position.
- int HitTestHints( cbBarInfo& info, const wxPoint& pos );
+ // Helper function: gets the layout of a hint.
+ void GetHintsLayout( wxRect& rect, cbBarInfo& info,
+ int& boxOfs, int& grooveOfs, int& pos );
- // Helper function.
- void ExcludeHints( wxRect& rect, cbBarInfo& info );
+ // Helper function: returns information about the hint under the given position.
+ int HitTestHints( cbBarInfo& info, const wxPoint& pos );
- // Helper function: creates close and collapse boxes.
- void CreateBoxes();
+ // Helper function.
+ void ExcludeHints( wxRect& rect, cbBarInfo& info );
+
+ // Helper function: creates close and collapse boxes.
+ void CreateBoxes();
public:
- /* public properties */
+ /* public properties */
- bool mCloseBoxOn; // default: ON
- bool mCollapseBoxOn; // default: ON
- int mGrooveCount; // default: 2 (two shaded bars)
- int mHintGap; // default: 5 (pixels from above, below, right and left)
- int mXWeight; // default: 2 (width in pixels of lines which used for drawing cross)
+ bool mCloseBoxOn; // default: ON
+ bool mCollapseBoxOn; // default: ON
+ int mGrooveCount; // default: 2 (two shaded bars)
+ int mHintGap; // default: 5 (pixels from above, below, right and left)
+ int mXWeight; // default: 2 (width in pixels of lines which used for drawing cross)
public:
- // Default constructor.
- cbBarHintsPlugin(void);
+ // Default constructor.
+ cbBarHintsPlugin(void);
- // Constructor, taking parent frame and pane mask flag.
- cbBarHintsPlugin( wxFrameLayout* pLayout, int paneMask = wxALL_PANES );
+ // Constructor, taking parent frame and pane mask flag.
+ cbBarHintsPlugin( wxFrameLayout* pLayout, int paneMask = wxALL_PANES );
- // Destructor.
+ // Destructor.
~cbBarHintsPlugin();
- // Set the number of grooves to be shown in the pane.
- void SetGrooveCount( int nGrooves );
+ // Set the number of grooves to be shown in the pane.
+ void SetGrooveCount( int nGrooves );
- // Called to initialize this plugin.
- void OnInitPlugin();
+ // Called to initialize this plugin.
+ void OnInitPlugin();
- // Handles a plugin event.
- void OnSizeBarWindow( cbSizeBarWndEvent& event );
+ // Handles a plugin event.
+ void OnSizeBarWindow( cbSizeBarWndEvent& event );
- // Handles a plugin event.
- void OnDrawBarDecorations( cbDrawBarDecorEvent& event );
+ // Handles a plugin event.
+ void OnDrawBarDecorations( cbDrawBarDecorEvent& event );
- // Handles a plugin event.
- void OnLeftDown( cbLeftDownEvent& event );
+ // Handles a plugin event.
+ void OnLeftDown( cbLeftDownEvent& event );
- // Handles a plugin event.
- void OnLeftUp ( cbLeftUpEvent& event );
+ // Handles a plugin event.
+ void OnLeftUp ( cbLeftUpEvent& event );
- // Handles a plugin event.
- void OnMotion ( cbMotionEvent& event );
+ // Handles a plugin event.
+ void OnMotion ( cbMotionEvent& event );
- DECLARE_EVENT_TABLE()
+ DECLARE_EVENT_TABLE()
};
#endif /* __DRAGHINTSPL_G__ */
// Created: 28/10/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __CBCUSTOM_G__
class cbSimpleCustomizationPlugin : public cbPluginBase
{
public:
- DECLARE_DYNAMIC_CLASS( cbSimpleCustomizationPlugin )
+ DECLARE_DYNAMIC_CLASS( cbSimpleCustomizationPlugin )
- int mCustMenuItemId;
+ int mCustMenuItemId;
public:
- // Default constructor.
- cbSimpleCustomizationPlugin(void);
+ // Default constructor.
+ cbSimpleCustomizationPlugin(void);
- // Constructor, taking parent pane and a pane mask flag.
- cbSimpleCustomizationPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
+ // Constructor, taking parent pane and a pane mask flag.
+ cbSimpleCustomizationPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
- // Plugin event handler for cbCustomizeBarEvent.
- void OnCustomizeBar( cbCustomizeBarEvent& event );
+ // Plugin event handler for cbCustomizeBarEvent.
+ void OnCustomizeBar( cbCustomizeBarEvent& event );
- // Plugin event handler for cbCustomizeLayoutEvent.
- void OnCustomizeLayout( cbCustomizeLayoutEvent& event );
+ // Plugin event handler for cbCustomizeLayoutEvent.
+ void OnCustomizeLayout( cbCustomizeLayoutEvent& event );
- // Menu event handler.
- void OnMenuItemSelected( wxCommandEvent& event );
+ // Menu event handler.
+ void OnMenuItemSelected( wxCommandEvent& event );
- DECLARE_EVENT_TABLE()
+ DECLARE_EVENT_TABLE()
};
#endif /* __CBCUSTOM_G__ */
// Created: 06/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __CONTROLBAR_G__
// masks for each pane
-#define FL_ALIGN_TOP_PANE 0x0001
+#define FL_ALIGN_TOP_PANE 0x0001
#define FL_ALIGN_BOTTOM_PANE 0x0002
-#define FL_ALIGN_LEFT_PANE 0x0004
+#define FL_ALIGN_LEFT_PANE 0x0004
#define FL_ALIGN_RIGHT_PANE 0x0008
#define wxALL_PANES 0x000F
enum CB_HITTEST_RESULT
{
- CB_NO_ITEMS_HITTED,
+ CB_NO_ITEMS_HITTED,
- CB_UPPER_ROW_HANDLE_HITTED,
- CB_LOWER_ROW_HANDLE_HITTED,
- CB_LEFT_BAR_HANDLE_HITTED,
- CB_RIGHT_BAR_HANDLE_HITTED,
- CB_BAR_CONTENT_HITTED
+ CB_UPPER_ROW_HANDLE_HITTED,
+ CB_LOWER_ROW_HANDLE_HITTED,
+ CB_LEFT_BAR_HANDLE_HITTED,
+ CB_RIGHT_BAR_HANDLE_HITTED,
+ CB_BAR_CONTENT_HITTED
};
-// FIXME:: somehow in debug v. original wxASSERT's are not compiled in...
-
-//#undef wxASSERT
-//#define wxASSERT(x) if ( !(x) ) throw;
-
/*
Helper class, used for spying for unhandled mouse events on control bars
and forwarding them to the frame layout.
class cbBarSpy : public wxEvtHandler
{
public:
- DECLARE_DYNAMIC_CLASS( cbBarSpy )
+ DECLARE_DYNAMIC_CLASS( cbBarSpy )
- wxFrameLayout* mpLayout;
- wxWindow* mpBarWnd;
+ wxFrameLayout* mpLayout;
+ wxWindow* mpBarWnd;
public:
- // Default constructor.
+ // Default constructor.
- cbBarSpy(void);
+ cbBarSpy(void);
- // Constructor, taking a parent pane.
+ // Constructor, taking a parent pane.
- cbBarSpy( wxFrameLayout* pPanel );
+ cbBarSpy( wxFrameLayout* pPanel );
- // Sets the bar window.
+ // Sets the bar window.
- void SetBarWindow( wxWindow* pWnd );
+ void SetBarWindow( wxWindow* pWnd );
- // Performs special event processing.
+ // Performs special event processing.
- virtual bool ProcessEvent(wxEvent& event);
+ virtual bool ProcessEvent(wxEvent& event);
};
/*
class wxFrameLayout : public wxEvtHandler
{
public:
- // Default constructor, used only for serialization.
+ // Default constructor, used only for serialization.
- wxFrameLayout();
+ wxFrameLayout();
- // Constructor, taking parent window, the (MDI) client of the parent if there
- // is one, and flag specifying whether to activate the layout.
+ // Constructor, taking parent window, the (MDI) client of the parent if there
+ // is one, and flag specifying whether to activate the layout.
- wxFrameLayout( wxWindow* pParentFrame,
- wxWindow* pFrameClient = NULL,
- bool activateNow = TRUE );
+ wxFrameLayout( wxWindow* pParentFrame,
+ wxWindow* pFrameClient = NULL,
+ bool activateNow = TRUE );
- // Destructor. It does not destroy the bar windows.
+ // Destructor. It does not destroy the bar windows.
- virtual ~wxFrameLayout();
+ virtual ~wxFrameLayout();
- // Enables floating behaviour. By default floating of control bars is on.
+ // Enables floating behaviour. By default floating of control bars is on.
- virtual void EnableFloating( bool enable = TRUE );
+ virtual void EnableFloating( bool enable = TRUE );
- // Activate can be called after some other layout has been deactivated,
- // and this one must take over the current contents of the frame window.
- //
- // Effectively hooks itself to the frame window, re-displays all non-hidden
- // bar windows and repaints the decorations.
+ // Activate can be called after some other layout has been deactivated,
+ // and this one must take over the current contents of the frame window.
+ //
+ // Effectively hooks itself to the frame window, re-displays all non-hidden
+ // bar windows and repaints the decorations.
- virtual void Activate();
+ virtual void Activate();
- // Deactivate unhooks itself from frame window, and hides all non-hidden windows.
- //
- // Note: two frame layouts should not be active at the same time in the
- // same frame window, since it would cause messy overlapping of bar windows
- // from both layouts.
+ // Deactivate unhooks itself from frame window, and hides all non-hidden windows.
+ //
+ // Note: two frame layouts should not be active at the same time in the
+ // same frame window, since it would cause messy overlapping of bar windows
+ // from both layouts.
- virtual void Deactivate();
+ virtual void Deactivate();
- // Hides the bar windows, and also the client window if present.
+ // Hides the bar windows, and also the client window if present.
- void HideBarWindows();
+ void HideBarWindows();
- // Destroys the bar windows.
+ // Destroys the bar windows.
- virtual void DestroyBarWindows();
+ virtual void DestroyBarWindows();
- // Passes the client window (e.g. MDI client window) to be controlled by
- // frame layout, the size and position of which should be adjusted to be
- // surrounded by controlbar panes, whenever the frame is resized or the dimensions
- // of control panes change.
+ // Passes the client window (e.g. MDI client window) to be controlled by
+ // frame layout, the size and position of which should be adjusted to be
+ // surrounded by controlbar panes, whenever the frame is resized or the dimensions
+ // of control panes change.
- void SetFrameClient( wxWindow* pFrameClient );
+ void SetFrameClient( wxWindow* pFrameClient );
- // Returns the frame client, or NULL if not present.
+ // Returns the frame client, or NULL if not present.
- wxWindow* GetFrameClient();
+ wxWindow* GetFrameClient();
- // Returns the parent frame.
+ // Returns the parent frame.
- wxWindow& GetParentFrame() { return *mpFrame; }
+ wxWindow& GetParentFrame() { return *mpFrame; }
- // Returns an array of panes. Used by update managers.
+ // Returns an array of panes. Used by update managers.
- cbDockPane** GetPanesArray() { return mPanes; }
+ cbDockPane** GetPanesArray() { return mPanes; }
- // Returns a pane for the given alignment. See pane alignment types.
+ // Returns a pane for the given alignment. See pane alignment types.
- cbDockPane* GetPane( int alignment )
+ cbDockPane* GetPane( int alignment )
- { return mPanes[alignment]; }
+ { return mPanes[alignment]; }
- // Adds bar information to the frame layout. The appearance of the layout is not refreshed
- // immediately; RefreshNow() can be called if necessary.
- //
- // Notes: the argument pBarWnd can by NULL, resulting in bar decorations to be drawn
- // around the empty rectangle (filled with default background colour).
- // Argument dimInfo can be reused for adding any number of bars, since
- // it is not used directly - instead its members are copied. If the dimensions
- // handler is present, its instance is shared (reference counted). The dimension
- // handler should always be allocated on the heap.
+ // Adds bar information to the frame layout. The appearance of the layout is not refreshed
+ // immediately; RefreshNow() can be called if necessary.
+ //
+ // Notes: the argument pBarWnd can by NULL, resulting in bar decorations to be drawn
+ // around the empty rectangle (filled with default background colour).
+ // Argument dimInfo can be reused for adding any number of bars, since
+ // it is not used directly - instead its members are copied. If the dimensions
+ // handler is present, its instance is shared (reference counted). The dimension
+ // handler should always be allocated on the heap.
- // pBarWnd is the window to be managed.
+ // pBarWnd is the window to be managed.
- // dimInfo contains dimension information.
+ // dimInfo contains dimension information.
- // alignment is a value such as FL_ALIGN_TOP.
+ // alignment is a value such as FL_ALIGN_TOP.
- // rowNo is the vertical position or row in the pane (if in docked state).
+ // rowNo is the vertical position or row in the pane (if in docked state).
- // columnPos is the horizontal position within the row in pixels (if in docked state).
+ // columnPos is the horizontal position within the row in pixels (if in docked state).
- // name is a name by which the bar can be referred in layout customization dialogs.
+ // name is a name by which the bar can be referred in layout customization dialogs.
- // If spyEvents is TRUE, input events for the bar should be "spyed" in order
- // to forward unhandled mouse clicks to the frame layout, for example to enable
- // easy draggablity of toolbars just by clicking on their interior regions.
- // For widgets like text/tree control this value should be FALSE,
- // since there's no certain way to detect whether the event was actually handled.
+ // If spyEvents is TRUE, input events for the bar should be "spyed" in order
+ // to forward unhandled mouse clicks to the frame layout, for example to enable
+ // easy draggablity of toolbars just by clicking on their interior regions.
+ // For widgets like text/tree control this value should be FALSE,
+ // since there's no certain way to detect whether the event was actually handled.
- // state is the initial state, such as wxCBAR_DOCKED_HORIZONTALLY,
- // wxCBAR_FLOATING, wxCBAR_HIDDEN.
+ // state is the initial state, such as wxCBAR_DOCKED_HORIZONTALLY,
+ // wxCBAR_FLOATING, wxCBAR_HIDDEN.
- virtual void AddBar( wxWindow* pBarWnd,
+ virtual void AddBar( wxWindow* pBarWnd,
const cbDimInfo& dimInfo,
- // defaults:
- int alignment = FL_ALIGN_TOP,
- int rowNo = 0,
- int columnPos = 0,
- const wxString& name="bar",
- bool spyEvents = FALSE,
- int state = wxCBAR_DOCKED_HORIZONTALLY
- );
+ // defaults:
+ int alignment = FL_ALIGN_TOP,
+ int rowNo = 0,
+ int columnPos = 0,
+ const wxString& name="bar",
+ bool spyEvents = FALSE,
+ int state = wxCBAR_DOCKED_HORIZONTALLY
+ );
- // ReddockBar can be used for repositioning existing bars. The given bar is first removed
- // from the pane it currently belongs to, and inserted into the pane, which "matches"
- // the given rectangular area. If pToPane is not NULL, the bar is docked to this given pane.
- // To dock a bar which is floating, use the wxFrameLayout::DockBar method.
+ // ReddockBar can be used for repositioning existing bars. The given bar is first removed
+ // from the pane it currently belongs to, and inserted into the pane, which "matches"
+ // the given rectangular area. If pToPane is not NULL, the bar is docked to this given pane.
+ // To dock a bar which is floating, use the wxFrameLayout::DockBar method.
- virtual bool RedockBar( cbBarInfo* pBar, const wxRect& shapeInParent,
- cbDockPane* pToPane = NULL, bool updateNow = TRUE );
+ virtual bool RedockBar( cbBarInfo* pBar, const wxRect& shapeInParent,
+ cbDockPane* pToPane = NULL, bool updateNow = TRUE );
- // Finds the bar in the framelayout, by name.
+ // Finds the bar in the framelayout, by name.
- cbBarInfo* FindBarByName( const wxString& name );
+ cbBarInfo* FindBarByName( const wxString& name );
- // Finds the bar in the framelayout, by window.
+ // Finds the bar in the framelayout, by window.
- cbBarInfo* FindBarByWindow( const wxWindow* pWnd );
+ cbBarInfo* FindBarByWindow( const wxWindow* pWnd );
- // Gets an array of bars.
+ // Gets an array of bars.
- BarArrayT& GetBars();
+ BarArrayT& GetBars();
- // Changes the bar's docking state (see possible control bar states).
+ // Changes the bar's docking state (see possible control bar states).
- void SetBarState( cbBarInfo* pBar, int newStatem, bool updateNow );
+ void SetBarState( cbBarInfo* pBar, int newStatem, bool updateNow );
- // Toggles the bar between visible and hidden.
+ // Toggles the bar between visible and hidden.
- void InverseVisibility( cbBarInfo* pBar );
+ void InverseVisibility( cbBarInfo* pBar );
- // Reflects changes in bar information structure visually.
- // For example, moves the bar, changes its dimension information,
- // or changes the pane to which it is docked.
+ // Reflects changes in bar information structure visually.
+ // For example, moves the bar, changes its dimension information,
+ // or changes the pane to which it is docked.
- void ApplyBarProperties( cbBarInfo* pBar );
+ void ApplyBarProperties( cbBarInfo* pBar );
- // Removes the bar from the layout permanently, and hides its corresponding window if present.
+ // Removes the bar from the layout permanently, and hides its corresponding window if present.
- void RemoveBar( cbBarInfo* pBar );
+ void RemoveBar( cbBarInfo* pBar );
- // Recalculates the layout of panes, and all bars/rows in each pane.
+ // Recalculates the layout of panes, and all bars/rows in each pane.
- virtual void RecalcLayout( bool repositionBarsNow = FALSE );
+ virtual void RecalcLayout( bool repositionBarsNow = FALSE );
- // Returns the client height.
+ // Returns the client height.
- int GetClientHeight();
+ int GetClientHeight();
- // Returns the client width.
+ // Returns the client width.
- int GetClientWidth();
+ int GetClientWidth();
- // Returns the client's rectangle.
+ // Returns the client's rectangle.
- wxRect& GetClientRect() { return mClntWndBounds; }
+ wxRect& GetClientRect() { return mClntWndBounds; }
- // Returns a reference to the updates manager.
- // Note: in future, the updates manager will become a normal plugin.
+ // Returns a reference to the updates manager.
+ // Note: in future, the updates manager will become a normal plugin.
- cbUpdatesManagerBase& GetUpdatesManager();
+ cbUpdatesManagerBase& GetUpdatesManager();
- // Destroys the previous manager if any, and sets the new one.
+ // Destroys the previous manager if any, and sets the new one.
- void SetUpdatesManager( cbUpdatesManagerBase* pUMgr );
+ void SetUpdatesManager( cbUpdatesManagerBase* pUMgr );
- // Gets the pane properties for the given alignment.
+ // Gets the pane properties for the given alignment.
- virtual void GetPaneProperties( cbCommonPaneProperties& props, int alignment = FL_ALIGN_TOP );
+ virtual void GetPaneProperties( cbCommonPaneProperties& props, int alignment = FL_ALIGN_TOP );
- // Sets the pane properties for the given alignment.
- // Note: changing properties of panes does not result immediate on-screen update.
+ // Sets the pane properties for the given alignment.
+ // Note: changing properties of panes does not result immediate on-screen update.
- virtual void SetPaneProperties( const cbCommonPaneProperties& props,
- int paneMask = wxALL_PANES );
+ virtual void SetPaneProperties( const cbCommonPaneProperties& props,
+ int paneMask = wxALL_PANES );
- // Sets the margins for the given panes.
- // The margins should go into cbCommonPaneProperties in the future.
- //
- // Note: this method should be called before any custom plugins are attached.
+ // Sets the margins for the given panes.
+ // The margins should go into cbCommonPaneProperties in the future.
+ //
+ // Note: this method should be called before any custom plugins are attached.
- virtual void SetMargins( int top, int bottom, int left, int right,
- int paneMask = wxALL_PANES );
+ virtual void SetMargins( int top, int bottom, int left, int right,
+ int paneMask = wxALL_PANES );
- // Sets the pane background colour.
+ // Sets the pane background colour.
- virtual void SetPaneBackground( const wxColour& colour );
+ virtual void SetPaneBackground( const wxColour& colour );
- // Recalculates layout and performs on-screen update of all panes.
+ // Recalculates layout and performs on-screen update of all panes.
- void RefreshNow( bool recalcLayout = TRUE );
+ void RefreshNow( bool recalcLayout = TRUE );
- // Event handler for a size event.
+ // Event handler for a size event.
- void OnSize ( wxSizeEvent& event );
+ void OnSize ( wxSizeEvent& event );
- // Event handler for a left down button event.
+ // Event handler for a left down button event.
- void OnLButtonDown( wxMouseEvent& event );
+ void OnLButtonDown( wxMouseEvent& event );
- // Event handler for a left doubleclick button event.
+ // Event handler for a left doubleclick button event.
- void OnLDblClick ( wxMouseEvent& event );
+ void OnLDblClick ( wxMouseEvent& event );
- // Event handler for a left button up event.
+ // Event handler for a left button up event.
- void OnLButtonUp ( wxMouseEvent& event );
+ void OnLButtonUp ( wxMouseEvent& event );
- // Event handler for a right button down event.
+ // Event handler for a right button down event.
- void OnRButtonDown( wxMouseEvent& event );
+ void OnRButtonDown( wxMouseEvent& event );
- // Event handler for a right button up event.
+ // Event handler for a right button up event.
- void OnRButtonUp ( wxMouseEvent& event );
+ void OnRButtonUp ( wxMouseEvent& event );
- // Event handler for a mouse move event.
+ // Event handler for a mouse move event.
- void OnMouseMove ( wxMouseEvent& event );
+ void OnMouseMove ( wxMouseEvent& event );
- // This function should be used instead of passing the event to the ProcessEvent method
- // of the top-level plugin directly. This method checks if events are currently
- // captured and ensures that plugin-event is routed correctly.
+ // This function should be used instead of passing the event to the ProcessEvent method
+ // of the top-level plugin directly. This method checks if events are currently
+ // captured and ensures that plugin-event is routed correctly.
- virtual void FirePluginEvent( cbPluginEvent& event );
+ virtual void FirePluginEvent( cbPluginEvent& event );
- // Captures user input events for the given plugin.
- // Input events are: mouse movement, mouse clicks, keyboard input.
+ // Captures user input events for the given plugin.
+ // Input events are: mouse movement, mouse clicks, keyboard input.
- virtual void CaptureEventsForPlugin ( cbPluginBase* pPlugin );
+ virtual void CaptureEventsForPlugin ( cbPluginBase* pPlugin );
- // Releases user input events for the given plugin.
- // Input events are: mouse movement, mouse clicks, keyboard input
+ // Releases user input events for the given plugin.
+ // Input events are: mouse movement, mouse clicks, keyboard input
- virtual void ReleaseEventsFromPlugin( cbPluginBase* pPlugin );
+ virtual void ReleaseEventsFromPlugin( cbPluginBase* pPlugin );
- // Called by plugins; also captures the mouse in the parent frame.
+ // Called by plugins; also captures the mouse in the parent frame.
- void CaptureEventsForPane( cbDockPane* toPane );
+ void CaptureEventsForPane( cbDockPane* toPane );
- // Called by plugins; also releases mouse in the parent frame.
+ // Called by plugins; also releases mouse in the parent frame.
- void ReleaseEventsFromPane( cbDockPane* fromPane );
+ void ReleaseEventsFromPane( cbDockPane* fromPane );
- // Returns the current top-level plugin (the one that receives events first,
- // except if input events are currently captured by some other plugin).
+ // Returns the current top-level plugin (the one that receives events first,
+ // except if input events are currently captured by some other plugin).
- virtual cbPluginBase& GetTopPlugin();
+ virtual cbPluginBase& GetTopPlugin();
- // Hooking custom plugins to frame layout.
- //
- // Note: when hooking one plugin on top of the other,
- // use SetNextHandler or similar methods
- // of wxEvtHandler class to compose the chain of plugins,
- // than pass the left-most handler in this chain to
- // the above methods (assuming that events are delegated
- // from left-most towards right-most handler).
- //
- // This secenario is very inconvenient and "low-level",
- // so use the Add/Push/PopPlugin methods instead.
+ // Hooking custom plugins to frame layout.
+ //
+ // Note: when hooking one plugin on top of the other,
+ // use SetNextHandler or similar methods
+ // of wxEvtHandler class to compose the chain of plugins,
+ // than pass the left-most handler in this chain to
+ // the above methods (assuming that events are delegated
+ // from left-most towards right-most handler).
+ //
+ // This secenario is very inconvenient and "low-level",
+ // so use the Add/Push/PopPlugin methods instead.
- virtual void SetTopPlugin( cbPluginBase* pPlugin );
+ virtual void SetTopPlugin( cbPluginBase* pPlugin );
- // Similar to wxWindow's "push/pop-event-handler" methods, execept
- // that the plugin is deleted upon "popping".
+ // Similar to wxWindow's "push/pop-event-handler" methods, execept
+ // that the plugin is deleted upon "popping".
- virtual void PushPlugin( cbPluginBase* pPugin );
+ virtual void PushPlugin( cbPluginBase* pPugin );
- // Similar to wxWindow's "push/pop-event-handler" methods, execept
- // that the plugin is deleted upon "popping".
+ // Similar to wxWindow's "push/pop-event-handler" methods, execept
+ // that the plugin is deleted upon "popping".
- virtual void PopPlugin();
+ virtual void PopPlugin();
- // Pop all plugins.
- virtual void PopAllPlugins();
+ // Pop all plugins.
+ virtual void PopAllPlugins();
- // Adds the default plugins. These are cbPaneDrawPlugin, cbRowLayoutPlugin, cbBarDragPlugin,
- // cbAntiflickerPlugin, cbSimpleCustomizePlugin.
- //
- // This method is automatically invoked if no plugins were found upon
- // firing of the first plugin-event, i.e. when wxFrameLayout configures itself.
+ // Adds the default plugins. These are cbPaneDrawPlugin, cbRowLayoutPlugin, cbBarDragPlugin,
+ // cbAntiflickerPlugin, cbSimpleCustomizePlugin.
+ //
+ // This method is automatically invoked if no plugins were found upon
+ // firing of the first plugin-event, i.e. when wxFrameLayout configures itself.
- virtual void PushDefaultPlugins();
+ virtual void PushDefaultPlugins();
- // An advanced methods for plugin configuration using their
- // dynamic class information, for example CLASSINFO(pluginClass).
+ // An advanced methods for plugin configuration using their
+ // dynamic class information, for example CLASSINFO(pluginClass).
- // First checks if the plugin of the given class is already "hooked up".
- // If not, adds it to the top of the plugins chain.
+ // First checks if the plugin of the given class is already "hooked up".
+ // If not, adds it to the top of the plugins chain.
- virtual void AddPlugin( wxClassInfo* pPlInfo, int paneMask = wxALL_PANES );
+ virtual void AddPlugin( wxClassInfo* pPlInfo, int paneMask = wxALL_PANES );
- // First checks if the plugin of the given class is already hooked.
- // If so, removes it, and then inserts it into the chain
- // before the plugin of the class given by pNextPlInfo.
- //
- // Note: this method is handy in some cases where the order
- // of the plugin-chain could be important, for example when one plugin overrides
- // some functionality of another already-hooked plugin,
- // so that the former plugin should be hooked before the one
- // whose functionality is being overridden.
+ // First checks if the plugin of the given class is already hooked.
+ // If so, removes it, and then inserts it into the chain
+ // before the plugin of the class given by pNextPlInfo.
+ //
+ // Note: this method is handy in some cases where the order
+ // of the plugin-chain could be important, for example when one plugin overrides
+ // some functionality of another already-hooked plugin,
+ // so that the former plugin should be hooked before the one
+ // whose functionality is being overridden.
- virtual void AddPluginBefore( wxClassInfo* pNextPlInfo, wxClassInfo* pPlInfo,
- int paneMask = wxALL_PANES );
+ virtual void AddPluginBefore( wxClassInfo* pNextPlInfo, wxClassInfo* pPlInfo,
+ int paneMask = wxALL_PANES );
- // Checks if the plugin of the given class is hooked, and removes
- // it if found.
+ // Checks if the plugin of the given class is hooked, and removes
+ // it if found.
- virtual void RemovePlugin( wxClassInfo* pPlInfo );
+ virtual void RemovePlugin( wxClassInfo* pPlInfo );
- // Finds a plugin with the given class, or returns NULL if a plugin of the given
- // class is not hooked.
+ // Finds a plugin with the given class, or returns NULL if a plugin of the given
+ // class is not hooked.
- virtual cbPluginBase* FindPlugin( wxClassInfo* pPlInfo );
+ virtual cbPluginBase* FindPlugin( wxClassInfo* pPlInfo );
- // Returns true if there is a top plugin.
+ // Returns true if there is a top plugin.
- bool HasTopPlugin();
+ bool HasTopPlugin();
- DECLARE_EVENT_TABLE()
- DECLARE_DYNAMIC_CLASS( wxFrameLayout )
+ DECLARE_EVENT_TABLE()
+ DECLARE_DYNAMIC_CLASS( wxFrameLayout )
public: /* protected really, acessed only by plugins and serializers */
- friend class cbDockPane;
- friend class wxBarHandler;
+ friend class cbDockPane;
+ friend class wxBarHandler;
- wxWindow* mpFrame; // parent frame
- wxWindow* mpFrameClient; // client window
- cbDockPane* mPanes[MAX_PANES]; // panes in the panel
+ wxWindow* mpFrame; // parent frame
+ wxWindow* mpFrameClient; // client window
+ cbDockPane* mPanes[MAX_PANES]; // panes in the panel
- // misc. cursors
- wxCursor* mpHorizCursor;
- wxCursor* mpVertCursor;
- wxCursor* mpNormalCursor;
- wxCursor* mpDragCursor;
- wxCursor* mpNECursor; // no-entry cursor
+ // misc. cursors
+ wxCursor* mpHorizCursor;
+ wxCursor* mpVertCursor;
+ wxCursor* mpNormalCursor;
+ wxCursor* mpDragCursor;
+ wxCursor* mpNECursor; // no-entry cursor
- // pens for decoration and shades
+ // pens for decoration and shades
- wxPen mDarkPen; // default wxSYS_COLOUR_3DSHADOW
- wxPen mLightPen; // default wxSYS_COLOUR_3DHILIGHT
- wxPen mGrayPen; // default wxSYS_COLOUR_3DFACE
- wxPen mBlackPen; // default wxColour( 0, 0, 0)
- wxPen mBorderPen; // default wxSYS_COLOUR_3DFACE
+ wxPen mDarkPen; // default wxSYS_COLOUR_3DSHADOW
+ wxPen mLightPen; // default wxSYS_COLOUR_3DHILIGHT
+ wxPen mGrayPen; // default wxSYS_COLOUR_3DFACE
+ wxPen mBlackPen; // default wxColour( 0, 0, 0)
+ wxPen mBorderPen; // default wxSYS_COLOUR_3DFACE
- wxPen mNullPen; // transparent pen
+ wxPen mNullPen; // transparent pen
- // pane to which the all mouse input is currently directed (caputred)
+ // pane to which the all mouse input is currently directed (caputred)
- cbDockPane* mpPaneInFocus;
+ cbDockPane* mpPaneInFocus;
- // pane, from which mouse pointer had just left
+ // pane, from which mouse pointer had just left
- cbDockPane* mpLRUPane;
+ cbDockPane* mpLRUPane;
- // bounds of client window in parent frame's coordinates
+ // bounds of client window in parent frame's coordinates
- wxRect mClntWndBounds;
- wxRect mPrevClntWndBounds;
+ wxRect mClntWndBounds;
+ wxRect mPrevClntWndBounds;
- bool mFloatingOn;
- wxPoint mNextFloatedWndPos;
- wxSize mFloatingPosStep;
+ bool mFloatingOn;
+ wxPoint mNextFloatedWndPos;
+ wxSize mFloatingPosStep;
- // current plugin (right-most) plugin which receives events first
+ // current plugin (right-most) plugin which receives events first
- cbPluginBase* mpTopPlugin;
+ cbPluginBase* mpTopPlugin;
- // plugin, which currently has captured all input events, otherwise NULL
+ // plugin, which currently has captured all input events, otherwise NULL
- cbPluginBase* mpCaputesInput;
+ cbPluginBase* mpCaputesInput;
- // list of event handlers which are "pushed" onto each bar, to catch
- // mouse events which are not handled by bars, and froward them to the ,
- // frome-layout and further to plugins
+ // list of event handlers which are "pushed" onto each bar, to catch
+ // mouse events which are not handled by bars, and froward them to the ,
+ // frome-layout and further to plugins
- wxList mBarSpyList;
+ wxList mBarSpyList;
- // list of top-most frames which contain floated bars
+ // list of top-most frames which contain floated bars
- wxList mFloatedFrames;
+ wxList mFloatedFrames;
- // linked list of references to all bars (docked/floated/hidden)
+ // linked list of references to all bars (docked/floated/hidden)
- BarArrayT mAllBars;
+ BarArrayT mAllBars;
- // FOR NOW:: dirty stuff...
- bool mClientWndRefreshPending;
- bool mRecalcPending;
- bool mCheckFocusWhenIdle;
+ // FOR NOW:: dirty stuff...
+ bool mClientWndRefreshPending;
+ bool mRecalcPending;
+ bool mCheckFocusWhenIdle;
public: /* protected really (accessed only by plugins) */
- // refrence to custom updates manager
- cbUpdatesManagerBase* mpUpdatesMgr;
+ // refrence to custom updates manager
+ cbUpdatesManagerBase* mpUpdatesMgr;
- // Called to apply the calculated layout to window objects.
+ // Called to apply the calculated layout to window objects.
- void PositionClientWindow();
+ void PositionClientWindow();
- // Called to apply the calculated layout to window objects.
+ // Called to apply the calculated layout to window objects.
- void PositionPanes();
+ void PositionPanes();
- // Creates the cursors.
+ // Creates the cursors.
- void CreateCursors();
+ void CreateCursors();
- // Applies the calculated layout to a floating bar.
+ // Applies the calculated layout to a floating bar.
- void RepositionFloatedBar( cbBarInfo* pBar );
+ void RepositionFloatedBar( cbBarInfo* pBar );
- // Applies the state to the window objects.
+ // Applies the state to the window objects.
- void DoSetBarState( cbBarInfo* pBar );
+ void DoSetBarState( cbBarInfo* pBar );
- // The purpose of this function is unknown.
+ // The purpose of this function is unknown.
- bool LocateBar( cbBarInfo* pBarInfo,
- cbRowInfo** ppRow,
- cbDockPane** ppPane );
+ bool LocateBar( cbBarInfo* pBarInfo,
+ cbRowInfo** ppRow,
+ cbDockPane** ppPane );
- // Returns TRUE if the position is within the given pane.
+ // Returns TRUE if the position is within the given pane.
- bool HitTestPane( cbDockPane* pPane, int x, int y );
+ bool HitTestPane( cbDockPane* pPane, int x, int y );
- // Returns the pane for which the rectangle hit test succeeds, giving
- // preference to the given pane if supplied.
+ // Returns the pane for which the rectangle hit test succeeds, giving
+ // preference to the given pane if supplied.
- cbDockPane* HitTestPanes( const wxRect& rect, cbDockPane* pCurPane );
+ cbDockPane* HitTestPanes( const wxRect& rect, cbDockPane* pCurPane );
- // Returns the pane to which the given bar belongs.
+ // Returns the pane to which the given bar belongs.
- cbDockPane* GetBarPane( cbBarInfo* pBar );
+ cbDockPane* GetBarPane( cbBarInfo* pBar );
- // Delegated from "bar-spy".
- void ForwardMouseEvent( wxMouseEvent& event,
- cbDockPane* pToPane,
- int eventType );
+ // Delegated from "bar-spy".
+ void ForwardMouseEvent( wxMouseEvent& event,
+ cbDockPane* pToPane,
+ int eventType );
- // Routes the mouse event to the appropriate pane.
+ // Routes the mouse event to the appropriate pane.
- void RouteMouseEvent( wxMouseEvent& event, int pluginEvtType );
+ void RouteMouseEvent( wxMouseEvent& event, int pluginEvtType );
- // Shows all floated windows.
+ // Shows all floated windows.
- void ShowFloatedWindows( bool show );
+ void ShowFloatedWindows( bool show );
- // Unhooks the layout from the frame.
+ // Unhooks the layout from the frame.
- void UnhookFromFrame();
+ void UnhookFromFrame();
- // Hooks the layout up to the frame (pushes the layout onto the
- // frame's event handler stack).
+ // Hooks the layout up to the frame (pushes the layout onto the
+ // frame's event handler stack).
- void HookUpToFrame();
+ void HookUpToFrame();
- // Returns TRUE if the platform allows reparenting. This may not return TRUE
- // for all platforms. Reparenting allows control bars to be floated.
+ // Returns TRUE if the platform allows reparenting. This may not return TRUE
+ // for all platforms. Reparenting allows control bars to be floated.
- bool CanReparent();
+ bool CanReparent();
- // Reparents pChild to have parent pNewParent.
+ // Reparents pChild to have parent pNewParent.
- void ReparentWindow( wxWindow* pChild, wxWindow* pNewParent );
+ void ReparentWindow( wxWindow* pChild, wxWindow* pNewParent );
- // Returns the previous client window rectangle.
+ // Returns the previous client window rectangle.
- wxRect& GetPrevClientRect() { return mPrevClntWndBounds; }
+ wxRect& GetPrevClientRect() { return mPrevClntWndBounds; }
- // Handles paint events, calling PaintPane for each pane.
+ // Handles paint events, calling PaintPane for each pane.
- void OnPaint( wxPaintEvent& event );
+ void OnPaint( wxPaintEvent& event );
- // Handles background erase events. Currently does nothing.
+ // Handles background erase events. Currently does nothing.
- void OnEraseBackground( wxEraseEvent& event );
+ void OnEraseBackground( wxEraseEvent& event );
- // Handles focus kill events. Currently does nothing.
+ // Handles focus kill events. Currently does nothing.
- void OnKillFocus( wxFocusEvent& event );
+ void OnKillFocus( wxFocusEvent& event );
- // Handles focus set events. Currently does nothing.
+ // Handles focus set events. Currently does nothing.
- void OnSetFocus( wxFocusEvent& event );
+ void OnSetFocus( wxFocusEvent& event );
- // Handles activation events. Currently does nothing.
+ // Handles activation events. Currently does nothing.
- void OnActivate( wxActivateEvent& event );
+ void OnActivate( wxActivateEvent& event );
- // Handles idle events.
+ // Handles idle events.
- void OnIdle( wxIdleEvent& event );
+ void OnIdle( wxIdleEvent& event );
- // Returns a new cbGCUpdatesMgr object.
+ // Returns a new cbGCUpdatesMgr object.
- virtual cbUpdatesManagerBase* CreateUpdatesManager();
+ virtual cbUpdatesManagerBase* CreateUpdatesManager();
};
/*
class cbUpdateMgrData : public wxObject
{
- DECLARE_DYNAMIC_CLASS( cbUpdateMgrData )
+ DECLARE_DYNAMIC_CLASS( cbUpdateMgrData )
public:
- wxRect mPrevBounds; // previous state of layout item (in parent frame's coordinates)
+ wxRect mPrevBounds; // previous state of layout item (in parent frame's coordinates)
- bool mIsDirty; // overrides result of current-against-previous bounds comparison,
- // i.e. requires item to be updated, regardless of it's current area
+ bool mIsDirty; // overrides result of current-against-previous bounds comparison,
+ // i.e. requires item to be updated, regardless of it's current area
- wxObject* mpCustomData; // any custom data stored by specific updates mgr.
+ wxObject* mpCustomData; // any custom data stored by specific updates mgr.
- // Default constructor. Is-dirty flag is set TRUE initially.
+ // Default constructor. Is-dirty flag is set TRUE initially.
- cbUpdateMgrData();
+ cbUpdateMgrData();
- // Store the item state.
+ // Store the item state.
- void StoreItemState( const wxRect& boundsInParent );
+ void StoreItemState( const wxRect& boundsInParent );
- // Set the dirty flag.
+ // Set the dirty flag.
- void SetDirty( bool isDirty = TRUE );
+ void SetDirty( bool isDirty = TRUE );
- // Set custom data.
+ // Set custom data.
- void SetCustomData( wxObject* pCustomData );
+ void SetCustomData( wxObject* pCustomData );
- // Returns the is-dirty flag.
+ // Returns the is-dirty flag.
- inline bool IsDirty() { return mIsDirty; }
+ inline bool IsDirty() { return mIsDirty; }
};
/*
class cbBarDimHandlerBase : public wxObject
{
- DECLARE_ABSTRACT_CLASS( cbBarDimHandlerBase )
+ DECLARE_ABSTRACT_CLASS( cbBarDimHandlerBase )
public:
- int mRefCount; // since one dim-handler can be assigned
- // to multiple bars, it's instance is
- // reference-counted
+ int mRefCount; // since one dim-handler can be assigned
+ // to multiple bars, it's instance is
+ // reference-counted
public:
- // initial reference count is 0, since handler is not used, until the
- // first invocation of AddRef()
+ // Default constructor. The initial reference count is 0, since
+ // the handler is not used until the first invocation of AddRef().
- cbBarDimHandlerBase();
+ cbBarDimHandlerBase();
- void AddRef();
- void RemoveRef();
+ // Increments the reference count.
- // "bar-state-changes" notification
- virtual void OnChangeBarState(cbBarInfo* pBar, int newState ) = 0;
- virtual void OnResizeBar( cbBarInfo* pBar, const wxSize& given, wxSize& preferred ) = 0;
-};
+ void AddRef();
+
+ // Decrements the reference count, and if the count is at zero,
+ // delete 'this'.
+
+ void RemoveRef();
-/* helper classes (used internally by wxFrameLayout class) */
+ // Responds to "bar-state-changes" notifications.
+
+ virtual void OnChangeBarState(cbBarInfo* pBar, int newState ) = 0;
+
+ // Responds to bar resize notifications.
+
+ virtual void OnResizeBar( cbBarInfo* pBar, const wxSize& given, wxSize& preferred ) = 0;
+};
-// holds and manages information about bar dimensions
+/*
+Helper class used internally by the wxFrameLayout class.
+Holds and manages information about bar dimensions.
+*/
class cbDimInfo : public wxObject
{
- DECLARE_DYNAMIC_CLASS( cbDimInfo )
+ DECLARE_DYNAMIC_CLASS( cbDimInfo )
public:
- wxSize mSizes[MAX_BAR_STATES]; // preferred sizes for each possible bar state
+ wxSize mSizes[MAX_BAR_STATES]; // preferred sizes for each possible bar state
- wxRect mBounds[MAX_BAR_STATES]; // saved positions and sizes for each
- // possible state, values contain (-1)s if
- // not initialized yet
+ wxRect mBounds[MAX_BAR_STATES]; // saved positions and sizes for each
+ // possible state, values contain (-1)s if
+ // not initialized yet
- int mLRUPane; // pane to which this bar was docked before it was floated
- // (FL_ALIGN_TOP,FL_ALIGN_BOTTOM,..)
+ int mLRUPane; // pane to which this bar was docked before it was floated
+ // (FL_ALIGN_TOP,FL_ALIGN_BOTTOM,..)
- // top/bottom gap, separates decorations
- // from the bar's actual window, filled
- // with frame's beckground color, default: 0
+ // top/bottom gap, separates decorations
+ // from the bar's actual window, filled
+ // with frame's beckground color, default: 0
- int mVertGap;
+ int mVertGap;
- // left/right gap, separates decorations
- // from the bar's actual window, filled
- // with frame's beckground colour, default: 0
+ // left/right gap, separates decorations
+ // from the bar's actual wndow, filled
+ // with frame's beckground colour, default: 0
- int mHorizGap; // NOTE:: gaps are given in frame's coord. orientation
+ int mHorizGap; // NOTE:: gaps are given in frame's coord. orientation
- // TRUE, if vertical/horizotal dimensions cannot be mannualy adjusted
- // by user using resizing handles. If FALSE, the frame-layout
- // *automatically* places resizing handles among not-fixed bars
+ // TRUE, if vertical/horizontal dimensions cannot be mannualy adjusted
+ // by user using resizing handles. If FALSE, the frame-layout
+ // *automatically* places resizing handles among not-fixed bars
- bool mIsFixed;
+ bool mIsFixed;
- cbBarDimHandlerBase* mpHandler; // NULL, if no handler present
+ cbBarDimHandlerBase* mpHandler; // NULL, if no handler present
public:
- cbDimInfo(void);
+ // Default constructor.
+
+ cbDimInfo(void);
- cbDimInfo( cbBarDimHandlerBase* pDimHandler,
- bool isFixed // (see comments on mIsFixed member)
- );
+ // Constructor.
+ // isFixed is TRUE if vertical/horizontal dimensions cannot be manually adjusted
+ // by the user using resizing handles. If FALSE, the frame-layout
+ // automatically places resizing handles among bars that do are not fixed.
+
+ cbDimInfo( cbBarDimHandlerBase* pDimHandler,
+ bool isFixed // (see comments on mIsFixed member)
+ );
- cbDimInfo( int dh_x, int dh_y, // dims when docked horizontally
- int dv_x, int dv_y, // dims when docked vertically
- int f_x, int f_y, // dims when floating
+ // Constructor taking dimenstion information.
+ //
+ // dh_x, dh_y are the dimensions when docked horizontally.
+ //
+ // dv_x, dv_y are the dimensions when docked vertically.
+ //
+ // f_x, f_y are the dimensions when floating.
+ //
+ // For information on isFixed, see comments above.
+ //
+ // horizGap is the left/right gap, separating decorations
+ // from the bar's actual wndow, filled with the frame's background colour.
+ // The dimension is given in the frame's coordinates.
+ //
+ // vertGap is the top/bottom gap, separating decorations
+ // from the bar's actual wndow, filled with the frame's background colour.
+ // The dimension is given in the frame's coordinates.
+
+ cbDimInfo( int dh_x, int dh_y,
+ int dv_x, int dv_y,
+ int f_x, int f_y,
- bool isFixed = TRUE,// (see comments on mIsFixed member)
- int horizGap = 6, // (see comments on mHorizGap member)
- int vertGap = 6, // -/-
+ bool isFixed = TRUE,
+ int horizGap = 6,
+ int vertGap = 6,
+
+ cbBarDimHandlerBase* pDimHandler = NULL
+ );
- cbBarDimHandlerBase* pDimHandler = NULL
- );
+ // Constructor.
cbDimInfo( int x, int y,
bool isFixed = TRUE,
cbBarDimHandlerBase* pDimHandler = NULL
);
- const cbDimInfo& operator=( const cbDimInfo& other );
+ // Destructor. Destroys handler automatically, if present.
- // destroys handler automatically, if present
- ~cbDimInfo();
+ ~cbDimInfo();
- inline cbBarDimHandlerBase* GetDimHandler() { return mpHandler; }
+ // Assignment operator.
+
+ const cbDimInfo& operator=( const cbDimInfo& other );
+
+ // Returns the handler, if any.
+
+ inline cbBarDimHandlerBase* GetDimHandler() { return mpHandler; }
};
WX_DEFINE_ARRAY(float, cbArrayFloat);
+/*
+Helper class used internally by the wxFrameLayout class.
+Holds and manages information about bar rows.
+*/
+
class cbRowInfo : public wxObject
{
- DECLARE_DYNAMIC_CLASS( cbRowInfo )
+ DECLARE_DYNAMIC_CLASS( cbRowInfo )
public:
- BarArrayT mBars; // row content
+ BarArrayT mBars; // row content
- // row flags (set up according to row-relations)
+ // row flags (set up according to row-relations)
- bool mHasUpperHandle;
- bool mHasLowerHandle;
- bool mHasOnlyFixedBars;
- int mNotFixedBarsCnt;
+ bool mHasUpperHandle;
+ bool mHasLowerHandle;
+ bool mHasOnlyFixedBars;
+ int mNotFixedBarsCnt;
- int mRowWidth;
- int mRowHeight;
- int mRowY;
+ int mRowWidth;
+ int mRowHeight;
+ int mRowY;
- // stores precalculated row's bounds in parent frame's coordinates
- wxRect mBoundsInParent;
+ // stores precalculated row's bounds in parent frame's coordinates
+ wxRect mBoundsInParent;
- // info stored for updates-manager
- cbUpdateMgrData mUMgrData;
+ // info stored for updates-manager
+ cbUpdateMgrData mUMgrData;
- cbRowInfo* mpNext;
- cbRowInfo* mpPrev;
+ cbRowInfo* mpNext;
+ cbRowInfo* mpPrev;
- cbBarInfo* mpExpandedBar; // NULL, if non of the bars is currently expanded
+ cbBarInfo* mpExpandedBar; // NULL, if non of the bars is currently expanded
- cbArrayFloat mSavedRatios; // length-ratios bofore some of the bars was expanded
+ cbArrayFloat mSavedRatios; // length-ratios bofore some of the bars was expanded
public:
- cbRowInfo(void);
+ // Constructor.
+
+ cbRowInfo(void);
- ~cbRowInfo();
+ // Destructor.
- // convenience method
+ ~cbRowInfo();
- inline cbBarInfo* GetFirstBar()
+ // Returns the first bar.
- { return mBars.GetCount() ? mBars[0] : NULL; }
+ inline cbBarInfo* GetFirstBar()
+
+ { return mBars.GetCount() ? mBars[0] : NULL; }
};
+/*
+Helper class used internally by the wxFrameLayout class.
+Holds and manages bar information.
+*/
+
class cbBarInfo : public wxObject
{
- DECLARE_DYNAMIC_CLASS( cbBarInfo )
+ DECLARE_DYNAMIC_CLASS( cbBarInfo )
public:
- // textual name, by which this bar is refered in layout-customization dialogs
- wxString mName;
+ // textual name, by which this bar is refered in layout-customization dialogs
+ wxString mName;
- // stores bar's bounds in pane's coordinates
- wxRect mBounds;
+ // stores bar's bounds in pane's coordinates
+ wxRect mBounds;
- // stores precalculated bar's bounds in parent frame's coordinates
- wxRect mBoundsInParent;
+ // stores precalculated bar's bounds in parent frame's coordinates
+ wxRect mBoundsInParent;
- // back-ref to the row, which contains this bar
- cbRowInfo* mpRow;
+ // back-ref to the row, which contains this bar
+ cbRowInfo* mpRow;
- // are set up according to the types of the surrounding bars in the row
- bool mHasLeftHandle;
- bool mHasRightHandle;
+ // are set up according to the types of the surrounding bars in the row
+ bool mHasLeftHandle;
+ bool mHasRightHandle;
- cbDimInfo mDimInfo; // preferred sizes for each, control bar state
+ cbDimInfo mDimInfo; // preferred sizes for each, control bar state
- int mState; // (see definition of controlbar states)
+ int mState; // (see definition of controlbar states)
- int mAlignment; // alignment of the pane to which this
- // bar is currently placed
+ int mAlignment; // alignment of the pane to which this
+ // bar is currently placed
- int mRowNo; // row, into which this bar would be placed,
- // when in the docking state
+ int mRowNo; // row, into which this bar would be placed,
+ // when in the docking state
- wxWindow* mpBarWnd; // the actual window object, NULL if no window
- // is attached to the control bar (possible!)
+ wxWindow* mpBarWnd; // the actual window object, NULL if no window
+ // is attached to the control bar (possible!)
- double mLenRatio; // length ratio among not-fixed-size bars
+ double mLenRatio; // length ratio among not-fixed-size bars
- wxPoint mPosIfFloated; // stored last position when bar was in "floated" state
- // poistion is stored in parent-window's coordinates
+ wxPoint mPosIfFloated; // stored last position when bar was in "floated" state
+ // poistion is stored in parent-window's coordinates
- cbUpdateMgrData mUMgrData; // info stored for updates-manager
+ cbUpdateMgrData mUMgrData; // info stored for updates-manager
- cbBarInfo* mpNext; // next. bar in the row
- cbBarInfo* mpPrev; // prev. bar in the row
+ cbBarInfo* mpNext; // next. bar in the row
+ cbBarInfo* mpPrev; // prev. bar in the row
public:
- cbBarInfo(void);
+ // Constructor.
+
+ cbBarInfo(void);
+
+ // Destructor.
- ~cbBarInfo();
+ ~cbBarInfo();
- inline bool IsFixed() const { return mDimInfo.mIsFixed; }
+ // Returns TRUE if this bar is fixed.
- inline bool IsExpanded() const { return this == mpRow->mpExpandedBar; }
+ inline bool IsFixed() const { return mDimInfo.mIsFixed; }
+
+ // Returns TRUE if this bar is expanded.
+
+ inline bool IsExpanded() const { return this == mpRow->mpExpandedBar; }
};
-// used for storing original bar's postions in the row, when the "non-destructive-friction"
-// option is turned ON
+/*
+Used for storing the original bar's positions in the row, when the 'non-destructive-friction'
+option is turned on.
+*/
class cbBarShapeData : public wxObject
{
public:
- wxRect mBounds;
- double mLenRatio;
+ wxRect mBounds;
+ double mLenRatio;
};
-// used for traversing through all bars of all rows in the pane
+/*
+Used for traversing through all bars of all rows in the pane.
+*/
class wxBarIterator
{
- RowArrayT* mpRows;
- cbRowInfo* mpRow;
- cbBarInfo* mpBar;
+ RowArrayT* mpRows;
+ cbRowInfo* mpRow;
+ cbBarInfo* mpBar;
public:
- wxBarIterator( RowArrayT& rows );
+ // Constructor, taking row array.
+
+ wxBarIterator( RowArrayT& rows );
+
+ // Resets the iterator to the start of the first row.
+
+ void Reset();
- void Reset();
- bool Next(); // TRUE, if next bar is available
+ // Advances the iterator and returns TRUE if a bar is available.
- cbBarInfo& BarInfo();
+ bool Next();
- // returns reference to currently traversed row
- cbRowInfo& RowInfo();
+ // Gets the current bar information.
+
+ cbBarInfo& BarInfo();
+
+ // Returns a reference to the currently traversed row.
+
+ cbRowInfo& RowInfo();
};
-/* structure holds configuration options,
- * which are usually the same for all panes in
- * frame layout
- */
+/*
+A structure holding configuration options,
+which are usually the same for all panes in
+a frame layout.
+*/
class cbCommonPaneProperties : public wxObject
{
- DECLARE_DYNAMIC_CLASS( cbCommonPaneProperties )
+ DECLARE_DYNAMIC_CLASS( cbCommonPaneProperties )
+
+ // look-and-feel configuration
- // look-and-feel configuration
+ bool mRealTimeUpdatesOn; // default: ON
+ bool mOutOfPaneDragOn; // default: ON
+ bool mExactDockPredictionOn; // default: OFF
+ bool mNonDestructFirctionOn; // default: OFF
- bool mRealTimeUpdatesOn; // default: ON
- bool mOutOfPaneDragOn; // default: ON
- bool mExactDockPredictionOn; // default: OFF
- bool mNonDestructFirctionOn; // default: OFF
+ bool mShow3DPaneBorderOn; // default: ON
- bool mShow3DPaneBorderOn; // default: ON
+ // FOR NOW:: the below properties are reserved for the "future"
- // FOR NOW:: the below properties are reserved for the "future"
+ bool mBarFloatingOn; // default: OFF
+ bool mRowProportionsOn; // default: OFF
+ bool mColProportionsOn; // default: ON
+ bool mBarCollapseIconsOn; // default: OFF
+ bool mBarDragHintsOn; // default: OFF
- bool mBarFloatingOn; // default: OFF
- bool mRowProportionsOn; // default: OFF
- bool mColProportionsOn; // default: ON
- bool mBarCollapseIconsOn; // default: OFF
- bool mBarDragHintsOn; // default: OFF
+ // minimal dimensions for not-fixed bars in this pane (16x16 default)
- // minimal dimensions for not-fixed bars in this pane (16x16 default)
+ wxSize mMinCBarDim;
- wxSize mMinCBarDim;
+ // width/height of resizing sash
- // width/height of resizing sash
+ int mResizeHandleSize;
- int mResizeHandleSize;
+ // Default constructor.
- cbCommonPaneProperties(void);
+ cbCommonPaneProperties(void);
};
-/* class manages containment and control of control-bars
- * along one of the four edges of the parent frame
- */
+/*
+This class manages containment and control of control bars
+along one of the four edges of the parent frame.
+*/
class cbDockPane : public wxObject
{
public:
- DECLARE_DYNAMIC_CLASS( cbDockPane )
+ DECLARE_DYNAMIC_CLASS( cbDockPane )
- // look-and-feel configuration for this pane
- cbCommonPaneProperties mProps;
+ // look-and-feel configuration for this pane
+ cbCommonPaneProperties mProps;
- // pane margins (in frame's coordinate-syst. orientation)
+ // pane margins (in frame's coordinate-syst. orientation)
- int mLeftMargin; // default: 2 pixels
- int mRightMargin; // default: 2 pixels
- int mTopMargin; // default: 2 pixels
- int mBottomMargin; // default: 2 pixels
+ int mLeftMargin; // default: 2 pixels
+ int mRightMargin; // default: 2 pixels
+ int mTopMargin; // default: 2 pixels
+ int mBottomMargin; // default: 2 pixels
public:
- // position of the pane in frame's coordinates
- wxRect mBoundsInParent;
+ // position of the pane in frame's coordinates
+ wxRect mBoundsInParent;
- // pane width and height in pane's coordinates
- int mPaneWidth;
- int mPaneHeight;
+ // pane width and height in pane's coordinates
+ int mPaneWidth;
+ int mPaneHeight;
- int mAlignment;
+ int mAlignment;
- // info stored for updates-manager
- cbUpdateMgrData mUMgrData;
+ // info stored for updates-manager
+ cbUpdateMgrData mUMgrData;
public: /* protected really */
- RowArrayT mRows;
- wxFrameLayout* mpLayout; // back-ref
+ RowArrayT mRows;
+ wxFrameLayout* mpLayout; // back-ref
- // transient properties
+ // transient properties
- wxList mRowShapeData; // shapes of bars of recently modified row,
- // stored when in "non-destructive-firction" mode
- cbRowInfo* mpStoredRow; // row-info for which the shapes are stored
+ wxList mRowShapeData; // shapes of bars of recently modified row,
+ // stored when in "non-destructive-firction" mode
+ cbRowInfo* mpStoredRow; // row-info for which the shapes are stored
- friend class wxFrameLayout;
+ friend class wxFrameLayout;
public: /* protected really (accessed only by plugins) */
- cbRowInfo* GetRow( int row );
+ // Returns the row info for a row index. Internal function called by plugins.
+
+ cbRowInfo* GetRow( int row );
+
+ // Returns the row index for the given row info. Internal function called by plugins.
+
+ int GetRowIndex( cbRowInfo* pRow );
+
+ // Returns the row at the given vertical position.
+ // Returns -1 if the row is not present at given vertical position.
+ // Internal function called by plugins.
+
+ int GetRowAt( int paneY );
+
+ // Returns the row between the given vertical positions.
+ // Returns -1 if the row is not present.
+ // Internal function called by plugins.
+
+ int GetRowAt( int upperY, int lowerY );
+
+ // Sets up flags in the row information structure, so that
+ // they match the changed state of row items correctly.
+ // Internal function called by plugins.
+
+ void SyncRowFlags( cbRowInfo* pRow );
+
+ // Returns TRUE if the bar's dimension information indicates a fixed size.
+ // Internal function called by plugins.
+
+ bool IsFixedSize( cbBarInfo* pInfo );
+
+ // Returns the number of bars whose size is not fixed.
+ // Internal function called by plugins.
+
+ int GetNotFixedBarsCount( cbRowInfo* pRow );
+
+ // Gets the vertical position at the given row.
+ // Internal function called by plugins.
+
+ int GetRowY( cbRowInfo* pRow );
+
+ // Returns TRUE if there are any variable-sized rows above this one.
+ // Internal function called by plugins.
+
+ bool HasNotFixedRowsAbove( cbRowInfo* pRow );
+
+ // Returns TRUE if there are any variable-sized rows below this one.
+ // Internal function called by plugins.
+
+ bool HasNotFixedRowsBelow( cbRowInfo* pRow );
+
+ // Returns TRUE if there are any variable-sized rows to the left of this one.
+ // Internal function called by plugins.
+
+ bool HasNotFixedBarsLeft ( cbBarInfo* pBar );
+
+ // Returns TRUE if there are any variable-sized rows to the right of this one.
+ // Internal function called by plugins.
- int GetRowIndex( cbRowInfo* pRow );
+ bool HasNotFixedBarsRight( cbBarInfo* pBar );
- // return -1, if row is not present at given vertical position
- int GetRowAt( int paneY );
- int GetRowAt( int upperY, int lowerY );
+ // Calculate lengths.
+ // Internal function called by plugins.
- // re-setups flags in the row-information structure, so that
- // the would match the changed state of row-items correctly
- void SyncRowFlags( cbRowInfo* pRow );
+ virtual void CalcLengthRatios( cbRowInfo* pInRow );
- // layout "AI" helpers:
+ // Generates a cbLayoutRowEvent event to recalculate row layouts.
+ // Internal function called by plugins.
- bool IsFixedSize( cbBarInfo* pInfo );
- int GetNotFixedBarsCount( cbRowInfo* pRow );
+ virtual void RecalcRowLayout( cbRowInfo* pRow );
- int GetRowWidth( wxList* pRow );
+ // Expands the bar.
+ // Internal function called by plugins.
- int GetRowY( cbRowInfo* pRow );
+ virtual void ExpandBar( cbBarInfo* pBar );
- bool HasNotFixedRowsAbove( cbRowInfo* pRow );
- bool HasNotFixedRowsBelow( cbRowInfo* pRow );
- bool HasNotFixedBarsLeft ( cbBarInfo* pBar );
- bool HasNotFixedBarsRight( cbBarInfo* pBar );
+ // Contracts the bar.
+ // Internal function called by plugins.
- virtual void CalcLengthRatios( cbRowInfo* pInRow );
- virtual void RecalcRowLayout( cbRowInfo* pRow );
+ virtual void ContractBar( cbBarInfo* pBar );
- virtual void ExpandBar( cbBarInfo* pBar );
- virtual void ContractBar( cbBarInfo* pBar );
+ // Sets up links between bars.
+ // Internal function called by plugins.
- void InitLinksForRow( cbRowInfo* pRow );
- void InitLinksForRows();
+ void InitLinksForRow( cbRowInfo* pRow );
- // coordinate translation between parent's frame and this pane
+ // Sets up links between bars.
+ // Internal function called by plugins.
- void FrameToPane( int* x, int* y );
- void PaneToFrame( int* x, int* y );
- void FrameToPane( wxRect* pRect );
- void PaneToFrame( wxRect* pRect );
+ void InitLinksForRows();
- inline bool HasPoint( const wxPoint& pos, int x, int y, int width, int height );
+ // Coordinate translation between parent's frame and this pane.
+ // Internal function called by plugins.
- int GetMinimalRowHeight( cbRowInfo* pRow );
+ void FrameToPane( int* x, int* y );
- // given row height includes height of row handles, if present
- void SetRowHeight( cbRowInfo* pRow, int newHeight );
+ // Coordinate translation between parent's frame and this pane.
+ // Internal function called by plugins.
- void DoInsertBar( cbBarInfo* pBar, int rowNo );
+ void PaneToFrame( int* x, int* y );
+
+ // Coordinate translation between parent's frame and this pane.
+ // Internal function called by plugins.
+
+ void FrameToPane( wxRect* pRect );
+
+ // Coordinate translation between parent's frame and this pane.
+ // Internal function called by plugins.
+
+ void PaneToFrame( wxRect* pRect );
+
+ // Returns TRUE if pos is within the given rectangle.
+ // Internal function called by plugins.
+
+ inline bool HasPoint( const wxPoint& pos, int x, int y, int width, int height );
+
+ // Returns the minimal row height for the given row.
+ // Internal function called by plugins.
+
+ int GetMinimalRowHeight( cbRowInfo* pRow );
+
+ // Sets the row height for the given height. newHeight includes the height of row handles, if present.
+ // Internal function called by plugins.
+
+ void SetRowHeight( cbRowInfo* pRow, int newHeight );
+
+ // Inserts the bar at the given row number.
+ // Internal function called by plugins.
+
+ void DoInsertBar( cbBarInfo* pBar, int rowNo );
public: /* protected really (accessed only by plugins) */
- // methods for incramental on-screen refreshing of the pane
- // (simply, they are wrappers around corresponding plugin-events)
-
- virtual void PaintBarDecorations( cbBarInfo* pBar, wxDC& dc );
- virtual void PaintBarHandles( cbBarInfo* pBar, wxDC& dc );
- virtual void PaintBar( cbBarInfo* pBar, wxDC& dc );
- virtual void PaintRowHandles( cbRowInfo* pRow, wxDC& dc );
- virtual void PaintRowBackground ( cbRowInfo* pRow, wxDC& dc );
- virtual void PaintRowDecorations( cbRowInfo* pRow, wxDC& dc );
- virtual void PaintRow( cbRowInfo* pRow, wxDC& dc );
- virtual void PaintPaneBackground( wxDC& dc );
- virtual void PaintPaneDecorations( wxDC& dc );
- virtual void PaintPane( wxDC& dc );
- virtual void SizeBar( cbBarInfo* pBar );
- virtual void SizeRowObjects( cbRowInfo* pRow );
- virtual void SizePaneObjects();
-
- virtual wxDC* StartDrawInArea ( const wxRect& area );
- virtual void FinishDrawInArea( const wxRect& area );
+ // Generates a cbDrawBarDecorEvent and sends it to the layout to paint the bar decorations.
+ // Internal function called by plugins.
+
+ virtual void PaintBarDecorations( cbBarInfo* pBar, wxDC& dc );
+
+ // Generates a cbDrawBarHandlesEvent and sends it to the layout to paint the bar handles.
+ // Internal function called by plugins.
+
+ virtual void PaintBarHandles( cbBarInfo* pBar, wxDC& dc );
+
+ // Calls PaintBarDecorations and PaintBarHandles.
+ // Internal function called by plugins.
+
+ virtual void PaintBar( cbBarInfo* pBar, wxDC& dc );
+
+ // Generates cbDrawRowHandlesEvent and cbDrawRowDecorEvent and sends them to the layout.
+ // Internal function called by plugins.
+
+ virtual void PaintRowHandles( cbRowInfo* pRow, wxDC& dc );
+
+ // Generates cbDrawRowBkGroundEvent and sends it to the layout.
+ // Internal function called by plugins.
+
+ virtual void PaintRowBackground ( cbRowInfo* pRow, wxDC& dc );
+
+ // Calls PaintBarDecorations for each row.
+ // Internal function called by plugins.
+
+ virtual void PaintRowDecorations( cbRowInfo* pRow, wxDC& dc );
+
+ // Calls PaintRowBackground, PaintRowDecorations, PaintRowHandles.
+ // Internal function called by plugins.
+
+ virtual void PaintRow( cbRowInfo* pRow, wxDC& dc );
+
+ // Generates cbDrawPaneBkGroundEvent and sends it to the layout.
+ // Internal function called by plugins.
+
+ virtual void PaintPaneBackground( wxDC& dc );
+
+ // Generates cbDrawPaneDecorEvent and sends it to the layout.
+ // Internal function called by plugins.
+
+ virtual void PaintPaneDecorations( wxDC& dc );
+
+ // Paints the pane background, the row background and decorations,
+ // and finally the pane decorations.
+ // Internal function called by plugins.
+
+ virtual void PaintPane( wxDC& dc );
+
+ // Generates a cbSizeBarWndEvent and sends it to the layout.
+ // Internal function called by plugins.
+
+ virtual void SizeBar( cbBarInfo* pBar );
+
+ // Calls SizeBar for each bar in the row.
+ // Internal function called by plugins.
+
+ virtual void SizeRowObjects( cbRowInfo* pRow );
+
+ // Calls SizeRowObjects for each row.
+ // Internal function called by plugins.
+
+ virtual void SizePaneObjects();
+
+ // Generates cbStartDrawInAreaEvent and sends it to the layout.
+ // Internal function called by plugins.
+
+ virtual wxDC* StartDrawInArea ( const wxRect& area );
+
+ // Generates cbFinishDrawInAreaEvent and sends it to the layout.
+ // Internal function called by plugins.
+
+ virtual void FinishDrawInArea( const wxRect& area );
public: /* public members */
- cbDockPane(void);
+ // Default constructor.
+
+ cbDockPane(void);
+
+ // Constructor, taking alignment and layout panel.
+
+ cbDockPane( int alignment, wxFrameLayout* pPanel );
+
+ // Sets pane's margins in frame's coordinate orientations.
+
+ void SetMargins( int top, int bottom, int left, int right );
+
+ // Destructor.
+
+ virtual ~cbDockPane();
+
+ // Removes the bar from this pane. Does not destroy the bar.
+
+ virtual void RemoveBar( cbBarInfo* pBar );
+
+ // Inserts the bar into this pane. rect is given in the parent frame's coordinates.
+
+ virtual void InsertBar( cbBarInfo* pBar, const wxRect& rect );
- cbDockPane( int alignment, wxFrameLayout* pPanel );
+ // Inserts the bar into the given row, with dimensions and position
+ // stored in pBarInfo->mBounds. Returns the node of inserted bar.
- // sets pane's margins in frame's coordinate orientations
- void SetMargins( int top, int bottom, int left, int right );
+ virtual void InsertBar( cbBarInfo* pBar, cbRowInfo* pIntoRow );
- virtual ~cbDockPane();
+ // Inserts bar and sets its position according to the preferred settings
+ // given in pBarInfo.
- // does not destroys the info bar , only removes it's reference
- // from this pane
+ virtual void InsertBar( cbBarInfo* pBarInfo );
- virtual void RemoveBar( cbBarInfo* pBar );
+ // Removes the row from this pane. Does not destroy the row object.
- // rect given in the parent frame's coordinates
+ virtual void RemoveRow( cbRowInfo* pRow );
- virtual void InsertBar( cbBarInfo* pBar, const wxRect& atRect );
+ // Inserts a row. Does not refresh the inserted row immediately.
+ // If pBeforeRowNode is NULL, the row is appended to the end of pane's row list.
- // inserts bar into the given row, with dimensions and position
- // stored in pBarInfo->mBounds. Returns the node of inserted bar
+ virtual void InsertRow( cbRowInfo* pRow, cbRowInfo* pBeforeRow );
- virtual void InsertBar( cbBarInfo* pBar, cbRowInfo* pIntoRow );
+ // Sets pane's width in the pane's coordinates (including margins).
- // inserts bar, sets its position according to the preferred settings
- // given in (*pBarInfo) structure
+ void SetPaneWidth(int width);
- virtual void InsertBar( cbBarInfo* pBarInfo );
+ // Set the position and dimensions of the pane in the parent frame's coordinates.
- // does not destroy the row object, only removes the corresponding
- // node from this pane
- virtual void RemoveRow( cbRowInfo* pRow );
+ void SetBoundsInParent( const wxRect& rect );
- // does not refresh the inserted row immediately,
- // if pBeforeRowNode arg. is NULL, row is appended to the end of pane's row list
- virtual void InsertRow( cbRowInfo* pRow, cbRowInfo* pBeforeRow );
+ // Returns the bounds of the pane, in parent coordinates.
- // sets pane's width in pane's coordinates (including margins)
- void SetPaneWidth(int width);
+ inline wxRect& GetRealRect() { return mBoundsInParent; }
- // set the position and dims. of the pane in parent frame's coordinates
- void SetBoundsInParent( const wxRect& rect );
+ // Returns an array of rows. Used by updates-managers.
- inline wxRect& GetRealRect() { return mBoundsInParent; }
+ inline RowArrayT& GetRowList() { return mRows; }
- // used by updates-managers
- inline RowArrayT& GetRowList() { return mRows; }
+ // Returns the first row.
- // convenience method
+ inline cbRowInfo* GetFirstRow()
- inline cbRowInfo* GetFirstRow()
+ { return mRows.GetCount() ? mRows[0] : NULL; }
- { return mRows.GetCount() ? mRows[0] : NULL; }
+ // Returns TRUE if the given bar is present in this pane.
- // TRUE, if the given bar node presents in this pane
+ bool BarPresent( cbBarInfo* pBar );
- bool BarPresent( cbBarInfo* pBar );
+ // Returns the height in the pane's coordinates.
- // retuns height, in pane's coordinates
- int GetPaneHeight();
+ int GetPaneHeight();
- int GetAlignment();
+ // Returns the alignment for this pane. The value is one of
+ // FL_ALIGN_TOP, FL_ALIGN_BOTTOM, FL_ALIGN_LEFT, FL_ALIGN_RIGHT.
- bool MatchesMask( int paneMask );
+ int GetAlignment();
- inline bool IsHorizontal()
- {
- return (mAlignment == FL_ALIGN_TOP ||
- mAlignment == FL_ALIGN_BOTTOM );
- }
+ // Returns TRUE if the given mask matches the pane's mask.
- virtual void RecalcLayout();
+ bool MatchesMask( int paneMask );
- virtual int GetDockingState();
+ // Returns TRUE if the pane is aligned to the top or bottom.
- // returns result of hit-testing items in the pane,
- // see CB_HITTEST_RESULTS enumeration
+ inline bool IsHorizontal()
+ {
+ return (mAlignment == FL_ALIGN_TOP ||
+ mAlignment == FL_ALIGN_BOTTOM );
+ }
- virtual int HitTestPaneItems( const wxPoint& pos, // position in pane's coordinates
- cbRowInfo** ppRow,
- cbBarInfo** ppBar
- );
+ // Generates events to perform layout calculations.
- void GetBarResizeRange( cbBarInfo* pBar, int* from, int *till, bool forLeftHandle );
- void GetRowResizeRange( cbRowInfo* pRow, int* from, int* till, bool forUpperHandle );
+ virtual void RecalcLayout();
- cbBarInfo* GetBarInfoByWindow( wxWindow* pBarWnd );
+ // Returns wxCBAR_DOCKED_HORIZONTALLY if the alignment is top or bottom,
+ // or wxCBAR_DOCKED_VERTICALLY otherwise.
+
+ virtual int GetDockingState();
+
+ // Returns the result of hit-testing items in the pane.
+ // See CB_HITTEST_RESULT enumerated type.
+ // pos is the position in this pane's coordinates.
+
+ virtual int HitTestPaneItems( const wxPoint& pos,
+ cbRowInfo** ppRow,
+ cbBarInfo** ppBar
+ );
+
+ // Returns the bar's resize range.
+
+ void GetBarResizeRange( cbBarInfo* pBar, int* from, int *till, bool forLeftHandle );
+
+ // Returns the row's resize range.
+
+ void GetRowResizeRange( cbRowInfo* pRow, int* from, int* till, bool forUpperHandle );
+
+ // Finds the bar information by corresponding window.
+
+ cbBarInfo* GetBarInfoByWindow( wxWindow* pBarWnd );
public: /* protected really (accessed only by plugins) */
- // row/bar resizing related helper-methods
+ // Row/bar resizing related helper-method.
- void DrawVertHandle ( wxDC& dc, int x, int y, int height );
- void DrawHorizHandle( wxDC& dc, int x, int y, int width );
+ void DrawVertHandle ( wxDC& dc, int x, int y, int height );
- void ResizeRow( cbRowInfo* pRow, int ofs, bool forUpperHandle );
- void ResizeBar( cbBarInfo* pBar, int ofs, bool forLeftHandle );
+ // Row/bar resizing related helper-method.
- // cbBarShapeData objects will be placed to given pLst (see comments on cbBarShapeData)
+ void DrawHorizHandle( wxDC& dc, int x, int y, int width );
- void GetRowShapeData( cbRowInfo* pRow, wxList* pLst );
+ // Row/bar resizing related helper-method.
- // sets the shape to the given row, using the data provided in pLst
- void SetRowShapeData( cbRowInfo* pRowNode, wxList* pLst );
+ void ResizeRow( cbRowInfo* pRow, int ofs, bool forUpperHandle );
+
+ // Row/bar resizing related helper-method.
+
+ void ResizeBar( cbBarInfo* pBar, int ofs, bool forLeftHandle );
+
+ // Returns row shape data.
+ // cbBarShapeData objects will be added to the given pLst.
+ // cbBarShapeData is used for storing the original bar's positions in the row,
+ // when the 'non-destructive-friction' option is turned on.
+
+ void GetRowShapeData( cbRowInfo* pRow, wxList* pLst );
+
+ // Sets the shape data for the given row, using the data provided in pLst.
+ // cbBarShapeData is used for storing the original bar's positions in the row,
+ // when the 'non-destructive-friction' option is turned on.
+
+ void SetRowShapeData( cbRowInfo* pRowNode, wxList* pLst );
};
/*
- * class declares abstract interface for optimized logic, which should refresh
- * areas of frame layout - that actually need to be updated. Should be extended,
- * to implement custom updating strategy
- */
+This class declares an abstract interface for optimized logic that should refresh
+areas of frame layout that actually need to be updated. This should be extended in future
+to implement a custom updating strategy.
+*/
class cbUpdatesManagerBase : public wxObject
{
- DECLARE_ABSTRACT_CLASS( cbUpdatesManagerBase )
+ DECLARE_ABSTRACT_CLASS( cbUpdatesManagerBase )
public: /* protected really, accessed by serializer (if any) */
- wxFrameLayout* mpLayout;
+ wxFrameLayout* mpLayout;
public:
- cbUpdatesManagerBase(void)
- : mpLayout( 0 ) {}
+ // Default constructor
- cbUpdatesManagerBase( wxFrameLayout* pPanel )
- : mpLayout( pPanel ) {}
+ cbUpdatesManagerBase(void)
+ : mpLayout( 0 ) {}
- virtual ~cbUpdatesManagerBase() {}
+ // Constructor taking layout panel.
- void SetLayout( wxFrameLayout* pLayout ) { mpLayout = pLayout; }
+ cbUpdatesManagerBase( wxFrameLayout* pPanel )
+ : mpLayout( pPanel ) {}
- // notificiactions received from frame-layout (in the order, in which
- // they usually would be invoked). Custom updates-managers may utilize
- // these notifications to implement more "fine-grained" updating strategy
+ // Destructor.
- virtual void OnStartChanges() = 0;
+ virtual ~cbUpdatesManagerBase() {}
- virtual void OnRowWillChange( cbRowInfo* pRow, cbDockPane* pInPane ) {}
- virtual void OnBarWillChange( cbBarInfo* pBar, cbRowInfo* pInRow, cbDockPane* pInPane ) {}
- virtual void OnPaneMarginsWillChange( cbDockPane* pPane ) {}
- virtual void OnPaneWillChange( cbDockPane* pPane ) {}
+ // Sets the associated layout.
- virtual void OnFinishChanges() {}
+ void SetLayout( wxFrameLayout* pLayout ) { mpLayout = pLayout; }
- // refreshes parts of the frame layout, which need an update
- virtual void UpdateNow() = 0;
-};
+ // This function receives a notification from the frame layout (in the order in which
+ // they would usually be invoked). Custom updates-managers may utilize
+ // these notifications to implement a more fine-grained updating strategy.
-/*------------------------------------------------------------
- * "API" for developing custom plugins of Frame Layout Engine
- * TODO:: documentation
- *------------------------------------------------------------
- */
+ virtual void OnStartChanges() = 0;
-// base class for all control-bar plugin events
+ // This function receives a notification from the frame layout (in the order in which
+ // they would usually be invoked). Custom updates-managers may utilize
+ // these notifications to implement a more fine-grained updating strategy.
-class cbPluginEvent : public wxEvent
-{
- // NOTE:: plugin-event does not need to be a dynamic class
+ virtual void OnRowWillChange( cbRowInfo* pRow, cbDockPane* pInPane ) {}
-public:
- cbDockPane* mpPane; // NULL, if event is not addressed to any specific pane
-
- /* OLD STUFF::
- // FOR NOW FOR NOW:: all-in-one plugin event structure
- wxNode* mpObjNode;
- wxNode* mpObjNodeAux;
- wxPoint mPos;
- wxSize mSize;
- wxDC* mpDC;
- bool mAuxBoolVal;
- */
-
- // Not used, but required
- virtual wxEvent* Clone() const { return NULL; }
+ // This function receives a notification from the frame layout (in the order in which
+ // they would usually be invoked). Custom updates-managers may utilize
+ // these notifications to implement a more fine-grained updating strategy.
-#if wxCHECK_VERSION(2,3,0)
- cbPluginEvent( wxEventType eventType, cbDockPane* pPane )
- : mpPane( pPane )
+ virtual void OnBarWillChange( cbBarInfo* pBar, cbRowInfo* pInRow, cbDockPane* pInPane ) {}
- { m_eventType = eventType; }
-#else
- cbPluginEvent( int eventType, cbDockPane* pPane )
- : mpPane( pPane )
+ // This function receives a notification from the frame layout (in the order in which
+ // they would usually be invoked). Custom updates-managers may utilize
+ // these notifications to implement a more fine-grained updating strategy.
- { m_eventType = eventType; }
-#endif
-};
+ virtual void OnPaneMarginsWillChange( cbDockPane* pPane ) {}
-// event types handled by plugins
+ // This function receives a notification from the frame layout (in the order in which
+ // they would usually be invoked). Custom updates-managers may utilize
+ // these notifications to implement a more fine-grained updating strategy.
+
+ virtual void OnPaneWillChange( cbDockPane* pPane ) {}
+
+ // This function receives a notification from the frame layout (in the order in which
+ // they would usually be invoked). Custom updates-managers may utilize
+ // these notifications to implement a more fine-grained updating strategy.
-#if wxCHECK_VERSION(2,3,0)
+ virtual void OnFinishChanges() {}
- extern wxEventType cbEVT_PL_LEFT_DOWN;
- extern wxEventType cbEVT_PL_LEFT_UP;
- extern wxEventType cbEVT_PL_RIGHT_DOWN;
- extern wxEventType cbEVT_PL_RIGHT_UP;
- extern wxEventType cbEVT_PL_MOTION;
+ // Refreshes parts of the frame layout that need an update.
- extern wxEventType cbEVT_PL_LEFT_DCLICK;
+ virtual void UpdateNow() = 0;
+};
- extern wxEventType cbEVT_PL_LAYOUT_ROW;
- extern wxEventType cbEVT_PL_RESIZE_ROW;
- extern wxEventType cbEVT_PL_LAYOUT_ROWS;
- extern wxEventType cbEVT_PL_INSERT_BAR;
- extern wxEventType cbEVT_PL_RESIZE_BAR;
- extern wxEventType cbEVT_PL_REMOVE_BAR;
- extern wxEventType cbEVT_PL_SIZE_BAR_WND;
+/*
+Base class for all control-bar plugin events.
+This is not a dynamically-creatable class.
+*/
- extern wxEventType cbEVT_PL_DRAW_BAR_DECOR;
- extern wxEventType cbEVT_PL_DRAW_ROW_DECOR;
- extern wxEventType cbEVT_PL_DRAW_PANE_DECOR;
- extern wxEventType cbEVT_PL_DRAW_BAR_HANDLES;
- extern wxEventType cbEVT_PL_DRAW_ROW_HANDLES;
- extern wxEventType cbEVT_PL_DRAW_ROW_BKGROUND;
- extern wxEventType cbEVT_PL_DRAW_PANE_BKGROUND;
+class cbPluginEvent : public wxEvent
+{
+public:
+ // NULL if event is not addressed to any specific pane.
- extern wxEventType cbEVT_PL_START_BAR_DRAGGING;
- extern wxEventType cbEVT_PL_DRAW_HINT_RECT;
+ cbDockPane* mpPane;
- extern wxEventType cbEVT_PL_START_DRAW_IN_AREA;
- extern wxEventType cbEVT_PL_FINISH_DRAW_IN_AREA;
+ // Not used, but required.
- extern wxEventType cbEVT_PL_CUSTOMIZE_BAR;
- extern wxEventType cbEVT_PL_CUSTOMIZE_LAYOUT;
+ virtual wxEvent* Clone() const { return NULL; }
- extern wxEventType wxCUSTOM_CB_PLUGIN_EVENTS_START_AT;
+ // Constructor, taking event type and pane.
-#else
+ cbPluginEvent( wxEventType eventType, cbDockPane* pPane )
+ : mpPane( pPane )
- #define cbEVT_PL_LEFT_DOWN 0
- #define cbEVT_PL_LEFT_UP 1
- #define cbEVT_PL_RIGHT_DOWN 2
- #define cbEVT_PL_RIGHT_UP 3
- #define cbEVT_PL_MOTION 4
+ { m_eventType = eventType; }
+};
- #define cbEVT_PL_LEFT_DCLICK 5
+// event types handled by plugins
- #define cbEVT_PL_LAYOUT_ROW 6
- #define cbEVT_PL_RESIZE_ROW 7
- #define cbEVT_PL_LAYOUT_ROWS 8
- #define cbEVT_PL_INSERT_BAR 9
- #define cbEVT_PL_RESIZE_BAR 10
- #define cbEVT_PL_REMOVE_BAR 11
- #define cbEVT_PL_SIZE_BAR_WND 12
+extern wxEventType cbEVT_PL_LEFT_DOWN;
+extern wxEventType cbEVT_PL_LEFT_UP;
+extern wxEventType cbEVT_PL_RIGHT_DOWN;
+extern wxEventType cbEVT_PL_RIGHT_UP;
+extern wxEventType cbEVT_PL_MOTION;
- #define cbEVT_PL_DRAW_BAR_DECOR 13
- #define cbEVT_PL_DRAW_ROW_DECOR 14
- #define cbEVT_PL_DRAW_PANE_DECOR 15
- #define cbEVT_PL_DRAW_BAR_HANDLES 16
- #define cbEVT_PL_DRAW_ROW_HANDLES 17
- #define cbEVT_PL_DRAW_ROW_BKGROUND 18
- #define cbEVT_PL_DRAW_PANE_BKGROUND 19
+extern wxEventType cbEVT_PL_LEFT_DCLICK;
- #define cbEVT_PL_START_BAR_DRAGGING 20
- #define cbEVT_PL_DRAW_HINT_RECT 21
+extern wxEventType cbEVT_PL_LAYOUT_ROW;
+extern wxEventType cbEVT_PL_RESIZE_ROW;
+extern wxEventType cbEVT_PL_LAYOUT_ROWS;
+extern wxEventType cbEVT_PL_INSERT_BAR;
+extern wxEventType cbEVT_PL_RESIZE_BAR;
+extern wxEventType cbEVT_PL_REMOVE_BAR;
+extern wxEventType cbEVT_PL_SIZE_BAR_WND;
- #define cbEVT_PL_START_DRAW_IN_AREA 22
- #define cbEVT_PL_FINISH_DRAW_IN_AREA 23
+extern wxEventType cbEVT_PL_DRAW_BAR_DECOR;
+extern wxEventType cbEVT_PL_DRAW_ROW_DECOR;
+extern wxEventType cbEVT_PL_DRAW_PANE_DECOR;
+extern wxEventType cbEVT_PL_DRAW_BAR_HANDLES;
+extern wxEventType cbEVT_PL_DRAW_ROW_HANDLES;
+extern wxEventType cbEVT_PL_DRAW_ROW_BKGROUND;
+extern wxEventType cbEVT_PL_DRAW_PANE_BKGROUND;
- #define cbEVT_PL_CUSTOMIZE_BAR 24
- #define cbEVT_PL_CUSTOMIZE_LAYOUT 25
+extern wxEventType cbEVT_PL_START_BAR_DRAGGING;
+extern wxEventType cbEVT_PL_DRAW_HINT_RECT;
- #define wxCUSTOM_CB_PLUGIN_EVENTS_START_AT 100
+extern wxEventType cbEVT_PL_START_DRAW_IN_AREA;
+extern wxEventType cbEVT_PL_FINISH_DRAW_IN_AREA;
-#endif // wxCHECK_VERSION(2,3,0) else
+extern wxEventType cbEVT_PL_CUSTOMIZE_BAR;
+extern wxEventType cbEVT_PL_CUSTOMIZE_LAYOUT;
-// forward decls, separated by categories
+extern wxEventType wxCUSTOM_CB_PLUGIN_EVENTS_START_AT;
+
+// Forward declarations, separated by categories.
class cbLeftDownEvent;
class cbLeftUpEvent;
class cbCustomizeBarEvent;
class cbCustomizeLayoutEvent;
-// defs. for handler-methods
+// Definitions for for handler-methods.
typedef void (wxEvtHandler::*cbLeftDownHandler )(cbLeftDownEvent&);
typedef void (wxEvtHandler::*cbLeftUpHandler )(cbLeftUpEvent&);
typedef void (wxEvtHandler::*cbCustomizeBarHandler )(cbCustomizeBarEvent&);
typedef void (wxEvtHandler::*cbCustomizeLayoutHandler )(cbCustomizeLayoutEvent&);
-// macros for creating event table entries for plugin-events
-
-#if wxCHECK_VERSION(2,3,0)
- #define EVT_PL_LEFT_DOWN(func) wxEventTableEntry( cbEVT_PL_LEFT_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbLeftDownHandler ) & func, (wxObject *) NULL ),
- #define EVT_PL_LEFT_UP(func) wxEventTableEntry( cbEVT_PL_LEFT_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbLeftUpHandler ) & func, (wxObject *) NULL ),
- #define EVT_PL_RIGHT_DOWN(func) wxEventTableEntry( cbEVT_PL_RIGHT_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbRightDownHandler ) & func, (wxObject *) NULL ),
- #define EVT_PL_RIGHT_UP(func) wxEventTableEntry( cbEVT_PL_RIGHT_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbRightUpHandler ) & func, (wxObject *) NULL ),
- #define EVT_PL_MOTION(func) wxEventTableEntry( cbEVT_PL_MOTION, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbMotionHandler ) & func, (wxObject *) NULL ),
- #define EVT_PL_LEFT_DCLICK(func) wxEventTableEntry( cbEVT_PL_LEFT_DCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbLeftDClickHandler ) & func, (wxObject *) NULL ),
-
- #define EVT_PL_LAYOUT_ROW(func) wxEventTableEntry( cbEVT_PL_LAYOUT_ROW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbLayoutRowHandler ) & func, (wxObject *) NULL ),
- #define EVT_PL_RESIZE_ROW(func) wxEventTableEntry( cbEVT_PL_RESIZE_ROW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbResizeRowHandler ) & func, (wxObject *) NULL ),
- #define EVT_PL_LAYOUT_ROWS(func) wxEventTableEntry( cbEVT_PL_LAYOUT_ROWS, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbLayoutRowsHandler ) & func, (wxObject *) NULL ),
- #define EVT_PL_INSERT_BAR(func) wxEventTableEntry( cbEVT_PL_INSERT_BAR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbInsertBarHandler ) & func, (wxObject *) NULL ),
- #define EVT_PL_RESIZE_BAR(func) wxEventTableEntry( cbEVT_PL_RESIZE_BAR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbResizeBarHandler ) & func, (wxObject *) NULL ),
- #define EVT_PL_REMOVE_BAR(func) wxEventTableEntry( cbEVT_PL_REMOVE_BAR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbRemoveBarHandler ) & func, (wxObject *) NULL ),
- #define EVT_PL_SIZE_BAR_WND(func) wxEventTableEntry( cbEVT_PL_SIZE_BAR_WND, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbSizeBarWndHandler ) & func, (wxObject *) NULL ),
-
- #define EVT_PL_DRAW_BAR_DECOR(func) wxEventTableEntry( cbEVT_PL_DRAW_BAR_DECOR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawBarDecorHandler ) & func, (wxObject *) NULL ),
- #define EVT_PL_DRAW_ROW_DECOR(func) wxEventTableEntry( cbEVT_PL_DRAW_ROW_DECOR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawRowDecorHandler ) & func, (wxObject *) NULL ),
- #define EVT_PL_DRAW_PANE_DECOR(func) wxEventTableEntry( cbEVT_PL_DRAW_PANE_DECOR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawPaneDecorHandler ) & func, (wxObject *) NULL ),
- #define EVT_PL_DRAW_BAR_HANDLES(func) wxEventTableEntry( cbEVT_PL_DRAW_BAR_HANDLES, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawBarHandlesHandler ) & func, (wxObject *) NULL ),
- #define EVT_PL_DRAW_ROW_HANDLES(func) wxEventTableEntry( cbEVT_PL_DRAW_ROW_HANDLES, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawRowHandlesHandler ) & func, (wxObject *) NULL ),
- #define EVT_PL_DRAW_ROW_BKGROUND(func) wxEventTableEntry( cbEVT_PL_DRAW_ROW_BKGROUND, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawRowBkGroundHandler ) & func, (wxObject *) NULL ),
- #define EVT_PL_DRAW_PANE_BKGROUND(func) wxEventTableEntry( cbEVT_PL_DRAW_PANE_BKGROUND, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawPaneBkGroundHandler) & func, (wxObject *) NULL ),
-
- #define EVT_PL_START_BAR_DRAGGING(func) wxEventTableEntry( cbEVT_PL_START_BAR_DRAGGING, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbStartBarDraggingHandler) & func, (wxObject *) NULL ),
- #define EVT_PL_DRAW_HINT_RECT(func) wxEventTableEntry( cbEVT_PL_DRAW_HINT_RECT, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawHintRectHandler ) & func, (wxObject *) NULL ),
-
-
- #define EVT_PL_START_DRAW_IN_AREA(func) wxEventTableEntry( cbEVT_PL_START_DRAW_IN_AREA, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbStartDrawInAreaHandler) & func, (wxObject *) NULL ),
- #define EVT_PL_FINISH_DRAW_IN_AREA(func) wxEventTableEntry( cbEVT_PL_FINISH_DRAW_IN_AREA, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbFinishDrawInAreaHandler) & func, (wxObject *) NULL ),
-
- #define EVT_PL_CUSTOMIZE_BAR(func) wxEventTableEntry( cbEVT_PL_CUSTOMIZE_BAR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbCustomizeBarHandler) & func, (wxObject *) NULL ),
- #define EVT_PL_CUSTOMIZE_LAYOUT(func) wxEventTableEntry( cbEVT_PL_CUSTOMIZE_LAYOUT, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbCustomizeLayoutHandler) & func, (wxObject *) NULL ),
-#else
- #define EVT_PL_LEFT_DOWN(func) { cbEVT_PL_LEFT_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbLeftDownHandler ) & func },
- #define EVT_PL_LEFT_UP(func) { cbEVT_PL_LEFT_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbLeftUpHandler ) & func },
- #define EVT_PL_RIGHT_DOWN(func) { cbEVT_PL_RIGHT_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbRightDownHandler ) & func },
- #define EVT_PL_RIGHT_UP(func) { cbEVT_PL_RIGHT_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbRightUpHandler ) & func },
- #define EVT_PL_MOTION(func) { cbEVT_PL_MOTION, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbMotionHandler ) & func },
- #define EVT_PL_LEFT_DCLICK(func) { cbEVT_PL_LEFT_DCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbLeftDClickHandler ) & func },
-
- #define EVT_PL_LAYOUT_ROW(func) { cbEVT_PL_LAYOUT_ROW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbLayoutRowHandler ) & func },
- #define EVT_PL_RESIZE_ROW(func) { cbEVT_PL_RESIZE_ROW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbResizeRowHandler ) & func },
- #define EVT_PL_LAYOUT_ROWS(func) { cbEVT_PL_LAYOUT_ROWS, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbLayoutRowsHandler ) & func },
- #define EVT_PL_INSERT_BAR(func) { cbEVT_PL_INSERT_BAR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbInsertBarHandler ) & func },
- #define EVT_PL_RESIZE_BAR(func) { cbEVT_PL_RESIZE_BAR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbResizeBarHandler ) & func },
- #define EVT_PL_REMOVE_BAR(func) { cbEVT_PL_REMOVE_BAR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbRemoveBarHandler ) & func },
- #define EVT_PL_SIZE_BAR_WND(func) { cbEVT_PL_SIZE_BAR_WND, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbSizeBarWndHandler ) & func },
-
- #define EVT_PL_DRAW_BAR_DECOR(func) { cbEVT_PL_DRAW_BAR_DECOR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawBarDecorHandler ) & func },
- #define EVT_PL_DRAW_ROW_DECOR(func) { cbEVT_PL_DRAW_ROW_DECOR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawRowDecorHandler ) & func },
- #define EVT_PL_DRAW_PANE_DECOR(func) { cbEVT_PL_DRAW_PANE_DECOR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawPaneDecorHandler ) & func },
- #define EVT_PL_DRAW_BAR_HANDLES(func) { cbEVT_PL_DRAW_BAR_HANDLES, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawBarHandlesHandler ) & func },
- #define EVT_PL_DRAW_ROW_HANDLES(func) { cbEVT_PL_DRAW_ROW_HANDLES, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawRowHandlesHandler ) & func },
- #define EVT_PL_DRAW_ROW_BKGROUND(func) { cbEVT_PL_DRAW_ROW_BKGROUND, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawRowBkGroundHandler ) & func },
- #define EVT_PL_DRAW_PANE_BKGROUND(func) { cbEVT_PL_DRAW_PANE_BKGROUND, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawPaneBkGroundHandler) & func },
-
- #define EVT_PL_START_BAR_DRAGGING(func) { cbEVT_PL_START_BAR_DRAGGING, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbStartBarDraggingHandler) & func },
- #define EVT_PL_DRAW_HINT_RECT(func) { cbEVT_PL_DRAW_HINT_RECT, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawHintRectHandler ) & func },
-
- #define EVT_PL_START_DRAW_IN_AREA(func) { cbEVT_PL_START_DRAW_IN_AREA, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbStartDrawInAreaHandler) & func },
- #define EVT_PL_FINISH_DRAW_IN_AREA(func) { cbEVT_PL_FINISH_DRAW_IN_AREA, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbFinishDrawInAreaHandler) & func },
-
- #define EVT_PL_CUSTOMIZE_BAR(func) { cbEVT_PL_CUSTOMIZE_BAR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbCustomizeBarHandler) & func },
- #define EVT_PL_CUSTOMIZE_LAYOUT(func) { cbEVT_PL_CUSTOMIZE_LAYOUT, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbCustomizeLayoutHandler) & func },
-#endif
+// Macros for creating event table entries for plugin-events.
+
+#define EVT_PL_LEFT_DOWN(func) wxEventTableEntry( cbEVT_PL_LEFT_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbLeftDownHandler ) & func, (wxObject *) NULL ),
+#define EVT_PL_LEFT_UP(func) wxEventTableEntry( cbEVT_PL_LEFT_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbLeftUpHandler ) & func, (wxObject *) NULL ),
+#define EVT_PL_RIGHT_DOWN(func) wxEventTableEntry( cbEVT_PL_RIGHT_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbRightDownHandler ) & func, (wxObject *) NULL ),
+#define EVT_PL_RIGHT_UP(func) wxEventTableEntry( cbEVT_PL_RIGHT_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbRightUpHandler ) & func, (wxObject *) NULL ),
+#define EVT_PL_MOTION(func) wxEventTableEntry( cbEVT_PL_MOTION, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbMotionHandler ) & func, (wxObject *) NULL ),
+#define EVT_PL_LEFT_DCLICK(func) wxEventTableEntry( cbEVT_PL_LEFT_DCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbLeftDClickHandler ) & func, (wxObject *) NULL ),
+
+#define EVT_PL_LAYOUT_ROW(func) wxEventTableEntry( cbEVT_PL_LAYOUT_ROW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbLayoutRowHandler ) & func, (wxObject *) NULL ),
+#define EVT_PL_RESIZE_ROW(func) wxEventTableEntry( cbEVT_PL_RESIZE_ROW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbResizeRowHandler ) & func, (wxObject *) NULL ),
+#define EVT_PL_LAYOUT_ROWS(func) wxEventTableEntry( cbEVT_PL_LAYOUT_ROWS, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbLayoutRowsHandler ) & func, (wxObject *) NULL ),
+#define EVT_PL_INSERT_BAR(func) wxEventTableEntry( cbEVT_PL_INSERT_BAR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbInsertBarHandler ) & func, (wxObject *) NULL ),
+#define EVT_PL_RESIZE_BAR(func) wxEventTableEntry( cbEVT_PL_RESIZE_BAR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbResizeBarHandler ) & func, (wxObject *) NULL ),
+#define EVT_PL_REMOVE_BAR(func) wxEventTableEntry( cbEVT_PL_REMOVE_BAR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbRemoveBarHandler ) & func, (wxObject *) NULL ),
+#define EVT_PL_SIZE_BAR_WND(func) wxEventTableEntry( cbEVT_PL_SIZE_BAR_WND, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbSizeBarWndHandler ) & func, (wxObject *) NULL ),
+
+#define EVT_PL_DRAW_BAR_DECOR(func) wxEventTableEntry( cbEVT_PL_DRAW_BAR_DECOR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawBarDecorHandler ) & func, (wxObject *) NULL ),
+#define EVT_PL_DRAW_ROW_DECOR(func) wxEventTableEntry( cbEVT_PL_DRAW_ROW_DECOR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawRowDecorHandler ) & func, (wxObject *) NULL ),
+#define EVT_PL_DRAW_PANE_DECOR(func) wxEventTableEntry( cbEVT_PL_DRAW_PANE_DECOR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawPaneDecorHandler ) & func, (wxObject *) NULL ),
+#define EVT_PL_DRAW_BAR_HANDLES(func) wxEventTableEntry( cbEVT_PL_DRAW_BAR_HANDLES, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawBarHandlesHandler ) & func, (wxObject *) NULL ),
+#define EVT_PL_DRAW_ROW_HANDLES(func) wxEventTableEntry( cbEVT_PL_DRAW_ROW_HANDLES, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawRowHandlesHandler ) & func, (wxObject *) NULL ),
+#define EVT_PL_DRAW_ROW_BKGROUND(func) wxEventTableEntry( cbEVT_PL_DRAW_ROW_BKGROUND, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawRowBkGroundHandler ) & func, (wxObject *) NULL ),
+#define EVT_PL_DRAW_PANE_BKGROUND(func) wxEventTableEntry( cbEVT_PL_DRAW_PANE_BKGROUND, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawPaneBkGroundHandler) & func, (wxObject *) NULL ),
+
+#define EVT_PL_START_BAR_DRAGGING(func) wxEventTableEntry( cbEVT_PL_START_BAR_DRAGGING, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbStartBarDraggingHandler) & func, (wxObject *) NULL ),
+#define EVT_PL_DRAW_HINT_RECT(func) wxEventTableEntry( cbEVT_PL_DRAW_HINT_RECT, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbDrawHintRectHandler ) & func, (wxObject *) NULL ),
+
+
+#define EVT_PL_START_DRAW_IN_AREA(func) wxEventTableEntry( cbEVT_PL_START_DRAW_IN_AREA, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbStartDrawInAreaHandler) & func, (wxObject *) NULL ),
+#define EVT_PL_FINISH_DRAW_IN_AREA(func) wxEventTableEntry( cbEVT_PL_FINISH_DRAW_IN_AREA, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbFinishDrawInAreaHandler) & func, (wxObject *) NULL ),
+
+#define EVT_PL_CUSTOMIZE_BAR(func) wxEventTableEntry( cbEVT_PL_CUSTOMIZE_BAR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbCustomizeBarHandler) & func, (wxObject *) NULL ),
+#define EVT_PL_CUSTOMIZE_LAYOUT(func) wxEventTableEntry( cbEVT_PL_CUSTOMIZE_LAYOUT, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbCustomizeLayoutHandler) & func, (wxObject *) NULL ),
+
/*
- * abstract base class for all control-bar related plugins
- */
+Abstract base class for all control-bar related plugins.
+Note: pointer positions of mouse events sent to plugins
+are always in the pane's coordinates (the pane to which
+this plugin is hooked).
+*/
class cbPluginBase : public wxEvtHandler
{
- DECLARE_ABSTRACT_CLASS( cbPluginBase )
+ DECLARE_ABSTRACT_CLASS( cbPluginBase )
public:
+ // Back-reference to the frame layout.
+
+ wxFrameLayout* mpLayout;
+
+ // Specifies panes for which this plugin receives events
+ // (see pane masks definitions).
- wxFrameLayout* mpLayout; // back-reference to the frame layout
+ int mPaneMask;
- // specifies panes, for which this plugin receives events
- // (see pane masks definitions)
- int mPaneMask;
+ // Is TRUE when plugin is ready to handle events.
- bool mIsReady; // is TRUE, when plugin is ready to handle events
+ bool mIsReady;
public:
- cbPluginBase(void)
+ // Default constructor.
- : mpLayout ( 0 ),
- mPaneMask( wxALL_PANES ),
- mIsReady ( FALSE )
- {}
+ cbPluginBase()
- cbPluginBase( wxFrameLayout* pPanel, int paneMask = wxALL_PANES )
+ : mpLayout ( 0 ),
+ mPaneMask( wxALL_PANES ),
+ mIsReady ( FALSE )
+ {}
- : mpLayout ( pPanel ),
- mPaneMask( paneMask ),
- mIsReady ( FALSE )
- {}
+ // Constructor taking layout panel and a mask.
- inline int GetPaneMask() { return mPaneMask; }
+ cbPluginBase( wxFrameLayout* pPanel, int paneMask = wxALL_PANES )
- // NOTE:: pointer positions of mouse-events sent to plugins
- // are always in pane's coordinates (pane's to which
- // this plugin is hooked)
+ : mpLayout ( pPanel ),
+ mPaneMask( paneMask ),
+ mIsReady ( FALSE )
+ {}
- // destroys the whole plugin chain of connected plagins
- virtual ~cbPluginBase();
+ // Returns the pane mask.
- // override this method to do plugin-specific initialization
- // (at this point plugin is already attached to the frame layout,
- // and pane masks are set)
- virtual void OnInitPlugin() { mIsReady = TRUE; }
+ inline int GetPaneMask() { return mPaneMask; }
- bool IsReady() { return mIsReady; }
+ // Destructor. Destroys the whole plugin chain of connected plugins.
- // overriden, to determine whether the target pane specified in the
- // event, matches the pane mask of this plugin (specific plugins
- // do not override this method)
+ virtual ~cbPluginBase();
- virtual bool ProcessEvent(wxEvent& event);
-};
+ // Override this method to do plugin-specific initialization.
+ // At this point plugin is already attached to the frame layout,
+ // and pane masks are set.
+
+ virtual void OnInitPlugin() { mIsReady = TRUE; }
+
+ // Returns TRUE if the plugin is ready to receive events.
+
+ bool IsReady() { return mIsReady; }
-/*** event classes, for each corresponding event type (24 currnetly...uhh) ***/
+ // Overridden to determine whether the target pane specified in the
+ // event matches the pane mask of this plugin (specific plugins
+ // do not override this method).
-// mouse-events category
+ virtual bool ProcessEvent(wxEvent& event);
+};
+
+/*
+Class for mouse left down events.
+*/
class cbLeftDownEvent : public cbPluginEvent
{
public:
- wxPoint mPos;
+ wxPoint mPos;
+
+ // Constructor, taking mouse position and pane.
- cbLeftDownEvent( const wxPoint& pos, cbDockPane* pPane )
+ cbLeftDownEvent( const wxPoint& pos, cbDockPane* pPane )
- : cbPluginEvent( cbEVT_PL_LEFT_DOWN, pPane ),
- mPos( pos )
- {}
+ : cbPluginEvent( cbEVT_PL_LEFT_DOWN, pPane ),
+ mPos( pos )
+ {}
};
+/*
+Class for mouse left up events.
+*/
+
class cbLeftUpEvent : public cbPluginEvent
{
public:
- wxPoint mPos;
+ wxPoint mPos;
+
+ // Constructor, taking mouse position and pane.
- cbLeftUpEvent( const wxPoint& pos, cbDockPane* pPane )
+ cbLeftUpEvent( const wxPoint& pos, cbDockPane* pPane )
- : cbPluginEvent( cbEVT_PL_LEFT_UP, pPane ),
- mPos( pos )
- {}
+ : cbPluginEvent( cbEVT_PL_LEFT_UP, pPane ),
+ mPos( pos )
+ {}
};
+/*
+Class for mouse right down events.
+*/
+
class cbRightDownEvent : public cbPluginEvent
{
public:
- wxPoint mPos;
+ wxPoint mPos;
- cbRightDownEvent( const wxPoint& pos, cbDockPane* pPane )
+ // Constructor, taking mouse position and pane.
- : cbPluginEvent( cbEVT_PL_RIGHT_DOWN, pPane ),
- mPos( pos )
- {}
+ cbRightDownEvent( const wxPoint& pos, cbDockPane* pPane )
+
+ : cbPluginEvent( cbEVT_PL_RIGHT_DOWN, pPane ),
+ mPos( pos )
+ {}
};
+/*
+Class for mouse right up events.
+*/
+
class cbRightUpEvent : public cbPluginEvent
{
public:
- wxPoint mPos;
+ wxPoint mPos;
- cbRightUpEvent( const wxPoint& pos, cbDockPane* pPane )
+ // Constructor, taking mouse position and pane.
- : cbPluginEvent( cbEVT_PL_RIGHT_UP, pPane ),
- mPos( pos )
- {}
+ cbRightUpEvent( const wxPoint& pos, cbDockPane* pPane )
+
+ : cbPluginEvent( cbEVT_PL_RIGHT_UP, pPane ),
+ mPos( pos )
+ {}
};
+/*
+Class for mouse motion events.
+*/
+
class cbMotionEvent : public cbPluginEvent
{
public:
- wxPoint mPos;
+ wxPoint mPos;
+
+ // Constructor, taking mouse position and pane.
- cbMotionEvent( const wxPoint& pos, cbDockPane* pPane )
+ cbMotionEvent( const wxPoint& pos, cbDockPane* pPane )
- : cbPluginEvent( cbEVT_PL_MOTION, pPane ),
- mPos( pos )
- {}
+ : cbPluginEvent( cbEVT_PL_MOTION, pPane ),
+ mPos( pos )
+ {}
};
+/*
+Class for mouse left double click events.
+*/
+
class cbLeftDClickEvent : public cbPluginEvent
{
public:
- wxPoint mPos;
+ wxPoint mPos;
+
+ // Constructor, taking mouse position and pane.
- cbLeftDClickEvent( const wxPoint& pos, cbDockPane* pPane )
+ cbLeftDClickEvent( const wxPoint& pos, cbDockPane* pPane )
- : cbPluginEvent( cbEVT_PL_LEFT_DCLICK, pPane ),
- mPos( pos )
- {}
+ : cbPluginEvent( cbEVT_PL_LEFT_DCLICK, pPane ),
+ mPos( pos )
+ {}
};
-// bar/row events category
+/*
+Class for single row layout events.
+*/
class cbLayoutRowEvent : public cbPluginEvent
{
public:
- cbRowInfo* mpRow;
+ cbRowInfo* mpRow;
- cbLayoutRowEvent( cbRowInfo* pRow, cbDockPane* pPane )
+ // Constructor, taking row information and pane.
- : cbPluginEvent( cbEVT_PL_LAYOUT_ROW, pPane ),
- mpRow( pRow )
- {}
+ cbLayoutRowEvent( cbRowInfo* pRow, cbDockPane* pPane )
+
+ : cbPluginEvent( cbEVT_PL_LAYOUT_ROW, pPane ),
+ mpRow( pRow )
+ {}
};
+/*
+Class for row resize events.
+*/
+
class cbResizeRowEvent : public cbPluginEvent
{
public:
- cbRowInfo* mpRow;
- int mHandleOfs;
- bool mForUpperHandle;
+ cbRowInfo* mpRow;
+ int mHandleOfs;
+ bool mForUpperHandle;
- cbResizeRowEvent( cbRowInfo* pRow, int handleOfs, bool forUpperHandle, cbDockPane* pPane )
+ // Constructor, taking row information, two parameters of currently unknown use, and pane.
- : cbPluginEvent( cbEVT_PL_RESIZE_ROW, pPane ),
- mpRow( pRow ),
- mHandleOfs( handleOfs ),
- mForUpperHandle( forUpperHandle )
- {}
+ cbResizeRowEvent( cbRowInfo* pRow, int handleOfs, bool forUpperHandle, cbDockPane* pPane )
+
+ : cbPluginEvent( cbEVT_PL_RESIZE_ROW, pPane ),
+ mpRow( pRow ),
+ mHandleOfs( handleOfs ),
+ mForUpperHandle( forUpperHandle )
+ {}
};
+/*
+Class for multiple rows layout events.
+*/
+
class cbLayoutRowsEvent : public cbPluginEvent
{
public:
- cbLayoutRowsEvent( cbDockPane* pPane )
+ // Constructor, taking pane.
- : cbPluginEvent( cbEVT_PL_LAYOUT_ROWS, pPane )
- {}
+ cbLayoutRowsEvent( cbDockPane* pPane )
+
+ : cbPluginEvent( cbEVT_PL_LAYOUT_ROWS, pPane )
+ {}
};
+/*
+Class for bar insertion events.
+*/
+
class cbInsertBarEvent : public cbPluginEvent
{
public:
- cbBarInfo* mpBar;
- cbRowInfo* mpRow;
+ cbBarInfo* mpBar;
+ cbRowInfo* mpRow;
+
+ // Constructor, taking bar information, row information, and pane.
- cbInsertBarEvent( cbBarInfo* pBar, cbRowInfo* pIntoRow, cbDockPane* pPane )
+ cbInsertBarEvent( cbBarInfo* pBar, cbRowInfo* pIntoRow, cbDockPane* pPane )
- : cbPluginEvent( cbEVT_PL_INSERT_BAR, pPane ),
+ : cbPluginEvent( cbEVT_PL_INSERT_BAR, pPane ),
- mpBar( pBar ),
- mpRow( pIntoRow )
- {}
+ mpBar( pBar ),
+ mpRow( pIntoRow )
+ {}
};
+/*
+Class for bar resize events.
+*/
+
class cbResizeBarEvent : public cbPluginEvent
{
public:
- cbBarInfo* mpBar;
- cbRowInfo* mpRow;
+ cbBarInfo* mpBar;
+ cbRowInfo* mpRow;
+
+ // Constructor, taking bar information, row information, and pane.
- cbResizeBarEvent( cbBarInfo* pBar, cbRowInfo* pRow, cbDockPane* pPane )
+ cbResizeBarEvent( cbBarInfo* pBar, cbRowInfo* pRow, cbDockPane* pPane )
- : cbPluginEvent( cbEVT_PL_RESIZE_BAR, pPane ),
- mpBar( pBar ),
- mpRow( pRow )
- {}
+ : cbPluginEvent( cbEVT_PL_RESIZE_BAR, pPane ),
+ mpBar( pBar ),
+ mpRow( pRow )
+ {}
};
+/*
+Class for bar removal events.
+*/
+
class cbRemoveBarEvent : public cbPluginEvent
{
public:
- cbBarInfo* mpBar;
+ cbBarInfo* mpBar;
- cbRemoveBarEvent( cbBarInfo* pBar, cbDockPane* pPane )
+ // Constructor, taking bar information and pane.
- : cbPluginEvent( cbEVT_PL_REMOVE_BAR, pPane ),
- mpBar( pBar )
- {}
+ cbRemoveBarEvent( cbBarInfo* pBar, cbDockPane* pPane )
+
+ : cbPluginEvent( cbEVT_PL_REMOVE_BAR, pPane ),
+ mpBar( pBar )
+ {}
};
+/*
+Class for bar window resize events.
+*/
+
class cbSizeBarWndEvent : public cbPluginEvent
{
public:
- cbBarInfo* mpBar;
- wxRect mBoundsInParent;
+ cbBarInfo* mpBar;
+ wxRect mBoundsInParent;
- cbSizeBarWndEvent( cbBarInfo* pBar, cbDockPane* pPane )
+ // Constructor, taking bar information and pane.
- : cbPluginEvent( cbEVT_PL_SIZE_BAR_WND, pPane ),
- mpBar( pBar ),
- mBoundsInParent( pBar->mBoundsInParent )
- {}
+ cbSizeBarWndEvent( cbBarInfo* pBar, cbDockPane* pPane )
+
+ : cbPluginEvent( cbEVT_PL_SIZE_BAR_WND, pPane ),
+ mpBar( pBar ),
+ mBoundsInParent( pBar->mBoundsInParent )
+ {}
};
+/*
+Class for bar decoration drawing events.
+*/
+
class cbDrawBarDecorEvent : public cbPluginEvent
{
public:
- cbBarInfo* mpBar;
- wxDC* mpDc;
- wxRect mBoundsInParent;
+ cbBarInfo* mpBar;
+ wxDC* mpDc;
+ wxRect mBoundsInParent;
+
+ // Constructor, taking bar information, device context, and pane.
- cbDrawBarDecorEvent( cbBarInfo* pBar, wxDC& dc, cbDockPane* pPane )
+ cbDrawBarDecorEvent( cbBarInfo* pBar, wxDC& dc, cbDockPane* pPane )
- : cbPluginEvent( cbEVT_PL_DRAW_BAR_DECOR, pPane ),
- mpBar( pBar ),
- mpDc( &dc ),
- mBoundsInParent( pBar->mBoundsInParent )
- {}
+ : cbPluginEvent( cbEVT_PL_DRAW_BAR_DECOR, pPane ),
+ mpBar( pBar ),
+ mpDc( &dc ),
+ mBoundsInParent( pBar->mBoundsInParent )
+ {}
};
+/*
+Class for row decoration drawing events.
+*/
+
class cbDrawRowDecorEvent : public cbPluginEvent
{
public:
- cbRowInfo* mpRow;
- wxDC* mpDc;
+ cbRowInfo* mpRow;
+ wxDC* mpDc;
+
+ // Constructor, taking row information, device context, and pane.
- cbDrawRowDecorEvent( cbRowInfo* pRow, wxDC& dc, cbDockPane* pPane )
+ cbDrawRowDecorEvent( cbRowInfo* pRow, wxDC& dc, cbDockPane* pPane )
- : cbPluginEvent( cbEVT_PL_DRAW_ROW_DECOR, pPane ),
- mpRow( pRow ),
- mpDc( &dc )
- {}
+ : cbPluginEvent( cbEVT_PL_DRAW_ROW_DECOR, pPane ),
+ mpRow( pRow ),
+ mpDc( &dc )
+ {}
};
+/*
+Class for pane decoration drawing events.
+*/
+
class cbDrawPaneDecorEvent : public cbPluginEvent
{
public:
- wxDC* mpDc;
+ wxDC* mpDc;
+
+ // Constructor, taking device context and pane.
- cbDrawPaneDecorEvent( wxDC& dc, cbDockPane* pPane )
+ cbDrawPaneDecorEvent( wxDC& dc, cbDockPane* pPane )
- : cbPluginEvent( cbEVT_PL_DRAW_PANE_DECOR, pPane ),
- mpDc( &dc )
- {}
+ : cbPluginEvent( cbEVT_PL_DRAW_PANE_DECOR, pPane ),
+ mpDc( &dc )
+ {}
};
+/*
+Class for bar handles drawing events.
+*/
+
class cbDrawBarHandlesEvent : public cbPluginEvent
{
public:
- cbBarInfo* mpBar;
- wxDC* mpDc;
+ cbBarInfo* mpBar;
+ wxDC* mpDc;
+
+ // Constructor, taking bar information, device context, and pane.
- cbDrawBarHandlesEvent( cbBarInfo* pBar, wxDC& dc, cbDockPane* pPane )
+ cbDrawBarHandlesEvent( cbBarInfo* pBar, wxDC& dc, cbDockPane* pPane )
- : cbPluginEvent( cbEVT_PL_DRAW_BAR_HANDLES, pPane ),
- mpBar( pBar ),
- mpDc( &dc )
- {}
+ : cbPluginEvent( cbEVT_PL_DRAW_BAR_HANDLES, pPane ),
+ mpBar( pBar ),
+ mpDc( &dc )
+ {}
};
+/*
+Class for row handles drawing events.
+*/
+
class cbDrawRowHandlesEvent : public cbPluginEvent
{
public:
- cbRowInfo* mpRow;
- wxDC* mpDc;
+ cbRowInfo* mpRow;
+ wxDC* mpDc;
+
+ // Constructor, taking row information, device context, and pane.
- cbDrawRowHandlesEvent( cbRowInfo* pRow, wxDC& dc, cbDockPane* pPane )
+ cbDrawRowHandlesEvent( cbRowInfo* pRow, wxDC& dc, cbDockPane* pPane )
- : cbPluginEvent( cbEVT_PL_DRAW_ROW_HANDLES, pPane ),
- mpRow( pRow ),
- mpDc( &dc )
- {}
+ : cbPluginEvent( cbEVT_PL_DRAW_ROW_HANDLES, pPane ),
+ mpRow( pRow ),
+ mpDc( &dc )
+ {}
};
+/*
+Class for row background drawing events.
+*/
+
class cbDrawRowBkGroundEvent : public cbPluginEvent
{
public:
- cbRowInfo* mpRow;
- wxDC* mpDc;
+ cbRowInfo* mpRow;
+ wxDC* mpDc;
- cbDrawRowBkGroundEvent( cbRowInfo* pRow, wxDC& dc, cbDockPane* pPane )
+ // Constructor, taking row information, device context, and pane.
- : cbPluginEvent( cbEVT_PL_DRAW_ROW_BKGROUND, pPane ),
- mpRow( pRow ),
- mpDc( &dc )
- {}
+ cbDrawRowBkGroundEvent( cbRowInfo* pRow, wxDC& dc, cbDockPane* pPane )
+
+ : cbPluginEvent( cbEVT_PL_DRAW_ROW_BKGROUND, pPane ),
+ mpRow( pRow ),
+ mpDc( &dc )
+ {}
};
+/*
+Class for pane background drawing events.
+*/
+
class cbDrawPaneBkGroundEvent : public cbPluginEvent
{
public:
- wxDC* mpDc;
+ wxDC* mpDc;
- cbDrawPaneBkGroundEvent( wxDC& dc, cbDockPane* pPane )
+ // Constructor, taking device context and pane.
- : cbPluginEvent( cbEVT_PL_DRAW_PANE_BKGROUND, pPane ),
- mpDc( &dc )
- {}
+ cbDrawPaneBkGroundEvent( wxDC& dc, cbDockPane* pPane )
+
+ : cbPluginEvent( cbEVT_PL_DRAW_PANE_BKGROUND, pPane ),
+ mpDc( &dc )
+ {}
};
+/*
+Class for start-bar-dragging events.
+*/
+
class cbStartBarDraggingEvent : public cbPluginEvent
{
public:
- cbBarInfo* mpBar;
- wxPoint mPos; // is given in frame's coordinates
+ cbBarInfo* mpBar;
+ wxPoint mPos; // is given in frame's coordinates
- cbStartBarDraggingEvent( cbBarInfo* pBar, const wxPoint& pos, cbDockPane* pPane )
+ // Constructor, taking bar information, mouse position, and pane.
- : cbPluginEvent( cbEVT_PL_START_BAR_DRAGGING, pPane ),
- mpBar( pBar ),
- mPos( pos )
- {}
+ cbStartBarDraggingEvent( cbBarInfo* pBar, const wxPoint& pos, cbDockPane* pPane )
+
+ : cbPluginEvent( cbEVT_PL_START_BAR_DRAGGING, pPane ),
+ mpBar( pBar ),
+ mPos( pos )
+ {}
};
+/*
+Class for hint-rectangle drawing events.
+*/
+
class cbDrawHintRectEvent : public cbPluginEvent
{
public:
- wxRect mRect; // is given in frame's coordinates
+ wxRect mRect; // is given in frame's coordinates
- bool mLastTime; // indicates that this event finishes "session" of on-screen drawing,
- // thus associated resources can be freed now
- bool mEraseRect; // does not have any impact, if recangle is drawn using XOR-mask
+ bool mLastTime; // indicates that this event finishes "session" of on-screen drawing,
+ // thus associated resources can be freed now
+ bool mEraseRect; // does not have any impact, if recangle is drawn using XOR-mask
- bool mIsInClient;// in cleint area hint could be drawn differently,
- // e.g. with fat/hatched border
+ bool mIsInClient;// in cleint area hint could be drawn differently,
+ // e.g. with fat/hatched border
- cbDrawHintRectEvent( const wxRect& rect, bool isInClient, bool eraseRect, bool lastTime )
+ // Constructor, taking hint rectangle and three flags.
- : cbPluginEvent( cbEVT_PL_DRAW_HINT_RECT, 0 ),
- mRect ( rect ),
- mLastTime ( lastTime ),
- mEraseRect ( eraseRect ),
- mIsInClient( isInClient )
- {}
+ cbDrawHintRectEvent( const wxRect& rect, bool isInClient, bool eraseRect, bool lastTime )
+
+ : cbPluginEvent( cbEVT_PL_DRAW_HINT_RECT, 0 ),
+ mRect ( rect ),
+ mLastTime ( lastTime ),
+ mEraseRect ( eraseRect ),
+ mIsInClient( isInClient )
+ {}
};
+/*
+Class for start drawing in area events.
+*/
+
class cbStartDrawInAreaEvent : public cbPluginEvent
{
public:
- wxRect mArea;
- wxDC** mppDc; // points to pointer, where the reference
- // to the obtained buffer-context should be placed
+ wxRect mArea;
+ wxDC** mppDc; // points to pointer, where the reference
+ // to the obtained buffer-context should be placed
+
+ // Constructor, taking rectangular area, device context pointer to a pointer, and pane.
- cbStartDrawInAreaEvent( const wxRect& area, wxDC** ppDCForArea, cbDockPane* pPane )
+ cbStartDrawInAreaEvent( const wxRect& area, wxDC** ppDCForArea, cbDockPane* pPane )
- : cbPluginEvent( cbEVT_PL_START_DRAW_IN_AREA, pPane ),
- mArea( area ),
- mppDc( ppDCForArea )
- {}
+ : cbPluginEvent( cbEVT_PL_START_DRAW_IN_AREA, pPane ),
+ mArea( area ),
+ mppDc( ppDCForArea )
+ {}
};
+/*
+Class for finish drawing in area events.
+*/
+
class cbFinishDrawInAreaEvent : public cbPluginEvent
{
public:
- wxRect mArea;
+ wxRect mArea;
+
+ // Constructor, taking rectangular area and pane.
- cbFinishDrawInAreaEvent( const wxRect& area, cbDockPane* pPane )
+ cbFinishDrawInAreaEvent( const wxRect& area, cbDockPane* pPane )
- : cbPluginEvent( cbEVT_PL_FINISH_DRAW_IN_AREA, pPane ),
- mArea( area )
- {}
+ : cbPluginEvent( cbEVT_PL_FINISH_DRAW_IN_AREA, pPane ),
+ mArea( area )
+ {}
};
+/*
+Class for bar customization events.
+*/
+
class cbCustomizeBarEvent : public cbPluginEvent
{
public:
- wxPoint mClickPos; // in parent frame's coordinates
- cbBarInfo* mpBar;
+ wxPoint mClickPos; // in parent frame's coordinates
+ cbBarInfo* mpBar;
+
+ // Constructor, taking bar information, mouse position, and pane.
- cbCustomizeBarEvent( cbBarInfo* pBar, const wxPoint& clickPos, cbDockPane* pPane )
+ cbCustomizeBarEvent( cbBarInfo* pBar, const wxPoint& clickPos, cbDockPane* pPane )
- : cbPluginEvent( cbEVT_PL_CUSTOMIZE_BAR, pPane ),
- mClickPos( clickPos ),
- mpBar( pBar )
- {}
+ : cbPluginEvent( cbEVT_PL_CUSTOMIZE_BAR, pPane ),
+ mClickPos( clickPos ),
+ mpBar( pBar )
+ {}
};
+/*
+Class for layout customization events.
+*/
+
class cbCustomizeLayoutEvent : public cbPluginEvent
{
public:
- wxPoint mClickPos; // in parent frame's coordinates
+ wxPoint mClickPos; // in parent frame's coordinates
+
+ // Constructor, taking mouse position.
- cbCustomizeLayoutEvent( const wxPoint& clickPos )
+ cbCustomizeLayoutEvent( const wxPoint& clickPos )
- : cbPluginEvent( cbEVT_PL_CUSTOMIZE_LAYOUT, 0 ),
- mClickPos( clickPos )
- {}
+ : cbPluginEvent( cbEVT_PL_CUSTOMIZE_LAYOUT, 0 ),
+ mClickPos( clickPos )
+ {}
};
#endif /* __CONTROLBAR_G__ */
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: dynbarhnd.h
+// Purpose: This header simply includes controlbar.h.
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 23/01/99
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __DYNBARHND_G__
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: dyntbar.h
+// Purpose: wxDynamicToolBar header
// Author: Aleksandras Gluchovas
// Modified by:
// Created: ??/10/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __DYNTBAR_G__
#include "wx/tbarbase.h"
#include "wx/dynarray.h"
-// layout item
+/*
+Tool layout item.
+*/
class wxToolLayoutItem : public wxObject
{
public:
- wxRect mRect;
- bool mIsSeparator;
+ wxRect mRect;
+ bool mIsSeparator;
};
class wxDynToolInfo;
typedef wxToolLayoutItem* wxToolLayoutItemPtrT;
typedef wxDynToolInfo* wxDynToolInfoPtrT;
-
WX_DEFINE_ARRAY( wxToolLayoutItemPtrT, wxLayoutItemArrayT );
WX_DEFINE_ARRAY( wxDynToolInfoPtrT, wxDynToolInfoArrayT );
-// base class for layouting algorithm implementations
+/*
+This is a base class for layout algorithm implementations.
+*/
class LayoutManagerBase
{
public:
- virtual void Layout( const wxSize& parentDim,
- wxSize& resultingDim,
- wxLayoutItemArrayT& items,
- int horizGap,
- int vertGap ) = 0;
-
- virtual ~LayoutManagerBase() {}
+ // Constructor.
+ virtual void Layout( const wxSize& parentDim,
+ wxSize& resultingDim,
+ wxLayoutItemArrayT& items,
+ int horizGap,
+ int vertGap ) = 0;
+
+ // Destructor.
+ virtual ~LayoutManagerBase() {}
};
-// layouts items in left-to-right order from
-// top towards bottom
+/*
+BagLayout lays out items in left-to-right order from
+top to bottom.
+*/
class BagLayout : public LayoutManagerBase
{
public:
- virtual void Layout( const wxSize& parentDim,
- wxSize& resultingDim,
- wxLayoutItemArrayT& items,
- int horizGap,
- int vertGap );
+ // Constructor.
+ virtual void Layout( const wxSize& parentDim,
+ wxSize& resultingDim,
+ wxLayoutItemArrayT& items,
+ int horizGap,
+ int vertGap );
};
+/*
+This class holds dynamic toolbar item information.
+*/
+
class wxDynToolInfo : public wxToolLayoutItem
{
- DECLARE_DYNAMIC_CLASS(wxDynToolInfo)
+ DECLARE_DYNAMIC_CLASS(wxDynToolInfo)
public:
- wxWindow* mpToolWnd;
- int mIndex;
- wxSize mRealSize;
+ wxWindow* mpToolWnd;
+ int mIndex;
+ wxSize mRealSize;
};
-// layouting orientations for tools
+// Layout orientations for tools
#define LO_HORIZONTAL 0
#define LO_VERTICAL 1
#define LO_FIT_TO_WINDOW 2
-// class manages containment and layouting of tool-windows
+/*
+wxDynamicToolBar manages containment and layout of tool windows.
+*/
class wxDynamicToolBar : public wxToolBarBase
{
- DECLARE_DYNAMIC_CLASS(wxDynamicToolBar)
+ DECLARE_DYNAMIC_CLASS(wxDynamicToolBar)
protected:
- friend class wxDynamicToolBarSerializer;
+ friend class wxDynamicToolBarSerializer;
- wxDynToolInfoArrayT mTools;
- LayoutManagerBase* mpLayoutMan;
+ wxDynToolInfoArrayT mTools;
+ LayoutManagerBase* mpLayoutMan;
protected:
- virtual void SizeToolWindows();
+ // Internal function for sizing tool windows.
+ virtual void SizeToolWindows();
public: /* public properties */
- int mSepartorSize; // default: 8
- int mVertGap; // default: 0
- int mHorizGap; // default: 0
-
+ int mSepartorSize; // default: 8
+ int mVertGap; // default: 0
+ int mHorizGap; // default: 0
+
public:
- wxDynamicToolBar();
+ // Default constructor.
+
+ wxDynamicToolBar();
+
+ // Constructor: see the documentation for wxToolBar for details.
+
+ wxDynamicToolBar(wxWindow *parent, const wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
+ const long style = wxNO_BORDER, const int orientation = wxVERTICAL,
+ const int RowsOrColumns = 1, const wxString& name = wxToolBarNameStr);
+
+ // Destructor.
- wxDynamicToolBar(wxWindow *parent, const wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
- const long style = wxNO_BORDER, const int orientation = wxVERTICAL,
- const int RowsOrColumns = 1, const wxString& name = wxToolBarNameStr);
+ ~wxDynamicToolBar(void);
- ~wxDynamicToolBar(void);
+ // Creation function: see the documentation for wxToolBar for details.
- bool Create(wxWindow *parent, const wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
- const long style = wxNO_BORDER, const int orientation = wxVERTICAL, const int RowsOrColumns = 1, const wxString& name = wxToolBarNameStr);
+ bool Create(wxWindow *parent, const wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
+ const long style = wxNO_BORDER, const int orientation = wxVERTICAL, const int RowsOrColumns = 1, const wxString& name = wxToolBarNameStr);
- // overridables
+ // Adds a tool. See the documentation for wxToolBar for details.
- virtual void AddTool( int toolIndex,
- wxWindow* pToolWindow,
+ virtual void AddTool( int toolIndex,
+ wxWindow* pToolWindow,
const wxSize& size = wxDefaultSize );
- virtual void AddTool( int toolIndex,
+ // Adds a tool. See the documentation for wxToolBar for details.
+
+ virtual void AddTool( int toolIndex,
const wxString& imageFileName,
wxBitmapType imageFileType = wxBITMAP_TYPE_BMP,
const wxString& labelText = "", bool alignTextRight = FALSE,
bool isFlat = TRUE );
- virtual void AddTool( int toolIndex, wxBitmap labelBmp,
+ // Adds a tool. See the documentation for wxToolBar for details.
+
+ virtual void AddTool( int toolIndex, wxBitmap labelBmp,
const wxString& labelText = "", bool alignTextRight = FALSE,
bool isFlat = TRUE );
- // method from wxToolBarBase (for compatibility), only
- // first two arguments are valid
+ // Method from wxToolBarBase (for compatibility), only
+ // the first two arguments are valid.
+ // See the documentation for wxToolBar for details.
- virtual wxToolBarToolBase *AddTool(const int toolIndex, const wxBitmap& bitmap, const wxBitmap& pushedBitmap = wxNullBitmap,
+ virtual wxToolBarToolBase *AddTool(const int toolIndex, const wxBitmap& bitmap, const wxBitmap& pushedBitmap = wxNullBitmap,
const bool toggle = FALSE, const long xPos = -1, const long yPos = -1, wxObject *clientData = NULL,
const wxString& helpString1 = "", const wxString& helpString2 = "");
- virtual void AddSeparator( wxWindow* pSepartorWnd = NULL );
+ // Adds a separator. See the documentation for wxToolBar for details.
+
+ virtual void AddSeparator( wxWindow* pSepartorWnd = NULL );
+
+ // Returns tool information for the given tool index.
+
+ wxDynToolInfo* GetToolInfo( int toolIndex );
+
+ // Removes the given tool. Misspelt in order not to clash with a similar function
+ // in the base class.
+
+ void RemveTool( int toolIndex );
+
+ // Draws a separator. The default implementation draws a shaded line.
- wxDynToolInfo* GetToolInfo( int toolIndex );
+ virtual void DrawSeparator( wxDynToolInfo& info, wxDC& dc );
- void RemveTool( int toolIndex );
+ // Performs layout. See definitions of orientation types.
- // the default implementation draws shaded line
- virtual void DrawSeparator( wxDynToolInfo& info, wxDC& dc );
+ virtual bool Layout();
- // see definitions of orientation types
- virtual bool Layout();
+ // Returns the preferred dimension, taking the given dimension and a reference to the result.
- virtual void GetPreferredDim( const wxSize& givenDim, wxSize& prefDim );
+ virtual void GetPreferredDim( const wxSize& givenDim, wxSize& prefDim );
- virtual LayoutManagerBase* CreateDefaulLayout() { return new BagLayout(); }
+ // Creates the default layout (BagLayout).
- virtual void SetLayout( LayoutManagerBase* pLayout );
+ virtual LayoutManagerBase* CreateDefaultLayout() { return new BagLayout(); }
- virtual void EnableTool(const int toolIndex, const bool enable = TRUE);
+ // Sets the layout for this toolbar.
- // event handlers
+ virtual void SetLayout( LayoutManagerBase* pLayout );
- void OnSize( wxSizeEvent& event );
- void OnPaint( wxPaintEvent& event );
- void OnEraseBackground( wxEraseEvent& event );
+ // Enables or disables the given tool.
- // overriden from wxToolBarBase
+ virtual void EnableTool(const int toolIndex, const bool enable = TRUE);
- virtual bool Realize(void);
+ // Responds to size events, calling Layout.
- // stuff from the 2.1.15
+ void OnSize( wxSizeEvent& event );
+
+ // Responds to paint events, drawing separators.
+
+ void OnPaint( wxPaintEvent& event );
+
+ // Responds to background erase events. Currently does nothing.
+
+ void OnEraseBackground( wxEraseEvent& event );
+
+ // Overriden from wxToolBarBase; does nothing.
+
+ virtual bool Realize(void);
+
+ // Finds a tool for the given position.
virtual wxToolBarToolBase *FindToolForPosition(wxCoord x,
wxCoord y) const;
+ // Inserts a tool at the given position.
virtual bool DoInsertTool(size_t pos, wxToolBarToolBase *tool);
- // the tool is still in m_tools list when this function is called, it will
- // only be deleted from it if it succeeds
+ // Deletes a tool. The tool is still in m_tools list when this function is called, and it will
+ // only be deleted from it if it succeeds.
+
virtual bool DoDeleteTool(size_t pos, wxToolBarToolBase *tool);
- // called when the tools enabled flag changes
+ // Called when the tools enabled flag changes.
+
virtual void DoEnableTool(wxToolBarToolBase *tool, bool enable);
- // called when the tool is toggled
+ // Called when the tool is toggled.
+
virtual void DoToggleTool(wxToolBarToolBase *tool, bool toggle);
- // called when the tools "can be toggled" flag changes
+ // Called when the tools 'can be toggled' flag changes.
+
virtual void DoSetToggle(wxToolBarToolBase *tool, bool toggle);
- // the functions to create toolbar tools
+ // Creates a toolbar tool.
+
virtual wxToolBarToolBase *CreateTool(int id,
const wxBitmap& bitmap1,
const wxBitmap& bitmap2,
wxObject *clientData,
const wxString& shortHelpString,
const wxString& longHelpString);
- virtual wxToolBarToolBase *CreateTool(wxControl *control);
+ // Creates a toolbar tool.
+
+ virtual wxToolBarToolBase *CreateTool(wxControl *control);
- DECLARE_EVENT_TABLE()
+ DECLARE_EVENT_TABLE()
};
#endif /* __DYNTBAR_G__ */
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
+// Name: dyntbarhnd.h
// Purpose: Contrib. demo
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 23/01/99
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __DYNTBARHND_G__
#include "wx/fl/controlbar.h"
#include "wx/fl/dyntbar.h"
+/*
+Dynamic toolbar dimension handler.
+*/
+
class cbDynToolBarDimHandler : public cbBarDimHandlerBase
{
- DECLARE_DYNAMIC_CLASS( cbDynToolBarDimHandler )
+ DECLARE_DYNAMIC_CLASS( cbDynToolBarDimHandler )
public:
- void OnChangeBarState(cbBarInfo* pBar, int newState );
- void OnResizeBar( cbBarInfo* pBar, const wxSize& given, wxSize& preferred );
+
+ // Called when the bar changes state.
+
+ void OnChangeBarState(cbBarInfo* pBar, int newState );
+
+ // Called when a bar is resized.
+
+ void OnResizeBar( cbBarInfo* pBar, const wxSize& given, wxSize& preferred );
};
#endif /* __DYNTBARHND_G__ */
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: frmview.h
+// Purpose: wxFrameView and wxFrameManager classes.
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 02/01/99
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __FRMVIEW_G__
class wxFrameManager;
+/*
+It is not clear what this class does. It is not used elsewhere in FL.
+*/
+
class wxFrameView : public wxEvtHandler
{
protected:
- wxStringList mTopMenus;
- wxFrameLayout* mpLayout;
- wxFrameManager* mpFrameMgr;
- bool mDoToolUpdates;
+ wxStringList mTopMenus;
+ wxFrameLayout* mpLayout;
+ wxFrameManager* mpFrameMgr;
+ bool mDoToolUpdates;
- friend class wxFrameManager;
- friend class wxFrameViewSerializer;
+ friend class wxFrameManager;
+ friend class wxFrameViewSerializer;
protected:
- void OnIdle( wxIdleEvent& event);
-
+ void OnIdle( wxIdleEvent& event);
+
public:
- wxFrameView();
- ~wxFrameView();
+ wxFrameView();
+ ~wxFrameView();
- virtual void Activate();
- virtual void Deactivate();
+ virtual void Activate();
+ virtual void Deactivate();
- wxFrame* GetParentFrame();
- wxWindow* GetClientWindow();
+ wxFrame* GetParentFrame();
+ wxWindow* GetClientWindow();
- wxFrameManager& GetFrameManager();
+ wxFrameManager& GetFrameManager();
- void RegisterMenu( const wxString& topMenuName );
+ void RegisterMenu( const wxString& topMenuName );
- void CreateLayout();
- wxFrameLayout* GetLayout();
- void SetLayout( wxFrameLayout* pLayout );
- void SetToolUpdates( bool doToolUpdates = TRUE );
+ void CreateLayout();
+ wxFrameLayout* GetLayout();
+ void SetLayout( wxFrameLayout* pLayout );
+ void SetToolUpdates( bool doToolUpdates = TRUE );
- // hooks for specific frame-views
+ // hooks for specific frame-views
- virtual void OnInit() {}
+ virtual void OnInit() {}
- virtual void OnSerialize( wxObjectStorage& store ) {}
- virtual void OnActiveate() {}
- virtual void OnDeactivate() {}
+ virtual void OnSerialize( wxObjectStorage& store ) {}
+ virtual void OnActiveate() {}
+ virtual void OnDeactivate() {}
- // imp. is mandatory
- virtual void OnRecreate() {}
- virtual void OnInitMenus() {}
+ // imp. is mandatory
+ virtual void OnRecreate() {}
+ virtual void OnInitMenus() {}
- DECLARE_EVENT_TABLE()
+ DECLARE_EVENT_TABLE()
};
class wxFrame;
+/*
+It is not clear what this class does. It is not used elsewhere in FL.
+*/
+
class wxFrameManager : wxObject
{
protected:
- wxList mViews;
- wxWindow* mpFrameWnd;
- int mActiveViewNo;
- wxWindow* mpClientWnd;
+ wxList mViews;
+ wxWindow* mpFrameWnd;
+ int mActiveViewNo;
+ wxWindow* mpClientWnd;
#if 0
- wxObjectStorage mStore;
+ wxObjectStorage mStore;
#endif
- wxString mSettingsFile;
+ wxString mSettingsFile;
protected:
- void DoSerialize( wxObjectStorage& store );
- void DestroyViews();
- int GetViewNo( wxFrameView* pView );
- void EnableMenusForView( wxFrameView* pView, bool enable );
- void SyncAllMenus();
+ void DoSerialize( wxObjectStorage& store );
+ void DestroyViews();
+ int GetViewNo( wxFrameView* pView );
+ void EnableMenusForView( wxFrameView* pView, bool enable );
+ void SyncAllMenus();
public:
- wxFrameManager();
- ~wxFrameManager();
+ wxFrameManager();
+ ~wxFrameManager();
- // if file name is empty, views are are not saved/loaded
+ // if file name is empty, views are are not saved/loaded
- virtual void Init( wxWindow* pMainFrame, const wxString& settingsFile = "" );
+ virtual void Init( wxWindow* pMainFrame, const wxString& settingsFile = "" );
- // synonyms
- wxFrame* GetParentFrame();
- wxWindow* GetParentWindow();
+ // synonyms
+ wxFrame* GetParentFrame();
+ wxWindow* GetParentWindow();
- int GetActiveViewNo();
- wxFrameView* GetActiveView();
- wxNode* GetActiveViewNode();
+ int GetActiveViewNo();
+ wxFrameView* GetActiveView();
+ wxNode* GetActiveViewNode();
- wxFrameView* GetView( int viewNo );
+ wxFrameView* GetView( int viewNo );
- void SetClinetWindow( wxWindow* pFrameClient );
- wxWindow* GetClientWindow();
+ void SetClinetWindow( wxWindow* pFrameClient );
+ wxWindow* GetClientWindow();
- void AddView( wxFrameView* pFrmView );
- void RemoveView( wxFrameView* pFrmView );
+ void AddView( wxFrameView* pFrmView );
+ void RemoveView( wxFrameView* pFrmView );
- void ActivateView( int viewNo );
- void ActivateView( wxFrameView* pFrmView );
- void DeactivateCurrentView();
+ void ActivateView( int viewNo );
+ void ActivateView( wxFrameView* pFrmView );
+ void DeactivateCurrentView();
- wxObjectStorage& GetObjectStore();
+ wxObjectStorage& GetObjectStore();
- void SaveViewsNow();
- bool ReloadViews();
+ void SaveViewsNow();
+ bool ReloadViews();
- bool ViewsAreLoaded();
+ bool ViewsAreLoaded();
};
#endif /* __FRMVIEW_G__ */
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: garbagec.h
+// Purpose: GarbageCollector class.
// Author: Aleksandras Gluchovas (@Lithuania)
// Modified by:
// Created: ??/10/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __GARBAGEC_G__
struct GCItem
{
- void* mpObj;
- wxList mRefs; // references to other nodes
+ void* mpObj;
+ wxList mRefs; // references to other nodes
};
inline void* gc_node_to_obj( wxNode* pGCNode )
{
- return ( (GCItem*) (pGCNode->Data()) )->mpObj;
+ return ( (GCItem*) (pGCNode->Data()) )->mpObj;
}
-// class implements extremely slow, but probably one of the most simple GC algorithms
+/*
+This class implements an extremely slow but simple garbage collection algorithm.
+*/
class GarbageCollector
{
protected:
- wxList mAllNodes;
- wxList mRegularLst;
- wxList mCycledLst;
+ wxList mAllNodes;
+ wxList mRegularLst;
+ wxList mCycledLst;
- wxNode* FindItemNode( void* pForObj );
- void ResolveReferences();
+ // Internal method for finding a node.
+ wxNode* FindItemNode( void* pForObj );
- wxNode* FindReferenceFreeItemNode();
- void RemoveReferencesToNode( wxNode* pItemNode );
- void DestroyItemList( wxList& lst );
+ // Internal method for resolving references.
+ void ResolveReferences();
+
+ // Internal method for findind and freeing a node.
+ wxNode* FindReferenceFreeItemNode();
+
+ // Remove references to this node.
+ void RemoveReferencesToNode( wxNode* pItemNode );
+
+ // Destroys a list of items.
+ void DestroyItemList( wxList& lst );
public:
- GarbageCollector() {}
+ // Default constructor.
+ GarbageCollector() {}
+
+ // Destructor.
+ virtual ~GarbageCollector();
+
+ // Prepare data for garbage collection.
+
+ virtual void AddObject( void* pObj, int refCnt = 1 );
+
+ // Prepare data for garbage collection.
- virtual ~GarbageCollector();
+ virtual void AddDependency( void* pObj, void* pDependsOnObj );
- // prepare data for GC alg.
+ // Executes garbage collection algorithm.
- virtual void AddObject( void* pObj, int refCnt = 1 );
- virtual void AddDependency( void* pObj, void* pDependsOnObj );
+ virtual void ArrangeCollection();
- // executes GC alg.
+ // Accesses the results of the algorithm.
- virtual void ArrangeCollection();
+ wxList& GetRegularObjects();
- // access results of the alg.
+ // Get cycled objects.
- wxList& GetRegularObjects();
- wxList& GetCycledObjects();
+ wxList& GetCycledObjects();
- // removes all data from GC
+ // Removes all data from the garbage collector.
- void Reset();
+ void Reset();
};
#endif /* __GARBAGEC_G__ */
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: gcupdatesmgr.h
+// Purpose: Header for cbGCUpdatesMgr class.
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 19/10/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __GCUPDATESMGR_G__
#include "wx/fl/garbagec.h"
/*
- * class implements optimized logic for refreshing
- * areas of frame layout - which actually need to be updated.
- * Is used as default updates-manager by wxFrameLayout.
- *
- * it is called "Garbage Collecting" u.mgr for it's implementation
- * tries to find out dependencies between bars, and to order
- * them ito "hierarchy", this hierarchical sorting resembles
- * implemenation of heap-garbage collectors, which resolve
- * dependencies between references.
- *
- * Example: there are situations where the order of moving
- * the windows does matter:
- *
- * case 1)
- * ------ ---
- * | A | |B|
- * ------ ---> | |
- * --- --- ------
- * |B| | A |
- * | | ------
- * ---
- * (future)
- * (past)
- *
- * past/future positions of A and B windows completely overlapp, i.e.
- * depend on each other, and there is not solution for
- * moving the windows witout refreshing both of them,
- * -- we have cyclic dependency here. The gc. alg will
- * find this cyclic dependecy and will force "refresh"
- * after movement.
- *
- * case 2)
- *
- * ------
- * | A |
- * ------ --->
- * ---
- * |B| ------
- * | | | A |
- * --- ------
- * ---
- * |B|
- * | |
- * ---
- *
- * (future)
- * (past)
- *
- * in this case past/future positions do not overlapp, thus
- * it's enough only to move windows, without refreshing them.
- * GC will "notice" it.
- *
- * there is also third case, when overlapping is partial
- * in this case the refershing can be also avoided by
- * moving windows in the order of "most-dependant" towards the
- * "least-dependent". GC handles this automatically, by
- * sorting windows by their dependency-level (or "hierarchy")
- *
- * See garbagec.h for more details of this method, garbagec.h/cpp
- * implement sorting of generic-dependencies (does not deal
- * with graphical objects directly)
- *
- * Summary: improves performance when complex/large windows are
- * moved around, by reducing number of repaints. Also helps
- * to avoid dirty non-client areas of moved windows
- * in some special cases of "overlapping anomalies"
- */
+This class implements optimized logic for refreshing
+the areas of frame layout that actually need to be updated.
+It is used as the default updates manager by wxFrameLayout.
+
+It is called 'Garbage Collecting' updates manager because
+its implementation tries to find out dependencies between bars,
+and to order them into a 'hierarchy'. This hierarchical sorting resembles
+the implementation of heap-garbage collectors, which resolve
+dependencies between references.
+
+Example: there are situations where the order in which the user
+moves windows does matter.
+
+\begin{verbatim}
+ case 1)
+ ------ ---
+ | A | |B|
+ ------ ---> | |
+ --- --- ------
+ |B| | A |
+ | | ------
+ ---
+ (future)
+ (past)
+\end{verbatim}
+
+Past/future positions of A and B windows completely overlap, i.e.
+depend on each other, and there is no solution for
+moving the windows without refreshing both of them
+-- we have a cyclic dependency here. The garbage collection algorithm will
+find this cyclic dependecy and will force refresh after movement.
+
+\begin{verbatim}
+ case 2)
+
+ ------
+ | A |
+ ------ --->
+ ---
+ |B| ------
+ | | | A |
+ --- ------
+ ---
+ |B|
+ | |
+ ---
+
+ (future)
+ (past)
+\end{verbatim}
+
+In this case past/future positions do not overlap, so
+it is enough only to move windows without refreshing them.
+Garbage collection will 'notice' this.
+
+There is also a third case, when overlapping is partial.
+In this case the refreshing can also be avoided by
+moving windows in the order of 'most-dependant' towards the
+'least-dependent'. GC handles this automatically, by
+sorting windows by their dependency-level (or 'hierarchy').
+
+See garbagec.h for more details of this method; garbagec.h/cpp
+implement sorting of generic dependencies and does not deal
+with graphical objects directly.
+
+Summary: garbage collection improves performance when complex or large
+windows are moved around, by reducing the number of repaints. It also helps
+to avoid dirty non-client areas of moved windows
+in some special cases of 'overlapping anomalies'.
+*/
class cbGCUpdatesMgr : public cbSimpleUpdatesMgr
{
- DECLARE_DYNAMIC_CLASS( cbGCUpdatesMgr )
+ DECLARE_DYNAMIC_CLASS( cbGCUpdatesMgr )
protected:
- GarbageCollector mGC;
+ GarbageCollector mGC;
- void DoRepositionItems( wxList& items );
+ // Internal function for repositioning items.
+ void DoRepositionItems( wxList& items );
- void AddItem( wxList& itemList,
- cbBarInfo* pBar,
- cbDockPane* pPane,
- wxRect& curBounds,
- wxRect& prevBounds );
+ // Internal function for repositioning items.
+ void AddItem( wxList& itemList,
+ cbBarInfo* pBar,
+ cbDockPane* pPane,
+ wxRect& curBounds,
+ wxRect& prevBounds );
public:
- cbGCUpdatesMgr(void) {}
+ // Default constructor.
+ cbGCUpdatesMgr(void) {}
- cbGCUpdatesMgr( wxFrameLayout* pPanel );
+ // Constructor, taking a frame layout.
+ cbGCUpdatesMgr( wxFrameLayout* pPanel );
- // notificiactions received from Frame Layout :
+ // Receives notifications from the frame layout.
+ virtual void OnStartChanges();
- virtual void OnStartChanges();
-
- // refreshes parts of the frame layout, which need an update
- virtual void UpdateNow();
+ // Refreshes the parts of the frame layout which need an update.
+ virtual void UpdateNow();
};
#endif /* __GCUPDATESMGR_G__ */
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: hintanimpl.h
+// Purpose: Header for cbHintAnimationPlugin class.
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 9/11/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __HINTANIMPL_G__
class cbHintAnimTimer;
+/*
+A plugin to draw animated hints when the user drags a pane.
+*/
+
class cbHintAnimationPlugin : public cbPluginBase
{
- DECLARE_DYNAMIC_CLASS( cbHintAnimationPlugin )
+ DECLARE_DYNAMIC_CLASS( cbHintAnimationPlugin )
protected:
- friend class cbHintAnimTimer;
+ friend class cbHintAnimTimer;
- wxScreenDC* mpScrDc; // created while tracking hint-rect
- cbHintAnimTimer* mpAnimTimer;
+ wxScreenDC* mpScrDc; // created while tracking hint-rect
+ cbHintAnimTimer* mpAnimTimer;
- // FOR NOW:: try it without mutually exculisve locks
- volatile wxRect mCurRect;
+ // FOR NOW:: try it without mutually exculisve locks
+ volatile wxRect mCurRect;
- // state variables
+ // state variables
- bool mAnimStarted;
- bool mStopPending;
+ bool mAnimStarted;
+ bool mStopPending;
- bool mPrevInClient;
- bool mCurInClient;
+ bool mPrevInClient;
+ bool mCurInClient;
- wxRect mPrevRect;
+ wxRect mPrevRect;
public:
- int mMorphDelay; // delay between frames in miliseconds, default: 20
- int mMaxFrames; // number of iterations for hint morphing, default: 30
- // (morph duration = mMorphDelay * mMaxFrames msec)
+ int mMorphDelay; // delay between frames in miliseconds, default: 20
+ int mMaxFrames; // number of iterations for hint morphing, default: 30
+ // (morph duration = mMorphDelay * mMaxFrames msec)
- int mInClientHintBorder; // default: 4 pixels
+ int mInClientHintBorder; // default: 4 pixels
- bool mAccelerationOn; // TRUE, if morph accelerates, otherwise morph
- // speed is constant. Default: TRUE
+ bool mAccelerationOn; // TRUE, if morph accelerates, otherwise morph
+ // speed is constant. Default: TRUE
- // TBD:: get/set methods for above members
+ // TBD:: get/set methods for above members
protected:
- void StartTracking();
- void DrawHintRect ( wxRect& rect, bool isInClientRect);
- void EraseHintRect( wxRect& rect, bool isInClientRect);
+ // Internal function for starting tracking.
+ void StartTracking();
+
+ // Internal function for drawing a hint rectangle.
+ void DrawHintRect ( wxRect& rect, bool isInClientRect);
- void FinishTracking();
+ // Internal function for erasing a hint rectangle.
+ void EraseHintRect( wxRect& rect, bool isInClientRect);
- void DoDrawHintRect( wxRect& rect, bool isInClientRect);
+ // Internal function for finishing tracking.
+ void FinishTracking();
- void RectToScr( wxRect& frameRect, wxRect& scrRect );
+ // Internal function for drawing a hint rectangle.
+ void DoDrawHintRect( wxRect& rect, bool isInClientRect);
+
+ // Internal function for translating coordinates.
+ void RectToScr( wxRect& frameRect, wxRect& scrRect );
public:
- cbHintAnimationPlugin(void);
+ // Default constructor.
+ cbHintAnimationPlugin();
- ~cbHintAnimationPlugin();
+ // Constructor, taking a layout panel and pane mask.
+ cbHintAnimationPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
- cbHintAnimationPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
+ // Destructor.
+ ~cbHintAnimationPlugin();
- void OnDrawHintRect( cbDrawHintRectEvent& event );
+ // Event handler respoding to hint draw events.
+ void OnDrawHintRect( cbDrawHintRectEvent& event );
- DECLARE_EVENT_TABLE()
+ DECLARE_EVENT_TABLE()
};
-// helper classes
+/*
+A private helper class.
+*/
struct MorphInfoT
{
- wxPoint mFrom;
- wxPoint mTill;
+ wxPoint mFrom;
+ wxPoint mTill;
};
+/*
+A private helper class.
+*/
+
class cbHintAnimTimer : public wxTimer
{
protected:
- friend class cbHintAnimationPlugin;
+ friend class cbHintAnimationPlugin;
- wxRect mPrevMorphed;
+ wxRect mPrevMorphed;
- MorphInfoT mUpperLeft;
- MorphInfoT mLowerRight;
- int mCurIter;
+ MorphInfoT mUpperLeft;
+ MorphInfoT mLowerRight;
+ int mCurIter;
- long mLock;
+ long mLock;
- cbHintAnimationPlugin* mpPl;
+ cbHintAnimationPlugin* mpPl;
- void MorphPoint( wxPoint& origin, MorphInfoT& info, wxPoint& point );
+ void MorphPoint( wxPoint& origin, MorphInfoT& info, wxPoint& point );
public:
- cbHintAnimTimer(void);
+ cbHintAnimTimer(void);
- virtual void Notify(void);
+ virtual void Notify(void);
- virtual bool Init( cbHintAnimationPlugin* pAnimPl, bool reinit );
+ virtual bool Init( cbHintAnimationPlugin* pAnimPl, bool reinit );
};
#endif /* __HINTANIMPL_G__ */
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: newbmpbtn.h
+// Purpose: wxNewBitmapButton header.
// Author: Aleksandras Gluchovas
// Modified by:
// Created: ??/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __NEWBMPBTN_G__
#include "wx/button.h"
#include "wx/string.h"
-// button lable-text alignment types
+// button label-text alignment types
#define NB_ALIGN_TEXT_RIGHT 0
#define NB_ALIGN_TEXT_BOTTOM 1
class wxNewBitmapButton;
class wxBorderLessBitmapButton;
-// alternative class for wxBmpButton
+/*
+This is an alternative class to wxBitmapButton. It is used
+in the implementation of dynamic toolbars.
+*/
class wxNewBitmapButton: public wxPanel
{
- DECLARE_DYNAMIC_CLASS(wxNewBitmapButton)
+ DECLARE_DYNAMIC_CLASS(wxNewBitmapButton)
protected:
- friend class wxNewBitmapButtonSerializer;
+ friend class wxNewBitmapButtonSerializer;
- int mTextToLabelGap;
- int mMarginX;
- int mMarginY;
- int mTextAlignment;
- bool mIsSticky;
- bool mIsFlat;
+ int mTextToLabelGap;
+ int mMarginX;
+ int mMarginY;
+ int mTextAlignment;
+ bool mIsSticky;
+ bool mIsFlat;
- wxString mLabelText;
- wxString mImageFileName;
- wxBitmapType mImageFileType;
+ wxString mLabelText;
+ wxString mImageFileName;
+ wxBitmapType mImageFileType;
- wxBitmap mDepressedBmp; // source image for rendering
- // labels for particular state
+ wxBitmap mDepressedBmp; // source image for rendering
+ // labels for particular state
- wxBitmap mFocusedBmp; // may not be always present -
- // only if mHasFocusedBmp is TRUE
+ wxBitmap mFocusedBmp; // may not be always present -
+ // only if mHasFocusedBmp is TRUE
- wxBitmap* mpDepressedImg;
- wxBitmap* mpPressedImg;
- wxBitmap* mpDisabledImg;
- wxBitmap* mpFocusedImg;
+ wxBitmap* mpDepressedImg;
+ wxBitmap* mpPressedImg;
+ wxBitmap* mpDisabledImg;
+ wxBitmap* mpFocusedImg;
- // button state variables;
- bool mDragStarted;
- bool mIsPressed;
- bool mIsInFocus;
- bool mPrevPressedState;
- bool mPrevInFocusState;
+ // button state variables;
+ bool mDragStarted;
+ bool mIsPressed;
+ bool mIsInFocus;
+ bool mPrevPressedState;
+ bool mPrevInFocusState;
- bool mHasFocusedBmp;
+ bool mHasFocusedBmp;
- // type of event which is fired upon depression of this button
- int mFiredEventType;
+ // type of event which is fired upon depression of this button
+ int mFiredEventType;
- // pens for drawing decorations (borders)
- wxPen mBlackPen;
- wxPen mDarkPen;
- wxPen mGrayPen;
- wxPen mLightPen;
+ // pens for drawing decorations (borders)
+ wxPen mBlackPen;
+ wxPen mDarkPen;
+ wxPen mGrayPen;
+ wxPen mLightPen;
- bool mIsCreated;
- int mSizeIsSet;
+ bool mIsCreated;
+ int mSizeIsSet;
protected:
- void DestroyLabels();
- // returns the label which match the current button state
- virtual wxBitmap* GetStateLabel();
+ // Internal function for destroying labels.
+ void DestroyLabels();
- virtual void DrawShade( int outerLevel,
- wxDC& dc,
- wxPen& upperLeftSidePen,
- wxPen& lowerRightSidePen );
+ // Returns the label that matches the current button state.
+ virtual wxBitmap* GetStateLabel();
- bool IsInWindow( int x,int y );
+ // Draws shading on the button.
+ virtual void DrawShade( int outerLevel,
+ wxDC& dc,
+ wxPen& upperLeftSidePen,
+ wxPen& lowerRightSidePen );
+
+ // Returns TRUE if the given point is in the window.
+ bool IsInWindow( int x, int y );
public:
- wxNewBitmapButton( const wxBitmap& labelBitmap = wxNullBitmap,
- const wxString& labelText = "",
- int alignText = NB_ALIGN_TEXT_BOTTOM,
- bool isFlat = TRUE,
- // this is the default type of fired events
- int firedEventType = wxEVT_COMMAND_MENU_SELECTED,
- int marginX = 2,
- int marginY = 2,
- int textToLabelGap = 2,
- bool isSticky = FALSE
- );
-
- // use this constructor if buttons have to be persistant
-
- wxNewBitmapButton( const wxString& bitmapFileName,
+ // Constructor.
+ wxNewBitmapButton( const wxBitmap& labelBitmap = wxNullBitmap,
+ const wxString& labelText = "",
+ int alignText = NB_ALIGN_TEXT_BOTTOM,
+ bool isFlat = TRUE,
+ // this is the default type of fired events
+ int firedEventType = wxEVT_COMMAND_MENU_SELECTED,
+ int marginX = 2,
+ int marginY = 2,
+ int textToLabelGap = 2,
+ bool isSticky = FALSE
+ );
+
+ // Use this constructor if buttons have to be persistant
+ wxNewBitmapButton( const wxString& bitmapFileName,
const wxBitmapType bitmapFileType = wxBITMAP_TYPE_BMP,
const wxString& labelText = "",
int alignText = NB_ALIGN_TEXT_BOTTOM,
bool isSticky = FALSE
);
- ~wxNewBitmapButton();
+ // Destructor.
+ ~wxNewBitmapButton();
+
+ // This function should be called after Create. It renders the labels, having
+ // reloaded the button image if necessary.
+ virtual void Reshape();
+
+ // Sets the label and optionally label text.
+ virtual void SetLabel(const wxBitmap& labelBitmap, const wxString& labelText = "" );
+
+ // Sets the text alignment and margins.
+ virtual void SetAlignments( int alignText = NB_ALIGN_TEXT_BOTTOM,
+ int marginX = 2,
+ int marginY = 2,
+ int textToLabelGap = 2);
+
+ // Draws the decorations.
+ virtual void DrawDecorations( wxDC& dc );
+
+ // Draws the label.
+ virtual void DrawLabel( wxDC& dc );
+
+ // Renders the label image.
+ virtual void RenderLabelImage( wxBitmap*& destBmp, wxBitmap* srcBmp,
+ bool isEnabled = TRUE,
+ bool isPressed = FALSE);
+
+ // Renders label images.
+ virtual void RenderLabelImages();
+
+ // Renders label images.
+ virtual void RenderAllLabelImages();
+
+ // Responds to a left mouse button down event.
+ void OnLButtonDown( wxMouseEvent& event );
- // should be called after Create();
- virtual void Reshape();
+ // Responds to a left mouse button up event.
+ void OnLButtonUp( wxMouseEvent& event );
- // overridables
- virtual void SetLabel(const wxBitmap& labelBitmap, const wxString& labelText = "" );
-
- virtual void SetAlignments( int alignText = NB_ALIGN_TEXT_BOTTOM,
- int marginX = 2,
- int marginY = 2,
- int textToLabelGap = 2);
+ // Responds to a mouse move event.
+ void OnMouseMove( wxMouseEvent& event );
- virtual void DrawDecorations( wxDC& dc );
- virtual void DrawLabel( wxDC& dc );
+ // Responds to a size event.
+ void OnSize( wxSizeEvent& event );
- virtual void RenderLabelImage( wxBitmap*& destBmp, wxBitmap* srcBmp,
- bool isEnabled = TRUE,
- bool isPressed = FALSE);
+ // Responds to a paint event.
+ void OnPaint( wxPaintEvent& event );
- virtual void RenderLabelImages();
- virtual void RenderAllLabelImages();
+ // Responds to an erase background event.
+ void OnEraseBackground( wxEraseEvent& event );
- // event handlers
- void OnLButtonDown( wxMouseEvent& event );
- void OnLButtonUp( wxMouseEvent& event );
- void OnMouseMove( wxMouseEvent& event );
- void OnSize( wxSizeEvent& event );
- void OnPaint( wxPaintEvent& event );
- void OnEraseBackground( wxEraseEvent& event );
- void OnKillFocus( wxFocusEvent& event );
+ // Responds to a kill focus event.
+ void OnKillFocus( wxFocusEvent& event );
- DECLARE_EVENT_TABLE()
+ DECLARE_EVENT_TABLE()
};
#endif /* __NEWBMPBTN_G__ */
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Central header file for control-bar related classes
-//
+// Name: panedrawpl.h
+// Purpose: cbPaneDrawPlugin class header.
// Author: Aleksandras Gluchovas <mailto:alex@soften.ktu.lt>
// Modified by:
// Created: 06/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __PANEDRAWPL_G__
#include "wx/fl/controlbar.h"
/*
- * Simple, but all-in-one plugin implementation. Resembles look & feel of
- * to MFC control-bars. Handles painting of pane and items in it.
- * Fires bar/layout customization event, when user right-clicks bar/pane.
- * Hooking an instance of this and row-layouting plugins per each pane,
- * would be enough for the frame layout to function properly.
- * (they are plugged in autimatically by wxFrameLayout class)
- */
+Simple but all-in-one plugin implementation. Resembles the look and feel of
+MFC control-bars. The class handles painting of the pane and the items in it;
+it generates bar/layout customization events, when the user right-clicks the bar/pane.
+Hooking an instance of this and row-layout plugins for each pane
+would be enough for the frame layout to function properly
+(they are plugged in automatically by the wxFrameLayout class).
+*/
class cbPaneDrawPlugin : public cbPluginBase
{
public:
- DECLARE_DYNAMIC_CLASS( cbPaneDrawPlugin )
+ DECLARE_DYNAMIC_CLASS( cbPaneDrawPlugin )
protected:
- // resizing bars/rows state variables
- bool mResizeStarted;
- bool mResizeCursorOn;
- wxPoint mDragOrigin;
+ // resizing bars/rows state variables
+ bool mResizeStarted;
+ bool mResizeCursorOn;
+ wxPoint mDragOrigin;
- cbBarInfo* mpDraggedBar; // also used when in bar-drag action
- cbRowInfo* mpResizedRow;
+ cbBarInfo* mpDraggedBar; // also used when in bar-drag action
+ cbRowInfo* mpResizedRow;
- bool mRowHandleHitted;
- bool mIsUpperHandle;
- bool mBarHandleHitted;
- bool mIsLeftHandle;
- bool mBarContentHitted;
+ bool mRowHandleHitted;
+ bool mIsUpperHandle;
+ bool mBarHandleHitted;
+ bool mIsLeftHandle;
+ bool mBarContentHitted;
- // contstraints for dragging the handle
- wxRect mHandleDragArea;
- bool mHandleIsVertical;
- int mHandleOfs;
- int mDraggedDelta;
- wxPoint mPrevPos;
+ // contstraints for dragging the handle
+ wxRect mHandleDragArea;
+ bool mHandleIsVertical;
+ int mHandleOfs;
+ int mDraggedDelta;
+ wxPoint mPrevPos;
- // used for handling, start-draw-in-area events
- wxClientDC* mpClntDc;
+ // used for handling, start-draw-in-area events
+ wxClientDC* mpClntDc;
- cbDockPane* mpPane; // is set up temorary short-cut, while handling event
+ cbDockPane* mpPane; // is set up temorary short-cut, while handling event
protected:
- // helpers
- void DrawDraggedHandle( const wxPoint& pos, cbDockPane& pane );
+ // Internal helper: draws the dragged handle.
+ void DrawDraggedHandle( const wxPoint& pos, cbDockPane& pane );
- virtual void DrawPaneShade( wxDC& dc, int alignment );
- virtual void DrawPaneShadeForRow( cbRowInfo* pRow, wxDC& dc );
+ // Internal helper: draws the pane shading.
+ virtual void DrawPaneShade( wxDC& dc, int alignment );
- virtual void DrawUpperRowHandle( cbRowInfo* pRow, wxDC& dc );
- virtual void DrawLowerRowHandle( cbRowInfo* pRow, wxDC& dc );
+ // Internal helper: draws the pane shading for a row.
+ virtual void DrawPaneShadeForRow( cbRowInfo* pRow, wxDC& dc );
- virtual void DrawUpperRowShades( cbRowInfo* pRow, wxDC& dc, int level );
- virtual void DrawLowerRowShades( cbRowInfo* pRow, wxDC& dc, int level );
+ // Internal helper: draws the upper row handle.
+ virtual void DrawUpperRowHandle( cbRowInfo* pRow, wxDC& dc );
- virtual void DrawBarInnerShadeRect( cbBarInfo* pBar, wxDC& dc );
+ // Internal helper: draws the lower row handle.
+ virtual void DrawLowerRowHandle( cbRowInfo* pRow, wxDC& dc );
- virtual void DrawShade( int level, wxRect& rect, int alignment, wxDC& dc );
- virtual void DrawShade1( int level, wxRect& rect, int alignment, wxDC& dc );
+ // Internal helper: draws the upper row shading.
+ virtual void DrawUpperRowShades( cbRowInfo* pRow, wxDC& dc, int level );
- inline void SetLightPixel( int x, int y, wxDC& dc );
- inline void SetDarkPixel ( int x, int y, wxDC& dc );
+ // Internal helper: draws the lower row shading.
+ virtual void DrawLowerRowShades( cbRowInfo* pRow, wxDC& dc, int level );
+
+ // Internal helper: draws the inner bar shading.
+ virtual void DrawBarInnerShadeRect( cbBarInfo* pBar, wxDC& dc );
+
+ // Internal helper: draws shading.
+ virtual void DrawShade( int level, wxRect& rect, int alignment, wxDC& dc );
+
+ // Internal helper: draws shading.
+ virtual void DrawShade1( int level, wxRect& rect, int alignment, wxDC& dc );
+
+ // Internal helper: sets a light pixel at the given location.
+ inline void SetLightPixel( int x, int y, wxDC& dc );
+
+ // Internal helper: sets a dark pixel at the given location.
+ inline void SetDarkPixel ( int x, int y, wxDC& dc );
public:
- cbPaneDrawPlugin(void);
+ // Default constructor.
+ cbPaneDrawPlugin();
+
+ // Constructor taking frame layout pane and a pane mask.
+ cbPaneDrawPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
+
+ // Destructor.
+ virtual ~cbPaneDrawPlugin();
+
+ // Clone function, returning a new instance of this class.
+ virtual cbPluginBase* Clone() { return new cbPaneDrawPlugin(0,0); }
+
+ // Handler for left mouse button down events.
+ void OnLButtonDown( cbLeftDownEvent& event );
+
+ // Handler for left double-click mouse button down events.
+ void OnLDblClick ( cbLeftDClickEvent& event );
+
+ // Handler for left mouse button up events.
+ void OnLButtonUp ( cbLeftUpEvent& event );
+
+ // Handler for right mouse button up events.
+ void OnRButtonUp ( cbRightUpEvent& event );
+
+ // Handler for mouse move events.
+ void OnMouseMove ( cbMotionEvent& event );
+
+ // Handler for draw pane background events.
+ void OnDrawPaneBackground ( cbDrawPaneBkGroundEvent& event );
+
+ // Handler for draw pane decoration events.
+ void OnDrawPaneDecorations( cbDrawPaneDecorEvent& event );
- cbPaneDrawPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
+ // Handler for draw row decoration events.
+ void OnDrawRowDecorations ( cbDrawRowDecorEvent& event );
- virtual ~cbPaneDrawPlugin();
+ // Handler for draw row handles events.
+ void OnDrawRowHandles ( cbDrawRowHandlesEvent& event );
- virtual cbPluginBase* Clone() { return new cbPaneDrawPlugin(0,0); }
+ // Handler for draw row background events.
+ void OnDrawRowBackground ( cbDrawRowBkGroundEvent& event );
- // handlers for plugin-events
+ // Handler for bar size events.
+ void OnSizeBarWindow ( cbSizeBarWndEvent& event );
- void OnLButtonDown( cbLeftDownEvent& event );
- void OnLDblClick ( cbLeftDClickEvent& event );
- void OnLButtonUp ( cbLeftUpEvent& event );
- void OnRButtonUp ( cbRightUpEvent& event );
- void OnMouseMove ( cbMotionEvent& event );
+ // Handler for draw bar decorations events.
+ void OnDrawBarDecorations ( cbDrawBarDecorEvent& event );
- void OnDrawPaneBackground ( cbDrawPaneBkGroundEvent& event );
- void OnDrawPaneDecorations( cbDrawPaneDecorEvent& event );
+ // Handler for draw bar handles events.
+ void OnDrawBarHandles ( cbDrawBarHandlesEvent& event );
- void OnDrawRowDecorations ( cbDrawRowDecorEvent& event );
- void OnDrawRowHandles ( cbDrawRowHandlesEvent& event );
- void OnDrawRowBackground ( cbDrawRowBkGroundEvent& event );
-
- void OnSizeBarWindow ( cbSizeBarWndEvent& event );
- void OnDrawBarDecorations ( cbDrawBarDecorEvent& event );
- void OnDrawBarHandles ( cbDrawBarHandlesEvent& event );
+ // Handler for start draw in area events.
+ void OnStartDrawInArea ( cbStartDrawInAreaEvent& event );
- void OnStartDrawInArea ( cbStartDrawInAreaEvent& event );
- void OnFinishDrawInArea ( cbFinishDrawInAreaEvent& event );
+ // Handler for finish draw in area events.
+ void OnFinishDrawInArea ( cbFinishDrawInAreaEvent& event );
- DECLARE_EVENT_TABLE()
+ DECLARE_EVENT_TABLE()
};
#endif /* __PANEDRAWPL_G__ */
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: rowdragpl.h
+// Purpose: cbRowDragPlugin class header.
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 06/10/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __ROWDRAGPL_G__
#include "wx/fl/controlbar.h"
/*
- * Plugin adds row-dragging fuctionality to the pane.
- * Handles mouse/movement and pane-background erasing plugin-events.
- * Behaviour and appearence resembles drag & drop posotioning
- * of the toolbar-rows int Netscape Comunicator 4.xx.
- */
+This plugin adds row-dragging functionality to the pane.
+It handles mouse movement and pane background-erasing plugin events.
+The behaviour and appearance resembles drag and drop positioning
+of the toolbar rows in Netscape Communicator 4.xx.
+*/
class cbRowDragPlugin : public cbPluginBase
{
- DECLARE_DYNAMIC_CLASS( cbRowDragPlugin )
+ DECLARE_DYNAMIC_CLASS( cbRowDragPlugin )
public:
- // background colours for the highlighted/unhighlighted icons
+ // background colours for the highlighted/unhighlighted icons
- wxColour mHightColor; // light-blue for NC-look
- wxColour mLowColor; // light-gray -/-
- wxColour mTrianInnerColor; // blue -/-
- wxPen mTrianInnerPen; // black -/-
+ wxColour mHightColor; // light-blue for NC-look
+ wxColour mLowColor; // light-gray -/-
+ wxColour mTrianInnerColor; // blue -/-
+ wxPen mTrianInnerPen; // black -/-
protected:
- friend class cbRowDragPluginSerializer;
+ friend class cbRowDragPluginSerializer;
- // drag & drop state variables
- bool mDragStarted;
- bool mDecisionMode;
- wxPoint mDragOrigin;
- int mCurDragOfs;
- bool mCaptureIsOn;
+ // drag & drop state variables
+ bool mDragStarted;
+ bool mDecisionMode;
+ wxPoint mDragOrigin;
+ int mCurDragOfs;
+ bool mCaptureIsOn;
- // saved margins of the pane
- int mSvTopMargin;
- int mSvBottomMargin;
- int mSvLeftMargin;
- int mSvRightMargin;
+ // saved margins of the pane
+ int mSvTopMargin;
+ int mSvBottomMargin;
+ int mSvLeftMargin;
+ int mSvRightMargin;
- //on-screen drawing state variables
- wxBitmap* mpPaneImage;
- wxBitmap* mpRowImage;
- wxBitmap* mpCombinedImage;
+ // on-screen drawing state variables
+ wxBitmap* mpPaneImage;
+ wxBitmap* mpRowImage;
+ wxBitmap* mpCombinedImage;
- wxScreenDC* mpScrDc;
- wxRect mCombRect;
- wxSize mRowImgDim;
- int mInitialRowOfs;
+ wxScreenDC* mpScrDc;
+ wxRect mCombRect;
+ wxSize mRowImgDim;
+ int mInitialRowOfs;
- // NOTE:: if mpRowInFocus is not NULL, then mCollapsedIconInFocus is -1,
- // and v.v. (two different items cannot be in focus at the same time)
+ // NOTE:: if mpRowInFocus is not NULL, then mCollapsedIconInFocus is -1,
+ // and v.v. (two different items cannot be in focus at the same time)
- cbRowInfo* mpRowInFocus;
- int mCollapsedIconInFocus;
+ cbRowInfo* mpRowInFocus;
+ int mCollapsedIconInFocus;
- cbDockPane* mpPane; // is set up temorarely, while handling event
+ cbDockPane* mpPane; // is set up temorarely, while handling event
- wxList mHiddenBars;
+ wxList mHiddenBars;
- wxBitmap* CaptureDCArea( wxDC& dc, wxRect& area );
+ // Helper for drag and drop.
+ wxBitmap* CaptureDCArea( wxDC& dc, wxRect& area );
- // helpers for drag&drop
+ // Helper for drag and drop.
+ int GetHRowsCountForPane( cbDockPane* pPane );
- int GetHRowsCountForPane( cbDockPane* pPane );
+ // Helper for drag and drop.
+ void SetMouseCapture( bool captureOn );
- void SetMouseCapture( bool captureOn );
- void PrepareForRowDrag();
- void ShowDraggedRow( int offset );
- void ShowPaneImage();
- void FinishOnScreenDraw();
- void CollapseRow( cbRowInfo* pRow );
- void ExpandRow( int collapsedIconIdx );
- void InsertDraggedRowBefore( cbRowInfo* pBeforeRow );
- bool ItemIsInFocus();
- void CheckPrevItemInFocus( cbRowInfo* pRow, int iconIdx );
- void UnhiglightItemInFocus();
+ // Helper for drag and drop.
+ void PrepareForRowDrag();
- cbRowInfo* GetFirstRow();
+ // Helper for drag and drop.
+ void ShowDraggedRow( int offset );
- // "hard-coded metafile" for NN-look
+ // Helper for drag and drop.
+ void ShowPaneImage();
- virtual void DrawTrianUp( wxRect& inRect, wxDC& dc );
- virtual void DrawTrianDown( wxRect& inRect, wxDC& dc );
- virtual void DrawTrianRight( wxRect& inRect, wxDC& dc );
- virtual void Draw3DPattern( wxRect& inRect, wxDC& dc );
- virtual void DrawRombShades( wxPoint& p1, wxPoint& p2, wxPoint& p3, wxPoint& p4, wxDC& dc );
- virtual void DrawOrtoRomb( wxRect& inRect, wxDC& dc, wxBrush& bkBrush );
- virtual void DrawRomb( wxRect& inRect, wxDC& dc, wxBrush& bkBrush );
- virtual void Draw3DRect( wxRect& inRect, wxDC& dc, wxBrush& bkBrush );
- virtual void DrawRectShade( wxRect& inRect, wxDC& dc,
- int level, wxPen& upperPen, wxPen& lowerPen );
+ // Helper for drag and drop.
+ void FinishOnScreenDraw();
- virtual void GetRowHintRect( cbRowInfo* pRow, wxRect& rect );
- virtual void GetCollapsedInconRect( int iconIdx, wxRect& rect );
+ // Helper for drag and drop.
+ void CollapseRow( cbRowInfo* pRow );
- virtual int GetCollapsedIconsPos();
+ // Helper for drag and drop.
+ void ExpandRow( int collapsedIconIdx );
+
+ // Helper for drag and drop.
+ void InsertDraggedRowBefore( cbRowInfo* pBeforeRow );
+
+ // Helper for drag and drop.
+ bool ItemIsInFocus();
+
+ // Helper for drag and drop.
+ void CheckPrevItemInFocus( cbRowInfo* pRow, int iconIdx );
+
+ // Helper for drag and drop.
+ void UnhighlightItemInFocus();
+
+ // Helper for drag and drop.
+ cbRowInfo* GetFirstRow();
+
+ // Implements 'hard-coded metafile' for Netscape Navigator look.
+ virtual void DrawTrianUp( wxRect& inRect, wxDC& dc );
+
+ // Implements 'hard-coded metafile' for Netscape Navigator look.
+ virtual void DrawTrianDown( wxRect& inRect, wxDC& dc );
+
+ // Implements 'hard-coded metafile' for Netscape Navigator look.
+ virtual void DrawTrianRight( wxRect& inRect, wxDC& dc );
+
+ // Implements 'hard-coded metafile' for Netscape Navigator look.
+ virtual void Draw3DPattern( wxRect& inRect, wxDC& dc );
+
+ // Implements 'hard-coded metafile' for Netscape Navigator look.
+ virtual void DrawRombShades( wxPoint& p1, wxPoint& p2, wxPoint& p3, wxPoint& p4, wxDC& dc );
+
+ // Implements 'hard-coded metafile' for Netscape Navigator look.
+ virtual void DrawOrtoRomb( wxRect& inRect, wxDC& dc, wxBrush& bkBrush );
+
+ // Implements 'hard-coded metafile' for Netscape Navigator look.
+ virtual void DrawRomb( wxRect& inRect, wxDC& dc, wxBrush& bkBrush );
+
+ // Implements 'hard-coded metafile' for Netscape Navigator look.
+ virtual void Draw3DRect( wxRect& inRect, wxDC& dc, wxBrush& bkBrush );
+
+ // Implements 'hard-coded metafile' for Netscape Navigator look.
+ virtual void DrawRectShade( wxRect& inRect, wxDC& dc,
+ int level, wxPen& upperPen, wxPen& lowerPen );
+
+ // Helper for drag and drop.
+ virtual void GetRowHintRect( cbRowInfo* pRow, wxRect& rect );
+
+ // Helper for drag and drop.
+ virtual void GetCollapsedInconRect( int iconIdx, wxRect& rect );
+
+ // Helper for drag and drop.
+ virtual int GetCollapsedIconsPos();
public:
- cbRowDragPlugin(void);
+ // Default constructor.
+ cbRowDragPlugin();
+
+ // Constructor, taking paren layout frame and pane mask.
+ cbRowDragPlugin( wxFrameLayout* pLayout, int paneMask = wxALL_PANES );
+
+ // Destructor.
+ virtual ~cbRowDragPlugin();
- cbRowDragPlugin( wxFrameLayout* pLayout, int paneMask = wxALL_PANES );
- virtual ~cbRowDragPlugin();
+ // Clone function, returning a new instance of this class.
+ virtual cbPluginBase* Clone() { return new cbRowDragPlugin(NULL,0); }
- virtual cbPluginBase* Clone() { return new cbRowDragPlugin(NULL,0); }
+ // Called to initialize this plugin.
+ virtual void OnInitPlugin();
- virtual void OnInitPlugin();
+ // Handles mouse move plugin events (appearance-independent logic).
+ void OnMouseMove ( cbMotionEvent& event );
- // handlers for plugin events (appearence-independent logic)
+ // Handles left button down plugin events (appearance-independent logic).
+ void OnLButtonDown( cbLeftDownEvent& event );
- void OnMouseMove ( cbMotionEvent& event );
- void OnLButtonDown( cbLeftDownEvent& event );
- void OnLButtonUp ( cbLeftUpEvent& event );
- void OnDrawPaneBackground( cbDrawPaneDecorEvent& event );
+ // Handles left button up plugin events (appearance-independent logic).
+ void OnLButtonUp ( cbLeftUpEvent& event );
- // overridables (appearence-depedent)
+ // Handles pane drawing plugin events (appearance-independent logic).
+ void OnDrawPaneBackground( cbDrawPaneDecorEvent& event );
- virtual void DrawCollapsedRowIcon( int index, wxDC& dc, bool isHighlighted );
- virtual void DrawCollapsedRowsBorder( wxDC& dc );
- virtual void DrawRowsDragHintsBorder( wxDC& dc );
- virtual void DrawRowDragHint( cbRowInfo* pRow, wxDC& dc, bool isHighlighted );
- virtual void DrawEmptyRow( wxDC& dc, wxRect& rowBounds );
+ // Draws collapsed row icon (appearance-dependent).
+ virtual void DrawCollapsedRowIcon( int index, wxDC& dc, bool isHighlighted );
- virtual int GetCollapsedRowIconHeight();
- virtual int GetRowDragHintWidth();
+ // Draws collapsed rows border (appearance-dependent).
+ virtual void DrawCollapsedRowsBorder( wxDC& dc );
- virtual void SetPaneMargins();
+ // Draws rows drag hints border (appearance-dependent).
+ virtual void DrawRowsDragHintsBorder( wxDC& dc );
+ // Draws row drag hint (appearance-dependent).
+ virtual void DrawRowDragHint( cbRowInfo* pRow, wxDC& dc, bool isHighlighted );
- virtual bool HitTestCollapsedRowIcon( int iconIdx, const wxPoint& pos );
- virtual bool HitTestRowDragHint( cbRowInfo* pRow, const wxPoint& pos );
+ // Draws empty row (appearance-dependent).
+ virtual void DrawEmptyRow( wxDC& dc, wxRect& rowBounds );
- DECLARE_EVENT_TABLE()
+ // Gets the collapsed row icon height.
+ virtual int GetCollapsedRowIconHeight();
+
+ // Gets the row drag hint width.
+ virtual int GetRowDragHintWidth();
+
+ // Sets the pane margins.
+ virtual void SetPaneMargins();
+
+ // Test for the collapsed row icon position.
+ virtual bool HitTestCollapsedRowIcon( int iconIdx, const wxPoint& pos );
+
+ // Test for the row drag hint position.
+ virtual bool HitTestRowDragHint( cbRowInfo* pRow, const wxPoint& pos );
+
+ DECLARE_EVENT_TABLE()
};
-// internal helper-class
+/*
+Internal helper class.
+*/
class cbHiddenBarInfo : public wxObject
{
- DECLARE_DYNAMIC_CLASS( cbHiddenBarInfo )
+ DECLARE_DYNAMIC_CLASS( cbHiddenBarInfo )
public:
- cbBarInfo* mpBar;
- int mRowNo;
- int mIconNo;
- int mAlignment;
+ cbBarInfo* mpBar;
+ int mRowNo;
+ int mIconNo;
+ int mAlignment;
};
#endif /* __ROWDRAGPL_G__ */
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: rowlayoutpl.h
+// Purpose: cbRowLayoutPlugin header.
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 02/10/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __ROWLAYOUTPL_G__
#include "wx/fl/controlbar.h"
/*
- * Simple implementation of plugin, which handles row-layouting
- * requests sent from Frame Layout
- */
+Simple implementation of a plugin which handles row layout
+requests sent from a frame layout.
+*/
class cbRowLayoutPlugin : public cbPluginBase
{
- DECLARE_DYNAMIC_CLASS( cbRowLayoutPlugin )
+ DECLARE_DYNAMIC_CLASS( cbRowLayoutPlugin )
protected:
- cbDockPane* mpPane; // is set up temorarely, while handling event
+ cbDockPane* mpPane; // is set up temporarily, while handling event
protected:
- // not-fixed-bars layouting related helpers
+ // Internal helper relating to not-fixed-bars layout.
+ void FitBarsToRange( int from, int till, cbBarInfo* pTheBar, cbRowInfo* pRow );
- void FitBarsToRange( int from, int till, cbBarInfo* pTheBar, cbRowInfo* pRow );
- void RelayoutNotFixedBarsAround( cbBarInfo* pTheBar, cbRowInfo* pRow );
- void MinimzeNotFixedBars( cbRowInfo* pRow, cbBarInfo* pBarToPreserve );
- int GetRowFreeSpace( cbRowInfo* pRow );
-
- void RecalcLengthRatios( cbRowInfo* pRow );
- void ApplyLengthRatios( cbRowInfo* pRow );
- void ExpandNotFixedBars( cbRowInfo* pRow );
- void AdjustLengthOfInserted( cbRowInfo* pRow, cbBarInfo* pTheBar );
+ // Internal helper relating to not-fixed-bars layout.
+ void RelayoutNotFixedBarsAround( cbBarInfo* pTheBar, cbRowInfo* pRow );
- void DetectBarHandles( cbRowInfo* pRow );
- void CheckIfAtTheBoundary( cbBarInfo* pTheBar, cbRowInfo& rowInfo );
+ // Internal helper relating to not-fixed-bars layout.
+ void MinimzeNotFixedBars( cbRowInfo* pRow, cbBarInfo* pBarToPreserve );
+ // Internal helper relating to not-fixed-bars layout.
+ int GetRowFreeSpace( cbRowInfo* pRow );
- // row-layouting helpers (simulate "bar-friction")
- int CalcRowHeight( cbRowInfo& row );
- void LayoutItemsVertically( cbRowInfo& row );
+ // Internal helper relating to not-fixed-bars layout.
+ void RecalcLengthRatios( cbRowInfo* pRow );
- void StickRightSideBars( cbBarInfo* pToBar );
+ // Internal helper relating to not-fixed-bars layout.
+ void ApplyLengthRatios( cbRowInfo* pRow );
- void SlideLeftSideBars ( cbBarInfo* pTheBar );
- void SlideRightSideBars( cbBarInfo* pTheBar );
+ // Internal helper relating to not-fixed-bars layout.
+ void ExpandNotFixedBars( cbRowInfo* pRow );
- void ShiftLeftTrashold ( cbBarInfo* pTheBar, cbRowInfo& row );
- void ShiftRightTrashold( cbBarInfo* pTheBar, cbRowInfo& row );
+ // Internal helper relating to not-fixed-bars layout.
+ void AdjustLengthOfInserted( cbRowInfo* pRow, cbBarInfo* pTheBar );
- void InsertBefore( cbBarInfo* pBeforeBar,
- cbBarInfo* pTheBar,
- cbRowInfo& row
- );
- void DoInsertBar( cbBarInfo* pTheBar, cbRowInfo& row );
+ // Internal helper relating to not-fixed-bars layout.
+ void DetectBarHandles( cbRowInfo* pRow );
+
+ // Internal helper relating to not-fixed-bars layout.
+ void CheckIfAtTheBoundary( cbBarInfo* pTheBar, cbRowInfo& rowInfo );
+
+
+ // Row layout helper simulating bar 'friction'.
+ int CalcRowHeight( cbRowInfo& row );
+
+ // Row layout helper simulating bar 'friction'.
+ void LayoutItemsVertically( cbRowInfo& row );
+
+
+ // Row layout helper simulating bar 'friction'.
+ void StickRightSideBars( cbBarInfo* pToBar );
+
+
+ // Row layout helper simulating bar 'friction'.
+ void SlideLeftSideBars ( cbBarInfo* pTheBar );
+
+ // Row layout helper simulating bar 'friction'.
+ void SlideRightSideBars( cbBarInfo* pTheBar );
+
+
+ // Row layout helper simulating bar 'friction'.
+ void ShiftLeftTrashold ( cbBarInfo* pTheBar, cbRowInfo& row );
+
+ // Row layout helper simulating bar 'friction'.
+ void ShiftRightTrashold( cbBarInfo* pTheBar, cbRowInfo& row );
+
+
+ // Insert the bar before the given row.
+ void InsertBefore( cbBarInfo* pBeforeBar,
+ cbBarInfo* pTheBar,
+ cbRowInfo& row
+ );
+
+ // Insert the bar before the given row.
+ void DoInsertBar( cbBarInfo* pTheBar, cbRowInfo& row );
public:
+ // Default constructor.
+ cbRowLayoutPlugin(void);
+
+ // Constructor taking frame layout pane and pane mask.
+ cbRowLayoutPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
+
+ // Responds to row resize event.
+ void OnResizeRow ( cbResizeRowEvent& event );
- cbRowLayoutPlugin(void);
+ // Responds to bar insertion event.
+ void OnInsertBar ( cbInsertBarEvent& event );
- cbRowLayoutPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
+ // Responds to bar removal event.
+ void OnRemoveBar ( cbRemoveBarEvent& event );
- // event handlers
+ // Responds to row layout event.
+ void OnLayoutRow ( cbLayoutRowEvent& event );
- void OnResizeRow ( cbResizeRowEvent& event );
- void OnInsertBar ( cbInsertBarEvent& event );
- void OnRemoveBar ( cbRemoveBarEvent& event );
- void OnLayoutRow ( cbLayoutRowEvent& event );
- void OnLayoutRows( cbLayoutRowsEvent& event );
+ // Responds to rows layout event.
+ void OnLayoutRows( cbLayoutRowsEvent& event );
- DECLARE_EVENT_TABLE()
+ DECLARE_EVENT_TABLE()
};
#endif /* __ROWLAYOUTPL_G__ */
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: toolwnd.h
+// Purpose: wxToolWindow, cbMiniButton, cbCloseBox, cbCollapseBox,
+// cbDockBox, cbFloatedBarWindow class declarations.
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 06/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __TOOLWND_G__
WX_DEFINE_ARRAY( cbMinitButtonPtrT, cbMiniButtonArrayT );
+/*
+A tool window is a special kind of frame that paints its own title, and
+can be used to implement small floating windows.
+*/
+
class wxToolWindow : public wxFrame
{
- DECLARE_DYNAMIC_CLASS( wxToolWindow )
+ DECLARE_DYNAMIC_CLASS( wxToolWindow )
-public: /** protected really, accessed only by serializers **/
+public: /** protected really, accessed only by serializers **/
- cbMiniButtonArrayT mButtons;
- wxWindow* mpClientWnd;
+ cbMiniButtonArrayT mButtons;
+ wxWindow* mpClientWnd;
- wxFont mTitleFont;
+ wxFont mTitleFont;
- int mTitleHeight;
- int mClntHorizGap;
- int mClntVertGap;
- int mWndVertGap;
- int mWndHorizGap;
- int mButtonGap;
- int mInTitleMargin;
- int mHintBorder;
+ int mTitleHeight;
+ int mClntHorizGap;
+ int mClntVertGap;
+ int mWndVertGap;
+ int mWndHorizGap;
+ int mButtonGap;
+ int mInTitleMargin;
+ int mHintBorder;
- bool mResizeStarted;
- bool mRealTimeUpdatesOn;
+ bool mResizeStarted;
+ bool mRealTimeUpdatesOn;
- int mMTolerance;
+ int mMTolerance;
- int mCursorType;
- bool mMouseCaptured;
+ int mCursorType;
+ bool mMouseCaptured;
- // drag&drop state variables
+ // drag&drop state variables
- wxPoint mDragOrigin;
- wxRect mInitialRect;
- wxRect mPrevHintRect;
- wxScreenDC* mpScrDc;
+ wxPoint mDragOrigin;
+ wxRect mInitialRect;
+ wxRect mPrevHintRect;
+ wxScreenDC* mpScrDc;
protected:
- void GetScrWindowRect( wxRect& r );
- void GetScrMousePos ( wxMouseEvent& event, wxPoint& pos );
- void SetHintCursor ( int type );
+ // Maps client coordinates to screen coordinates.
+ void GetScrWindowRect( wxRect& r );
+
+ // Gets the mouse position in screen coordinates.
+ void GetScrMousePos ( wxMouseEvent& event, wxPoint& pos );
+
+ // Sets the hint cursor.
+ void SetHintCursor ( int type );
- void CalcResizedRect( wxRect& rect, wxPoint& delta, const wxSize& minDim );
- void AdjustRectPos( const wxRect& original, const wxSize& newDim, wxRect& newRect );
- wxSize GetMinimalWndDim();
+ // Calculate resized rectangle.
+ void CalcResizedRect( wxRect& rect, wxPoint& delta, const wxSize& minDim );
- void DrawHintRect( const wxRect& r );
+ // Helper function.
+ void AdjustRectPos( const wxRect& original, const wxSize& newDim, wxRect& newRect );
- int HitTestWindow( wxMouseEvent& event );
+ // Helper function.
+ wxSize GetMinimalWndDim();
- void LayoutMiniButtons();
+ // Draws the hint rectangle.
+ void DrawHintRect( const wxRect& r );
+
+ // Tests if the mouse position is in this window.
+ int HitTestWindow( wxMouseEvent& event );
+
+ // Lays out the buttons.
+ void LayoutMiniButtons();
public:
-
- wxToolWindow();
- ~wxToolWindow();
- void SetClient( wxWindow* pWnd );
- wxWindow* GetClient();
+ // Default constructor.
+ wxToolWindow();
+
+ // Destructor.
+ ~wxToolWindow();
+
+ // Sets the client for this tool window.
+ void SetClient( wxWindow* pWnd );
+
+ // Returns the client window.
+ wxWindow* GetClient();
+
+ // Sets the title font.
+ void SetTitleFont( wxFont& font );
+
+ // Adds a button. Buttons are added in right-to-left order.
+ void AddMiniButton( cbMiniButton* pBtn );
+
+ // Responds to a paint event.
+ void OnPaint( wxPaintEvent& event );
+
+ // Responds to a mouse move event.
+ void OnMotion( wxMouseEvent& event );
- void SetTitleFont( wxFont& font );
+ // Responds to a mouse left down event.
+ void OnLeftDown( wxMouseEvent& event );
- // buttons are added in right-to-left order
- void AddMiniButton( cbMiniButton* pBtn );
+ // Responds to a mouse left up event.
+ void OnLeftUp( wxMouseEvent& event );
- void OnPaint( wxPaintEvent& event );
+ // Responds to a size event.
+ void OnSize( wxSizeEvent& event );
- void OnMotion( wxMouseEvent& event );
- void OnLeftDown( wxMouseEvent& event );
- void OnLeftUp( wxMouseEvent& event );
- void OnSize( wxSizeEvent& event );
+ // Responds to an erase background event.
+ void OnEraseBackground( wxEraseEvent& event );
- void OnEraseBackground( wxEraseEvent& event );
+ // Returns the preferred size for the window.
+ virtual wxSize GetPreferredSize( const wxSize& given );
- // overridables:
+ // Called when a mini button is clicked.
+ // By default, does nothing.
+ virtual void OnMiniButtonClicked( int btnIdx ) {}
- virtual wxSize GetPreferredSize( const wxSize& given );
- virtual void OnMiniButtonClicked( int btnIdx ) {}
- virtual bool HandleTitleClick( wxMouseEvent& event ) { return FALSE; }
+ // Handles clicking on the title. By default, does nothing.
+ virtual bool HandleTitleClick( wxMouseEvent& event ) { return FALSE; }
- DECLARE_EVENT_TABLE()
+ DECLARE_EVENT_TABLE()
};
// FIXME:: the code below should be moved to a separate file
#include "wx/fl/controlbar.h"
+/*
+cbMiniButton is the base class for a small button that can be placed in a wxToolWindow
+titlebar.
+*/
+
class cbMiniButton : public wxObject
{
public:
- wxPoint mPos;
- wxSize mDim;
- bool mVisible;
- bool mEnabled;
+ wxPoint mPos;
+ wxSize mDim;
+ bool mVisible;
+ bool mEnabled;
- wxFrameLayout* mpLayout;
- cbDockPane* mpPane;
- cbPluginBase* mpPlugin;
+ wxFrameLayout* mpLayout;
+ cbDockPane* mpPane;
+ cbPluginBase* mpPlugin;
- wxWindow* mpWnd;
+ wxWindow* mpWnd;
- bool mWasClicked;
- bool mDragStarted;
+ bool mWasClicked;
+ bool mDragStarted;
- bool mPressed;
+ bool mPressed;
public:
- cbMiniButton();
+ // Default constructor.
+ cbMiniButton();
+
+ // Set the position of the button.
+ void SetPos( const wxPoint& pos );
+
+ // Returns TRUE if the given position was over the button.
+ bool HitTest( const wxPoint& pos );
+
+ // Responds to a left down event.
+ void OnLeftDown( const wxPoint& pos );
+
+ // Responds to a left up event.
+ void OnLeftUp( const wxPoint& pos );
+
+ // Responds to a mouse move event.
+ void OnMotion( const wxPoint& pos );
- void SetPos( const wxPoint& pos );
- bool HitTest( const wxPoint& pos );
+ // Refreshes the button.
+ void Refresh();
- void OnLeftDown( const wxPoint& pos );
- void OnLeftUp( const wxPoint& pos );
- void OnMotion( const wxPoint& pos );
+ // Draws the button. Override this to implement
+ // the desired appearance.
+ virtual void Draw( wxDC& dc );
- void Refresh();
- virtual void Draw( wxDC& dc );
+ // Returns TRUE if the button was clicked.
+ bool WasClicked();
- bool WasClicked();
- void Reset();
+ // Reset the button.
+ void Reset();
- void Enable( bool enable ) { mEnabled = enable; }
+ // Enable or disable the button.
+ void Enable( bool enable ) { mEnabled = enable; }
- bool IsPressed() { return mPressed; }
+ // Returns TRUE if this button is pressed.
+ bool IsPressed() { return mPressed; }
};
-// classes specific to wxFrameLayout engine (FOR NOW in here...)
+/*
+cbCloseBox is a window close button, used in a wxToolWindow titlebar.
+*/
class cbCloseBox : public cbMiniButton
{
public:
- virtual void Draw( wxDC& dc );
+ // Draws the close button appearance.
+ virtual void Draw( wxDC& dc );
};
+/*
+cbCollapseBox is a window collapse button, used in a wxToolWindow titlebar.
+*/
+
class cbCollapseBox : public cbMiniButton
{
public:
- bool mIsAtLeft;
+ bool mIsAtLeft;
- virtual void Draw( wxDC& dc );
+ // Draws the collapse button appearance.
+ virtual void Draw( wxDC& dc );
};
+/*
+cbDockBox is a window dock button, used in a wxToolWindow titlebar.
+*/
+
class cbDockBox : public cbMiniButton
{
public:
- virtual void Draw( wxDC& dc );
+ // Draws the dock button appearance.
+ virtual void Draw( wxDC& dc );
};
+/*
+cbFloatedBarWindow is a kind of wxToolWindow,
+implementing floating toolbars.
+*/
+
class cbFloatedBarWindow : public wxToolWindow
{
- DECLARE_DYNAMIC_CLASS( cbFloatedBarWindow )
+ DECLARE_DYNAMIC_CLASS( cbFloatedBarWindow )
protected:
- cbBarInfo* mpBar;
- wxFrameLayout* mpLayout;
+ cbBarInfo* mpBar;
+ wxFrameLayout* mpLayout;
- friend class cbFloatedBarWindowSerializer;
+ friend class cbFloatedBarWindowSerializer;
public:
- cbFloatedBarWindow();
+ // Default constructor.
+ cbFloatedBarWindow();
+
+ // Sets the bar information for this window.
+ void SetBar( cbBarInfo* pBar );
+
+ // Sets the layout for this window.
+ void SetLayout( wxFrameLayout* pLayout );
- void SetBar( cbBarInfo* pBar );
- void SetLayout( wxFrameLayout* pLayout );
- cbBarInfo* GetBar();
+ // Returns the bar information for this window.
+ cbBarInfo* GetBar();
- // given coordinates are those of the bar itself
- // floated container window's position and size
- // are ajusted accordingly
+ // Position the floating window. The given coordinates
+ // are those of the bar itself; the floated container window's
+ // position and size are ajusted accordingly.
+ void PositionFloatedWnd( int scrX, int scrY,
+ int width, int height );
- void PositionFloatedWnd( int scrX, int scrY,
- int width, int height );
+ // Overridden function returning the preferred size.
+ virtual wxSize GetPreferredSize( const wxSize& given );
- // overriden methods of wxToolWindow
+ // Overridden function responding to mouse clicks on mini-buttons.
+ virtual void OnMiniButtonClicked( int btnIdx );
- virtual wxSize GetPreferredSize( const wxSize& given );
- virtual void OnMiniButtonClicked( int btnIdx );
- virtual bool HandleTitleClick( wxMouseEvent& event );
+ // Overridden function responding to mouse button clicks on the titlebar.
+ virtual bool HandleTitleClick( wxMouseEvent& event );
- void OnDblClick( wxMouseEvent& event );
+ // Responds to double-click mouse events.
+ void OnDblClick( wxMouseEvent& event );
- DECLARE_EVENT_TABLE()
+ DECLARE_EVENT_TABLE()
};
#endif /* __TOOLWND_G__ */
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: updatesmgr.h
+// Purpose: cbSimpleUpdatesMgr class declaration
// Author: Aleksandras Gluchovas (@Lithuania)
// Modified by:
// Created: 19/10/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __UPDATESMGR_G__
#include "wx/fl/controlbar.h"
/*
- * class implements slightly optimized logic for refreshing
- * areas of frame layout - which actually need to be updated.
- */
+This class implements slightly optimized logic for refreshing
+the areas of frame layout that actually need to be updated.
+*/
class cbSimpleUpdatesMgr : public cbUpdatesManagerBase
{
- DECLARE_DYNAMIC_CLASS( cbSimpleUpdatesMgr )
+ DECLARE_DYNAMIC_CLASS( cbSimpleUpdatesMgr )
protected:
- bool WasChanged( cbUpdateMgrData& data, wxRect& currentBounds );
+ // Helper function.
+ bool WasChanged( cbUpdateMgrData& data, wxRect& currentBounds );
public:
+ // Default constructor.
+ cbSimpleUpdatesMgr() {}
- cbSimpleUpdatesMgr(void) {}
+ // Constructor taking frame layout panel.
+ cbSimpleUpdatesMgr( wxFrameLayout* pPanel );
- cbSimpleUpdatesMgr( wxFrameLayout* pPanel );
+ // Notification received from Frame Layout in the order in which
+ // they would usually be invoked.
+ virtual void OnStartChanges();
- // notificiactions received from Frame Layout (in the order, in which
- // they usually would be invoked)
+ // Notification received from Frame Layout in the order in which
+ // they would usually be invoked.
+ virtual void OnRowWillChange( cbRowInfo* pRow, cbDockPane* pInPane );
- virtual void OnStartChanges();
+ // Notification received from Frame Layout in the order in which
+ // they would usually be invoked.
+ virtual void OnBarWillChange( cbBarInfo* pBar, cbRowInfo* pInRow, cbDockPane* pInPane );
- virtual void OnRowWillChange( cbRowInfo* pRow, cbDockPane* pInPane );
- virtual void OnBarWillChange( cbBarInfo* pBar, cbRowInfo* pInRow, cbDockPane* pInPane );
- virtual void OnPaneMarginsWillChange( cbDockPane* pPane );
- virtual void OnPaneWillChange( cbDockPane* pPane );
+ // Notification received from Frame Layout in the order in which
+ // they would usually be invoked.
+ virtual void OnPaneMarginsWillChange( cbDockPane* pPane );
- virtual void OnFinishChanges();
+ // Notification received from Frame Layout in the order in which
+ // they would usually be invoked.
+ virtual void OnPaneWillChange( cbDockPane* pPane );
- // refreshes parts of the frame layout, which need an update
- virtual void UpdateNow();
+ // Notification received from Frame Layout in the order in which
+ // they would usually be invoked.
+ virtual void OnFinishChanges();
+
+ // Refreshes the parts of the frame layoutthat need an update.
+ virtual void UpdateNow();
};
#endif /* __UPDATESMGR_G__ */
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: antiflickpl.cpp
+// Purpose: Double-buffering plugin class for reducing flickering.
// Author: Aleksandras Gluchovas (@Lithuania)
// Modified by:
// Created: 23/10/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
// excessive realocations later
// check whether the given area is oriented horizontally
- // or verticallya and choose correspoinding bitmap to create or
+ // or vertically and choose corresponding bitmap to create or
// recreate
if ( forArea.height > forArea.width )
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: bardragpl.cpp
+// Purpose: cbBarDragPlugin implementation
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 23/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
: mousePos.x > bounds.x;
// NOTE:: about all the below min/max things: they are meant to ensure
- // that mouse pointer doesn't overrun (leave) the hint-rectangle
- // when dimensions it's are recalculated upon sticking it to the pane
+ // that the mouse pointer doesn't overrun (leave) the hint-rectangle
+ // when its dimensions are recalculated upon sticking it to the pane
if ( pPane->IsHorizontal() && fromLowerEdge )
{
void cbBarDragPlugin::UnstickFromPane( cbDockPane* pPane, wxPoint& mousePos )
{
- // unsticking causes rectangle to get the shape, in which
+ // unsticking causes rectangle to get the shape in which
// dragged control-bar would be when floated
-
int newWidth = mpDraggedBar->mDimInfo.mSizes[wxCBAR_FLOATING].x;
int newHeight = mpDraggedBar->mDimInfo.mSizes[wxCBAR_FLOATING].y;
if ( mpSrcPane->mProps.mRealTimeUpdatesOn == FALSE )
{
- // do hevy calculations first
+ // do heavy calculations first
wxRect actualRect = mHintRect; // will be adjusted depending on drag-settings
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: barhintspl.h
+// Purpose: Implementation for cbBarHintsPlugin
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 30/11/98 (my 22th birthday :-)
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: cbcustom.cpp
+// Purpose: cbSimpleCustomizationPlugin class declaration
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 06/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: controlbar.cpp
+// Purpose: Implementation for main controlbar classes.
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 06/09/98
// meet the new event paradigm as of wx2.3.0. Probably we
// should find a way to make these be non-global, but this
// works for right now.
-#if wxCHECK_VERSION(2,3,0)
wxEventType cbEVT_PL_LEFT_DOWN = wxNewEventType();
wxEventType cbEVT_PL_LEFT_UP = wxNewEventType();
wxEventType cbEVT_PL_RIGHT_DOWN = wxNewEventType();
wxEventType cbEVT_PL_CUSTOMIZE_LAYOUT = wxNewEventType();
wxEventType wxCUSTOM_CB_PLUGIN_EVENTS_START_AT = wxNewEventType();
-#endif // #if wxCHECK_VERSION(2,3,0)
// some ascii-art, still can't get these *nice* cursors working on wx... :-(
mFloatingOn = CanReparent();
}
-// NOTE:: below are the only plaftorm-check "ifdef"s in the docking system!
+// NOTE:: below are the only platform-check "ifdef"s in the docking system!
bool wxFrameLayout::CanReparent()
{
pBarPane->RemoveBar( pBar );
- // FIXME FIXME:: the below recalc. may be a *huge* performance
+ // FIXME FIXME:: the recalculation below may be a *huge* performance
// hit, it could be eliminated though...
// but first the "pane-postion-changed" problem
- // have to be fixed
+ // has to be fixed
RecalcLayout( FALSE );
if ( pBar->mState == wxCBAR_FLOATING && newState != wxCBAR_FLOATING )
{
- // remove bar's window form the containing mini-frame
- // and set it's parent to be layout's parent frame
+ // remove bar's window from the containing mini-frame
+ // and set its parent to be layout's parent frame
if ( pBar->mpBarWnd )
{
void wxFrameLayout::UnhookFromFrame()
{
// NOTE:: the SetEvtHandlerEnabled() method is not used
- // here, since it is assumed, that unhooking layout
+ // here, since it is assumed that unhooking layout
// from window may result destroying of the layout itself
//
// BUG BUG BUG (wx):: this would not be a problem if
- // wxEvtHandler's destructor would check if
+ // wxEvtHandler's destructor checked if
// this handler is currently the top-most
// handler of some window, and additionally
- // to the reconnecting itself from the chain
- // it would also re-setup current event handler
+ // to the reconnecting itself from the chain.
+ // It would also re-setup current event handler
// of the window using wxWindow::SetEventHandler()
// FOR NOW::
size_t i = 0;
- // clac current-maximal-total-length of all maximized bars
+ // calc current-maximal-total-length of all maximized bars
for ( i = 0; i != pInRow->mBars.GetCount(); ++i )
{
totalWidth += bar.mBounds.width;
}
- // set up persentages of occupied space for each maximized bar
+ // set up percentages of occupied space for each maximized bar
for ( i = 0; i != pInRow->mBars.Count(); ++i )
{
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: dyntbar.cpp
+// Purpose: wxDynamicToolBar implementation
// Author: Aleksandras Gluchovas
// Modified by:
// Created: ??/10/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
-
#ifdef __BORLANDC__
#pragma hdrstop
#endif
BEGIN_EVENT_TABLE( wxDynamicToolBar, wxControl )
- EVT_SIZE ( wxDynamicToolBar::OnSize )
- EVT_PAINT( wxDynamicToolBar::OnPaint )
- //EVT_ERASE_BACKGROUND( wxDynamicToolBar::OnEraseBackground )
+ EVT_SIZE ( wxDynamicToolBar::OnSize )
+ EVT_PAINT( wxDynamicToolBar::OnPaint )
+ //EVT_ERASE_BACKGROUND( wxDynamicToolBar::OnEraseBackground )
END_EVENT_TABLE()
/***** Implementation for class wxDynToolInfo *****/
-
+
IMPLEMENT_DYNAMIC_CLASS(wxDynToolInfo, wxToolLayoutItem)
/***** Implementation for class wxDynamicToolBar *****/
wxDynamicToolBar::wxDynamicToolBar()
- : mpLayoutMan( NULL ),
- mSepartorSize( 8 ),
- mVertGap ( 0 ),
- mHorizGap( 0 )
+ : mpLayoutMan( NULL ),
+ mSepartorSize( 8 ),
+ mVertGap ( 0 ),
+ mHorizGap( 0 )
{
}
wxDynamicToolBar::wxDynamicToolBar(wxWindow *parent, const wxWindowID id,
- const wxPoint& pos, const wxSize& size,
- const long style, const int orientation,
- const int RowsOrColumns, const wxString& name )
- : mpLayoutMan( NULL ),
- mSepartorSize( 8 ),
- mVertGap ( 0 ),
- mHorizGap( 0 )
+ const wxPoint& pos, const wxSize& size,
+ const long style, const int orientation,
+ const int RowsOrColumns, const wxString& name )
+ : mpLayoutMan( NULL ),
+ mSepartorSize( 8 ),
+ mVertGap ( 0 ),
+ mHorizGap( 0 )
{
- Create(parent, id, pos, size, style, orientation, RowsOrColumns, name);
+ Create(parent, id, pos, size, style, orientation, RowsOrColumns, name);
- SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_3DFACE) );
+ SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_3DFACE) );
}
bool wxDynamicToolBar::Create(wxWindow *parent, const wxWindowID id,
- const wxPoint& pos,
- const wxSize& size,
- const long style,
- const int orientation, const int RowsOrColumns,
- const wxString& name)
+ const wxPoint& pos,
+ const wxSize& size,
+ const long style,
+ const int orientation, const int RowsOrColumns,
+ const wxString& name)
{
- // cut&pasted from wxtbatsmpl.h
+ // cut&pasted from wxtbatsmpl.h
- if ( ! wxWindow::Create(parent, id, pos, size, style, name) )
- return FALSE;
+ if ( ! wxWindow::Create(parent, id, pos, size, style, name) )
+ return FALSE;
- SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_3DFACE ));
+ SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_3DFACE ));
- return TRUE;
+ return TRUE;
}
bool wxDynamicToolBar::Realize(void)
{
- // FOR NOW:: nothing
- return TRUE;
+ // FOR NOW:: nothing
+ return TRUE;
}
wxDynamicToolBar::~wxDynamicToolBar(void)
{
- if ( mpLayoutMan )
+ if ( mpLayoutMan )
delete mpLayoutMan;
size_t i;
- for( i = 0; i != mTools.Count(); ++i )
+ for( i = 0; i != mTools.Count(); ++i )
{
- delete mTools[i];
+ delete mTools[i];
}
}
void wxDynamicToolBar::AddTool( int toolIndex,
- wxWindow* pToolWindow,
- const wxSize& size
- )
+ wxWindow* pToolWindow,
+ const wxSize& size
+ )
{
- wxDynToolInfo* pInfo = new wxDynToolInfo();
+ wxDynToolInfo* pInfo = new wxDynToolInfo();
- pInfo->mpToolWnd = pToolWindow;
- pInfo->mIndex = toolIndex;
- pInfo->mIsSeparator = FALSE;
+ pInfo->mpToolWnd = pToolWindow;
+ pInfo->mIndex = toolIndex;
+ pInfo->mIsSeparator = FALSE;
- int x,y;
- pToolWindow->GetSize( &x, &y );
- pInfo->mRealSize.x = x;
- pInfo->mRealSize.y = y;
- pInfo->mRect.width = x;
- pInfo->mRect.height = y;
+ int x,y;
+ pToolWindow->GetSize( &x, &y );
+ pInfo->mRealSize.x = x;
+ pInfo->mRealSize.y = y;
+ pInfo->mRect.width = x;
+ pInfo->mRect.height = y;
- mTools.Add( pInfo );
+ mTools.Add( pInfo );
}
void wxDynamicToolBar::AddTool( int toolIndex,
const wxString& labelText, bool alignTextRight,
bool isFlat )
{
- wxNewBitmapButton* pBtn =
+ wxNewBitmapButton* pBtn =
- new wxNewBitmapButton( imageFileName, imageFileType,
- labelText,
- ( alignTextRight )
- ? NB_ALIGN_TEXT_RIGHT
- : NB_ALIGN_TEXT_BOTTOM,
- isFlat
- );
+ new wxNewBitmapButton( imageFileName, imageFileType,
+ labelText,
+ ( alignTextRight )
+ ? NB_ALIGN_TEXT_RIGHT
+ : NB_ALIGN_TEXT_BOTTOM,
+ isFlat
+ );
- pBtn->Create( this, toolIndex );
+ pBtn->Create( this, toolIndex );
- pBtn->Reshape();
-
- AddTool( toolIndex, pBtn );
+ pBtn->Reshape();
+
+ AddTool( toolIndex, pBtn );
}
void wxDynamicToolBar::AddTool( int toolIndex, wxBitmap labelBmp,
- const wxString& labelText, bool alignTextRight,
- bool isFlat )
+ const wxString& labelText, bool alignTextRight,
+ bool isFlat )
{
- wxNewBitmapButton* pBtn =
+ wxNewBitmapButton* pBtn =
- new wxNewBitmapButton( labelBmp,
- labelText,
- ( alignTextRight )
- ? NB_ALIGN_TEXT_RIGHT
- : NB_ALIGN_TEXT_BOTTOM,
- isFlat
- );
+ new wxNewBitmapButton( labelBmp,
+ labelText,
+ ( alignTextRight )
+ ? NB_ALIGN_TEXT_RIGHT
+ : NB_ALIGN_TEXT_BOTTOM,
+ isFlat
+ );
- pBtn->Create( this, toolIndex );
+ pBtn->Create( this, toolIndex );
- pBtn->Reshape();
-
- AddTool( toolIndex, pBtn );
+ pBtn->Reshape();
+
+ AddTool( toolIndex, pBtn );
}
- wxToolBarToolBase*
- wxDynamicToolBar::AddTool(const int toolIndex, const wxBitmap& bitmap,
- const wxBitmap& pushedBitmap,
- const bool toggle, const long xPos,
- const long yPos, wxObject *clientData,
- const wxString& helpString1, const wxString& helpString2)
+wxToolBarToolBase*
+ wxDynamicToolBar::AddTool(const int toolIndex, const wxBitmap& bitmap,
+ const wxBitmap& pushedBitmap,
+ const bool toggle, const long xPos,
+ const long yPos, wxObject *clientData,
+ const wxString& helpString1, const wxString& helpString2)
{
- wxNewBitmapButton* pBmpBtn = new wxNewBitmapButton( bitmap );
+ wxNewBitmapButton* pBmpBtn = new wxNewBitmapButton( bitmap );
- pBmpBtn->Create( this, toolIndex );
+ pBmpBtn->Create( this, toolIndex );
- pBmpBtn->Reshape();
+ pBmpBtn->Reshape();
- AddTool( toolIndex, pBmpBtn );
+ AddTool( toolIndex, pBmpBtn );
- return NULL;
+ return NULL;
}
wxDynToolInfo* wxDynamicToolBar::GetToolInfo( int toolIndex )
{
size_t i;
- for( i = 0; i != mTools.Count(); ++i )
+ for( i = 0; i != mTools.Count(); ++i )
{
- if ( mTools[i]->mIndex == toolIndex )
+ if ( mTools[i]->mIndex == toolIndex )
return mTools[i];
}
- return NULL;
+ return NULL;
}
void wxDynamicToolBar::RemveTool( int toolIndex )
{
size_t i;
- for( i = 0; i != mTools.Count(); ++i )
+ for( i = 0; i != mTools.Count(); ++i )
{
- if ( mTools[i]->mIndex == toolIndex )
- {
- if ( mTools[i]->mpToolWnd )
- {
- mTools[i]->mpToolWnd->Destroy();
- }
+ if ( mTools[i]->mIndex == toolIndex )
+ {
+ if ( mTools[i]->mpToolWnd )
+ {
+ mTools[i]->mpToolWnd->Destroy();
+ }
delete mTools[i]; // HVL To be tested!!!
#if wxCHECK_VERSION(2,3,2)
- mTools.RemoveAt(i);
+ mTools.RemoveAt(i);
#else
- mTools.Remove(i);
+ mTools.Remove(i);
#endif
- Layout();
+ Layout();
- return;
- }
+ return;
+ }
}
- // TODO:: if not found, should it be an assertion?
+ // TODO:: if not found, should it be an assertion?
}
void wxDynamicToolBar::AddSeparator( wxWindow* pSepartorWnd )
{
- wxDynToolInfo* pInfo = new wxDynToolInfo();
-
- pInfo->mpToolWnd = pSepartorWnd;
- pInfo->mIndex = -1;
- pInfo->mIsSeparator = TRUE;
-
- if ( pSepartorWnd )
- {
- pSepartorWnd->Create( this, -1 );
-
- int x,y;
- pSepartorWnd->GetSize( &x, &y );
- pInfo->mRealSize.x = x;
- pInfo->mRealSize.y = y;
-
- pInfo->mRect.width = x;
- pInfo->mRect.height = y;
- }
- else
- {
- pInfo->mRealSize.x = mSepartorSize;
- pInfo->mRealSize.y = 0;
-
- pInfo->mRect.width = mSepartorSize;
- pInfo->mRect.height = 0;
- }
-
- mTools.Add( pInfo );
+ wxDynToolInfo* pInfo = new wxDynToolInfo();
+
+ pInfo->mpToolWnd = pSepartorWnd;
+ pInfo->mIndex = -1;
+ pInfo->mIsSeparator = TRUE;
+
+ if ( pSepartorWnd )
+ {
+ pSepartorWnd->Create( this, -1 );
+
+ int x,y;
+ pSepartorWnd->GetSize( &x, &y );
+ pInfo->mRealSize.x = x;
+ pInfo->mRealSize.y = y;
+
+ pInfo->mRect.width = x;
+ pInfo->mRect.height = y;
+ }
+ else
+ {
+ pInfo->mRealSize.x = mSepartorSize;
+ pInfo->mRealSize.y = 0;
+
+ pInfo->mRect.width = mSepartorSize;
+ pInfo->mRect.height = 0;
+ }
+
+ mTools.Add( pInfo );
}
void wxDynamicToolBar::OnEraseBackground( wxEraseEvent& event )
{
- // FOR NOW:: nothing
+ // FOR NOW:: nothing
}
void wxDynamicToolBar::OnSize( wxSizeEvent& event )
{
- //SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_3DFACE ) );
+ //SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_3DFACE ) );
- Layout();
+ Layout();
}
void wxDynamicToolBar::DrawSeparator( wxDynToolInfo& info, wxDC& dc )
{
- // check the orientation of separator
- if ( info.mRect.width < info.mRect.height )
- {
- int midX = info.mRect.x + info.mRect.width/2 - 1;
-
- dc.SetPen( *wxGREY_PEN );
- dc.DrawLine( midX, info.mRect.y,
- midX, info.mRect.y + info.mRect.height+1 );
-
- dc.SetPen( *wxWHITE_PEN );
- dc.DrawLine( midX+1, info.mRect.y,
- midX+1, info.mRect.y + info.mRect.height+1 );
- }
- else
- {
- int midY = info.mRect.y + info.mRect.height/2 - 1;
-
- dc.SetPen( *wxGREY_PEN );
- dc.DrawLine( info.mRect.x, midY,
- info.mRect.x + info.mRect.width+1, midY );
-
- dc.SetPen( *wxWHITE_PEN );
- dc.DrawLine( info.mRect.x, midY + 1,
- info.mRect.x + info.mRect.width+1, midY + 1 );
- }
+ // check the orientation of separator
+ if ( info.mRect.width < info.mRect.height )
+ {
+ int midX = info.mRect.x + info.mRect.width/2 - 1;
+
+ dc.SetPen( *wxGREY_PEN );
+ dc.DrawLine( midX, info.mRect.y,
+ midX, info.mRect.y + info.mRect.height+1 );
+
+ dc.SetPen( *wxWHITE_PEN );
+ dc.DrawLine( midX+1, info.mRect.y,
+ midX+1, info.mRect.y + info.mRect.height+1 );
+ }
+ else
+ {
+ int midY = info.mRect.y + info.mRect.height/2 - 1;
+
+ dc.SetPen( *wxGREY_PEN );
+ dc.DrawLine( info.mRect.x, midY,
+ info.mRect.x + info.mRect.width+1, midY );
+
+ dc.SetPen( *wxWHITE_PEN );
+ dc.DrawLine( info.mRect.x, midY + 1,
+ info.mRect.x + info.mRect.width+1, midY + 1 );
+ }
}
void wxDynamicToolBar::OnPaint( wxPaintEvent& event )
{
- // draw separators if any
+ // draw separators if any
- wxPaintDC dc(this);
+ wxPaintDC dc(this);
size_t i;
- for( i = 0; i != mTools.Count(); ++i )
-
- if ( mTools[i]->mIsSeparator )
- {
- // check if separator doesn't have it's own window
- // if so, then draw it using built-in drawing method
+ for( i = 0; i != mTools.Count(); ++i )
+
+ if ( mTools[i]->mIsSeparator )
+ {
+ // check if separator doesn't have it's own window
+ // if so, then draw it using built-in drawing method
- if ( !mTools[i]->mpToolWnd )
+ if ( !mTools[i]->mpToolWnd )
- DrawSeparator( *mTools[i], dc );
- }
+ DrawSeparator( *mTools[i], dc );
+ }
}
// FOR NOW:: quick fix
void wxDynamicToolBar::SizeToolWindows()
{
size_t i;
- for( i = 0; i != mTools.Count(); ++i )
- {
- wxDynToolInfo& info = *mTools[i];
-
- if ( !info.mIsSeparator )
- {
-
- // center real rectangle within the rectangle
- // provided by the layout manager
-
- int x = info.mRect.x;
- int y = info.mRect.y + (info.mRect.height - info.mRealSize.y)/2;
-
- // FOR NOW FOR NOW:: quick & dirty fix
- if ( info.mpToolWnd->IsKindOf( CLASSINFO( wxChoice ) ) )
- {
- info.mpToolWnd->SetSize( x,y,
- info.mRealSize.x - 3,
- info.mRealSize.y);
- }
- else
- info.mpToolWnd->SetSize( x,y,
- info.mRealSize.x,
- info.mRealSize.y );
- }
-
- // TBD:: size separator window if present
- }
+ for( i = 0; i != mTools.Count(); ++i )
+ {
+ wxDynToolInfo& info = *mTools[i];
+
+ if ( !info.mIsSeparator )
+ {
+
+ // center real rectangle within the rectangle
+ // provided by the layout manager
+
+ int x = info.mRect.x;
+ int y = info.mRect.y + (info.mRect.height - info.mRealSize.y)/2;
+
+ // FOR NOW FOR NOW:: quick & dirty fix
+ if ( info.mpToolWnd->IsKindOf( CLASSINFO( wxChoice ) ) )
+ {
+ info.mpToolWnd->SetSize( x,y,
+ info.mRealSize.x - 3,
+ info.mRealSize.y);
+ }
+ else
+ info.mpToolWnd->SetSize( x,y,
+ info.mRealSize.x,
+ info.mRealSize.y );
+ }
+
+ // TBD:: size separator window if present
+ }
}
bool wxDynamicToolBar::Layout()
{
- if ( !mpLayoutMan )
- mpLayoutMan = CreateDefaulLayout();
+ if ( !mpLayoutMan )
+ mpLayoutMan = CreateDefaultLayout();
- int x,y;
- GetSize( &x, &y );
- wxSize wndDim(x,y);
- wxSize result;
+ int x,y;
+ GetSize( &x, &y );
+ wxSize wndDim(x,y);
+ wxSize result;
- wxLayoutItemArrayT items;
+ wxLayoutItemArrayT items;
- // safe conversion
+ // safe conversion
size_t i;
- for( i = 0; i != mTools.Count(); ++i )
+ for( i = 0; i != mTools.Count(); ++i )
items.Add( mTools[i] );
- mpLayoutMan->Layout( wndDim, result, items, mVertGap, mHorizGap );;
+ mpLayoutMan->Layout( wndDim, result, items, mVertGap, mHorizGap );;
- SizeToolWindows();
+ SizeToolWindows();
return TRUE;
}
void wxDynamicToolBar::GetPreferredDim( const wxSize& givenDim, wxSize& prefDim )
{
- if ( !mpLayoutMan )
- mpLayoutMan = CreateDefaulLayout();
+ if ( !mpLayoutMan )
+ mpLayoutMan = CreateDefaultLayout();
- wxLayoutItemArrayT items;
+ wxLayoutItemArrayT items;
- // safe conversion
+ // safe conversion
size_t i;
- for( i = 0; i != mTools.Count(); ++i )
+ for( i = 0; i != mTools.Count(); ++i )
items.Add( mTools[i] );
- mpLayoutMan->Layout( givenDim, prefDim, items, mVertGap, mHorizGap );;
+ mpLayoutMan->Layout( givenDim, prefDim, items, mVertGap, mHorizGap );;
}
void wxDynamicToolBar::SetLayout( LayoutManagerBase* pLayout )
{
- if ( mpLayoutMan )
+ if ( mpLayoutMan )
delete mpLayoutMan;
- mpLayoutMan = pLayout;
+ mpLayoutMan = pLayout;
- Layout();
+ Layout();
}
void wxDynamicToolBar::EnableTool(const int toolIndex, const bool enable )
{
- wxDynToolInfo* pInfo = GetToolInfo( toolIndex );
+ wxDynToolInfo* pInfo = GetToolInfo( toolIndex );
- if ( !pInfo )
+ if ( !pInfo )
return;
- if ( pInfo->mIsSeparator || !pInfo->mpToolWnd )
+ if ( pInfo->mIsSeparator || !pInfo->mpToolWnd )
return;
- pInfo->mpToolWnd->Enable( enable );
+ pInfo->mpToolWnd->Enable( enable );
}
/***** Implementation for class BagLayout *****/
void BagLayout::Layout( const wxSize& parentDim,
- wxSize& resultingDim,
- wxLayoutItemArrayT& items,
- int horizGap,
- int vertGap
- )
+ wxSize& resultingDim,
+ wxLayoutItemArrayT& items,
+ int horizGap,
+ int vertGap
+ )
{
- int maxWidth = 0;
- int curY = 0;
- int nRows = 0;
+ int maxWidth = 0;
+ int curY = 0;
+ int nRows = 0;
- size_t i = 0;
+ size_t i = 0;
- while( i < items.Count() )
- {
- int curX = 0;
- int height = 0;
- // int nItems = 0;
+ while( i < items.Count() )
+ {
+ int curX = 0;
+ int height = 0;
+ // int nItems = 0;
- // int firstItem = i;
- int itemsInRow = 0;
+ // int firstItem = i;
+ int itemsInRow = 0;
- if ( nRows > 0 )
+ if ( nRows > 0 )
curY += vertGap;
- // step #1 - arrange horizontal positions of items in the row
+ // step #1 - arrange horizontal positions of items in the row
- do
- {
- if ( itemsInRow > 0 )
+ do
+ {
+ if ( itemsInRow > 0 )
curX += horizGap;
- wxRect& r = items[i]->mRect;
+ wxRect& r = items[i]->mRect;
- if ( curX + r.width > parentDim.x )
+ if ( curX + r.width > parentDim.x )
{
- if ( itemsInRow > 0 )
+ if ( itemsInRow > 0 )
break;
}
- r.x = curX;
- r.y = curY;
+ r.x = curX;
+ r.y = curY;
- curX += r.width;
+ curX += r.width;
- height = wxMax( height, r.height );
+ height = wxMax( height, r.height );
- ++itemsInRow;
- ++i;
+ ++itemsInRow;
+ ++i;
- } while( i < items.Count() );
+ } while( i < items.Count() );
- curY += height;
+ curY += height;
- maxWidth = wxMax( maxWidth, curX );
- }
+ maxWidth = wxMax( maxWidth, curX );
+ }
- resultingDim.x = maxWidth;
- resultingDim.y = curY;
+ resultingDim.x = maxWidth;
+ resultingDim.y = curY;
}
//////// stuff from 2.1.15 ///////////
wxToolBarToolBase* wxDynamicToolBar::FindToolForPosition( wxCoord x, wxCoord y ) const
{
- return NULL;
+ return NULL;
}
bool wxDynamicToolBar::DoInsertTool( size_t pos, wxToolBarToolBase* tool )
{
- return TRUE;
+ return TRUE;
}
bool wxDynamicToolBar::DoDeleteTool( size_t pos, wxToolBarToolBase* tool )
{
- return TRUE;
+ return TRUE;
}
void wxDynamicToolBar::DoEnableTool( wxToolBarToolBase* tool, bool enable )
wxToolBarToolBase* wxDynamicToolBar::CreateTool( int id, const wxBitmap& bitmap1, const wxBitmap& bitmap2, bool toggle, wxObject* clientData, const wxString& shortHelpString, const wxString& longHelpString )
{
- return NULL;
+ return NULL;
}
wxToolBarToolBase* wxDynamicToolBar::CreateTool( wxControl* control )
{
- return NULL;
+ return NULL;
}
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: dyntbarhnd.cpp
+// Purpose: cbDynToolBarDimHandler implementation.
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 23/01/99
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma hdrstop
#endif
-
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
#include "wx/fl/dyntbarhnd.h"
-
/***** Implementation for class cbDynToolBarDimHandler *****/
IMPLEMENT_DYNAMIC_CLASS( cbDynToolBarDimHandler, cbBarDimHandlerBase )
void cbDynToolBarDimHandler::OnChangeBarState(cbBarInfo* pBar, int newState )
{
- // nothing
+ // nothing
}
void cbDynToolBarDimHandler::OnResizeBar( cbBarInfo* pBar,
- const wxSize& given,
- wxSize& preferred )
+ const wxSize& given,
+ wxSize& preferred )
{
- wxASSERT( pBar->mpBarWnd ); // DBG:: should be present
+ wxASSERT( pBar->mpBarWnd ); // DBG:: should be present
- wxDynamicToolBar* pTBar = (wxDynamicToolBar*)pBar->mpBarWnd;
+ wxDynamicToolBar* pTBar = (wxDynamicToolBar*)pBar->mpBarWnd;
- pTBar->GetPreferredDim( given, preferred );
+ pTBar->GetPreferredDim( given, preferred );
}
newbmpbtn.$(OBJ_EXT) \
updatesmgr.$(OBJ_EXT) \
cbcustom.$(OBJ_EXT) \
- frmview.$(OBJ_EXT) \
panedrawpl.$(OBJ_EXT) \
controlbar.$(OBJ_EXT) \
garbagec.$(OBJ_EXT) \
# End Source File
# Begin Source File
-SOURCE=.\frmview.cpp
-# End Source File
-# Begin Source File
-
SOURCE=.\garbagec.cpp
# End Source File
# Begin Source File
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: frmview.cpp
+// Purpose: wxFrameView implementation. NOT USED IN FL.
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 02/01/99
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: garbagec.cpp
+// Purpose: Garbage collection algorithm for optimizing refresh.
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 18/10/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
inline static GCItem& node_to_item( wxNode* pNode )
{
- return *( (GCItem*)(pNode->Data()) );
+ return *( (GCItem*)(pNode->Data()) );
}
GarbageCollector::~GarbageCollector()
{
- Reset();
+ Reset();
}
/*** GC alg. helpers ***/
void GarbageCollector::DestroyItemList( wxList& lst )
{
- wxNode* pNode = lst.First();
+ wxNode* pNode = lst.First();
- while( pNode )
- {
- delete &node_to_item( pNode );
+ while( pNode )
+ {
+ delete &node_to_item( pNode );
- pNode = pNode->Next();
- }
+ pNode = pNode->Next();
+ }
- lst.Clear();
+ lst.Clear();
}
wxNode* GarbageCollector::FindItemNode( void* pForObj )
{
- wxNode* pNode = mAllNodes.First();
+ wxNode* pNode = mAllNodes.First();
- while( pNode )
- {
- if ( node_to_item( pNode ).mpObj == pForObj )
+ while( pNode )
+ {
+ if ( node_to_item( pNode ).mpObj == pForObj )
- return pNode;
+ return pNode;
- pNode = pNode->Next();
- }
+ pNode = pNode->Next();
+ }
- int avoidCompilerWarning = 0;
- wxASSERT(avoidCompilerWarning); // DBG:: item should be present
+ int avoidCompilerWarning = 0;
+ wxASSERT(avoidCompilerWarning); // DBG:: item should be present
- return 0;
+ return 0;
}
wxNode* GarbageCollector::FindReferenceFreeItemNode()
{
- wxNode* pNode = mAllNodes.First();
+ wxNode* pNode = mAllNodes.First();
- while( pNode )
- {
- if ( node_to_item( pNode ).mRefs.Number() == 0 )
+ while( pNode )
+ {
+ if ( node_to_item( pNode ).mRefs.Number() == 0 )
- return pNode;
+ return pNode;
- pNode = pNode->Next();
- }
+ pNode = pNode->Next();
+ }
- return 0;
+ return 0;
}
void GarbageCollector::RemoveReferencesToNode( wxNode* pItemNode )
{
- wxNode* pNode = mAllNodes.First();
+ wxNode* pNode = mAllNodes.First();
- while( pNode )
- {
- wxList& refLst = node_to_item( pNode ).mRefs;
- wxNode* pRefNode = refLst.First();
+ while( pNode )
+ {
+ wxList& refLst = node_to_item( pNode ).mRefs;
+ wxNode* pRefNode = refLst.First();
- while( pRefNode )
- {
- if ( pRefNode->Data() == (wxObject*)pItemNode )
- {
- wxNode* pNext = pRefNode->Next();
+ while( pRefNode )
+ {
+ if ( pRefNode->Data() == (wxObject*)pItemNode )
+ {
+ wxNode* pNext = pRefNode->Next();
- refLst.DeleteNode( pRefNode );
+ refLst.DeleteNode( pRefNode );
- pRefNode = pNext;
+ pRefNode = pNext;
- continue;
- }
- else pRefNode = pRefNode->Next();
- }
+ continue;
+ }
+ else pRefNode = pRefNode->Next();
+ }
- pNode = pNode->Next();
- }
+ pNode = pNode->Next();
+ }
}
void GarbageCollector::ResolveReferences()
{
- wxNode* pNode = mAllNodes.First();
+ wxNode* pNode = mAllNodes.First();
- while( pNode )
- {
- GCItem& item = node_to_item( pNode );
+ while( pNode )
+ {
+ GCItem& item = node_to_item( pNode );
- wxNode* pRefNode = item.mRefs.First();
+ wxNode* pRefNode = item.mRefs.First();
- while( pRefNode )
- {
- pRefNode->SetData( (wxObject*) FindItemNode( (void*)pRefNode->Data() ) );
+ while( pRefNode )
+ {
+ pRefNode->SetData( (wxObject*) FindItemNode( (void*)pRefNode->Data() ) );
- pRefNode = pRefNode->Next();
- }
+ pRefNode = pRefNode->Next();
+ }
- pNode = pNode->Next();
- }
+ pNode = pNode->Next();
+ }
}
void GarbageCollector::AddObject( void* pObj, int refCnt )
{
- // FOR NOW:: initial ref-count is not used
+ // FOR NOW:: initial ref-count is not used
- GCItem* pItem = new GCItem();
+ GCItem* pItem = new GCItem();
- pItem->mpObj = pObj;
+ pItem->mpObj = pObj;
- mAllNodes.Append( (wxObject*) pItem );
+ mAllNodes.Append( (wxObject*) pItem );
}
void GarbageCollector::AddDependency( void* pObj, void* pDependsOnObj )
{
- node_to_item( FindItemNode( pObj ) ).mRefs.Append( (wxObject*)pDependsOnObj );
+ node_to_item( FindItemNode( pObj ) ).mRefs.Append( (wxObject*)pDependsOnObj );
}
/*** GC alg. implementation ***/
void GarbageCollector::ArrangeCollection()
{
- ResolveReferences();
+ ResolveReferences();
- do
- {
- // find node, which does not depend on anything
+ do
+ {
+ // find node, which does not depend on anything
- wxNode* pItemNode = FindReferenceFreeItemNode();
+ wxNode* pItemNode = FindReferenceFreeItemNode();
- if ( pItemNode )
- {
- // append it to the list, where items are contained
- // in the increasing order of dependencies
+ if ( pItemNode )
+ {
+ // append it to the list, where items are contained
+ // in the increasing order of dependencies
- mRegularLst.Append( pItemNode->Data() );
+ mRegularLst.Append( pItemNode->Data() );
- mAllNodes.DeleteNode( pItemNode );
+ mAllNodes.DeleteNode( pItemNode );
- // remove references to this current "least-dependent" node
- // from reference lists of all the other nodes
+ // remove references to this current "least-dependent" node
+ // from reference lists of all the other nodes
- RemoveReferencesToNode( pItemNode );
- }
- else
- {
- // otherwise, what is left - all nodes, which
- // are involved into cycled chains (rings)
+ RemoveReferencesToNode( pItemNode );
+ }
+ else
+ {
+ // otherwise, what is left - all nodes, which
+ // are involved into cycled chains (rings)
- wxNode* pNode = mAllNodes.First();
+ wxNode* pNode = mAllNodes.First();
- while( pNode )
- {
- mCycledLst.Append( pNode->Data() );
+ while( pNode )
+ {
+ mCycledLst.Append( pNode->Data() );
- pNode = pNode->Next();
- }
+ pNode = pNode->Next();
+ }
- break;
- }
+ break;
+ }
- // continue search for "least-dependent" nodes
+ // continue search for "least-dependent" nodes
- } while(1);
+ } while(1);
}
wxList& GarbageCollector::GetRegularObjects()
{
- return mRegularLst;
+ return mRegularLst;
}
wxList& GarbageCollector::GetCycledObjects()
{
- return mCycledLst;
+ return mCycledLst;
}
void GarbageCollector::Reset()
{
- DestroyItemList( mAllNodes );
+ DestroyItemList( mAllNodes );
- mRegularLst.Clear();
- mCycledLst.Clear();
+ mRegularLst.Clear();
+ mCycledLst.Clear();
}
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: gcupdatesmgr.cpp
+// Purpose: cbGCUpdatesMgr class, optimizing refresh using GarbageCollector
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 19/10/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
static inline bool rect_hits_rect( const wxRect& r1, const wxRect& r2 )
{
- if ( ( r2.x >= r1.x && r2.x <= r1.x + r1.width ) ||
- ( r1.x >= r2.x && r1.x <= r2.x + r2.width ) )
+ if ( ( r2.x >= r1.x && r2.x <= r1.x + r1.width ) ||
+ ( r1.x >= r2.x && r1.x <= r2.x + r2.width ) )
- if ( ( r2.y >= r1.y && r2.y <= r1.y + r1.height ) ||
- ( r1.y >= r2.y && r1.y <= r2.y + r2.height ) )
-
- return 1;
+ if ( ( r2.y >= r1.y && r2.y <= r1.y + r1.height ) ||
+ ( r1.y >= r2.y && r1.y <= r2.y + r2.height ) )
+
+ return 1;
- return 0;
+ return 0;
}
// helper structure
struct cbRectInfo
{
- cbBarInfo* mpBar;
- cbDockPane* mpPane;
- wxRect* mpCurBounds;
- wxRect* mpPrevBounds;
+ cbBarInfo* mpBar;
+ cbDockPane* mpPane;
+ wxRect* mpCurBounds;
+ wxRect* mpPrevBounds;
};
static inline cbRectInfo& node_to_rect_info( wxNode* pNode )
{
- return *( (cbRectInfo*) (pNode->Data()) );
+ return *( (cbRectInfo*) (pNode->Data()) );
}
/***** Implementation for class cbSimpleUpdatesMgr *****/
IMPLEMENT_DYNAMIC_CLASS( cbGCUpdatesMgr, cbSimpleUpdatesMgr )
cbGCUpdatesMgr::cbGCUpdatesMgr( wxFrameLayout* pPanel )
- : cbSimpleUpdatesMgr( pPanel )
+ : cbSimpleUpdatesMgr( pPanel )
{}
void cbGCUpdatesMgr::AddItem( wxList& itemList,
- cbBarInfo* pBar,
- cbDockPane* pPane,
- wxRect& curBounds,
- wxRect& prevBounds )
+ cbBarInfo* pBar,
+ cbDockPane* pPane,
+ wxRect& curBounds,
+ wxRect& prevBounds )
{
- cbRectInfo* pInfo = new cbRectInfo();
+ cbRectInfo* pInfo = new cbRectInfo();
- pInfo->mpBar = pBar;
- pInfo->mpPane = pPane;
- pInfo->mpCurBounds = &curBounds;
- pInfo->mpPrevBounds = &prevBounds;
+ pInfo->mpBar = pBar;
+ pInfo->mpPane = pPane;
+ pInfo->mpCurBounds = &curBounds;
+ pInfo->mpPrevBounds = &prevBounds;
- itemList.Append( (wxObject*) pInfo );
+ itemList.Append( (wxObject*) pInfo );
}
void cbGCUpdatesMgr::OnStartChanges()
{
- // memorize states of ALL items in the layout -
- // this is quite excessive, but OK for the decent
- // implementation of updates manager
+ // memorize states of ALL items in the layout -
+ // this is quite excessive, but OK for the decent
+ // implementation of updates manager
- mpLayout->GetPrevClientRect() = mpLayout->GetClientRect();
+ mpLayout->GetPrevClientRect() = mpLayout->GetClientRect();
- cbDockPane** panes = mpLayout->GetPanesArray();
+ cbDockPane** panes = mpLayout->GetPanesArray();
- for( int n = 0; n != MAX_PANES; ++n )
- {
- cbDockPane& pane = *(panes[n]);
+ for( int n = 0; n != MAX_PANES; ++n )
+ {
+ cbDockPane& pane = *(panes[n]);
- // store pane state
- pane.mUMgrData.StoreItemState( pane.mBoundsInParent );
- pane.mUMgrData.SetDirty( FALSE );
+ // store pane state
+ pane.mUMgrData.StoreItemState( pane.mBoundsInParent );
+ pane.mUMgrData.SetDirty( FALSE );
- cbRowInfo* pRow = pane.GetFirstRow();
+ cbRowInfo* pRow = pane.GetFirstRow();
- while ( pRow )
- {
- cbBarInfo* pBar = pRow->GetFirstBar();
+ while ( pRow )
+ {
+ cbBarInfo* pBar = pRow->GetFirstBar();
- // store row state
- pRow->mUMgrData.StoreItemState( pRow->mBoundsInParent );
- pRow->mUMgrData.SetDirty( FALSE );
+ // store row state
+ pRow->mUMgrData.StoreItemState( pRow->mBoundsInParent );
+ pRow->mUMgrData.SetDirty( FALSE );
- while( pBar )
- {
- // store bar state
- pBar->mUMgrData.StoreItemState( pBar->mBoundsInParent );
- pBar->mUMgrData.SetDirty( FALSE );
+ while( pBar )
+ {
+ // store bar state
+ pBar->mUMgrData.StoreItemState( pBar->mBoundsInParent );
+ pBar->mUMgrData.SetDirty( FALSE );
- pBar = pBar->mpNext;
- }
+ pBar = pBar->mpNext;
+ }
- pRow = pRow->mpNext;
- }
- }
+ pRow = pRow->mpNext;
+ }
+ }
}
void cbGCUpdatesMgr::UpdateNow()
{
- cbDockPane** panes = mpLayout->GetPanesArray();
+ cbDockPane** panes = mpLayout->GetPanesArray();
- wxRect& r1 = mpLayout->GetClientRect();
- wxRect& r2 = mpLayout->GetPrevClientRect();
+ wxRect& r1 = mpLayout->GetClientRect();
+ wxRect& r2 = mpLayout->GetPrevClientRect();
- // detect changes in client window's area
+ // detect changes in client window's area
- bool clientWindowChanged = ( r1.x != r2.x ||
- r1.y != r2.y ||
- r1.width != r2.width ||
- r1.height != r2.height );
+ bool clientWindowChanged = ( r1.x != r2.x ||
+ r1.y != r2.y ||
+ r1.width != r2.width ||
+ r1.height != r2.height );
- // step #1 - detect changes in each row of each pane,
- // and repaint decorations around changed windows
+ // step #1 - detect changes in each row of each pane,
+ // and repaint decorations around changed windows
- wxList mBarsToResize;
+ wxList mBarsToResize;
- int n;
- for ( n = 0; n != MAX_PANES; ++n )
- {
- cbDockPane& pane = *(panes[n]);
+ int n;
+ for ( n = 0; n != MAX_PANES; ++n )
+ {
+ cbDockPane& pane = *(panes[n]);
- bool paneChanged = WasChanged( pane.mUMgrData, pane.mBoundsInParent );
+ bool paneChanged = WasChanged( pane.mUMgrData, pane.mBoundsInParent );
- if ( paneChanged )
- {
- wxClientDC dc( &mpLayout->GetParentFrame() );
- pane.PaintPaneBackground( dc );
- }
+ if ( paneChanged )
+ {
+ wxClientDC dc( &mpLayout->GetParentFrame() );
+ pane.PaintPaneBackground( dc );
+ }
- wxRect realBounds;
+ wxRect realBounds;
- cbRowInfo* pRow = pane.GetFirstRow();
+ cbRowInfo* pRow = pane.GetFirstRow();
- while ( pRow )
- {
- wxDC* pDc = 0;
+ while ( pRow )
+ {
+ wxDC* pDc = 0;
- cbBarInfo* pBar = pRow->GetFirstBar();
+ cbBarInfo* pBar = pRow->GetFirstBar();
- bool rowChanged = FALSE;
-// bool rowBkPainted = FALSE;
+ bool rowChanged = FALSE;
+// bool rowBkPainted = FALSE;
- // FIXME:: the below should not be fixed
- cbBarInfo* barsToRepaint[128];
- // number of bars, that were changed in the current row
- int nBars = 0;
+ // FIXME:: the below should not be fixed
+ cbBarInfo* barsToRepaint[128];
+ // number of bars, that were changed in the current row
+ int nBars = 0;
- wxRect r1 = pRow->mUMgrData.mPrevBounds;
- wxRect r2 = pRow->mBoundsInParent;
+ wxRect r1 = pRow->mUMgrData.mPrevBounds;
+ wxRect r2 = pRow->mBoundsInParent;
- if ( WasChanged( pRow->mUMgrData, pRow->mBoundsInParent ) )
-
- rowChanged = TRUE;
- else
- while( pBar )
- {
- if ( WasChanged( pBar->mUMgrData, pBar->mBoundsInParent ) )
-
- barsToRepaint[nBars++] = pBar;
+ if ( WasChanged( pRow->mUMgrData, pRow->mBoundsInParent ) )
+
+ rowChanged = TRUE;
+ else
+ while( pBar )
+ {
+ if ( WasChanged( pBar->mUMgrData, pBar->mBoundsInParent ) )
+
+ barsToRepaint[nBars++] = pBar;
- pBar = pBar->mpNext;
- }
+ pBar = pBar->mpNext;
+ }
- if ( nBars || rowChanged )
- {
- realBounds = pRow->mBoundsInParent;
+ if ( nBars || rowChanged )
+ {
+ realBounds = pRow->mBoundsInParent;
- // include 1-pixel thick shades around the row
- realBounds.x -= 1;
- realBounds.y -= 1;
- realBounds.width += 2;
- realBounds.height += 2;
+ // include 1-pixel thick shades around the row
+ realBounds.x -= 1;
+ realBounds.y -= 1;
+ realBounds.width += 2;
+ realBounds.height += 2;
- pDc = pane.StartDrawInArea( realBounds );
- }
+ pDc = pane.StartDrawInArea( realBounds );
+ }
- if ( rowChanged )
- {
- // postphone the resizement and refreshing the changed
- // bar windows
+ if ( rowChanged )
+ {
+ // postphone the resizement and refreshing the changed
+ // bar windows
- cbBarInfo* pCurBar = pRow->GetFirstBar();
+ cbBarInfo* pCurBar = pRow->GetFirstBar();
- while ( pCurBar )
- {
- if ( WasChanged( pCurBar->mUMgrData,
- pCurBar->mBoundsInParent ) )
+ while ( pCurBar )
+ {
+ if ( WasChanged( pCurBar->mUMgrData,
+ pCurBar->mBoundsInParent ) )
- AddItem( mBarsToResize, pCurBar, &pane,
- pCurBar->mBoundsInParent,
- pCurBar->mUMgrData.mPrevBounds );
+ AddItem( mBarsToResize, pCurBar, &pane,
+ pCurBar->mBoundsInParent,
+ pCurBar->mUMgrData.mPrevBounds );
- pCurBar = pCurBar->mpNext;
- }
+ pCurBar = pCurBar->mpNext;
+ }
- // draw only their decorations now
+ // draw only their decorations now
- pane.PaintRow( pRow, *pDc );
- }
- else
- if ( nBars != 0 )
- {
- for ( int i = 0; i != nBars; ++i )
+ pane.PaintRow( pRow, *pDc );
+ }
+ else
+ if ( nBars != 0 )
+ {
+ for ( int i = 0; i != nBars; ++i )
- // postphone the resizement and refreshing the changed
- // bar windows
+ // postphone the resizement and refreshing the changed
+ // bar windows
- AddItem( mBarsToResize,
- barsToRepaint[i],
- &pane,
- barsToRepaint[i]->mBoundsInParent,
- barsToRepaint[i]->mUMgrData.mPrevBounds );
+ AddItem( mBarsToResize,
+ barsToRepaint[i],
+ &pane,
+ barsToRepaint[i]->mBoundsInParent,
+ barsToRepaint[i]->mUMgrData.mPrevBounds );
- // redraw decorations of entire row, regardless of how much
- // of the bars were changed
+ // redraw decorations of entire row, regardless of how much
+ // of the bars were changed
- pane.PaintRow( pRow, *pDc );
- }
+ pane.PaintRow( pRow, *pDc );
+ }
- if ( pDc )
-
- pane.FinishDrawInArea( realBounds );
+ if ( pDc )
+
+ pane.FinishDrawInArea( realBounds );
- pRow = pRow->mpNext;
+ pRow = pRow->mpNext;
- } // end of while
+ } // end of while
- if ( paneChanged )
- {
- wxClientDC dc( &mpLayout->GetParentFrame() );
- pane.PaintPaneDecorations( dc );
- }
+ if ( paneChanged )
+ {
+ wxClientDC dc( &mpLayout->GetParentFrame() );
+ pane.PaintPaneDecorations( dc );
+ }
- } // end of for
+ } // end of for
- if ( clientWindowChanged && !mpLayout->mClientWndRefreshPending )
- {
- // ptr to client-window object is "marked" as NULL
+ if ( clientWindowChanged && !mpLayout->mClientWndRefreshPending )
+ {
+ // ptr to client-window object is "marked" as NULL
- AddItem( mBarsToResize, NULL, NULL,
- mpLayout->GetClientRect(),
- mpLayout->GetPrevClientRect() );
- }
+ AddItem( mBarsToResize, NULL, NULL,
+ mpLayout->GetClientRect(),
+ mpLayout->GetPrevClientRect() );
+ }
- // step #2 - do ordered refreshing and resizing of bar window objects now
+ // step #2 - do ordered refreshing and resizing of bar window objects now
- DoRepositionItems( mBarsToResize );
+ DoRepositionItems( mBarsToResize );
}
void cbGCUpdatesMgr::DoRepositionItems( wxList& items )
{
- wxNode* pNode1 = items.First();
+ wxNode* pNode1 = items.First();
- while( pNode1 )
- {
- cbRectInfo& info = node_to_rect_info( pNode1 );
+ while( pNode1 )
+ {
+ cbRectInfo& info = node_to_rect_info( pNode1 );
- wxNode* pNode2 = items.First();
+ wxNode* pNode2 = items.First();
- // and node itself
+ // and node itself
- mGC.AddObject( &info );
+ mGC.AddObject( &info );
- while( pNode2 )
- {
- if ( pNode2 != pNode1 ) // node should not depend on itself
- {
- // add references to objects, on which this object
- // depends. Dependecy here indicates intersection of current
- // bounds of this object with the initial bounds of the
- // other object
+ while( pNode2 )
+ {
+ if ( pNode2 != pNode1 ) // node should not depend on itself
+ {
+ // Add references to objects on which this object
+ // depends. Dependency here indicates intersection of current
+ // bounds of this object with the initial bounds of the
+ // other object.
- cbRectInfo& otherInfo = node_to_rect_info( pNode2 );
+ cbRectInfo& otherInfo = node_to_rect_info( pNode2 );
- if ( rect_hits_rect( *info.mpCurBounds, *otherInfo.mpPrevBounds ) )
-
- // the node depends on node
- mGC.AddDependency( &info, &otherInfo );
- }
+ if ( rect_hits_rect( *info.mpCurBounds, *otherInfo.mpPrevBounds ) )
+
+ // the node depends on node
+ mGC.AddDependency( &info, &otherInfo );
+ }
- pNode2 = pNode2->Next();
- }
+ pNode2 = pNode2->Next();
+ }
- pNode1 = pNode1->Next();
- }
+ pNode1 = pNode1->Next();
+ }
- mGC.ArrangeCollection(); // order nodes according "least-dependency" rule,
- // and find out cycled chains
+ mGC.ArrangeCollection(); // order nodes according "least-dependency" rule,
+ // and find out cycled chains
- // regular item nodes need to be resized, but not repainted (since
- // they stand in linear (not cyclic) dependency with other
- // regular nodes)
+ // Regular item nodes need to be resized, but not repainted (since
+ // they stand in linear (not cyclic) dependency with other
+ // regular nodes).
- wxNode* pNode = mGC.GetRegularObjects().First();
+ wxNode* pNode = mGC.GetRegularObjects().First();
- while ( pNode )
- {
- cbRectInfo& info = *((cbRectInfo*)gc_node_to_obj(pNode));
+ while ( pNode )
+ {
+ cbRectInfo& info = *((cbRectInfo*)gc_node_to_obj(pNode));
- if ( info.mpBar == NULL )
-
- mpLayout->PositionClientWindow();
- else
- info.mpPane->SizeBar( info.mpBar );
+ if ( info.mpBar == NULL )
+
+ mpLayout->PositionClientWindow();
+ else
+ info.mpPane->SizeBar( info.mpBar );
- pNode = pNode->Next();
- }
+ pNode = pNode->Next();
+ }
- // cycled item nodes, need to be both resized and repainted
+ // cycled item nodes, need to be both resized and repainted
- pNode = mGC.GetCycledObjects().First();
+ pNode = mGC.GetCycledObjects().First();
- while ( pNode )
- {
- cbRectInfo& info = *((cbRectInfo*)gc_node_to_obj(pNode));
+ while ( pNode )
+ {
+ cbRectInfo& info = *((cbRectInfo*)gc_node_to_obj(pNode));
- if ( info.mpBar == NULL )
- {
- wxWindow* pClntWnd = mpLayout->GetFrameClient();
+ if ( info.mpBar == NULL )
+ {
+ wxWindow* pClntWnd = mpLayout->GetFrameClient();
- mpLayout->PositionClientWindow();
+ mpLayout->PositionClientWindow();
- // FIXME FIXME:: excessive!
+ // FIXME FIXME:: excessive!
- pClntWnd->Show( FALSE );
- pClntWnd->Show( TRUE );
+ pClntWnd->Show( FALSE );
+ pClntWnd->Show( TRUE );
- // OLD STUFF:: mpLayout->PositionClientWindow();
- }
- else
- if ( info.mpBar->mpBarWnd )
- {
- wxWindow* pWnd = info.mpBar->mpBarWnd;
+ // OLD STUFF:: mpLayout->PositionClientWindow();
+ }
+ else
+ if ( info.mpBar->mpBarWnd )
+ {
+ wxWindow* pWnd = info.mpBar->mpBarWnd;
- // resize
- info.mpPane->SizeBar( info.mpBar );
+ // resize
+ info.mpPane->SizeBar( info.mpBar );
- // repaint
+ // repaint
- /* OLD STUFF:: bool isChoice = info.mpBar->IsKindOf( CLASSINFO( wxChoice ) );
+ /* OLD STUFF:: bool isChoice = info.mpBar->IsKindOf( CLASSINFO( wxChoice ) );
- //#ifdef __WINDOWS__
- //int result = ::SendMessage( (HWND)pWnd->m_hWnd, WM_NCPAINT, 0, 0 );
- //#endif
- */
+ //#ifdef __WINDOWS__
+ //int result = ::SendMessage( (HWND)pWnd->m_hWnd, WM_NCPAINT, 0, 0 );
+ //#endif
+ */
- // FIXME FIXME:: there's no other way to repaint non-client area of the wxWindow!!
- // so we do *excessive* "hide 'n show"
+ // FIXME FIXME:: there's no other way to repaint non-client area of the wxWindow!!
+ // so we do *excessive* "hide 'n show"
- pWnd->Show(FALSE);
- pWnd->Show(TRUE);
-
- pWnd->Refresh();
- }
+ pWnd->Show(FALSE);
+ pWnd->Show(TRUE);
+
+ pWnd->Refresh();
+ }
- pNode = pNode->Next();
- }
+ pNode = pNode->Next();
+ }
- // release data prepared for GC alg.
+ // release data prepared for GC alg.
- pNode = items.First();
+ pNode = items.First();
- while( pNode )
- {
- cbRectInfo* pInfo = (cbRectInfo*)(pNode->Data());
+ while( pNode )
+ {
+ cbRectInfo* pInfo = (cbRectInfo*)(pNode->Data());
- delete pInfo;
+ delete pInfo;
- pNode = pNode->Next();
- }
+ pNode = pNode->Next();
+ }
- mGC.Reset(); // reinit GC
+ mGC.Reset(); // reinit GC
- // FIXME:: this is a dirty-workaround for messy client-area,
- // as a result of docking bar out of floated-container window
+ // FIXME:: this is a dirty-workaround for messy client-area,
+ // as a result of docking bar out of floated-container window
- if ( mpLayout->mClientWndRefreshPending )
- {
- mpLayout->PositionClientWindow();
- mpLayout->GetFrameClient()->Refresh();
- }
+ if ( mpLayout->mClientWndRefreshPending )
+ {
+ mpLayout->PositionClientWindow();
+ mpLayout->GetFrameClient()->Refresh();
+ }
}
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: hintanimpl.cpp
+// Purpose: cbHintAnimationPlugin implementation.
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 9/11/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
BEGIN_EVENT_TABLE( cbHintAnimationPlugin, cbPluginBase )
- EVT_PL_DRAW_HINT_RECT( cbHintAnimationPlugin::OnDrawHintRect )
+ EVT_PL_DRAW_HINT_RECT( cbHintAnimationPlugin::OnDrawHintRect )
END_EVENT_TABLE()
cbHintAnimationPlugin::cbHintAnimationPlugin(void)
- : mpScrDc( NULL ),
- mpAnimTimer( 0 ),
- mAnimStarted( FALSE ),
-
- mMorphDelay ( 5 ),
- mMaxFrames ( 20 ),
+ : mpScrDc( NULL ),
+ mpAnimTimer( 0 ),
+ mAnimStarted( FALSE ),
+
+ mMorphDelay ( 5 ),
+ mMaxFrames ( 20 ),
mInClientHintBorder( 4 ),
- mAccelerationOn( TRUE )
+ mAccelerationOn( TRUE )
{}
cbHintAnimationPlugin::cbHintAnimationPlugin( wxFrameLayout* pPanel, int paneMask )
- : cbPluginBase( pPanel, paneMask ),
- mpScrDc( NULL ),
- mpAnimTimer( 0 ),
- mAnimStarted( FALSE ),
+ : cbPluginBase( pPanel, paneMask ),
+ mpScrDc( NULL ),
+ mpAnimTimer( 0 ),
+ mAnimStarted( FALSE ),
- mMorphDelay ( 5 ),
- mMaxFrames ( 20 ),
- mInClientHintBorder( 4 ),
- mAccelerationOn( TRUE )
+ mMorphDelay ( 5 ),
+ mMaxFrames ( 20 ),
+ mInClientHintBorder( 4 ),
+ mAccelerationOn( TRUE )
{}
cbHintAnimationPlugin::~cbHintAnimationPlugin()
{
- if ( mpScrDc ) delete mpScrDc;
+ if ( mpScrDc ) delete mpScrDc;
}
/*** rect-tracking related methods ***/
void cbHintAnimationPlugin::OnDrawHintRect( cbDrawHintRectEvent& event )
{
- if ( !mAnimStarted && !mpScrDc )
- {
- StartTracking();
+ if ( !mAnimStarted && !mpScrDc )
+ {
+ StartTracking();
- mPrevInClient = event.mIsInClient;
+ mPrevInClient = event.mIsInClient;
- mPrevRect = event.mRect;
+ mPrevRect = event.mRect;
- mStopPending = FALSE;
- }
+ mStopPending = FALSE;
+ }
- if ( !event.mEraseRect )
- {
- // pass on current hint-rect info to the animation "thread", in
- // order to make adjustments to the morph-target on-the-fly
+ if ( !event.mEraseRect )
+ {
+ // pass on current hint-rect info to the animation "thread", in
+ // order to make adjustments to the morph-target on-the-fly
- mCurRect.x = event.mRect.x;
- mCurRect.y = event.mRect.y;
- mCurRect.width = event.mRect.width;
- mCurRect.height = event.mRect.height;
- }
+ mCurRect.x = event.mRect.x;
+ mCurRect.y = event.mRect.y;
+ mCurRect.width = event.mRect.width;
+ mCurRect.height = event.mRect.height;
+ }
- // check the amount of change in the shape of hint,
- // and start morph-effect if change is "sufficient"
+ // check the amount of change in the shape of hint,
+ // and start morph-effect if change is "sufficient"
- int change = abs( mCurRect.width - mPrevRect.width ) +
- abs( mCurRect.height - mPrevRect.height );
+ int change = abs( mCurRect.width - mPrevRect.width ) +
+ abs( mCurRect.height - mPrevRect.height );
- if ( change > 10 && !event.mLastTime && !event.mEraseRect )
- {
- if ( !mpAnimTimer )
+ if ( change > 10 && !event.mLastTime && !event.mEraseRect )
+ {
+ if ( !mpAnimTimer )
- mpAnimTimer = new cbHintAnimTimer();
+ mpAnimTimer = new cbHintAnimTimer();
- // init the animation "thread", or reinit if already started
+ // init the animation "thread", or reinit if already started
- mpAnimTimer->Init( this, mAnimStarted );
+ mpAnimTimer->Init( this, mAnimStarted );
- mAnimStarted = TRUE;
- }
- else
- if ( !mAnimStarted )
- {
- DoDrawHintRect( event.mRect, event.mIsInClient );
+ mAnimStarted = TRUE;
+ }
+ else
+ if ( !mAnimStarted )
+ {
+ DoDrawHintRect( event.mRect, event.mIsInClient );
- if ( event.mLastTime )
+ if ( event.mLastTime )
- FinishTracking();
+ FinishTracking();
- mPrevInClient = event.mIsInClient;
- }
- else
- {
- mCurInClient = event.mIsInClient;
+ mPrevInClient = event.mIsInClient;
+ }
+ else
+ {
+ mCurInClient = event.mIsInClient;
- if ( event.mLastTime && mpAnimTimer )
- {
- mStopPending = TRUE;
+ if ( event.mLastTime && mpAnimTimer )
+ {
+ mStopPending = TRUE;
- if ( mpAnimTimer->mPrevMorphed.x != POS_UNDEFINED )
+ if ( mpAnimTimer->mPrevMorphed.x != POS_UNDEFINED )
- // erase previous rect
- DoDrawHintRect( mpAnimTimer->mPrevMorphed, mPrevInClient );
- }
- }
+ // erase previous rect
+ DoDrawHintRect( mpAnimTimer->mPrevMorphed, mPrevInClient );
+ }
+ }
- mPrevRect = event.mRect;
+ mPrevRect = event.mRect;
}
#define _IMG_A 0xAA // Note: modified from _A to _IMG_A, _A was already defined (cygwin)
#define _IMG_D 0x00 // Note: modified from _D to _IMG_D, for consistency reasons.
static const unsigned char _gCheckerImg[16] = { _IMG_A,_IMG_B,_IMG_C,_IMG_D,
- _IMG_A,_IMG_B,_IMG_C,_IMG_D,
- _IMG_A,_IMG_B,_IMG_C,_IMG_D,
- _IMG_A,_IMG_B,_IMG_C,_IMG_D
- };
+ _IMG_A,_IMG_B,_IMG_C,_IMG_D,
+ _IMG_A,_IMG_B,_IMG_C,_IMG_D,
+ _IMG_A,_IMG_B,_IMG_C,_IMG_D
+ };
void cbHintAnimationPlugin::StartTracking()
{
- mpScrDc = new wxScreenDC;
+ mpScrDc = new wxScreenDC;
- wxScreenDC::StartDrawingOnTop(&mpLayout->GetParentFrame());
+ wxScreenDC::StartDrawingOnTop(&mpLayout->GetParentFrame());
}
void cbHintAnimationPlugin::DoDrawHintRect( wxRect& rect, bool isInClientRect)
{
- wxRect scrRect;
+ wxRect scrRect;
- RectToScr( rect, scrRect );
+ RectToScr( rect, scrRect );
- int prevLF = mpScrDc->GetLogicalFunction();
+ int prevLF = mpScrDc->GetLogicalFunction();
- mpScrDc->SetLogicalFunction( wxXOR );
+ mpScrDc->SetLogicalFunction( wxXOR );
- if ( isInClientRect )
- {
- // BUG BUG BUG (wx):: somehow stippled brush works only
- // when the bitmap created on stack, not
- // as a member of the class
+ if ( isInClientRect )
+ {
+ // BUG BUG BUG (wx):: somehow stippled brush works only
+ // when the bitmap created on stack, not
+ // as a member of the class
- wxBitmap checker( (const char*)_gCheckerImg, 8,8 );
+ wxBitmap checker( (const char*)_gCheckerImg, 8,8 );
- wxBrush checkerBrush( checker );
+ wxBrush checkerBrush( checker );
- mpScrDc->SetPen( mpLayout->mNullPen );
- mpScrDc->SetBrush( checkerBrush );
+ mpScrDc->SetPen( mpLayout->mNullPen );
+ mpScrDc->SetBrush( checkerBrush );
- int half = mInClientHintBorder / 2;
+ int half = mInClientHintBorder / 2;
- mpScrDc->DrawRectangle( scrRect.x - half, scrRect.y - half,
- scrRect.width + 2*half, mInClientHintBorder );
+ mpScrDc->DrawRectangle( scrRect.x - half, scrRect.y - half,
+ scrRect.width + 2*half, mInClientHintBorder );
- mpScrDc->DrawRectangle( scrRect.x - half, scrRect.y + scrRect.height - half,
- scrRect.width + 2*half, mInClientHintBorder );
+ mpScrDc->DrawRectangle( scrRect.x - half, scrRect.y + scrRect.height - half,
+ scrRect.width + 2*half, mInClientHintBorder );
- mpScrDc->DrawRectangle( scrRect.x - half, scrRect.y + half - 1,
- mInClientHintBorder, scrRect.height - 2*half + 2);
+ mpScrDc->DrawRectangle( scrRect.x - half, scrRect.y + half - 1,
+ mInClientHintBorder, scrRect.height - 2*half + 2);
- mpScrDc->DrawRectangle( scrRect.x + scrRect.width - half,
- scrRect.y + half - 1,
- mInClientHintBorder, scrRect.height - 2*half + 2);
+ mpScrDc->DrawRectangle( scrRect.x + scrRect.width - half,
+ scrRect.y + half - 1,
+ mInClientHintBorder, scrRect.height - 2*half + 2);
- mpScrDc->SetBrush( wxNullBrush );
- }
- else
- {
- // otherwise draw 1-pixel thin borders
+ mpScrDc->SetBrush( wxNullBrush );
+ }
+ else
+ {
+ // otherwise draw 1-pixel thin borders
- mpScrDc->SetPen( mpLayout->mBlackPen );
+ mpScrDc->SetPen( mpLayout->mBlackPen );
- mpScrDc->DrawLine( scrRect.x, scrRect.y,
- scrRect.x + scrRect.width, scrRect.y );
+ mpScrDc->DrawLine( scrRect.x, scrRect.y,
+ scrRect.x + scrRect.width, scrRect.y );
- mpScrDc->DrawLine( scrRect.x, scrRect.y + 1,
- scrRect.x, scrRect.y + scrRect.height );
+ mpScrDc->DrawLine( scrRect.x, scrRect.y + 1,
+ scrRect.x, scrRect.y + scrRect.height );
- mpScrDc->DrawLine( scrRect.x+1, scrRect.y + scrRect.height,
- scrRect.x + scrRect.width, scrRect.y + scrRect.height );
+ mpScrDc->DrawLine( scrRect.x+1, scrRect.y + scrRect.height,
+ scrRect.x + scrRect.width, scrRect.y + scrRect.height );
- mpScrDc->DrawLine( scrRect.x + scrRect.width , scrRect.y,
- scrRect.x + scrRect.width, scrRect.y + scrRect.height + 1);
- }
+ mpScrDc->DrawLine( scrRect.x + scrRect.width , scrRect.y,
+ scrRect.x + scrRect.width, scrRect.y + scrRect.height + 1);
+ }
- mpScrDc->SetLogicalFunction( prevLF );
+ mpScrDc->SetLogicalFunction( prevLF );
}
void cbHintAnimationPlugin::DrawHintRect ( wxRect& rect, bool isInClientRect)
{
- DoDrawHintRect( rect, isInClientRect );
+ DoDrawHintRect( rect, isInClientRect );
}
void cbHintAnimationPlugin::EraseHintRect( wxRect& rect, bool isInClientRect)
{
- DoDrawHintRect( rect, isInClientRect );
+ DoDrawHintRect( rect, isInClientRect );
}
void cbHintAnimationPlugin::FinishTracking()
{
- wxScreenDC::EndDrawingOnTop();
+ wxScreenDC::EndDrawingOnTop();
- delete mpScrDc;
+ delete mpScrDc;
- mpScrDc = NULL;
+ mpScrDc = NULL;
}
void cbHintAnimationPlugin::RectToScr( wxRect& frameRect, wxRect& scrRect )
{
- scrRect = frameRect;
+ scrRect = frameRect;
- int x = frameRect.x, y = frameRect.y;
+ int x = frameRect.x, y = frameRect.y;
- mpLayout->GetParentFrame().ClientToScreen( &x, &y );
+ mpLayout->GetParentFrame().ClientToScreen( &x, &y );
- scrRect.x = x;
- scrRect.y = y;
+ scrRect.x = x;
+ scrRect.y = y;
}
/***** Implementation for class cbHintAnimTimer *****/
cbHintAnimTimer::cbHintAnimTimer(void)
{
#ifdef __WINDOWS__
- mLock = 0L;
+ mLock = 0L;
#endif
- mPrevMorphed.x = POS_UNDEFINED;
+ mPrevMorphed.x = POS_UNDEFINED;
}
void cbHintAnimTimer::MorphPoint( wxPoint& origin, MorphInfoT& info, wxPoint& point )
{
- // simulate lienar movement (FOR NOW:: without acceleration)
+ // simulate lienar movement (FOR NOW:: without acceleration)
- double k;
-
- if ( mpPl->mAccelerationOn )
-
- k = double( mCurIter*mCurIter ) /
- double( (mpPl->mMaxFrames - 1)*(mpPl->mMaxFrames - 1) );
- else
- k = double( mCurIter ) / double( mpPl->mMaxFrames - 1 );
+ double k;
+
+ if ( mpPl->mAccelerationOn )
+
+ k = double( mCurIter*mCurIter ) /
+ double( (mpPl->mMaxFrames - 1)*(mpPl->mMaxFrames - 1) );
+ else
+ k = double( mCurIter ) / double( mpPl->mMaxFrames - 1 );
- point.x = int ( double ( info.mFrom.x + double (info.mTill.x - info.mFrom.x) * k ) );
+ point.x = int ( double ( info.mFrom.x + double (info.mTill.x - info.mFrom.x) * k ) );
- point.y = int ( double ( info.mFrom.y + double (info.mTill.y - info.mFrom.y) * k ) );
+ point.y = int ( double ( info.mFrom.y + double (info.mTill.y - info.mFrom.y) * k ) );
- point.x += origin.x;
- point.y += origin.y;
+ point.x += origin.x;
+ point.y += origin.y;
}
void cbHintAnimTimer::Notify(void)
{
- // FIXME:: "clean" implementation should use mutex to sync
- // between GUI and animation threads
+ // FIXME:: "clean" implementation should use mutex to sync
+ // between GUI and animation threads
- if ( mpPl->mStopPending )
- {
- Stop(); // top timer
+ if ( mpPl->mStopPending )
+ {
+ Stop(); // top timer
- mpPl->FinishTracking();
+ mpPl->FinishTracking();
- mpPl->mStopPending = FALSE;
- mpPl->mpAnimTimer = NULL;
- mpPl->mAnimStarted = FALSE;
+ mpPl->mStopPending = FALSE;
+ mpPl->mpAnimTimer = NULL;
+ mpPl->mAnimStarted = FALSE;
- mPrevMorphed.x = POS_UNDEFINED;
+ mPrevMorphed.x = POS_UNDEFINED;
- delete this;
+ delete this;
- return;
- }
+ return;
+ }
- wxPoint origin( mpPl->mCurRect.x, mpPl->mCurRect.y );
+ wxPoint origin( mpPl->mCurRect.x, mpPl->mCurRect.y );
- wxPoint curUpper, curLower;
+ wxPoint curUpper, curLower;
- MorphPoint( origin, mUpperLeft, curUpper );
- MorphPoint( origin, mLowerRight, curLower );
+ MorphPoint( origin, mUpperLeft, curUpper );
+ MorphPoint( origin, mLowerRight, curLower );
- if ( mPrevMorphed.x != POS_UNDEFINED )
+ if ( mPrevMorphed.x != POS_UNDEFINED )
- // erase previous rect
- mpPl->DoDrawHintRect( mPrevMorphed, mpPl->mPrevInClient );
+ // erase previous rect
+ mpPl->DoDrawHintRect( mPrevMorphed, mpPl->mPrevInClient );
- wxRect morphed( curUpper.x, curUpper.y,
- curLower.x - curUpper.x,
- curLower.y - curUpper.y );
+ wxRect morphed( curUpper.x, curUpper.y,
+ curLower.x - curUpper.x,
+ curLower.y - curUpper.y );
- // draw rect of current iteration
- mpPl->DoDrawHintRect( morphed,
- ( mCurIter != mpPl->mMaxFrames - 1 )
- ? mpPl->mPrevInClient : mpPl->mCurInClient );
+ // draw rect of current iteration
+ mpPl->DoDrawHintRect( morphed,
+ ( mCurIter != mpPl->mMaxFrames - 1 )
+ ? mpPl->mPrevInClient : mpPl->mCurInClient );
- mPrevMorphed = morphed;
+ mPrevMorphed = morphed;
- if ( mCurIter == mpPl->mMaxFrames - 1 )
- {
- Stop(); // top timer
-
- mpPl->FinishTracking();
- mpPl->mpAnimTimer = NULL;
- mpPl->mAnimStarted = FALSE;
+ if ( mCurIter == mpPl->mMaxFrames - 1 )
+ {
+ Stop(); // top timer
+
+ mpPl->FinishTracking();
+ mpPl->mpAnimTimer = NULL;
+ mpPl->mAnimStarted = FALSE;
- mPrevMorphed.x = POS_UNDEFINED;
+ mPrevMorphed.x = POS_UNDEFINED;
- delete this;
- }
- else
- ++mCurIter;
+ delete this;
+ }
+ else
+ ++mCurIter;
}
bool cbHintAnimTimer::Init( cbHintAnimationPlugin* pAnimPl, bool reinit )
{
- mpPl = pAnimPl;
+ mpPl = pAnimPl;
- // morph-points are set up relatively to the upper-left corner
- // of the current hint-rectangle
+ // morph-points are set up relatively to the upper-left corner
+ // of the current hint-rectangle
- if ( !reinit )
- {
- mUpperLeft.mFrom.x = mpPl->mPrevRect.x - mpPl->mCurRect.x;
- mUpperLeft.mFrom.y = mpPl->mPrevRect.y - mpPl->mCurRect.y;
+ if ( !reinit )
+ {
+ mUpperLeft.mFrom.x = mpPl->mPrevRect.x - mpPl->mCurRect.x;
+ mUpperLeft.mFrom.y = mpPl->mPrevRect.y - mpPl->mCurRect.y;
- mLowerRight.mFrom.x = ( mUpperLeft.mFrom.x + mpPl->mPrevRect.width );
- mLowerRight.mFrom.y = ( mUpperLeft.mFrom.y + mpPl->mPrevRect.height );
- }
- else
- {
- wxPoint origin( mpPl->mPrevRect.x, mpPl->mPrevRect.y );
+ mLowerRight.mFrom.x = ( mUpperLeft.mFrom.x + mpPl->mPrevRect.width );
+ mLowerRight.mFrom.y = ( mUpperLeft.mFrom.y + mpPl->mPrevRect.height );
+ }
+ else
+ {
+ wxPoint origin( mpPl->mPrevRect.x, mpPl->mPrevRect.y );
- wxPoint curUpper, curLower;
+ wxPoint curUpper, curLower;
- MorphPoint( origin, mUpperLeft, curUpper );
- MorphPoint( origin, mLowerRight, curLower );
+ MorphPoint( origin, mUpperLeft, curUpper );
+ MorphPoint( origin, mLowerRight, curLower );
- mUpperLeft.mFrom.x = curUpper.x - mpPl->mCurRect.x;
- mUpperLeft.mFrom.y = curUpper.y - mpPl->mCurRect.y;
+ mUpperLeft.mFrom.x = curUpper.x - mpPl->mCurRect.x;
+ mUpperLeft.mFrom.y = curUpper.y - mpPl->mCurRect.y;
- mLowerRight.mFrom.x = ( mUpperLeft.mFrom.x + curLower.x - curUpper.x );
- mLowerRight.mFrom.y = ( mUpperLeft.mFrom.y + curLower.y - curUpper.y );
- }
+ mLowerRight.mFrom.x = ( mUpperLeft.mFrom.x + curLower.x - curUpper.x );
+ mLowerRight.mFrom.y = ( mUpperLeft.mFrom.y + curLower.y - curUpper.y );
+ }
- mUpperLeft.mTill.x = 0;
- mUpperLeft.mTill.y = 0;
+ mUpperLeft.mTill.x = 0;
+ mUpperLeft.mTill.y = 0;
- mLowerRight.mTill.x = mpPl->mCurRect.width;
- mLowerRight.mTill.y = mpPl->mCurRect.height;
+ mLowerRight.mTill.x = mpPl->mCurRect.width;
+ mLowerRight.mTill.y = mpPl->mCurRect.height;
- mCurIter = 1;
-
- if ( !reinit )
+ mCurIter = 1;
+
+ if ( !reinit )
- Start( mpPl->mMorphDelay );
+ Start( mpPl->mMorphDelay );
- return TRUE;
+ return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: newbmpbtn.cpp
+// Purpose: wxNewBitmapButton enhanced bitmap button class.
// Author: Aleksandras Gluchovas
// Modified by:
// Created: ??/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
} while (1);
}
-// alg. for making the image look "grayed" (e.g. disabled button)
+// algorithm for making the image look "grayed" (e.g. disabled button)
// NOTE:: used GetPixel(), which is Windows-Only!
void gray_out_image_on_dc( wxDC& dc, int width, int height )
///////////////////////////////
-/***** Impelementation for class wxNewBitmapButton *****/
+/***** Implementation for class wxNewBitmapButton *****/
IMPLEMENT_DYNAMIC_CLASS(wxNewBitmapButton, wxPanel)
{
if ( destBmp != 0 ) return;
- // render lables on-demand
+ // render labels on-demand
wxMemoryDC srcDc;
srcDc.SelectObject( *srcBmp );
}
void wxNewBitmapButton::Reshape( )
-{
-
+{
bool wasCreated = mIsCreated;
mIsCreated = TRUE;
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: panedrawpl.cpp
+// Purpose: cbPaneDrawPlugin implementation.
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 06/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#define _IMG_D 0x00 // Note: modified from _D to _IMG_D, for consistency reasons.
static const unsigned char _gCheckerImg[16] = { _IMG_A,_IMG_B,_IMG_C,_IMG_D,
- _IMG_A,_IMG_B,_IMG_C,_IMG_D,
- _IMG_A,_IMG_B,_IMG_C,_IMG_D,
- _IMG_A,_IMG_B,_IMG_C,_IMG_D
- };
+ _IMG_A,_IMG_B,_IMG_C,_IMG_D,
+ _IMG_A,_IMG_B,_IMG_C,_IMG_D,
+ _IMG_A,_IMG_B,_IMG_C,_IMG_D
+ };
// FIXME:: The below code somehow doesn't work - cursors remain unchanged
-// Used: controlbar.cpp(1268): set_cursor_bits( _gHorizCursorImg, bits, 32, 16 );
-// Used: controlbar.cpp(1272): set_cursor_bits( _gVertCursorImg, bits, 32, 16 );
+// Used: controlbar.cpp(1268): set_cursor_bits( _gHorizCursorImg, bits, 32, 16 );
+// Used: controlbar.cpp(1272): set_cursor_bits( _gVertCursorImg, bits, 32, 16 );
/*
static void set_cursor_bits( const char** img, char* bits, int width, int height )
{
- for( int i = 0; i != (width*height)/8; ++i )
- bits[i] = 0;
+ for( int i = 0; i != (width*height)/8; ++i )
+ bits[i] = 0;
- for( int y = 0; y != height; ++y )
- {
- const char* row = img[0];
+ for( int y = 0; y != height; ++y )
+ {
+ const char* row = img[0];
- for( int x = 0; x != width; ++x )
- {
- int bitNo = y*width + x;
+ for( int x = 0; x != width; ++x )
+ {
+ int bitNo = y*width + x;
- char value = ( row[x] != '.' ) ? 1 : 0;
+ char value = ( row[x] != '.' ) ? 1 : 0;
- bits[ bitNo / sizeof(char) ] |=
- ( ( bitNo %sizeof(char) ) << value );
- }
+ bits[ bitNo / sizeof(char) ] |=
+ ( ( bitNo %sizeof(char) ) << value );
+ }
- ++img;
- }
+ ++img;
+ }
}
*/
BEGIN_EVENT_TABLE( cbPaneDrawPlugin, cbPluginBase )
- EVT_PL_LEFT_DOWN ( cbPaneDrawPlugin::OnLButtonDown )
- EVT_PL_LEFT_UP ( cbPaneDrawPlugin::OnLButtonUp )
-// EVT_PL_LEFT_DCLICK ( cbPaneDrawPlugin::OnLDblClick )
- EVT_PL_RIGHT_UP ( cbPaneDrawPlugin::OnRButtonUp )
- EVT_PL_MOTION ( cbPaneDrawPlugin::OnMouseMove )
+ EVT_PL_LEFT_DOWN ( cbPaneDrawPlugin::OnLButtonDown )
+ EVT_PL_LEFT_UP ( cbPaneDrawPlugin::OnLButtonUp )
+// EVT_PL_LEFT_DCLICK ( cbPaneDrawPlugin::OnLDblClick )
+ EVT_PL_RIGHT_UP ( cbPaneDrawPlugin::OnRButtonUp )
+ EVT_PL_MOTION ( cbPaneDrawPlugin::OnMouseMove )
- EVT_PL_DRAW_PANE_BKGROUND ( cbPaneDrawPlugin::OnDrawPaneBackground )
- EVT_PL_DRAW_PANE_DECOR ( cbPaneDrawPlugin::OnDrawPaneDecorations )
+ EVT_PL_DRAW_PANE_BKGROUND ( cbPaneDrawPlugin::OnDrawPaneBackground )
+ EVT_PL_DRAW_PANE_DECOR ( cbPaneDrawPlugin::OnDrawPaneDecorations )
- EVT_PL_DRAW_ROW_DECOR ( cbPaneDrawPlugin::OnDrawRowDecorations )
- EVT_PL_DRAW_ROW_HANDLES ( cbPaneDrawPlugin::OnDrawRowHandles )
- EVT_PL_DRAW_ROW_BKGROUND ( cbPaneDrawPlugin::OnDrawRowBackground )
+ EVT_PL_DRAW_ROW_DECOR ( cbPaneDrawPlugin::OnDrawRowDecorations )
+ EVT_PL_DRAW_ROW_HANDLES ( cbPaneDrawPlugin::OnDrawRowHandles )
+ EVT_PL_DRAW_ROW_BKGROUND ( cbPaneDrawPlugin::OnDrawRowBackground )
- EVT_PL_SIZE_BAR_WND ( cbPaneDrawPlugin::OnSizeBarWindow )
- EVT_PL_DRAW_BAR_DECOR ( cbPaneDrawPlugin::OnDrawBarDecorations )
- EVT_PL_DRAW_BAR_HANDLES ( cbPaneDrawPlugin::OnDrawBarHandles )
+ EVT_PL_SIZE_BAR_WND ( cbPaneDrawPlugin::OnSizeBarWindow )
+ EVT_PL_DRAW_BAR_DECOR ( cbPaneDrawPlugin::OnDrawBarDecorations )
+ EVT_PL_DRAW_BAR_HANDLES ( cbPaneDrawPlugin::OnDrawBarHandles )
- EVT_PL_START_DRAW_IN_AREA ( cbPaneDrawPlugin::OnStartDrawInArea )
- EVT_PL_FINISH_DRAW_IN_AREA ( cbPaneDrawPlugin::OnFinishDrawInArea )
+ EVT_PL_START_DRAW_IN_AREA ( cbPaneDrawPlugin::OnStartDrawInArea )
+ EVT_PL_FINISH_DRAW_IN_AREA ( cbPaneDrawPlugin::OnFinishDrawInArea )
END_EVENT_TABLE()
cbPaneDrawPlugin::cbPaneDrawPlugin(void)
- : mResizeStarted ( FALSE ),
+ : mResizeStarted ( FALSE ),
- mResizeCursorOn ( FALSE ),
- mpDraggedBar ( NULL ),
- mpResizedRow ( NULL ),
+ mResizeCursorOn ( FALSE ),
+ mpDraggedBar ( NULL ),
+ mpResizedRow ( NULL ),
mRowHandleHitted ( FALSE ),
- mIsUpperHandle ( FALSE ),
- mBarHandleHitted ( FALSE ),
- mIsLeftHandle ( FALSE ),
- mBarContentHitted ( FALSE ),
+ mIsUpperHandle ( FALSE ),
+ mBarHandleHitted ( FALSE ),
+ mIsLeftHandle ( FALSE ),
+ mBarContentHitted ( FALSE ),
- mpClntDc ( NULL ),
- mpPane ( NULL )
+ mpClntDc ( NULL ),
+ mpPane ( NULL )
{}
cbPaneDrawPlugin::cbPaneDrawPlugin( wxFrameLayout* pPanel, int paneMask )
- : cbPluginBase( pPanel, paneMask ),
-
- // bar-row resizing state varaibles
+ : cbPluginBase( pPanel, paneMask ),
+
+ // bar-row resizing state varaibles
- mResizeStarted ( FALSE ),
+ mResizeStarted ( FALSE ),
- mResizeCursorOn ( FALSE ),
- mpDraggedBar ( NULL ),
- mpResizedRow ( NULL ),
+ mResizeCursorOn ( FALSE ),
+ mpDraggedBar ( NULL ),
+ mpResizedRow ( NULL ),
- mRowHandleHitted ( FALSE ),
- mIsUpperHandle ( FALSE ),
- mBarHandleHitted ( FALSE ),
- mIsLeftHandle ( FALSE ),
- mBarContentHitted ( FALSE ),
+ mRowHandleHitted ( FALSE ),
+ mIsUpperHandle ( FALSE ),
+ mBarHandleHitted ( FALSE ),
+ mIsLeftHandle ( FALSE ),
+ mBarContentHitted ( FALSE ),
- mpClntDc ( NULL ),
- mpPane ( NULL )
+ mpClntDc ( NULL ),
+ mpPane ( NULL )
{}
cbPaneDrawPlugin::~cbPaneDrawPlugin()
{
- // DBG::
- wxASSERT( mpClntDc == NULL );
+ // DBG::
+ wxASSERT( mpClntDc == NULL );
}
void cbPaneDrawPlugin::DrawDraggedHandle( const wxPoint& pos, cbDockPane& pane )
{
- wxScreenDC dc;
- int ofsX = 0;
- int ofsY = 0;
+ wxScreenDC dc;
+ int ofsX = 0;
+ int ofsY = 0;
- wxPoint fpos = pos;
- pane.PaneToFrame( &fpos.x, &fpos.y );
+ wxPoint fpos = pos;
+ pane.PaneToFrame( &fpos.x, &fpos.y );
- // short-cut
- int resizeHndSize = pane.mProps.mResizeHandleSize;
+ // short-cut
+ int resizeHndSize = pane.mProps.mResizeHandleSize;
// "Required for X to specify that
// that we wish to draw on top of all windows
// - and we optimise by specifying the area
// for creating the overlap window." --J.S.
- wxScreenDC::StartDrawingOnTop(&mpLayout->GetParentFrame());
+ wxScreenDC::StartDrawingOnTop(&mpLayout->GetParentFrame());
- mpLayout->GetParentFrame().ClientToScreen( &ofsX, &ofsY );
+ mpLayout->GetParentFrame().ClientToScreen( &ofsX, &ofsY );
- int prevLF = dc.GetLogicalFunction();
+ int prevLF = dc.GetLogicalFunction();
- // BUG BUG BUG (wx):: somehow stippled brush works only
- // when the bitmap created on stack, not
- // as a member of the class
+ // BUG BUG BUG (wx):: somehow stippled brush works only
+ // when the bitmap created on stack, not
+ // as a member of the class
- wxBitmap checker( (const char*)_gCheckerImg, 8,8 );
+ wxBitmap checker( (const char*)_gCheckerImg, 8,8 );
- wxBrush checkerBrush( checker );
+ wxBrush checkerBrush( checker );
- dc.SetPen( mpLayout->mNullPen );
- dc.SetBrush( checkerBrush );
- dc.SetLogicalFunction( wxXOR );
+ dc.SetPen( mpLayout->mNullPen );
+ dc.SetBrush( checkerBrush );
+ dc.SetLogicalFunction( wxXOR );
- if ( mHandleIsVertical )
- {
- int delta = pos.x - mDragOrigin.x;
+ if ( mHandleIsVertical )
+ {
+ int delta = pos.x - mDragOrigin.x;
- if ( !pane.IsHorizontal() )
+ if ( !pane.IsHorizontal() )
- delta = pos.y - mDragOrigin.y;
+ delta = pos.y - mDragOrigin.y;
- int realHndOfs;
- realHndOfs = pane.mBoundsInParent.x + pane.mLeftMargin + mHandleOfs;
+ int realHndOfs;
+ realHndOfs = pane.mBoundsInParent.x + pane.mLeftMargin + mHandleOfs;
- int newX = realHndOfs + delta;
+ int newX = realHndOfs + delta;
- if ( newX + resizeHndSize > mHandleDragArea.x + mHandleDragArea.width )
+ if ( newX + resizeHndSize > mHandleDragArea.x + mHandleDragArea.width )
- newX = mHandleDragArea.x + mHandleDragArea.width - 1;
+ newX = mHandleDragArea.x + mHandleDragArea.width - 1;
- if ( newX < mHandleDragArea.x )
+ if ( newX < mHandleDragArea.x )
- newX = mHandleDragArea.x;
+ newX = mHandleDragArea.x;
- mDraggedDelta = newX - realHndOfs;
+ mDraggedDelta = newX - realHndOfs;
- dc.DrawRectangle( newX + ofsX, mHandleDragArea.y + ofsY,
- resizeHndSize + 1,
- mHandleDragArea.height+1 );
- }
- else
- {
- // otherwise, draw horizontal handle
+ dc.DrawRectangle( newX + ofsX, mHandleDragArea.y + ofsY,
+ resizeHndSize + 1,
+ mHandleDragArea.height+1 );
+ }
+ else
+ {
+ // otherwise, draw horizontal handle
- int delta = pos.y - mDragOrigin.y;
+ int delta = pos.y - mDragOrigin.y;
- if ( !pane.IsHorizontal() )
+ if ( !pane.IsHorizontal() )
- delta = pos.x - mDragOrigin.x;
+ delta = pos.x - mDragOrigin.x;
- int realHndOfs;
- realHndOfs = pane.mBoundsInParent.y + pane.mTopMargin + mHandleOfs;
+ int realHndOfs;
+ realHndOfs = pane.mBoundsInParent.y + pane.mTopMargin + mHandleOfs;
- int newY = realHndOfs + delta;
+ int newY = realHndOfs + delta;
- if ( newY + resizeHndSize > mHandleDragArea.y + mHandleDragArea.height )
+ if ( newY + resizeHndSize > mHandleDragArea.y + mHandleDragArea.height )
- newY = mHandleDragArea.y + mHandleDragArea.height - 1;
+ newY = mHandleDragArea.y + mHandleDragArea.height - 1;
- if ( newY < mHandleDragArea.y )
+ if ( newY < mHandleDragArea.y )
- newY = mHandleDragArea.y;
+ newY = mHandleDragArea.y;
- mDraggedDelta = newY - realHndOfs;
+ mDraggedDelta = newY - realHndOfs;
- dc.DrawRectangle( mHandleDragArea.x + ofsX, newY + ofsY,
- mHandleDragArea.width + 1,
- resizeHndSize + 1 );
- }
+ dc.DrawRectangle( mHandleDragArea.x + ofsX, newY + ofsY,
+ mHandleDragArea.width + 1,
+ resizeHndSize + 1 );
+ }
- dc.SetLogicalFunction( prevLF );
+ dc.SetLogicalFunction( prevLF );
// "End drawing on top (frees the window used for drawing
// over the screen)" --J.S.
- wxScreenDC::EndDrawingOnTop();
+ wxScreenDC::EndDrawingOnTop();
}
void cbPaneDrawPlugin::OnMouseMove( cbMotionEvent& event )
{
- if ( !mResizeStarted )
- {
- // if nothing is started, do hit-tests
+ if ( !mResizeStarted )
+ {
+ // if nothing is started, do hit-tests
- bool prevWasRowHandle = mRowHandleHitted;
+ bool prevWasRowHandle = mRowHandleHitted;
- mBarContentHitted = FALSE;
- mBarHandleHitted = FALSE;
- mRowHandleHitted = FALSE;
+ mBarContentHitted = FALSE;
+ mBarHandleHitted = FALSE;
+ mRowHandleHitted = FALSE;
- int testResult =
- event.mpPane->HitTestPaneItems( event.mPos, // in pane's coordiantes
- &mpResizedRow,
- &mpDraggedBar );
+ int testResult =
+ event.mpPane->HitTestPaneItems( event.mPos, // in pane's coordiantes
+ &mpResizedRow,
+ &mpDraggedBar );
- if ( testResult != CB_NO_ITEMS_HITTED )
- {
- if ( testResult == CB_BAR_CONTENT_HITTED )
- {
- // restore cursor, if non of the handles were hit
- if ( mResizeCursorOn )
- {
- // remove resizing hints
+ if ( testResult != CB_NO_ITEMS_HITTED )
+ {
+ if ( testResult == CB_BAR_CONTENT_HITTED )
+ {
+ // restore cursor, if non of the handles were hit
+ if ( mResizeCursorOn )
+ {
+ // remove resizing hints
- mpLayout->ReleaseEventsFromPane( event.mpPane );
- mpLayout->ReleaseEventsFromPlugin( this );
-
- mResizeCursorOn = FALSE;
+ mpLayout->ReleaseEventsFromPane( event.mpPane );
+ mpLayout->ReleaseEventsFromPlugin( this );
+
+ mResizeCursorOn = FALSE;
- mBarContentHitted = TRUE;
+ mBarContentHitted = TRUE;
- mpLayout->GetParentFrame().SetCursor( *mpLayout->mpNormalCursor );
- }
+ mpLayout->GetParentFrame().SetCursor( *mpLayout->mpNormalCursor );
+ }
- // TBD:: fire something like "mouse-over-bar" event
+ // TBD:: fire something like "mouse-over-bar" event
- event.Skip(); // pass event to the next handler in the chain
- return;
- }
+ event.Skip(); // pass event to the next handler in the chain
+ return;
+ }
- wxCursor* pCurs = NULL;
+ wxCursor* pCurs = NULL;
- if ( testResult == CB_UPPER_ROW_HANDLE_HITTED ||
- testResult == CB_LOWER_ROW_HANDLE_HITTED)
- {
- if ( event.mpPane->IsHorizontal() )
+ if ( testResult == CB_UPPER_ROW_HANDLE_HITTED ||
+ testResult == CB_LOWER_ROW_HANDLE_HITTED)
+ {
+ if ( event.mpPane->IsHorizontal() )
- pCurs = mpLayout->mpVertCursor;
- else
- pCurs = mpLayout->mpHorizCursor;
+ pCurs = mpLayout->mpVertCursor;
+ else
+ pCurs = mpLayout->mpHorizCursor;
- mRowHandleHitted = TRUE;
- mIsUpperHandle = ( testResult == CB_UPPER_ROW_HANDLE_HITTED );
- }
- else
- {
- // otherwise, if inter-bar handle was hitted
+ mRowHandleHitted = TRUE;
+ mIsUpperHandle = ( testResult == CB_UPPER_ROW_HANDLE_HITTED );
+ }
+ else
+ {
+ // otherwise, if inter-bar handle was hitted
- if ( event.mpPane->IsHorizontal() )
+ if ( event.mpPane->IsHorizontal() )
- pCurs = mpLayout->mpHorizCursor;
- else
- pCurs = mpLayout->mpVertCursor;
+ pCurs = mpLayout->mpHorizCursor;
+ else
+ pCurs = mpLayout->mpVertCursor;
- mBarHandleHitted = TRUE;
- mIsLeftHandle = ( testResult == CB_LEFT_BAR_HANDLE_HITTED );
- }
+ mBarHandleHitted = TRUE;
+ mIsLeftHandle = ( testResult == CB_LEFT_BAR_HANDLE_HITTED );
+ }
- // avoid setting the same cursor twice
+ // avoid setting the same cursor twice
- if ( !mResizeCursorOn || prevWasRowHandle != mRowHandleHitted )
- {
- if ( !mResizeCursorOn )
- {
- // caputre if not captured yet
- mpLayout->CaptureEventsForPane( event.mpPane );
- mpLayout->CaptureEventsForPlugin( this );
- }
+ if ( !mResizeCursorOn || prevWasRowHandle != mRowHandleHitted )
+ {
+ if ( !mResizeCursorOn )
+ {
+ // caputre if not captured yet
+ mpLayout->CaptureEventsForPane( event.mpPane );
+ mpLayout->CaptureEventsForPlugin( this );
+ }
- mpLayout->GetParentFrame().SetCursor( *pCurs );
- }
+ mpLayout->GetParentFrame().SetCursor( *pCurs );
+ }
- mResizeCursorOn = TRUE;
+ mResizeCursorOn = TRUE;
- // handled is being dragged now, thus event is "eaten" by this plugin
+ // handled is being dragged now, thus event is "eaten" by this plugin
- return;
+ return;
- } // end of if (HitTestBarHandles())
+ } // end of if (HitTestBarHandles())
- // restore cursor, if non of the handles were hit
- if ( mResizeCursorOn )
- {
- mpLayout->ReleaseEventsFromPane( event.mpPane );
- mpLayout->ReleaseEventsFromPlugin( this );
+ // restore cursor, if non of the handles were hit
+ if ( mResizeCursorOn )
+ {
+ mpLayout->ReleaseEventsFromPane( event.mpPane );
+ mpLayout->ReleaseEventsFromPlugin( this );
- mpLayout->GetParentFrame().SetCursor( *mpLayout->mpNormalCursor );
+ mpLayout->GetParentFrame().SetCursor( *mpLayout->mpNormalCursor );
- mResizeCursorOn = FALSE;
- }
+ mResizeCursorOn = FALSE;
+ }
- event.Skip(); // pass event to the next plugin
- }
+ event.Skip(); // pass event to the next plugin
+ }
- // othewise series of actions, if something has already started
+ // othewise series of actions, if something has already started
- else
- if ( mResizeStarted )
- {
- // apply xor-mask twice
- DrawDraggedHandle( mPrevPos, *event.mpPane );
+ else
+ if ( mResizeStarted )
+ {
+ // apply xor-mask twice
+ DrawDraggedHandle( mPrevPos, *event.mpPane );
- // draw handle in the new position
- DrawDraggedHandle( event.mPos, *event.mpPane );
- mPrevPos = event.mPos;
+ // draw handle in the new position
+ DrawDraggedHandle( event.mPos, *event.mpPane );
+ mPrevPos = event.mPos;
- // handled is dragged, thus event is "eaten" by this plugin
- }
- else
- event.Skip(); // pass event to the next plugin
+ // handled is dragged, thus event is "eaten" by this plugin
+ }
+ else
+ event.Skip(); // pass event to the next plugin
}
void cbPaneDrawPlugin::OnLDblClick( cbLeftDClickEvent& event )
{
- if ( !mResizeCursorOn )
- {
- cbBarInfo* pBarToFloat;
-
- if ( event.mpPane->HitTestPaneItems( event.mPos, // in pane's coordiantes
- &mpResizedRow,
- &pBarToFloat ) == CB_BAR_CONTENT_HITTED
- )
- {
- return;
- }
-
- event.Skip();
- }
+ if ( !mResizeCursorOn )
+ {
+ cbBarInfo* pBarToFloat;
+
+ if ( event.mpPane->HitTestPaneItems( event.mPos, // in pane's coordiantes
+ &mpResizedRow,
+ &pBarToFloat ) == CB_BAR_CONTENT_HITTED
+ )
+ {
+ return;
+ }
+
+ event.Skip();
+ }
}
void cbPaneDrawPlugin::OnLButtonDown( cbLeftDownEvent& event )
{
- wxASSERT( !mResizeStarted );
+ wxASSERT( !mResizeStarted );
- if ( mResizeCursorOn )
- {
- mResizeStarted = TRUE;
- mDragOrigin = event.mPos;
-
- // setup constraints for the dragging handle
+ if ( mResizeCursorOn )
+ {
+ mResizeStarted = TRUE;
+ mDragOrigin = event.mPos;
+
+ // setup constraints for the dragging handle
- int from, till;
- mHandleOfs = 0;
- mHandleIsVertical = FALSE;
+ int from, till;
+ mHandleOfs = 0;
+ mHandleIsVertical = FALSE;
- if ( mRowHandleHitted )
+ if ( mRowHandleHitted )
- event.mpPane->GetRowResizeRange( mpResizedRow, &from, &till, mIsUpperHandle );
- else
- // otherwise if bar handle was hitted
- event.mpPane->GetBarResizeRange( mpDraggedBar, &from, &till, mIsLeftHandle );
-
- if ( mRowHandleHitted )
- {
- mHandleIsVertical = ( event.mpPane->IsHorizontal() ) ? FALSE : TRUE;
+ event.mpPane->GetRowResizeRange( mpResizedRow, &from, &till, mIsUpperHandle );
+ else
+ // otherwise if bar handle was hitted
+ event.mpPane->GetBarResizeRange( mpDraggedBar, &from, &till, mIsLeftHandle );
+
+ if ( mRowHandleHitted )
+ {
+ mHandleIsVertical = ( event.mpPane->IsHorizontal() ) ? FALSE : TRUE;
- mHandleDragArea.x = 0;
- mHandleDragArea.width = event.mpPane->mPaneWidth;
+ mHandleDragArea.x = 0;
+ mHandleDragArea.width = event.mpPane->mPaneWidth;
- mHandleDragArea.y = from;
- mHandleDragArea.height = till - from;
+ mHandleDragArea.y = from;
+ mHandleDragArea.height = till - from;
- if ( mIsUpperHandle )
+ if ( mIsUpperHandle )
- mHandleOfs = mpResizedRow->mRowY;
- else
- mHandleOfs = mpResizedRow->mRowY +
- mpResizedRow->mRowHeight -
- event.mpPane->mProps.mResizeHandleSize;
- }
- else
- {
- // otehrwise if bar handle dragged
+ mHandleOfs = mpResizedRow->mRowY;
+ else
+ mHandleOfs = mpResizedRow->mRowY +
+ mpResizedRow->mRowHeight -
+ event.mpPane->mProps.mResizeHandleSize;
+ }
+ else
+ {
+ // otehrwise if bar handle dragged
-// cbRowInfo& rowInfo = *mpDraggedBar->mpRow;
- wxRect& bounds = mpDraggedBar->mBounds;
+// cbRowInfo& rowInfo = *mpDraggedBar->mpRow;
+ wxRect& bounds = mpDraggedBar->mBounds;
- mHandleIsVertical = ( event.mpPane->IsHorizontal() ) ? TRUE : FALSE;
+ mHandleIsVertical = ( event.mpPane->IsHorizontal() ) ? TRUE : FALSE;
- mHandleDragArea.x = from;
- mHandleDragArea.width = till - from;
+ mHandleDragArea.x = from;
+ mHandleDragArea.width = till - from;
- mHandleDragArea.y = bounds.y;
- mHandleDragArea.height = bounds.height;
+ mHandleDragArea.y = bounds.y;
+ mHandleDragArea.height = bounds.height;
- // left-side-handle mBounds
- if ( mIsLeftHandle )
+ // left-side-handle mBounds
+ if ( mIsLeftHandle )
- mHandleOfs = bounds.x;
- else
- mHandleOfs = bounds.x +
- bounds.width - event.mpPane->mProps.mResizeHandleSize;
+ mHandleOfs = bounds.x;
+ else
+ mHandleOfs = bounds.x +
+ bounds.width - event.mpPane->mProps.mResizeHandleSize;
- }
+ }
- event.mpPane->PaneToFrame( &mHandleDragArea );
- DrawDraggedHandle(mDragOrigin, *event.mpPane);
+ event.mpPane->PaneToFrame( &mHandleDragArea );
+ DrawDraggedHandle(mDragOrigin, *event.mpPane);
- mPrevPos = mDragOrigin;
+ mPrevPos = mDragOrigin;
- return;
- // handled is dragged, thus event is "eaten" by this plugin
- }
- else
- {
- cbBarInfo* pDraggedBar;
+ return;
+ // handled is dragged, thus event is "eaten" by this plugin
+ }
+ else
+ {
+ cbBarInfo* pDraggedBar;
- if ( event.mpPane->HitTestPaneItems( event.mPos, // in pane's coordiantes
- &mpResizedRow,
- &pDraggedBar ) == CB_BAR_CONTENT_HITTED
- )
- {
- int x = event.mPos.x,
- y = event.mPos.y;
+ if ( event.mpPane->HitTestPaneItems( event.mPos, // in pane's coordiantes
+ &mpResizedRow,
+ &pDraggedBar ) == CB_BAR_CONTENT_HITTED
+ )
+ {
+ int x = event.mPos.x,
+ y = event.mPos.y;
- event.mpPane->PaneToFrame( &x, &y );
+ event.mpPane->PaneToFrame( &x, &y );
- cbStartBarDraggingEvent dragEvt( pDraggedBar, wxPoint(x,y), event.mpPane );
+ cbStartBarDraggingEvent dragEvt( pDraggedBar, wxPoint(x,y), event.mpPane );
- mpLayout->FirePluginEvent( dragEvt );
+ mpLayout->FirePluginEvent( dragEvt );
- return; // event is "eaten" by this plugin
- }
- }
+ return; // event is "eaten" by this plugin
+ }
+ }
- event.Skip(); // pass event to the next plugin in the chain
+ event.Skip(); // pass event to the next plugin in the chain
}
void cbPaneDrawPlugin::OnLButtonUp( cbLeftUpEvent& event )
{
- if ( mResizeStarted )
- {
- DrawDraggedHandle( event.mPos, *event.mpPane );
+ if ( mResizeStarted )
+ {
+ DrawDraggedHandle( event.mPos, *event.mpPane );
- mResizeStarted = FALSE;
- mResizeCursorOn = FALSE;
+ mResizeStarted = FALSE;
+ mResizeCursorOn = FALSE;
- mpLayout->ReleaseEventsFromPane( event.mpPane );
- mpLayout->ReleaseEventsFromPlugin( this );
+ mpLayout->ReleaseEventsFromPane( event.mpPane );
+ mpLayout->ReleaseEventsFromPlugin( this );
- mpLayout->GetParentFrame().SetCursor( *mpLayout->mpNormalCursor );
+ mpLayout->GetParentFrame().SetCursor( *mpLayout->mpNormalCursor );
- if ( mRowHandleHitted )
- {
- event.mpPane->ResizeRow( mpResizedRow,
- mDraggedDelta,
- mIsUpperHandle );
- }
- else
- {
- event.mpPane->ResizeBar( mpDraggedBar,
- mDraggedDelta,
- mIsLeftHandle );
- }
+ if ( mRowHandleHitted )
+ {
+ event.mpPane->ResizeRow( mpResizedRow,
+ mDraggedDelta,
+ mIsUpperHandle );
+ }
+ else
+ {
+ event.mpPane->ResizeBar( mpDraggedBar,
+ mDraggedDelta,
+ mIsLeftHandle );
+ }
- mpDraggedBar = NULL;
- mpResizedRow = NULL;
+ mpDraggedBar = NULL;
+ mpResizedRow = NULL;
- // handled dragging action was finished by this mouse-up,
- // thus event is "eaten" by this plugin
+ // handled dragging action was finished by this mouse-up,
+ // thus event is "eaten" by this plugin
- return;
- }
+ return;
+ }
- event.Skip(); // pass event to the next plugin
+ event.Skip(); // pass event to the next plugin
}
void cbPaneDrawPlugin::OnRButtonUp( cbRightUpEvent& event )
{
- wxPoint fpos = event.mPos;
- event.mpPane->PaneToFrame( &fpos.x, &fpos.y );
+ wxPoint fpos = event.mPos;
+ event.mpPane->PaneToFrame( &fpos.x, &fpos.y );
- cbBarInfo* pDraggedBar;
+ cbBarInfo* pDraggedBar;
- // user clicks inside the bar contnet, fire bar-customization event
+ // user clicks inside the bar contnet, fire bar-customization event
- if ( event.mpPane->HitTestPaneItems( event.mPos, // in pane's coordiantes
- &mpResizedRow,
- &pDraggedBar ) == CB_BAR_CONTENT_HITTED
- )
- {
- cbCustomizeBarEvent cbEvt( pDraggedBar, fpos, event.mpPane );
+ if ( event.mpPane->HitTestPaneItems( event.mPos, // in pane's coordiantes
+ &mpResizedRow,
+ &pDraggedBar ) == CB_BAR_CONTENT_HITTED
+ )
+ {
+ cbCustomizeBarEvent cbEvt( pDraggedBar, fpos, event.mpPane );
- mpLayout->FirePluginEvent( cbEvt );
+ mpLayout->FirePluginEvent( cbEvt );
- return; // event is "eaten" by this plugin
- }
+ return; // event is "eaten" by this plugin
+ }
- // otherwise fire whole-layout customization event
+ // otherwise fire whole-layout customization event
- cbCustomizeLayoutEvent csEvt( fpos );
+ cbCustomizeLayoutEvent csEvt( fpos );
- mpLayout->FirePluginEvent( csEvt );
+ mpLayout->FirePluginEvent( csEvt );
- // event is "eaten" by this plugin
+ // event is "eaten" by this plugin
}
void cbPaneDrawPlugin::OnSizeBarWindow( cbSizeBarWndEvent& event )
{
- cbBarInfo& bar = *event.mpBar;
- mpPane = event.mpPane;
+ cbBarInfo& bar = *event.mpBar;
+ mpPane = event.mpPane;
- // it's possible that a bar does not have it's own window!
- if ( !bar.mpBarWnd ) return;
+ // it's possible that a bar does not have it's own window!
+ if ( !bar.mpBarWnd ) return;
- wxRect& bounds = event.mBoundsInParent;
+ wxRect& bounds = event.mBoundsInParent;
- // check visibility
- if ( bounds.height != 0 )
- {
- // size smaller than bounds, to leave space for shade lines
+ // check visibility
+ if ( bounds.height != 0 )
+ {
+ // size smaller than bounds, to leave space for shade lines
- // FIXME:: +/- 1s
+ // FIXME:: +/- 1s
- bar.mpBarWnd->wxWindow::SetSize( bounds.x + 1 + bar.mDimInfo.mHorizGap,
- bounds.y + 1 + bar.mDimInfo.mVertGap,
- bounds.width - 2 - bar.mDimInfo.mHorizGap*2,
- bounds.height - 2 - bar.mDimInfo.mVertGap *2 ,
- 0
- );
+ bar.mpBarWnd->wxWindow::SetSize( bounds.x + 1 + bar.mDimInfo.mHorizGap,
+ bounds.y + 1 + bar.mDimInfo.mVertGap,
+ bounds.width - 2 - bar.mDimInfo.mHorizGap*2,
+ bounds.height - 2 - bar.mDimInfo.mVertGap *2 ,
+ 0
+ );
- if ( !bar.mpBarWnd->IsShown() )
+ if ( !bar.mpBarWnd->IsShown() )
- bar.mpBarWnd->Show( TRUE );
- }
- else
- // hide bar if not visible
- bar.mpBarWnd->Show( FALSE );
+ bar.mpBarWnd->Show( TRUE );
+ }
+ else
+ // hide bar if not visible
+ bar.mpBarWnd->Show( FALSE );
- event.Skip(); // pass event to the next plugin in the chain
+ event.Skip(); // pass event to the next plugin in the chain
}
void cbPaneDrawPlugin::OnDrawRowDecorations( cbDrawRowDecorEvent& event )
{
- DrawPaneShadeForRow( event.mpRow, *event.mpDc );
+ DrawPaneShadeForRow( event.mpRow, *event.mpDc );
- event.Skip(); // pass event to the next plugin
+ event.Skip(); // pass event to the next plugin
}
void cbPaneDrawPlugin::DrawUpperRowHandle( cbRowInfo* pRow, wxDC& dc )
{
- wxRect& bounds = pRow->mBoundsInParent;
-
- if ( mpPane->IsHorizontal() )
- {
- if ( pRow->mHasUpperHandle )
-
- mpPane->DrawHorizHandle( dc, bounds.x,
- bounds.y-1,
- pRow->mRowWidth );
- }
- else
- {
- if ( pRow->mHasUpperHandle )
-
- mpPane->DrawVertHandle( dc, bounds.x-1,
- bounds.y, pRow->mRowWidth );
- }
+ wxRect& bounds = pRow->mBoundsInParent;
+
+ if ( mpPane->IsHorizontal() )
+ {
+ if ( pRow->mHasUpperHandle )
+
+ mpPane->DrawHorizHandle( dc, bounds.x,
+ bounds.y-1,
+ pRow->mRowWidth );
+ }
+ else
+ {
+ if ( pRow->mHasUpperHandle )
+
+ mpPane->DrawVertHandle( dc, bounds.x-1,
+ bounds.y, pRow->mRowWidth );
+ }
}
void cbPaneDrawPlugin::DrawLowerRowHandle( cbRowInfo* pRow, wxDC& dc )
{
- wxRect& bounds = pRow->mBoundsInParent;
-
- // check if iter-row handles present
-
- if ( mpPane->IsHorizontal() )
- {
- if ( pRow->mHasLowerHandle )
-
- mpPane->DrawHorizHandle( dc, bounds.x, bounds.y + bounds.height - mpPane->mProps.mResizeHandleSize - 1,
- pRow->mRowWidth );
- }
- else
- {
- if ( pRow->mHasLowerHandle )
-
- mpPane->DrawVertHandle( dc, bounds.x + bounds.width - mpPane->mProps.mResizeHandleSize - 1,
- bounds.y, pRow->mRowWidth );
- }
+ wxRect& bounds = pRow->mBoundsInParent;
+
+ // check if iter-row handles present
+
+ if ( mpPane->IsHorizontal() )
+ {
+ if ( pRow->mHasLowerHandle )
+
+ mpPane->DrawHorizHandle( dc, bounds.x, bounds.y + bounds.height - mpPane->mProps.mResizeHandleSize - 1,
+ pRow->mRowWidth );
+ }
+ else
+ {
+ if ( pRow->mHasLowerHandle )
+
+ mpPane->DrawVertHandle( dc, bounds.x + bounds.width - mpPane->mProps.mResizeHandleSize - 1,
+ bounds.y, pRow->mRowWidth );
+ }
}
void cbPaneDrawPlugin::OnDrawRowHandles( cbDrawRowHandlesEvent& event )
{
- // short-cuts
- cbRowInfo* pRow = event.mpRow;
- wxDC& dc = *event.mpDc;
- mpPane = event.mpPane;
+ // short-cuts
+ cbRowInfo* pRow = event.mpRow;
+ wxDC& dc = *event.mpDc;
+ mpPane = event.mpPane;
- // draw handles of surrounding rows first
+ // draw handles of surrounding rows first
- if ( pRow->mpPrev && pRow->mpPrev->mHasLowerHandle )
+ if ( pRow->mpPrev && pRow->mpPrev->mHasLowerHandle )
- DrawLowerRowHandle( pRow->mpPrev, dc );
+ DrawLowerRowHandle( pRow->mpPrev, dc );
- if ( pRow->mpNext && pRow->mpNext->mHasUpperHandle )
+ if ( pRow->mpNext && pRow->mpNext->mHasUpperHandle )
- DrawUpperRowHandle( pRow->mpNext, dc );
+ DrawUpperRowHandle( pRow->mpNext, dc );
- // draw handles of the given row
+ // draw handles of the given row
- if ( pRow->mHasUpperHandle )
-
- DrawUpperRowHandle( pRow, dc );
+ if ( pRow->mHasUpperHandle )
+
+ DrawUpperRowHandle( pRow, dc );
- if ( pRow->mHasLowerHandle )
+ if ( pRow->mHasLowerHandle )
- DrawLowerRowHandle( pRow, dc );
+ DrawLowerRowHandle( pRow, dc );
- event.Skip(); // pass event to the next plugin
+ event.Skip(); // pass event to the next plugin
}
void cbPaneDrawPlugin::OnDrawPaneBackground ( cbDrawPaneBkGroundEvent& event )
{
- wxDC& dc = *event.mpDc;
- mpPane = event.mpPane;
+ wxDC& dc = *event.mpDc;
+ mpPane = event.mpPane;
- // FOR NOW:: hard-coded
- wxBrush bkBrush( mpLayout->mBorderPen.GetColour(), wxSOLID );
+ // FOR NOW:: hard-coded
+ wxBrush bkBrush( mpLayout->mBorderPen.GetColour(), wxSOLID );
- dc.SetBrush( bkBrush );
- dc.SetPen( mpLayout->mNullPen );
+ dc.SetBrush( bkBrush );
+ dc.SetPen( mpLayout->mNullPen );
- wxRect& bounds = mpPane->mBoundsInParent;
+ wxRect& bounds = mpPane->mBoundsInParent;
- if ( mpPane->mTopMargin >= 1 )
-
- dc.DrawRectangle( bounds.x, bounds.y,
- bounds.width+1,
- mpPane->mTopMargin + 1);
+ if ( mpPane->mTopMargin >= 1 )
+
+ dc.DrawRectangle( bounds.x, bounds.y,
+ bounds.width+1,
+ mpPane->mTopMargin + 1);
- if ( mpPane->mBottomMargin >= 1 )
-
- dc.DrawRectangle( bounds.x,
- bounds.y + bounds.height - mpPane->mBottomMargin,
- bounds.width + 1,
- mpPane->mBottomMargin + 1);
+ if ( mpPane->mBottomMargin >= 1 )
+
+ dc.DrawRectangle( bounds.x,
+ bounds.y + bounds.height - mpPane->mBottomMargin,
+ bounds.width + 1,
+ mpPane->mBottomMargin + 1);
- if ( mpPane->mLeftMargin >= 1 )
-
- dc.DrawRectangle( bounds.x,
- bounds.y + mpPane->mTopMargin - 1,
- mpPane->mLeftMargin + 1,
- bounds.height - mpPane->mTopMargin - mpPane->mBottomMargin + 2);
+ if ( mpPane->mLeftMargin >= 1 )
+
+ dc.DrawRectangle( bounds.x,
+ bounds.y + mpPane->mTopMargin - 1,
+ mpPane->mLeftMargin + 1,
+ bounds.height - mpPane->mTopMargin - mpPane->mBottomMargin + 2);
- if ( mpPane->mRightMargin >= 1 )
-
- dc.DrawRectangle( bounds.x + bounds.width - mpPane->mRightMargin,
- bounds.y + mpPane->mTopMargin - 1,
- mpPane->mRightMargin + 1,
- bounds.height - mpPane->mTopMargin - mpPane->mBottomMargin + 2);
+ if ( mpPane->mRightMargin >= 1 )
+
+ dc.DrawRectangle( bounds.x + bounds.width - mpPane->mRightMargin,
+ bounds.y + mpPane->mTopMargin - 1,
+ mpPane->mRightMargin + 1,
+ bounds.height - mpPane->mTopMargin - mpPane->mBottomMargin + 2);
- event.Skip(); // pass event to the next plugin
+ event.Skip(); // pass event to the next plugin
}
void cbPaneDrawPlugin::OnDrawRowBackground ( cbDrawRowBkGroundEvent& event )
{
- // short-cuts
- cbRowInfo* pRow = event.mpRow;
- wxDC& dc = *event.mpDc;
- mpPane = event.mpPane;
-
- // get ready
- wxRect rowBounds = pRow->mBoundsInParent;
- bool isHorizontal = event.mpPane->IsHorizontal();
-
-// int prevPos;
-
- if ( isHorizontal )
- {
-// prevPos = rowBounds.x;
- // include one line above and below the row
- --rowBounds.y;
- rowBounds.height += 2;
-
- --rowBounds.x;
- rowBounds.width += 2;
- }
- else
- {
-// prevPos = rowBounds.y;
- // include one line above and below the row
- --rowBounds.x;
- rowBounds.width += 2;
-
- --rowBounds.y;
- rowBounds.height += 2;
- }
+ // short-cuts
+ cbRowInfo* pRow = event.mpRow;
+ wxDC& dc = *event.mpDc;
+ mpPane = event.mpPane;
+
+ // get ready
+ wxRect rowBounds = pRow->mBoundsInParent;
+ bool isHorizontal = event.mpPane->IsHorizontal();
+
+// int prevPos;
+
+ if ( isHorizontal )
+ {
+// prevPos = rowBounds.x;
+ // include one line above and below the row
+ --rowBounds.y;
+ rowBounds.height += 2;
+
+ --rowBounds.x;
+ rowBounds.width += 2;
+ }
+ else
+ {
+// prevPos = rowBounds.y;
+ // include one line above and below the row
+ --rowBounds.x;
+ rowBounds.width += 2;
+
+ --rowBounds.y;
+ rowBounds.height += 2;
+ }
//#define TEST_BK_ERASING
#ifdef TEST_BK_ERASING
- // DBG::
- wxBrush br0( wxColour(0,160,160), wxSOLID );
- dc.SetBrush(br0);
- dc.SetPen ( mpLayout->mNullPen );
- dc.DrawRectangle( rowBounds.x, rowBounds.y,
- rowBounds.width + 1,
- rowBounds.height + 1 );
+ // DBG::
+ wxBrush br0( wxColour(0,160,160), wxSOLID );
+ dc.SetBrush(br0);
+ dc.SetPen ( mpLayout->mNullPen );
+ dc.DrawRectangle( rowBounds.x, rowBounds.y,
+ rowBounds.width + 1,
+ rowBounds.height + 1 );
#endif
- wxBrush bkBrush( mpLayout->mGrayPen.GetColour(), wxSOLID );
+ wxBrush bkBrush( mpLayout->mGrayPen.GetColour(), wxSOLID );
- dc.SetPen ( mpLayout->mNullPen );
- dc.SetBrush( bkBrush );
+ dc.SetPen ( mpLayout->mNullPen );
+ dc.SetBrush( bkBrush );
- // fill background-recatangle of entire row area
- dc.DrawRectangle( rowBounds.x, rowBounds.y,
- rowBounds.width + 1,
- rowBounds.height + 1 );
+ // fill background-recatangle of entire row area
+ dc.DrawRectangle( rowBounds.x, rowBounds.y,
+ rowBounds.width + 1,
+ rowBounds.height + 1 );
- dc.SetBrush( wxNullBrush );
+ dc.SetBrush( wxNullBrush );
- // draw "shaded-side-bars" for each bar
- for( size_t i = 0; i != pRow->mBars.Count(); ++i )
- {
- wxRect& bounds = pRow->mBars[i]->mBoundsInParent;
+ // draw "shaded-side-bars" for each bar
+ for( size_t i = 0; i != pRow->mBars.Count(); ++i )
+ {
+ wxRect& bounds = pRow->mBars[i]->mBoundsInParent;
- if ( isHorizontal )
- {
- DrawShade( 1, bounds, FL_ALIGN_LEFT, dc );
- DrawShade( 1, bounds, FL_ALIGN_RIGHT, dc );
- }
- else
- {
- DrawShade( 1, bounds, FL_ALIGN_TOP, dc );
- DrawShade( 1, bounds, FL_ALIGN_BOTTOM, dc );
- }
- }
+ if ( isHorizontal )
+ {
+ DrawShade( 1, bounds, FL_ALIGN_LEFT, dc );
+ DrawShade( 1, bounds, FL_ALIGN_RIGHT, dc );
+ }
+ else
+ {
+ DrawShade( 1, bounds, FL_ALIGN_TOP, dc );
+ DrawShade( 1, bounds, FL_ALIGN_BOTTOM, dc );
+ }
+ }
- // draw extra shades to simulate "glued-bricks" effect
+ // draw extra shades to simulate "glued-bricks" effect
- // TBD:: reduce exessive drawing of shades, when the
- // row handle is present, and shades will be overr-drawn anyway
+ // TBD:: reduce exessive drawing of shades, when the
+ // row handle is present, and shades will be overr-drawn anyway
- DrawUpperRowShades( pRow, dc, 1 ); // outer shade
+ DrawUpperRowShades( pRow, dc, 1 ); // outer shade
- if ( pRow->mpPrev )
- {
- DrawLowerRowShades( pRow->mpPrev, dc, 1 ); // outter shade
- DrawLowerRowShades( pRow->mpPrev, dc, 0 ); // inner shade
- }
+ if ( pRow->mpPrev )
+ {
+ DrawLowerRowShades( pRow->mpPrev, dc, 1 ); // outter shade
+ DrawLowerRowShades( pRow->mpPrev, dc, 0 ); // inner shade
+ }
- DrawLowerRowShades( pRow, dc, 1 );
+ DrawLowerRowShades( pRow, dc, 1 );
- if ( pRow->mpNext )
- {
- DrawUpperRowShades( pRow->mpNext, dc, 1 );
- DrawUpperRowShades( pRow->mpNext, dc, 0 );
- }
+ if ( pRow->mpNext )
+ {
+ DrawUpperRowShades( pRow->mpNext, dc, 1 );
+ DrawUpperRowShades( pRow->mpNext, dc, 0 );
+ }
- event.Skip(); // pass event to the next plugin
+ event.Skip(); // pass event to the next plugin
}
void cbPaneDrawPlugin::DrawUpperRowShades( cbRowInfo* pRow, wxDC& dc, int level )
{
- for( size_t i = 0; i != pRow->mBars.Count(); ++i )
- {
- wxRect& bounds = pRow->mBars[i]->mBoundsInParent;
-
- if ( mpPane->IsHorizontal() )
- {
- DrawShade( level, bounds, FL_ALIGN_TOP, dc );
- if ( level == 1 )
- {
- dc.SetPen( mpLayout->mDarkPen );
- dc.DrawPoint( bounds.x - 1, bounds.y );
- dc.SetPen( mpLayout->mLightPen );
- dc.DrawPoint( bounds.x + bounds.width , bounds.y );
- }
- }
- else
- {
- DrawShade( level, bounds, FL_ALIGN_LEFT, dc );
- if ( level == 1 )
- {
- dc.SetPen( mpLayout->mDarkPen );
- dc.DrawPoint( bounds.x, bounds.y -1 );
- dc.SetPen( mpLayout->mLightPen );
- dc.DrawPoint( bounds.x, bounds.y + bounds.height );
- }
- }
- }
+ for( size_t i = 0; i != pRow->mBars.Count(); ++i )
+ {
+ wxRect& bounds = pRow->mBars[i]->mBoundsInParent;
+
+ if ( mpPane->IsHorizontal() )
+ {
+ DrawShade( level, bounds, FL_ALIGN_TOP, dc );
+ if ( level == 1 )
+ {
+ dc.SetPen( mpLayout->mDarkPen );
+ dc.DrawPoint( bounds.x - 1, bounds.y );
+ dc.SetPen( mpLayout->mLightPen );
+ dc.DrawPoint( bounds.x + bounds.width , bounds.y );
+ }
+ }
+ else
+ {
+ DrawShade( level, bounds, FL_ALIGN_LEFT, dc );
+ if ( level == 1 )
+ {
+ dc.SetPen( mpLayout->mDarkPen );
+ dc.DrawPoint( bounds.x, bounds.y -1 );
+ dc.SetPen( mpLayout->mLightPen );
+ dc.DrawPoint( bounds.x, bounds.y + bounds.height );
+ }
+ }
+ }
}
void cbPaneDrawPlugin::DrawLowerRowShades( cbRowInfo* pRow, wxDC& dc, int level )
{
- for( size_t i = 0; i != pRow->mBars.Count(); ++i )
- {
- wxRect& bounds = pRow->mBars[i]->mBoundsInParent;
-
- if ( mpPane->IsHorizontal() )
- {
- DrawShade( level, bounds, FL_ALIGN_BOTTOM, dc );
- if ( level == 1 )
- {
- dc.SetPen( mpLayout->mDarkPen );
- dc.DrawPoint( bounds.x - 1, bounds.y + bounds.height -1 );
- dc.SetPen( mpLayout->mLightPen );
- dc.DrawPoint( bounds.x + bounds.width , bounds.y + bounds.height -1 );
- }
- }
- else
- {
- DrawShade( level, bounds, FL_ALIGN_RIGHT, dc );
- if ( level == 1 )
- {
- dc.SetPen( mpLayout->mDarkPen );
- dc.DrawPoint( bounds.x + bounds.width - 1, bounds.y -1 );
- dc.SetPen( mpLayout->mLightPen );
- dc.DrawPoint( bounds.x + bounds.width - 1, bounds.y + bounds.height );
- }
- }
- }
+ for( size_t i = 0; i != pRow->mBars.Count(); ++i )
+ {
+ wxRect& bounds = pRow->mBars[i]->mBoundsInParent;
+
+ if ( mpPane->IsHorizontal() )
+ {
+ DrawShade( level, bounds, FL_ALIGN_BOTTOM, dc );
+ if ( level == 1 )
+ {
+ dc.SetPen( mpLayout->mDarkPen );
+ dc.DrawPoint( bounds.x - 1, bounds.y + bounds.height -1 );
+ dc.SetPen( mpLayout->mLightPen );
+ dc.DrawPoint( bounds.x + bounds.width , bounds.y + bounds.height -1 );
+ }
+ }
+ else
+ {
+ DrawShade( level, bounds, FL_ALIGN_RIGHT, dc );
+ if ( level == 1 )
+ {
+ dc.SetPen( mpLayout->mDarkPen );
+ dc.DrawPoint( bounds.x + bounds.width - 1, bounds.y -1 );
+ dc.SetPen( mpLayout->mLightPen );
+ dc.DrawPoint( bounds.x + bounds.width - 1, bounds.y + bounds.height );
+ }
+ }
+ }
}
void cbPaneDrawPlugin::DrawBarInnerShadeRect( cbBarInfo* pBar, wxDC& dc )
{
- wxRect& bounds = pBar->mBoundsInParent;
-
- dc.SetPen( mpLayout->mDarkPen );
-
- dc.DrawLine( bounds.x + bounds.width - 1,
- bounds.y,
- bounds.x + bounds.width - 1,
- bounds.y + bounds.height );
-
- dc.DrawLine( bounds.x,
- bounds.y + bounds.height - 1,
- bounds.x + bounds.width,
- bounds.y + bounds.height -1 );
-
- dc.SetPen( mpLayout->mLightPen );
-
- dc.DrawLine( bounds.x,
- bounds.y,
- bounds.x + bounds.width - 1,
- bounds.y );
-
- dc.DrawLine( bounds.x,
- bounds.y,
- bounds.x,
- bounds.y + bounds.height - 1 );
+ wxRect& bounds = pBar->mBoundsInParent;
+
+ dc.SetPen( mpLayout->mDarkPen );
+
+ dc.DrawLine( bounds.x + bounds.width - 1,
+ bounds.y,
+ bounds.x + bounds.width - 1,
+ bounds.y + bounds.height );
+
+ dc.DrawLine( bounds.x,
+ bounds.y + bounds.height - 1,
+ bounds.x + bounds.width,
+ bounds.y + bounds.height -1 );
+
+ dc.SetPen( mpLayout->mLightPen );
+
+ dc.DrawLine( bounds.x,
+ bounds.y,
+ bounds.x + bounds.width - 1,
+ bounds.y );
+
+ dc.DrawLine( bounds.x,
+ bounds.y,
+ bounds.x,
+ bounds.y + bounds.height - 1 );
}
void cbPaneDrawPlugin::DrawShade( int level, wxRect& rect, int alignment, wxDC& dc )
{
- // simulates "guled-bricks" appearence of control bars
-
- if ( ( alignment == FL_ALIGN_TOP && level == 1 ) ||
- ( alignment == FL_ALIGN_BOTTOM && level == 0 ) ||
- ( alignment == FL_ALIGN_LEFT && level == 1 ) ||
- ( alignment == FL_ALIGN_RIGHT && level == 0 )
- )
-
- dc.SetPen( mpLayout->mDarkPen );
- else
- dc.SetPen( mpLayout->mLightPen );
-
- if ( alignment == FL_ALIGN_TOP )
- {
- if ( level == 0 )
-
- dc.DrawLine( rect.x,
- rect.y,
- rect.x + rect.width - 1,
- rect.y );
- else
- dc.DrawLine( rect.x - 1,
- rect.y - 1,
- rect.x + rect.width + 0,
- rect.y - 1 );
- }
- else
- if ( alignment == FL_ALIGN_BOTTOM )
- {
- if ( level == 0 )
-
- dc.DrawLine( rect.x,
- rect.y + rect.height - 1,
- rect.x + rect.width,
- rect.y + rect.height - 1 );
- else
- dc.DrawLine( rect.x - 1,
- rect.y + rect.height,
- rect.x + rect.width + 1,
- rect.y + rect.height );
- }
- else
- if ( alignment == FL_ALIGN_LEFT )
- {
- if ( level == 0 )
-
- dc.DrawLine( rect.x,
- rect.y,
- rect.x,
- rect.y + rect.height - 1 );
- else
- dc.DrawLine( rect.x - 1,
- rect.y - 1,
- rect.x - 1,
- rect.y + rect.height );
- }
- else
- if ( alignment == FL_ALIGN_RIGHT )
- {
- if ( level == 0 )
-
- dc.DrawLine( rect.x + rect.width - 1,
- rect.y,
- rect.x + rect.width - 1,
- rect.y + rect.height );
- else
- {
- dc.DrawLine( rect.x + rect.width,
- rect.y - 1,
- rect.x + rect.width,
- rect.y + rect.height + 1 );
- }
- }
+ // simulates "guled-bricks" appearence of control bars
+
+ if ( ( alignment == FL_ALIGN_TOP && level == 1 ) ||
+ ( alignment == FL_ALIGN_BOTTOM && level == 0 ) ||
+ ( alignment == FL_ALIGN_LEFT && level == 1 ) ||
+ ( alignment == FL_ALIGN_RIGHT && level == 0 )
+ )
+
+ dc.SetPen( mpLayout->mDarkPen );
+ else
+ dc.SetPen( mpLayout->mLightPen );
+
+ if ( alignment == FL_ALIGN_TOP )
+ {
+ if ( level == 0 )
+
+ dc.DrawLine( rect.x,
+ rect.y,
+ rect.x + rect.width - 1,
+ rect.y );
+ else
+ dc.DrawLine( rect.x - 1,
+ rect.y - 1,
+ rect.x + rect.width + 0,
+ rect.y - 1 );
+ }
+ else
+ if ( alignment == FL_ALIGN_BOTTOM )
+ {
+ if ( level == 0 )
+
+ dc.DrawLine( rect.x,
+ rect.y + rect.height - 1,
+ rect.x + rect.width,
+ rect.y + rect.height - 1 );
+ else
+ dc.DrawLine( rect.x - 1,
+ rect.y + rect.height,
+ rect.x + rect.width + 1,
+ rect.y + rect.height );
+ }
+ else
+ if ( alignment == FL_ALIGN_LEFT )
+ {
+ if ( level == 0 )
+
+ dc.DrawLine( rect.x,
+ rect.y,
+ rect.x,
+ rect.y + rect.height - 1 );
+ else
+ dc.DrawLine( rect.x - 1,
+ rect.y - 1,
+ rect.x - 1,
+ rect.y + rect.height );
+ }
+ else
+ if ( alignment == FL_ALIGN_RIGHT )
+ {
+ if ( level == 0 )
+
+ dc.DrawLine( rect.x + rect.width - 1,
+ rect.y,
+ rect.x + rect.width - 1,
+ rect.y + rect.height );
+ else
+ {
+ dc.DrawLine( rect.x + rect.width,
+ rect.y - 1,
+ rect.x + rect.width,
+ rect.y + rect.height + 1 );
+ }
+ }
}
void cbPaneDrawPlugin::DrawShade1( int level, wxRect& rect, int alignment, wxDC& dc )
{
- // simulates "guled-bricks" appearence of control bars
-
- if ( ( alignment == FL_ALIGN_TOP && level == 1 ) ||
- ( alignment == FL_ALIGN_BOTTOM && level == 0 ) ||
- ( alignment == FL_ALIGN_LEFT && level == 1 ) ||
- ( alignment == FL_ALIGN_RIGHT && level == 0 )
- )
-
- dc.SetPen( mpLayout->mDarkPen );
- else
- dc.SetPen( mpLayout->mLightPen );
-
- if ( alignment == FL_ALIGN_TOP )
- {
- if ( level == 0 )
-
- dc.DrawLine( rect.x,
- rect.y,
- rect.x + rect.width,
- rect.y );
- else
- dc.DrawLine( rect.x,
- rect.y - 1,
- rect.x + rect.width,
- rect.y - 1 );
- }
- else
- if ( alignment == FL_ALIGN_BOTTOM )
- {
- if ( level == 0 )
-
- dc.DrawLine( rect.x,
- rect.y + rect.height - 1,
- rect.x + rect.width,
- rect.y + rect.height - 1 );
- else
- dc.DrawLine( rect.x,
- rect.y + rect.height,
- rect.x + rect.width,
- rect.y + rect.height );
- }
- else
- if ( alignment == FL_ALIGN_LEFT )
- {
- if ( level == 0 )
-
- dc.DrawLine( rect.x,
- rect.y,
- rect.x,
- rect.y + rect.height );
- else
- dc.DrawLine( rect.x - 1,
- rect.y,
- rect.x - 1,
- rect.y + rect.height );
- }
- else
- if ( alignment == FL_ALIGN_RIGHT )
- {
- if ( level == 0 )
-
- dc.DrawLine( rect.x + rect.width - 1,
- rect.y,
- rect.x + rect.width - 1,
- rect.y + rect.height );
- else
- {
- dc.DrawLine( rect.x + rect.width,
- rect.y ,
- rect.x + rect.width,
- rect.y + rect.height );
- }
- }
+ // simulates "guled-bricks" appearence of control bars
+
+ if ( ( alignment == FL_ALIGN_TOP && level == 1 ) ||
+ ( alignment == FL_ALIGN_BOTTOM && level == 0 ) ||
+ ( alignment == FL_ALIGN_LEFT && level == 1 ) ||
+ ( alignment == FL_ALIGN_RIGHT && level == 0 )
+ )
+
+ dc.SetPen( mpLayout->mDarkPen );
+ else
+ dc.SetPen( mpLayout->mLightPen );
+
+ if ( alignment == FL_ALIGN_TOP )
+ {
+ if ( level == 0 )
+
+ dc.DrawLine( rect.x,
+ rect.y,
+ rect.x + rect.width,
+ rect.y );
+ else
+ dc.DrawLine( rect.x,
+ rect.y - 1,
+ rect.x + rect.width,
+ rect.y - 1 );
+ }
+ else
+ if ( alignment == FL_ALIGN_BOTTOM )
+ {
+ if ( level == 0 )
+
+ dc.DrawLine( rect.x,
+ rect.y + rect.height - 1,
+ rect.x + rect.width,
+ rect.y + rect.height - 1 );
+ else
+ dc.DrawLine( rect.x,
+ rect.y + rect.height,
+ rect.x + rect.width,
+ rect.y + rect.height );
+ }
+ else
+ if ( alignment == FL_ALIGN_LEFT )
+ {
+ if ( level == 0 )
+
+ dc.DrawLine( rect.x,
+ rect.y,
+ rect.x,
+ rect.y + rect.height );
+ else
+ dc.DrawLine( rect.x - 1,
+ rect.y,
+ rect.x - 1,
+ rect.y + rect.height );
+ }
+ else
+ if ( alignment == FL_ALIGN_RIGHT )
+ {
+ if ( level == 0 )
+
+ dc.DrawLine( rect.x + rect.width - 1,
+ rect.y,
+ rect.x + rect.width - 1,
+ rect.y + rect.height );
+ else
+ {
+ dc.DrawLine( rect.x + rect.width,
+ rect.y ,
+ rect.x + rect.width,
+ rect.y + rect.height );
+ }
+ }
}
void cbPaneDrawPlugin::DrawPaneShade( wxDC& dc, int alignment )
{
- if ( !mpPane->mProps.mShow3DPaneBorderOn ) return;
+ if ( !mpPane->mProps.mShow3DPaneBorderOn ) return;
- wxRect bounds = mpPane->mBoundsInParent;
+ wxRect bounds = mpPane->mBoundsInParent;
- bounds.x += mpPane->mLeftMargin;
- bounds.y += mpPane->mTopMargin;
- bounds.width -= ( mpPane->mLeftMargin + mpPane->mRightMargin );
- bounds.height -= ( mpPane->mTopMargin + mpPane->mBottomMargin );
+ bounds.x += mpPane->mLeftMargin;
+ bounds.y += mpPane->mTopMargin;
+ bounds.width -= ( mpPane->mLeftMargin + mpPane->mRightMargin );
+ bounds.height -= ( mpPane->mTopMargin + mpPane->mBottomMargin );
- DrawShade( 0, bounds, alignment, dc );
- DrawShade( 1, bounds, alignment, dc );
+ DrawShade( 0, bounds, alignment, dc );
+ DrawShade( 1, bounds, alignment, dc );
}
void cbPaneDrawPlugin::DrawPaneShadeForRow( cbRowInfo* pRow, wxDC& dc )
{
- if ( !mpPane->mProps.mShow3DPaneBorderOn ) return;
+ if ( !mpPane->mProps.mShow3DPaneBorderOn ) return;
- // do not draw decoration, if pane has "vainished"
- if ( mpPane->mPaneWidth < 0 ||
- mpPane->mPaneHeight < 0 )
+ // do not draw decoration, if pane has "vainished"
+ if ( mpPane->mPaneWidth < 0 ||
+ mpPane->mPaneHeight < 0 )
- return;
+ return;
- wxRect bounds = pRow->mBoundsInParent;
+ wxRect bounds = pRow->mBoundsInParent;
- if ( mpPane->mAlignment == FL_ALIGN_TOP ||
- mpPane->mAlignment == FL_ALIGN_BOTTOM )
- {
- --bounds.y;
- bounds.height += 2;
+ if ( mpPane->mAlignment == FL_ALIGN_TOP ||
+ mpPane->mAlignment == FL_ALIGN_BOTTOM )
+ {
+ --bounds.y;
+ bounds.height += 2;
- DrawShade1( 0, bounds, FL_ALIGN_LEFT, dc );
- DrawShade1( 1, bounds, FL_ALIGN_LEFT, dc );
- DrawShade1( 0, bounds, FL_ALIGN_RIGHT, dc );
- DrawShade1( 1, bounds, FL_ALIGN_RIGHT, dc );
+ DrawShade1( 0, bounds, FL_ALIGN_LEFT, dc );
+ DrawShade1( 1, bounds, FL_ALIGN_LEFT, dc );
+ DrawShade1( 0, bounds, FL_ALIGN_RIGHT, dc );
+ DrawShade1( 1, bounds, FL_ALIGN_RIGHT, dc );
- if ( !pRow->mpNext )
- DrawPaneShade( dc, FL_ALIGN_BOTTOM );
+ if ( !pRow->mpNext )
+ DrawPaneShade( dc, FL_ALIGN_BOTTOM );
- if ( !pRow->mpPrev )
- DrawPaneShade( dc, FL_ALIGN_TOP );
- }
- else
- {
- --bounds.x;
- bounds.width += 2;
+ if ( !pRow->mpPrev )
+ DrawPaneShade( dc, FL_ALIGN_TOP );
+ }
+ else
+ {
+ --bounds.x;
+ bounds.width += 2;
- DrawShade1( 0, bounds, FL_ALIGN_TOP, dc );
- DrawShade1( 1, bounds, FL_ALIGN_TOP, dc );
- DrawShade1( 0, bounds, FL_ALIGN_BOTTOM, dc );
- DrawShade1( 1, bounds, FL_ALIGN_BOTTOM, dc );
+ DrawShade1( 0, bounds, FL_ALIGN_TOP, dc );
+ DrawShade1( 1, bounds, FL_ALIGN_TOP, dc );
+ DrawShade1( 0, bounds, FL_ALIGN_BOTTOM, dc );
+ DrawShade1( 1, bounds, FL_ALIGN_BOTTOM, dc );
- if ( !pRow->mpNext )
- DrawPaneShade( dc, FL_ALIGN_RIGHT );
+ if ( !pRow->mpNext )
+ DrawPaneShade( dc, FL_ALIGN_RIGHT );
- if ( !pRow->mpPrev )
- DrawPaneShade( dc, FL_ALIGN_LEFT );
- }
+ if ( !pRow->mpPrev )
+ DrawPaneShade( dc, FL_ALIGN_LEFT );
+ }
}
void cbPaneDrawPlugin::OnDrawPaneDecorations( cbDrawPaneDecorEvent& event )
{
- wxDC& dc = *event.mpDc;
+ wxDC& dc = *event.mpDc;
- cbDockPane* pPane = event.mpPane;
+ cbDockPane* pPane = event.mpPane;
- RowArrayT& lst = pPane->GetRowList();
-
- // FIXME:: this is a workaround for some glitches
+ RowArrayT& lst = pPane->GetRowList();
+
+ // FIXME:: this is a workaround for some glitches
- if ( lst.Count() )
- {
- cbRowInfo* pLastRow = lst[ lst.Count() - 1 ];
+ if ( lst.Count() )
+ {
+ cbRowInfo* pLastRow = lst[ lst.Count() - 1 ];
- pPane->PaintRowBackground( pLastRow, dc );
- pPane->PaintRowDecorations( pLastRow, dc );
- pPane->PaintRowHandles( pLastRow, dc );
- }
+ pPane->PaintRowBackground( pLastRow, dc );
+ pPane->PaintRowDecorations( pLastRow, dc );
+ pPane->PaintRowHandles( pLastRow, dc );
+ }
- if ( !pPane->mProps.mShow3DPaneBorderOn ) return;
+ if ( !pPane->mProps.mShow3DPaneBorderOn ) return;
- // do not draw decoration, if pane is completely hidden
- if ( event.mpPane->mPaneWidth < 0 ||
- event.mpPane->mPaneHeight < 0 )
+ // do not draw decoration, if pane is completely hidden
+ if ( event.mpPane->mPaneWidth < 0 ||
+ event.mpPane->mPaneHeight < 0 )
- return;
+ return;
- DrawPaneShade( dc, FL_ALIGN_TOP );
- DrawPaneShade( dc, FL_ALIGN_BOTTOM );
- DrawPaneShade( dc, FL_ALIGN_LEFT );
- DrawPaneShade( dc, FL_ALIGN_RIGHT );
+ DrawPaneShade( dc, FL_ALIGN_TOP );
+ DrawPaneShade( dc, FL_ALIGN_BOTTOM );
+ DrawPaneShade( dc, FL_ALIGN_LEFT );
+ DrawPaneShade( dc, FL_ALIGN_RIGHT );
- event.Skip(); // pass event to the next plugin
+ event.Skip(); // pass event to the next plugin
}
// bar decoration/sizing handlers
void cbPaneDrawPlugin::OnDrawBarDecorations( cbDrawBarDecorEvent& event )
{
-// cbBarInfo* pBar = event.mpBar;
- wxDC& dc = *event.mpDc;
+// cbBarInfo* pBar = event.mpBar;
+ wxDC& dc = *event.mpDc;
- // draw brick borders
+ // draw brick borders
- wxRect& rect = event.mBoundsInParent;
+ wxRect& rect = event.mBoundsInParent;
- dc.SetPen( mpLayout->mLightPen );
+ dc.SetPen( mpLayout->mLightPen );
- // horiz
- dc.DrawLine( rect.x, rect.y,
- rect.x + rect.width-1, rect.y );
+ // horiz
+ dc.DrawLine( rect.x, rect.y,
+ rect.x + rect.width-1, rect.y );
- // vert
- dc.DrawLine( rect.x, rect.y,
- rect.x, rect.y + rect.height-1 );
+ // vert
+ dc.DrawLine( rect.x, rect.y,
+ rect.x, rect.y + rect.height-1 );
- dc.SetPen( mpLayout->mDarkPen );
+ dc.SetPen( mpLayout->mDarkPen );
- // vert
- dc.DrawLine( rect.x + rect.width-1, rect.y,
- rect.x + rect.width-1, rect.y + rect.height-1 );
+ // vert
+ dc.DrawLine( rect.x + rect.width-1, rect.y,
+ rect.x + rect.width-1, rect.y + rect.height-1 );
- // horiz
- dc.DrawLine( rect.x, rect.y + rect.height-1,
- rect.x + rect.width, rect.y + rect.height-1 );
+ // horiz
+ dc.DrawLine( rect.x, rect.y + rect.height-1,
+ rect.x + rect.width, rect.y + rect.height-1 );
- event.Skip(); // pass event to the next plugin
+ event.Skip(); // pass event to the next plugin
}
void cbPaneDrawPlugin::OnDrawBarHandles( cbDrawBarHandlesEvent& event )
{
- // short-cuts
- cbBarInfo* pBar = event.mpBar;
- wxDC& dc = *event.mpDc;
- mpPane = event.mpPane;
+ // short-cuts
+ cbBarInfo* pBar = event.mpBar;
+ wxDC& dc = *event.mpDc;
+ mpPane = event.mpPane;
- // draw handles around the bar if present
+ // draw handles around the bar if present
- if ( pBar->mHasLeftHandle ||
- pBar->mHasRightHandle )
- {
- wxRect& bounds = pBar->mBoundsInParent;
+ if ( pBar->mHasLeftHandle ||
+ pBar->mHasRightHandle )
+ {
+ wxRect& bounds = pBar->mBoundsInParent;
- if ( mpPane->IsHorizontal() )
- {
- if ( pBar->mHasLeftHandle )
+ if ( mpPane->IsHorizontal() )
+ {
+ if ( pBar->mHasLeftHandle )
- mpPane->DrawVertHandle( dc, bounds.x - mpPane->mProps.mResizeHandleSize -1,
- bounds.y, bounds.height );
+ mpPane->DrawVertHandle( dc, bounds.x - mpPane->mProps.mResizeHandleSize -1,
+ bounds.y, bounds.height );
- if ( pBar->mHasRightHandle )
+ if ( pBar->mHasRightHandle )
- mpPane->DrawVertHandle( dc,
- bounds.x + bounds.width -1,
- bounds.y, bounds.height );
- }
- else
- {
- if ( pBar->mHasLeftHandle )
+ mpPane->DrawVertHandle( dc,
+ bounds.x + bounds.width -1,
+ bounds.y, bounds.height );
+ }
+ else
+ {
+ if ( pBar->mHasLeftHandle )
- mpPane->DrawHorizHandle( dc, bounds.x,
- bounds.y - mpPane->mProps.mResizeHandleSize - 1,
- bounds.width );
+ mpPane->DrawHorizHandle( dc, bounds.x,
+ bounds.y - mpPane->mProps.mResizeHandleSize - 1,
+ bounds.width );
- if ( pBar->mHasRightHandle )
+ if ( pBar->mHasRightHandle )
- mpPane->DrawHorizHandle( dc, bounds.x,
- bounds.y + bounds.height - 1,
- bounds.width );
- }
- }
+ mpPane->DrawHorizHandle( dc, bounds.x,
+ bounds.y + bounds.height - 1,
+ bounds.width );
+ }
+ }
- event.Skip(); // pass event to the next plugin
+ event.Skip(); // pass event to the next plugin
}
void cbPaneDrawPlugin::OnStartDrawInArea( cbStartDrawInAreaEvent& event )
{
- // DBG::
- wxASSERT( mpClntDc == NULL );
+ // DBG::
+ wxASSERT( mpClntDc == NULL );
- // FOR NOW:: create/destroy client-dc upon each drawing
- mpClntDc = new wxClientDC( &mpLayout->GetParentFrame() );
+ // FOR NOW:: create/destroy client-dc upon each drawing
+ mpClntDc = new wxClientDC( &mpLayout->GetParentFrame() );
- (*event.mppDc) = mpClntDc;
+ (*event.mppDc) = mpClntDc;
- mpClntDc->SetClippingRegion( event.mArea.x, event.mArea.y,
- event.mArea.width, event.mArea.height );
+ mpClntDc->SetClippingRegion( event.mArea.x, event.mArea.y,
+ event.mArea.width, event.mArea.height );
}
void cbPaneDrawPlugin::OnFinishDrawInArea( cbFinishDrawInAreaEvent& event )
{
- // DBG::
- wxASSERT( mpClntDc );
+ // DBG::
+ wxASSERT( mpClntDc );
- delete mpClntDc;
+ delete mpClntDc;
- mpClntDc = NULL;
+ mpClntDc = NULL;
}
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: rowdragpl.cpp
+// Purpose: cbRowDragPlugin implementation.
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 06/10/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
BEGIN_EVENT_TABLE( cbRowDragPlugin, cbPluginBase )
- EVT_PL_LEFT_DOWN ( cbRowDragPlugin::OnLButtonDown )
- EVT_PL_LEFT_UP ( cbRowDragPlugin::OnLButtonUp )
- EVT_PL_MOTION ( cbRowDragPlugin::OnMouseMove )
+ EVT_PL_LEFT_DOWN ( cbRowDragPlugin::OnLButtonDown )
+ EVT_PL_LEFT_UP ( cbRowDragPlugin::OnLButtonUp )
+ EVT_PL_MOTION ( cbRowDragPlugin::OnMouseMove )
- EVT_PL_DRAW_PANE_DECOR ( cbRowDragPlugin::OnDrawPaneBackground )
+ EVT_PL_DRAW_PANE_DECOR ( cbRowDragPlugin::OnDrawPaneBackground )
END_EVENT_TABLE()
-// FIXME:: how to eliminated these cut&pasted constructors?
+// FIXME:: how to eliminated these cut and pasted constructors?
cbRowDragPlugin::cbRowDragPlugin(void)
- : mHightColor ( 192, 192, 255 ),
- mLowColor ( 192, 192, 192 ),
+ : mHightColor ( 192, 192, 255 ),
+ mLowColor ( 192, 192, 192 ),
mTrianInnerColor ( 0,0,255 ),
- mTrianInnerPen ( mTrianInnerColor, 1, wxSOLID ),
+ mTrianInnerPen ( mTrianInnerColor, 1, wxSOLID ),
mDragStarted ( FALSE ),
- mDecisionMode ( FALSE ),
- mCurDragOfs ( 0 ),
- mCaptureIsOn ( FALSE ),
+ mDecisionMode ( FALSE ),
+ mCurDragOfs ( 0 ),
+ mCaptureIsOn ( FALSE ),
mSvTopMargin ( -1 ),
- mSvBottomMargin ( -1 ),
- mSvLeftMargin ( -1 ),
- mSvRightMargin ( -1 ),
+ mSvBottomMargin ( -1 ),
+ mSvLeftMargin ( -1 ),
+ mSvRightMargin ( -1 ),
mpPaneImage ( NULL ),
- mpRowImage ( NULL ),
- mpCombinedImage ( NULL ),
+ mpRowImage ( NULL ),
+ mpCombinedImage ( NULL ),
- mpRowInFocus ( NULL ),
- mCollapsedIconInFocus( -1 ),
-
- mpPane ( NULL )
+ mpRowInFocus ( NULL ),
+ mCollapsedIconInFocus( -1 ),
+
+ mpPane ( NULL )
{
}
cbRowDragPlugin::cbRowDragPlugin( wxFrameLayout* pLayout, int paneMask )
- : cbPluginBase( pLayout, paneMask ),
-
- mHightColor ( 192, 192, 255 ),
- mLowColor ( 192, 192, 192 ),
+ : cbPluginBase( pLayout, paneMask ),
+
+ mHightColor ( 192, 192, 255 ),
+ mLowColor ( 192, 192, 192 ),
mTrianInnerColor ( 0,0,255 ),
- mTrianInnerPen ( mTrianInnerColor, 1, wxSOLID ),
+ mTrianInnerPen ( mTrianInnerColor, 1, wxSOLID ),
mDragStarted ( FALSE ),
- mDecisionMode ( FALSE ),
- mCurDragOfs ( 0 ),
- mCaptureIsOn ( FALSE ),
- mSvTopMargin ( -1 ),
- mSvBottomMargin ( -1 ),
- mSvLeftMargin ( -1 ),
- mSvRightMargin ( -1 ),
+ mDecisionMode ( FALSE ),
+ mCurDragOfs ( 0 ),
+ mCaptureIsOn ( FALSE ),
+ mSvTopMargin ( -1 ),
+ mSvBottomMargin ( -1 ),
+ mSvLeftMargin ( -1 ),
+ mSvRightMargin ( -1 ),
mpPaneImage ( NULL ),
mpRowImage ( NULL ),
- mpCombinedImage ( NULL ),
+ mpCombinedImage ( NULL ),
- mpRowInFocus ( NULL ),
- mCollapsedIconInFocus( -1 ),
-
- mpPane ( NULL )
+ mpRowInFocus ( NULL ),
+ mCollapsedIconInFocus( -1 ),
+
+ mpPane ( NULL )
{
}
// handlers for plugin events
void cbRowDragPlugin::OnMouseMove( cbMotionEvent& event )
{
- // short-cuts
- wxPoint pos = event.mPos;
- mpPane = event.mpPane;
-
- mpPane->PaneToFrame( &pos.x, &pos.y );
-
- if ( !mDragStarted )
- {
- if ( mDecisionMode && mpRowInFocus )
- {
- int ofs;
-
- if ( mpPane->IsHorizontal() )
-
- ofs = pos.y - mDragOrigin.y;
- else
- ofs = pos.x - mDragOrigin.x;
-
- // check if the item was dragged sufficeintly
- // far, enough to consider that user really intends
- // to drag it
-
- if ( ofs >= MINIMAL_ROW_DRAG_OFS ||
- ofs <= -MINIMAL_ROW_DRAG_OFS )
- {
- // DBG::
- //.wxPoint pos = event.mPos;
- //wxPoint drg = mDragOrigin;
- //int dif = event.mPos.x - mDragOrigin.x;
-
- mDragStarted = TRUE;
- mDecisionMode = FALSE;
- mDragOrigin = pos;
-
- PrepareForRowDrag();
- return;
- }
-
- // this plugin "eats" all mouse input while item is dragged,
- return;
- }
-
- cbRowInfo* pRow = GetFirstRow();
-
- bool focusFound = FALSE;
-
- while( pRow )
- {
- if ( HitTestRowDragHint( pRow, pos ) )
- {
- CheckPrevItemInFocus( pRow, -1 );
- SetMouseCapture( TRUE );
-
- focusFound = TRUE;
-
- mpRowInFocus = pRow;
- mCollapsedIconInFocus = -1;
- break;
- }
-
- pRow = pRow->mpNext;
- }
-
- if ( !focusFound )
- {
- int hrCnt = GetHRowsCountForPane( event.mpPane );
-
- for( int i = 0; i != hrCnt; ++i )
- {
- if ( HitTestCollapsedRowIcon( i, pos ) )
- {
- CheckPrevItemInFocus( NULL, i );
- SetMouseCapture( TRUE );
-
- focusFound = TRUE;
-
- mCollapsedIconInFocus = i;
- mpRowInFocus = NULL;
- break;
- }
- }
- }
-
- if ( !focusFound && ItemIsInFocus() )
- {
- // kill focus from item previously been in focus
- UnhiglightItemInFocus();
-
- mpRowInFocus = NULL;
- mCollapsedIconInFocus = -1;
- SetMouseCapture( FALSE );
- }
-
- if ( !ItemIsInFocus() )
-
- // delegate it to other plugins
- event.Skip();
- }
- else
- {
- // otherwise mouse pointer moves, when dragging is started
-
- if ( mpPane->IsHorizontal() )
- {
- // DBG::
- wxPoint p = event.mPos;
- wxPoint d = mDragOrigin;
-// int dif = event.mPos.x - mDragOrigin.x;
-
- // row is dragged up or down;
- ShowDraggedRow( pos.y - mDragOrigin.y );
- }
- else
- {
- // DBG::
- wxPoint p = event.mPos;
- wxPoint d = mDragOrigin;
-// int dif = event.mPos.x - mDragOrigin.x;
-
- // row is dragged left or right
- ShowDraggedRow( pos.x - mDragOrigin.x );
- }
-
- // this plugin "eats" all mouse input while item is dragged,
- }
+ // short-cuts
+ wxPoint pos = event.mPos;
+ mpPane = event.mpPane;
+
+ mpPane->PaneToFrame( &pos.x, &pos.y );
+
+ if ( !mDragStarted )
+ {
+ if ( mDecisionMode && mpRowInFocus )
+ {
+ int ofs;
+
+ if ( mpPane->IsHorizontal() )
+
+ ofs = pos.y - mDragOrigin.y;
+ else
+ ofs = pos.x - mDragOrigin.x;
+
+ // check if the item was dragged sufficeintly
+ // far, enough to consider that user really intends
+ // to drag it
+
+ if ( ofs >= MINIMAL_ROW_DRAG_OFS ||
+ ofs <= -MINIMAL_ROW_DRAG_OFS )
+ {
+ // DBG::
+ //.wxPoint pos = event.mPos;
+ //wxPoint drg = mDragOrigin;
+ //int dif = event.mPos.x - mDragOrigin.x;
+
+ mDragStarted = TRUE;
+ mDecisionMode = FALSE;
+ mDragOrigin = pos;
+
+ PrepareForRowDrag();
+ return;
+ }
+
+ // this plugin "eats" all mouse input while item is dragged,
+ return;
+ }
+
+ cbRowInfo* pRow = GetFirstRow();
+
+ bool focusFound = FALSE;
+
+ while( pRow )
+ {
+ if ( HitTestRowDragHint( pRow, pos ) )
+ {
+ CheckPrevItemInFocus( pRow, -1 );
+ SetMouseCapture( TRUE );
+
+ focusFound = TRUE;
+
+ mpRowInFocus = pRow;
+ mCollapsedIconInFocus = -1;
+ break;
+ }
+
+ pRow = pRow->mpNext;
+ }
+
+ if ( !focusFound )
+ {
+ int hrCnt = GetHRowsCountForPane( event.mpPane );
+
+ for( int i = 0; i != hrCnt; ++i )
+ {
+ if ( HitTestCollapsedRowIcon( i, pos ) )
+ {
+ CheckPrevItemInFocus( NULL, i );
+ SetMouseCapture( TRUE );
+
+ focusFound = TRUE;
+
+ mCollapsedIconInFocus = i;
+ mpRowInFocus = NULL;
+ break;
+ }
+ }
+ }
+
+ if ( !focusFound && ItemIsInFocus() )
+ {
+ // kill focus from item previously been in focus
+ UnhighlightItemInFocus();
+
+ mpRowInFocus = NULL;
+ mCollapsedIconInFocus = -1;
+ SetMouseCapture( FALSE );
+ }
+
+ if ( !ItemIsInFocus() )
+
+ // delegate it to other plugins
+ event.Skip();
+ }
+ else
+ {
+ // otherwise mouse pointer moves, when dragging is started
+
+ if ( mpPane->IsHorizontal() )
+ {
+ // DBG::
+ wxPoint p = event.mPos;
+ wxPoint d = mDragOrigin;
+// int dif = event.mPos.x - mDragOrigin.x;
+
+ // row is dragged up or down;
+ ShowDraggedRow( pos.y - mDragOrigin.y );
+ }
+ else
+ {
+ // DBG::
+ wxPoint p = event.mPos;
+ wxPoint d = mDragOrigin;
+// int dif = event.mPos.x - mDragOrigin.x;
+
+ // row is dragged left or right
+ ShowDraggedRow( pos.x - mDragOrigin.x );
+ }
+
+ // this plugin "eats" all mouse input while item is dragged,
+ }
}
void cbRowDragPlugin::OnLButtonDown( cbLeftDownEvent& event )
{
- mpPane = event.mpPane;
+ mpPane = event.mpPane;
- // DBG::
- wxASSERT( !mDragStarted && !mDecisionMode );
+ // DBG::
+ wxASSERT( !mDragStarted && !mDecisionMode );
- if ( ItemIsInFocus() )
- {
- mDecisionMode = TRUE;
+ if ( ItemIsInFocus() )
+ {
+ mDecisionMode = TRUE;
- wxPoint pos = event.mPos;
- mpPane->PaneToFrame( &pos.x, &pos.y );
+ wxPoint pos = event.mPos;
+ mpPane->PaneToFrame( &pos.x, &pos.y );
- mDragOrigin = pos;
+ mDragOrigin = pos;
- SetMouseCapture( TRUE );
- }
- else
- // propagate event to other plugins
- event.Skip();
+ SetMouseCapture( TRUE );
+ }
+ else
+ // propagate event to other plugins
+ event.Skip();
}
void cbRowDragPlugin::OnLButtonUp ( cbLeftUpEvent& event )
{
- if ( !mDragStarted && !mDecisionMode )
- {
- event.Skip();
- return;
- }
+ if ( !mDragStarted && !mDecisionMode )
+ {
+ event.Skip();
+ return;
+ }
- mpPane = event.mpPane;
+ mpPane = event.mpPane;
- if ( mDecisionMode )
- {
- cbDockPane* pPane = mpPane;
+ if ( mDecisionMode )
+ {
+ cbDockPane* pPane = mpPane;
- SetMouseCapture( FALSE );
+ SetMouseCapture( FALSE );
- mDecisionMode = FALSE;
- mDragStarted = FALSE;
+ mDecisionMode = FALSE;
+ mDragStarted = FALSE;
- wxPoint frmPos = event.mPos;
- pPane->PaneToFrame( &frmPos.x, &frmPos.y );
+ wxPoint frmPos = event.mPos;
+ pPane->PaneToFrame( &frmPos.x, &frmPos.y );
- if ( mpRowInFocus )
- {
- CollapseRow( mpRowInFocus );
- mpRowInFocus = 0;
- }
- else
- {
- ExpandRow( mCollapsedIconInFocus );
- mCollapsedIconInFocus = -1;
- }
+ if ( mpRowInFocus )
+ {
+ CollapseRow( mpRowInFocus );
+ mpRowInFocus = 0;
+ }
+ else
+ {
+ ExpandRow( mCollapsedIconInFocus );
+ mCollapsedIconInFocus = -1;
+ }
- mpRowInFocus = NULL;
- mpPane = pPane;
+ mpRowInFocus = NULL;
+ mpPane = pPane;
- pPane->FrameToPane( &frmPos.x, &frmPos.y );
+ pPane->FrameToPane( &frmPos.x, &frmPos.y );
- // give it another try after relayouting bars
+ // give it another try after relayouting bars
- cbMotionEvent moveEvt( frmPos, pPane );
- this->OnMouseMove( moveEvt );
+ cbMotionEvent moveEvt( frmPos, pPane );
+ this->OnMouseMove( moveEvt );
- // this plugin has "eaten" the mouse-up event
+ // this plugin has "eaten" the mouse-up event
- return;
- }
- else
- {
- // otherwise, the dragged row was dropped, determine
- // where to insert it
+ return;
+ }
+ else
+ {
+ // otherwise, the dragged row was dropped, determine
+ // where to insert it
- // restore initial pane appearence
- ShowPaneImage();
- FinishOnScreenDraw();
+ // restore initial pane appearence
+ ShowPaneImage();
+ FinishOnScreenDraw();
- cbRowInfo* pRow = GetFirstRow();
+ cbRowInfo* pRow = GetFirstRow();
- mpLayout->GetUpdatesManager().OnStartChanges();
+ mpLayout->GetUpdatesManager().OnStartChanges();
- pRow->mUMgrData.SetDirty(TRUE);
+ pRow->mUMgrData.SetDirty(TRUE);
- cbBarInfo* pBar = mpRowInFocus->mBars[0];
+ cbBarInfo* pBar = mpRowInFocus->mBars[0];
- while ( pBar )
- {
- pBar->mUMgrData.SetDirty(TRUE);
+ while ( pBar )
+ {
+ pBar->mUMgrData.SetDirty(TRUE);
- if ( pBar->mpBarWnd )
- {
- // do complete refresh
- pBar->mpBarWnd->Show(FALSE);
- pBar->mpBarWnd->Show(TRUE);
- }
+ if ( pBar->mpBarWnd )
+ {
+ // do complete refresh
+ pBar->mpBarWnd->Show(FALSE);
+ pBar->mpBarWnd->Show(TRUE);
+ }
- pBar = pBar->mpNext;
- }
+ pBar = pBar->mpNext;
+ }
- while( pRow )
- {
- if ( mCurDragOfs < pRow->mRowY )
- {
- InsertDraggedRowBefore( pRow );
- break;
- }
+ while( pRow )
+ {
+ if ( mCurDragOfs < pRow->mRowY )
+ {
+ InsertDraggedRowBefore( pRow );
+ break;
+ }
- pRow = pRow->mpNext;
- }
+ pRow = pRow->mpNext;
+ }
- if ( pRow == NULL ) InsertDraggedRowBefore( NULL );
+ if ( pRow == NULL ) InsertDraggedRowBefore( NULL );
- mpRowInFocus = NULL;
+ mpRowInFocus = NULL;
- mpLayout->RecalcLayout(FALSE);
+ mpLayout->RecalcLayout(FALSE);
- // finish change "transaction"
- mpLayout->GetUpdatesManager().OnFinishChanges();
- mpLayout->GetUpdatesManager().UpdateNow();
+ // finish change "transaction"
+ mpLayout->GetUpdatesManager().OnFinishChanges();
+ mpLayout->GetUpdatesManager().UpdateNow();
- // finish drag action
- SetMouseCapture( FALSE );
- mDragStarted = FALSE;
- }
+ // finish drag action
+ SetMouseCapture( FALSE );
+ mDragStarted = FALSE;
+ }
}
void cbRowDragPlugin::OnDrawPaneBackground ( cbDrawPaneDecorEvent& event )
{
- mpPane = event.mpPane;
+ mpPane = event.mpPane;
- // FIXME:: this may harm operation of other plugins
+ // FIXME:: this may harm operation of other plugins
- if ( GetNextHandler() && mpPane->GetRowList().GetCount() )
- {
- // first, let other plugins add their decorations now
-
- GetNextHandler()->ProcessEvent( event );
- event.Skip(FALSE);
- }
+ if ( GetNextHandler() && mpPane->GetRowList().GetCount() )
+ {
+ // first, let other plugins add their decorations now
+
+ GetNextHandler()->ProcessEvent( event );
+ event.Skip(FALSE);
+ }
- wxClientDC dc( &mpLayout->GetParentFrame() );
+ wxClientDC dc( &mpLayout->GetParentFrame() );
- dc.SetClippingRegion( mpPane->mBoundsInParent.x,
- mpPane->mBoundsInParent.y,
- mpPane->mBoundsInParent.width,
- mpPane->mBoundsInParent.height );
+ dc.SetClippingRegion( mpPane->mBoundsInParent.x,
+ mpPane->mBoundsInParent.y,
+ mpPane->mBoundsInParent.width,
+ mpPane->mBoundsInParent.height );
- int cnt = GetHRowsCountForPane( event.mpPane );
+ int cnt = GetHRowsCountForPane( event.mpPane );
- if ( cnt > 0 )
+ if ( cnt > 0 )
- DrawCollapsedRowsBorder( dc );
+ DrawCollapsedRowsBorder( dc );
- if ( mpPane->GetRowList().GetCount() )
-
- DrawRowsDragHintsBorder( dc );
+ if ( mpPane->GetRowList().GetCount() )
+
+ DrawRowsDragHintsBorder( dc );
- cbRowInfo* pRow = GetFirstRow();
+ cbRowInfo* pRow = GetFirstRow();
- while( pRow )
- {
- DrawRowDragHint( pRow, dc, FALSE );
- pRow = pRow->mpNext;
- }
+ while( pRow )
+ {
+ DrawRowDragHint( pRow, dc, FALSE );
+ pRow = pRow->mpNext;
+ }
- for( int i = 0; i != cnt; ++i )
+ for( int i = 0; i != cnt; ++i )
- DrawCollapsedRowIcon(i, dc, FALSE );
+ DrawCollapsedRowIcon(i, dc, FALSE );
}
int cbRowDragPlugin::GetHRowsCountForPane( cbDockPane* pPane )
{
- wxNode* pNode = mHiddenBars.First();
+ wxNode* pNode = mHiddenBars.First();
- int maxIconNo = -1;
+ int maxIconNo = -1;
- while( pNode )
- {
- cbHiddenBarInfo* pHBInfo = (cbHiddenBarInfo*)pNode->Data();
+ while( pNode )
+ {
+ cbHiddenBarInfo* pHBInfo = (cbHiddenBarInfo*)pNode->Data();
- if ( pHBInfo->mAlignment == pPane->mAlignment )
+ if ( pHBInfo->mAlignment == pPane->mAlignment )
- maxIconNo = wxMax( maxIconNo, pHBInfo->mIconNo );
+ maxIconNo = wxMax( maxIconNo, pHBInfo->mIconNo );
- pNode = pNode->Next();
- }
+ pNode = pNode->Next();
+ }
- return ( maxIconNo + 1 );
+ return ( maxIconNo + 1 );
}
int cbRowDragPlugin::GetCollapsedRowIconHeight()
{
- return COLLAPSED_ICON_HEIGHT;
+ return COLLAPSED_ICON_HEIGHT;
}
int cbRowDragPlugin::GetRowDragHintWidth()
{
- return ROW_DRAG_HINT_WIDTH;
+ return ROW_DRAG_HINT_WIDTH;
}
void cbRowDragPlugin::SetPaneMargins()
{
- int hiddenRowsCnt = GetHRowsCountForPane( mpPane );
-
- if ( mSvTopMargin == -1 )
- {
- mSvTopMargin = mpPane->mTopMargin;
- mSvBottomMargin = mpPane->mBottomMargin;
- mSvLeftMargin = mpPane->mLeftMargin;
- mSvRightMargin = mpPane->mRightMargin;
- }
-
- if ( mpPane->IsHorizontal() )
- {
- mpPane->mTopMargin = mSvTopMargin;
- mpPane->mBottomMargin = ( hiddenRowsCnt == 0 )
- ? mSvBottomMargin
- : mSvBottomMargin + GetCollapsedRowIconHeight();
-
- mpPane->mLeftMargin = mSvLeftMargin + GetRowDragHintWidth();
- mpPane->mRightMargin = mSvRightMargin;
- }
- else
- {
- mpPane->mTopMargin = mSvTopMargin;
- mpPane->mBottomMargin = mSvBottomMargin + GetRowDragHintWidth();
-
- mpPane->mLeftMargin = mSvLeftMargin;
- mpPane->mRightMargin = ( hiddenRowsCnt == 0 ) ?
- mSvRightMargin : mSvRightMargin + GetCollapsedRowIconHeight();
- }
+ int hiddenRowsCnt = GetHRowsCountForPane( mpPane );
+
+ if ( mSvTopMargin == -1 )
+ {
+ mSvTopMargin = mpPane->mTopMargin;
+ mSvBottomMargin = mpPane->mBottomMargin;
+ mSvLeftMargin = mpPane->mLeftMargin;
+ mSvRightMargin = mpPane->mRightMargin;
+ }
+
+ if ( mpPane->IsHorizontal() )
+ {
+ mpPane->mTopMargin = mSvTopMargin;
+ mpPane->mBottomMargin = ( hiddenRowsCnt == 0 )
+ ? mSvBottomMargin
+ : mSvBottomMargin + GetCollapsedRowIconHeight();
+
+ mpPane->mLeftMargin = mSvLeftMargin + GetRowDragHintWidth();
+ mpPane->mRightMargin = mSvRightMargin;
+ }
+ else
+ {
+ mpPane->mTopMargin = mSvTopMargin;
+ mpPane->mBottomMargin = mSvBottomMargin + GetRowDragHintWidth();
+
+ mpPane->mLeftMargin = mSvLeftMargin;
+ mpPane->mRightMargin = ( hiddenRowsCnt == 0 ) ?
+ mSvRightMargin : mSvRightMargin + GetCollapsedRowIconHeight();
+ }
}
void cbRowDragPlugin::OnInitPlugin()
{
- cbDockPane** panes = mpLayout->GetPanesArray();
+ cbDockPane** panes = mpLayout->GetPanesArray();
- for( int i = 0; i != MAX_PANES; ++i )
+ for( int i = 0; i != MAX_PANES; ++i )
- if ( panes[i]->MatchesMask( mPaneMask ) )
- {
- mpPane = panes[i];
+ if ( panes[i]->MatchesMask( mPaneMask ) )
+ {
+ mpPane = panes[i];
- SetPaneMargins();
- }
+ SetPaneMargins();
+ }
}
/*** helpers for drag&drop ***/
void cbRowDragPlugin::SetMouseCapture( bool captureOn )
{
- if ( mCaptureIsOn == captureOn ) return;
-
- if ( captureOn )
- {
- mpLayout->CaptureEventsForPane( mpPane );
- mpLayout->CaptureEventsForPlugin( this );
- }
- else
- {
- mpLayout->ReleaseEventsFromPane( mpPane );
- mpLayout->ReleaseEventsFromPlugin( this );
- }
-
- mCaptureIsOn = captureOn;
+ if ( mCaptureIsOn == captureOn ) return;
+
+ if ( captureOn )
+ {
+ mpLayout->CaptureEventsForPane( mpPane );
+ mpLayout->CaptureEventsForPlugin( this );
+ }
+ else
+ {
+ mpLayout->ReleaseEventsFromPane( mpPane );
+ mpLayout->ReleaseEventsFromPlugin( this );
+ }
+
+ mCaptureIsOn = captureOn;
}
-void cbRowDragPlugin::UnhiglightItemInFocus()
+void cbRowDragPlugin::UnhighlightItemInFocus()
{
- wxClientDC dc( &mpLayout->GetParentFrame() );
+ wxClientDC dc( &mpLayout->GetParentFrame() );
- if ( mpRowInFocus )
+ if ( mpRowInFocus )
- DrawRowDragHint( mpRowInFocus, dc, FALSE );
- else
- if ( mCollapsedIconInFocus != - 1 )
+ DrawRowDragHint( mpRowInFocus, dc, FALSE );
+ else
+ if ( mCollapsedIconInFocus != - 1 )
- DrawCollapsedRowIcon( mCollapsedIconInFocus, dc, FALSE );
+ DrawCollapsedRowIcon( mCollapsedIconInFocus, dc, FALSE );
}
void cbRowDragPlugin::ShowDraggedRow( int offset )
{
- // create combined image of pane and dragged
- // row on it, in the mpCombinedImage bitmap
+ // create combined image of pane and dragged
+ // row on it, in the mpCombinedImage bitmap
- if ( mpPane->IsHorizontal() )
- {
- if ( mInitialRowOfs + offset + mRowImgDim.y > mCombRect.y + mCombRect.height )
+ if ( mpPane->IsHorizontal() )
+ {
+ if ( mInitialRowOfs + offset + mRowImgDim.y > mCombRect.y + mCombRect.height )
- offset = mCombRect.y + mCombRect.height - mRowImgDim.y - mInitialRowOfs;
+ offset = mCombRect.y + mCombRect.height - mRowImgDim.y - mInitialRowOfs;
- if ( mInitialRowOfs + offset < mCombRect.y )
+ if ( mInitialRowOfs + offset < mCombRect.y )
- offset = mCombRect.y - mInitialRowOfs;
+ offset = mCombRect.y - mInitialRowOfs;
- int x, y = mInitialRowOfs + offset;
- mpPane->FrameToPane( &x, &y );
- mCurDragOfs = y;
- }
- else
- {
- if ( mInitialRowOfs + offset + mRowImgDim.x > mCombRect.x + mCombRect.width )
+ int x, y = mInitialRowOfs + offset;
+ mpPane->FrameToPane( &x, &y );
+ mCurDragOfs = y;
+ }
+ else
+ {
+ if ( mInitialRowOfs + offset + mRowImgDim.x > mCombRect.x + mCombRect.width )
- offset = mCombRect.x + mCombRect.width - mRowImgDim.x - mInitialRowOfs;
+ offset = mCombRect.x + mCombRect.width - mRowImgDim.x - mInitialRowOfs;
- if ( mInitialRowOfs + offset < mCombRect.x )
+ if ( mInitialRowOfs + offset < mCombRect.x )
- offset = mCombRect.x - mInitialRowOfs;
+ offset = mCombRect.x - mInitialRowOfs;
- int x = mInitialRowOfs + offset, y;
- mpPane->FrameToPane( &x, &y );
- mCurDragOfs = x;
- }
+ int x = mInitialRowOfs + offset, y;
+ mpPane->FrameToPane( &x, &y );
+ mCurDragOfs = x;
+ }
- wxMemoryDC rowImgDc;
- rowImgDc.SelectObject ( *mpRowImage );
+ wxMemoryDC rowImgDc;
+ rowImgDc.SelectObject ( *mpRowImage );
- wxMemoryDC paneImgDc;
- paneImgDc.SelectObject( *mpPaneImage );
+ wxMemoryDC paneImgDc;
+ paneImgDc.SelectObject( *mpPaneImage );
- wxMemoryDC combImgDc;
- combImgDc.SelectObject( *mpCombinedImage );
+ wxMemoryDC combImgDc;
+ combImgDc.SelectObject( *mpCombinedImage );
- combImgDc.Blit( 0,0, mCombRect.width, mCombRect.height,
- &paneImgDc, 0,0, wxCOPY );
+ combImgDc.Blit( 0,0, mCombRect.width, mCombRect.height,
+ &paneImgDc, 0,0, wxCOPY );
- if ( mpPane->IsHorizontal() )
- {
- combImgDc.Blit( 0, mInitialRowOfs + offset - mCombRect.y,
- mCombRect.width, mRowImgDim.y,
- &rowImgDc, 0,0, wxCOPY );
- }
- else
- {
- combImgDc.Blit( mInitialRowOfs + offset - mCombRect.x,
- 0,
- mRowImgDim.x, mCombRect.height,
- &rowImgDc, 0,0, wxCOPY );
- }
+ if ( mpPane->IsHorizontal() )
+ {
+ combImgDc.Blit( 0, mInitialRowOfs + offset - mCombRect.y,
+ mCombRect.width, mRowImgDim.y,
+ &rowImgDc, 0,0, wxCOPY );
+ }
+ else
+ {
+ combImgDc.Blit( mInitialRowOfs + offset - mCombRect.x,
+ 0,
+ mRowImgDim.x, mCombRect.height,
+ &rowImgDc, 0,0, wxCOPY );
+ }
- int scrX = mCombRect.x,
- scrY = mCombRect.y;
+ int scrX = mCombRect.x,
+ scrY = mCombRect.y;
- mpLayout->GetParentFrame().ClientToScreen( &scrX, &scrY );
+ mpLayout->GetParentFrame().ClientToScreen( &scrX, &scrY );
- mpScrDc->Blit( scrX, scrY, mCombRect.width, mCombRect.height,
- &combImgDc, 0,0, wxCOPY );
+ mpScrDc->Blit( scrX, scrY, mCombRect.width, mCombRect.height,
+ &combImgDc, 0,0, wxCOPY );
- rowImgDc .SelectObject( wxNullBitmap );
- paneImgDc.SelectObject( wxNullBitmap );
- combImgDc.SelectObject( wxNullBitmap );
+ rowImgDc .SelectObject( wxNullBitmap );
+ paneImgDc.SelectObject( wxNullBitmap );
+ combImgDc.SelectObject( wxNullBitmap );
}
wxBitmap* cbRowDragPlugin::CaptureDCArea( wxDC& dc, wxRect& area )
{
- wxBitmap* pBmp = new wxBitmap( int(area.width), int(area.height) );
+ wxBitmap* pBmp = new wxBitmap( int(area.width), int(area.height) );
- wxMemoryDC mdc;
- mdc.SelectObject( *pBmp );
+ wxMemoryDC mdc;
+ mdc.SelectObject( *pBmp );
- mdc.Blit( 0,0, area.width, area.height, &dc, area.x, area.y, wxCOPY );
- mdc.SelectObject( wxNullBitmap );
+ mdc.Blit( 0,0, area.width, area.height, &dc, area.x, area.y, wxCOPY );
+ mdc.SelectObject( wxNullBitmap );
- return pBmp;
+ return pBmp;
}
void cbRowDragPlugin::PrepareForRowDrag()
{
- wxRect rowBounds = mpRowInFocus->mBoundsInParent;
+ wxRect rowBounds = mpRowInFocus->mBoundsInParent;
- if ( mpPane->IsHorizontal() )
- {
- mCombRect = mpPane->mBoundsInParent;
+ if ( mpPane->IsHorizontal() )
+ {
+ mCombRect = mpPane->mBoundsInParent;
- mCombRect.x += mpPane->mLeftMargin - ROW_DRAG_HINT_WIDTH - 1;
- mCombRect.y += mpPane->mTopMargin;
+ mCombRect.x += mpPane->mLeftMargin - ROW_DRAG_HINT_WIDTH - 1;
+ mCombRect.y += mpPane->mTopMargin;
- mCombRect.width -= mpPane->mLeftMargin + mpPane->mRightMargin - ROW_DRAG_HINT_WIDTH - 1 - 1;
- mCombRect.height -= mpPane->mTopMargin + mpPane->mBottomMargin;
+ mCombRect.width -= mpPane->mLeftMargin + mpPane->mRightMargin - ROW_DRAG_HINT_WIDTH - 1 - 1;
+ mCombRect.height -= mpPane->mTopMargin + mpPane->mBottomMargin;
- mCombRect.height += 2*rowBounds.height;
- mCombRect.y -= rowBounds.height;
- mInitialRowOfs = rowBounds.y;
+ mCombRect.height += 2*rowBounds.height;
+ mCombRect.y -= rowBounds.height;
+ mInitialRowOfs = rowBounds.y;
- rowBounds.y -= 1;
- rowBounds.height += 2;
- rowBounds.x = mCombRect.x;
- rowBounds.width = mCombRect.width;
+ rowBounds.y -= 1;
+ rowBounds.height += 2;
+ rowBounds.x = mCombRect.x;
+ rowBounds.width = mCombRect.width;
- mRowImgDim.y = rowBounds.height;
- }
- else
- {
- mCombRect = mpPane->mBoundsInParent;
+ mRowImgDim.y = rowBounds.height;
+ }
+ else
+ {
+ mCombRect = mpPane->mBoundsInParent;
- mCombRect.y += mpPane->mTopMargin - 1;
- mCombRect.x += mpPane->mLeftMargin - 1;
- ;
- mCombRect.height -= mpPane->mTopMargin + mpPane->mBottomMargin - ROW_DRAG_HINT_WIDTH - 1 - 1;
- mCombRect.width -= mpPane->mLeftMargin + mpPane->mRightMargin;
+ mCombRect.y += mpPane->mTopMargin - 1;
+ mCombRect.x += mpPane->mLeftMargin - 1;
+ ;
+ mCombRect.height -= mpPane->mTopMargin + mpPane->mBottomMargin - ROW_DRAG_HINT_WIDTH - 1 - 1;
+ mCombRect.width -= mpPane->mLeftMargin + mpPane->mRightMargin;
- mCombRect.width += 2*rowBounds.width;
- mCombRect.x -= rowBounds.width;
- mInitialRowOfs = rowBounds.x;
+ mCombRect.width += 2*rowBounds.width;
+ mCombRect.x -= rowBounds.width;
+ mInitialRowOfs = rowBounds.x;
- rowBounds.x -= 1;
- rowBounds.width += 2;
- rowBounds.y = mCombRect.y;
- rowBounds.height = mCombRect.height;
+ rowBounds.x -= 1;
+ rowBounds.width += 2;
+ rowBounds.y = mCombRect.y;
+ rowBounds.height = mCombRect.height;
- mRowImgDim.x = rowBounds.width;
- }
- // output cobination results onto frame's client area
- wxScreenDC::StartDrawingOnTop(&mpLayout->GetParentFrame());
- mpScrDc = new wxScreenDC();
+ mRowImgDim.x = rowBounds.width;
+ }
+ // output cobination results onto frame's client area
+ wxScreenDC::StartDrawingOnTop(&mpLayout->GetParentFrame());
+ mpScrDc = new wxScreenDC();
- int x = mCombRect.x, y = mCombRect.y;
- mpLayout->GetParentFrame().ClientToScreen( &x, &y );
+ int x = mCombRect.x, y = mCombRect.y;
+ mpLayout->GetParentFrame().ClientToScreen( &x, &y );
- wxRect scrRect = mCombRect;
- scrRect.x = x;
- scrRect.y = y;
+ wxRect scrRect = mCombRect;
+ scrRect.x = x;
+ scrRect.y = y;
- mpPaneImage = CaptureDCArea( *mpScrDc, scrRect );
+ mpPaneImage = CaptureDCArea( *mpScrDc, scrRect );
- wxMemoryDC mdc;
- mdc.SelectObject( *mpPaneImage );
- mdc.SetDeviceOrigin( -mCombRect.x, -mCombRect.y );
+ wxMemoryDC mdc;
+ mdc.SelectObject( *mpPaneImage );
+ mdc.SetDeviceOrigin( -mCombRect.x, -mCombRect.y );
- DrawRectShade( rowBounds, mdc, -1, mpLayout->mGrayPen, mpLayout->mDarkPen );
- DrawRectShade( rowBounds, mdc, 0, mpLayout->mLightPen, mpLayout->mBlackPen );
+ DrawRectShade( rowBounds, mdc, -1, mpLayout->mGrayPen, mpLayout->mDarkPen );
+ DrawRectShade( rowBounds, mdc, 0, mpLayout->mLightPen, mpLayout->mBlackPen );
- mpRowImage = CaptureDCArea( mdc, rowBounds );
+ mpRowImage = CaptureDCArea( mdc, rowBounds );
- // draw dark empty-row placeholder
- DrawEmptyRow( mdc, rowBounds );
+ // draw dark empty-row placeholder
+ DrawEmptyRow( mdc, rowBounds );
- //DrawRectShade( rowBounds, mdc, 0, mpLayout->mGrayPen, mpLayout->mDarkPen );
- DrawRectShade( rowBounds, mdc, -1, mpLayout->mGrayPen, mpLayout->mGrayPen );
+ //DrawRectShade( rowBounds, mdc, 0, mpLayout->mGrayPen, mpLayout->mDarkPen );
+ DrawRectShade( rowBounds, mdc, -1, mpLayout->mGrayPen, mpLayout->mGrayPen );
- mdc.SelectObject( wxNullBitmap );
+ mdc.SelectObject( wxNullBitmap );
- mpCombinedImage = new wxBitmap( int(mCombRect.width), int(mCombRect.height) );
+ mpCombinedImage = new wxBitmap( int(mCombRect.width), int(mCombRect.height) );
- // show it for the first time
- ShowDraggedRow( 0 );
+ // show it for the first time
+ ShowDraggedRow( 0 );
}
void cbRowDragPlugin::DrawEmptyRow( wxDC& dc, wxRect& rowBounds )
{
- wxBrush bkBrush( mpLayout->mDarkPen.GetColour(), wxSOLID );
+ wxBrush bkBrush( mpLayout->mDarkPen.GetColour(), wxSOLID );
- // paint the "dark" empty-row placeholder
+ // paint the "dark" empty-row placeholder
- dc.SetBrush( bkBrush );
- dc.SetPen ( mpLayout->mNullPen );
+ dc.SetBrush( bkBrush );
+ dc.SetPen ( mpLayout->mNullPen );
- dc.DrawRectangle( rowBounds.x, rowBounds.y,
- rowBounds.width+1, rowBounds.height+1 );
+ dc.DrawRectangle( rowBounds.x, rowBounds.y,
+ rowBounds.width+1, rowBounds.height+1 );
- dc.SetBrush( wxNullBrush );
+ dc.SetBrush( wxNullBrush );
}
void cbRowDragPlugin::ShowPaneImage()
{
- int scrX = 0, scrY = 0;
+ int scrX = 0, scrY = 0;
- mpLayout->GetParentFrame().ClientToScreen( &scrX, &scrY );
+ mpLayout->GetParentFrame().ClientToScreen( &scrX, &scrY );
- wxMemoryDC mdc;
- mdc.SelectObject( *mpPaneImage );
+ wxMemoryDC mdc;
+ mdc.SelectObject( *mpPaneImage );
- mpScrDc->Blit( mCombRect.x + scrX, mCombRect.y + scrY,
- mCombRect.width, mCombRect.height,
- &mdc, 0,0, wxCOPY );
+ mpScrDc->Blit( mCombRect.x + scrX, mCombRect.y + scrY,
+ mCombRect.width, mCombRect.height,
+ &mdc, 0,0, wxCOPY );
- mdc.SelectObject( wxNullBitmap );
+ mdc.SelectObject( wxNullBitmap );
}
void cbRowDragPlugin::FinishOnScreenDraw()
{
- wxScreenDC::EndDrawingOnTop();
+ wxScreenDC::EndDrawingOnTop();
- delete mpScrDc;
- delete mpCombinedImage;
- delete mpPaneImage;
- delete mpRowImage;
+ delete mpScrDc;
+ delete mpCombinedImage;
+ delete mpPaneImage;
+ delete mpRowImage;
- mpScrDc = NULL;
-
- mpCombinedImage = mpPaneImage = mpRowImage = NULL;
+ mpScrDc = NULL;
+
+ mpCombinedImage = mpPaneImage = mpRowImage = NULL;
}
void cbRowDragPlugin::CollapseRow( cbRowInfo* pRow )
{
- int iconCnt = GetHRowsCountForPane( mpPane );
+ int iconCnt = GetHRowsCountForPane( mpPane );
- mpLayout->GetUpdatesManager().OnStartChanges();
+ mpLayout->GetUpdatesManager().OnStartChanges();
- cbBarInfo* pBar = pRow->mBars[0];
+ cbBarInfo* pBar = pRow->mBars[0];
- int rowNo = 0;
+ int rowNo = 0;
- cbRowInfo* pCur = pRow;
- while( pCur->mpPrev ) { ++rowNo; pCur = pCur->mpPrev; }
+ cbRowInfo* pCur = pRow;
+ while( pCur->mpPrev ) { ++rowNo; pCur = pCur->mpPrev; }
- while( pBar )
- {
- cbHiddenBarInfo* pHBInfo = new cbHiddenBarInfo();
-
- pHBInfo->mpBar = pBar;
- pHBInfo->mRowNo = rowNo;
- pHBInfo->mIconNo = iconCnt;
- pHBInfo->mAlignment = mpPane->mAlignment;
+ while( pBar )
+ {
+ cbHiddenBarInfo* pHBInfo = new cbHiddenBarInfo();
+
+ pHBInfo->mpBar = pBar;
+ pHBInfo->mRowNo = rowNo;
+ pHBInfo->mIconNo = iconCnt;
+ pHBInfo->mAlignment = mpPane->mAlignment;
- mHiddenBars.Append( (wxObject*) pHBInfo );
+ mHiddenBars.Append( (wxObject*) pHBInfo );
- // hide it
- if ( pBar->mpBarWnd )
+ // hide it
+ if ( pBar->mpBarWnd )
- pBar->mpBarWnd->Show( FALSE );
+ pBar->mpBarWnd->Show( FALSE );
- pBar->mState = wxCBAR_HIDDEN;
+ pBar->mState = wxCBAR_HIDDEN;
- cbBarInfo* pNext = pBar->mpNext;
+ cbBarInfo* pNext = pBar->mpNext;
- pBar->mpRow = NULL;
- pBar->mpNext = NULL;
- pBar->mpPrev = NULL;
+ pBar->mpRow = NULL;
+ pBar->mpNext = NULL;
+ pBar->mpPrev = NULL;
- pBar = pNext;
- }
+ pBar = pNext;
+ }
- mpPane->GetRowList().Remove( pRow );
- mpPane->InitLinksForRows();
+ mpPane->GetRowList().Remove( pRow );
+ mpPane->InitLinksForRows();
- delete pRow;
+ delete pRow;
- SetPaneMargins();
+ SetPaneMargins();
- mpLayout->RecalcLayout(FALSE);
+ mpLayout->RecalcLayout(FALSE);
- mpRowInFocus = NULL;
+ mpRowInFocus = NULL;
- mpLayout->GetUpdatesManager().OnFinishChanges();
- mpLayout->GetUpdatesManager().UpdateNow();
+ mpLayout->GetUpdatesManager().OnFinishChanges();
+ mpLayout->GetUpdatesManager().UpdateNow();
}
void cbRowDragPlugin::ExpandRow( int collapsedIconIdx )
{
- mpLayout->GetUpdatesManager().OnStartChanges();
+ mpLayout->GetUpdatesManager().OnStartChanges();
- cbRowInfo* pNewRow = new cbRowInfo();
+ cbRowInfo* pNewRow = new cbRowInfo();
- wxNode* pNode = mHiddenBars.First();
+ wxNode* pNode = mHiddenBars.First();
- int rowNo = 0;
+ int rowNo = 0;
- // move bars from internal list to the newly expanded row
+ // move bars from internal list to the newly expanded row
- while( pNode )
- {
- cbHiddenBarInfo* pHBInfo = (cbHiddenBarInfo*)pNode->Data();
+ while( pNode )
+ {
+ cbHiddenBarInfo* pHBInfo = (cbHiddenBarInfo*)pNode->Data();
- if ( pHBInfo->mAlignment == mpPane->mAlignment &&
- pHBInfo->mIconNo == collapsedIconIdx )
- {
- rowNo = pHBInfo->mRowNo;
+ if ( pHBInfo->mAlignment == mpPane->mAlignment &&
+ pHBInfo->mIconNo == collapsedIconIdx )
+ {
+ rowNo = pHBInfo->mRowNo;
- if ( pHBInfo->mpBar->mState == wxCBAR_HIDDEN )
- {
- pNewRow->mBars.Add( pHBInfo->mpBar );
+ if ( pHBInfo->mpBar->mState == wxCBAR_HIDDEN )
+ {
+ pNewRow->mBars.Add( pHBInfo->mpBar );
- pHBInfo->mpBar->mState = ( mpPane->IsHorizontal() )
- ? wxCBAR_DOCKED_HORIZONTALLY
- : wxCBAR_DOCKED_VERTICALLY;
- }
+ pHBInfo->mpBar->mState = ( mpPane->IsHorizontal() )
+ ? wxCBAR_DOCKED_HORIZONTALLY
+ : wxCBAR_DOCKED_VERTICALLY;
+ }
- // remove bar info from internal list
+ // remove bar info from internal list
- wxNode* pNext = pNode->Next();
+ wxNode* pNext = pNode->Next();
- delete pHBInfo;
- mHiddenBars.DeleteNode( pNode );
+ delete pHBInfo;
+ mHiddenBars.DeleteNode( pNode );
- pNode = pNext;
- }
- else
- {
- // decrease incon numbers with higher indicies, since this
- // row is now removed from the hidden-rows list
+ pNode = pNext;
+ }
+ else
+ {
+ // decrease incon numbers with higher indicies, since this
+ // row is now removed from the hidden-rows list
- if ( pHBInfo->mIconNo > collapsedIconIdx &&
- pHBInfo->mAlignment == mpPane->mAlignment )
+ if ( pHBInfo->mIconNo > collapsedIconIdx &&
+ pHBInfo->mAlignment == mpPane->mAlignment )
- --pHBInfo->mIconNo;
+ --pHBInfo->mIconNo;
- pNode = pNode->Next();
- }
- }
+ pNode = pNode->Next();
+ }
+ }
- mpPane->InitLinksForRow( pNewRow );
+ mpPane->InitLinksForRow( pNewRow );
- // insert row into pane at it's original position
+ // insert row into pane at it's original position
- if ( pNewRow->mBars.GetCount() )
- {
- cbRowInfo* beforeRowNode = mpPane->GetRow( rowNo );
+ if ( pNewRow->mBars.GetCount() )
+ {
+ cbRowInfo* beforeRowNode = mpPane->GetRow( rowNo );
- mpPane->InsertRow( pNewRow, beforeRowNode );
- }
- else
- delete pNewRow;
+ mpPane->InsertRow( pNewRow, beforeRowNode );
+ }
+ else
+ delete pNewRow;
- SetPaneMargins();
+ SetPaneMargins();
- mpLayout->RecalcLayout(FALSE);
+ mpLayout->RecalcLayout(FALSE);
- mCollapsedIconInFocus = -1;
+ mCollapsedIconInFocus = -1;
- mpLayout->GetUpdatesManager().OnFinishChanges();
- mpLayout->GetUpdatesManager().UpdateNow();
+ mpLayout->GetUpdatesManager().OnFinishChanges();
+ mpLayout->GetUpdatesManager().UpdateNow();
- /*
- wxNode* pRowNode = mHiddenRows.Nth( collapsedIconIdx );
+ /*
+ wxNode* pRowNode = mHiddenRows.Nth( collapsedIconIdx );
- mpLayout->GetUpdatesManager().OnStartChanges();
+ mpLayout->GetUpdatesManager().OnStartChanges();
- // insert at the end of rows list
- mpPane->InsertRow( pRowNode, NULL );
+ // insert at the end of rows list
+ mpPane->InsertRow( pRowNode, NULL );
- int success = mHiddenRows.DeleteNode( pRowNode );
- // DBG::
- wxASSERT( success );
+ int success = mHiddenRows.DeleteNode( pRowNode );
+ // DBG::
+ wxASSERT( success );
- SetPaneMargins();
+ SetPaneMargins();
- mpLayout->RecalcLayout(FALSE);
+ mpLayout->RecalcLayout(FALSE);
- mCollapsedIconInFocus = -1;
+ mCollapsedIconInFocus = -1;
- mpLayout->GetUpdatesManager().OnFinishChanges();
- mpLayout->GetUpdatesManager().UpdateNow();
- */
+ mpLayout->GetUpdatesManager().OnFinishChanges();
+ mpLayout->GetUpdatesManager().UpdateNow();
+ */
}
void cbRowDragPlugin::InsertDraggedRowBefore( cbRowInfo* pBeforeRow )
{
- if ( mpRowInFocus != pBeforeRow &&
- mpRowInFocus->mpNext != pBeforeRow
- )
- {
- mpPane->GetRowList().Remove( mpRowInFocus );
-
- mpPane->InsertRow( mpRowInFocus, pBeforeRow );
- }
- else
- {
- // otherwise, nothing has happned (row positions do not change)
-
- //wxClientDC dc( &mpLayout->GetParentFrame() );
-
- //mpPane->PaintRow( mpRowInFocus, dc );
- //DrawRowDragHint( mpRowInFocus, dc, FALSE );
- }
+ if ( mpRowInFocus != pBeforeRow &&
+ mpRowInFocus->mpNext != pBeforeRow
+ )
+ {
+ mpPane->GetRowList().Remove( mpRowInFocus );
+
+ mpPane->InsertRow( mpRowInFocus, pBeforeRow );
+ }
+ else
+ {
+ // otherwise, nothing has happned (row positions do not change)
+
+ //wxClientDC dc( &mpLayout->GetParentFrame() );
+
+ //mpPane->PaintRow( mpRowInFocus, dc );
+ //DrawRowDragHint( mpRowInFocus, dc, FALSE );
+ }
}
bool cbRowDragPlugin::ItemIsInFocus()
{
- return ( mpRowInFocus || mCollapsedIconInFocus != - 1 );
+ return ( mpRowInFocus || mCollapsedIconInFocus != - 1 );
}
void cbRowDragPlugin::CheckPrevItemInFocus( cbRowInfo* pRow, int iconIdx )
{
- wxClientDC dc( &mpLayout->GetParentFrame() );
+ wxClientDC dc( &mpLayout->GetParentFrame() );
- if ( pRow != NULL && mpRowInFocus == pRow ) return;
- if ( iconIdx != -1 && mCollapsedIconInFocus == iconIdx ) return;
+ if ( pRow != NULL && mpRowInFocus == pRow ) return;
+ if ( iconIdx != -1 && mCollapsedIconInFocus == iconIdx ) return;
- UnhiglightItemInFocus();
+ UnhighlightItemInFocus();
- if ( iconIdx != - 1 )
-
- DrawCollapsedRowIcon( iconIdx, dc, TRUE );
+ if ( iconIdx != - 1 )
+
+ DrawCollapsedRowIcon( iconIdx, dc, TRUE );
- else
- if ( pRow != NULL )
+ else
+ if ( pRow != NULL )
- DrawRowDragHint( pRow, dc, TRUE );
+ DrawRowDragHint( pRow, dc, TRUE );
}
cbRowInfo* cbRowDragPlugin::GetFirstRow()
{
- return ( mpPane->GetRowList().GetCount() )
- ? mpPane->GetRowList()[0]
- : NULL;
+ return ( mpPane->GetRowList().GetCount() )
+ ? mpPane->GetRowList()[0]
+ : NULL;
}
/*** "hard-coded" metafile for NN-look ***/
void cbRowDragPlugin::DrawTrianUp( wxRect& inRect, wxDC& dc )
{
- int xOfs = (inRect.width - ICON_TRIAN_WIDTH)/2;
+ int xOfs = (inRect.width - ICON_TRIAN_WIDTH)/2;
- wxBrush br( mTrianInnerColor, wxSOLID );
+ wxBrush br( mTrianInnerColor, wxSOLID );
- dc.SetBrush( br );
- dc.SetPen( mpLayout->mBlackPen );
+ dc.SetBrush( br );
+ dc.SetPen( mpLayout->mBlackPen );
- wxPoint points[3];
- points[0].x = inRect.x + xOfs;
- points[0].y = inRect.y + inRect.height - 1;
- points[1].x = inRect.x + xOfs + ICON_TRIAN_WIDTH/2 + 1;
- points[1].y = inRect.y + inRect.height - 2 - ICON_TRIAN_HEIGHT;
- points[2].x = inRect.x + xOfs + ICON_TRIAN_WIDTH+1;
- points[2].y = inRect.y + inRect.height - 1;
+ wxPoint points[3];
+ points[0].x = inRect.x + xOfs;
+ points[0].y = inRect.y + inRect.height - 1;
+ points[1].x = inRect.x + xOfs + ICON_TRIAN_WIDTH/2 + 1;
+ points[1].y = inRect.y + inRect.height - 2 - ICON_TRIAN_HEIGHT;
+ points[2].x = inRect.x + xOfs + ICON_TRIAN_WIDTH+1;
+ points[2].y = inRect.y + inRect.height - 1;
- dc.DrawPolygon( 3, points );
+ dc.DrawPolygon( 3, points );
- // higlight upper-right edge of triangle
- dc.SetPen( mpLayout->mLightPen );
- dc.DrawLine( points[2].x, points[2].y,
- points[0].x, points[0].y );
+ // higlight upper-right edge of triangle
+ dc.SetPen( mpLayout->mLightPen );
+ dc.DrawLine( points[2].x, points[2].y,
+ points[0].x, points[0].y );
- dc.SetBrush( wxNullBrush );
+ dc.SetBrush( wxNullBrush );
}
void cbRowDragPlugin::DrawTrianDown( wxRect& inRect, wxDC& dc )
{
- int xOfs = (inRect.width - ICON_TRIAN_WIDTH)/2;
+ int xOfs = (inRect.width - ICON_TRIAN_WIDTH)/2;
- wxBrush br( mTrianInnerColor, wxSOLID );
+ wxBrush br( mTrianInnerColor, wxSOLID );
- dc.SetBrush( br );
- dc.SetPen( mpLayout->mBlackPen );
+ dc.SetBrush( br );
+ dc.SetPen( mpLayout->mBlackPen );
- wxPoint points[3];
- points[0].x = inRect.x + xOfs;
- points[0].y = inRect.y;
- points[1].x = inRect.x + xOfs + ICON_TRIAN_WIDTH;
- points[1].y = inRect.y;
- points[2].x = inRect.x + xOfs + ICON_TRIAN_WIDTH/2;
- points[2].y = inRect.y + ICON_TRIAN_HEIGHT;
+ wxPoint points[3];
+ points[0].x = inRect.x + xOfs;
+ points[0].y = inRect.y;
+ points[1].x = inRect.x + xOfs + ICON_TRIAN_WIDTH;
+ points[1].y = inRect.y;
+ points[2].x = inRect.x + xOfs + ICON_TRIAN_WIDTH/2;
+ points[2].y = inRect.y + ICON_TRIAN_HEIGHT;
- dc.DrawPolygon( 3, points );
+ dc.DrawPolygon( 3, points );
- // higlight upper-right edge of triangle
- dc.SetPen( mpLayout->mLightPen );
- dc.DrawLine( points[2].x, points[2].y,
- points[1].x, points[1].y );
+ // higlight upper-right edge of triangle
+ dc.SetPen( mpLayout->mLightPen );
+ dc.DrawLine( points[2].x, points[2].y,
+ points[1].x, points[1].y );
- dc.SetBrush( wxNullBrush );
+ dc.SetBrush( wxNullBrush );
}
void cbRowDragPlugin::DrawTrianRight( wxRect& inRect, wxDC& dc )
{
- int yOfs = (inRect.height - ICON_TRIAN_WIDTH)/2;
+ int yOfs = (inRect.height - ICON_TRIAN_WIDTH)/2;
- wxBrush br( mTrianInnerColor, wxSOLID );
+ wxBrush br( mTrianInnerColor, wxSOLID );
- dc.SetBrush( br );
- dc.SetPen( mpLayout->mBlackPen );
+ dc.SetBrush( br );
+ dc.SetPen( mpLayout->mBlackPen );
- wxPoint points[3];
- points[0].x = inRect.x;
- points[0].y = inRect.y + yOfs + ICON_TRIAN_WIDTH;
- points[1].x = inRect.x;
- points[1].y = inRect.y + yOfs;
- points[2].x = inRect.x + ICON_TRIAN_HEIGHT;
- points[2].y = inRect.y + yOfs + ICON_TRIAN_WIDTH/2;
+ wxPoint points[3];
+ points[0].x = inRect.x;
+ points[0].y = inRect.y + yOfs + ICON_TRIAN_WIDTH;
+ points[1].x = inRect.x;
+ points[1].y = inRect.y + yOfs;
+ points[2].x = inRect.x + ICON_TRIAN_HEIGHT;
+ points[2].y = inRect.y + yOfs + ICON_TRIAN_WIDTH/2;
- dc.DrawPolygon( 3, points );
+ dc.DrawPolygon( 3, points );
- // higlight upper-right edge of triangle
- dc.SetPen( mpLayout->mLightPen );
- dc.DrawLine( points[0].x, points[0].y,
- points[2].x, points[2].y );
+ // higlight upper-right edge of triangle
+ dc.SetPen( mpLayout->mLightPen );
+ dc.DrawLine( points[0].x, points[0].y,
+ points[2].x, points[2].y );
- dc.SetBrush( wxNullBrush );
+ dc.SetBrush( wxNullBrush );
}
void cbRowDragPlugin::Draw3DPattern( wxRect& inRect, wxDC& dc )
{
- for( int y = inRect.y; y < inRect.y + inRect.height; y+=3 )
-
- for( int x = inRect.x; x < inRect.x + inRect.width; x+=3 )
- {
- dc.SetPen( mpLayout->mLightPen );
- dc.DrawPoint( x,y );
- dc.SetPen( mpLayout->mBlackPen );
- dc.DrawPoint( x+1, y+1 );
- }
+ for( int y = inRect.y; y < inRect.y + inRect.height; y+=3 )
+
+ for( int x = inRect.x; x < inRect.x + inRect.width; x+=3 )
+ {
+ dc.SetPen( mpLayout->mLightPen );
+ dc.DrawPoint( x,y );
+ dc.SetPen( mpLayout->mBlackPen );
+ dc.DrawPoint( x+1, y+1 );
+ }
}
void cbRowDragPlugin::DrawRombShades( wxPoint& p1, wxPoint& p2,
- wxPoint& p3, wxPoint& p4,
- wxDC& dc )
+ wxPoint& p3, wxPoint& p4,
+ wxDC& dc )
{
- dc.SetPen( mpLayout->mLightPen );
- dc.DrawLine( p1.x, p1.y, p2.x, p2.y );
- dc.DrawLine( p2.x, p2.y, p3.x, p3.y );
- dc.SetPen( mpLayout->mDarkPen );
- dc.DrawLine( p3.x, p3.y, p4.x, p4.y );
- dc.DrawLine( p4.x, p4.y, p1.x, p1.y );
+ dc.SetPen( mpLayout->mLightPen );
+ dc.DrawLine( p1.x, p1.y, p2.x, p2.y );
+ dc.DrawLine( p2.x, p2.y, p3.x, p3.y );
+ dc.SetPen( mpLayout->mDarkPen );
+ dc.DrawLine( p3.x, p3.y, p4.x, p4.y );
+ dc.DrawLine( p4.x, p4.y, p1.x, p1.y );
}
void cbRowDragPlugin::DrawOrtoRomb( wxRect& inRect, wxDC& dc, wxBrush& bkBrush )
{
- dc.SetBrush( bkBrush );
- dc.SetPen( mpLayout->mBlackPen );
-
- wxPoint points[4];
-
- if ( inRect.width > inRect.height )
- {
- // horizontal orienation
- points[0].x = inRect.x;
- points[0].y = inRect.y + inRect.height;
- points[1].x = inRect.x;
- points[1].y = inRect.y;
- points[2].x = inRect.x + inRect.width;
- points[2].y = inRect.y;
- points[3].x = inRect.x + inRect.width - COLLAPSED_ICON_HEIGHT;
- points[3].y = inRect.y + inRect.height;
-
- dc.DrawPolygon( 4, points );
-
- // squeeze romb's bounds to create an inner-shade shape
- ++points[0].x;
- --points[0].y;
- ++points[1].x;
- ++points[1].y;
- --points[2].x; --points[2].x;
- ++points[2].y;
- --points[3].y;
-
- DrawRombShades( points[0], points[1], points[2], points[3], dc );
- }
- else
- {
- // vertical orientation
- points[0].x = inRect.x + inRect.width;
- points[0].y = inRect.y + inRect.height;
- points[1].x = inRect.x;
- points[1].y = inRect.y + inRect.height;
- points[2].x = inRect.x;
- points[2].y = inRect.y;
- points[3].x = inRect.x + inRect.width;
- points[3].y = inRect.y + COLLAPSED_ICON_HEIGHT;
-
- dc.DrawPolygon( 4, points );
-
- // squeeze romb's bounds to create an inner-shade shape
- --points[0].y ;
- --points[0].x;
- ++points[1].x;
- --points[1].y;
- ++points[2].y; ++points[2].y;
- ++points[2].x;
- --points[3].x;
-
- DrawRombShades( points[1], points[2], points[3], points[0], dc );
- }
-
- dc.SetBrush( wxNullBrush );
+ dc.SetBrush( bkBrush );
+ dc.SetPen( mpLayout->mBlackPen );
+
+ wxPoint points[4];
+
+ if ( inRect.width > inRect.height )
+ {
+ // horizontal orienation
+ points[0].x = inRect.x;
+ points[0].y = inRect.y + inRect.height;
+ points[1].x = inRect.x;
+ points[1].y = inRect.y;
+ points[2].x = inRect.x + inRect.width;
+ points[2].y = inRect.y;
+ points[3].x = inRect.x + inRect.width - COLLAPSED_ICON_HEIGHT;
+ points[3].y = inRect.y + inRect.height;
+
+ dc.DrawPolygon( 4, points );
+
+ // squeeze romb's bounds to create an inner-shade shape
+ ++points[0].x;
+ --points[0].y;
+ ++points[1].x;
+ ++points[1].y;
+ --points[2].x; --points[2].x;
+ ++points[2].y;
+ --points[3].y;
+
+ DrawRombShades( points[0], points[1], points[2], points[3], dc );
+ }
+ else
+ {
+ // vertical orientation
+ points[0].x = inRect.x + inRect.width;
+ points[0].y = inRect.y + inRect.height;
+ points[1].x = inRect.x;
+ points[1].y = inRect.y + inRect.height;
+ points[2].x = inRect.x;
+ points[2].y = inRect.y;
+ points[3].x = inRect.x + inRect.width;
+ points[3].y = inRect.y + COLLAPSED_ICON_HEIGHT;
+
+ dc.DrawPolygon( 4, points );
+
+ // squeeze romb's bounds to create an inner-shade shape
+ --points[0].y ;
+ --points[0].x;
+ ++points[1].x;
+ --points[1].y;
+ ++points[2].y; ++points[2].y;
+ ++points[2].x;
+ --points[3].x;
+
+ DrawRombShades( points[1], points[2], points[3], points[0], dc );
+ }
+
+ dc.SetBrush( wxNullBrush );
}
void cbRowDragPlugin::DrawRomb( wxRect& inRect, wxDC& dc, wxBrush& bkBrush )
{
- wxPoint points[4];
-
- dc.SetBrush( bkBrush );
- dc.SetPen( mpLayout->mBlackPen );
-
- if ( inRect.width > inRect.height )
- {
- // horizontal orientation
- points[0].x = inRect.x;
- points[0].y = inRect.y + inRect.height;
- points[1].x = inRect.x + COLLAPSED_ICON_HEIGHT;
- points[1].y = inRect.y;
- points[2].x = inRect.x + inRect.width;
- points[2].y = inRect.y;
- points[3].x = inRect.x + inRect.width - COLLAPSED_ICON_HEIGHT;
- points[3].y = inRect.y + inRect.height;
-
- dc.DrawPolygon( 4, points );
-
- // squeeze romb's bounds to create an inner-shade shape
- ++points[0].x ;++points[0].x ;
- --points[0].y;
- ++points[1].y;
- --points[2].x; --points[2].x;
- ++points[2].y;
- //--points[3].x ;
- --points[3].y;
-
- DrawRombShades( points[0], points[1], points[2], points[3], dc );
-
- }
- else
- {
- // vertical orientation
- points[0].x = inRect.x + inRect.width;
- points[0].y = inRect.y + inRect.height;
- points[1].x = inRect.x;
- points[1].y = inRect.y + inRect.height - COLLAPSED_ICON_HEIGHT;
- points[2].x = inRect.x;
- points[2].y = inRect.y;
- points[3].x = inRect.x + inRect.width;
- points[3].y = inRect.y + COLLAPSED_ICON_HEIGHT;
-
- dc.DrawPolygon( 4, points );
-
- // squeeze romb's bounds to create an inner-shade shape
- --points[0].y ;--points[0].y ;
- --points[0].x;
- ++points[1].x;
- ++points[2].y; ++points[2].y;
- ++points[2].x;
- --points[3].x;
-
- DrawRombShades( points[1], points[2], points[3], points[0], dc );
- }
-
- dc.SetBrush( wxNullBrush );
+ wxPoint points[4];
+
+ dc.SetBrush( bkBrush );
+ dc.SetPen( mpLayout->mBlackPen );
+
+ if ( inRect.width > inRect.height )
+ {
+ // horizontal orientation
+ points[0].x = inRect.x;
+ points[0].y = inRect.y + inRect.height;
+ points[1].x = inRect.x + COLLAPSED_ICON_HEIGHT;
+ points[1].y = inRect.y;
+ points[2].x = inRect.x + inRect.width;
+ points[2].y = inRect.y;
+ points[3].x = inRect.x + inRect.width - COLLAPSED_ICON_HEIGHT;
+ points[3].y = inRect.y + inRect.height;
+
+ dc.DrawPolygon( 4, points );
+
+ // squeeze romb's bounds to create an inner-shade shape
+ ++points[0].x ;++points[0].x ;
+ --points[0].y;
+ ++points[1].y;
+ --points[2].x; --points[2].x;
+ ++points[2].y;
+ //--points[3].x ;
+ --points[3].y;
+
+ DrawRombShades( points[0], points[1], points[2], points[3], dc );
+
+ }
+ else
+ {
+ // vertical orientation
+ points[0].x = inRect.x + inRect.width;
+ points[0].y = inRect.y + inRect.height;
+ points[1].x = inRect.x;
+ points[1].y = inRect.y + inRect.height - COLLAPSED_ICON_HEIGHT;
+ points[2].x = inRect.x;
+ points[2].y = inRect.y;
+ points[3].x = inRect.x + inRect.width;
+ points[3].y = inRect.y + COLLAPSED_ICON_HEIGHT;
+
+ dc.DrawPolygon( 4, points );
+
+ // squeeze romb's bounds to create an inner-shade shape
+ --points[0].y ;--points[0].y ;
+ --points[0].x;
+ ++points[1].x;
+ ++points[2].y; ++points[2].y;
+ ++points[2].x;
+ --points[3].x;
+
+ DrawRombShades( points[1], points[2], points[3], points[0], dc );
+ }
+
+ dc.SetBrush( wxNullBrush );
}
void cbRowDragPlugin::DrawRectShade( wxRect& inRect, wxDC& dc,
- int level, wxPen& upperPen, wxPen& lowerPen )
+ int level, wxPen& upperPen, wxPen& lowerPen )
{
- // upper shade
- dc.SetPen( upperPen );
- dc.DrawLine( inRect.x - level,
- inRect.y - level,
- inRect.x + inRect.width - 1 + level,
- inRect.y - level);
- dc.DrawLine( inRect.x - level, inRect.y - level,
- inRect.x - level, inRect.y + inRect.height - 1 + level );
-
- // lower shade
- dc.SetPen( lowerPen );
- dc.DrawLine( inRect.x - level,
- inRect.y + inRect.height - 1 + level,
- inRect.x + inRect.width + level,
- inRect.y + inRect.height - 1 + level);
- dc.DrawLine( inRect.x + inRect.width - 1 + level,
- inRect.y - level,
- inRect.x + inRect.width - 1 + level,
- inRect.y + inRect.height + level);
-
- dc.SetBrush( wxNullBrush );
+ // upper shade
+ dc.SetPen( upperPen );
+ dc.DrawLine( inRect.x - level,
+ inRect.y - level,
+ inRect.x + inRect.width - 1 + level,
+ inRect.y - level);
+ dc.DrawLine( inRect.x - level, inRect.y - level,
+ inRect.x - level, inRect.y + inRect.height - 1 + level );
+
+ // lower shade
+ dc.SetPen( lowerPen );
+ dc.DrawLine( inRect.x - level,
+ inRect.y + inRect.height - 1 + level,
+ inRect.x + inRect.width + level,
+ inRect.y + inRect.height - 1 + level);
+ dc.DrawLine( inRect.x + inRect.width - 1 + level,
+ inRect.y - level,
+ inRect.x + inRect.width - 1 + level,
+ inRect.y + inRect.height + level);
+
+ dc.SetBrush( wxNullBrush );
}
void cbRowDragPlugin::Draw3DRect( wxRect& inRect, wxDC& dc, wxBrush& bkBrush )
{
- dc.SetPen( mpLayout->mNullPen );
- dc.SetBrush( bkBrush );
+ dc.SetPen( mpLayout->mNullPen );
+ dc.SetBrush( bkBrush );
- dc.DrawRectangle( inRect.x, inRect.y,
- inRect.width, inRect.height );
+ dc.DrawRectangle( inRect.x, inRect.y,
+ inRect.width, inRect.height );
- DrawRectShade( inRect, dc, 0, mpLayout->mLightPen, mpLayout->mDarkPen );
+ DrawRectShade( inRect, dc, 0, mpLayout->mLightPen, mpLayout->mDarkPen );
}
int cbRowDragPlugin::GetCollapsedIconsPos()
{
- RowArrayT& rows = mpPane->GetRowList();
+ RowArrayT& rows = mpPane->GetRowList();
- if ( rows.GetCount() == 0 )
- {
- if ( mpPane->IsHorizontal() )
-
- return mpPane->mBoundsInParent.y + mpPane->mTopMargin;
- else
- return mpPane->mBoundsInParent.x + mpPane->mLeftMargin;
- }
+ if ( rows.GetCount() == 0 )
+ {
+ if ( mpPane->IsHorizontal() )
+
+ return mpPane->mBoundsInParent.y + mpPane->mTopMargin;
+ else
+ return mpPane->mBoundsInParent.x + mpPane->mLeftMargin;
+ }
- wxRect& bounds = rows[ rows.GetCount() - 1 ]->mBoundsInParent;
+ wxRect& bounds = rows[ rows.GetCount() - 1 ]->mBoundsInParent;
- if ( mpPane->IsHorizontal() )
+ if ( mpPane->IsHorizontal() )
- return bounds.y + bounds.height + 1;
- else
- return bounds.x + bounds.width + 1;
+ return bounds.y + bounds.height + 1;
+ else
+ return bounds.x + bounds.width + 1;
}
void cbRowDragPlugin::GetRowHintRect( cbRowInfo* pRow, wxRect& rect )
{
- wxRect& bounds = pRow->mBoundsInParent;
-
- if ( mpPane->IsHorizontal() )
- {
- rect.x = bounds.x - ROW_DRAG_HINT_WIDTH - 1;
- rect.y = bounds.y;
- rect.width = ROW_DRAG_HINT_WIDTH;
- rect.height = bounds.height;
- }
- else
- {
- rect.x = bounds.x;
- rect.y = bounds.y + bounds.height + 1;
- rect.width = bounds.width;
- rect.height = ROW_DRAG_HINT_WIDTH;
- }
+ wxRect& bounds = pRow->mBoundsInParent;
+
+ if ( mpPane->IsHorizontal() )
+ {
+ rect.x = bounds.x - ROW_DRAG_HINT_WIDTH - 1;
+ rect.y = bounds.y;
+ rect.width = ROW_DRAG_HINT_WIDTH;
+ rect.height = bounds.height;
+ }
+ else
+ {
+ rect.x = bounds.x;
+ rect.y = bounds.y + bounds.height + 1;
+ rect.width = bounds.width;
+ rect.height = ROW_DRAG_HINT_WIDTH;
+ }
}
void cbRowDragPlugin::GetCollapsedInconRect( int iconIdx, wxRect& rect )
{
- int upper = GetCollapsedIconsPos();
-
- int right = (iconIdx == 0 )
- ? 0 : iconIdx * (COLLAPSED_ICON_WIDTH - COLLAPSED_ICON_HEIGHT);
-
- if ( mpPane->IsHorizontal() )
- {
- rect.x = mpPane->mBoundsInParent.x + mpPane->mLeftMargin - ROW_DRAG_HINT_WIDTH - 1
- + right;
-
- rect.y = upper;
- rect.width = COLLAPSED_ICON_WIDTH;
- rect.height = COLLAPSED_ICON_HEIGHT;
- }
- else
- {
- rect.x = upper;
- rect.y = mpPane->mBoundsInParent.y + mpPane->mBoundsInParent.height
- - mpPane->mBottomMargin + ROW_DRAG_HINT_WIDTH + 1
- - right - COLLAPSED_ICON_WIDTH;
-
- rect.height = COLLAPSED_ICON_WIDTH;
- rect.width = COLLAPSED_ICON_HEIGHT;
- }
+ int upper = GetCollapsedIconsPos();
+
+ int right = (iconIdx == 0 )
+ ? 0 : iconIdx * (COLLAPSED_ICON_WIDTH - COLLAPSED_ICON_HEIGHT);
+
+ if ( mpPane->IsHorizontal() )
+ {
+ rect.x = mpPane->mBoundsInParent.x + mpPane->mLeftMargin - ROW_DRAG_HINT_WIDTH - 1
+ + right;
+
+ rect.y = upper;
+ rect.width = COLLAPSED_ICON_WIDTH;
+ rect.height = COLLAPSED_ICON_HEIGHT;
+ }
+ else
+ {
+ rect.x = upper;
+ rect.y = mpPane->mBoundsInParent.y + mpPane->mBoundsInParent.height
+ - mpPane->mBottomMargin + ROW_DRAG_HINT_WIDTH + 1
+ - right - COLLAPSED_ICON_WIDTH;
+
+ rect.height = COLLAPSED_ICON_WIDTH;
+ rect.width = COLLAPSED_ICON_HEIGHT;
+ }
}
/*** overridables ***/
void cbRowDragPlugin::DrawCollapsedRowIcon( int index, wxDC& dc, bool isHighlighted )
{
- wxRect rect;
- GetCollapsedInconRect( index, rect );
+ wxRect rect;
+ GetCollapsedInconRect( index, rect );
- wxBrush hiBrush ( mHightColor, wxSOLID );
- wxBrush lowBrush( mLowColor, wxSOLID );
- wxBrush& curBrush = ( isHighlighted ) ? hiBrush : lowBrush;
+ wxBrush hiBrush ( mHightColor, wxSOLID );
+ wxBrush lowBrush( mLowColor, wxSOLID );
+ wxBrush& curBrush = ( isHighlighted ) ? hiBrush : lowBrush;
- if ( mpPane->IsHorizontal() )
- {
- if ( index == 0 )
+ if ( mpPane->IsHorizontal() )
+ {
+ if ( index == 0 )
- DrawOrtoRomb( rect, dc, curBrush );
- else
- DrawRomb( rect, dc, curBrush );
+ DrawOrtoRomb( rect, dc, curBrush );
+ else
+ DrawRomb( rect, dc, curBrush );
- int triOfs = (index == 0) ? TRIANGLE_OFFSET : TRIANGLE_OFFSET + COLLAPSED_ICON_HEIGHT;
+ int triOfs = (index == 0) ? TRIANGLE_OFFSET : TRIANGLE_OFFSET + COLLAPSED_ICON_HEIGHT;
- wxRect triRect;
- triRect.x = triOfs + rect.x;
+ wxRect triRect;
+ triRect.x = triOfs + rect.x;
- triRect.width = ICON_TRIAN_HEIGHT;
- triRect.y = rect.y;
- triRect.height = rect.height;
+ triRect.width = ICON_TRIAN_HEIGHT;
+ triRect.y = rect.y;
+ triRect.height = rect.height;
- DrawTrianRight( triRect, dc );
+ DrawTrianRight( triRect, dc );
- wxRect patRect;
- patRect.x = triOfs + ICON_TRIAN_HEIGHT + TRIANGLE_TO_PAT_GAP + rect.x;
- patRect.y = rect.y + PAT_OFFSET;
- patRect.width = rect.width - (patRect.x - rect.x) - COLLAPSED_ICON_HEIGHT - PAT_OFFSET;
- patRect.height = rect.height - PAT_OFFSET*2;
+ wxRect patRect;
+ patRect.x = triOfs + ICON_TRIAN_HEIGHT + TRIANGLE_TO_PAT_GAP + rect.x;
+ patRect.y = rect.y + PAT_OFFSET;
+ patRect.width = rect.width - (patRect.x - rect.x) - COLLAPSED_ICON_HEIGHT - PAT_OFFSET;
+ patRect.height = rect.height - PAT_OFFSET*2;
- Draw3DPattern( patRect, dc );
- }
- else
- {
- if ( index == 0 )
+ Draw3DPattern( patRect, dc );
+ }
+ else
+ {
+ if ( index == 0 )
- DrawOrtoRomb( rect, dc, curBrush );
- else
- DrawRomb( rect, dc, curBrush );
+ DrawOrtoRomb( rect, dc, curBrush );
+ else
+ DrawRomb( rect, dc, curBrush );
- int triOfs = (index == 0)
- ? TRIANGLE_OFFSET + ICON_TRIAN_HEIGHT
- : TRIANGLE_OFFSET + COLLAPSED_ICON_HEIGHT + ICON_TRIAN_HEIGHT;
+ int triOfs = (index == 0)
+ ? TRIANGLE_OFFSET + ICON_TRIAN_HEIGHT
+ : TRIANGLE_OFFSET + COLLAPSED_ICON_HEIGHT + ICON_TRIAN_HEIGHT;
- wxRect triRect;
- triRect.y = rect.y + rect.height - triOfs;
- triRect.x = rect.x;
- triRect.width = rect.width;
- triRect.height = ICON_TRIAN_HEIGHT;
+ wxRect triRect;
+ triRect.y = rect.y + rect.height - triOfs;
+ triRect.x = rect.x;
+ triRect.width = rect.width;
+ triRect.height = ICON_TRIAN_HEIGHT;
- DrawTrianUp( triRect, dc );
+ DrawTrianUp( triRect, dc );
- wxRect patRect;
- patRect.y = rect.y + COLLAPSED_ICON_HEIGHT + PAT_OFFSET;
- patRect.x = rect.x + PAT_OFFSET;
- patRect.width = rect.width - 2*PAT_OFFSET ;
- patRect.height = rect.height - triOfs - 2*PAT_OFFSET - COLLAPSED_ICON_HEIGHT;
+ wxRect patRect;
+ patRect.y = rect.y + COLLAPSED_ICON_HEIGHT + PAT_OFFSET;
+ patRect.x = rect.x + PAT_OFFSET;
+ patRect.width = rect.width - 2*PAT_OFFSET ;
+ patRect.height = rect.height - triOfs - 2*PAT_OFFSET - COLLAPSED_ICON_HEIGHT;
- Draw3DPattern( patRect, dc );
- }
+ Draw3DPattern( patRect, dc );
+ }
}
void cbRowDragPlugin::DrawRowDragHint( cbRowInfo* pRow , wxDC& dc, bool isHighlighted )
{
- wxRect rect;
- GetRowHintRect( pRow, rect );
-
- wxBrush hiBrush ( mHightColor, wxSOLID );
- wxBrush lowBrush( mLowColor, wxSOLID );
- wxBrush& curBrush = ( isHighlighted ) ? hiBrush : lowBrush;
-
- Draw3DRect( rect, dc, curBrush );
-
- if ( mpPane->IsHorizontal() )
- {
- wxRect triRect;
- triRect.y = rect.y + TRIANGLE_OFFSET;
- triRect.x = rect.x;
- triRect.width = rect.width;
- triRect.height = ICON_TRIAN_HEIGHT;
-
- DrawTrianDown( triRect, dc );
-
- wxRect patRect;
- patRect.x = rect.x + PAT_OFFSET;
- patRect.y = rect.y + TRIANGLE_OFFSET + ICON_TRIAN_HEIGHT + TRIANGLE_TO_PAT_GAP;
- patRect.width = rect.width - 2*PAT_OFFSET;
- patRect.height = rect.height - ( patRect.y - rect.y ) - PAT_OFFSET;
- Draw3DPattern( patRect, dc );
-
- dc.SetPen( mpLayout->mLightPen );
- dc.DrawLine( rect.x, rect.y + rect.height, rect.x + rect.width, rect.y + rect.height );
- }
- else
- {
- wxRect triRect;
- triRect.x = rect.x + TRIANGLE_OFFSET;
- triRect.y = rect.y;
- triRect.height = rect.height;
- triRect.width = ICON_TRIAN_HEIGHT;
-
- DrawTrianRight( triRect, dc );
-
- wxRect patRect;
- patRect.y = rect.y + PAT_OFFSET;
- patRect.x = rect.x + TRIANGLE_OFFSET + ICON_TRIAN_HEIGHT + TRIANGLE_TO_PAT_GAP;
- patRect.height = rect.height - 2*PAT_OFFSET;
- patRect.width = rect.width - ( patRect.x - rect.x ) - PAT_OFFSET;
- Draw3DPattern( patRect, dc );
-
- dc.SetPen( mpLayout->mLightPen );
- dc.DrawLine( rect.x + rect.width, rect.y, rect.x + rect.width, rect.y + rect.height );
- }
+ wxRect rect;
+ GetRowHintRect( pRow, rect );
+
+ wxBrush hiBrush ( mHightColor, wxSOLID );
+ wxBrush lowBrush( mLowColor, wxSOLID );
+ wxBrush& curBrush = ( isHighlighted ) ? hiBrush : lowBrush;
+
+ Draw3DRect( rect, dc, curBrush );
+
+ if ( mpPane->IsHorizontal() )
+ {
+ wxRect triRect;
+ triRect.y = rect.y + TRIANGLE_OFFSET;
+ triRect.x = rect.x;
+ triRect.width = rect.width;
+ triRect.height = ICON_TRIAN_HEIGHT;
+
+ DrawTrianDown( triRect, dc );
+
+ wxRect patRect;
+ patRect.x = rect.x + PAT_OFFSET;
+ patRect.y = rect.y + TRIANGLE_OFFSET + ICON_TRIAN_HEIGHT + TRIANGLE_TO_PAT_GAP;
+ patRect.width = rect.width - 2*PAT_OFFSET;
+ patRect.height = rect.height - ( patRect.y - rect.y ) - PAT_OFFSET;
+ Draw3DPattern( patRect, dc );
+
+ dc.SetPen( mpLayout->mLightPen );
+ dc.DrawLine( rect.x, rect.y + rect.height, rect.x + rect.width, rect.y + rect.height );
+ }
+ else
+ {
+ wxRect triRect;
+ triRect.x = rect.x + TRIANGLE_OFFSET;
+ triRect.y = rect.y;
+ triRect.height = rect.height;
+ triRect.width = ICON_TRIAN_HEIGHT;
+
+ DrawTrianRight( triRect, dc );
+
+ wxRect patRect;
+ patRect.y = rect.y + PAT_OFFSET;
+ patRect.x = rect.x + TRIANGLE_OFFSET + ICON_TRIAN_HEIGHT + TRIANGLE_TO_PAT_GAP;
+ patRect.height = rect.height - 2*PAT_OFFSET;
+ patRect.width = rect.width - ( patRect.x - rect.x ) - PAT_OFFSET;
+ Draw3DPattern( patRect, dc );
+
+ dc.SetPen( mpLayout->mLightPen );
+ dc.DrawLine( rect.x + rect.width, rect.y, rect.x + rect.width, rect.y + rect.height );
+ }
}
void cbRowDragPlugin::DrawRowsDragHintsBorder( wxDC& dc )
{
- // FIXME:: what was that?
+ // FIXME:: what was that?
}
void cbRowDragPlugin::DrawCollapsedRowsBorder( wxDC& dc )
{
- int colRowOfs = GetCollapsedIconsPos();
- wxRect& bounds = mpPane->mBoundsInParent;
-
- wxBrush bkBrush( mpLayout->mGrayPen.GetColour(), wxSOLID );
- dc.SetBrush( bkBrush );
- dc.SetPen( mpLayout->mDarkPen );
-
- if ( mpPane->IsHorizontal() )
-
- dc.DrawRectangle( bounds.x + mpPane->mLeftMargin - ROW_DRAG_HINT_WIDTH - 1,
- colRowOfs,
- bounds.width - mpPane->mLeftMargin - mpPane->mRightMargin + 2 + ROW_DRAG_HINT_WIDTH,
- COLLAPSED_ICON_HEIGHT + 1);
- else
- dc.DrawRectangle( colRowOfs,
- bounds.y + mpPane->mTopMargin - 1,
- COLLAPSED_ICON_HEIGHT + 1,
- bounds.height - mpPane->mTopMargin - mpPane->mBottomMargin
- - ROW_DRAG_HINT_WIDTH - 2 );
-
- dc.SetBrush( wxNullBrush );
+ int colRowOfs = GetCollapsedIconsPos();
+ wxRect& bounds = mpPane->mBoundsInParent;
+
+ wxBrush bkBrush( mpLayout->mGrayPen.GetColour(), wxSOLID );
+ dc.SetBrush( bkBrush );
+ dc.SetPen( mpLayout->mDarkPen );
+
+ if ( mpPane->IsHorizontal() )
+
+ dc.DrawRectangle( bounds.x + mpPane->mLeftMargin - ROW_DRAG_HINT_WIDTH - 1,
+ colRowOfs,
+ bounds.width - mpPane->mLeftMargin - mpPane->mRightMargin + 2 + ROW_DRAG_HINT_WIDTH,
+ COLLAPSED_ICON_HEIGHT + 1);
+ else
+ dc.DrawRectangle( colRowOfs,
+ bounds.y + mpPane->mTopMargin - 1,
+ COLLAPSED_ICON_HEIGHT + 1,
+ bounds.height - mpPane->mTopMargin - mpPane->mBottomMargin
+ - ROW_DRAG_HINT_WIDTH - 2 );
+
+ dc.SetBrush( wxNullBrush );
}
static inline bool rect_contains_point( const wxRect& rect, int x, int y )
{
- return ( x >= rect.x &&
- y >= rect.y &&
- x < rect.x + rect.width &&
- y < rect.y + rect.height );
+ return ( x >= rect.x &&
+ y >= rect.y &&
+ x < rect.x + rect.width &&
+ y < rect.y + rect.height );
}
bool cbRowDragPlugin::HitTestCollapsedRowIcon( int iconIdx, const wxPoint& pos )
{
- wxRect bounds;
- GetCollapsedInconRect( iconIdx, bounds );
+ wxRect bounds;
+ GetCollapsedInconRect( iconIdx, bounds );
- return rect_contains_point( bounds, pos.x, pos.y );
+ return rect_contains_point( bounds, pos.x, pos.y );
}
bool cbRowDragPlugin::HitTestRowDragHint( cbRowInfo* pRow, const wxPoint& pos )
{
- wxRect bounds;
- GetRowHintRect( pRow, bounds );
+ wxRect bounds;
+ GetRowHintRect( pRow, bounds );
- return rect_contains_point( bounds, pos.x, pos.y );
+ return rect_contains_point( bounds, pos.x, pos.y );
}
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: rowlayoutpl.cpp
+// Purpose: cbRowLayoutPlugin implementation.
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 09/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: toolwnd.cpp
+// Purpose: wxToolWindow implementation.
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 06/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: updatesmgr.cpp
+// Purpose: cbSimpleUpdatesMgr implementation.
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 19/10/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
static inline bool rect_hits_rect( const wxRect& r1, const wxRect& r2 )
{
- if ( ( r2.x >= r1.x && r2.x <= r1.x + r1.width ) ||
- ( r1.x >= r2.x && r1.x <= r2.x + r2.width ) )
+ if ( ( r2.x >= r1.x && r2.x <= r1.x + r1.width ) ||
+ ( r1.x >= r2.x && r1.x <= r2.x + r2.width ) )
- if ( ( r2.y >= r1.y && r2.y <= r1.y + r1.height ) ||
- ( r1.y >= r2.y && r1.y <= r2.y + r2.height ) )
-
- return 1;
+ if ( ( r2.y >= r1.y && r2.y <= r1.y + r1.height ) ||
+ ( r1.y >= r2.y && r1.y <= r2.y + r2.height ) )
+
+ return 1;
- return 0;
+ return 0;
}
/***** Implementation for class cbSimpleUpdatesMgr *****/
IMPLEMENT_DYNAMIC_CLASS( cbSimpleUpdatesMgr, cbUpdatesManagerBase )
cbSimpleUpdatesMgr::cbSimpleUpdatesMgr( wxFrameLayout* pPanel )
- : cbUpdatesManagerBase( pPanel )
+ : cbUpdatesManagerBase( pPanel )
{}
bool cbSimpleUpdatesMgr::WasChanged( cbUpdateMgrData& data, wxRect& currentBounds )
{
- return ( data.IsDirty() ||
+ return ( data.IsDirty() ||
- ( data.mPrevBounds.x != currentBounds.x ||
- data.mPrevBounds.y != currentBounds.y ||
- data.mPrevBounds.width != currentBounds.width ||
- data.mPrevBounds.height != currentBounds.height )
- );
+ ( data.mPrevBounds.x != currentBounds.x ||
+ data.mPrevBounds.y != currentBounds.y ||
+ data.mPrevBounds.width != currentBounds.width ||
+ data.mPrevBounds.height != currentBounds.height )
+ );
}
void cbSimpleUpdatesMgr::OnStartChanges()
{
- // memorize states of ALL items in the layout -
- // this is quite excessive, but OK for the simple
- // implementation of updates manager
-
- mpLayout->GetPrevClientRect() = mpLayout->GetClientRect();
-
- cbDockPane** panes = mpLayout->GetPanesArray();
-
- for( int n = 0; n != MAX_PANES; ++n )
- {
- cbDockPane& pane = *panes[n];
- // store pane state
- pane.mUMgrData.StoreItemState( pane.mBoundsInParent );
- pane.mUMgrData.SetDirty( FALSE );
-
- for( size_t i = 0; i != pane.GetRowList().Count(); ++i )
- {
- cbRowInfo& row = *pane.GetRowList()[ i ];
-
- // store row state
- row.mUMgrData.StoreItemState( row.mBoundsInParent );
- row.mUMgrData.SetDirty( FALSE );
-
- for( size_t k = 0; k != row.mBars.Count(); ++k )
- {
- cbBarInfo& bar = *row.mBars[ k ];
-
- // store bar state
- bar.mUMgrData.StoreItemState( bar.mBoundsInParent );
- bar.mUMgrData.SetDirty( FALSE );
- }
- }
- }
+ // memorize states of ALL items in the layout -
+ // this is quite excessive, but OK for the simple
+ // implementation of updates manager
+
+ mpLayout->GetPrevClientRect() = mpLayout->GetClientRect();
+
+ cbDockPane** panes = mpLayout->GetPanesArray();
+
+ for( int n = 0; n != MAX_PANES; ++n )
+ {
+ cbDockPane& pane = *panes[n];
+ // store pane state
+ pane.mUMgrData.StoreItemState( pane.mBoundsInParent );
+ pane.mUMgrData.SetDirty( FALSE );
+
+ for( size_t i = 0; i != pane.GetRowList().Count(); ++i )
+ {
+ cbRowInfo& row = *pane.GetRowList()[ i ];
+
+ // store row state
+ row.mUMgrData.StoreItemState( row.mBoundsInParent );
+ row.mUMgrData.SetDirty( FALSE );
+
+ for( size_t k = 0; k != row.mBars.Count(); ++k )
+ {
+ cbBarInfo& bar = *row.mBars[ k ];
+
+ // store bar state
+ bar.mUMgrData.StoreItemState( bar.mBoundsInParent );
+ bar.mUMgrData.SetDirty( FALSE );
+ }
+ }
+ }
}
void cbSimpleUpdatesMgr::OnFinishChanges()
{
- // nothing here, could be overriden by more sophisticated updates-managers
+ // nothing here, could be overriden by more sophisticated updates-managers
}
void cbSimpleUpdatesMgr::OnRowWillChange( cbRowInfo* pRow, cbDockPane* pInPane )
{
- // -/-
+ // -/-
}
void cbSimpleUpdatesMgr::OnBarWillChange( cbBarInfo* pBar,
- cbRowInfo* pInRow, cbDockPane* pInPane )
+ cbRowInfo* pInRow, cbDockPane* pInPane )
{
- // -/-
+ // -/-
}
void cbSimpleUpdatesMgr::OnPaneMarginsWillChange( cbDockPane* pPane )
{
- // -/-
+ // -/-
}
void cbSimpleUpdatesMgr::OnPaneWillChange( cbDockPane* pPane )
{
- // -/-
+ // -/-
}
void cbSimpleUpdatesMgr::UpdateNow()
{
- cbDockPane** panes = mpLayout->GetPanesArray();
+ cbDockPane** panes = mpLayout->GetPanesArray();
- wxRect& r1 = mpLayout->GetClientRect();
- wxRect& r2 = mpLayout->GetPrevClientRect();
+ wxRect& r1 = mpLayout->GetClientRect();
+ wxRect& r2 = mpLayout->GetPrevClientRect();
- // detect changes in client window's area
+ // detect changes in client window's area
- bool clientWindowChanged = ( r1.x != r2.x ||
- r1.y != r2.y ||
- r1.width != r2.width ||
- r1.height != r2.height );
-
- // step #1 - detect changes in each row of each pane,
- // and repaint decorations around changed windows
+ bool clientWindowChanged = ( r1.x != r2.x ||
+ r1.y != r2.y ||
+ r1.width != r2.width ||
+ r1.height != r2.height );
+
+ // step #1 - detect changes in each row of each pane,
+ // and repaint decorations around changed windows
- wxList mBarsToRefresh;
- wxList mPanesList;
+ wxList mBarsToRefresh;
+ wxList mPanesList;
- for( int n = 0; n != MAX_PANES; ++n )
- {
- cbDockPane& pane = *(panes[n]);
+ for( int n = 0; n != MAX_PANES; ++n )
+ {
+ cbDockPane& pane = *(panes[n]);
- bool paneChanged = WasChanged( pane.mUMgrData, pane.mBoundsInParent );
+ bool paneChanged = WasChanged( pane.mUMgrData, pane.mBoundsInParent );
- if ( paneChanged )
- {
- wxClientDC dc( &mpLayout->GetParentFrame() );
- pane.PaintPaneBackground( dc );
- }
+ if ( paneChanged )
+ {
+ wxClientDC dc( &mpLayout->GetParentFrame() );
+ pane.PaintPaneBackground( dc );
+ }
- wxRect realBounds;
+ wxRect realBounds;
- for( size_t i = 0; i != pane.GetRowList().Count(); ++i )
- {
- cbRowInfo& row = *pane.GetRowList()[ i ];
+ for( size_t i = 0; i != pane.GetRowList().Count(); ++i )
+ {
+ cbRowInfo& row = *pane.GetRowList()[ i ];
- wxDC* pDc = NULL;
+ wxDC* pDc = NULL;
- bool rowChanged = FALSE;
+ bool rowChanged = FALSE;
- // FIXME:: the below should not be fixed
- cbBarInfo* barsToRepaint[256];
+ // FIXME:: the below should not be fixed
+ cbBarInfo* barsToRepaint[256];
- // number of bars, that were changed in the current row
- int nBars = 0;
+ // number of bars, that were changed in the current row
+ int nBars = 0;
- if ( WasChanged( row.mUMgrData, row.mBoundsInParent ) )
-
- rowChanged = TRUE;
- else
- for( size_t k = 0; k != row.mBars.Count(); ++k )
+ if ( WasChanged( row.mUMgrData, row.mBoundsInParent ) )
+
+ rowChanged = TRUE;
+ else
+ for( size_t k = 0; k != row.mBars.Count(); ++k )
- if ( WasChanged( row.mBars[k]->mUMgrData,
- row.mBars[k]->mBoundsInParent )
- )
-
- barsToRepaint[nBars++] = row.mBars[k];
+ if ( WasChanged( row.mBars[k]->mUMgrData,
+ row.mBars[k]->mBoundsInParent )
+ )
+
+ barsToRepaint[nBars++] = row.mBars[k];
- if ( nBars || rowChanged )
- {
- realBounds = row.mBoundsInParent;
+ if ( nBars || rowChanged )
+ {
+ realBounds = row.mBoundsInParent;
- // include 1-pixel thick shades around the row
- realBounds.x -= 1;
- realBounds.y -= 1;
- realBounds.width += 2;
- realBounds.height += 2;
+ // include 1-pixel thick shades around the row
+ realBounds.x -= 1;
+ realBounds.y -= 1;
+ realBounds.width += 2;
+ realBounds.height += 2;
- pDc = pane.StartDrawInArea( realBounds );
- }
+ pDc = pane.StartDrawInArea( realBounds );
+ }
- if ( rowChanged )
- {
- // postphone the resizing and refreshing the changed
- // bar windows
+ if ( rowChanged )
+ {
+ // postphone the resizing and refreshing the changed
+ // bar windows
- for( size_t k = 0; k != row.mBars.Count(); ++k )
- {
- mBarsToRefresh.Append( (wxObject*)row.mBars[k] );
- mPanesList.Append( &pane );
- }
+ for( size_t k = 0; k != row.mBars.Count(); ++k )
+ {
+ mBarsToRefresh.Append( (wxObject*)row.mBars[k] );
+ mPanesList.Append( &pane );
+ }
- // draw only their decorations now
+ // draw only their decorations now
- pane.PaintRow( &row, *pDc );
- }
- else
- if ( nBars != 0 )
- {
- for( int i = 0; i != nBars; ++i )
- {
- // postphone the resizement and refreshing the changed
- // bar windows
+ pane.PaintRow( &row, *pDc );
+ }
+ else
+ if ( nBars != 0 )
+ {
+ for( int i = 0; i != nBars; ++i )
+ {
+ // postphone the resizement and refreshing the changed
+ // bar windows
- mBarsToRefresh.Append( (wxObject*)barsToRepaint[i] );
- mPanesList.Append( &pane );
- }
+ mBarsToRefresh.Append( (wxObject*)barsToRepaint[i] );
+ mPanesList.Append( &pane );
+ }
- // redraw decorations of entire row, regardless of how much
- // of the bars were changed
- pane.PaintRow( &row, *pDc );
- }
+ // redraw decorations of entire row, regardless of how much
+ // of the bars were changed
+ pane.PaintRow( &row, *pDc );
+ }
- if ( pDc )
-
- pane.FinishDrawInArea( realBounds );
- } // end of while
+ if ( pDc )
+
+ pane.FinishDrawInArea( realBounds );
+ } // end of while
- if ( paneChanged )
- {
- wxClientDC dc( &mpLayout->GetParentFrame() );
- pane.PaintPaneDecorations( dc );
- }
+ if ( paneChanged )
+ {
+ wxClientDC dc( &mpLayout->GetParentFrame() );
+ pane.PaintPaneDecorations( dc );
+ }
- } // end of for
+ } // end of for
- if ( clientWindowChanged )
- {
- mpLayout->PositionClientWindow();
- // ptr to client-window object is "marked" as 0
- }
+ if ( clientWindowChanged )
+ {
+ mpLayout->PositionClientWindow();
+ // ptr to client-window object is "marked" as 0
+ }
- // step #2 - do ordered refreshing and resizing of bar window objects now
+ // step #2 - do ordered refreshing and resizing of bar window objects now
- wxNode* pNode = mBarsToRefresh.First();
- wxNode* pPaneNode = mPanesList.First();
-
- while( pNode )
- {
- cbBarInfo* pBar = (cbBarInfo*) pNode->Data();
- cbDockPane* pPane = (cbDockPane*)pPaneNode->Data();
+ wxNode* pNode = mBarsToRefresh.First();
+ wxNode* pPaneNode = mPanesList.First();
+
+ while( pNode )
+ {
+ cbBarInfo* pBar = (cbBarInfo*) pNode->Data();
+ cbDockPane* pPane = (cbDockPane*)pPaneNode->Data();
- pPane->SizeBar( pBar );
-
- pNode = pNode->Next();
- pPaneNode = pPaneNode->Next();
- }
-
- pNode = mBarsToRefresh.First();
-
- while( pNode )
- {
- cbBarInfo* pBar = (cbBarInfo*)pNode->Data();
-
- if ( pBar->mpBarWnd )
- {
- pBar->mpBarWnd->Refresh();
-
- // FIXME::
- //info.mpBarWnd->Show(FALSE);
- //info.mpBarWnd->Show(TRUE);
- }
-
- pNode = pNode->Next();
- }
-
- if ( clientWindowChanged )
- {
- // FIXME:: excessive?
-
- mpLayout->GetFrameClient()->Refresh();
- }
+ pPane->SizeBar( pBar );
+
+ pNode = pNode->Next();
+ pPaneNode = pPaneNode->Next();
+ }
+
+ pNode = mBarsToRefresh.First();
+
+ while( pNode )
+ {
+ cbBarInfo* pBar = (cbBarInfo*)pNode->Data();
+
+ if ( pBar->mpBarWnd )
+ {
+ pBar->mpBarWnd->Refresh();
+
+ // FIXME::
+ //info.mpBarWnd->Show(FALSE);
+ //info.mpBarWnd->Show(TRUE);
+ }
+
+ pNode = pNode->Next();
+ }
+
+ if ( clientWindowChanged )
+ {
+ // FIXME:: excessive?
+
+ mpLayout->GetFrameClient()->Refresh();
+ }
}