]> git.saurik.com Git - wxWidgets.git/commitdiff
adding standard menu items for cocoa, adding translation macro to menulabels, fixes...
authorStefan Csomor <csomor@advancedconcepts.ch>
Tue, 30 Nov 2010 09:59:11 +0000 (09:59 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Tue, 30 Nov 2010 09:59:11 +0000 (09:59 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66300 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/defs.h
include/wx/osx/core/private.h
src/osx/cocoa/menuitem.mm
src/osx/menu_osx.cpp

index f6ca2542d2052a1cc34f8c01a5b9eb9c9e86d767..cd23f910209769fe1b7737b57b8ec2cfed401199 100644 (file)
@@ -2117,6 +2117,13 @@ enum wxStandardID
     wxID_MDI_WINDOW_NEXT,
     wxID_MDI_WINDOW_LAST = wxID_MDI_WINDOW_NEXT,
 
+    /* OS X system menu ids */
+    wxID_OSX_MENU_FIRST = 5250,
+    wxID_OSX_HIDE = wxID_OSX_MENU_FIRST,
+    wxID_OSX_HIDEOTHERS,
+    wxID_OSX_SHOWALL,
+    wxID_OSX_MENU_LAST = wxID_OSX_SHOWALL,
+    
     /*  IDs used by generic file dialog (13 consecutive starting from this value) */
     wxID_FILEDLGG = 5900,
 
index 0e0ff542aea8d73bed96072ab15d5e14c5f7e33d..ba2d659c20f09eb97a247bc7231474623c086511 100644 (file)
@@ -149,7 +149,9 @@ public :
                        const wxString& strHelp,
                        wxItemKind kind,
                        wxMenu *pSubMenu );
-
+    
+    // handle OS specific menu items if they weren't handled during normal processing
+    virtual bool DoDefault() {} ;
 protected :
     wxMenuItem* m_peer;
 
index 60b54eae14165e7a880555e54ab3b36f245dc233..c253f75672c9d77b55d47cfe79e85b37bd46491f 100644 (file)
     wxUnusedVar(sender);
     if ( impl )
     {
-        impl->GetWXPeer()->GetMenu()->HandleCommandProcess(impl->GetWXPeer());
+        wxMenuItem* menuitem = impl->GetWXPeer();
+        if ( menuitem->GetMenu()->HandleCommandProcess(menuitem) == false )
+        {
+        }
      }
 }
 
@@ -212,6 +215,8 @@ public :
             wxMacCocoaMenuItemSetAccelerator( m_osxMenuItem, entry );
 
     }
+    
+    bool DoDefault();
 
     void * GetHMenuItem() { return m_osxMenuItem; }
 
@@ -226,6 +231,29 @@ wxMenuItemCocoaImpl::~wxMenuItemCocoaImpl()
     [m_osxMenuItem release];
 }
 
+bool wxMenuItemCocoaImpl::DoDefault()
+{
+    bool handled=false;
+    int menuid = m_peer->GetId();
+    
+    NSApplication *theNSApplication = [NSApplication sharedApplication];
+    if (menuid == wxID_OSX_HIDE)
+    {
+        [theNSApplication hide:nil];
+        handled=true;
+    }
+    else if (menuid == wxID_OSX_HIDEOTHERS)
+    {
+        [theNSApplication hideOtherApplications:nil];
+        handled=true;
+    }
+    else if (menuid == wxID_OSX_SHOWALL)
+    {
+        [theNSApplication unhideAllApplications:nil];
+        handled=true;
+    }
+    return handled;
+}
 
 wxMenuItemImpl* wxMenuItemImpl::Create( wxMenuItem* peer, wxMenu *pParentMenu,
                        int WXUNUSED(id),
index c10dba486ec64294c524a93c0ebc11e8d4f87cd9..9c0d904ae8d5f39815737da4d899bc7b5297a1f0 100644 (file)
@@ -440,6 +440,12 @@ bool wxMenu::HandleCommandProcess( wxMenuItem* item, wxWindow* senderWindow )
                 processed = true ;
         }
     }
+
+    if(!processed && item)
+    {
+        processed = item->GetPeer()->DoDefault();  
+    }
+    
     return processed;
 }
 
@@ -521,7 +527,7 @@ void wxMenuBar::Init()
     // recommended, sometimes these items really don't make sense.
     if ( wxApp::s_macAboutMenuItemId != wxID_NONE )
     {
-        wxString aboutLabel("About");
+        wxString aboutLabel(_("About"));
         if ( wxTheApp )
             aboutLabel << ' ' << wxTheApp->GetAppDisplayName();
         else
@@ -534,12 +540,26 @@ void wxMenuBar::Init()
     if ( wxApp::s_macPreferencesMenuItemId != wxID_NONE )
     {
         m_appleMenu->Append( wxApp::s_macPreferencesMenuItemId,
-                             "Preferences...\tCtrl+," );
+                             _("Preferences...") + "\tCtrl+," );
         m_appleMenu->AppendSeparator();
     }
 
+    // standard menu items, handled in wxMenu::HandleCommandProcess(), see above:
+    wxString hideLabel(_("Hide"));
+    if ( wxTheApp )
+        hideLabel << ' ' << wxTheApp->GetAppDisplayName();
+    hideLabel << "\tCtrl+H";
+    m_appleMenu->Append( wxID_OSX_HIDE, hideLabel );    
+    m_appleMenu->Append( wxID_OSX_HIDEOTHERS, _("Hide Others")+"\tAlt+Ctrl+H" );    
+    m_appleMenu->Append( wxID_OSX_SHOWALL, _("Show All") );    
+    m_appleMenu->AppendSeparator();
+    
     // Do always add "Quit" item unconditionally however, it can't be disabled.
-    m_appleMenu->Append( wxApp::s_macExitMenuItemId, "Quit\tCtrl+Q" );
+    wxString quitLabel(_("Quit"));
+    if ( wxTheApp )
+        quitLabel << ' ' << wxTheApp->GetAppDisplayName();
+    quitLabel << "\tCtrl+Q";
+    m_appleMenu->Append( wxApp::s_macExitMenuItemId, quitLabel );
 #endif // !wxOSX_USE_CARBON
 
     m_rootMenu->AppendSubMenu(m_appleMenu, "\x14") ;