]> git.saurik.com Git - wxWidgets.git/commitdiff
unicode adaptions, menu support
authorStefan Csomor <csomor@advancedconcepts.ch>
Mon, 25 Aug 2003 23:33:36 +0000 (23:33 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Mon, 25 Aug 2003 23:33:36 +0000 (23:33 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@23224 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

12 files changed:
src/msw/button.cpp
src/msw/checkbox.cpp
src/msw/colour.cpp
src/msw/frame.cpp
src/msw/menu.cpp
src/msw/menuitem.cpp
src/msw/notebook.cpp
src/msw/radiobut.cpp
src/msw/spinbutt.cpp
src/msw/statbox.cpp
src/msw/stattext.cpp
src/msw/textctrl.cpp

index ad4270cd2091459d81e2a8e13fa212f99fcd68b6..948d1c76b88c3eda5d359cb10a23aa2b274d7adf 100644 (file)
@@ -91,7 +91,7 @@ WX_BEGIN_PROPERTIES_TABLE(wxButton)
        WX_DELEGATE( OnClick , wxEVT_COMMAND_BUTTON_CLICKED , wxCommandEvent)
 
        WX_PROPERTY( Font , wxFont , SetFont , GetFont  , , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
-       WX_PROPERTY( Label, wxString , SetLabel, GetLabel, wxEmptyString, 0 /*flags*/ , wxT("Helpstring") , wxT("group") )
+       WX_PROPERTY( Label, wxString , SetLabel, GetLabel, wxString(), 0 /*flags*/ , wxT("Helpstring") , wxT("group") )
 
     WX_PROPERTY_FLAGS( WindowStyle , wxButtonStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
 
index 57e205af1dfee008bda7d7a6c5c60157d3f5038a..6c3c6eafdaa360394c8b9ef0a415bf762789a6a9 100644 (file)
@@ -86,7 +86,7 @@ WX_BEGIN_PROPERTIES_TABLE(wxCheckBox)
        WX_DELEGATE( OnClick , wxEVT_COMMAND_CHECKBOX_CLICKED , wxCommandEvent )
 
        WX_PROPERTY( Font , wxFont , SetFont , GetFont  , , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
-       WX_PROPERTY( Label,wxString, SetLabel, GetLabel, wxEmptyString , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+       WX_PROPERTY( Label,wxString, SetLabel, GetLabel, wxString() , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
        WX_PROPERTY( Value ,bool, SetValue, GetValue, , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
     WX_PROPERTY_FLAGS( WindowStyle , wxCheckBoxStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
 WX_END_PROPERTIES_TABLE()
index 1f99c2a34832a2313f6a5cc6aea128434fb66e23..eebf6ed159be75cd37262a376624c0909f44b097 100644 (file)
@@ -27,8 +27,6 @@
 
 #if wxUSE_EXTENDED_RTTI
 
-/*
-
 template<> void wxStringReadValue(const wxString &s , wxColour &data )
 {
        // copied from VS xrc
@@ -51,19 +49,15 @@ template<> void wxStringReadValue(const wxString &s , wxColour &data )
 
 template<> void wxStringWriteValue(wxString &s , const wxColour &data )
 {
-       s = wxString::Format("#%2X%2X%2X", data.Red() , data.Green() , data.Blue() ) ;
+       s = wxString::Format("#%02X%02X%02X", data.Red() , data.Green() , data.Blue() ) ;
 }
 
-WX_CUSTOM_TYPE_INFO(wxColour)
-
-*/
-
-IMPLEMENT_DYNAMIC_CLASS_WITH_COPY_XTI( wxColour , wxObject , "wx/colour.h" ) 
+IMPLEMENT_DYNAMIC_CLASS_WITH_COPY_AND_STREAMERS_XTI( wxColour , wxObject , "wx/colour.h" ,  &wxToStringConverter<wxColour> , &wxFromStringConverter<wxColour>) 
 
 WX_BEGIN_PROPERTIES_TABLE(wxColour)
-       WX_READONLY_PROPERTY( Red, unsigned char , Red , 0 , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
-       WX_READONLY_PROPERTY( Green, unsigned char  , Green , 0 , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) 
-       WX_READONLY_PROPERTY( Blue, unsigned char , Blue , 0 , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+       WX_READONLY_PROPERTY( Red, unsigned char , Red ,  , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+       WX_READONLY_PROPERTY( Green, unsigned char  , Green ,  , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) 
+       WX_READONLY_PROPERTY( Blue, unsigned char , Blue ,  , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
 WX_END_PROPERTIES_TABLE()
 
 WX_CONSTRUCTOR_3( wxColour , unsigned char , Red , unsigned char , Green , unsigned char , Blue )  
index 90ba4b843e3cb1b7432fa41d5d367bc2fc45fd79..438db56ff0e83b1cf8a90b470c651052750fa547 100644 (file)
@@ -131,9 +131,10 @@ WX_END_FLAGS( wxFrameStyle )
 IMPLEMENT_DYNAMIC_CLASS_XTI(wxFrame, wxTopLevelWindow,"wx/frame.h")
 
 WX_BEGIN_PROPERTIES_TABLE(wxFrame)
-       WX_PROPERTY( Title,wxString, SetTitle, GetTitle, wxEmptyString , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+       WX_PROPERTY( Title,wxString, SetTitle, GetTitle, wxString() , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
     WX_PROPERTY_FLAGS( WindowStyle , wxFrameStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
-/*
+    WX_PROPERTY( MenuBar , wxMenuBar * , SetMenuBar , GetMenuBar , , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+    /*
        TODO PROPERTIES
 
                style (wxDEFAULT_FRAME_STYLE)
index 6f1343b30cbaa2665a936ed86b2a0f12867ec375..ece5953e2381a872f58d80f04a61a17fb3054b54 100644 (file)
@@ -112,25 +112,99 @@ UINT GetMenuState(HMENU hMenu, UINT id, UINT flags)
 // implementation
 // ============================================================================
 
+#include <wx/listimpl.cpp>
+
+WX_DEFINE_LIST( wxMenuInfoList ) ;
+
+#if wxUSE_EXTENDED_RTTI
+
+WX_DEFINE_FLAGS( wxMenuStyle )
+
+WX_BEGIN_FLAGS( wxMenuStyle )
+    WX_FLAGS_MEMBER(wxMENU_TEAROFF)
+WX_END_FLAGS( wxMenuStyle )
+
+IMPLEMENT_DYNAMIC_CLASS_XTI(wxMenu, wxEvtHandler,"wx/menu.h")
+
+WX_COLLECTION_TYPE_INFO( wxMenuItem * , wxMenuItemList ) ;
+
+template<> void wxCollectionToVariantArray( wxMenuItemList const &theList, wxxVariantArray &value)
+{
+    wxListCollectionToVariantArray<wxMenuItemList::compatibility_iterator>( theList , value ) ;
+}
+
+WX_BEGIN_PROPERTIES_TABLE(wxMenu)
+       WX_DELEGATE( OnSelect , wxEVT_COMMAND_MENU_SELECTED , wxCommandEvent)
+    WX_PROPERTY( Title, wxString , SetTitle, GetTitle, wxString(), 0 /*flags*/ , wxT("Helpstring") , wxT("group") )
+    WX_READONLY_PROPERTY_FLAGS( MenuStyle , wxMenuStyle , long , GetStyle , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
+    WX_PROPERTY_COLLECTION( MenuItems , wxMenuItemList , wxMenuItem* , Append , GetMenuItems , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+WX_END_PROPERTIES_TABLE()
+
+WX_BEGIN_HANDLERS_TABLE(wxMenu)
+WX_END_HANDLERS_TABLE()
+
+WX_DIRECT_CONSTRUCTOR_2( wxMenu , wxString , Title , long , MenuStyle  )
+
+WX_DEFINE_FLAGS( wxMenuBarStyle )
+
+WX_BEGIN_FLAGS( wxMenuBarStyle )
+    WX_FLAGS_MEMBER(wxMB_DOCKABLE)
+WX_END_FLAGS( wxMenuBarStyle )
+
+// the negative id would lead the window (its superclass !) to vetoe streaming out otherwise
+bool wxMenuBarStreamingCallback( const wxObject *object, wxWriter * , wxPersister * , wxxVariantArray & )
+{
+    return true ;
+}
+
+IMPLEMENT_DYNAMIC_CLASS_XTI_CALLBACK(wxMenuBar, wxWindow ,"wx/menu.h",wxMenuBarStreamingCallback)
+
+IMPLEMENT_DYNAMIC_CLASS_XTI(wxMenuInfo, wxObject , "wx/menu.h" )
+
+WX_BEGIN_PROPERTIES_TABLE(wxMenuInfo)
+    WX_READONLY_PROPERTY( Menu , wxMenu* , GetMenu , , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+    WX_READONLY_PROPERTY( Title , wxString , GetTitle , wxString() , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+WX_END_PROPERTIES_TABLE()
+
+WX_BEGIN_HANDLERS_TABLE(wxMenuInfo)
+WX_END_HANDLERS_TABLE()
+
+WX_CONSTRUCTOR_2( wxMenuInfo , wxMenu* , Menu , wxString , Title ) 
+
+WX_COLLECTION_TYPE_INFO( wxMenuInfo * , wxMenuInfoList ) ;
+
+template<> void wxCollectionToVariantArray( wxMenuInfoList const &theList, wxxVariantArray &value)
+{
+    wxListCollectionToVariantArray<wxMenuInfoList::compatibility_iterator>( theList , value ) ;
+}
+
+WX_BEGIN_PROPERTIES_TABLE(wxMenuBar)
+    WX_PROPERTY_COLLECTION( MenuInfos , wxMenuInfoList , wxMenuInfo* , Append , GetMenuInfos , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+WX_END_PROPERTIES_TABLE()
+
+WX_BEGIN_HANDLERS_TABLE(wxMenuBar)
+WX_END_HANDLERS_TABLE()
+
+WX_CONSTRUCTOR_DUMMY( wxMenuBar )
+
+#else
 IMPLEMENT_DYNAMIC_CLASS(wxMenu, wxEvtHandler)
 IMPLEMENT_DYNAMIC_CLASS(wxMenuBar, wxWindow)
+IMPLEMENT_DYNAMIC_CLASS(wxMenuInfo, wxObject)
+#endif
 
-/*
-       TODO PROPERTIES
-               wxMenu
-                       label
-                       help
-
-               separator
-               break
-               label
-               accel
-               radio
-               checkable
-               help
-               bitmap
-               wxMenuItem
-*/
+const wxMenuInfoList& wxMenuBar::GetMenuInfos() const
+{
+    wxMenuInfoList* list = const_cast< wxMenuInfoList* >( &m_menuInfos ) ;
+    WX_CLEAR_LIST( wxMenuInfoList , *list ) ;
+    for( size_t i = 0 ; i < GetMenuCount() ; ++i )
+    {
+        wxMenuInfo* info = new wxMenuInfo() ;
+        info->Create( const_cast<wxMenuBar*>(this)->GetMenu(i) , GetLabelTop(i) ) ;
+        list->Append( info ) ;
+    }
+    return m_menuInfos ;
+}
 
 // ---------------------------------------------------------------------------
 // wxMenu construction, adding and removing menu items
index 09ef0d039fc89c8875348316c246a415c484043c..acd80a9dc27e847bed14bfebcc612039c1b53e7f 100644 (file)
@@ -77,7 +77,48 @@ UINT GetMenuState(HMENU hMenu, UINT id, UINT flags) ;
 // dynamic classes implementation
 // ----------------------------------------------------------------------------
 
+#if wxUSE_EXTENDED_RTTI
+
+bool wxMenuItemStreamingCallback( const wxObject *object, wxWriter * , wxPersister * , wxxVariantArray & )
+{
+    const wxMenuItem * mitem = dynamic_cast<const wxMenuItem*>(object) ;
+    if ( mitem->GetMenu() && !mitem->GetMenu()->GetTitle().IsEmpty() )
+    {
+        // we don't stream out the first two items for menus with a title, they will be reconstructed
+        if ( mitem->GetMenu()->FindItemByPosition(0) == mitem || mitem->GetMenu()->FindItemByPosition(1) == mitem )
+            return false ;
+    }
+    return true ;
+}
+
+WX_BEGIN_ENUM( wxItemKind )
+    WX_ENUM_MEMBER( wxITEM_SEPARATOR ) 
+    WX_ENUM_MEMBER( wxITEM_NORMAL ) 
+    WX_ENUM_MEMBER( wxITEM_CHECK ) 
+    WX_ENUM_MEMBER( wxITEM_RADIO ) 
+WX_END_ENUM( wxItemKind )
+
+IMPLEMENT_DYNAMIC_CLASS_XTI_CALLBACK(wxMenuItem, wxObject,"wx/menuitem.h",wxMenuItemStreamingCallback)
+
+WX_BEGIN_PROPERTIES_TABLE(wxMenuItem)
+       WX_PROPERTY( Parent,wxMenu*, SetMenu, GetMenu, , 0 /*flags*/ , wxT("Helpstring") , wxT("group") )
+       WX_PROPERTY( Id,int, SetId, GetId, , 0 /*flags*/ , wxT("Helpstring") , wxT("group") )
+    WX_PROPERTY( Text, wxString , SetText, GetText, wxString(), 0 /*flags*/ , wxT("Helpstring") , wxT("group") )
+    WX_PROPERTY( Help, wxString , SetHelp, GetHelp, wxString(), 0 /*flags*/ , wxT("Helpstring") , wxT("group") )
+    WX_READONLY_PROPERTY( Kind, wxItemKind , GetKind , , 0 /*flags*/ , wxT("Helpstring") , wxT("group") )
+       WX_PROPERTY( SubMenu,wxMenu*, SetSubMenu, GetSubMenu, , 0 /*flags*/ , wxT("Helpstring") , wxT("group") )
+       WX_PROPERTY( Enabled , bool , Enable , IsEnabled , wxxVariant((bool)true) , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+       WX_PROPERTY( Checked , bool , Check , IsChecked , wxxVariant((bool)false) , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+       WX_PROPERTY( Checkable , bool , SetCheckable , IsCheckable , wxxVariant((bool)false) , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+WX_END_PROPERTIES_TABLE()
+
+WX_BEGIN_HANDLERS_TABLE(wxMenuItem)
+WX_END_HANDLERS_TABLE()
+
+WX_DIRECT_CONSTRUCTOR_6( wxMenuItem , wxMenu* , Parent , int , Id , wxString , Text , wxString , Help , wxItemKind , Kind , wxMenu* , SubMenu  )
+#else
 IMPLEMENT_DYNAMIC_CLASS(wxMenuItem, wxObject)
+#endif
 
 // ----------------------------------------------------------------------------
 // wxMenuItem
@@ -155,6 +196,11 @@ int wxMenuItem::GetRealId() const
 
 bool wxMenuItem::IsChecked() const
 {
+    // fix that RTTI is always getting the correct state (separators cannot be checked, but the call below 
+    // returns true
+    if ( GetId() == wxID_SEPARATOR )
+        return false ;
+
     int flag = ::GetMenuState(GetHMenuOf(m_parentMenu), GetId(), MF_BYCOMMAND);
 
     return (flag & MF_CHECKED) != 0;
index 7e4f7772c682a6771100af79d9573b2877526747..b98ac069e8fadd5dae21139a7a4ffd3ca5308001 100644 (file)
@@ -186,7 +186,7 @@ WX_CONSTRUCTOR_5( wxNotebook , wxWindow* , Parent , wxWindowID , Id , wxPoint ,
 
 WX_BEGIN_PROPERTIES_TABLE(wxNotebookPageInfo)
     WX_READONLY_PROPERTY( Page , wxNotebookPage* , GetPage , , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
-    WX_READONLY_PROPERTY( Text , wxString , GetText , wxEmptyString , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+    WX_READONLY_PROPERTY( Text , wxString , GetText , wxString() , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
     WX_READONLY_PROPERTY( Selected , bool , GetSelected , false, 0 /*flags*/ , wxT("Helpstring") , wxT("group") )
     WX_READONLY_PROPERTY( ImageId , int , GetImageId , -1 , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
 WX_END_PROPERTIES_TABLE()
index 006dd835ef6d8bb370803162f8971487571afb14..6ea82634aa74e29452dfb4115eeefb137669294e 100644 (file)
@@ -88,7 +88,7 @@ IMPLEMENT_DYNAMIC_CLASS_XTI(wxRadioButton, wxControl,"wx/radiobut.h")
 WX_BEGIN_PROPERTIES_TABLE(wxRadioButton)
        WX_DELEGATE( OnClick , wxEVT_COMMAND_RADIOBUTTON_SELECTED , wxCommandEvent )
        WX_PROPERTY( Font , wxFont , SetFont , GetFont  , , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
-       WX_PROPERTY( Label,wxString, SetLabel, GetLabel, wxEmptyString, 0 /*flags*/ , wxT("Helpstring") , wxT("group") )
+       WX_PROPERTY( Label,wxString, SetLabel, GetLabel, wxString(), 0 /*flags*/ , wxT("Helpstring") , wxT("group") )
        WX_PROPERTY( Value ,bool, SetValue, GetValue,, 0 /*flags*/ , wxT("Helpstring") , wxT("group") )
     WX_PROPERTY_FLAGS( WindowStyle , wxRadioButtonStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
 WX_END_PROPERTIES_TABLE()
index 2e4aa9b8cdb3732b97a425afd4016d0107e7f626..e5b120c6b68eb46fe11d829cbb6b8045910a972d 100644 (file)
@@ -101,10 +101,6 @@ WX_BEGIN_PROPERTIES_TABLE(wxSpinButton)
        WX_PROPERTY( Min , int , SetMin, GetMin, 0 , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
        WX_PROPERTY( Max , int , SetMax, GetMax, 0 , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
     WX_PROPERTY_FLAGS( WindowStyle , wxSpinButtonStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
-/*
-       TODO PROPERTIES
-               style wxSP_VERTICAL | wxSP_ARROW_KEYS
-*/
 WX_END_PROPERTIES_TABLE()
 
 WX_BEGIN_HANDLERS_TABLE(wxSpinButton)
index 261d5366ace39160c215d901e7831a06ab48e265..d17de195f8c8021b45cfae42462dc87ead87d8bf 100644 (file)
@@ -79,7 +79,7 @@ WX_END_FLAGS( wxStaticBoxStyle )
 IMPLEMENT_DYNAMIC_CLASS_XTI(wxStaticBox, wxControl,"wx/statbox.h")
 
 WX_BEGIN_PROPERTIES_TABLE(wxStaticBox)
-       WX_PROPERTY( Label,wxString, SetLabel, GetLabel, wxEmptyString , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+       WX_PROPERTY( Label,wxString, SetLabel, GetLabel, wxString() , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
     WX_PROPERTY_FLAGS( WindowStyle , wxStaticBoxStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
 /*
        TODO PROPERTIES :
index 57bdddeb2fbac498ddf7de29ea1c19e99a4ce462..a6d3d927868e0bda46c68a7060c0548c538766d2 100644 (file)
@@ -73,7 +73,7 @@ WX_END_FLAGS( wxStaticTextStyle )
 IMPLEMENT_DYNAMIC_CLASS_XTI(wxStaticText, wxControl,"wx/stattext.h")
 
 WX_BEGIN_PROPERTIES_TABLE(wxStaticText)
-       WX_PROPERTY( Label,wxString, SetLabel, GetLabel, wxEmptyString , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+       WX_PROPERTY( Label,wxString, SetLabel, GetLabel, wxString() , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
     WX_PROPERTY_FLAGS( WindowStyle , wxStaticTextStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
 WX_END_PROPERTIES_TABLE()
 
index dc40f52b817a63cd50cfcdbf73284578f81e14d5..018c197c8dc4ea25384e0f5f43c86996cd9a68d2 100644 (file)
@@ -170,7 +170,7 @@ IMPLEMENT_DYNAMIC_CLASS_XTI(wxTextCtrl, wxControl,"wx/textctrl.h")
 
 WX_BEGIN_PROPERTIES_TABLE(wxTextCtrl)
        WX_PROPERTY( Font , wxFont , SetFont , GetFont  ,, 0 /*flags*/ , wxT("Helpstring") , wxT("group") )
-       WX_PROPERTY( Value , wxString , SetValue, GetValue, wxEmptyString , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+       WX_PROPERTY( Value , wxString , SetValue, GetValue, wxString() , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
     WX_PROPERTY_FLAGS( WindowStyle , wxTextCtrlStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
 WX_END_PROPERTIES_TABLE()