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

📄 foldpanelitem.h

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 H
字号:
/////////////////////////////////////////////////////////////////////////////// Name:        foldpanelitem.h// Purpose:     wxFoldPanel// Author:      Jorgen Bodde// Modified by: ABX - 19/12/2004 : possibility of horizontal orientation//                               : wxWidgets coding standards// Created:     22/06/2004// RCS-ID:      $Id: foldpanelitem.h,v 1.7 2005/07/28 23:23:22 VZ Exp $// Copyright:   (c) Jorgen Bodde// Licence:     wxWindows licence/////////////////////////////////////////////////////////////////////////////#ifndef __WXFOLDPANELITEM_H__#define __WXFOLDPANELITEM_H__#include "wx/foldbar/captionbar.h"#define wxFPB_ALIGN_LEFT  0#define wxFPB_ALIGN_WIDTH 1#define wxFPB_DEFAULT_LEFTSPACING  5#define wxFPB_DEFAULT_RIGHTSPACING 10#define wxFPB_DEFAULT_SPACING     8#define wxFPB_DEFAULT_LEFTLINESPACING  2#define wxFPB_DEFAULT_RIGHTLINESPACING 2class wxFoldWindowItem{private:    wxWindow *m_wndItem;    int m_type, m_flags;    int m_leftSpacing,        m_rightSpacing,        m_Spacing;    int m_lineLength, m_lineY;    wxColour m_sepLineColour;public:    enum    {        WINDOW = 0,        SEPARATOR    };    // wxWindow constructor. This initialises the class as a wxWindow type    wxFoldWindowItem(wxWindow *wnd, int flags = wxFPB_ALIGN_WIDTH, int Spacing = wxFPB_DEFAULT_SPACING,                     int leftSpacing = wxFPB_DEFAULT_LEFTSPACING, int rightSpacing = wxFPB_DEFAULT_RIGHTSPACING)        : m_wndItem(wnd)        , m_type(WINDOW)        , m_flags(flags)        , m_leftSpacing(leftSpacing)        , m_rightSpacing(rightSpacing)        , m_Spacing(Spacing)        , m_lineLength(0)        , m_lineY(0)    {    };    // separator constructor. This initialises the class as a separator type    wxFoldWindowItem(int y, const wxColour &lineColor = *wxBLACK, int Spacing = wxFPB_DEFAULT_SPACING,                     int leftSpacing = wxFPB_DEFAULT_LEFTLINESPACING,                     int rightSpacing = wxFPB_DEFAULT_RIGHTLINESPACING)        : m_wndItem(NULL)        , m_type(SEPARATOR)        , m_flags(wxFPB_ALIGN_WIDTH)        , m_leftSpacing(leftSpacing)        , m_rightSpacing(rightSpacing)        , m_Spacing(Spacing)        , m_lineLength(0)        , m_lineY(y)        , m_sepLineColour(lineColor)    {    };    // TODO: Make a c'tor for a captioned splitter    int GetType() const {        return m_type;    };    int GetLineY() const {        return m_lineY;    };    int GetLineLength() const {        return m_lineLength;    };    const wxColour &GetLineColour() const {        return m_sepLineColour;    };    int GetLeftSpacing() const {        return m_leftSpacing;    };    int GetRightSpacing() const {        return m_rightSpacing;    };    int GetSpacing() const {        return m_Spacing;    };    // returns space needed by the window if type is wxFoldWindowItem::WINDOW    // and returns the total size plus the extra spacing    int GetWindowLength(bool vertical) const {        int value = 0;        if(m_type == WINDOW)        {            wxCHECK(m_wndItem, 0);            wxSize size = m_wndItem->GetSize();            value = ( vertical ? size.GetHeight() : size.GetWidth() ) + m_Spacing;        }        else if(m_type == SEPARATOR)            value = 1 + m_Spacing;        return value;    };    // resize the element, whatever it is. A separator or    // line will be always aligned by width or height    // depending on orientation of the whole panel    void ResizeItem(int size, bool vertical) {        if(m_flags & wxFPB_ALIGN_WIDTH)        {            // align by taking full width            int mySize = size - m_leftSpacing - m_rightSpacing;            if(mySize < 0)                mySize = 10; // can't have negative width            if(m_type == SEPARATOR)                m_lineLength = mySize;            else            {                wxCHECK2(m_wndItem, return);                m_wndItem->SetSize(vertical?mySize:wxDefaultCoord, vertical?wxDefaultCoord:mySize);            }        }    };};#include <wx/dynarray.h>WX_DECLARE_OBJARRAY_WITH_DECL(wxFoldWindowItem, wxFoldWindowItemArray, class WXDLLIMPEXP_FOLDBAR);#ifndef _NO_DOXYGEN_/** \wxFoldPanelItem    This class is a child sibling of the wxFoldPanelBar class. It will be containing a wxCaptionBar class    for receiving of events, and a the rest of the area can be populated by a wxPanel derived class.*/class WXDLLIMPEXP_FOLDBAR wxFoldPanelItem: public wxPanel{private:    wxCaptionBar *m_captionBar;    bool m_controlCreated;    int m_userSize,        m_panelSize,        m_lastInsertPos;    int m_itemPos;    bool m_userSized;private:    DECLARE_CLASS( wxFoldPanelItem )    DECLARE_EVENT_TABLE()private:    wxFoldWindowItemArray m_items;    void OnSize(wxSizeEvent &event);    void OnPressCaption(wxCaptionBarEvent &event);    void OnPaint(wxPaintEvent &event);public:    // constructors and destructors    wxFoldPanelItem( wxWindow *parent, const wxString &caption, wxImageList *icons = 0, bool collapsedInitially = false,                     const wxCaptionBarStyle &style = wxEmptyCaptionBarStyle);    virtual ~wxFoldPanelItem();    /** Add a window item to the list of items on this panel. The flags are wxFPB_ALIGN_LEFT for a non sizing        window element, and wxFPB_ALIGN_WIDTH for a width aligned item. The ySpacing parameter reserves a number        of pixels before the window element, and leftSpacing is an indent. rightSpacing is only relevant when the        style wxFPB_ALIGN_WIDTH is chosen. */    void AddWindow(wxWindow *window, int flags, int ySpacing, int leftSpacing, int rightSpacing);    void AddSeparator(const wxColour &color, int ySpacing, int leftSpacing, int rightSpacing);    /** Repositions this wxFoldPanelBar and reports the length occupied for the next wxFoldPanelBar in the        list */    int Reposition(int pos);    void ResizePanel();    /** Return expanded or collapsed status. If the panel is expanded, true is returned */    bool IsExpanded() const {        return !m_captionBar->IsCollapsed();    };    /** Return Y pos */    int GetItemPos() const {        return m_itemPos;    };    // this should not be called by the user, because it doesn't trigger the parent    // to tell it that we are collapsed or expanded, it only changes visual state    void Collapse() {        m_captionBar->Collapse();        ResizePanel();    };    // this should not be called by the user, because it doesn't trigger the parent    // to tell it that we are collapsed or expanded, it only changes visual state    void Expand() {        m_captionBar->Expand();        ResizePanel();    };    /* Return size of panel */    int GetPanelLength() const {        if(m_captionBar->IsCollapsed())            return GetCaptionLength();        else if(m_userSized)            return m_userSize;        return m_panelSize;    };    bool IsVertical() const;    // returns space of caption only. This is for folding calulation    // purposes    int GetCaptionLength() const {        wxSize size = m_captionBar->GetSize();        return IsVertical() ? size.GetHeight() : size.GetWidth();    };    void ApplyCaptionStyle(const wxCaptionBarStyle &style) {        wxCHECK2(m_captionBar, return);        m_captionBar->SetCaptionStyle(false, style);    };    wxCaptionBarStyle GetCaptionStyle() {        wxCHECK(m_captionBar, wxEmptyCaptionBarStyle);        return m_captionBar->GetCaptionStyle();    };};#endif // _NO_DOXYGEN_#endif // __WXFOLDPANELITEM_H__

⌨️ 快捷键说明

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