]> git.saurik.com Git - wxWidgets.git/commitdiff
Implemented wxToggleButton under Motif.
authorMattia Barbon <mbarbon@cpan.org>
Wed, 12 Feb 2003 18:20:23 +0000 (18:20 +0000)
committerMattia Barbon <mbarbon@cpan.org>
Wed, 12 Feb 2003 18:20:23 +0000 (18:20 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19195 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

distrib/msw/tmake/filelist.txt
docs/changes.txt
docs/latex/wx/tglbtn.tex
include/wx/chkconf.h
include/wx/motif/checkbox.h
include/wx/motif/tglbtn.h [new file with mode: 0644]
include/wx/tglbtn.h
src/motif/checkbox.cpp
src/motif/files.lst

index adfc390ae1c9c0a35e6d39731e9a4455f4f891f4..06a1cbd86732dfa8236da99f1b59381474e0bede 100644 (file)
@@ -1200,6 +1200,7 @@ statbmp.h MotifH
 statbox.h      MotifH
 stattext.h     MotifH
 textctrl.h     MotifH
+tglbtn.h       MotifH
 timer.h        MotifH
 toolbar.h      MotifH
 toplevel.h     MotifH
index d258b295b5b60f0c6aa5f648aa247e8303866811..2a9423d6fce2cc957c162a5413592e6004028a95 100644 (file)
@@ -90,6 +90,10 @@ wxMotif
   does not support all the features other ports do); refer to wxFileDialog
   documentation for a detailed explanation
 - implemented wxWakeUpIdle
+- for Motif 2.0, used the native combobox widget instead of the GPL'd
+  xmcombo; xmcombo is still used for Motif 1.x and Lesstif when compiled
+  with Motif 1.x compatibility
+- implemented wxToggleButton
 
 OLD CHANGES
 ===========
index d5a719b3f7f1ef36a8fda087a3ed09119a7b1428..38665a8b8eae652f4a34916ec6e892ed4e4b8ce2 100644 (file)
@@ -18,7 +18,8 @@ functionality but looks like a \helpref{wxButton}{wxbutton}.
 You can see wxToggleButton in action in the sixth page of the 
 \helpref{controls}{samplecontrols} sample.
 
-{\bf NB:} This class is only available under wxMSW and wxGTK currently.
+{\bf NB:} This class is only available under wxMSW, wxGTK and wxMotif 
+currently.
 
 \wxheading{Derived from}
 
index 433ff10f7ab0b8d2d7bb156b38ff4d2aeeb8b13c..1a83afe7fad7b92130111656ac314dd2170ffaa1 100644 (file)
 #  undef wxUSE_TAB_DIALOG
 #  define wxUSE_TAB_DIALOG 1
 #endif
-#if defined(__WXMOTIF__) && wxUSE_TOGGLEBTN
-#  undef wxUSE_TOGGLEBTN
-#  define wxUSE_TOGGLEBTN 0
-#endif
 
 /* wxMGL-specific dependencies */
 #ifdef __WXMGL__
index 8032731221e088673942d4e906102a9c78fa4336..9f9ca5851e3cff873121580eda3059846af85f35 100644 (file)
@@ -26,13 +26,15 @@ class WXDLLEXPORT wxCheckBox: public wxCheckBoxBase
     DECLARE_DYNAMIC_CLASS(wxCheckBox)
         
 public:
-    inline wxCheckBox() { }
+    inline wxCheckBox() { Init(); }
     inline wxCheckBox(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)
     {
+        Init();
+
         Create(parent, id, label, pos, size, style, validator, name);
     }
     
@@ -47,6 +49,17 @@ public:
     
     // Implementation
     virtual void ChangeBackgroundColour();
+private:
+    // common part of all constructors
+    void Init()
+    {
+        m_evtType = wxEVT_COMMAND_CHECKBOX_CLICKED;
+    }
+
+    // public for the callback
+public:
+    // either exEVT_COMMAND_CHECKBOX_CLICKED or ..._TOGGLEBUTTON_CLICKED
+    wxEventType m_evtType;
 };
 
 #endif
