]> git.saurik.com Git - wxWidgets.git/commitdiff
Common code for the same handling of wxSL_INVERSE.
authorWłodzimierz Skiba <abx@abx.art.pl>
Mon, 14 Feb 2005 19:29:37 +0000 (19:29 +0000)
committerWłodzimierz Skiba <abx@abx.art.pl>
Mon, 14 Feb 2005 19:29:37 +0000 (19:29 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32044 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/mac/carbon/slider.h
include/wx/msw/slider95.h
include/wx/palmos/slider.h
include/wx/slider.h
src/mac/carbon/slider.cpp
src/msw/slider95.cpp
src/palmos/slider.cpp

index dbdc6866af5adf0e1617d66db9bd5af98b1d7659..a53d0729ad130a757b56a01a88431e62354a6fdf 100644 (file)
@@ -25,86 +25,85 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxSliderNameStr;
 // Slider
 class WXDLLEXPORT wxSlider: public wxControl
 {
-  DECLARE_DYNAMIC_CLASS(wxSlider)
+    DECLARE_DYNAMIC_CLASS(wxSlider)
 
 public:
-  wxSlider();
-
-  inline wxSlider(wxWindow *parent, wxWindowID id,
-           int value, int minValue, int maxValue,
-           const wxPoint& pos = wxDefaultPosition,
-           const wxSize& size = wxDefaultSize,
-           long style = wxSL_HORIZONTAL,
-           const wxValidator& validator = wxDefaultValidator,
-           const wxString& name = wxSliderNameStr)
-  {
-      Create(parent, id, value, minValue, maxValue, pos, size, style, validator, name);
-  }
-
-  ~wxSlider();
-
-  bool Create(wxWindow *parent, wxWindowID id,
-           int value, int minValue, int maxValue,
-           const wxPoint& pos = wxDefaultPosition,
-           const wxSize& size = wxDefaultSize,
-           long style = wxSL_HORIZONTAL,
-           const wxValidator& validator = wxDefaultValidator,
-           const wxString& name = wxSliderNameStr);
-
-  virtual int GetValue() const ;
-  virtual void SetValue(int);
-
-  void SetRange(int minValue, int maxValue);
-
-  inline int GetMin() const { return m_rangeMin; }
-  inline int GetMax() const { return m_rangeMax; }
-
-  void SetMin(int minValue) { SetRange(minValue, m_rangeMax); }
-  void SetMax(int maxValue) { SetRange(m_rangeMin, maxValue); }
-    
-  // For trackbars only
-  void SetTickFreq(int n, int pos);
-  inline int GetTickFreq() const { return m_tickFreq; }
-  void SetPageSize(int pageSize);
-  int GetPageSize() const ;
-  void ClearSel() ;
-  void ClearTicks() ;
-  void SetLineSize(int lineSize);
-  int GetLineSize() const ;
-  int GetSelEnd() const ;
-  int GetSelStart() const ;
-  void SetSelection(int minPos, int maxPos);
-  void SetThumbLength(int len) ;
-  int GetThumbLength() const ;
-  void SetTick(int tickPos) ;
-
-     // set min/max size of the slider
-     virtual void DoSetSizeHints( int minW, int minH,
-                                int maxW = -1, int maxH = -1,
-                                int incW = -1, int incH = -1 );
-   protected:
-     virtual wxSize DoGetBestSize() const;
-     virtual void   DoSetSize(int x, int y, int w, int h, int sizeFlags);
-     virtual void   DoMoveWindow(int x, int y, int w, int h);
-  void Command(wxCommandEvent& event);
+    wxSlider();
+
+    inline wxSlider(wxWindow *parent, wxWindowID id,
+                    int value, int minValue, int maxValue,
+                    const wxPoint& pos = wxDefaultPosition,
+                    const wxSize& size = wxDefaultSize,
+                    long style = wxSL_HORIZONTAL,
+                    const wxValidator& validator = wxDefaultValidator,
+                    const wxString& name = wxSliderNameStr)
+    {
+        Create(parent, id, value, minValue, maxValue, pos, size, style, validator, name);
+    }
+
+    ~wxSlider();
+
+    bool Create(wxWindow *parent, wxWindowID id,
+                int value, int minValue, int maxValue,
+                const wxPoint& pos = wxDefaultPosition,
+                const wxSize& size = wxDefaultSize,
+                long style = wxSL_HORIZONTAL,
+                const wxValidator& validator = wxDefaultValidator,
+                const wxString& name = wxSliderNameStr);
+
+    virtual int GetValue() const ;
+    virtual void SetValue(int);
+
+    void SetRange(int minValue, int maxValue);
+
+    inline int GetMin() const { return m_rangeMin; }
+    inline int GetMax() const { return m_rangeMax; }
+
+    void SetMin(int minValue) { SetRange(minValue, m_rangeMax); }
+    void SetMax(int maxValue) { SetRange(m_rangeMin, maxValue); }
+
+    // For trackbars only
+    void SetTickFreq(int n, int pos);
+    inline int GetTickFreq() const { return m_tickFreq; }
+    void SetPageSize(int pageSize);
+    int GetPageSize() const ;
+    void ClearSel() ;
+    void ClearTicks() ;
+    void SetLineSize(int lineSize);
+    int GetLineSize() const ;
+    int GetSelEnd() const ;
+    int GetSelStart() const ;
+    void SetSelection(int minPos, int maxPos);
+    void SetThumbLength(int len) ;
+    int GetThumbLength() const ;
+    void SetTick(int tickPos) ;
+
+    // set min/max size of the slider
+    virtual void DoSetSizeHints( int minW, int minH,
+                                 int maxW = -1, int maxH = -1,
+                                 int incW = -1, int incH = -1 );
+
+protected:
+    virtual wxSize DoGetBestSize() const;
+    virtual void   DoSetSize(int x, int y, int w, int h, int sizeFlags);
+    virtual void   DoMoveWindow(int x, int y, int w, int h);
+
+    void Command(wxCommandEvent& event);
     virtual wxInt32 MacControlHit( WXEVENTHANDLERREF handler , WXEVENTREF event ) ;
     void                     MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool mouseStillDown ) ;
 
     // Common processing to invert slider values based on wxSL_INVERSE
-    int MacInvertOrNot(int value) const;
+    virtual int ValueInvertOrNot(int value) const;
 
-     wxStaticText*    m_macMinimumStatic ;
-     wxStaticText*    m_macMaximumStatic ;
-     wxStaticText*    m_macValueStatic ;
+    wxStaticText*    m_macMinimumStatic ;
+    wxStaticText*    m_macMaximumStatic ;
+    wxStaticText*    m_macValueStatic ;
 
-  int           m_rangeMin;
-  int           m_rangeMax;
-  int           m_pageSize;
-  int           m_lineSize;
-  int           m_tickFreq;
+    int           m_rangeMin;
+    int           m_rangeMax;
+    int           m_pageSize;
+    int           m_lineSize;
+    int           m_tickFreq;
 private :
 DECLARE_EVENT_TABLE()
 };
index 2a78343eb85569e3ac62db30378c343f115ddc3f..45f330d94345a547e403c540e16356e0b79f6705 100644 (file)
@@ -99,9 +99,6 @@ protected:
     // format an integer value as string
     static wxString Format(int n) { return wxString::Format(_T("%d"), n); }
 
-       // Common processing to invert slider values based on wxSL_INVERSE 
-    int MSWInvertOrNot(int value) const; 
-
     // get the boundig box for the slider and possible labels
     wxRect GetBoundingBox() const;
 
index d21ce89da610929742faf6b03cebcfa6bb71149c..5b583451a73137d65bfcd789f99356ff2b6e49bf 100644 (file)
@@ -86,8 +86,6 @@ private:
 
     void Init();
 
-    int PalmInvertOrNot(int value) const;
-
     int m_oldPos;    // needed for tracing thumb position during scrolling
     int m_oldValue;  // needed for comparing thumb position before and after scrolling
     int m_lineSize;  // imitate line size
index 0e5d0939b17e9b9b7713f57c59755f9043fc8724..2f62950addc34040ddb9c3475845988113830934 100644 (file)
@@ -80,10 +80,19 @@ public:
     virtual int GetSelStart() const { return GetMax(); }
     virtual void SetSelection(int WXUNUSED(min), int WXUNUSED(max)) { }
 
-
     virtual void ApplyParentThemeBackground(const wxColour& bg)
         { SetBackgroundColour(bg); }
 
+protected:
+
+    // adjust value according to wxSL_INVERSE style
+    virtual int ValueInvertOrNot(int value) const
+    {
+        if (HasFlag(wxSL_INVERSE))
+            return (GetMax() + GetMin()) - value;
+        else
+            return value;
+    }
 
 private:
     DECLARE_NO_COPY_CLASS(wxSliderBase)
index c88fe4e2e261ed10d8f38c8a9ca53d714bb4ef66..6ffd9dd1a5fe6acbf03f6e9931453a1fcfdf6ddd 100644 (file)
@@ -123,7 +123,7 @@ bool wxSlider::Create(wxWindow *parent, wxWindowID id,
 
 wxSlider::~wxSlider()
 {
-    // this is a special case, as we had to add windows as siblings we are 
+    // this is a special case, as we had to add windows as siblings we are
     // responsible for their disposal, but only if we are not part of a DestroyAllChildren
     if ( m_parent && m_parent->IsBeingDeleted() == false )
     {
@@ -136,7 +136,7 @@ wxSlider::~wxSlider()
 int wxSlider::GetValue() const
 {
     // We may need to invert the value returned by the widget
-    return MacInvertOrNot( m_peer->GetValue() ) ;
+    return ValueInvertOrNot( m_peer->GetValue() ) ;
 }
 
 void wxSlider::SetValue(int value)
@@ -147,7 +147,7 @@ void wxSlider::SetValue(int value)
         m_macValueStatic->SetLabel( valuestring ) ;
 
     // We only invert for the setting of the actual native widget
-    m_peer->SetValue( MacInvertOrNot ( value ) ) ;
+    m_peer->SetValue( ValueInvertOrNot ( value ) ) ;
 }
 
 void wxSlider::SetRange(int minValue, int maxValue)
@@ -161,11 +161,11 @@ void wxSlider::SetRange(int minValue, int maxValue)
     m_peer->SetMaximum( m_rangeMax);
 
     if(m_macMinimumStatic) {
-        value.Printf(wxT("%d"), MacInvertOrNot( m_rangeMin ) );
+        value.Printf(wxT("%d"), ValueInvertOrNot( m_rangeMin ) );
         m_macMinimumStatic->SetLabel(value);
     }
     if(m_macMaximumStatic) {
-        value.Printf(wxT("%d"), MacInvertOrNot( m_rangeMax ) );
+        value.Printf(wxT("%d"), ValueInvertOrNot( m_rangeMax ) );
         m_macMaximumStatic->SetLabel(value);
     }
     SetValue(m_rangeMin);
@@ -254,7 +254,7 @@ void wxSlider::MacHandleControlClick( WXWidget control , wxInt16 controlpart, bo
 {
     // Whatever the native value is, we may need to invert it for calling
     // SetValue and putting the possibly inverted value in the event
-    SInt16 value = MacInvertOrNot ( m_peer->GetValue() ) ;
+    SInt16 value = ValueInvertOrNot ( m_peer->GetValue() ) ;
 
     SetValue( value ) ;
 
@@ -278,7 +278,7 @@ wxInt32 wxSlider::MacControlHit( WXEVENTHANDLERREF handler , WXEVENTREF mevent )
 {
     // Whatever the native value is, we may need to invert it for calling
     // SetValue and putting the possibly inverted value in the event
-    SInt16 value = MacInvertOrNot ( m_peer->GetValue() ) ;
+    SInt16 value = ValueInvertOrNot ( m_peer->GetValue() ) ;
 
     SetValue( value ) ;
 
@@ -326,9 +326,9 @@ wxSize wxSlider::DoGetBestSize() const
         int ht, wd;
 
         // Get maximum text label width and height
-        text.Printf(wxT("%d"), MacInvertOrNot( m_rangeMin ) );
+        text.Printf(wxT("%d"), ValueInvertOrNot( m_rangeMin ) );
         GetTextExtent(text, &textwidth, &textheight);
-        text.Printf(wxT("%d"), MacInvertOrNot( m_rangeMax ) );
+        text.Printf(wxT("%d"), ValueInvertOrNot( m_rangeMax ) );
         GetTextExtent(text, &wd, &ht);
         if(ht > textheight) {
             textheight = ht;
@@ -389,9 +389,9 @@ void wxSlider::DoSetSize(int x, int y, int w, int h, int sizeFlags)
         int ht;
 
         // Get maximum text label width and height
-        text.Printf(wxT("%d"), MacInvertOrNot( m_rangeMin ) );
+        text.Printf(wxT("%d"), ValueInvertOrNot( m_rangeMin ) );
         GetTextExtent(text, &minValWidth, &textheight);
-        text.Printf(wxT("%d"), MacInvertOrNot( m_rangeMax ) );
+        text.Printf(wxT("%d"), ValueInvertOrNot( m_rangeMax ) );
         GetTextExtent(text, &maxValWidth, &ht);
         if(ht > textheight) {
             textheight = ht;
@@ -433,27 +433,26 @@ void wxSlider::DoSetSize(int x, int y, int w, int h, int sizeFlags)
                 m_macValueStatic->Move(GetPosition().x + w, GetPosition().y + 0);
         }
     }
-    
-    
+
     // yet another hack since this is a composite control
-    // when wxSlider has it's size hardcoded, we're not allowed to 
-    // change the size. But when the control has labels, we DO need 
+    // when wxSlider has it's size hardcoded, we're not allowed to
+    // change the size. But when the control has labels, we DO need
     // to resize the internal Mac control to accomodate the text labels.
     // We need to trick the wxWidgets resize mechanism so that we can
-    // resize the slider part of the control ONLY. 
-    
+    // resize the slider part of the control ONLY.
+
     // TODO: Can all of this code go in the conditional wxSL_LABELS block?
-    
+
     int minWidth;
     minWidth = m_minWidth;
-       
+
     if (GetWindowStyle() & wxSL_LABELS)
     {
         // make sure we don't allow the entire control to be resized accidently
         if (width == GetSize().x)
             m_minWidth = -1;
     }
-       //If the control has labels, we still need to call this again because
+    //If the control has labels, we still need to call this again because
     //the labels alter the control's w and h values.
     wxControl::DoSetSize( x, y , w , h ,sizeFlags ) ;
 
@@ -466,7 +465,7 @@ void wxSlider::DoMoveWindow(int x, int y, int width, int height)
 }
 
 // Common processing to invert slider values based on wxSL_INVERSE
-int wxSlider::MacInvertOrNot(int value) const
+int wxSlider::ValueInvertOrNot(int value) const
 {
     if (m_windowStyle & wxSL_VERTICAL)
     {
@@ -480,10 +479,7 @@ int wxSlider::MacInvertOrNot(int value) const
     }
     else // normal logic applies to HORIZONTAL sliders
     {
-        if (m_windowStyle & wxSL_INVERSE)
-            return (m_rangeMax + m_rangeMin) - value;
-        else
-            return value;
+        return wxSliderBase::ValueInvertOrNot(value);
     }
 }
 
index 78175544135780c082d5d2fe28900b60191c5d42..1f1f651ff97d556216340b69bed475df45b4534e 100644 (file)
@@ -307,7 +307,7 @@ bool wxSlider95::MSWOnScroll(int WXUNUSED(orientation),
             return false;
     }
 
-    int newPos = MSWInvertOrNot((int) ::SendMessage((HWND) control, TBM_GETPOS, 0, 0));
+    int newPos = ValueInvertOrNot((int) ::SendMessage((HWND) control, TBM_GETPOS, 0, 0));
     if ( (newPos < GetMin()) || (newPos > GetMax()) )
     {
         // out of range - but we did process it
@@ -507,22 +507,14 @@ wxSize wxSlider95::DoGetBestSize() const
 // slider-specific methods
 // ----------------------------------------------------------------------------
 
-int wxSlider95::MSWInvertOrNot(int value) const
-{
-    if (m_windowStyle & wxSL_INVERSE) 
-        return (m_rangeMax + m_rangeMin) - value; 
-    else 
-        return value; 
-}
-
 int wxSlider95::GetValue() const
 {
-    return MSWInvertOrNot(::SendMessage(GetHwnd(), TBM_GETPOS, 0, 0));
+    return ValueInvertOrNot(::SendMessage(GetHwnd(), TBM_GETPOS, 0, 0));
 }
 
 void wxSlider95::SetValue(int value)
 {
-    ::SendMessage(GetHwnd(), TBM_SETPOS, (WPARAM)TRUE, (LPARAM)MSWInvertOrNot(value));
+    ::SendMessage(GetHwnd(), TBM_SETPOS, (WPARAM)TRUE, (LPARAM)ValueInvertOrNot(value));
 
     if ( m_labels )
     {
@@ -539,8 +531,8 @@ void wxSlider95::SetRange(int minValue, int maxValue)
 
     if ( m_labels )
     {
-        ::SetWindowText((*m_labels)[SliderLabel_Min], Format(MSWInvertOrNot(m_rangeMin)));
-        ::SetWindowText((*m_labels)[SliderLabel_Max], Format(MSWInvertOrNot(m_rangeMax)));
+        ::SetWindowText((*m_labels)[SliderLabel_Min], Format(ValueInvertOrNot(m_rangeMin)));
+        ::SetWindowText((*m_labels)[SliderLabel_Max], Format(ValueInvertOrNot(m_rangeMax)));
     }
 }
 
index 2f344b1261de443c8e917e2e921da0392cd7d7b5..3776e7de960edc18d568752dd5a6e5cf85508302 100644 (file)
@@ -195,14 +195,6 @@ int wxSlider::GetPageSize() const
     return ret;
 }
 
-int wxSlider::PalmInvertOrNot(int value) const
-{
-    if (m_windowStyle & wxSL_INVERSE)
-        return (GetMax() + GetMin()) - value;
-    else
-        return value;
-}
-
 int wxSlider::GetValue() const
 {
     ControlType *control = (ControlType *)GetObjectPtr();
@@ -210,12 +202,12 @@ int wxSlider::GetValue() const
         return 0;
     uint16_t ret;
     CtlGetSliderValues(control, NULL, NULL, NULL, &ret);
-    return PalmInvertOrNot(ret);
+    return ValueInvertOrNot(ret);
 }
 
 void wxSlider::SetValue(int value)
 {
-    SetIntValue(PalmInvertOrNot(value));
+    SetIntValue(ValueInvertOrNot(value));
     m_oldValue = m_oldPos = value;
 }
 
@@ -335,7 +327,7 @@ bool wxSlider::SendUpdatedEvent()
 bool wxSlider::SendScrollEvent(EventType* event)
 {
     wxEventType scrollEvent;
-    int newPos = PalmInvertOrNot(event->data.ctlRepeat.value);
+    int newPos = ValueInvertOrNot(event->data.ctlRepeat.value);
     if ( newPos == m_oldPos )
     {
         // nothing changed since last event