]> git.saurik.com Git - wxWidgets.git/commitdiff
added a menu allowing to change the border style used by the widget
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 16 Apr 2006 23:39:11 +0000 (23:39 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 16 Apr 2006 23:39:11 +0000 (23:39 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38772 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

13 files changed:
samples/widgets/button.cpp
samples/widgets/checkbox.cpp
samples/widgets/combobox.cpp
samples/widgets/gauge.cpp
samples/widgets/listbox.cpp
samples/widgets/notebook.cpp
samples/widgets/radiobox.cpp
samples/widgets/slider.cpp
samples/widgets/spinbtn.cpp
samples/widgets/static.cpp
samples/widgets/textctrl.cpp
samples/widgets/widgets.cpp
samples/widgets/widgets.h

index 4023441785eb725ffb7629ecad3c4db3a8dcc73e..8e855553a3d63589cc334085d649d9f55f81403c 100644 (file)
@@ -83,6 +83,7 @@ public:
     virtual ~ButtonWidgetsPage(){};
 
     virtual wxControl *GetWidget() const { return m_button; }
+    virtual void RecreateWidget() { CreateButton(); }
 
 protected:
     // event handlers
@@ -311,7 +312,7 @@ void ButtonWidgetsPage::CreateButton()
         label = m_textLabel->GetValue();
     }
 
-    int flags = 0;
+    int flags = ms_defaultFlags;
     switch ( m_radioHAlign->GetSelection() )
     {
         case ButtonHAlign_Left:
index aeaf200853dee79d7bc3711defd2930c23a63f9f..5b41e219f36ef52ab564d6aaf86b8800fbe0f92b 100644 (file)
@@ -77,6 +77,7 @@ public:
     virtual ~CheckBoxWidgetsPage(){};
 
     virtual wxControl *GetWidget() const { return m_checkbox; }
+    virtual void RecreateWidget() { CreateCheckbox(); }
 
 protected:
     // event handlers
@@ -243,7 +244,7 @@ void CheckBoxWidgetsPage::CreateCheckbox()
 
     delete m_checkbox;
 
-    int flags = 0;
+    int flags = ms_defaultFlags;
     if ( m_chkRight->IsChecked() )
         flags |= wxALIGN_RIGHT;
 
index f973500bb2fe91558c08ad4262bde73240abe82a..d3e703bea46f36a0068d5a2d0d93f57dd060989f 100644 (file)
@@ -88,6 +88,7 @@ public:
     ComboboxWidgetsPage(wxBookCtrlBase *book, wxImageList *imaglist);
 
     virtual wxControl *GetWidget() const { return m_combobox; }
+    virtual void RecreateWidget() { CreateCombo(); }
 
 protected:
     // event handlers
@@ -334,7 +335,7 @@ void ComboboxWidgetsPage::Reset()
 
 void ComboboxWidgetsPage::CreateCombo()
 {
-    int flags = 0;
+    int flags = ms_defaultFlags;
 
     if ( m_chkSort->GetValue() )
         flags |= wxCB_SORT;
index 743592a7ba196328050239f189a61a7c15c685ee..5b950ee073286c4cac7932ff9811ce5f42b7535f 100644 (file)
@@ -75,6 +75,7 @@ public:
     virtual ~GaugeWidgetsPage();
 
     virtual wxControl *GetWidget() const { return m_gauge; }
+    virtual void RecreateWidget() { CreateGauge(); }
 
 protected:
     // event handlers
@@ -259,7 +260,7 @@ void GaugeWidgetsPage::Reset()
 
 void GaugeWidgetsPage::CreateGauge()
 {
-    int flags = 0;
+    int flags = ms_defaultFlags;
 
     if ( m_chkVert->GetValue() )
         flags |= wxGA_VERTICAL;
index 24610b6f0cce6921ba62f059893ba13d431dd230..713a117d74c8a242f5aea9471bcde0d406e9a8e9 100644 (file)
@@ -79,6 +79,7 @@ public:
     ListboxWidgetsPage(wxBookCtrlBase *book, wxImageList *imaglist);
 
     virtual wxControl *GetWidget() const { return m_lbox; }
+    virtual void RecreateWidget() { CreateLbox(); }
 
 protected:
     // event handlers
@@ -334,7 +335,7 @@ void ListboxWidgetsPage::Reset()
 
 void ListboxWidgetsPage::CreateLbox()
 {
-    int flags = 0;
+    int flags = ms_defaultFlags;
     switch ( m_radioSelMode->GetSelection() )
     {
         default:
index 0edbed19a611534670cddf7b685d393c93b076af..0d15102e268120dee6ff57c5388205314ee8edb1 100644 (file)
@@ -90,6 +90,7 @@ public:
     virtual ~NotebookWidgetsPage();
 
     virtual wxControl *GetWidget() const { return m_notebook; }
+    virtual void RecreateWidget() { CreateNotebook(); }
 
 protected:
     // event handlers
@@ -344,7 +345,7 @@ void NotebookWidgetsPage::CreateImageList()
 
 void NotebookWidgetsPage::CreateNotebook()
 {
-    int flags;
+    int flags = ms_defaultFlags;
     switch ( m_radioOrient->GetSelection() )
     {
         default:
@@ -352,19 +353,19 @@ void NotebookWidgetsPage::CreateNotebook()
             // fall through
 
         case Orient_Top:
-            flags = wxBK_TOP;
+            flags |= wxBK_TOP;
             break;
 
         case Orient_Bottom:
-            flags = wxBK_BOTTOM;
+            flags |= wxBK_BOTTOM;
             break;
 
         case Orient_Left:
-            flags = wxBK_LEFT;
+            flags |= wxBK_LEFT;
             break;
 
         case Orient_Right:
-            flags = wxBK_RIGHT;
+            flags |= wxBK_RIGHT;
             break;
     }
 
index ddb845608486bfd1679d0b07acd59639426310a2..91f5cc9fa9e38b256105ad99c258c73380c51e43 100644 (file)
@@ -87,6 +87,7 @@ public:
     virtual ~RadioWidgetsPage(){};
 
     virtual wxControl *GetWidget() const { return m_radio; }
+    virtual void RecreateWidget() { CreateRadio(); }
 
 protected:
     // event handlers
@@ -356,6 +357,8 @@ void RadioWidgetsPage::CreateRadio()
     int flags = m_chkVert->GetValue() ? wxRA_VERTICAL
                                       : wxRA_HORIZONTAL;
 
+    flags |= ms_defaultFlags;
+
 #ifdef wxRA_LEFTTORIGHT
     switch ( m_radioDir->GetSelection() )
     {
index b23a4a74536405009c710441be6faf939de95486..c70a7947314784d15ae0de6ca07a7376f1af912b 100644 (file)
@@ -93,6 +93,7 @@ public:
     virtual ~SliderWidgetsPage(){};
 
     virtual wxControl *GetWidget() const { return m_slider; }
+    virtual void RecreateWidget() { CreateSlider(); }
 
 protected:
     // event handlers
@@ -333,7 +334,7 @@ void SliderWidgetsPage::Reset()
 
 void SliderWidgetsPage::CreateSlider()
 {
-    int flags = 0;
+    int flags = ms_defaultFlags;
 
     if ( m_chkInverse->GetValue() )
     {
index c0fd377581faa4eb14ef9ec2c26c8e3422de9035..cf8c255d4f8e01c720221989c83b07508adffc0e 100644 (file)
@@ -78,6 +78,7 @@ public:
 
     virtual wxControl *GetWidget() const { return m_spinbtn; }
     virtual wxControl *GetWidget2() const { return m_spinctrl; }
+    virtual void RecreateWidget() { CreateSpin(); }
 
 protected:
     // event handlers
@@ -268,7 +269,7 @@ void SpinBtnWidgetsPage::Reset()
 
 void SpinBtnWidgetsPage::CreateSpin()
 {
-    int flags = 0;
+    int flags = ms_defaultFlags;
 
     bool isVert = m_chkVert->GetValue();
     if ( isVert )
index 496284b85c41d663e93b379418c4b27b422beeae..499a0037b6e7e24b2670d878071fe450543ec9fd 100644 (file)
@@ -143,6 +143,7 @@ public:
     virtual ~StaticWidgetsPage(){};
 
     virtual wxControl *GetWidget() const { return m_statText; }
+    virtual void RecreateWidget() { CreateStatic(); }
 
 protected:
     // event handlers
@@ -333,7 +334,7 @@ void StaticWidgetsPage::CreateStatic()
     }
 
     int flagsBox = 0,
-        flagsText = 0;
+        flagsText = ms_defaultFlags;
 
     if ( !m_chkAutoResize->GetValue() )
     {
index 3a6c35f698f0f90229bf562345107bbeca376981..6fd19a54978ad12bb95734197e38c28b69e15c33 100644 (file)
@@ -136,6 +136,7 @@ public:
     virtual ~TextWidgetsPage(){};
 
     virtual wxControl *GetWidget() const { return m_text; }
+    virtual void RecreateWidget() { CreateText(); }
 
 protected:
     // create an info text contorl
@@ -599,7 +600,7 @@ void TextWidgetsPage::Reset()
 
 void TextWidgetsPage::CreateText()
 {
-    int flags = 0;
+    int flags = ms_defaultFlags;
     switch ( m_radioTextLines->GetSelection() )
     {
         default:
index 2b03a39c03e416147ed7d6866df7710f5181b6fe..2378c6b78e91d4aa97aac79806689fe429c6b761 100644 (file)
@@ -58,13 +58,22 @@ enum
 {
     Widgets_ClearLog = 100,
     Widgets_Quit,
+
 #if wxUSE_TOOLTIPS
     Widgets_SetTooltip,
 #endif // wxUSE_TOOLTIPS
     Widgets_SetFgColour,
     Widgets_SetBgColour,
     Widgets_SetFont,
-    Widgets_Enable
+    Widgets_Enable,
+
+    Widgets_BorderNone,
+    Widgets_BorderStatic,
+    Widgets_BorderSimple,
+    Widgets_BorderRaised,
+    Widgets_BorderSunken,
+    Widgets_BorderDouble,
+    Widgets_BorderDefault
 };
 
 // ----------------------------------------------------------------------------
@@ -107,6 +116,7 @@ protected:
     void OnSetBgCol(wxCommandEvent& event);
     void OnSetFont(wxCommandEvent& event);
     void OnEnable(wxCommandEvent& event);
+    void OnSetBorder(wxCommandEvent& event);
 #endif // wxUSE_MENUS
 
     // initialize the book: add all pages to it
@@ -228,6 +238,9 @@ BEGIN_EVENT_TABLE(WidgetsFrame, wxFrame)
     EVT_MENU(Widgets_SetFont,     WidgetsFrame::OnSetFont)
     EVT_MENU(Widgets_Enable,      WidgetsFrame::OnEnable)
 
+    EVT_MENU_RANGE(Widgets_BorderNone, Widgets_BorderDefault,
+                   WidgetsFrame::OnSetBorder)
+
     EVT_MENU(wxID_EXIT, WidgetsFrame::OnExit)
 END_EVENT_TABLE()
 
@@ -305,6 +318,17 @@ WidgetsFrame::WidgetsFrame(const wxString& title)
     menuWidget->Append(Widgets_SetBgColour, _T("Set &background...\tCtrl-B"));
     menuWidget->Append(Widgets_SetFont,     _T("Set f&ont...\tCtrl-O"));
     menuWidget->AppendCheckItem(Widgets_Enable,  _T("&Enable/disable\tCtrl-E"));
+
+    wxMenu *menuBorders = new wxMenu;
+    menuBorders->AppendRadioItem(Widgets_BorderDefault, _T("De&fault\tCtrl-Shift-9"));
+    menuBorders->AppendRadioItem(Widgets_BorderNone,   _T("&None\tCtrl-Shift-0"));
+    menuBorders->AppendRadioItem(Widgets_BorderSimple, _T("&Simple\tCtrl-Shift-1"));
+    menuBorders->AppendRadioItem(Widgets_BorderDouble, _T("&Double\tCtrl-Shift-2"));
+    menuBorders->AppendRadioItem(Widgets_BorderStatic, _T("Stati&c\tCtrl-Shift-3"));
+    menuBorders->AppendRadioItem(Widgets_BorderRaised, _T("&Raised\tCtrl-Shift-4"));
+    menuBorders->AppendRadioItem(Widgets_BorderSunken, _T("S&unken\tCtrl-Shift-5"));
+    menuWidget->AppendSubMenu(menuBorders, _T("Set &border"));
+
     menuWidget->AppendSeparator();
     menuWidget->Append(wxID_EXIT, _T("&Quit\tCtrl-Q"));
     mbar->Append(menuWidget, _T("&Widget"));
@@ -577,14 +601,38 @@ void WidgetsFrame::OnEnable(wxCommandEvent& event)
     page->GetWidget()->Enable(event.IsChecked());
 }
 
+void WidgetsFrame::OnSetBorder(wxCommandEvent& event)
+{
+    int border;
+    switch ( event.GetId() )
+    {
+        case Widgets_BorderNone:   border = wxBORDER_NONE;   break;
+        case Widgets_BorderStatic: border = wxBORDER_STATIC; break;
+        case Widgets_BorderSimple: border = wxBORDER_SIMPLE; break;
+        case Widgets_BorderRaised: border = wxBORDER_RAISED; break;
+        case Widgets_BorderSunken: border = wxBORDER_SUNKEN; break;
+        case Widgets_BorderDouble: border = wxBORDER_DOUBLE; break;
+
+        default:
+            wxFAIL_MSG( _T("unknown border style") );
+            // fall through
+
+        case Widgets_BorderDefault: border = wxBORDER_DEFAULT; break;
+    }
+
+    WidgetsPage::ms_defaultFlags &= ~wxBORDER_MASK;
+    WidgetsPage::ms_defaultFlags |= border;
+
+    WidgetsPage *page = wxStaticCast(m_book->GetCurrentPage(), WidgetsPage);
+    page->RecreateWidget();
+}
+
 #endif // wxUSE_MENUS
 
 // ----------------------------------------------------------------------------
 // WidgetsPageInfo
 // ----------------------------------------------------------------------------
 
-WidgetsPageInfo *WidgetsPage::ms_widgetPages = NULL;
-
 WidgetsPageInfo::WidgetsPageInfo(Constructor ctor, const wxChar *label)
                : m_label(label)
 {
@@ -644,6 +692,9 @@ WidgetsPageInfo::WidgetsPageInfo(Constructor ctor, const wxChar *label)
 // WidgetsPage
 // ----------------------------------------------------------------------------
 
+int WidgetsPage::ms_defaultFlags = wxBORDER_DEFAULT;
+WidgetsPageInfo *WidgetsPage::ms_widgetPages = NULL;
+
 WidgetsPage::WidgetsPage(wxBookCtrlBase *book)
            : wxPanel(book, wxID_ANY,
                      wxDefaultPosition, wxDefaultSize,
index 0fb6e05b58d5a3bc76fcf7569745dcec7b206169..d8e40df3ce335321434a164dd80eb83f79b7bcb4 100644 (file)
@@ -45,6 +45,14 @@ public:
     // some pages show 2 controls, in this case override this one as well
     virtual wxControl *GetWidget2() const { return NULL; }
 
+    // recreate the control shown by this page
+    //
+    // this is currently used only to take into account the border flags
+    virtual void RecreateWidget() = 0;
+
+    // the default flags for the widget, currently only contains border flags
+    static int ms_defaultFlags;
+
 protected:
     // several helper functions for page creation