]> git.saurik.com Git - wxWidgets.git/commitdiff
implementation for mac added
authorStefan Csomor <csomor@advancedconcepts.ch>
Sat, 21 Feb 2004 16:38:23 +0000 (16:38 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Sat, 21 Feb 2004 16:38:23 +0000 (16:38 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25899 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/mac/tglbtn.h [new file with mode: 0644]
include/wx/tglbtn.h
src/mac/carbon/tglbtn.cpp [new file with mode: 0644]
src/mac/tglbtn.cpp [new file with mode: 0644]

diff --git a/include/wx/mac/tglbtn.h b/include/wx/mac/tglbtn.h
new file mode 100644 (file)
index 0000000..5ab29aa
--- /dev/null
@@ -0,0 +1,59 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/mac/tglbtn.h
+// Purpose:     Declaration of the wxToggleButton class, which implements a
+//              toggle button under wxMac.
+// Author:      Stefan Csomor
+// Modified by:
+// Created:     08.02.01
+// RCS-ID:      $Id$
+// Copyright:   (c) 2004 Stefan Csomor
+// License:     wxWindows License
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_TOGGLEBUTTON_H_
+#define _WX_TOGGLEBUTTON_H_
+
+WXDLLEXPORT_DATA(extern const wxChar*) wxCheckBoxNameStr;
+
+// Checkbox item (single checkbox)
+class WXDLLEXPORT wxToggleButton : public wxControl
+{
+public:
+    wxToggleButton() {}
+    wxToggleButton(wxWindow *parent,
+                   wxWindowID id,
+                   const wxString& label,
+                   const wxPoint& pos = wxDefaultPosition,
+                   const wxSize& size = wxDefaultSize,
+                   long style = 0,
+                   const wxValidator& validator = wxDefaultValidator,
+                   const wxString& name = wxCheckBoxNameStr)
+    {
+        Create(parent, id, label, pos, size, style, validator, name);
+    }
+
+    bool Create(wxWindow *parent,
+                wxWindowID id,
+                const wxString& label,
+                const wxPoint& pos = wxDefaultPosition,
+                const wxSize& size = wxDefaultSize,
+                long style = 0,
+                const wxValidator& validator = wxDefaultValidator,
+                const wxString& name = wxCheckBoxNameStr);
+
+    virtual void SetValue(bool value);
+    virtual bool GetValue() const ;
+
+    virtual void MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool mouseStillDown ) ;
+
+    virtual void Command(wxCommandEvent& event);
+
+protected:
+    virtual wxSize DoGetBestSize() const;
+
+private:
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxToggleButton)
+};
+
+#endif // _WX_TOGGLEBUTTON_H_
+
index 9a8eebf2361422e2f7462187208ab5aab74d6c5a..a69f362286456ed423cde651b8cf180bb0f14282 100644 (file)
@@ -32,9 +32,9 @@ END_DECLARE_EVENT_TYPES()
     #include "wx/gtk/tglbtn.h"
 # elif defined(__WXMOTIF__)
     #include "wx/motif/tglbtn.h"
+#elif defined(__WXMAC__)
+    #include "wx/mac/tglbtn.h"
 /*
-# elif defined(__WXMAC__)
-#  include "wx/mac/tglbtn.h"
 # elif defined(__WXPM__)
 #  include "wx/os2/tglbtn.h"
 */
