X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fcontent_widget.h;h=6f406dadbc926e92c094b74d53366327b6d08093;hb=5ae794047e5ceee4502e59211f0083a60224f4bd;hp=8b76160443fd0cf31fe34e75e710ec0faf5a3d64;hpb=1dcfb3a26085ebb3703f40e2f51e43ce3d98be50;p=dcpomatic.git diff --git a/src/wx/content_widget.h b/src/wx/content_widget.h index 8b7616044..6f406dadb 100644 --- a/src/wx/content_widget.h +++ b/src/wx/content_widget.h @@ -27,6 +27,7 @@ #include #include #include +#include #include #include "wx_util.h" @@ -40,7 +41,7 @@ * @param V Data type of state as used by the view. */ template -class ContentWidget +class ContentWidget : public boost::noncopyable { public: /** @param parent Parent window. @@ -102,11 +103,12 @@ public: } /** Add this widget to a wxGridBagSizer */ - void add (wxGridBagSizer* sizer, wxGBPosition position) + void add (wxGridBagSizer* sizer, wxGBPosition position, wxGBSpan span = wxDefaultSpan) { _sizer = sizer; _position = position; - _sizer->Add (_wrapped, _position); + _span = span; + _sizer->Add (_wrapped, _position, _span); } /** Update the view from the model */ @@ -150,7 +152,7 @@ private: _sizer->Detach (_button); _button->Hide (); - _sizer->Add (_wrapped, _position); + _sizer->Add (_wrapped, _position, _span); _wrapped->Show (); _sizer->Layout (); } @@ -164,7 +166,7 @@ private: _wrapped->Hide (); _sizer->Detach (_wrapped); _button->Show (); - _sizer->Add (_button, _position); + _sizer->Add (_button, _position, _span); _sizer->Layout (); } @@ -186,6 +188,7 @@ private: T* _wrapped; wxGridBagSizer* _sizer; wxGBPosition _position; + wxGBSpan _span; wxButton* _button; List _content; int _property; @@ -227,6 +230,30 @@ public: } }; +template +class ContentSpinCtrlDouble : public ContentWidget +{ +public: + ContentSpinCtrlDouble ( + wxWindow* parent, + wxSpinCtrlDouble* wrapped, + int property, + boost::function getter, + boost::function setter + ) + : ContentWidget ( + parent, + wrapped, + property, + getter, setter, + &caster, + &caster + ) + { + wrapped->Bind (wxEVT_COMMAND_SPINCTRLDOUBLE_UPDATED, boost::bind (&ContentWidget::view_changed, this)); + } +}; + template class ContentChoice : public ContentWidget {