X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c2a41978609bfefdbb7f9cbfcdb01251f30e0da0..b808efdb885aa82a6c34a8278119bae63c7f4183:/contrib/include/wx/foldbar/foldpanelitem.h diff --git a/contrib/include/wx/foldbar/foldpanelitem.h b/contrib/include/wx/foldbar/foldpanelitem.h index edc5432bd0..41dd7e65b5 100644 --- a/contrib/include/wx/foldbar/foldpanelitem.h +++ b/contrib/include/wx/foldbar/foldpanelitem.h @@ -2,7 +2,8 @@ // Name: foldpanelitem.h // Purpose: wxFoldPanel // Author: Jorgen Bodde -// Modified by: +// Modified by: ABX - 19/12/2004 : possibility of horizontal orientation +// : wxWidgets coding standards // Created: 22/06/2004 // RCS-ID: $Id$ // Copyright: (c) Jorgen Bodde @@ -12,18 +13,14 @@ #ifndef __WXFOLDPANELITEM_H__ #define __WXFOLDPANELITEM_H__ -#ifndef WX_PRECOMP - #include "wx/wx.h" -#endif +#include "wx/foldbar/captionbar.h" -#include "captionbar.h" - -#define wxFPB_ALIGN_LEFT 0 +#define wxFPB_ALIGN_LEFT 0 #define wxFPB_ALIGN_WIDTH 1 #define wxFPB_DEFAULT_LEFTSPACING 5 #define wxFPB_DEFAULT_RIGHTSPACING 10 -#define wxFPB_DEFAULT_YSPACING 8 +#define wxFPB_DEFAULT_SPACING 8 #define wxFPB_DEFAULT_LEFTLINESPACING 2 #define wxFPB_DEFAULT_RIGHTLINESPACING 2 @@ -31,116 +28,117 @@ class wxFoldWindowItem { private: - wxWindow *_wnd; - int _type, _flags; - int _leftSpacing, - _rightSpacing, - _ySpacing; - int _lineWidth, _lineY; - wxColour _sepLineColour; + 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 + enum { WINDOW = 0, SEPARATOR }; // wxWindow constructor. This initialises the class as a wxWindow type - wxFoldWindowItem(wxWindow *wnd, int flags = wxFPB_ALIGN_WIDTH, int ySpacing = wxFPB_DEFAULT_YSPACING, - int leftSpacing = wxFPB_DEFAULT_LEFTSPACING, int rightSpacing = wxFPB_DEFAULT_RIGHTSPACING) - : _wnd(wnd) - , _type(WINDOW) - , _ySpacing(ySpacing) - , _leftSpacing(leftSpacing) - , _rightSpacing(rightSpacing) - , _flags(flags) - , _lineWidth(0) - , _lineY(0) + 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 ySpacing = wxFPB_DEFAULT_YSPACING, - int leftSpacing = wxFPB_DEFAULT_LEFTLINESPACING, - int rightSpacing = wxFPB_DEFAULT_RIGHTLINESPACING) - : _wnd(0) - , _type(SEPARATOR) - , _ySpacing(ySpacing) - , _leftSpacing(leftSpacing) - , _rightSpacing(rightSpacing) - , _flags(wxFPB_ALIGN_WIDTH) - , _sepLineColour(lineColor) - , _lineWidth(0) - , _lineY(y) + 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 _type; + return m_type; }; int GetLineY() const { - return _lineY; + return m_lineY; }; - int GetLineWidth() const { - return _lineWidth; + int GetLineLength() const { + return m_lineLength; }; const wxColour &GetLineColour() const { - return _sepLineColour; + return m_sepLineColour; }; int GetLeftSpacing() const { - return _leftSpacing; + return m_leftSpacing; }; int GetRightSpacing() const { - return _rightSpacing; + return m_rightSpacing; }; - int GetYSpacing() const { - return _ySpacing; + int GetSpacing() const { + return m_Spacing; }; - // returns the window height if type is wxFoldWindowItem::WINDOW + // returns space needed by the window if type is wxFoldWindowItem::WINDOW // and returns the total size plus the extra spacing - int GetWindowHeight() const { + int GetWindowLength(bool vertical) const { int value = 0; - if(_type == WINDOW) + if(m_type == WINDOW) { - wxCHECK(_wnd, 0); - wxSize size = _wnd->GetSize(); - value = size.GetHeight() + _ySpacing; + wxCHECK(m_wndItem, 0); + wxSize size = m_wndItem->GetSize(); + value = ( vertical ? size.GetHeight() : size.GetWidth() ) + m_Spacing; } - else if(_type == SEPARATOR) - value = 1 + _ySpacing; + else if(m_type == SEPARATOR) + value = 1 + m_Spacing; return value; }; // resize the element, whatever it is. A separator or - // line will be always alligned by width + // line will be always alligned by width or hight + // depending on orientation of the whole panel - void ResizeItem(int width) { - if((_flags & wxFPB_ALIGN_WIDTH)) + void ResizeItem(int size, bool vertical) { + if(m_flags & wxFPB_ALIGN_WIDTH) { // allign by taking full width - int myWidth = width - _leftSpacing - _rightSpacing; + int mySize = size - m_leftSpacing - m_rightSpacing; - if(myWidth < 0) - myWidth = 10; // can't have negative width + if(mySize < 0) + mySize = 10; // can't have negative width - if(_type == SEPARATOR) - _lineWidth = myWidth; + if(m_type == SEPARATOR) + m_lineLength = mySize; else { - wxCHECK2(_wnd, return); - _wnd->SetSize(wxSize(myWidth, wxDefaultCoord)); + wxCHECK2(m_wndItem, return); + m_wndItem->SetSize(vertical?mySize:wxDefaultCoord, vertical?wxDefaultCoord:mySize); } } }; @@ -154,27 +152,27 @@ WX_DECLARE_OBJARRAY(wxFoldWindowItem, wxFoldWindowItemArray); /** \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. + for receiving of events, and a the rest of the area can be populated by a wxPanel derived class. */ -class wxFoldPanelItem: public wxPanel +class WXDLLIMPEXP_FOLDBAR wxFoldPanelItem: public wxPanel { private: - wxCaptionBar *_captionBar; + wxCaptionBar *m_captionBar; - bool _controlCreated; - int _yUserSize, - _yPanelSize, - _yLastInsertPos; - int _yPos; - bool _userSized; + 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 _items; + wxFoldWindowItemArray m_items; void OnSize(wxSizeEvent &event); void OnPressCaption(wxCaptionBarEvent &event); @@ -182,75 +180,77 @@ private: public: // constructors and destructors - wxFoldPanelItem( wxWindow *parent, const wxString &caption, wxImageList *icons = 0, bool collapsedInitially = false, + 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 alligned 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 height occupied for the next wxFoldPanelBar in the + /** Repositions this wxFoldPanelBar and reports the length occupied for the next wxFoldPanelBar in the list */ - int Reposition(int y); + int Reposition(int pos); void ResizePanel(); /** Return expanded or collapsed status. If the panel is expanded, true is returned */ bool IsExpanded() const { - return !_captionBar->IsCollapsed(); + return !m_captionBar->IsCollapsed(); }; /** Return Y pos */ - int GetY() const { - return _yPos; + int GetItemPos() const { + return m_itemPos; }; - // this should not be called by the user, because it doesn't trigger the parent + // 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() { - _captionBar->Collapse(); + m_captionBar->Collapse(); ResizePanel(); }; - // this should not be called by the user, because it doesn't trigger the parent + // 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() { - _captionBar->Expand(); + m_captionBar->Expand(); ResizePanel(); }; /* Return size of panel */ - int GetPanelHeight() const { - if(_captionBar->IsCollapsed()) - return GetCaptionHeight(); - else if(_userSized) - return _yUserSize; - return _yPanelSize; + int GetPanelLength() const { + if(m_captionBar->IsCollapsed()) + return GetCaptionLength(); + else if(m_userSized) + return m_userSize; + return m_panelSize; }; - // returns height of caption only. This is for folding calulation + bool IsVertical() const; + + // returns space of caption only. This is for folding calulation // purposes - int GetCaptionHeight() const { - wxSize size = _captionBar->GetSize(); - return size.GetHeight(); + int GetCaptionLength() const { + wxSize size = m_captionBar->GetSize(); + return IsVertical() ? size.GetHeight() : size.GetWidth(); }; void ApplyCaptionStyle(const wxCaptionBarStyle &style) { - wxCHECK2(_captionBar, return); - _captionBar->SetCaptionStyle(false, style); + wxCHECK2(m_captionBar, return); + m_captionBar->SetCaptionStyle(false, style); }; wxCaptionBarStyle GetCaptionStyle() { - wxCHECK(_captionBar, wxEmptyCaptionBarStyle); - return _captionBar->GetCaptionStyle(); + wxCHECK(m_captionBar, wxEmptyCaptionBarStyle); + return m_captionBar->GetCaptionStyle(); }; };