📄 rowdragpl.h
字号:
/////////////////////////////////////////////////////////////////////////////// Name: rowdragpl.h// Purpose: cbRowDragPlugin class header.// Author: Aleksandras Gluchovas// Modified by:// Created: 06/10/98// RCS-ID: $Id: rowdragpl.h,v 1.7 2006/04/26 16:27:12 PC Exp $// Copyright: (c) Aleksandras Gluchovas// Licence: wxWindows licence/////////////////////////////////////////////////////////////////////////////#ifndef __ROWDRAGPL_G__#define __ROWDRAGPL_G__#include "wx/fl/controlbar.h"/*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 positioningof the toolbar rows in Netscape Communicator 4.xx.*/class WXDLLIMPEXP_FL cbRowDragPlugin : public cbPluginBase{ DECLARE_DYNAMIC_CLASS( cbRowDragPlugin )public: // background colours for the highlighted/unhighlighted icons wxColour mHightColor; // light-blue for NC-look wxColour mLowColor; // light-gray -/- wxColour mTrianInnerColor; // blue -/- wxPen mTrianInnerPen; // black -/-protected: friend class cbRowDragPluginSerializer; // 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; // on-screen drawing state variables wxBitmap* mpPaneImage; wxBitmap* mpRowImage; wxBitmap* mpCombinedImage; 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) cbRowInfo* mpRowInFocus; int mCollapsedIconInFocus; cbDockPane* mpPane; // is set up temorarely, while handling event wxList mHiddenBars; // Helper for drag and drop. wxBitmap* CaptureDCArea( wxDC& dc, wxRect& area ); // Helper for drag and drop. int GetHRowsCountForPane( cbDockPane* pPane ); // Helper for drag and drop. void SetMouseCapture( bool captureOn ); // Helper for drag and drop. void PrepareForRowDrag(); // Helper for drag and drop. void ShowDraggedRow( int offset ); // Helper for drag and drop. void ShowPaneImage(); // Helper for drag and drop. void FinishOnScreenDraw(); // Helper for drag and drop. void CollapseRow( cbRowInfo* pRow ); // 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, const wxBrush& bkBrush ); // Implements 'hard-coded metafile' for Netscape Navigator look. virtual void DrawRomb( wxRect& inRect, wxDC& dc, const wxBrush& bkBrush ); // Implements 'hard-coded metafile' for Netscape Navigator look. virtual void Draw3DRect( wxRect& inRect, wxDC& dc, const wxBrush& bkBrush ); // Implements 'hard-coded metafile' for Netscape Navigator look. virtual void DrawRectShade( wxRect& inRect, wxDC& dc, int level, const wxPen& upperPen, const 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: // Default constructor. cbRowDragPlugin(); // Constructor, taking paren layout frame and pane mask. cbRowDragPlugin( wxFrameLayout* pLayout, int paneMask = wxALL_PANES ); // Destructor. virtual ~cbRowDragPlugin(); // Clone function, returning a new instance of this class. virtual cbPluginBase* Clone() { return new cbRowDragPlugin(NULL,0); } // Called to initialize this plugin. virtual void OnInitPlugin(); // Handles mouse move plugin events (appearance-independent logic). void OnMouseMove ( cbMotionEvent& event ); // Handles left button down plugin events (appearance-independent logic). void OnLButtonDown( cbLeftDownEvent& event ); // Handles left button up plugin events (appearance-independent logic). void OnLButtonUp ( cbLeftUpEvent& event ); // Handles pane drawing plugin events (appearance-independent logic). void OnDrawPaneBackground( cbDrawPaneDecorEvent& event ); // Draws collapsed row icon (appearance-dependent). virtual void DrawCollapsedRowIcon( int index, wxDC& dc, bool isHighlighted ); // Draws collapsed rows border (appearance-dependent). virtual void DrawCollapsedRowsBorder( wxDC& dc ); // 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 ); // Draws empty row (appearance-dependent). virtual void DrawEmptyRow( wxDC& dc, wxRect& rowBounds ); // 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.*/class WXDLLIMPEXP_FL cbHiddenBarInfo : public wxObject{ DECLARE_DYNAMIC_CLASS( cbHiddenBarInfo )public: cbBarInfo* mpBar; int mRowNo; int mIconNo; int mAlignment;};#endif /* __ROWDRAGPL_G__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -