]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/cocoa/statbox.mm
safe degradation
[wxWidgets.git] / src / osx / cocoa / statbox.mm
index 3eca187518acd3745df68faac2750ff6fc2d155c..aad08e0f76e64a7bf06ea20ef08b665467615ea9 100644 (file)
 
 @implementation wxNSBox
 
 
 @implementation wxNSBox
 
-- (void)setImplementation: (wxWidgetImpl *) theImplementation
++ (void)initialize
 {
 {
-    impl = theImplementation;
+    static BOOL initialized = NO;
+    if (!initialized)
+    {
+        initialized = YES;
+        wxOSXCocoaClassAddWXMethods( self );
+    }
 }
 
 }
 
-- (wxWidgetImpl*) implementation
-{
-    return impl;
-}
+@end
 
 
-- (BOOL) isFlipped
+namespace
 {
 {
-    return NO;
-}
+    class wxStaticBoxCocoaImpl : public wxWidgetCocoaImpl
+    {
+    public:
+        wxStaticBoxCocoaImpl(wxWindowMac *wxpeer, wxNSBox *v)
+        : wxWidgetCocoaImpl(wxpeer, v)
+        {
+        }
+
+        virtual void SetLabel( const wxString& title, wxFontEncoding encoding )
+        {
+            if (title.empty())
+                [GetNSBox() setTitlePosition:NSNoTitle];
+            else
+                [GetNSBox() setTitlePosition:NSAtTop];
+
+            wxWidgetCocoaImpl::SetLabel(title, encoding);
+        }
+
+    private:
+        NSBox *GetNSBox() const
+        {
+            wxASSERT( [m_osxView isKindOfClass:[NSBox class]] );
+
+            return static_cast<NSBox*>(m_osxView);
+        }
+    };
+} // anonymous namespace
 
 
-@end
 
 
-wxWidgetImplType* wxWidgetImpl::CreateGroupBox( wxWindowMac* wxpeer, 
-                                    wxWindowMac* parent, 
-                                    wxWindowID id, 
-                                    const wxString& label,
-                                    const wxPoint& pos, 
+wxWidgetImplType* wxWidgetImpl::CreateGroupBox( wxWindowMac* wxpeer,
+                                    wxWindowMac* WXUNUSED(parent),
+                                    wxWindowID WXUNUSED(id),
+                                    const wxString& WXUNUSED(label),
+                                    const wxPoint& pos,
                                     const wxSize& size,
                                     const wxSize& size,
-                                    long style, 
-                                    long extraStyle)
+                                    long WXUNUSED(style),
+                                    long WXUNUSED(extraStyle))
 {
     NSRect r = wxOSXGetFrameForControl( wxpeer, pos , size ) ;
     wxNSBox* v = [[wxNSBox alloc] initWithFrame:r];
 {
     NSRect r = wxOSXGetFrameForControl( wxpeer, pos , size ) ;
     wxNSBox* v = [[wxNSBox alloc] initWithFrame:r];
-    wxWidgetCocoaImpl* c = new wxWidgetCocoaImpl( wxpeer, v );
-    [v setImplementation:c];
+    wxStaticBoxCocoaImpl* c = new wxStaticBoxCocoaImpl( wxpeer, v );
+    c->SetFlipped(false);
     return c;
 }
 
     return c;
 }