diff options
| author | nyamatongwe <unknown> | 2009-05-14 12:10:06 +0000 | 
|---|---|---|
| committer | nyamatongwe <unknown> | 2009-05-14 12:10:06 +0000 | 
| commit | 805e109be2f52c0ea446511fc33efb3746a3bc18 (patch) | |
| tree | 3b57cf166d494a0dba47befcea94deba3da0fbda /cocoa/ScintillaCocoa.h | |
| parent | 8e12be32e9d14363f1e2f0fe6fc305b68a64ceb5 (diff) | |
| download | scintilla-mirror-805e109be2f52c0ea446511fc33efb3746a3bc18.tar.gz | |
First upload of Cocoa platform from Mike Lischke at Sun.
Diffstat (limited to 'cocoa/ScintillaCocoa.h')
| -rw-r--r-- | cocoa/ScintillaCocoa.h | 203 | 
1 files changed, 203 insertions, 0 deletions
diff --git a/cocoa/ScintillaCocoa.h b/cocoa/ScintillaCocoa.h new file mode 100644 index 000000000..2fa2f1bfe --- /dev/null +++ b/cocoa/ScintillaCocoa.h @@ -0,0 +1,203 @@ +/* + * ScintillaCocoa.h + * + * Mike Lischke <mlischke@sun.com> + * + * Based on ScintillaCocoa.h + * Original code by Evan Jones on Sun Sep 01 2002. + *  Contributors: + *  Shane Caraveo, ActiveState + *  Bernd Paradies, Adobe + * + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * This file is dual licensed under LGPL v2.1 and the Scintilla license (http://www.scintilla.org/License.txt). + */ + +#include <stdlib.h> +#include <string.h> +#include <stdio.h> +#include <ctype.h> +#include <time.h> + +#include "Platform.h" +#include "Scintilla.h" +#include "PlatCocoa.h" + +#ifdef SCI_LEXER +#include "SciLexer.h" +#include "PropSet.h" +#include "Accessor.h" +#include "KeyWords.h" +#endif +#include "SVector.h" +#include "SplitVector.h" +#include "Partitioning.h" +#include "RunStyles.h" +#include "ContractionState.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 "PositionCache.h" +#include "Editor.h" +#include "SString.h" +#include "ScintillaBase.h" +//#include "ScintillaCallTip.h" + +#import <Cocoa/Cocoa.h> + +#import <Carbon/Carbon.h> // Temporary + +@class ScintillaView; + +/** + * Helper class to be used as timer target (NSTimer). + */ +@interface TimerTarget : NSObject +{ +  void* mTarget; +  NSNotificationQueue* notificationQueue; +} +- (id) init: (void*) target; +- (void) timerFired: (NSTimer*) timer; +- (void) idleTimerFired: (NSTimer*) timer; +- (void) idleTriggered: (NSNotification*) notification; +@end + +namespace Scintilla { + +/** + * On the Mac, there is no WM_COMMAND or WM_NOTIFY message that can be sent + * back to the parent. Therefore, there must be a callback handler that acts + * like a Windows WndProc, where Scintilla can send notifications to. Use + * ScintillaCocoa::RegisterNotifyHandler() to register such a handler. + * Messgae format is: + * <br> + * WM_COMMAND: HIWORD (wParam) = notification code, LOWORD (wParam) = 0 (no control ID), lParam = ScintillaCocoa* + * <br> + * WM_NOTIFY: wParam = 0 (no control ID), lParam = ptr to SCNotification structure, with hwndFrom set to ScintillaCocoa* + */ +typedef void(*SciNotifyFunc) (intptr_t windowid, unsigned int iMessage, uintptr_t wParam, uintptr_t lParam); + +/** + * Scintilla sends these two messages to the nofity handler. Please refer + * to the Windows API doc for details about the message format. + */ +#define	WM_COMMAND	1001 +#define WM_NOTIFY	1002 + +/** + * Main scintilla class, implemented for OS X (Cocoa). + */ +class ScintillaCocoa : public ScintillaBase +{ +private: +  TimerTarget* timerTarget; +  NSEvent* lastMouseEvent; +   +  SciNotifyFunc	notifyProc; +  intptr_t notifyObj; + +  bool capturedMouse; + +  // Private so ScintillaCocoa objects can not be copied +  ScintillaCocoa(const ScintillaCocoa &) : ScintillaBase() {} +  ScintillaCocoa &operator=(const ScintillaCocoa &) { return * this; } + +  bool GetPasteboardData(NSPasteboard* board, SelectionText* selectedText); +  void SetPasteboardData(NSPasteboard* board, const SelectionText& selectedText); +   +  int scrollSpeed; +  int scrollTicks; +protected: +  NSView* ContentView(); +  PRectangle GetClientRectangle(); +  Point ConvertPoint(NSPoint point); +   +  virtual void Initialise(); +  virtual void Finalise(); +public: +  ScintillaCocoa(NSView* view); +  virtual ~ScintillaCocoa(); + +  void RegisterNotifyCallback(intptr_t windowid, SciNotifyFunc callback); +  sptr_t WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam); + +  ScintillaView* TopContainer(); + +  void SyncPaint(void* gc, PRectangle rc); +  void Draw(NSRect rect, CGContextRef gc); + +  virtual sptr_t DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam); +  void SetTicking(bool on); +  bool SetIdle(bool on); +  void SetMouseCapture(bool on); +  bool HaveMouseCapture(); +//    virtual void ScrollText(int linesToMove); +  void SetVerticalScrollPos(); +  void SetHorizontalScrollPos(); +  bool ModifyScrollBars(int nMax, int nPage); +  void Resize(); +  void DoScroll(float position, NSScrollerPart part, bool horizontal); +     +  // Notifications. +  void NotifyChange(); +  void NotifyFocus(bool focus); +  void NotifyParent(SCNotification scn); +  void NotifyURIDropped(const char *uri); + +  bool HasSelection(); +  bool CanUndo(); +  bool CanRedo(); +  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(ScintillaCocoa *sciThis, unsigned int iMessage, uptr_t wParam, sptr_t lParam); + +  void TimerFired(NSTimer* timer); +  void IdleTimerFired(); +  int InsertText(NSString* input); +   +  bool KeyboardInput(NSEvent* event); +  void MouseDown(NSEvent* event); +  void MouseMove(NSEvent* event); +  void MouseUp(NSEvent* event); +  void MouseEntered(NSEvent* event); +  void MouseExited(NSEvent* event); +  void MouseWheel(NSEvent* event); + +  // Drag and drop +  void StartDrag(); +  bool GetDragData(id <NSDraggingInfo> info, NSPasteboard &pasteBoard, SelectionText* selectedText); +  NSDragOperation DraggingEntered(id <NSDraggingInfo> info); +  NSDragOperation DraggingUpdated(id <NSDraggingInfo> info); +  void DraggingExited(id <NSDraggingInfo> info); +  bool PerformDragOperation(id <NSDraggingInfo> info); +  void DragScroll(); +   +  //    virtual OSStatus ContextualMenuClick( HIPoint& location ); +// +//    virtual OSStatus ActiveStateChanged(); +// +//    virtual void CallTipClick(); +  +}; + + +} + +  | 
