From: Markus R. <rol...@us...> - 2007-06-23 13:36:37
|
Update of /cvsroot/simspark/simspark/contrib/rsgedit/wxscintilla/src In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv29374/contrib/rsgedit/wxscintilla/src Added Files: PlatWX.cpp PlatWX.h ScintillaWX.cpp ScintillaWX.h wxscintilla.cpp Log Message: - merged RSGEDIT_SCINTILLA branch --- NEW FILE: PlatWX.h --- wxRect wxRectFromPRectangle(PRectangle prc); PRectangle PRectangleFromwxRect(wxRect rc); wxColour wxColourFromCA(const ColourAllocated& ca); --- NEW FILE: PlatWX.cpp --- // Scintilla source code edit control // PlatWX.cxx - implementation of platform facilities on wxWidgets // Copyright 1998-1999 by Neil Hodgson <ne...@sc...> // Robin Dunn <ro...@al...> // The License.txt file describes the conditions under which this software may be distributed. #include <ctype.h> #include <wx/wx.h> #include <wx/encconv.h> #include <wx/listctrl.h> #include <wx/mstream.h> #include <wx/image.h> #include <wx/imaglist.h> #include <wx/tokenzr.h> #include "Platform.h" #include "PlatWX.h" #include "wx/wxscintilla.h" [...1407 lines suppressed...] size_t actualLen = UCS2FromUTF8(str, len, buffer.data(), wclen+1); return wxString(buffer.data(), actualLen); } const wxWX2MBbuf wx2stc(const wxString& str) { const wchar_t* wcstr = str.c_str(); size_t wclen = str.length(); size_t len = UTF8Length(wcstr, wclen); wxCharBuffer buffer(len+1); UTF8FromUCS2(wcstr, wclen, buffer.data(), len); // TODO check NULL termination!! return buffer; } #endif --- NEW FILE: wxscintilla.cpp --- //////////////////////////////////////////////////////////////////////////// // Name: wxscintilla.cpp // Purpose: A wxWidgets implementation of Scintilla. This class is the // one meant to be used directly by wx applications. It does not // derive directly from the Scintilla classes, but instead // delegates most things to the real Scintilla class. // This allows the use of Scintilla without polluting the // namespace with all the classes and identifiers from Scintilla. // // Author: Robin Dunn // // Created: 13-Jan-2000 // RCS-ID: $Id: wxscintilla.cpp,v 1.2 2007/06/23 13:36:29 rollmark Exp $ // Copyright: (c) 2004 wxCode // Licence: wxWindows ///////////////////////////////////////////////////////////////////////////// #include <ctype.h> [...3305 lines suppressed...] m_linesAdded = event.m_linesAdded; m_line = event.m_line; m_foldLevelNow = event.m_foldLevelNow; m_foldLevelPrev = event.m_foldLevelPrev; m_margin = event.m_margin; m_message = event.m_message; m_wParam = event.m_wParam; m_lParam = event.m_lParam; m_listType = event.m_listType; m_x = event.m_x; m_y = event.m_y; m_dragText = event.m_dragText; m_dragAllowMove = event.m_dragAllowMove; #if wxUSE_DRAG_AND_DROP m_dragResult = event.m_dragResult; #endif } //---------------------------------------------------------------------- //---------------------------------------------------------------------- --- NEW FILE: ScintillaWX.cpp --- //////////////////////////////////////////////////////////////////////////// // Name: ScintillaWX.cxx // Purpose: A wxWidgets implementation of Scintilla. A class derived // from ScintillaBase that uses the "wx platform" defined in // PlatformWX.cxx This class is one end of a bridge between // the wx world and the Scintilla world. It needs a peer // object of type wxScintilla to function. // // Author: Robin Dunn // // Created: 13-Jan-2000 // RCS-ID: $Id: ScintillaWX.cpp,v 1.2 2007/06/23 13:36:29 rollmark Exp $ // Copyright: (c) 2000 by Total Control Software // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// #include "ScintillaWX.h" //?#include "ExternalLexer.h" #include "PlatWX.h" [...1140 lines suppressed...] dc.SetClippingRegion(rgn); #endif } #else void ScintillaWX::ClipChildren(wxDC& WXUNUSED(dc), PRectangle WXUNUSED(rect)) { } #endif void ScintillaWX::SetUseAntiAliasing(bool useAA) { vs.extraFontFlag = useAA; InvalidateStyleRedraw(); } bool ScintillaWX::GetUseAntiAliasing() { return vs.extraFontFlag; } //---------------------------------------------------------------------- //---------------------------------------------------------------------- --- NEW FILE: ScintillaWX.h --- //////////////////////////////////////////////////////////////////////////// // Name: 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 // object of type wxScintilla to function. // // Author: Robin Dunn // // Created: 13-Jan-2000 // RCS-ID: $Id: ScintillaWX.h,v 1.2 2007/06/23 13:36:29 rollmark Exp $ // Copyright: (c) 2000 by Total Control Software // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// #ifndef __ScintillaWX_h__ #define __ScintillaWX_h__ //---------------------------------------------------------------------- #include <ctype.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include "Platform.h" #include "Scintilla.h" #include "XPM.h" #ifdef SCI_LEXER #include "SciLexer.h" #include "PropSet.h" #include "Accessor.h" #include "KeyWords.h" #endif #include "ContractionState.h" #include "SVector.h" #include "CellBuffer.h" #include "CallTip.h" #include "KeyMap.h" #include "Indicator.h" #include "LineMarker.h" #include "Style.h" #include "ViewStyle.h" #include "AutoComplete.h" #include "CharClassify.h" #include "RESearch.h" #include "Document.h" #include "Editor.h" #include "ScintillaBase.h" #include <wx/wx.h> #include <wx/dataobj.h> #include <wx/clipbrd.h> #include <wx/dnd.h> //---------------------------------------------------------------------- #ifdef WXMAKINGDLL_SCI #define WXDLLIMPEXP_SCI WXEXPORT #elif defined(WXUSINGDLL) #define WXDLLIMPEXP_SCI WXIMPORT #else // not making nor using DLL #define WXDLLIMPEXP_SCI #endif class WXDLLIMPEXP_SCI wxScintilla; // forward class ScintillaWX; //---------------------------------------------------------------------- // Helper classes #if wxUSE_DRAG_AND_DROP class wxSCIDropTarget : public wxTextDropTarget { public: void SetScintilla(ScintillaWX* swx) { this->swx = swx; } bool OnDropText(wxCoord x, wxCoord y, const wxString& data); wxDragResult OnEnter(wxCoord x, wxCoord y, wxDragResult def); wxDragResult OnDragOver(wxCoord x, wxCoord y, wxDragResult def); void OnLeave(); private: ScintillaWX* swx; }; #endif //---------------------------------------------------------------------- class ScintillaWX : public ScintillaBase { public: ScintillaWX(wxScintilla* win); ~ScintillaWX(); // base class virtuals 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 ScrollText(int linesToMove); virtual void SetVerticalScrollPos(); virtual void SetHorizontalScrollPos(); 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 long DefWndProc(unsigned int iMessage, unsigned long wParam, long lParam); virtual long WndProc(unsigned int iMessage, unsigned long wParam, long lParam); virtual void NotifyChange(); virtual void NotifyParent(SCNotification scn); virtual void CancelModes(); virtual void UpdateSystemCaret(); // Event delegates void DoPaint(wxDC* dc, wxRect rect); void DoHScroll(int type, int pos); void DoVScroll(int type, int pos); void DoSize(int width, int height); void DoLoseFocus(); void DoGainFocus(); void DoSysColourChange(); 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 DoOnIdle(wxIdleEvent& evt); void DoStartDrag(); #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(); #endif void DoCommand(int ID); void DoContextMenu(Point pt); void DoOnListBox(); // helpers void FullPaint(); 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; bool focusEvent; wxScintilla* sci; #if wxUSE_DRAG_AND_DROP wxSCIDropTarget* dropTarget; wxDragResult dragResult; bool dragRectangle; wxTimer* startDragTimer; #endif int wheelRotation; // For use in creating a system caret bool HasCaretSizeChanged(); bool CreateSystemCaret(); bool DestroySystemCaret(); #ifdef __WXMSW__ #if wxCHECK_VERSION(2, 5, 0) HBITMAP sysCaretBitmap; int sysCaretWidth; int sysCaretHeight; #endif #endif friend class wxSCICallTip; }; //---------------------------------------------------------------------- #endif |