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

📄 dockhost.h

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

#ifndef _WX_DOCKHOST_H_
#define _WX_DOCKHOST_H_

// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------

#include <wx/defs.h>
#include <wx/dockit_defs.h>
#include <wx/panel.h>
#include <wx/laywin.h>

#include <wx/layoutmanager.h>

class wxDockPanel;
class wxExSplitter;

// ----------------------------------------------------------------------------
// wxDockHost
// ----------------------------------------------------------------------------

WX_DECLARE_LIST( wxExSplitter, SplitterList );

class WXDOCKIT_DECLSPEC wxDockHost : public wxPanel
{
    DECLARE_CLASS( wxDockHost )
    DECLARE_EVENT_TABLE()

public:

    wxDockHost() {
        Init();
    }
    ~wxDockHost();

    void Init();

    wxDockHost( wxWindow *parent, wxWindowID id, wxDirection dir, const wxString& name = wxT("dockhost") ) {
        Init();
        Create( parent, id, dir, name );
    }

    // basic interface
    bool Create( wxWindow * parent, wxWindowID id, wxDirection dir, const wxString& name = wxT("dockhost") );

    void SetLayoutManager( wxLayoutManager * pLayoutManager );
    wxLayoutManager * GetLayoutManager();

    void SetAreaSize( int size );
    int GetAreaSize();

    // access
    void SetPanelArea( int panelArea ){ panelArea_ = panelArea; }
    int GetPanelArea(){ return panelArea_; }
    void LockPanelValue( bool state ){ lockPanelValue_ = state; }

    DockWindowList & GetDockWindowList();

    void DockPanel( wxDockPanel * pDockPanel, HostInfo &hi );
    void UndockPanel( wxDockPanel * pDockPanel );

    // access
    wxRect GetScreenArea();
    wxRect GetScreenArea( HostInfo &hi );
    wxRect GetClientArea();
    wxRect GetClientArea( wxRect availableArea );
    wxOrientation GetOrientation();
    wxDirection GetDirection();
    wxExSplitter *GetSizingSplitter () const                { return ( pSizingSplitter_ ); }

    wxRect CalcHostPlacement( bool hitTest = false );
    bool IsEmpty();
    bool TestForPanel( int sx, int sy, HostInfo &hi );
    wxRect RectToScreen( wxRect &rect );
    void RecalcPanelAreas();

    void UpdateSize( bool useProportions = false );

    // event handlers
    void OnSize( wxSizeEvent &event );
    void OnSplitterMoved( wxCommandEvent &event );
    void OnCalculateLayout( wxCalculateLayoutEvent &event );

    // internal event
    void SettingsChanged();

private:
    void calcPanelPlacement( bool useProportions = false );
    void updateSplitters();
    int getAssetCount();

private:
    enum eChildType {
        CT_NONE,
        CT_PANEL,
        CT_SPLITTER
    };

    wxDirection dir_;   // dock edge
    int areaSize_;      // docking host size in direction
    int panelArea_;     // area available to panels
    bool lockPanelValue_;
	bool internalSizeEvent_;

    wxPoint pos_;
    wxSize size_;

    wxLayoutManager * pLayoutManager_; // our layout manager

    int numPanels_;
    int numSplitters_;
    SplitterList splitters_;
    unsigned int splitterFlags_;

    wxExSplitter * pSizingSplitter_;

    DockWindowList dockWindows_;
};
#endif
    // _WX_DOCKHOST_H_

⌨️ 快捷键说明

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