diff --git a/src/mac/carbon/tglbtn.cpp b/src/mac/carbon/tglbtn.cpp
new file mode 100644 (file)
index 0000000..755e1d2
--- /dev/null
@@ -0,0 +1,127 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        src/mac/tglbtn.cpp
+// Purpose:     Definition of the wxToggleButton class, which implements a
+//              toggle button under wxMac.
+// Author:      Stefan Csomor
+// Modified by:
+// Created:     08.02.01
+// RCS-ID:      $Id$
+// Copyright:   (c) 2000 Johnny C. Norris II
+// License:     Rocketeer license
+/////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declatations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+#ifdef __GNUG__
+#pragma implementation "button.h"
+#endif
+
+#include "wx/defs.h"
+#include "wx/tglbtn.h"
+
+#if wxUSE_TOGGLEBTN
+
+#include "wx/mac/uma.h"
+// Button
+
+static const int kMacOSXHorizontalBorder = 2 ;
+static const int kMacOSXVerticalBorder = 4 ;
+
+// ----------------------------------------------------------------------------
+// macros
+// ----------------------------------------------------------------------------
+
+IMPLEMENT_DYNAMIC_CLASS(wxToggleButton, wxControl)
+DEFINE_EVENT_TYPE(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED)
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// wxToggleButton
+// ----------------------------------------------------------------------------
+
+// Single check box item
+bool wxToggleButton::Create(wxWindow *parent, wxWindowID id,
+                            const wxString& label,
+                            const wxPoint& pos,
+                            const wxSize& size, long style,
+                            const wxValidator& validator,
+                            const wxString& name)
+{
+    if ( !wxControl::Create(parent, id, pos, size, style, validator, name) )
+        return false;
+
+    Rect bounds ;
+    Str255 title ;
+
+    if ( UMAHasAquaLayout() )
+    {
+        m_macHorizontalBorder = kMacOSXHorizontalBorder;
+        m_macVerticalBorder = kMacOSXVerticalBorder;
+    }
+    
+    MacPreControlCreate( parent , id ,  label , pos , size ,style, validator , name , &bounds , title ) ;
+
+    m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , kControlBehaviorToggles , 1, 
+          kControlBevelButtonNormalBevelProc  , (long) this ) ;
+    wxASSERT_MSG( (ControlHandle) m_macControl != NULL , wxT("No valid mac control") ) ;
+    
+    MacPostControlCreate() ;
+    
+  return TRUE;
+}
+
+wxSize wxToggleButton::DoGetBestSize() const
+{
+    int wBtn = 70 ; 
+    int hBtn = 20 ;
+
+    int lBtn = m_label.Length() * 10 + 12 ;
+    if (lBtn > wBtn) 
+        wBtn = lBtn;
+
+    if ( UMAHasAquaLayout() )
+    {
+        wBtn += 2 * kMacOSXHorizontalBorder ;
+        hBtn += 2 * kMacOSXVerticalBorder ;
+    }
+    return wxSize ( wBtn , hBtn ) ;
+}
+
+void wxToggleButton::SetValue(bool val)
+{
+    ::SetControl32BitValue( (ControlHandle) m_macControl , val ) ;
+}
+
+bool wxToggleButton::GetValue() const
+{
+    return GetControl32BitValue( (ControlHandle) m_macControl ) ;
+}
+
+void wxToggleButton::Command(wxCommandEvent & event)
+{
+   SetValue((event.GetInt() != 0));
+   ProcessCommand(event);
+}
+
+void wxToggleButton::MacHandleControlClick( WXWidget WXUNUSED(control) , wxInt16 controlpart , bool WXUNUSED(mouseStillDown) ) 
+{
+    if ( controlpart != kControlNoPart )
+    {
+        wxCommandEvent event(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, m_windowId);
+        event.SetInt(GetValue());
+        event.SetEventObject(this);
+        ProcessCommand(event);
+    }
+}
+
+#endif // wxUSE_TOGGLEBTN
+
diff --git a/src/mac/tglbtn.cpp b/src/mac/tglbtn.cpp
new file mode 100644 (file)
index 0000000..755e1d2
--- /dev/null
@@ -0,0 +1,127 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        src/mac/tglbtn.cpp
+// Purpose:     Definition of the wxToggleButton class, which implements a
+//              toggle button under wxMac.
+// Author:      Stefan Csomor
+// Modified by:
+// Created:     08.02.01
+// RCS-ID:      $Id$
+// Copyright:   (c) 2000 Johnny C. Norris II
+// License:     Rocketeer license
+/////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declatations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+#ifdef __GNUG__
+#pragma implementation "button.h"
+#endif
+
+#include "wx/defs.h"
+#include "wx/tglbtn.h"
+
+#if wxUSE_TOGGLEBTN
+
+#include "wx/mac/uma.h"
+// Button
+
+static const int kMacOSXHorizontalBorder = 2 ;
+static const int kMacOSXVerticalBorder = 4 ;
+
+// ----------------------------------------------------------------------------
+// macros
+// ----------------------------------------------------------------------------
+
+IMPLEMENT_DYNAMIC_CLASS(wxToggleButton, wxControl)
+DEFINE_EVENT_TYPE(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED)
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// wxToggleButton
+// ----------------------------------------------------------------------------
+
+// Single check box item
+bool wxToggleButton::Create(wxWindow *parent, wxWindowID id,
+                            const wxString& label,
+                            const wxPoint& pos,
+                            const wxSize& size, long style,
+                            const wxValidator& validator,
+                            const wxString& name)
+{
+    if ( !wxControl::Create(parent, id, pos, size, style, validator, name) )
+        return false;
+
+    Rect bounds ;
+    Str255 title ;
+
+    if ( UMAHasAquaLayout() )
+    {
+        m_macHorizontalBorder = kMacOSXHorizontalBorder;
+        m_macVerticalBorder = kMacOSXVerticalBorder;
+    }
+    
+    MacPreControlCreate( parent , id ,  label , pos , size ,style, validator , name , &bounds , title ) ;
+
+    m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , kControlBehaviorToggles , 1, 
+          kControlBevelButtonNormalBevelProc  , (long) this ) ;
+    wxASSERT_MSG( (ControlHandle) m_macControl != NULL , wxT("No valid mac control") ) ;
+    
+    MacPostControlCreate() ;
+    
+  return TRUE;
+}
+
+wxSize wxToggleButton::DoGetBestSize() const
+{
+    int wBtn = 70 ; 
+    int hBtn = 20 ;
+
+    int lBtn = m_label.Length() * 10 + 12 ;
+    if (lBtn > wBtn) 
+        wBtn = lBtn;
+
+    if ( UMAHasAquaLayout() )
+    {
+        wBtn += 2 * kMacOSXHorizontalBorder ;
+        hBtn += 2 * kMacOSXVerticalBorder ;
+    }
+    return wxSize ( wBtn , hBtn ) ;
+}
+
+void wxToggleButton::SetValue(bool val)
+{
+    ::SetControl32BitValue( (ControlHandle) m_macControl , val ) ;
+}
+
+bool wxToggleButton::GetValue() const
+{
+    return GetControl32BitValue( (ControlHandle) m_macControl ) ;
+}
+
+void wxToggleButton::Command(wxCommandEvent & event)
+{
+   SetValue((event.GetInt() != 0));
+   ProcessCommand(event);
+}
+
+void wxToggleButton::MacHandleControlClick( WXWidget WXUNUSED(control) , wxInt16 controlpart , bool WXUNUSED(mouseStillDown) ) 
+{
+    if ( controlpart != kControlNoPart )
+    {
+        wxCommandEvent event(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, m_windowId);
+        event.SetInt(GetValue());
+        event.SetEventObject(this);
+        ProcessCommand(event);
+    }
+}
+
+#endif // wxUSE_TOGGLEBTN
+