diff options
author | scaraveo <unknown> | 2007-06-01 00:57:26 +0000 |
---|---|---|
committer | scaraveo <unknown> | 2007-06-01 00:57:26 +0000 |
commit | 710f716e96f6e9ee9eb410b343b78b3c4d95bc46 (patch) | |
tree | 55e5547869daa67b6a639c89825058baf75545c7 /macosx/ScintillaMacOSX.h | |
parent | cac98b923422b91839f7c285a9b78ea282cd6f0a (diff) | |
download | scintilla-mirror-710f716e96f6e9ee9eb410b343b78b3c4d95bc46.tar.gz |
integrate OS X support for scintilla. a big patch with a little commit message :)
- now uses namespaces (optionally for non-os x) to avoid conflicts with OS X libraries
- several fixes in the OS X layer since the branch was commited in 2005
- used in Komodo since 2005, so pretty stable
Diffstat (limited to 'macosx/ScintillaMacOSX.h')
-rw-r--r-- | macosx/ScintillaMacOSX.h | 192 |
1 files changed, 192 insertions, 0 deletions
diff --git a/macosx/ScintillaMacOSX.h b/macosx/ScintillaMacOSX.h new file mode 100644 index 000000000..0f02042f5 --- /dev/null +++ b/macosx/ScintillaMacOSX.h @@ -0,0 +1,192 @@ +/* + * ScintillaMacOSX.h + * tutorial + * + * Created by Evan Jones on Sun Sep 01 2002. + * Copyright (c) 2002 __MyCompanyName__. All rights reserved. + * + */ +#include "TView.h" + +#include <stdlib.h> +#include <string.h> +#include <stdio.h> +#include <ctype.h> +#include <time.h> + +#include "Platform.h" +#include "Scintilla.h" +#include "PlatMacOSX.h" + + +#include "ScintillaWidget.h" +#ifdef SCI_LEXER +#include "SciLexer.h" +#include "PropSet.h" +#include "Accessor.h" +#include "KeyWords.h" +#endif +#include "ContractionState.h" +#include "SVector.h" +#include "SplitVector.h" +#include "Partitioning.h" +#include "RunStyles.h" +#include "CellBuffer.h" +#include "CallTip.h" +#include "KeyMap.h" +#include "Indicator.h" +#include "XPM.h" +#include "LineMarker.h" +#include "Style.h" +#include "AutoComplete.h" +#include "ViewStyle.h" +#include "CharClassify.h" +#include "Decoration.h" +#include "Document.h" +#include "Editor.h" +#include "SString.h" +#include "ScintillaBase.h" +#include "ScintillaCallTip.h" + +static const OSType scintillaMacOSType = 'Scin'; +static const OSType scintillaNotifyObject = 'Snob'; +static const OSType scintillaNotifyFN = 'Snfn'; + +namespace Scintilla { + +class ScintillaMacOSX : public ScintillaBase, public TView +{ + public: + HIViewRef vScrollBar; + HIViewRef hScrollBar; + SInt32 scrollBarFixedSize; + + bool capturedMouse; + bool inDragSession; // true if scintilla initiated the drag session + bool isTracking; + + // Private so ScintillaMacOSX objects can not be copied + ScintillaMacOSX(const ScintillaMacOSX &) : ScintillaBase(), TView( NULL ) {} + ScintillaMacOSX &operator=(const ScintillaMacOSX &) { return * this; } + +public: + /** This is the class ID that we've assigned to Scintilla. */ + static const CFStringRef kScintillaClassID; + static const ControlKind kScintillaKind; + + ScintillaMacOSX( void* windowid ); + virtual ~ScintillaMacOSX(); + //~ static void ClassInit(GtkObjectClass* object_class, GtkWidgetClass *widget_class); + + /** Returns the HIView object kind, needed to subclass TView. */ + virtual ControlKind GetKind() { return kScintillaKind; } + +private: + virtual void Initialise(); + virtual void Finalise(); + virtual void StartDrag(); + Scintilla::Point GetDragPoint(DragRef inDrag); + OSStatus GetDragData(DragRef inDrag, PasteboardRef &pasteBoard, CFStringRef *textString); + void SetDragCursor(DragRef inDrag); + + // Drag and drop + virtual bool DragEnter(DragRef inDrag ); + virtual bool DragWithin(DragRef inDrag ); + virtual bool DragLeave(DragRef inDrag ); + virtual OSStatus DragReceive(DragRef inDrag ); + void DragScroll(); + int scrollSpeed; + int scrollTicks; + + EventRecord mouseDownEvent; + MouseTrackingRef mouseTrackingRef; + MouseTrackingRegionID mouseTrackingID; + HIPoint GetLocalPoint(::Point pt); + + static pascal void IdleTimerEventHandler(EventLoopTimerRef inTimer, + EventLoopIdleTimerMessage inState, + void *scintilla ); + +public: // Public for scintilla_send_message + virtual sptr_t WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam); + + void SyncPaint( void* gc, PRectangle rc); + //void FullPaint( void* gc ); + virtual void Draw( RgnHandle rgn, CGContextRef gc ); + + virtual sptr_t DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam); + virtual void SetTicking(bool on); + virtual bool SetIdle(bool on); + virtual void SetMouseCapture(bool on); + virtual bool HaveMouseCapture(); + virtual PRectangle GetClientRectangle(); + + virtual void ScrollText(int linesToMove); + virtual void SetVerticalScrollPos(); + virtual void SetHorizontalScrollPos(); + virtual bool ModifyScrollBars(int nMax, int nPage); + virtual void ReconfigureScrollBars(); + void Resize(int width, int height); + static pascal void LiveScrollHandler( ControlHandle control, SInt16 part ); + bool ScrollBarHit(HIPoint location); + + virtual void NotifyChange(); + virtual void NotifyFocus(bool focus); + virtual void NotifyParent(SCNotification scn); + void NotifyKey(int key, int modifiers); + void NotifyURIDropped(const char *list); + virtual int KeyDefault(int key, int modifiers); + static pascal OSStatus CommandEventHandler( EventHandlerCallRef inCallRef, EventRef inEvent, void* data ); + + bool HasSelection(); + bool CanUndo(); + bool CanRedo(); + bool AlwaysTrue(); + virtual void CopyToClipboard(const SelectionText &selectedText); + virtual void Copy(); + virtual bool CanPaste(); + virtual void Paste(); + virtual void Paste(bool rectangular); + virtual void CreateCallTipWindow(PRectangle rc); + virtual void AddToPopUp(const char *label, int cmd = 0, bool enabled = true); + virtual void ClaimSelection(); + + static sptr_t DirectFunction(ScintillaMacOSX *sciThis, + unsigned int iMessage, uptr_t wParam, sptr_t lParam); + + /** Timer event handler. Simply turns around and calls Tick. */ + virtual void TimerFired( EventLoopTimerRef ); + virtual OSStatus BoundsChanged( UInt32 inOptions, const HIRect& inOriginalBounds, const HIRect& inCurrentBounds, RgnHandle inInvalRgn ); + virtual ControlPartCode HitTest( const HIPoint& where ); + virtual OSStatus SetFocusPart( ControlPartCode desiredFocus, RgnHandle, Boolean, ControlPartCode* outActualFocus ); + virtual OSStatus TextInput( TCarbonEvent& event ); + + // Configure the features of this control + virtual UInt32 GetBehaviors(); + + virtual OSStatus MouseDown( HIPoint& location, UInt32 modifiers, EventMouseButton button, UInt32 clickCount, TCarbonEvent& inEvent ); + virtual OSStatus MouseDown( HIPoint& location, UInt32 modifiers, EventMouseButton button, UInt32 clickCount ); + virtual OSStatus MouseDown( EventRecord *rec ); + virtual OSStatus MouseUp( HIPoint& location, UInt32 modifiers, EventMouseButton button, UInt32 clickCount ); + virtual OSStatus MouseUp( EventRecord *rec ); + virtual OSStatus MouseDragged( HIPoint& location, UInt32 modifiers, EventMouseButton button, UInt32 clickCount ); + virtual OSStatus MouseDragged( EventRecord *rec ); + virtual OSStatus MouseEntered( HIPoint& location, UInt32 modifiers, EventMouseButton button, UInt32 clickCount ); + virtual OSStatus MouseExited( HIPoint& location, UInt32 modifiers, EventMouseButton button, UInt32 clickCount ); + virtual OSStatus MouseWheelMoved( EventMouseWheelAxis axis, SInt32 delta, UInt32 modifiers ); + virtual OSStatus ContextualMenuClick( HIPoint& location ); + + virtual OSStatus ActiveStateChanged(); + + virtual void CallTipClick(); + + +public: + static HIViewRef Create(); +private: + static OSStatus Construct( HIViewRef inControl, TView** outView ); + +}; + + +} |