📄 controlbar.h
字号:
// Assignment operator. const cbDimInfo& operator=( const cbDimInfo& other ); // Returns the handler, if any. inline cbBarDimHandlerBase* GetDimHandler() { return mpHandler; }};// FIXME: this array definition compiles but probably doesn't do what was intended (GD)WXFL_DEFINE_ARRAY_LONG(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 )public: BarArrayT mBars; // row content // row flags (set up according to row-relations) bool mHasUpperHandle; bool mHasLowerHandle; bool mHasOnlyFixedBars; int mNotFixedBarsCnt; int mRowWidth; int mRowHeight; int mRowY; // stores precalculated row's bounds in parent frame's coordinates wxRect mBoundsInParent; // info stored for updates-manager cbUpdateMgrData mUMgrData; cbRowInfo* mpNext; cbRowInfo* mpPrev; cbBarInfo* mpExpandedBar; // NULL, if non of the bars is currently expanded cbArrayFloat mSavedRatios; // length-ratios bofore some of the bars was expandedpublic: // Constructor. cbRowInfo(void); // Destructor. ~cbRowInfo(); // Returns the first bar. 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 )public: // textual name, by which this bar is referred in layout-customization dialogs wxString mName; // stores bar's bounds in pane's coordinates wxRect mBounds; // stores precalculated bar's bounds in parent frame's coordinates wxRect mBoundsInParent; // 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; // determines if this bar can float. The layout's setting as priority. For // example, if the layout's mFloatingOn is false, this setting is irrelevant // since nothing will float at all. If the layout's floating is on, use this // setting to prevent specific bars from floating. In other words, all bars // float by default and floating can be turned off on individual bars. bool mFloatingOn; // default: ON (which is also the layout's mFloatingOn default setting) cbDimInfo mDimInfo; // preferred sizes for each, control bar state int mState; // (see definition of controlbar states) 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 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 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 cbBarInfo* mpNext; // next. bar in the row cbBarInfo* mpPrev; // prev. bar in the rowpublic: // Constructor. cbBarInfo(void); // Destructor. ~cbBarInfo(); // Returns true if this bar is fixed. 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 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;};/*Used for traversing through all bars of all rows in the pane.*/class wxBarIterator{ RowArrayT* mpRows; cbRowInfo* mpRow; cbBarInfo* mpBar;public: // Constructor, taking row array. wxBarIterator( RowArrayT& rows ); // Resets the iterator to the start of the first row. void Reset(); // Advances the iterator and returns true if a bar is available. bool Next(); // Gets the current bar information. cbBarInfo& BarInfo(); // Returns a reference to the currently traversed row. cbRowInfo& RowInfo();};/*A structure holding configuration options,which are usually the same for all panes ina frame layout.*/class WXDLLIMPEXP_FL cbCommonPaneProperties : public wxObject{ DECLARE_DYNAMIC_CLASS( cbCommonPaneProperties ) // look-and-feel configuration bool mRealTimeUpdatesOn; // default: ON bool mOutOfPaneDragOn; // default: ON bool mExactDockPredictionOn; // default: OFF bool mNonDestructFrictionOn; // default: OFF bool mShow3DPaneBorderOn; // default: ON // 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 // minimal dimensions for not-fixed bars in this pane (16x16 default) wxSize mMinCBarDim; // width/height of resizing sash int mResizeHandleSize; // Default constructor. cbCommonPaneProperties(void); // Copy constructor cbCommonPaneProperties(const cbCommonPaneProperties&); // Assignment operator cbCommonPaneProperties& operator=(const cbCommonPaneProperties&);};/*This class manages containment and control of control barsalong one of the four edges of the parent frame.*/class cbDockPane : public wxObject{public: DECLARE_DYNAMIC_CLASS( cbDockPane ) // look-and-feel configuration for this pane cbCommonPaneProperties mProps; // 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 pixelspublic: // position of the pane in frame's coordinates wxRect mBoundsInParent; // pane width and height in pane's coordinates int mPaneWidth; int mPaneHeight; int mAlignment; // info stored for updates-manager cbUpdateMgrData mUMgrData;public: /* protected really */ RowArrayT mRows; wxFrameLayout* mpLayout; // back-ref // transient properties wxList mRowShapeData; // shapes of bars of recently modified row, // stored when in "non-destructive-friction" mode cbRowInfo* mpStoredRow; // row-info for which the shapes are stored friend class wxFrameLayout;public: /* protected really (accessed only by plugins) */ // 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. bool HasNotFixedBarsRight( cbBarInfo* pBar ); // Calculate lengths. // Internal function called by plugins. virtual void CalcLengthRatios( cbRowInfo* pInRow ); // Generates a cbLayoutRowEvent event to recalculate row layouts. // Internal function called by plugins. virtual void RecalcRowLayout( cbRowInfo* pRow ); // Expands the bar. // Internal function called by plugins. virtual void ExpandBar( cbBarInfo* pBar ); // Contracts the bar. // Internal function called by plugins. virtual void ContractBar( cbBarInfo* pBar ); // Sets up links between bars. // Internal function called by plugins. void InitLinksForRow( cbRowInfo* pRow ); // Sets up links between bars. // Internal function called by plugins. void InitLinksForRows(); // Coordinate translation between parent's frame and this pane. // Internal function called by plugins. void FrameToPane( int* x, int* y ); // Coordinate translation between parent's frame and this pane. // Internal function called by plugins. 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 );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -