Merge in the recent wxSlider work from svn trunk (various commits). This patch keeps ABI compatibility but won't yet

generate events caused by mouse movement (next commit will do that ABI compatibly).
Copyright 2007 Software 2000 Ltd.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@48080 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
David Elliott
2007-08-15 04:42:44 +00:00
parent 4ac5084fa4
commit 1346171e5f
7 changed files with 525 additions and 16 deletions

View File

@@ -0,0 +1,47 @@
/////////////////////////////////////////////////////////////////////////////
// Name: wx/cocoa/NSSlider.h
// Purpose: wxCocoaNSSlider class
// Author: Mark Oxenham
// Modified by: David Elliott
// Created: 2007/08/10
// RCS-ID: $Id$
// Copyright: (c) 2007 Software 2000 Ltd. All rights reserved.
// Licence: wxWidgets licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WXNSSLIDER_H_
#define _WXNSSLIDER_H_
#include "wx/hashmap.h"
#include "wx/cocoa/ObjcAssociate.h"
#include "wx/cocoa/ObjcRef.h"
DECLARE_WXCOCOA_OBJC_CLASS(NSSlider);
WX_DECLARE_OBJC_HASHMAP(NSSlider);
// For when we're not in Objective-C mode:
typedef struct objc_selector *SEL;
class wxCocoaNSSliderLastSelectorChanger;
class wxCocoaNSSlider
{
friend class wxCocoaNSSliderLastSelectorChanger;
WX_DECLARE_OBJC_INTERFACE_HASHMAP(NSSlider);
public:
void AssociateNSSlider(WX_NSSlider cocoaNSSlider);
void DisassociateNSSlider(WX_NSSlider cocoaNSSlider);
virtual void CocoaNotification_startTracking(WX_NSNotification notification) = 0;
virtual void CocoaNotification_continueTracking(WX_NSNotification notification) = 0;
virtual void CocoaNotification_stopTracking(WX_NSNotification notification) = 0;
static SEL GetLastResponderSelector()
{ return sm_lastResponderSelector; }
protected:
virtual ~wxCocoaNSSlider() { }
static SEL sm_lastResponderSelector;
};
#endif

View File

@@ -0,0 +1,37 @@
///////////////////////////////////////////////////////////////////////////////
// Name: wx/cocoa/objc/NSView.h
// Purpose: WXNSSlider class
// Author: David Elliott
// Modified by:
// Created: 2007/08/10 (move from NSSlider.mm)
// RCS-ID: $Id$
// Copyright: (c) 2007 Software 2000 Ltd.
// Licence: wxWidgets licence
///////////////////////////////////////////////////////////////////////////////
#ifndef __WX_COCOA_OBJC_NSSLIDER_H__
#define __WX_COCOA_OBJC_NSSLIDER_H__
#include "wx/cocoa/objc/objc_uniquifying.h"
#import <AppKit/NSSlider.h>
// ============================================================================
// @class WXNSSlider
// ============================================================================
@interface WXNSSlider : NSSlider
@end
WX_DECLARE_GET_OBJC_CLASS(WXNSSlider,NSSlider)
// ============================================================================
// @class WXNSSliderCell
// ============================================================================
@interface WXNSSliderCell : NSSliderCell
@end
WX_DECLARE_GET_OBJC_CLASS(WXNSSliderCell,NSSliderCell)
#endif //ndef __WX_COCOA_OBJC_NSSLIDER_H__

View File

@@ -2,17 +2,19 @@
// Name: wx/cocoa/slider.h
// Purpose: wxSlider class
// Author: David Elliott
// Mark Oxenham
// Modified by:
// Created: 2003/06/19
// RCS-ID: $Id$
// Copyright: (c) 2003 David Elliott
// (c) 2007 Software 2000 Ltd.
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __WX_COCOA_SLIDER_H__
#define __WX_COCOA_SLIDER_H__
// #include "wx/cocoa/NSSlider.h"
#include "wx/cocoa/NSSlider.h"
// ========================================================================
// wxSlider
@@ -21,7 +23,7 @@ class WXDLLEXPORT wxSlider: public wxSliderBase// , protected wxCocoaNSSlider
{
DECLARE_DYNAMIC_CLASS(wxSlider)
DECLARE_EVENT_TABLE()
// WX_DECLARE_COCOA_OWNER(NSSlider,NSControl,NSView)
WX_DECLARE_COCOA_OWNER(NSSlider,NSControl,NSView)
// ------------------------------------------------------------------------
// initialization
// ------------------------------------------------------------------------
@@ -52,30 +54,52 @@ public:
// Cocoa callbacks
// ------------------------------------------------------------------------
protected:
// Override this so we can use wxCocoaNSControl's target
void AssociateNSSlider(WX_NSSlider theSlider);
void DisassociateNSSlider(WX_NSSlider theSlider);
// Helper method to do the real work
void ProcessEventType(wxEventType commandType);
// from wxCocoaNSControl:
virtual void CocoaTarget_action();
// from wxCocoaNSSlider:
/*virtual*/ void CocoaNotification_startTracking(WX_NSNotification notification);
/*virtual*/ void CocoaNotification_continueTracking(WX_NSNotification notification);
/*virtual*/ void CocoaNotification_stopTracking(WX_NSNotification notification);
// ------------------------------------------------------------------------
// Implementation
// ------------------------------------------------------------------------
public:
// Pure Virtuals
virtual int GetValue() const { return 0; }
virtual void SetValue(int value) { }
virtual int GetValue() const;
virtual void SetValue(int value);
// retrieve/change the range
virtual void SetRange(int minValue, int maxValue) { }
virtual int GetMin() const { return 0; }
virtual int GetMax() const { return 0; }
virtual void SetRange(int minValue, int maxValue);
virtual int GetMin() const;
virtual int GetMax() const;
// the line/page size is the increment by which the slider moves when
// cursor arrow key/page up or down are pressed (clicking the mouse is like
// pressing PageUp/Down) and are by default set to 1 and 1/10 of the range
virtual void SetLineSize(int lineSize) { }
virtual void SetPageSize(int pageSize) { }
virtual int GetLineSize() const { return 0; }
virtual int GetPageSize() const { return 0; }
virtual void SetLineSize(int lineSize);
virtual void SetPageSize(int pageSize);
virtual int GetLineSize() const;
virtual int GetPageSize() const;
// these methods get/set the length of the slider pointer in pixels
virtual void SetThumbLength(int lenPixels) { }
virtual int GetThumbLength() const { return 0; }
virtual void SetThumbLength(int lenPixels);
virtual int GetThumbLength() const;
// copied from (wxSliderCocoa.h)
virtual void SetTickFreq(int n, int pos);
virtual int GetTickFreq() const;
virtual void ClearTicks() { SetTickFreq(0, 0); }
virtual void SetTickPos(int pos);
};