X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/957f5ab77abb14c70c60f18196e1e0d39292ee59..9838b284443a889c6c629568011c8ce76cfbacd4:/contrib/include/wx/foldbar/foldpanelitem.h?ds=sidebyside diff --git a/contrib/include/wx/foldbar/foldpanelitem.h b/contrib/include/wx/foldbar/foldpanelitem.h index 623b7b6c68..4891e319e5 100644 --- a/contrib/include/wx/foldbar/foldpanelitem.h +++ b/contrib/include/wx/foldbar/foldpanelitem.h @@ -1,8 +1,12 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: wxFoldPanelItem.h -// Author: XX -// Created: Tuesday, June 22, 2004 21:01:02 -// Copyright: XX +// Name: foldpanelitem.h +// Purpose: wxFoldPanel +// Author: Jorgen Bodde +// Modified by: +// Created: 22/06/2004 +// RCS-ID: $Id$ +// Copyright: (c) Jorgen Bodde +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef __WXFOLDPANELITEM_H__ @@ -27,119 +31,119 @@ class wxFoldWindowItem { private: - wxWindow *_wnd; - int _type, _flags; - int _leftSpacing, - _rightSpacing, - _ySpacing; - int _lineWidth, _lineY; - wxColour _sepLineColour; + wxWindow *_wnd; + int _type, _flags; + int _leftSpacing, + _rightSpacing, + _ySpacing; + int _lineWidth, _lineY; + wxColour _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 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) - { - }; - - // 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) - { - }; - - // TODO: Make a c'tor for a captioned splitter - - int GetType() const { - return _type; - }; - - int GetLineY() const { - return _lineY; - }; - - int GetLineWidth() const { - return _lineWidth; - }; - - const wxColour &GetLineColour() const { - return _sepLineColour; - }; - - int GetLeftSpacing() const { - return _leftSpacing; - }; - - int GetRightSpacing() const { - return _rightSpacing; - }; - - int GetYSpacing() const { - return _ySpacing; - }; - - // returns the window height if type is wxFoldWindowItem::WINDOW - // and returns the total size plus the extra spacing - - int GetWindowHeight() const { - int value = 0; - if(_type == WINDOW) - { - wxCHECK(_wnd, 0); - wxSize size = _wnd->GetSize(); - value = size.GetHeight() + _ySpacing; - } - else if(_type == SEPARATOR) - value = 1 + _ySpacing; - - return value; - }; - - // resize the element, whatever it is. A separator or - // line will be always alligned by width - - void ResizeItem(int width) { - if((_flags & wxFPB_ALIGN_WIDTH)) - { - // allign by taking full width - int myWidth = width - _leftSpacing - _rightSpacing; - - if(myWidth < 0) - myWidth = 10; // can't have negative width - - if(_type == SEPARATOR) - _lineWidth = myWidth; - else - { - wxCHECK2(_wnd, return); - _wnd->SetSize(wxSize(myWidth, -1)); - } - } - }; + 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) + , _flags(flags) + , _leftSpacing(leftSpacing) + , _rightSpacing(rightSpacing) + , _ySpacing(ySpacing) + , _lineWidth(0) + , _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) + , _flags(wxFPB_ALIGN_WIDTH) + , _leftSpacing(leftSpacing) + , _rightSpacing(rightSpacing) + , _ySpacing(ySpacing) + , _lineWidth(0) + , _lineY(y) + , _sepLineColour(lineColor) + { + }; + + // TODO: Make a c'tor for a captioned splitter + + int GetType() const { + return _type; + }; + + int GetLineY() const { + return _lineY; + }; + + int GetLineWidth() const { + return _lineWidth; + }; + + const wxColour &GetLineColour() const { + return _sepLineColour; + }; + + int GetLeftSpacing() const { + return _leftSpacing; + }; + + int GetRightSpacing() const { + return _rightSpacing; + }; + + int GetYSpacing() const { + return _ySpacing; + }; + + // returns the window height if type is wxFoldWindowItem::WINDOW + // and returns the total size plus the extra spacing + + int GetWindowHeight() const { + int value = 0; + if(_type == WINDOW) + { + wxCHECK(_wnd, 0); + wxSize size = _wnd->GetSize(); + value = size.GetHeight() + _ySpacing; + } + else if(_type == SEPARATOR) + value = 1 + _ySpacing; + + return value; + }; + + // resize the element, whatever it is. A separator or + // line will be always alligned by width + + void ResizeItem(int width) { + if((_flags & wxFPB_ALIGN_WIDTH)) + { + // allign by taking full width + int myWidth = width - _leftSpacing - _rightSpacing; + + if(myWidth < 0) + myWidth = 10; // can't have negative width + + if(_type == SEPARATOR) + _lineWidth = myWidth; + else + { + wxCHECK2(_wnd, return); + _wnd->SetSize(wxSize(myWidth, wxDefaultCoord)); + } + } + }; }; @@ -150,104 +154,104 @@ 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 *_captionBar; - bool _controlCreated; - int _yUserSize, - _yPanelSize, - _yLastInsertPos; - int _yPos; - bool _userSized; + bool _controlCreated; + int _yUserSize, + _yPanelSize, + _yLastInsertPos; + int _yPos; + bool _userSized; private: DECLARE_CLASS( wxFoldPanelItem ) DECLARE_EVENT_TABLE() private: - wxFoldWindowItemArray _items; + wxFoldWindowItemArray _items; - void OnSize(wxSizeEvent &event); - void OnPressCaption(wxCaptionBarEvent &event); - void OnPaint(wxPaintEvent &event); + 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); + 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 - list */ - int Reposition(int y); - - void ResizePanel(); - - /** Return expanded or collapsed status. If the panel is expanded, true is returned */ - bool IsExpanded() const { - return !_captionBar->IsCollapsed(); - }; - - /** Return Y pos */ - - int GetY() const { - return _yPos; - }; - - // 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(); - 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() { - _captionBar->Expand(); - ResizePanel(); - }; - - /* Return size of panel */ - - int GetPanelHeight() const { - if(_captionBar->IsCollapsed()) - return GetCaptionHeight(); - else if(_userSized) - return _yUserSize; - return _yPanelSize; - }; - - // returns height of caption only. This is for folding calulation - // purposes - - int GetCaptionHeight() const { - wxSize size = _captionBar->GetSize(); - return size.GetHeight(); - }; - - void ApplyCaptionStyle(const wxCaptionBarStyle &style) { - wxCHECK2(_captionBar, return); - _captionBar->SetCaptionStyle(false, style); - }; - - wxCaptionBarStyle GetCaptionStyle() { - wxCHECK(_captionBar, wxEmptyCaptionBarStyle); - return _captionBar->GetCaptionStyle(); - }; + + /** 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 + list */ + int Reposition(int y); + + void ResizePanel(); + + /** Return expanded or collapsed status. If the panel is expanded, true is returned */ + bool IsExpanded() const { + return !_captionBar->IsCollapsed(); + }; + + /** Return Y pos */ + + int GetY() const { + return _yPos; + }; + + // 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(); + 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() { + _captionBar->Expand(); + ResizePanel(); + }; + + /* Return size of panel */ + + int GetPanelHeight() const { + if(_captionBar->IsCollapsed()) + return GetCaptionHeight(); + else if(_userSized) + return _yUserSize; + return _yPanelSize; + }; + + // returns height of caption only. This is for folding calulation + // purposes + + int GetCaptionHeight() const { + wxSize size = _captionBar->GetSize(); + return size.GetHeight(); + }; + + void ApplyCaptionStyle(const wxCaptionBarStyle &style) { + wxCHECK2(_captionBar, return); + _captionBar->SetCaptionStyle(false, style); + }; + + wxCaptionBarStyle GetCaptionStyle() { + wxCHECK(_captionBar, wxEmptyCaptionBarStyle); + return _captionBar->GetCaptionStyle(); + }; };