]> git.saurik.com Git - wxWidgets.git/commitdiff
added missing files
authorStefan Csomor <csomor@advancedconcepts.ch>
Wed, 22 Jul 2009 15:32:28 +0000 (15:32 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Wed, 22 Jul 2009 15:32:28 +0000 (15:32 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61494 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/osx/iphone/button.mm [new file with mode: 0644]
src/osx/iphone/dialog.mm [new file with mode: 0644]
src/osx/iphone/msgdlg.mm [new file with mode: 0644]

diff --git a/src/osx/iphone/button.mm b/src/osx/iphone/button.mm
new file mode 100644 (file)
index 0000000..71a362d
--- /dev/null
@@ -0,0 +1,177 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        src/osx/iphone/button.mm
+// Purpose:     wxButton
+// Author:      Stefan Csomor
+// Modified by:
+// Created:     1998-01-01
+// RCS-ID:      $Id: button.cpp 54845 2008-07-30 14:52:41Z SC $
+// Copyright:   (c) Stefan Csomor
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#include "wx/wxprec.h"
+
+#include "wx/button.h"
+
+#ifndef WX_PRECOMP
+    #include "wx/panel.h"
+    #include "wx/toplevel.h"
+    #include "wx/dcclient.h"
+#endif
+
+#include "wx/stockitem.h"
+
+#include "wx/osx/private.h"
+
+wxSize wxButton::DoGetBestSize() const
+{
+    if ( GetId() == wxID_HELP )
+        return wxSize( 18 , 18 ) ;
+
+    wxSize sz = GetDefaultSize() ;
+
+    wxRect r ;
+        
+    m_peer->GetBestRect(&r);
+
+    if ( r.GetWidth() == 0 && r.GetHeight() == 0 )
+    {
+    }
+    sz.x = r.GetWidth();
+    sz.y = r.GetHeight();
+
+    int wBtn = 72;
+    
+    if ((wBtn > sz.x) || ( GetWindowStyle() & wxBU_EXACTFIT))
+        sz.x = wBtn;
+
+    return sz ;
+}
+
+wxSize wxButton::GetDefaultSize()
+{
+    int wBtn = 72 ;
+    int hBtn = 35 ;
+
+    return wxSize(wBtn, hBtn);
+}
+
+@implementation wxUIButton
+
++ (void)initialize
+{
+    static BOOL initialized = NO;
+    if (!initialized) 
+    {
+        initialized = YES;
+        wxOSXIPhoneClassAddWXMethods( self );
+    }
+}
+
+- (int) intValue
+{
+    return 0;
+}
+
+- (void) setIntValue: (int) v
+{
+}
+
+@end
+
+
+wxWidgetImplType* wxWidgetImpl::CreateButton( wxWindowMac* wxpeer, 
+                                    wxWindowMac* WXUNUSED(parent), 
+                                    wxWindowID id, 
+                                    const wxString& WXUNUSED(label),
+                                    const wxPoint& pos, 
+                                    const wxSize& size,
+                                    long WXUNUSED(style), 
+                                    long WXUNUSED(extraStyle)) 
+{
+    CGRect r = wxOSXGetFrameForControl( wxpeer, pos , size ) ;
+    UIButtonType buttonType = UIButtonTypeRoundedRect;
+
+    if ( id == wxID_HELP )
+    {
+        buttonType = UIButtonTypeInfoDark;
+    }
+
+    UIButton* v = [[UIButton buttonWithType:buttonType] retain];
+    v.frame = r;
+    wxWidgetIPhoneImpl* c = new wxWidgetIPhoneImpl( wxpeer, v );
+    return c;
+/*
+    OSStatus err;
+    Rect bounds = wxMacGetBoundsForControl( wxpeer , pos , size ) ;
+    wxMacControl* peer = new wxMacControl(wxpeer) ;
+    if ( id == wxID_HELP )
+    {
+        ControlButtonContentInfo info ;
+        info.contentType = kControlContentIconRef ;
+        GetIconRef(kOnSystemDisk, kSystemIconsCreator, kHelpIcon, &info.u.iconRef);
+        err = CreateRoundButtonControl(
+            MAC_WXHWND(parent->MacGetTopLevelWindowRef()),
+            &bounds, kControlRoundButtonNormalSize,
+            &info, peer->GetControlRefAddr() );
+    }
+    else if ( label.Find('\n' ) == wxNOT_FOUND && label.Find('\r' ) == wxNOT_FOUND)
+    {
+        // Button height is static in Mac, can't be changed, so we need to force it here
+        int maxHeight;
+        switch (wxpeer->GetWindowVariant() ) 
+        {
+            case wxWINDOW_VARIANT_NORMAL:
+            case wxWINDOW_VARIANT_LARGE:
+                maxHeight = 20 ;
+                break;
+            case wxWINDOW_VARIANT_SMALL:
+                maxHeight = 17;
+            case wxWINDOW_VARIANT_MINI:
+                maxHeight = 15;
+            default:
+                break;
+        }
+        bounds.bottom = bounds.top + maxHeight ;
+        wxpeer->SetMaxSize( wxSize( wxpeer->GetMaxWidth() , maxHeight ));
+        err = CreatePushButtonControl(
+            MAC_WXHWND(parent->MacGetTopLevelWindowRef()),
+            &bounds, CFSTR(""), peer->GetControlRefAddr() );
+    }
+    else
+    {
+        ControlButtonContentInfo info ;
+        info.contentType = kControlNoContent ;
+        err = CreateBevelButtonControl(
+            MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds, CFSTR(""),
+            kControlBevelButtonLargeBevel, kControlBehaviorPushbutton,
+            &info, 0, 0, 0, peer->GetControlRefAddr() );
+    }
+    verify_noerr( err );
+    return peer;
+    */
+}
+
+void wxWidgetIPhoneImpl::SetDefaultButton( bool isDefault )
+{ 
+}
+
+void wxWidgetIPhoneImpl::PerformClick() 
+{
+}
+
+wxWidgetImplType* wxWidgetImpl::CreateDisclosureTriangle( wxWindowMac* wxpeer, 
+                                    wxWindowMac* WXUNUSED(parent), 
+                                    wxWindowID WXUNUSED(id), 
+                                    const wxString& label,
+                                    const wxPoint& pos, 
+                                    const wxSize& size,
+                                    long WXUNUSED(style), 
+                                    long WXUNUSED(extraStyle)) 
+{
+    CGRect r = wxOSXGetFrameForControl( wxpeer, pos , size ) ;
+    wxUIButton* v = [[wxUIButton alloc] initWithFrame:r];
+    [v setTitle:wxCFStringRef( label).AsNSString() forState:UIControlStateNormal];
+    wxWidgetIPhoneImpl* c = new wxWidgetIPhoneImpl( wxpeer, v );
+    return c;
+}
diff --git a/src/osx/iphone/dialog.mm b/src/osx/iphone/dialog.mm
new file mode 100644 (file)
index 0000000..bab436b
--- /dev/null
@@ -0,0 +1,54 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        src/osx/cocoa/dialog.cpp
+// Purpose:     wxDialog class
+// Author:      Stefan Csomor
+// Modified by:
+// Created:     1998-01-01
+// RCS-ID:      $Id: dialog.cpp 54820 2008-07-29 20:04:11Z SC $
+// Copyright:   (c) Stefan Csomor
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#include "wx/wxprec.h"
+
+#include "wx/dialog.h"
+
+#ifndef WX_PRECOMP
+    #include "wx/app.h"
+    #include "wx/utils.h"
+    #include "wx/frame.h"
+    #include "wx/settings.h"
+#endif // WX_PRECOMP
+
+#include "wx/osx/private.h"
+
+extern wxList wxModalDialogs;
+
+void wxDialog::DoShowModal()
+{
+    wxCHECK_RET( !IsModal(), wxT("DoShowModal() called twice") );
+
+    wxModalDialogs.Append(this);
+
+    SetFocus() ;
+/*
+    WindowGroupRef windowGroup;
+    WindowGroupRef formerParentGroup;
+    bool resetGroupParent = false;
+
+    if ( GetParent() == NULL )
+    {
+        windowGroup = GetWindowGroup(windowRef) ;
+        formerParentGroup = GetWindowGroupParent( windowGroup );
+        SetWindowGroupParent( windowGroup, GetWindowGroupOfClass( kMovableModalWindowClass ) );
+        resetGroupParent = true;
+    }
+*/
+
+/*
+    if ( resetGroupParent )
+    {
+        SetWindowGroupParent( windowGroup , formerParentGroup );
+    }
+*/
+}
diff --git a/src/osx/iphone/msgdlg.mm b/src/osx/iphone/msgdlg.mm
new file mode 100644 (file)
index 0000000..4567f10
--- /dev/null
@@ -0,0 +1,138 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        src/osx/iphone/msgdlg.mm
+// Purpose:     wxMessageDialog
+// Author:      Stefan Csomor
+// Modified by:
+// Created:     04/01/98
+// RCS-ID:      $Id: msgdlg.cpp 54129 2008-06-11 19:30:52Z SC $
+// Copyright:   (c) Stefan Csomor
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#include "wx/wxprec.h"
+
+#include "wx/msgdlg.h"
+
+#ifndef WX_PRECOMP
+    #include "wx/intl.h"
+    #include "wx/app.h"
+#endif
+
+#include "wx/thread.h"
+#include "wx/osx/private.h"
+
+
+IMPLEMENT_CLASS(wxMessageDialog, wxDialog)
+
+
+wxMessageDialog::wxMessageDialog(wxWindow *parent,
+                                 const wxString& message,
+                                 const wxString& caption,
+                                 long style,
+                                 const wxPoint& WXUNUSED(pos))
+               : wxMessageDialogWithCustomLabels(parent, message, caption, style)
+{
+}
+
+int wxMessageDialog::ShowModal()
+{
+    int resultbutton = wxID_CANCEL;
+
+    const long style = GetMessageDialogStyle();
+
+    // work out what to display
+    // if the extended text is empty then we use the caption as the title
+    // and the message as the text (for backwards compatibility)
+    // but if the extended message is not empty then we use the message as the title
+    // and the extended message as the text because that makes more sense
+
+    wxString msgtitle,msgtext;
+    if(m_extendedMessage.IsEmpty())
+    {
+        msgtitle = m_caption;
+        msgtext  = m_message;
+    }
+    else
+    {
+        msgtitle = m_message;
+        msgtext  = m_extendedMessage;
+    }
+    
+    wxCFStringRef cfNoString( GetNoLabel(), GetFont().GetEncoding() );
+    wxCFStringRef cfYesString( GetYesLabel(), GetFont().GetEncoding() );
+    wxCFStringRef cfOKString( GetOKLabel(), GetFont().GetEncoding() );
+    wxCFStringRef cfCancelString( GetCancelLabel(), GetFont().GetEncoding() );
+
+    wxCFStringRef cfTitle( msgtitle, GetFont().GetEncoding() );
+    wxCFStringRef cfText( msgtext, GetFont().GetEncoding() );
+
+    UIAlertView* alert = [[UIAlertView alloc] initWithTitle:cfTitle.AsNSString() message:cfText.AsNSString() delegate:nil cancelButtonTitle:nil otherButtonTitles:nil];
+    
+    int buttonId[3] = { 0, 0, 0 };
+    int buttonCount = 0;
+
+    if (style & wxYES_NO)
+    {
+        if ( style & wxNO_DEFAULT )
+        {
+            [alert addButtonWithTitle:cfNoString.AsNSString()];
+            buttonId[ buttonCount++ ] = wxID_NO;
+            [alert addButtonWithTitle:cfYesString.AsNSString()];
+            buttonId[ buttonCount++ ] = wxID_YES;
+        }
+        else
+        {
+            [alert addButtonWithTitle:cfYesString.AsNSString()];
+            buttonId[ buttonCount++ ] = wxID_YES;
+            [alert addButtonWithTitle:cfNoString.AsNSString()];
+            buttonId[ buttonCount++ ] = wxID_NO;
+        }
+
+        if (style & wxCANCEL)
+        {
+            [alert addButtonWithTitle:cfCancelString.AsNSString()];
+            buttonId[ buttonCount++ ] = wxID_CANCEL;
+        }
+    }
+    // the MSW implementation even shows an OK button if it is not specified, we'll do the same
+    else
+    {
+        [alert addButtonWithTitle:cfOKString.AsNSString()];
+        buttonId[ buttonCount++ ] = wxID_OK;
+        if (style & wxCANCEL)
+        {
+            [alert addButtonWithTitle:cfCancelString.AsNSString()];
+            buttonId[ buttonCount++ ] = wxID_CANCEL;
+        }
+    }
+
+
+    wxNonOwnedWindow* parentWindow = NULL;
+    int button = -1;
+            
+    if (GetParent()) 
+    {
+        parentWindow = dynamic_cast<wxNonOwnedWindow*>(wxGetTopLevelParent(GetParent()));
+    }
+
+/*
+    if (parentWindow)
+    {
+        NSWindow* nativeParent = parentWindow->GetWXWindow();
+        ModalDialogDelegate* sheetDelegate = [[ModalDialogDelegate alloc] init]; 
+        [alert beginSheetModalForWindow: nativeParent modalDelegate: sheetDelegate 
+            didEndSelector: @selector(sheetDidEnd:returnCode:contextInfo:) 
+            contextInfo: nil];
+        [sheetDelegate waitForSheetToFinish];
+        button = [sheetDelegate code];
+        [sheetDelegate release];
+    }
+    else
+*/
+    {
+        [alert show];
+    }
+    // [alert release];
+    
+    return wxID_CANCEL;
+}