⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 slidebar.h

📁 非常好用的可移植的多平台C/C++源代码编辑器
💻 H
字号:
/////////////////////////////////////////////////////////////////////////////
// Name:        wx/slidebar.h
// Purpose:     wxSlideBar class
// Author:      Mark McCormack
// Modified by:
// Created:     25/05/05
// RCS-ID:
// Copyright:
// Licence:     wxWindows licence
/////////////////////////////////////////////////////////////////////////////

#ifndef _WX_SLIDEBAR_H_
#define _WX_SLIDEBAR_H_

#include <wx/defs.h>
#include <wx/dockit_defs.h>
#include <wx/barholder.h>
#include <wx/wfstream.h>

enum eSlideBarMode {
    wxSLIDE_MODE_SIMPLE,
    wxSLIDE_MODE_COMPACT
};

struct strBarPlacement {
	wxBarHolder * pBarHolder;
	wxRect placement;
};

class wxMenu;

// ----------------------------------------------------------------------------
// wxSlideBar control
// ----------------------------------------------------------------------------

WX_DECLARE_LIST( wxBarHolder, BarHolderList );
WX_DECLARE_OBJARRAY( strBarPlacement, BarPlacementArray );

class WXDOCKIT_DECLSPEC wxSlideBar : public wxWindow
{
public:
    // Default constructor
    wxSlideBar()
        : barList_( wxKEY_STRING ) {
        Init();
    }

    // Normal constructor
    wxSlideBar( wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition,
        const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL, const wxString& name = wxT("slidebar") )
        : barList_( wxKEY_STRING ) {
        Init();

        Create(parent, id, pos, size, style, name);
    }

    void Init();

    bool Create( wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition,
        const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL, const wxString& name = wxT("slidebar") );

    virtual ~wxSlideBar();

    // standard interface
    wxBarHolder * AddWindow( wxWindow * pWindow, const wxString & label = wxT(""), unsigned int flags = wxBF_DEFAULT );
    void UpdateLayout();

	// extended interface
    void SetMode( eSlideBarMode mode );
    eSlideBarMode GetMode();
	void SetBarLock( bool enable );
	bool GetBarLock();

    // event handlers
    void OnQueryLayoutInfo( wxQueryLayoutInfoEvent& event );
    void OnCalculateLayout( wxCalculateLayoutEvent& event );
    void OnSize( wxSizeEvent &event );
	void OnContextMenu( wxContextMenuEvent &event );
	void OnLockBars( wxCommandEvent &event );
	void OnContextItem( wxCommandEvent &event );

    // overrides
    virtual void DoGetSize( int * x, int * y ) const;
    virtual wxSize DoGetBestSize() const;

    // load/save
    bool SaveToStream( wxOutputStream &stream );
    bool LoadFromStream( wxInputStream &stream );

    // access
    wxBarHolder * GetBarHolderAt( wxPoint pt );
	wxBarHolder * GetBarHolderAt( BarPlacementArray &barPlacementArray, wxPoint pt );
	void SwapBarHolders( wxBarHolder * p1, wxBarHolder * p2 );
	BarPlacementArray & CalcBarPlacement( int width, int * pAreaHeight = NULL );

private:
	void applyBarPlacement( BarPlacementArray & bpl );
	void createContextMenu();
	void deleteContextMenu();
    void refreshBars();

    DECLARE_DYNAMIC_CLASS( wxSlideBar )
    DECLARE_EVENT_TABLE()

private:
	BarPlacementArray barPlacementArray_;
    int areaHeight_;
    int areaWidth_;
    eSlideBarMode mode_;
    BarHolderList barList_;
	bool barLock_;
	wxMenu * pContextMenu_;

	int contextIdStart_;
	int contextIdEnd_;
};

// ----------------------------------------------------------------------------
// wxSlideBar events
// ----------------------------------------------------------------------------

BEGIN_DECLARE_EVENT_TYPES()
    DECLARE_LOCAL_EVENT_TYPE( wxEVT_SLIDEBAR_SIZE_CHANGED, wxEVT_FIRST + 1251 )  // TODO: must change id
    DECLARE_LOCAL_EVENT_TYPE( wxEVT_SLIDEBAR_UPDATE_LAYOUT, wxEVT_FIRST + 1252 )  // TODO: must change id
END_DECLARE_EVENT_TYPES()

#define EVT_SLIDEBAR_SIZE_CHANGED(fn) \
    DECLARE_EVENT_TABLE_ENTRY( wxEVT_SLIDEBAR_SIZE_CHANGED, -1, -1, (wxObjectEventFunction) (wxEventFunction) & fn, NULL ),
#define EVT_SLIDEBAR_UPDATE_LAYOUT(fn) \
    DECLARE_EVENT_TABLE_ENTRY( wxEVT_SLIDEBAR_UPDATE_LAYOUT, -1, -1, (wxObjectEventFunction) (wxEventFunction) & fn, NULL ),

#endif
    // _WX_SLIDEBAR_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -