1 /////////////////////////////////////////////////////////////////////////////
 
   2 // Name:        cocoa/statbox.mm
 
   3 // Purpose:     wxStaticBox
 
   4 // Author:      David Elliott
 
   8 // Copyright:   (c) 2003 David Elliott
 
   9 // Licence:     wxWindows license
 
  10 /////////////////////////////////////////////////////////////////////////////
 
  13 #include "wx/statbox.h"
 
  15 #include "wx/cocoa/autorelease.h"
 
  17 #import <AppKit/NSBox.h>
 
  18 #import <Foundation/NSString.h>
 
  20 IMPLEMENT_DYNAMIC_CLASS(wxStaticBox, wxControl)
 
  21 BEGIN_EVENT_TABLE(wxStaticBox, wxStaticBoxBase)
 
  23 WX_IMPLEMENT_COCOA_OWNER(wxStaticBox,NSBox,NSView,NSView)
 
  25 bool wxStaticBox::Create(wxWindow *parent, wxWindowID winid,
 
  26            const wxString& title,
 
  29            long style, const wxValidator& validator,
 
  32     wxAutoNSAutoreleasePool pool;
 
  33     if(!CreateControl(parent,winid,pos,size,style,validator,name))
 
  36     SetNSBox([[NSBox alloc] initWithFrame:NSMakeRect(0,0,30,30)]);
 
  37     [GetNSBox() setTitle:[NSString stringWithCString:title.c_str()]];
 
  39         m_parent->CocoaAddChild(this);
 
  43 wxStaticBox::~wxStaticBox()
 
  45     DisassociateNSBox(m_cocoaNSView);
 
  48 void wxStaticBox::GetBordersForSizer(int *borderTop, int *borderOther) const
 
  50     NSRect contentRect = [[GetNSBox() contentView] frame];
 
  51     NSRect thisRect = [m_cocoaNSView frame];
 
  52     *borderTop = (int)(thisRect.size.height - (contentRect.origin.y+contentRect.size.height));
 
  53     *borderOther = (int)(thisRect.size.width - (contentRect.origin.x+contentRect.size.width));
 
  54     int nextBorder = (int)contentRect.origin.y;
 
  55     if(nextBorder > *borderOther)
 
  56         *borderOther = nextBorder;
 
  57     nextBorder = (int)contentRect.origin.x;
 
  58     if(nextBorder > *borderOther)
 
  59         *borderOther = nextBorder;