1 ///////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     cbRowLayoutPlugin header. 
   4 // Author:      Aleksandras Gluchovas 
   8 // Copyright:   (c) Aleksandras Gluchovas 
   9 // Licence:       wxWindows licence 
  10 ///////////////////////////////////////////////////////////////////////////// 
  12 #ifndef __ROWLAYOUTPL_G__ 
  13 #define __ROWLAYOUTPL_G__ 
  15 #if defined(__GNUG__) && !defined(__APPLE__) 
  16     #pragma interface "rowlayoutpl.h" 
  19 #include "wx/fl/controlbar.h" 
  22 Simple implementation of a plugin which handles row layout 
  23 requests sent from a frame layout. 
  26 class WXDLLIMPEXP_FL cbRowLayoutPlugin 
: public cbPluginBase
 
  28     DECLARE_DYNAMIC_CLASS( cbRowLayoutPlugin 
) 
  30     cbDockPane
* mpPane
; // is set up temporarily, while handling event 
  33         // Internal helper relating to not-fixed-bars layout. 
  34     void FitBarsToRange( int from
, int till
, cbBarInfo
* pTheBar
, cbRowInfo
* pRow 
);  
  36         // Internal helper relating to not-fixed-bars layout. 
  37     void RelayoutNotFixedBarsAround( cbBarInfo
* pTheBar
, cbRowInfo
* pRow 
); 
  39         // Internal helper relating to not-fixed-bars layout. 
  40     void MinimzeNotFixedBars( cbRowInfo
* pRow
, cbBarInfo
* pBarToPreserve 
); 
  42         // Internal helper relating to not-fixed-bars layout. 
  43     int  GetRowFreeSpace( cbRowInfo
* pRow 
); 
  46         // Internal helper relating to not-fixed-bars layout. 
  47     void RecalcLengthRatios( cbRowInfo
* pRow 
); 
  49         // Internal helper relating to not-fixed-bars layout. 
  50     void ApplyLengthRatios( cbRowInfo
* pRow 
); 
  52         // Internal helper relating to not-fixed-bars layout. 
  53     void ExpandNotFixedBars( cbRowInfo
* pRow 
); 
  55         // Internal helper relating to not-fixed-bars layout. 
  56     void AdjustLengthOfInserted( cbRowInfo
* pRow
, cbBarInfo
* pTheBar 
); 
  59         // Internal helper relating to not-fixed-bars layout. 
  60     void DetectBarHandles( cbRowInfo
* pRow 
); 
  62         // Internal helper relating to not-fixed-bars layout. 
  63     void CheckIfAtTheBoundary( cbBarInfo
* pTheBar
, cbRowInfo
& rowInfo 
); 
  66         // Row layout helper simulating bar 'friction'. 
  67     int  CalcRowHeight( cbRowInfo
& row 
); 
  69         // Row layout helper simulating bar 'friction'. 
  70     void LayoutItemsVertically( cbRowInfo
& row 
); 
  73         // Row layout helper simulating bar 'friction'. 
  74     void StickRightSideBars( cbBarInfo
* pToBar 
); 
  77         // Row layout helper simulating bar 'friction'. 
  78     void SlideLeftSideBars ( cbBarInfo
* pTheBar 
); 
  80         // Row layout helper simulating bar 'friction'. 
  81     void SlideRightSideBars( cbBarInfo
* pTheBar 
); 
  84         // Row layout helper simulating bar 'friction'. 
  85     void ShiftLeftTrashold ( cbBarInfo
* pTheBar
, cbRowInfo
& row 
); 
  87         // Row layout helper simulating bar 'friction'. 
  88     void ShiftRightTrashold( cbBarInfo
* pTheBar
, cbRowInfo
& row 
); 
  91         // Insert the bar before the given row. 
  92     void InsertBefore( cbBarInfo
* pBeforeBar
,  
  97         // Insert the bar before the given row. 
  98     void DoInsertBar( cbBarInfo
* pTheBar
, cbRowInfo
& row 
); 
 101         // Default constructor. 
 102     cbRowLayoutPlugin(void); 
 104         // Constructor taking frame layout pane and pane mask. 
 105     cbRowLayoutPlugin( wxFrameLayout
* pPanel
, int paneMask 
= wxALL_PANES 
); 
 107         // Responds to row resize event. 
 108     void OnResizeRow ( cbResizeRowEvent
&  event 
); 
 110         // Responds to bar insertion event. 
 111     void OnInsertBar ( cbInsertBarEvent
&  event 
); 
 113         // Responds to bar removal event. 
 114     void OnRemoveBar ( cbRemoveBarEvent
&  event 
); 
 116         // Responds to row layout event. 
 117     void OnLayoutRow ( cbLayoutRowEvent
&  event 
); 
 119         // Responds to rows layout event. 
 120     void OnLayoutRows( cbLayoutRowsEvent
& event 
); 
 122     DECLARE_EVENT_TABLE() 
 125 #endif /* __ROWLAYOUTPL_G__ */