]> git.saurik.com Git - wxWidgets.git/blobdiff - src/stc/ScintillaWX.h
Run some wxTextCtrl unit test cases for single and multi-line controls.
[wxWidgets.git] / src / stc / ScintillaWX.h
index d25eb1818805588d2f8c9207f03347584ecf3106..701f28816965086a7a1a1b3a989948aa7bc6ced2 100644 (file)
@@ -1,6 +1,6 @@
 ////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////
-// Name:        ScintillaWX.h
-// Purpose:     A wxWindows implementation of Scintilla.  A class derived
+// Name:        src/stc/ScintillaWX.h
+// Purpose:     A wxWidgets implementation of Scintilla.  A class derived
 //              from ScintillaBase that uses the "wx platform" defined in
 //              PlatWX.cpp.  This class is one end of a bridge between
 //              the wx world and the Scintilla world.  It needs a peer
 //              from ScintillaBase that uses the "wx platform" defined in
 //              PlatWX.cpp.  This class is one end of a bridge between
 //              the wx world and the Scintilla world.  It needs a peer
 // Created:     13-Jan-2000
 // RCS-ID:      $Id$
 // Copyright:   (c) 2000 by Total Control Software
 // Created:     13-Jan-2000
 // RCS-ID:      $Id$
 // Copyright:   (c) 2000 by Total Control Software
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifndef __ScintillaWX_h__
 #define __ScintillaWX_h__
 /////////////////////////////////////////////////////////////////////////////
 
 #ifndef __ScintillaWX_h__
 #define __ScintillaWX_h__
+#include "wx/defs.h"
 
 //----------------------------------------------------------------------
 
 
 //----------------------------------------------------------------------
 
-#include "Platform.h"
+#include <ctype.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
 
 
+#include "Platform.h"
+#include "SplitVector.h"
+#include "Partitioning.h"
+#include "RunStyles.h"
 #include "Scintilla.h"
 #include "Scintilla.h"
+#include "ScintillaWidget.h"
 #ifdef SCI_LEXER
 #include "SciLexer.h"
 #include "PropSet.h"
 #ifdef SCI_LEXER
 #include "SciLexer.h"
 #include "PropSet.h"
 #include "CallTip.h"
 #include "KeyMap.h"
 #include "Indicator.h"
 #include "CallTip.h"
 #include "KeyMap.h"
 #include "Indicator.h"
+#include "XPM.h"
 #include "LineMarker.h"
 #include "Style.h"
 #include "LineMarker.h"
 #include "Style.h"
-#include "ViewStyle.h"
 #include "AutoComplete.h"
 #include "AutoComplete.h"
+#include "ViewStyle.h"
+#include "CharClassify.h"
+#include "Decoration.h"
 #include "Document.h"
 #include "Document.h"
+#include "Selection.h"
+#include "PositionCache.h"
 #include "Editor.h"
 #include "Editor.h"
+#include "PropSetSimple.h"
 #include "ScintillaBase.h"
 
 #include "ScintillaBase.h"
 
-#include <wx/wx.h>
-#include <wx/dataobj.h>
-#include <wx/clipbrd.h>
-#include <wx/dnd.h>
+#ifdef __WXMSW__
+#include "wx/msw/wrapwin.h"                     // HBITMAP
+#endif
+#if wxUSE_DRAG_AND_DROP
+#include "wx/timer.h"
+#endif
 
 //----------------------------------------------------------------------
 
 
 //----------------------------------------------------------------------
 
-class wxStyledTextCtrl;           // forward
+
+class WXDLLIMPEXP_FWD_CORE wxDC;
+class WXDLLIMPEXP_FWD_STC wxStyledTextCtrl;           // forward
 class ScintillaWX;
 
 
 //----------------------------------------------------------------------
 // Helper classes
 
 class ScintillaWX;
 
 
 //----------------------------------------------------------------------
 // Helper classes
 
+#if wxUSE_DRAG_AND_DROP
 class wxSTCDropTarget : public wxTextDropTarget {
 public:
     void SetScintilla(ScintillaWX* swx) {
 class wxSTCDropTarget : public wxTextDropTarget {
 public:
     void SetScintilla(ScintillaWX* swx) {
-        this->swx = swx;
+        m_swx = swx;
     }
 
     bool OnDropText(wxCoord x, wxCoord y, const wxString& data);
     }
 
     bool OnDropText(wxCoord x, wxCoord y, const wxString& data);
@@ -68,9 +88,9 @@ public:
     void OnLeave();
 
 private:
     void OnLeave();
 
 private:
-    ScintillaWX* swx;
+    ScintillaWX* m_swx;
 };
 };
-
+#endif
 
 //----------------------------------------------------------------------
 
 
 //----------------------------------------------------------------------
 
@@ -84,6 +104,7 @@ public:
     virtual void Initialise();
     virtual void Finalise();
     virtual void StartDrag();
     virtual void Initialise();
     virtual void Finalise();
     virtual void StartDrag();
+    virtual bool SetIdle(bool on);
     virtual void SetTicking(bool on);
     virtual void SetMouseCapture(bool on);
     virtual bool HaveMouseCapture();
     virtual void SetTicking(bool on);
     virtual void SetMouseCapture(bool on);
     virtual bool HaveMouseCapture();
@@ -93,16 +114,25 @@ public:
     virtual bool ModifyScrollBars(int nMax, int nPage);
     virtual void Copy();
     virtual void Paste();
     virtual bool ModifyScrollBars(int nMax, int nPage);
     virtual void Copy();
     virtual void Paste();
+    virtual void CopyToClipboard(const SelectionText &selectedText);
+
     virtual void CreateCallTipWindow(PRectangle rc);
     virtual void AddToPopUp(const char *label, int cmd = 0, bool enabled = true);
     virtual void ClaimSelection();
 
     virtual void CreateCallTipWindow(PRectangle rc);
     virtual void AddToPopUp(const char *label, int cmd = 0, bool enabled = true);
     virtual void ClaimSelection();
 
-    virtual LRESULT DefWndProc(UINT iMessage, WPARAM wParam, LPARAM lParam);
-    virtual LRESULT WndProc(UINT iMessage, WPARAM wParam, LPARAM lParam);
+    virtual sptr_t DefWndProc(unsigned int iMessage,
+                              uptr_t wParam,
+                              sptr_t lParam);
+    virtual sptr_t WndProc(unsigned int iMessage,
+                           uptr_t wParam,
+                           sptr_t lParam);
 
     virtual void NotifyChange();
     virtual void NotifyParent(SCNotification scn);
 
 
     virtual void NotifyChange();
     virtual void NotifyParent(SCNotification scn);
 
+    virtual void CancelModes();
+
+    virtual void UpdateSystemCaret();
 
     // Event delegates
     void DoPaint(wxDC* dc, wxRect rect);
 
     // Event delegates
     void DoPaint(wxDC* dc, wxRect rect);
@@ -112,36 +142,62 @@ public:
     void DoLoseFocus();
     void DoGainFocus();
     void DoSysColourChange();
     void DoLoseFocus();
     void DoGainFocus();
     void DoSysColourChange();
-    void DoButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt);
-    void DoButtonUp(Point pt, unsigned int curTime, bool ctrl);
-    void DoButtonMove(Point pt);
-    void DoAddChar(char ch);
-    int  DoKeyDown(int key, bool shift, bool ctrl, bool alt);
+    void DoLeftButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt);
+    void DoLeftButtonUp(Point pt, unsigned int curTime, bool ctrl);
+    void DoLeftButtonMove(Point pt);
+    void DoMiddleButtonUp(Point pt);
+    void DoMouseWheel(int rotation, int delta, int linesPerAction, int ctrlDown, bool isPageScroll);
+    void DoAddChar(int key);
+    int  DoKeyDown(const wxKeyEvent& event, bool* consumed);
     void DoTick() { Tick(); }
     void DoTick() { Tick(); }
+    void DoOnIdle(wxIdleEvent& evt);
 
 
+#if wxUSE_DRAG_AND_DROP
     bool DoDropText(long x, long y, const wxString& data);
     wxDragResult DoDragEnter(wxCoord x, wxCoord y, wxDragResult def);
     wxDragResult DoDragOver(wxCoord x, wxCoord y, wxDragResult def);
     void DoDragLeave();
     bool DoDropText(long x, long y, const wxString& data);
     wxDragResult DoDragEnter(wxCoord x, wxCoord y, wxDragResult def);
     wxDragResult DoDragOver(wxCoord x, wxCoord y, wxDragResult def);
     void DoDragLeave();
+#endif
 
     void DoCommand(int ID);
     void DoContextMenu(Point pt);
 
     void DoCommand(int ID);
     void DoContextMenu(Point pt);
+    void DoOnListBox();
 
 
     // helpers
     void FullPaint();
 
 
     // helpers
     void FullPaint();
+    void FullPaintDC(wxDC* dc);
     bool CanPaste();
     bool GetHideSelection() { return hideSelection; }
     void DoScrollToLine(int line);
     void DoScrollToColumn(int column);
     bool CanPaste();
     bool GetHideSelection() { return hideSelection; }
     void DoScrollToLine(int line);
     void DoScrollToColumn(int column);
+    void ClipChildren(wxDC& dc, PRectangle rect);
+    void SetUseAntiAliasing(bool useAA);
+    bool GetUseAntiAliasing();
 
 private:
     bool                capturedMouse;
 
 private:
     bool                capturedMouse;
+    bool                focusEvent;
     wxStyledTextCtrl*   stc;
 
     wxStyledTextCtrl*   stc;
 
-    wxTextDataObject    textDO;
-    wxSTCDropTarget     dropTarget;
+#if wxUSE_DRAG_AND_DROP
+    wxSTCDropTarget*    dropTarget;
     wxDragResult        dragResult;
     wxDragResult        dragResult;
+#endif
+
+    int                 wheelRotation;
+
+    // For use in creating a system caret
+    bool HasCaretSizeChanged();
+    bool CreateSystemCaret();
+    bool DestroySystemCaret();
+#ifdef __WXMSW__
+    HBITMAP sysCaretBitmap;
+    int sysCaretWidth;
+    int sysCaretHeight;
+#endif
+   
+    friend class wxSTCCallTip;
 };
 
 //----------------------------------------------------------------------
 };
 
 //----------------------------------------------------------------------