diff --git a/include/wx/motif/tglbtn.h b/include/wx/motif/tglbtn.h
new file mode 100644 (file)
index 0000000..c67edba
--- /dev/null
@@ -0,0 +1,50 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/motif/tglbtn.h
+// Purpose:     Declaration of the wxToggleButton class, which implements a
+//              toggle button under wxMotif.
+// Author:      Mattia Barbon
+// Modified by:
+// Created:     10.02.03
+// RCS-ID:      $Id$
+// Copyright:   (c) 2003 Mattia Barbon
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_TOGGLEBUTTON_H_
+#define _WX_TOGGLEBUTTON_H_
+
+#include "wx/checkbox.h"
+
+class WXDLLEXPORT wxToggleButton : public wxCheckBox
+{
+public:
+    wxToggleButton() { Init(); }
+    wxToggleButton( wxWindow* parent, wxWindowID id, const wxString& label,
+                    const wxPoint& pos = wxDefaultPosition,
+                    const wxSize& size = wxDefaultSize,
+                    long style = 0,
+                    const wxValidator& val = wxDefaultValidator,
+                    const wxString& name = wxCheckBoxNameStr )
+    {
+        Init();
+
+        Create( parent, id, label, pos, size, style, val, name );
+    }
+
+    bool Create( wxWindow* parent, wxWindowID id, const wxString& label,
+                 const wxPoint& pos = wxDefaultPosition,
+                 const wxSize& size = wxDefaultSize,
+                 long style = 0,
+                 const wxValidator& val = wxDefaultValidator,
+                 const wxString &name = wxCheckBoxNameStr );
+private:
+    DECLARE_DYNAMIC_CLASS(wxToggleButton);
+
+    // common part of all constructors
+    void Init()
+    {
+        m_evtType = wxEVT_COMMAND_TOGGLEBUTTON_CLICKED;
+    }
+};
+
+#endif // _WX_TOGGLEBUTTON_H_
index 964fa4a59e10ad03f052bee1b58344a6b9c9e4cf..98a2a7207c89a1f7fa789eeb04fd76d5037c9d42 100644 (file)
@@ -30,9 +30,9 @@ END_DECLARE_EVENT_TYPES()
     #include "wx/msw/tglbtn.h"
 #elif defined(__WXGTK__)
     #include "wx/gtk/tglbtn.h"
-/*
 # elif defined(__WXMOTIF__)
-#  include "wx/motif/tglbtn.h"
+    #include "wx/motif/tglbtn.h"
+/*
 # elif defined(__WXMAC__)
 #  include "wx/mac/tglbtn.h"
 # elif defined(__WXPM__)
index ee64792d713609a28a4dcef1475ee0b086037369..79ae861a60779be52573f7c9292bab940d6ddab7 100644 (file)
@@ -20,6 +20,7 @@
 #include "wx/defs.h"
 
 #include "wx/checkbox.h"
+#include "wx/tglbtn.h"
 #include "wx/utils.h"
 
 #ifdef __VMS__
@@ -104,7 +105,7 @@ void wxCheckBoxCallback (Widget WXUNUSED(w), XtPointer clientData,
     if (item->InSetValue())
         return;
 
-    wxCommandEvent event (wxEVT_COMMAND_CHECKBOX_CLICKED, item->GetId());
+    wxCommandEvent event (item->m_evtType, item->GetId());
     event.SetInt((int) item->GetValue ());
     event.SetEventObject(item);
     item->ProcessCommand (event);
@@ -130,3 +131,46 @@ void wxCheckBox::ChangeBackgroundColour()
            XmNselectColor, selectPixel,
         NULL);
 }
+
+///////////////////////////////////////////////////////////////////////////////
+// wxToggleButton
+///////////////////////////////////////////////////////////////////////////////
+
+#if wxUSE_TOGGLEBTN
+
+DEFINE_EVENT_TYPE(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED)
+IMPLEMENT_DYNAMIC_CLASS(wxToggleButton, wxControl)
+
+bool wxToggleButton::Create( wxWindow* parent, wxWindowID id,
+                             const wxString& label,
+                             const wxPoint& pos,
+                             const wxSize& size,
+                             long style,
+                             const wxValidator& val,
+                             const wxString &name )
+{
+    if( !wxCheckBox::Create( parent, id, label, pos, size, style, val, name ) )
+        return false;
+
+    XtVaSetValues( (Widget)m_mainWidget,
+                   XmNindicatorSize, 0,
+#if XmVersion >= 2000
+                   XmNindicatorOn, XmINDICATOR_NONE,
+#else
+                   XmNindicatorOn, False,
+#endif
+                   XmNfillOnSelect, False,
+                   XmNshadowThickness, 2,
+                   XmNalignment, XmALIGNMENT_CENTER,
+                   XmNmarginLeft, 0,
+                   XmNmarginRight, 0,
+                   NULL );
+
+    // set it again, because the XtVaSetValue above resets it
+    if( size.x != -1 || size.y != -1 )
+        SetSize( size );
+
+    return true;
+}
+
+#endif // wxUSE_TOGGLEBUTTON
index 17147823483741768c052f9acf3e5d55c5a79ed1..756e55871eaf13feedd6096e9c3b11bb9ef84ecc 100644 (file)
@@ -565,6 +565,7 @@ ALL_HEADERS = \
                motif/statbox.h \
                motif/stattext.h \
                motif/textctrl.h \
+               motif/tglbtn.h \
                motif/timer.h \
                motif/toolbar.h \
                motif/toplevel.h \