PageRenderTime 41ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/ScintillaNET/Scintilla.INativeScintilla.cs

https://bitbucket.org/nekokun/nekokun
C# | 3611 lines | 2293 code | 1078 blank | 240 comment | 115 complexity | 91ca24d9c4b2d03877d8de6e21307ce1 MD5 | raw file
Possible License(s): MIT, CC-BY-SA-3.0
  1. #region Using Directives
  2. using System;
  3. using System.Drawing;
  4. using System.Text;
  5. using System.Windows.Forms;
  6. #endregion Using Directives
  7. namespace ScintillaNET
  8. {
  9. public partial class Scintilla
  10. {
  11. #region Fields
  12. private static readonly object _autoCSelectionEventKey = new object();
  13. private static readonly object _callTipClickEventKeyNative = new object();
  14. private static readonly object _charAddedEventKeyNative = new object();
  15. private static readonly object _doubleClickEventKey = new object();
  16. private static readonly object _dwellEndEventKeyNative = new object();
  17. private static readonly object _dwellStartEventKeyNative = new object();
  18. private static readonly object _hotspotClickEventKey = new object();
  19. private static readonly object _hotspotDoubleClickEventKey = new object();
  20. private static readonly object _indicatorClickKeyNative = new object();
  21. private static readonly object _indicatorReleaseKeyNative = new object();
  22. private static readonly object _keyEventKey = new object();
  23. private static readonly object _macroRecordEventKeyNative = new object();
  24. private static readonly object _marginClickEventKeyNative = new object();
  25. private static readonly object _modifiedEventKey = new object();
  26. private static readonly object _modifyAttemptROEventKey = new object();
  27. private static readonly object _needShownEventKey = new object();
  28. private static readonly object _paintedEventKey = new object();
  29. private static readonly object _savePointLeftEventKeyNative = new object();
  30. private static readonly object _savePointReachedEventKeyNative = new object();
  31. private static readonly object _styleNeededEventKeyNative = new object();
  32. private static readonly object _updateUIEventKey = new object();
  33. private static readonly object _uriDroppedEventKeyNative = new object();
  34. private static readonly object _userListSelectionEventKeyNative = new object();
  35. private static readonly object _zoomEventKey = new object();
  36. private LastSelection lastSelection = new LastSelection();
  37. private const uint TEXT_MODIFIED_FLAGS = Constants.SC_MOD_BEFOREDELETE | Constants.SC_MOD_BEFOREINSERT |
  38. Constants.SC_MOD_DELETETEXT | Constants.SC_MOD_INSERTTEXT;
  39. #endregion Fields
  40. #region Methods
  41. internal void FireAutoCSelection(NativeScintillaEventArgs ea)
  42. {
  43. if (Events[_autoCSelectionEventKey] != null)
  44. ((EventHandler<NativeScintillaEventArgs>)Events[_autoCSelectionEventKey])(this, ea);
  45. OnAutoCompleteAccepted(new AutoCompleteAcceptedEventArgs(ea.SCNotification, _encoding));
  46. }
  47. internal void FireCallTipClick(NativeScintillaEventArgs ea)
  48. {
  49. if(Events[_callTipClickEventKeyNative] != null)
  50. ((EventHandler<NativeScintillaEventArgs>)Events[_callTipClickEventKeyNative])(this, ea);
  51. FireCallTipClick(ea.SCNotification.position);
  52. }
  53. internal void FireCharAdded(NativeScintillaEventArgs ea)
  54. {
  55. if(Events[_charAddedEventKeyNative] != null)
  56. ((EventHandler<NativeScintillaEventArgs>)Events[_charAddedEventKeyNative])(this, ea);
  57. OnCharAdded(new CharAddedEventArgs(ea.SCNotification.ch));
  58. }
  59. internal void FireDoubleClick(NativeScintillaEventArgs ea)
  60. {
  61. if(Events[_doubleClickEventKey] != null)
  62. ((EventHandler<NativeScintillaEventArgs>)Events[_doubleClickEventKey])(this, ea);
  63. }
  64. internal void FireDwellEnd(NativeScintillaEventArgs ea)
  65. {
  66. if(Events[_dwellEndEventKeyNative] != null)
  67. ((EventHandler<NativeScintillaEventArgs>)Events[_dwellEndEventKeyNative])(this, ea);
  68. OnDwellEnd(new ScintillaMouseEventArgs(ea.SCNotification.x, ea.SCNotification.y, ea.SCNotification.position));
  69. }
  70. internal void FireDwellStart(NativeScintillaEventArgs ea)
  71. {
  72. if(Events[_dwellStartEventKeyNative] != null)
  73. ((EventHandler<NativeScintillaEventArgs>)Events[_dwellStartEventKeyNative])(this, ea);
  74. OnDwellStart(new ScintillaMouseEventArgs(ea.SCNotification.x, ea.SCNotification.y, ea.SCNotification.position));
  75. }
  76. internal void FireIndicatorClick(NativeScintillaEventArgs ea)
  77. {
  78. if (Events[_indicatorClickKeyNative] != null)
  79. ((EventHandler<NativeScintillaEventArgs>)Events[_indicatorClickKeyNative])(this, ea);
  80. OnIndicatorClick(new ScintillaMouseEventArgs(ea.SCNotification.x, ea.SCNotification.y, ea.SCNotification.position));
  81. }
  82. internal void FireIndicatorRelease(NativeScintillaEventArgs ea)
  83. {
  84. if (Events[_indicatorReleaseKeyNative] != null)
  85. ((EventHandler<NativeScintillaEventArgs>)Events[_indicatorReleaseKeyNative])(this, ea);
  86. }
  87. internal void FireKey(NativeScintillaEventArgs ea)
  88. {
  89. if(Events[_keyEventKey] != null)
  90. ((EventHandler<NativeScintillaEventArgs>)Events[_keyEventKey])(this, ea);
  91. }
  92. internal void FireMacroRecord(NativeScintillaEventArgs ea)
  93. {
  94. if(Events[_macroRecordEventKeyNative] != null)
  95. ((EventHandler<NativeScintillaEventArgs>)Events[_macroRecordEventKeyNative])(this, ea);
  96. OnMacroRecord(new MacroRecordEventArgs(ea));
  97. }
  98. internal void FireMarginClick(NativeScintillaEventArgs ea)
  99. {
  100. if(Events[_marginClickEventKeyNative] != null)
  101. ((EventHandler<NativeScintillaEventArgs>)Events[_marginClickEventKeyNative])(this, ea);
  102. FireMarginClick(ea.SCNotification);
  103. }
  104. private void FireModified(NativeScintillaEventArgs ea)
  105. {
  106. // First we fire the INativeScintilla Modified event.
  107. if(Events[_modifiedEventKey] != null)
  108. ((EventHandler<NativeScintillaEventArgs>)Events[_modifiedEventKey])(this, ea);
  109. // Now we use raw information from the Modified event to construct
  110. // some more user friendly Events to fire.
  111. SCNotification scn = ea.SCNotification;
  112. int modType = scn.modificationType;
  113. if((modType & TEXT_MODIFIED_FLAGS) > 0)
  114. {
  115. TextModifiedEventArgs mea = new TextModifiedEventArgs
  116. (
  117. modType,
  118. (modType & Constants.SC_PERFORMED_USER) != 0,
  119. scn.line,
  120. scn.position,
  121. scn.length,
  122. scn.linesAdded,
  123. Utilities.IntPtrToString(_encoding, scn.text, scn.length)
  124. );
  125. // These messages all get fired seperately hence the if else ifs
  126. if ((modType & Constants.SC_MOD_BEFOREDELETE) > 0)
  127. {
  128. OnBeforeTextDelete(mea);
  129. }
  130. else if ((modType & Constants.SC_MOD_BEFOREINSERT) > 0)
  131. {
  132. OnBeforeTextInsert(mea);
  133. }
  134. else if ((modType & Constants.SC_MOD_DELETETEXT) > 0)
  135. {
  136. OnTextDeleted(mea);
  137. }
  138. else if ((modType & Constants.SC_MOD_INSERTTEXT) > 0)
  139. {
  140. OnTextInserted(mea);
  141. }
  142. }
  143. else if((modType & Constants.SC_MOD_CHANGEFOLD) > 0)
  144. {
  145. FoldChangedEventArgs fea = new FoldChangedEventArgs(scn.line, scn.foldLevelNow, scn.foldLevelPrev, scn.modificationType);
  146. OnFoldChanged(fea);
  147. }
  148. else if((modType & Constants.SC_MOD_CHANGESTYLE) > 0)
  149. {
  150. StyleChangedEventArgs sea = new StyleChangedEventArgs(scn.position, scn.length, scn.modificationType);
  151. OnStyleChanged(sea);
  152. }
  153. else if((modType & Constants.SC_MOD_CHANGEMARKER) > 0)
  154. {
  155. MarkerChangedEventArgs mea = new MarkerChangedEventArgs(scn.line, scn.modificationType);
  156. OnMarkerChanged(mea);
  157. }
  158. OnDocumentChange(ea);
  159. }
  160. internal void FireModifyAttemptRO(NativeScintillaEventArgs ea)
  161. {
  162. if(Events[_modifyAttemptROEventKey] != null)
  163. ((EventHandler<NativeScintillaEventArgs>)Events[_modifyAttemptROEventKey])(this, ea);
  164. OnReadOnlyModifyAttempt(EventArgs.Empty);
  165. }
  166. internal void FireNeedShown(NativeScintillaEventArgs ea)
  167. {
  168. if(Events[_needShownEventKey] != null)
  169. ((EventHandler<NativeScintillaEventArgs>)Events[_needShownEventKey])(this, ea);
  170. // Again, this shoold look familiar...
  171. int pos = ea.SCNotification.position;
  172. int firstLine = _ns.LineFromPosition(pos);
  173. int lastLine = _ns.LineFromPosition(pos + ea.SCNotification.length - 1);
  174. OnLinesNeedShown(new LinesNeedShownEventArgs(firstLine, lastLine));
  175. }
  176. internal void FirePainted(NativeScintillaEventArgs ea)
  177. {
  178. if(Events[_paintedEventKey] != null)
  179. ((EventHandler<NativeScintillaEventArgs>)Events[_paintedEventKey])(this, ea);
  180. }
  181. internal void FireSavePointLeft(NativeScintillaEventArgs ea)
  182. {
  183. if(Events[_savePointLeftEventKeyNative] != null)
  184. ((EventHandler<NativeScintillaEventArgs>)Events[_savePointLeftEventKeyNative])(this, ea);
  185. // Update the local property (and if necessary raise the changed event)
  186. Modified = true;
  187. }
  188. internal void FireSavePointReached(NativeScintillaEventArgs ea)
  189. {
  190. if(Events[_savePointReachedEventKeyNative] != null)
  191. ((EventHandler<NativeScintillaEventArgs>)Events[_savePointReachedEventKeyNative])(this, ea);
  192. // Update the local property (and if necessary raise the changed event)
  193. Modified = false;
  194. }
  195. internal void FireStyleNeeded(NativeScintillaEventArgs ea)
  196. {
  197. if(Events[_styleNeededEventKeyNative] != null)
  198. ((EventHandler<NativeScintillaEventArgs>)Events[_styleNeededEventKeyNative])(this, ea);
  199. // TODO: When this event fires it fires A LOT over and over again if
  200. // you don't actually style the document. Additionally I'm making 2
  201. // more calls to Scintilla to get the Start position of the style
  202. // range. I need to come up with a good way to supress this logic
  203. // unless the client app is actually interested in it.
  204. // Now that we've fired the Native event we do the same for the
  205. // SourceEdit's StyleNeeded event. This code should look VERY familliar
  206. // to anyone who's read the Scintilla Documentation
  207. int startPos = _ns.GetEndStyled();
  208. int lineNumber = _ns.LineFromPosition(startPos);
  209. startPos = _ns.PositionFromLine(lineNumber);
  210. StyleNeededEventArgs snea = new StyleNeededEventArgs(new Range(startPos, ea.SCNotification.position, this));
  211. OnStyleNeeded(snea);
  212. }
  213. internal void FireUpdateUI(NativeScintillaEventArgs ea)
  214. {
  215. if (Events[_updateUIEventKey] != null)
  216. ((EventHandler<NativeScintillaEventArgs>)Events[_updateUIEventKey])(this, ea);
  217. // The SCN_UPDATEUI Notification message is sent whenever text, style or
  218. // selection range changes. This means that the SelectionChangeEvent could
  219. // potentially fire without the selection actually having changed. However
  220. // I feel that it's important enough that SelectionChanged gets its own
  221. // event.
  222. if (lastSelection.Start != this.Selection.Start
  223. || lastSelection.End != this.Selection.End
  224. || lastSelection.Length != this.Selection.Length)
  225. {
  226. OnSelectionChanged(EventArgs.Empty);
  227. }
  228. //I think the selection changed event should only be fired if the selection differs
  229. //from the selection values in the previous call to this function
  230. //so here we take note of what the selection was last time
  231. lastSelection.Start = this.Selection.Start;
  232. lastSelection.End = this.Selection.End;
  233. lastSelection.Length = this.Selection.Length;
  234. }
  235. internal void FireUriDropped(NativeScintillaEventArgs ea)
  236. {
  237. if(Events[_uriDroppedEventKeyNative] != null)
  238. ((EventHandler<NativeScintillaEventArgs>)Events[_uriDroppedEventKeyNative])(this, ea);
  239. }
  240. internal void FireUserListSelection(NativeScintillaEventArgs ea)
  241. {
  242. if(Events[_userListSelectionEventKeyNative] != null)
  243. ((EventHandler<NativeScintillaEventArgs>)Events[_userListSelectionEventKeyNative])(this, ea);
  244. }
  245. internal void FireZoom(NativeScintillaEventArgs ea)
  246. {
  247. if(Events[_zoomEventKey] != null)
  248. ((EventHandler<NativeScintillaEventArgs>)Events[_zoomEventKey])(this, ea);
  249. OnZoomChanged(EventArgs.Empty);
  250. }
  251. void INativeScintilla.AddRefDocument(IntPtr pDoc)
  252. {
  253. _ns.SendMessageDirect(Constants.SCI_ADDREFDOCUMENT, IntPtr.Zero, pDoc);
  254. }
  255. unsafe void INativeScintilla.AddStyledText(int length, byte[] s)
  256. {
  257. fixed (byte* bp = s)
  258. _ns.SendMessageDirect(Constants.SCI_ADDSTYLEDTEXT, (IntPtr)length, (IntPtr)bp);
  259. }
  260. void INativeScintilla.AddText(int length, string s)
  261. {
  262. _ns.SendMessageDirect(Constants.SCI_ADDTEXT, length, s);
  263. }
  264. void INativeScintilla.Allocate(int bytes)
  265. {
  266. _ns.SendMessageDirect(Constants.SCI_ALLOCATE, bytes, 0);
  267. }
  268. void INativeScintilla.AppendText(int length, string s)
  269. {
  270. _ns.SendMessageDirect(Constants.SCI_APPENDTEXT, length, s);
  271. }
  272. void INativeScintilla.AssignCmdKey(int keyDefinition, int sciCommand)
  273. {
  274. _ns.SendMessageDirect(Constants.SCI_ASSIGNCMDKEY, keyDefinition, sciCommand);
  275. }
  276. bool INativeScintilla.AutoCActive()
  277. {
  278. return _ns.SendMessageDirect(Constants.SCI_AUTOCACTIVE, 0, 0) != 0;
  279. }
  280. void INativeScintilla.AutoCCancel()
  281. {
  282. _ns.SendMessageDirect(Constants.SCI_AUTOCCANCEL, 0, 0);
  283. }
  284. void INativeScintilla.AutoCComplete()
  285. {
  286. _ns.SendMessageDirect(Constants.SCI_AUTOCCOMPLETE, 0, 0);
  287. }
  288. bool INativeScintilla.AutoCGetAutoHide()
  289. {
  290. return _ns.SendMessageDirect(Constants.SCI_AUTOCGETAUTOHIDE, 0, 0) != 0;
  291. }
  292. bool INativeScintilla.AutoCGetCancelAtStart()
  293. {
  294. return _ns.SendMessageDirect(Constants.SCI_AUTOCGETCANCELATSTART, 0, 0) != 0;
  295. }
  296. bool INativeScintilla.AutoCGetChooseSingle()
  297. {
  298. return _ns.SendMessageDirect(Constants.SCI_AUTOCGETCHOOSESINGLE, 0, 0) != 0;
  299. }
  300. int INativeScintilla.AutoCGetCurrent()
  301. {
  302. return _ns.SendMessageDirect(Constants.SCI_AUTOCGETCURRENT, 0, 0);
  303. }
  304. bool INativeScintilla.AutoCGetDropRestOfWord()
  305. {
  306. return _ns.SendMessageDirect(Constants.SCI_AUTOCGETDROPRESTOFWORD, 0, 0) != 0;
  307. }
  308. bool INativeScintilla.AutoCGetIgnoreCase()
  309. {
  310. return _ns.SendMessageDirect(Constants.SCI_AUTOCGETIGNORECASE, 0, 0) != 0;
  311. }
  312. int INativeScintilla.AutoCGetMaxHeight()
  313. {
  314. return _ns.SendMessageDirect(Constants.SCI_AUTOCGETMAXHEIGHT, 0, 0);
  315. }
  316. int INativeScintilla.AutoCGetMaxWidth()
  317. {
  318. return _ns.SendMessageDirect(Constants.SCI_AUTOCGETMAXWIDTH, 0, 0);
  319. }
  320. char INativeScintilla.AutoCGetSeparator()
  321. {
  322. return (char)_ns.SendMessageDirect(Constants.SCI_AUTOCGETSEPARATOR, 0, 0);
  323. }
  324. char INativeScintilla.AutoCGetTypeSeparator()
  325. {
  326. return (char)_ns.SendMessageDirect(Constants.SCI_AUTOCGETTYPESEPARATOR, 0, 0);
  327. }
  328. int INativeScintilla.AutoCPosStart()
  329. {
  330. return _ns.SendMessageDirect(Constants.SCI_AUTOCPOSSTART, 0, 0);
  331. }
  332. void INativeScintilla.AutoCSelect(string select)
  333. {
  334. _ns.SendMessageDirect(Constants.SCI_AUTOCSELECT, VOID.NULL, select);
  335. }
  336. void INativeScintilla.AutoCSetAutoHide(bool autoHide)
  337. {
  338. _ns.SendMessageDirect(Constants.SCI_AUTOCSETAUTOHIDE, autoHide, 0);
  339. }
  340. void INativeScintilla.AutoCSetCancelAtStart(bool cancel)
  341. {
  342. _ns.SendMessageDirect(Constants.SCI_AUTOCSETCANCELATSTART, cancel, 0);
  343. }
  344. void INativeScintilla.AutoCSetChooseSingle(bool chooseSingle)
  345. {
  346. _ns.SendMessageDirect(Constants.SCI_AUTOCSETCHOOSESINGLE, chooseSingle, 0);
  347. }
  348. void INativeScintilla.AutoCSetDropRestOfWord(bool dropRestOfWord)
  349. {
  350. _ns.SendMessageDirect(Constants.SCI_AUTOCSETDROPRESTOFWORD, dropRestOfWord, 0);
  351. }
  352. void INativeScintilla.AutoCSetFillUps(string chars)
  353. {
  354. _ns.SendMessageDirect(Constants.SCI_AUTOCSETFILLUPS, VOID.NULL, chars);
  355. }
  356. void INativeScintilla.AutoCSetIgnoreCase(bool ignoreCase)
  357. {
  358. _ns.SendMessageDirect(Constants.SCI_AUTOCSETIGNORECASE, ignoreCase, 0);
  359. }
  360. void INativeScintilla.AutoCSetMaxHeight(int rowCount)
  361. {
  362. _ns.SendMessageDirect(Constants.SCI_AUTOCSETMAXHEIGHT, rowCount, 0);
  363. }
  364. void INativeScintilla.AutoCSetMaxWidth(int characterCount)
  365. {
  366. _ns.SendMessageDirect(Constants.SCI_AUTOCSETMAXWIDTH, characterCount, 0);
  367. }
  368. void INativeScintilla.AutoCSetSeparator(char separator)
  369. {
  370. _ns.SendMessageDirect(Constants.SCI_AUTOCSETSEPARATOR, separator, 0);
  371. }
  372. void INativeScintilla.AutoCSetTypeSeparator(char separatorCharacter)
  373. {
  374. _ns.SendMessageDirect(Constants.SCI_AUTOCSETTYPESEPARATOR, (int)separatorCharacter, 0);
  375. }
  376. void INativeScintilla.AutoCShow(int lenEntered, string list)
  377. {
  378. _ns.SendMessageDirect(Constants.SCI_AUTOCSHOW, lenEntered, list);
  379. }
  380. void INativeScintilla.AutoCStops(string chars)
  381. {
  382. _ns.SendMessageDirect(Constants.SCI_AUTOCSTOPS, VOID.NULL, chars);
  383. }
  384. void INativeScintilla.BackTab()
  385. {
  386. _ns.SendMessageDirect(Constants.SCI_BACKTAB, 0, 0);
  387. }
  388. void INativeScintilla.BeginUndoAction()
  389. {
  390. _ns.SendMessageDirect(Constants.SCI_BEGINUNDOACTION, 0, 0);
  391. }
  392. void INativeScintilla.BraceBadLight(int pos1)
  393. {
  394. _ns.SendMessageDirect(Constants.SCI_BRACEBADLIGHT, pos1, 0);
  395. }
  396. void INativeScintilla.BraceHighlight(int pos1, int pos2)
  397. {
  398. _ns.SendMessageDirect(Constants.SCI_BRACEHIGHLIGHT, pos1, pos2);
  399. }
  400. int INativeScintilla.BraceMatch(int pos, int maxReStyle)
  401. {
  402. return _ns.SendMessageDirect(Constants.SCI_BRACEMATCH, pos, maxReStyle);
  403. }
  404. bool INativeScintilla.CallTipActive()
  405. {
  406. return _ns.SendMessageDirect(Constants.SCI_CALLTIPACTIVE, 0, 0) != 0;
  407. }
  408. void INativeScintilla.CallTipCancel()
  409. {
  410. _ns.SendMessageDirect(Constants.SCI_CALLTIPCANCEL, 0, 0);
  411. }
  412. int INativeScintilla.CallTipGetPosStart()
  413. {
  414. return _ns.SendMessageDirect(Constants.SCI_CALLTIPPOSSTART, 0, 0);
  415. }
  416. void INativeScintilla.CallTipSetBack(int colour)
  417. {
  418. _ns.SendMessageDirect(Constants.SCI_CALLTIPSETBACK, colour, 0);
  419. }
  420. void INativeScintilla.CallTipSetFore(int colour)
  421. {
  422. _ns.SendMessageDirect(Constants.SCI_CALLTIPSETFORE, colour, 0);
  423. }
  424. void INativeScintilla.CallTipSetForeHlt(int colour)
  425. {
  426. _ns.SendMessageDirect(Constants.SCI_CALLTIPSETFOREHLT, colour, 0);
  427. }
  428. void INativeScintilla.CallTipSetHlt(int hlStart, int hlEnd)
  429. {
  430. _ns.SendMessageDirect(Constants.SCI_CALLTIPSETHLT, hlStart, hlEnd);
  431. }
  432. void INativeScintilla.CallTipShow(int posStart, string definition)
  433. {
  434. _ns.SendMessageDirect(Constants.SCI_CALLTIPSHOW, posStart, definition);
  435. }
  436. void INativeScintilla.CallTipUseStyle(int tabsize)
  437. {
  438. _ns.SendMessageDirect(Constants.SCI_CALLTIPUSESTYLE, tabsize, 0);
  439. }
  440. void INativeScintilla.Cancel()
  441. {
  442. _ns.SendMessageDirect(Constants.SCI_CANCEL, 0, 0);
  443. }
  444. bool INativeScintilla.CanRedo()
  445. {
  446. return _ns.SendMessageDirect(Constants.SCI_CANREDO, 0, 0) != 0;
  447. }
  448. bool INativeScintilla.CanUndo()
  449. {
  450. return _ns.SendMessageDirect(Constants.SCI_CANUNDO, 0, 0) != 0;
  451. }
  452. void INativeScintilla.CharLeft()
  453. {
  454. _ns.SendMessageDirect(Constants.SCI_CHARLEFT, 0, 0);
  455. }
  456. void INativeScintilla.CharLeftExtend()
  457. {
  458. _ns.SendMessageDirect(Constants.SCI_CHARLEFTEXTEND, 0, 0);
  459. }
  460. void INativeScintilla.CharLeftRectExtend()
  461. {
  462. _ns.SendMessageDirect(Constants.SCI_CHARLEFTRECTEXTEND, 0, 0);
  463. }
  464. void INativeScintilla.CharRight()
  465. {
  466. _ns.SendMessageDirect(Constants.SCI_CHARRIGHT, 0, 0);
  467. }
  468. void INativeScintilla.CharRightExtend()
  469. {
  470. _ns.SendMessageDirect(Constants.SCI_CHARRIGHTEXTEND, 0, 0);
  471. }
  472. void INativeScintilla.CharRightRectExtend()
  473. {
  474. _ns.SendMessageDirect(Constants.SCI_CHARRIGHTRECTEXTEND, 0, 0);
  475. }
  476. void INativeScintilla.ChooseCaretX()
  477. {
  478. _ns.SendMessageDirect(Constants.SCI_CHOOSECARETX, 0, 0);
  479. }
  480. void INativeScintilla.Clear()
  481. {
  482. _ns.SendMessageDirect(Constants.SCI_CLEAR, 0, 0);
  483. }
  484. void INativeScintilla.ClearAll()
  485. {
  486. _ns.SendMessageDirect(Constants.SCI_CLEARALL, 0, 0);
  487. }
  488. void INativeScintilla.ClearAllCmdKeys()
  489. {
  490. _ns.SendMessageDirect(Constants.SCI_CLEARALLCMDKEYS, 0, 0);
  491. }
  492. void INativeScintilla.ClearCmdKey(int keyDefinition)
  493. {
  494. _ns.SendMessageDirect(Constants.SCI_CLEARCMDKEY, keyDefinition, 0);
  495. }
  496. void INativeScintilla.ClearDocumentStyle()
  497. {
  498. _ns.SendMessageDirect(Constants.SCI_CLEARDOCUMENTSTYLE, 0, 0);
  499. }
  500. void INativeScintilla.ClearRegisteredImages()
  501. {
  502. _ns.SendMessageDirect(Constants.SCI_CLEARREGISTEREDIMAGES, 0, 0);
  503. }
  504. void INativeScintilla.Colourise(int start, int end)
  505. {
  506. _ns.SendMessageDirect(Constants.SCI_COLOURISE, start, end);
  507. }
  508. void INativeScintilla.ConvertEols(int eolMode)
  509. {
  510. _ns.SendMessageDirect(Constants.SCI_CONVERTEOLS, eolMode, 0);
  511. }
  512. IntPtr INativeScintilla.CreateDocument()
  513. {
  514. return (IntPtr)_ns.SendMessageDirect(Constants.SCI_CREATEDOCUMENT, 0, 0);
  515. }
  516. void INativeScintilla.DeleteBack()
  517. {
  518. _ns.SendMessageDirect(Constants.SCI_DELETEBACK, 0, 0);
  519. }
  520. void INativeScintilla.DeleteBackNotLine()
  521. {
  522. _ns.SendMessageDirect(Constants.SCI_DELETEBACKNOTLINE, 0, 0);
  523. }
  524. void INativeScintilla.DelLineLeft()
  525. {
  526. _ns.SendMessageDirect(Constants.SCI_DELLINELEFT, 0, 0);
  527. }
  528. void INativeScintilla.DelLineRight()
  529. {
  530. _ns.SendMessageDirect(Constants.SCI_DELLINERIGHT, 0, 0);
  531. }
  532. void INativeScintilla.DelWordLeft()
  533. {
  534. _ns.SendMessageDirect(Constants.SCI_DELWORDLEFT, 0, 0);
  535. }
  536. void INativeScintilla.DelWordRight()
  537. {
  538. _ns.SendMessageDirect(Constants.SCI_DELWORDRIGHT, 0, 0);
  539. }
  540. int INativeScintilla.DocLineFromVisible(int displayLine)
  541. {
  542. return _ns.SendMessageDirect(Constants.SCI_DOCLINEFROMVISIBLE, displayLine, 0);
  543. }
  544. void INativeScintilla.DocumentEnd()
  545. {
  546. _ns.SendMessageDirect(Constants.SCI_DOCUMENTEND, 0, 0);
  547. }
  548. void INativeScintilla.DocumentEndExtend()
  549. {
  550. _ns.SendMessageDirect(2319, 0, 0);
  551. }
  552. void INativeScintilla.DocumentStart()
  553. {
  554. _ns.SendMessageDirect(Constants.SCI_DOCUMENTSTART, 0, 0);
  555. }
  556. void INativeScintilla.DocumentStartExtend()
  557. {
  558. _ns.SendMessageDirect(Constants.SCI_DOCUMENTSTARTEXTEND, 0, 0);
  559. }
  560. void INativeScintilla.EditToggleOvertype()
  561. {
  562. _ns.SendMessageDirect(Constants.SCI_EDITTOGGLEOVERTYPE, 0, 0);
  563. }
  564. void INativeScintilla.EmptyUndoBuffer()
  565. {
  566. _ns.SendMessageDirect(Constants.SCI_EMPTYUNDOBUFFER, 0, 0);
  567. }
  568. int INativeScintilla.EncodeFromUtf8(string utf8, out string encoded)
  569. {
  570. throw new NotSupportedException();
  571. }
  572. void INativeScintilla.EndUndoAction()
  573. {
  574. _ns.SendMessageDirect(Constants.SCI_ENDUNDOACTION, 0, 0);
  575. }
  576. void INativeScintilla.EnsureVisible(int line)
  577. {
  578. _ns.SendMessageDirect(Constants.SCI_ENSUREVISIBLE, line, 0);
  579. }
  580. void INativeScintilla.EnsureVisibleEnforcePolicy(int line)
  581. {
  582. _ns.SendMessageDirect(Constants.SCI_ENSUREVISIBLEENFORCEPOLICY, line, 0);
  583. }
  584. int INativeScintilla.FindColumn(int line, int column)
  585. {
  586. return _ns.SendMessageDirect(Constants.SCI_FINDCOLUMN, line, column);
  587. }
  588. unsafe int INativeScintilla.FindText(int searchFlags, ref TextToFind ttf)
  589. {
  590. // {wi17869} 2008-08-15 Chris Rickard
  591. // searchFlags weren't getting sent to SendMessageDirect. IntPtr.Zero was.
  592. // This has been fixed
  593. fixed (TextToFind* ttfp = &ttf)
  594. return (int)_ns.SendMessageDirect(Constants.SCI_FINDTEXT, (IntPtr)searchFlags, (IntPtr)ttfp);
  595. }
  596. unsafe int INativeScintilla.FormatRange(bool bDraw, ref RangeToFormat pfr)
  597. {
  598. fixed (RangeToFormat* rtfp = &pfr)
  599. return (int)_ns.SendMessageDirect(Constants.SCI_FORMATRANGE, (IntPtr)(bDraw ? 1 : 0), (IntPtr)rtfp);
  600. }
  601. void INativeScintilla.FormFeed()
  602. {
  603. _ns.SendMessageDirect(Constants.SCI_FORMFEED, 0, 0);
  604. }
  605. int INativeScintilla.GetAnchor()
  606. {
  607. return _ns.SendMessageDirect(Constants.SCI_GETANCHOR, 0, 0);
  608. }
  609. bool INativeScintilla.GetBackSpaceUnIndents()
  610. {
  611. return _ns.SendMessageDirect(Constants.SCI_GETBACKSPACEUNINDENTS, 0, 0) != 0;
  612. }
  613. bool INativeScintilla.GetBufferedDraw()
  614. {
  615. return _ns.SendMessageDirect(Constants.SCI_GETBUFFEREDDRAW, 0, 0) != 0;
  616. }
  617. int INativeScintilla.GetCaretFore()
  618. {
  619. return _ns.SendMessageDirect(Constants.SCI_GETCARETFORE, 0, 0);
  620. }
  621. int INativeScintilla.GetCaretLineBack()
  622. {
  623. return _ns.SendMessageDirect(Constants.SCI_GETCARETLINEBACK, 0, 0);
  624. }
  625. int INativeScintilla.GetCaretLineBackAlpha()
  626. {
  627. return _ns.SendMessageDirect(Constants.SCI_GETCARETLINEBACKALPHA, 0, 0);
  628. }
  629. bool INativeScintilla.GetCaretLineVisible()
  630. {
  631. return _ns.SendMessageDirect(Constants.SCI_GETCARETLINEVISIBLE, 0, 0) != 0;
  632. }
  633. int INativeScintilla.GetCaretPeriod()
  634. {
  635. return _ns.SendMessageDirect(Constants.SCI_GETCARETPERIOD, 0, 0);
  636. }
  637. bool INativeScintilla.GetCaretSticky()
  638. {
  639. return _ns.SendMessageDirect(Constants.SCI_GETCARETSTICKY, 0, 0) != 0;
  640. }
  641. int INativeScintilla.GetCaretStyle()
  642. {
  643. return _ns.SendMessageDirect(Constants.SCI_GETCARETSTYLE, 0, 0);
  644. }
  645. int INativeScintilla.GetCaretWidth()
  646. {
  647. return _ns.SendMessageDirect(Constants.SCI_GETCARETWIDTH, 0, 0);
  648. }
  649. char INativeScintilla.GetCharAt(int position)
  650. {
  651. return (char)_ns.SendMessageDirect(Constants.SCI_GETCHARAT, position, 0);
  652. }
  653. int INativeScintilla.GetCodePage()
  654. {
  655. return _ns.SendMessageDirect(Constants.SCI_GETCODEPAGE, 0, 0);
  656. }
  657. int INativeScintilla.GetColumn(int position)
  658. {
  659. return _ns.SendMessageDirect(Constants.SCI_GETCOLUMN, position, 0);
  660. }
  661. int INativeScintilla.GetControlCharSymbol()
  662. {
  663. return _ns.SendMessageDirect(Constants.SCI_GETCONTROLCHARSYMBOL, 0, 0);
  664. }
  665. int INativeScintilla.GetCurrentPos()
  666. {
  667. return _ns.SendMessageDirect(Constants.SCI_GETCURRENTPOS, 0, 0);
  668. }
  669. int INativeScintilla.GetCursor()
  670. {
  671. return _ns.SendMessageDirect(Constants.SCI_GETCURSOR, 0, 0);
  672. }
  673. IntPtr INativeScintilla.GetDocPointer()
  674. {
  675. return _ns.SendMessageDirect(Constants.SCI_GETDOCPOINTER, IntPtr.Zero, IntPtr.Zero);
  676. }
  677. int INativeScintilla.GetEdgeColour()
  678. {
  679. return _ns.SendMessageDirect(Constants.SCI_GETEDGECOLOUR, 0, 0);
  680. }
  681. int INativeScintilla.GetEdgeColumn()
  682. {
  683. return _ns.SendMessageDirect(Constants.SCI_GETEDGECOLUMN, 0, 0);
  684. }
  685. int INativeScintilla.GetEdgeMode()
  686. {
  687. return _ns.SendMessageDirect(Constants.SCI_GETEDGEMODE, 0, 0);
  688. }
  689. bool INativeScintilla.GetEndAtLastLine()
  690. {
  691. return _ns.SendMessageDirect(Constants.SCI_GETENDATLASTLINE, 0, 0) != 0;
  692. }
  693. int INativeScintilla.GetEndStyled()
  694. {
  695. return _ns.SendMessageDirect(Constants.SCI_GETENDSTYLED, 0, 0);
  696. }
  697. int INativeScintilla.GetEolMode()
  698. {
  699. return _ns.SendMessageDirect(Constants.SCI_GETEOLMODE, 0, 0);
  700. }
  701. int INativeScintilla.GetFirstVisibleLine()
  702. {
  703. return _ns.SendMessageDirect(Constants.SCI_GETFIRSTVISIBLELINE, 0, 0);
  704. }
  705. bool INativeScintilla.GetFocus()
  706. {
  707. return _ns.SendMessageDirect(Constants.SCI_GETFOCUS, 0, 0) != 0;
  708. }
  709. bool INativeScintilla.GetFoldExpanded(int line)
  710. {
  711. return _ns.SendMessageDirect(Constants.SCI_GETFOLDEXPANDED, line, 0) != 0;
  712. }
  713. uint INativeScintilla.GetFoldLevel(int line)
  714. {
  715. return (uint)_ns.SendMessageDirect(Constants.SCI_GETFOLDLEVEL, line, 0);
  716. }
  717. int INativeScintilla.GetFoldParent(int line)
  718. {
  719. return _ns.SendMessageDirect(Constants.SCI_GETFOLDPARENT, line, 0);
  720. }
  721. int INativeScintilla.GetHighlightGuide()
  722. {
  723. return _ns.SendMessageDirect(Constants.SCI_GETHIGHLIGHTGUIDE, 0, 0);
  724. }
  725. int INativeScintilla.GetHotspotActiveBack()
  726. {
  727. return _ns.SendMessageDirect(Constants.SCI_GETHOTSPOTACTIVEBACK, 0, 0);
  728. }
  729. int INativeScintilla.GetHotspotActiveFore()
  730. {
  731. return _ns.SendMessageDirect(Constants.SCI_GETHOTSPOTACTIVEFORE, 0, 0);
  732. }
  733. bool INativeScintilla.GetHotspotActiveUnderline()
  734. {
  735. return _ns.SendMessageDirect(Constants.SCI_GETHOTSPOTACTIVEUNDERLINE, 0, 0) != 0;
  736. }
  737. bool INativeScintilla.GetHotspotSingleLine()
  738. {
  739. return _ns.SendMessageDirect(Constants.SCI_GETHOTSPOTSINGLELINE, 0, 0) != 0;
  740. }
  741. bool INativeScintilla.GetHScrollBar()
  742. {
  743. return _ns.SendMessageDirect(Constants.SCI_GETHSCROLLBAR, 0, 0) != 0;
  744. }
  745. int INativeScintilla.GetIndent()
  746. {
  747. return _ns.SendMessageDirect(Constants.SCI_GETINDENT, 0, 0);
  748. }
  749. bool INativeScintilla.GetIndentationGuides()
  750. {
  751. return _ns.SendMessageDirect(Constants.SCI_GETINDENTATIONGUIDES, 0, 0) != 0;
  752. }
  753. int INativeScintilla.GetIndicatorCurrent()
  754. {
  755. return _ns.SendMessageDirect(Constants.SCI_GETINDICATORCURRENT, 0, 0);
  756. }
  757. int INativeScintilla.GetIndicatorValue()
  758. {
  759. return _ns.SendMessageDirect(Constants.SCI_GETINDICATORVALUE, 0, 0);
  760. }
  761. int INativeScintilla.GetLastChild(int line, int level)
  762. {
  763. return _ns.SendMessageDirect(Constants.SCI_GETLASTCHILD, line, level);
  764. }
  765. int INativeScintilla.GetLength()
  766. {
  767. return _ns.SendMessageDirect(Constants.SCI_GETLENGTH, 0, 0);
  768. }
  769. int INativeScintilla.GetLexer()
  770. {
  771. return _ns.SendMessageDirect(Constants.SCI_GETLEXER, 0, 0);
  772. }
  773. int INativeScintilla.GetLine(int line, out string text)
  774. {
  775. int length = _ns.SendMessageDirect(Constants.SCI_GETLINE, line, 0);
  776. if (length == 0)
  777. {
  778. text = string.Empty;
  779. return 0;
  780. }
  781. return _ns.SendMessageDirect(Constants.SCI_GETLINE, (IntPtr)line, out text, length);
  782. }
  783. int INativeScintilla.GetLineEndPosition(int line)
  784. {
  785. return _ns.SendMessageDirect(Constants.SCI_GETLINEENDPOSITION, line, 0);
  786. }
  787. int INativeScintilla.GetLineIndentation(int line)
  788. {
  789. return _ns.SendMessageDirect(Constants.SCI_GETLINEINDENTATION, line, 0);
  790. }
  791. int INativeScintilla.GetLineIndentPosition(int line)
  792. {
  793. return _ns.SendMessageDirect(Constants.SCI_GETLINEINDENTPOSITION, line, 0);
  794. }
  795. int INativeScintilla.GetLineSelEndPosition(int line)
  796. {
  797. return _ns.SendMessageDirect(Constants.SCI_GETLINESELENDPOSITION, line, 0);
  798. }
  799. int INativeScintilla.GetLineSelStartPosition(int line)
  800. {
  801. return _ns.SendMessageDirect(Constants.SCI_GETLINESELSTARTPOSITION, line, 0);
  802. }
  803. int INativeScintilla.GetLineState(int line)
  804. {
  805. return _ns.SendMessageDirect(Constants.SCI_GETLINESTATE, line, 0);
  806. }
  807. bool INativeScintilla.GetLineVisible(int line)
  808. {
  809. return _ns.SendMessageDirect(Constants.SCI_GETLINEVISIBLE, line, 0) != 0;
  810. }
  811. int INativeScintilla.GetMarginLeft()
  812. {
  813. return _ns.SendMessageDirect(Constants.SCI_GETMARGINLEFT, 0, 0);
  814. }
  815. int INativeScintilla.GetMarginMaskN(int margin)
  816. {
  817. return _ns.SendMessageDirect(Constants.SCI_GETMARGINMASKN, margin, 0);
  818. }
  819. int INativeScintilla.GetMarginRight()
  820. {
  821. return _ns.SendMessageDirect(Constants.SCI_GETMARGINRIGHT, 0, 0);
  822. }
  823. bool INativeScintilla.GetMarginSensitiveN(int margin)
  824. {
  825. return _ns.SendMessageDirect(Constants.SCI_GETMARGINSENSITIVEN, margin, 0) != 0;
  826. }
  827. int INativeScintilla.GetMarginTypeN(int margin)
  828. {
  829. return _ns.SendMessageDirect(Constants.SCI_GETMARGINTYPEN, margin, 0);
  830. }
  831. int INativeScintilla.GetMarginWidthN(int margin)
  832. {
  833. return _ns.SendMessageDirect(Constants.SCI_GETMARGINWIDTHN, margin, 0);
  834. }
  835. int INativeScintilla.GetMaxLineState()
  836. {
  837. return _ns.SendMessageDirect(Constants.SCI_GETMAXLINESTATE, 0, 0);
  838. }
  839. int INativeScintilla.GetModEventMask()
  840. {
  841. return _ns.SendMessageDirect(Constants.SCI_GETMODEVENTMASK, 0, 0);
  842. }
  843. bool INativeScintilla.GetModify()
  844. {
  845. return _ns.SendMessageDirect(Constants.SCI_GETMODIFY, 0, 0) != 0;
  846. }
  847. bool INativeScintilla.GetMouseDownCaptures()
  848. {
  849. return _ns.SendMessageDirect(Constants.SCI_GETMOUSEDOWNCAPTURES, 0, 0) != 0;
  850. }
  851. int INativeScintilla.GetMouseDwellTime()
  852. {
  853. return _ns.SendMessageDirect(Constants.SCI_GETMOUSEDWELLTIME, 0, 0);
  854. }
  855. bool INativeScintilla.GetOvertype()
  856. {
  857. return _ns.SendMessageDirect(Constants.SCI_GETOVERTYPE, 0, 0) != 0;
  858. }
  859. int INativeScintilla.GetPrintColourMode()
  860. {
  861. return _ns.SendMessageDirect(Constants.SCI_GETPRINTCOLOURMODE, 0, 0);
  862. }
  863. int INativeScintilla.GetPrintMagnification()
  864. {
  865. return _ns.SendMessageDirect(Constants.SCI_GETPRINTMAGNIFICATION, 0, 0);
  866. }
  867. int INativeScintilla.GetPrintWrapMode()
  868. {
  869. return _ns.SendMessageDirect(Constants.SCI_GETPRINTWRAPMODE, 0, 0);
  870. }
  871. void INativeScintilla.GetProperty(string key, out string value)
  872. {
  873. _ns.SendMessageDirect(Constants.SCI_GETPROPERTY, key, out value);
  874. }
  875. void INativeScintilla.GetPropertyExpanded(string key, out string value)
  876. {
  877. _ns.SendMessageDirect(Constants.SCI_GETPROPERTYEXPANDED, key, out value);
  878. }
  879. int INativeScintilla.GetPropertyInt(string key, int @default)
  880. {
  881. return _ns.SendMessageDirect(Constants.SCI_GETPROPERTYINT, key, @default);
  882. }
  883. bool INativeScintilla.GetReadOnly()
  884. {
  885. return _ns.SendMessageDirect(Constants.SCI_GETREADONLY, 0, 0) != 0;
  886. }
  887. int INativeScintilla.GetScrollWidth()
  888. {
  889. return _ns.SendMessageDirect(Constants.SCI_GETSCROLLWIDTH, 0, 0);
  890. }
  891. int INativeScintilla.GetSearchFlags()
  892. {
  893. return _ns.SendMessageDirect(Constants.SCI_GETSEARCHFLAGS, 0, 0);
  894. }
  895. int INativeScintilla.GetSelectionEnd()
  896. {
  897. return _ns.SendMessageDirect(Constants.SCI_GETSELECTIONEND, 0, 0);
  898. }
  899. int INativeScintilla.GetSelectionMode()
  900. {
  901. return _ns.SendMessageDirect(Constants.SCI_GETSELECTIONMODE, 0, 0);
  902. }
  903. int INativeScintilla.GetSelectionStart()
  904. {
  905. return _ns.SendMessageDirect(Constants.SCI_GETSELECTIONSTART, 0, 0);
  906. }
  907. void INativeScintilla.GetSelText(out string text)
  908. {
  909. int length = _ns.GetSelectionEnd() - _ns.GetSelectionStart() + 1;
  910. _ns.SendMessageDirect(Constants.SCI_GETSELTEXT, IntPtr.Zero, out text, length);
  911. }
  912. int INativeScintilla.GetStatus()
  913. {
  914. return _ns.SendMessageDirect(Constants.SCI_GETSTATUS, 0, 0);
  915. }
  916. byte INativeScintilla.GetStyleAt(int position)
  917. {
  918. return (byte)_ns.SendMessageDirect(Constants.SCI_GETSTYLEAT, position, 0);
  919. }
  920. int INativeScintilla.GetStyleBits()
  921. {
  922. return _ns.SendMessageDirect(Constants.SCI_GETSTYLEBITS, 0, 0);
  923. }
  924. int INativeScintilla.GetStyleBitsNeeded()
  925. {
  926. return _ns.SendMessageDirect(Constants.SCI_GETSTYLEBITSNEEDED, 0, 0);
  927. }
  928. unsafe void INativeScintilla.GetStyledText(ref TextRange tr)
  929. {
  930. fixed (TextRange* trp = &tr)
  931. _ns.SendMessageDirect(Constants.SCI_GETSTYLEDTEXT, IntPtr.Zero, (IntPtr)trp);
  932. }
  933. bool INativeScintilla.GetTabIndents()
  934. {
  935. return _ns.SendMessageDirect(Constants.SCI_GETTABINDENTS, 0, 0) != 0;
  936. }
  937. int INativeScintilla.GetTabWidth()
  938. {
  939. return _ns.SendMessageDirect(Constants.SCI_GETTABWIDTH, 0, 0);
  940. }
  941. int INativeScintilla.GetTargetEnd()
  942. {
  943. return _ns.SendMessageDirect(Constants.SCI_GETTARGETEND, 0, 0);
  944. }
  945. int INativeScintilla.GetTargetStart()
  946. {
  947. return _ns.SendMessageDirect(Constants.SCI_GETTARGETSTART, 0, 0);
  948. }
  949. int INativeScintilla.GetText(int length, out string text)
  950. {
  951. return (int)_ns.SendMessageDirect(Constants.SCI_GETTEXT, (IntPtr)length, out text, length);
  952. }
  953. unsafe int INativeScintilla.GetTextRange(ref TextRange tr)
  954. {
  955. fixed (TextRange* trp = &tr)
  956. return (int)_ns.SendMessageDirect(Constants.SCI_GETTEXTRANGE, IntPtr.Zero, (IntPtr)trp);
  957. }
  958. int INativeScintilla.GetTextLength()
  959. {
  960. return _ns.SendMessageDirect(Constants.SCI_GETTEXTLENGTH, 0, 0);
  961. }
  962. bool INativeScintilla.GetTwoPhaseDraw()
  963. {
  964. return _ns.SendMessageDirect(Constants.SCI_GETTWOPHASEDRAW, 0, 0) != 0;
  965. }
  966. bool INativeScintilla.GetUndoCollection()
  967. {
  968. return _ns.SendMessageDirect(Constants.SCI_GETUNDOCOLLECTION, 0, 0) != 0;
  969. }
  970. bool INativeScintilla.GetUsePalette()
  971. {
  972. return _ns.SendMessageDirect(Constants.SCI_GETUSEPALETTE, 0, 0) != 0;
  973. }
  974. bool INativeScintilla.GetUseTabs()
  975. {
  976. return _ns.SendMessageDirect(Constants.SCI_GETUSETABS, 0, 0) != 0;
  977. }
  978. bool INativeScintilla.GetViewEol()
  979. {
  980. return _ns.SendMessageDirect(Constants.SCI_GETVIEWEOL, 0, 0) != 0;
  981. }
  982. int INativeScintilla.GetViewWs()
  983. {
  984. return _ns.SendMessageDirect(Constants.SCI_GETVIEWWS, 0, 0);
  985. }
  986. bool INativeScintilla.GetVScrollBar()
  987. {
  988. return _ns.SendMessageDirect(Constants.SCI_GETVSCROLLBAR, 0, 0) != 0;
  989. }
  990. int INativeScintilla.GetXOffset()
  991. {
  992. return _ns.SendMessageDirect(Constants.SCI_GETXOFFSET, 0, 0);
  993. }
  994. int INativeScintilla.GetZoom()
  995. {
  996. return _ns.SendMessageDirect(Constants.SCI_GETZOOM, 0, 0);
  997. }
  998. void INativeScintilla.GotoLine(int line)
  999. {
  1000. _ns.SendMessageDirect(Constants.SCI_GOTOLINE, line, 0);
  1001. }
  1002. void INativeScintilla.GotoPos(int position)
  1003. {
  1004. _ns.SendMessageDirect(Constants.SCI_GOTOPOS, position, 0);
  1005. }
  1006. void INativeScintilla.GrabFocus()
  1007. {
  1008. _ns.SendMessageDirect(Constants.SCI_GRABFOCUS, 0, 0);
  1009. }
  1010. void INativeScintilla.HideLines(int lineStart, int lineEnd)
  1011. {
  1012. _ns.SendMessageDirect(Constants.SCI_HIDELINES, lineStart, lineEnd);
  1013. }
  1014. void INativeScintilla.HideSelection(bool hide)
  1015. {
  1016. _ns.SendMessageDirect(Constants.SCI_HIDESELECTION, hide, 0);
  1017. }
  1018. void INativeScintilla.Home()
  1019. {
  1020. _ns.SendMessageDirect(Constants.SCI_HOME, 0, 0);
  1021. }
  1022. void INativeScintilla.HomeDisplay()
  1023. {
  1024. _ns.SendMessageDirect(Constants.SCI_HOMEDISPLAY, 0, 0);
  1025. }
  1026. void INativeScintilla.HomeDisplayExtend()
  1027. {
  1028. _ns.SendMessageDirect(Constants.SCI_HOMEDISPLAYEXTEND, 0, 0);
  1029. }
  1030. void INativeScintilla.HomeExtend()
  1031. {
  1032. _ns.SendMessageDirect(Constants.SCI_HOMEEXTEND, 0, 0);
  1033. }
  1034. void INativeScintilla.HomeRectExtend()
  1035. {
  1036. _ns.SendMessageDirect(Constants.SCI_HOMERECTEXTEND, 0, 0);
  1037. }
  1038. void INativeScintilla.HomeWrap()
  1039. {
  1040. _ns.SendMessageDirect(Constants.SCI_HOMEWRAP, 0, 0);
  1041. }
  1042. void INativeScintilla.HomeWrapExtend()
  1043. {
  1044. _ns.SendMessageDirect(Constants.SCI_HOMEWRAPEXTEND, 0, 0);
  1045. }
  1046. uint INativeScintilla.IndicatorAllOnFor(int position)
  1047. {
  1048. return (uint)_ns.SendMessageDirect(Constants.SCI_INDICATORALLONFOR, position, 0);
  1049. }
  1050. void INativeScintilla.IndicatorClearRange(int position, int fillLength)
  1051. {
  1052. _ns.SendMessageDirect(Constants.SCI_INDICATORCLEARRANGE, position, fillLength);
  1053. }
  1054. int INativeScintilla.IndicatorEnd(int indicator, int position)
  1055. {
  1056. return _ns.SendMessageDirect(Constants.SCI_INDICATOREND, indicator, position);
  1057. }
  1058. void INativeScintilla.IndicatorFillRange(int position, int fillLength)
  1059. {
  1060. _ns.SendMessageDirect(Constants.SCI_INDICATORFILLRANGE, position, fillLength);
  1061. }
  1062. int INativeScintilla.IndicatorStart(int indicator, int position)
  1063. {
  1064. return _ns.SendMessageDirect(Constants.SCI_INDICATORSTART, indicator, position);
  1065. }
  1066. int INativeScintilla.IndicatorValueAt(int indicator, int position)
  1067. {
  1068. return _ns.SendMessageDirect(Constants.SCI_INDICATORVALUEAT, indicator, position);
  1069. }
  1070. int INativeScintilla.IndicGetFore(int indicatorNumber)
  1071. {
  1072. return _ns.SendMessageDirect(Constants.SCI_INDICGETFORE, indicatorNumber, 0);
  1073. }
  1074. int INativeScintilla.IndicGetStyle(int indicatorNumber)
  1075. {
  1076. return _ns.SendMessageDirect(Constants.SCI_INDICGETSTYLE, indicatorNumber, 0);
  1077. }
  1078. bool INativeScintilla.IndicGetUnder(int indicatorNumber)
  1079. {
  1080. return _ns.SendMessageDirect(Constants.SCI_INDICGETUNDER, indicatorNumber, 0) != 0;
  1081. }
  1082. void INativeScintilla.IndicSetFore(int indicatorNumber, int colour)
  1083. {
  1084. _ns.SendMessageDirect(Constants.SCI_INDICSETFORE, indicatorNumber, colour);
  1085. }
  1086. void INativeScintilla.IndicSetStyle(int indicatorNumber, int indicatorStyle)
  1087. {
  1088. _ns.SendMessageDirect(Constants.SCI_INDICSETSTYLE, indicatorNumber, indicatorStyle);
  1089. }
  1090. void INativeScintilla.IndicSetUnder(int indicatorNumber, bool under)
  1091. {
  1092. _ns.SendMessageDirect(Constants.SCI_INDICSETUNDER, indicatorNumber, under);
  1093. }
  1094. void INativeScintilla.InsertText(int pos, string text)
  1095. {
  1096. _ns.SendMessageDirect(Constants.SCI_INSERTTEXT, pos, text);
  1097. }
  1098. void INativeScintilla.LineCopy()
  1099. {
  1100. _ns.SendMessageDirect(Constants.SCI_LINECOPY, 0, 0);
  1101. }
  1102. void INativeScintilla.LineCut()
  1103. {
  1104. _ns.SendMessageDirect(Constants.SCI_LINECUT, 0, 0);
  1105. }
  1106. void INativeScintilla.LineDelete()
  1107. {
  1108. _ns.SendMessageDirect(Constants.SCI_LINEDELETE, 0, 0);
  1109. }
  1110. void INativeScintilla.LineDown()
  1111. {
  1112. _ns.SendMessageDirect(Constants.SCI_LINEDOWN, 0, 0);
  1113. }
  1114. void INativeScintilla.LineDownExtend()
  1115. {
  1116. _ns.SendMessageDirect(Constants.SCI_LINEDOWNEXTEND, 0, 0);
  1117. }
  1118. void INativeScintilla.LineDownRectExtend()
  1119. {
  1120. _ns.SendMessageDirect(Constants.SCI_LINEDOWNRECTEXTEND, 0, 0);
  1121. }
  1122. void INativeScintilla.LineDuplicate()
  1123. {
  1124. _ns.SendMessageDirect(Constants.SCI_LINEDUPLICATE, 0, 0);
  1125. }
  1126. void INativeScintilla.LineEnd()
  1127. {
  1128. _ns.SendMessageDirect(Constants.SCI_LINEEND, 0, 0);
  1129. }
  1130. void INativeScintilla.LineEndDisplay()
  1131. {
  1132. _ns.SendMessageDirect(Constants.SCI_LINEENDDISPLAY, 0, 0);
  1133. }
  1134. void INativeScintilla.LineEndDisplayExtend()
  1135. {
  1136. _ns.SendMessageDirect(Constants.SCI_LINEENDDISPLAYEXTEND, 0, 0);
  1137. }
  1138. void INativeScintilla.LineEndExtend()
  1139. {
  1140. _ns.SendMessageDirect(Constants.SCI_LINEENDEXTEND, 0, 0);
  1141. }
  1142. void INativeScintilla.LineEndRectExtend()
  1143. {
  1144. _ns.SendMessageDirect(Constants.SCI_LINEENDRECTEXTEND, 0, 0);
  1145. }
  1146. void INativeScintilla.LineEndWrap()
  1147. {
  1148. _ns.SendMessageDirect(Constants.SCI_LINEENDWRAP, 0, 0);
  1149. }
  1150. void INativeScintilla.LineEndWrapExtend()
  1151. {
  1152. _ns.SendMessageDirect(Constants.SCI_LINEENDWRAPEXTEND, 0, 0);
  1153. }
  1154. int INativeScintilla.LineFromPosition(int pos)
  1155. {
  1156. return _ns.SendMessageDirect(Constants.SCI_LINEFROMPOSITION, pos, 0);
  1157. }
  1158. int INativeScintilla.LineLength(int line)
  1159. {
  1160. return _ns.SendMessageDirect(Constants.SCI_LINELENGTH, line, 0);
  1161. }
  1162. void INativeScintilla.LineScroll(int columns, int lines)
  1163. {
  1164. _ns.SendMessageDirect(Constants.SCI_LINESCROLL, columns, lines);
  1165. }
  1166. void INativeScintilla.LineScrollDown()
  1167. {
  1168. _ns.SendMessageDirect(Constants.SCI_LINESCROLLDOWN, 0, 0);
  1169. }
  1170. void INativeScintilla.LineScrollUp()
  1171. {
  1172. _ns.SendMessageDirect(Constants.SCI_LINESCROLLUP, 0, 0);
  1173. }
  1174. int INativeScintilla.LinesOnScreen()
  1175. {
  1176. return _ns.SendMessageDirect(Constants.SCI_LINESONSCREEN, 0, 0);
  1177. }
  1178. void INativeScintilla.LineTranspose()
  1179. {
  1180. _ns.SendMessageDirect(Constants.SCI_LINETRANSPOSE, 0, 0);
  1181. }
  1182. void INativeScintilla.LineUp()
  1183. {
  1184. _ns.SendMessageDirect(Constants.SCI_LINEUP, 0, 0);
  1185. }
  1186. void INativeScintilla.LineUpExtend()
  1187. {
  1188. _ns.SendMessageDirect(Constants.SCI_LINEUPEXTEND, 0, 0);
  1189. }
  1190. void INativeScintilla.LineUpRectExtend()
  1191. {
  1192. _ns.SendMessageDirect(Constants.SCI_LINEUPRECTEXTEND, 0, 0);
  1193. }
  1194. void INativeScintilla.LoadLexerLibrary(string path)
  1195. {
  1196. _ns.SendMessageDirect(Constants.SCI_LOADLEXERLIBRARY, VOID.NULL, path);
  1197. }
  1198. void INativeScintilla.LowerCase()
  1199. {
  1200. _ns.SendMessageDirect(Constants.SCI_LOWERCASE, 0, 0);
  1201. }
  1202. int INativeScintilla.MarkerAdd(int line, int markerNumber)
  1203. {
  1204. return _ns.SendMessageDirect(Constants.SCI_MARKERADD, line, markerNumber);
  1205. }
  1206. void INativeScintilla.MarkerAddSet(int line, uint markerMask)
  1207. {
  1208. _ns.SendMessageDirect(Constants.SCI_MARKERADDSET, line, markerMask);
  1209. }
  1210. void INativeScintilla.MarkerDefine(int markerNumber, int markerSymbol)
  1211. {
  1212. _ns.SendMessageDirect(Constants.SCI_MARKERDEFINE, markerNumber, markerSymbol);
  1213. }
  1214. void INativeScintilla.MarkerDefinePixmap(int markerNumber, string xpm)
  1215. {
  1216. _ns.SendMessageDirect(Constants.SCI_MARKERDEFINEPIXMAP, markerNumber, xpm);
  1217. }
  1218. void INativeScintilla.MarkerDelete(int line, int markerNumber)
  1219. {
  1220. _ns.SendMessageDirect(Constants.SCI_MARKERDELETE, line, markerNumber);
  1221. }
  1222. void INativeScintilla.MarkerDeleteAll(int markerNumber)
  1223. {
  1224. _ns.SendMessageDirect(Constants.SCI_MARKERDELETEALL, markerNumber, 0);
  1225. }
  1226. void INativeScintilla.MarkerDeleteHandle(int handle)
  1227. {
  1228. _ns.SendMessageDirect(Constants.SCI_MARKERDELETEHANDLE, handle, 0);
  1229. }
  1230. int INativeScintilla.MarkerGet(int line)
  1231. {
  1232. return _ns.SendMessageDirect(Constants.SCI_MARKERGET, line, 0);
  1233. }
  1234. int INativeScintilla.MarkerLineFromHandle(int handle)
  1235. {
  1236. return _ns.SendMessageDirect(Constants.SCI_MARKERLINEFROMHANDLE, handle, 0);
  1237. }
  1238. int INativeScintilla.MarkerNext(int lineStart, uint markerMask)
  1239. {
  1240. return _ns.SendMessageDirect(Constants.SCI_MARKERNEXT, lineStart, markerMask);
  1241. }
  1242. int INativeScintilla.MarkerPrevious(int lineStart, uint markerMask)
  1243. {
  1244. return _ns.SendMessageDirect(Constants.SCI_MARKERPREVIOUS, lineStart, markerMask);
  1245. }
  1246. void INativeScintilla.MarkerSetAlpha(int markerNumber, int alpha)
  1247. {
  1248. _ns.SendMessageDirect(Constants.SCI_MARKERSETALPHA, markerNumber, alpha);
  1249. }
  1250. void INativeScintilla.MarkerSetBack(int markerNumber, int colour)
  1251. {
  1252. _ns.SendMessageDirect(Constants.SCI_MARKERSETBACK, markerNumber, colour);
  1253. }
  1254. void INativeScintilla.MarkerSetFore(int markerNumber, int colour)
  1255. {
  1256. _ns.SendMessageDirect(Constants.SCI_MARKERSETFORE, markerNumber, colour);
  1257. }
  1258. void INativeScintilla.MoveCaretInsideView()
  1259. {
  1260. _ns.SendMessageDirect(Constants.SCI_MOVECARETINSIDEVIEW, 0, 0);
  1261. }
  1262. void INativeScintilla.NewLine()
  1263. {
  1264. _ns.SendMessageDirect(Constants.SCI_NEWLINE, 0, 0);
  1265. }
  1266. void INativeScintilla.Null()
  1267. {
  1268. _ns.SendMessageDirect(Constants.SCI_NULL, 0, 0);
  1269. }
  1270. void INativeScintilla.PageDown()
  1271. {
  1272. _ns.SendMessageDirect(Constants.SCI_PAGEDOWN, 0, 0);
  1273. }
  1274. void INativeScintilla.PageDownExtend()
  1275. {
  1276. _ns.SendMessageDirect(Constants.SCI_PAGEDOWNEXTEND, 0, 0);
  1277. }
  1278. void INativeScintilla.PageDownRectExtend()
  1279. {
  1280. _ns.SendMessageDirect(Constants.SCI_PAGEDOWNRECTEXTEND, 0, 0);
  1281. }
  1282. void INativeScintilla.PageUp()
  1283. {
  1284. _ns.SendMessageDirect(Constants.SCI_PAGEUP, 0, 0);
  1285. }
  1286. void INativeScintilla.PageUpExtend()
  1287. {
  1288. _ns.SendMessageDirect(Constants.SCI_PAGEUPEXTEND, 0, 0);
  1289. }
  1290. void INativeScintilla.PageUpRectExtend()
  1291. {
  1292. _ns.SendMessageDirect(Constants.SCI_PAGEUPRECTEXTEND, 0, 0);
  1293. }
  1294. void INativeScintilla.ParaDown()
  1295. {
  1296. _ns.SendMessageDirect(Constants.SCI_PARADOWN, 0, 0);
  1297. }
  1298. void INativeScintilla.ParaDownExtend()
  1299. {
  1300. _ns.SendMessageDirect(Constants.SCI_PARADOWNEXTEND, 0, 0);
  1301. }
  1302. void INativeScintilla.ParaUp()
  1303. {
  1304. _ns.SendMessageDirect(Constants.SCI_PARAUP, 0, 0);
  1305. }
  1306. void INativeScintilla.ParaUpExtend()
  1307. {
  1308. _ns.SendMessageDirect(Constants.SCI_PARAUPEXTEND, 0, 0);
  1309. }
  1310. int INativeScintilla.PointXFromPosition(int position)
  1311. {
  1312. return _ns.SendMessageDirect(Constants.SCI_POINTXFROMPOSITION, VOID.NULL, position);
  1313. }
  1314. int INativeScintilla.PointYFromPosition(int position)
  1315. {
  1316. return _ns.SendMessageDirect(Constants.SCI_POINTYFROMPOSITION, VOID.NULL, position);
  1317. }
  1318. int INativeScintilla.PositionAfter(int position)
  1319. {
  1320. return _ns.SendMessageDirect(Constants.SCI_POSITIONAFTER, position, 0);
  1321. }
  1322. int INativeScintilla.PositionBefore(int position)
  1323. {
  1324. return _ns.SendMessageDirect(Constants.SCI_POSITIONBEFORE, position, 0);
  1325. }
  1326. int INativeScintilla.PositionFromLine(int line)
  1327. {
  1328. return _ns.SendMessageDirect(Constants.SCI_POSITIONFROMLINE, line, 0);
  1329. }
  1330. int INativeScintilla.PositionFromPoint(int x, int y)
  1331. {
  1332. return _ns.SendMessageDirect(Constants.SCI_POSITIONFROMPOINT, x, y);
  1333. }
  1334. int INativeScintilla.PositionFromPointClose(int x, int y)
  1335. {
  1336. return _ns.SendMessageDirect(Constants.SCI_POSITIONFROMPOINTCLOSE, x, y);
  1337. }
  1338. void INativeScintilla.Redo()
  1339. {
  1340. _ns.SendMessageDirect(Constants.SCI_REDO, 0, 0);
  1341. }
  1342. void INativeScintilla.RegisterImage(int type, string xpmData)
  1343. {
  1344. _ns.SendMessageDirect(Constants.SCI_REGISTERIMAGE, type, xpmData);
  1345. }
  1346. void INativeScintilla.ReleaseDocument(IntPtr pDoc)
  1347. {
  1348. _ns.SendMessageDirect(Constants.SCI_RELEASEDOCUMENT, IntPtr.Zero, pDoc);
  1349. }
  1350. void INativeScintilla.ReplaceSel(string text)
  1351. {
  1352. _ns.SendMessageDirect(Constants.SCI_REPLACESEL, VOID.NULL, text);
  1353. }
  1354. int INativeScintilla.ReplaceTarget(int length, string text)
  1355. {
  1356. return _ns.SendMessageDirect(Constants.SCI_REPLACETARGET, length, text);
  1357. }
  1358. int INativeScintilla.ReplaceTargetRE(int length, string text)
  1359. {
  1360. return _ns.SendMessageDirect(Constants.SCI_REPLACETARGETRE, length, text);
  1361. }
  1362. void INativeScintilla.ScrollCaret()
  1363. {
  1364. _ns.SendMessageDirect(Constants.SCI_SCROLLCARET, 0, 0);
  1365. }
  1366. void INativeScintilla.SearchAnchor()
  1367. {
  1368. _ns.SendMessageDirect(Constants.SCI_SEARCHANCHOR, 0, 0);
  1369. }
  1370. int INativeScintilla.SearchInTarget(int length, string text)
  1371. {
  1372. return _ns.SendMessageDirect(Constants.SCI_SEARCHINTARGET, length, text);
  1373. }
  1374. int INativeScintilla.SearchNext(int searchFlags, string text)
  1375. {
  1376. return _ns.SendMessageDirect(Constants.SCI_SEARCHNEXT, searchFlags, text);
  1377. }
  1378. int INativeScintilla.SearchPrev(int searchFlags, string text)
  1379. {
  1380. return _ns.SendMessageDirect(Constants.SCI_SEARCHPREV, searchFlags, text);
  1381. }
  1382. void INativeScintilla.SelectAll()
  1383. {
  1384. _ns.SendMessageDirect(Constants.SCI_SELECTALL, 0, 0);
  1385. }
  1386. void INativeScintilla.SelectionDuplicate()
  1387. {
  1388. _ns.SendMessageDirect(Constants.SCI_SELECTIONDUPLICATE, 0, 0);
  1389. }
  1390. bool INativeScintilla.SelectionIsRectangle()
  1391. {
  1392. return _ns.SendMessageDirect(Constants.SCI_SELECTIONISRECTANGLE, 0, 0) != 0;
  1393. }
  1394. // Various overloads provided for syntactical convinience.
  1395. // note that the return value is int (32 bit signed Integer).
  1396. // If you are invoking a message that returns a pointer or
  1397. // handle like SCI_GETDIRECTFUNCTION or SCI_GETDOCPOINTER
  1398. // you MUST use the IntPtr overload to ensure 64bit compatibility
  1399. /// <summary>
  1400. /// Handles Scintilla Call Style:
  1401. /// (,)
  1402. /// </summary>
  1403. /// <param name="msg">Scintilla Message Number</param>
  1404. /// <returns></returns>
  1405. int INativeScintilla.SendMessageDirect(uint msg)
  1406. {
  1407. return (int)_ns.SendMessageDirect(msg, IntPtr.Zero, IntPtr.Zero);
  1408. }
  1409. /// <summary>
  1410. /// Handles Scintilla Call Style:
  1411. /// (int,)
  1412. /// </summary>
  1413. /// <param name="msg">Scintilla Message Number</param>
  1414. /// <param name="wParam">wParam</param>
  1415. /// <returns></returns>
  1416. int INativeScintilla.SendMessageDirect(uint msg, int wParam)
  1417. {
  1418. return (int)_ns.SendMessageDirect(msg, (IntPtr)wParam, IntPtr.Zero);
  1419. }
  1420. /// <summary>
  1421. /// Handles Scintilla Call Style:
  1422. /// (bool,)
  1423. /// </summary>
  1424. /// <param name="msg">Scintilla Message Number</param>
  1425. /// <param name="wParam">boolean wParam</param>
  1426. /// <returns></returns>
  1427. int INativeScintilla.SendMessageDirect(uint msg, bool wParam)
  1428. {
  1429. return (int)_ns.SendMessageDirect(msg, (IntPtr)(wParam ? 1 : 0), IntPtr.Zero);
  1430. }
  1431. /// <summary>
  1432. /// Handles Scintilla Call Style:
  1433. /// (,stringresult)
  1434. /// Notes:
  1435. /// Helper method to wrap all calls to messages that take a char*
  1436. /// in the lParam and returns a regular .NET String. This overload
  1437. /// assumes there will be no wParam and obtains the string _length
  1438. /// by calling the message with a 0 lParam.
  1439. /// </summary>
  1440. /// <param name="msg">Scintilla Message Number</param>
  1441. /// <param name="text">String output</param>
  1442. /// <returns></returns>
  1443. int INativeScintilla.SendMessageDirect(uint msg, out string text)
  1444. {
  1445. int length = _ns.SendMessageDirect(msg, 0, 0);
  1446. return _ns.SendMessageDirect(msg, IntPtr.Zero, out text, length);
  1447. }
  1448. // This file contains all the implementation of INativeScintilla
  1449. /// <summary>
  1450. /// This is the primary Native communication method with Scintilla
  1451. /// used by this control. All the other overloads call into this one.
  1452. /// </summary>
  1453. IntPtr INativeScintilla.SendMessageDirect(uint msg, IntPtr wParam, IntPtr lParam)
  1454. {
  1455. if (!this.IsDisposed)
  1456. {
  1457. Message m = new Message();
  1458. m.Msg = (int)msg;
  1459. m.WParam = wParam;
  1460. m.LParam = lParam;
  1461. m.HWnd = Handle;
  1462. // DefWndProc is the Window Proc associated with the window
  1463. // class for this control created by Windows Forms. It will
  1464. // in turn call Scintilla's DefWndProc Directly. This has
  1465. // the same net effect as using Scintilla's DirectFunction
  1466. // in that SendMessage isn't used to get the message to
  1467. // Scintilla but requires 1 less PInvoke and I don't have
  1468. // to maintain the FunctionPointer and "this" reference
  1469. DefWndProc(ref m);
  1470. return m.Result;
  1471. }
  1472. else
  1473. {
  1474. return IntPtr.Zero;
  1475. }
  1476. }
  1477. /// <summary>
  1478. /// Handles Scintilla Call Style:
  1479. /// (int,int)
  1480. /// </summary>
  1481. /// <param name="msg">Scintilla Message Number</param>
  1482. /// <param name="wParam">wParam</param>
  1483. /// <param name="lParam">lParam</param>
  1484. /// <returns></returns>
  1485. int INativeScintilla.SendMessageDirect(uint msg, int wParam, int lParam)
  1486. {
  1487. return (int)_ns.SendMessageDirect(msg, (IntPtr)wParam, (IntPtr)lParam);
  1488. }
  1489. /// <summary>
  1490. /// Handles Scintilla Call Style:
  1491. /// (int,uint)
  1492. /// </summary>
  1493. /// <param name="msg">Scintilla Message Number</param>
  1494. /// <param name="wParam">wParam</param>
  1495. /// <param name="lParam">lParam</param>
  1496. /// <returns></returns>
  1497. int INativeScintilla.SendMessageDirect(uint msg, int wParam, uint lParam)
  1498. {
  1499. // Hrm, just found out that no explicit conversion exists from uint to
  1500. // IntPtr. So first it converts it to a signed int, then to IntPtr. Of
  1501. // course if you have a large uint, it will overflow causing an
  1502. // ArithmiticOverflowException. So we first have to do the conversion
  1503. // ourselves to a signed in inside an unchecked region to prevent the
  1504. // exception.
  1505. unchecked
  1506. {
  1507. int i = (int)lParam;
  1508. return (int)_ns.SendMessageDirect(msg, (IntPtr)wParam, (IntPtr)i);
  1509. }
  1510. }
  1511. /// <summary>
  1512. /// Handles Scintilla Call Style:
  1513. /// (,int)
  1514. /// </summary>
  1515. /// <param name="msg">Scintilla Message Number</param>
  1516. /// <param name="NULL">always pass null--Unused parameter</param>
  1517. /// <param name="lParam">lParam</param>
  1518. /// <returns></returns>
  1519. int INativeScintilla.SendMessageDirect(uint msg, VOID wParam, int lParam)
  1520. {
  1521. return (int)_ns.SendMessageDirect(msg, IntPtr.Zero, (IntPtr)lParam);
  1522. }
  1523. /// <summary>
  1524. /// Handles Scintilla Call Style:
  1525. /// (bool,int)
  1526. /// </summary>
  1527. /// <param name="msg">Scintilla Message Number</param>
  1528. /// <param name="wParam">boolean wParam</param>
  1529. /// <param name="lParam">int lParam</param>
  1530. /// <returns></returns>
  1531. int INativeScintilla.SendMessageDirect(uint msg, bool wParam, int lParam)
  1532. {
  1533. return (int)_ns.SendMessageDirect(msg, (IntPtr)(wParam ? 1 : 0), (IntPtr)lParam);
  1534. }
  1535. /// <summary>
  1536. /// Handles Scintilla Call Style:
  1537. /// (int,bool)
  1538. /// </summary>
  1539. /// <param name="msg">Scintilla Message Number</param>
  1540. /// <param name="wParam">int wParam</param>
  1541. /// <param name="lParam">boolean lParam</param>
  1542. /// <returns></returns>
  1543. int INativeScintilla.SendMessageDirect(uint msg, int wParam, bool lParam)
  1544. {
  1545. return (int)_ns.SendMessageDirect(msg, (IntPtr)wParam, (IntPtr)(lParam ? 1 : 0));
  1546. }
  1547. /// <summary>
  1548. /// Handles Scintilla Call Style:
  1549. /// (int,stringresult)
  1550. /// Notes:
  1551. /// Helper method to wrap all calls to messages that take a char*
  1552. /// in the lParam and returns a regular .NET String. This overload
  1553. /// assumes there will be no wParam and obtains the string _length
  1554. /// by calling the message with a 0 lParam.
  1555. /// </summary>
  1556. /// <param name="msg">Scintilla Message Number</param>
  1557. /// <param name="text">String output</param>
  1558. /// <returns></returns>
  1559. int INativeScintilla.SendMessageDirect(uint msg, int wParam, out string text)
  1560. {
  1561. int length = _ns.SendMessageDirect(msg, 0, 0);
  1562. return _ns.SendMessageDirect(msg, (IntPtr)wParam, out text, length);
  1563. }
  1564. /// <summary>
  1565. /// Handles Scintilla Call Style:
  1566. /// (?)
  1567. /// Notes:
  1568. /// Helper method to wrap all calls to messages that take a char*
  1569. /// in the wParam and set a regular .NET String in the lParam.
  1570. /// Both the _length of the string and an additional wParam are used
  1571. /// so that various string Message styles can be acommodated.
  1572. /// </summary>
  1573. /// <param name="msg">Scintilla Message Number</param>
  1574. /// <param name="wParam">int wParam</param>
  1575. /// <param name="text">String output</param>
  1576. /// <param name="_length">_length of the input buffer</param>
  1577. /// <returns></returns>
  1578. unsafe int INativeScintilla.SendMessageDirect(uint msg, IntPtr wParam, out string text, int length)
  1579. {
  1580. IntPtr ret;
  1581. // Allocate a buffer the size of the string + 1 for
  1582. // the NULL terminator. Scintilla always sets this
  1583. // regardless of the encoding
  1584. byte[] buffer = new byte[length + 1];
  1585. // Get a direct pointer to the the head of the buffer
  1586. // to pass to the message along with the wParam.
  1587. // Scintilla will fill the buffer with string data.
  1588. fixed (byte* bp = buffer)
  1589. {
  1590. ret = _ns.SendMessageDirect(msg, wParam, (IntPtr)bp);
  1591. // If this string is NULL terminated we want to trim the
  1592. // NULL before converting it to a .NET String
  1593. if (bp[length - 1] == 0)
  1594. length--;
  1595. }
  1596. // buffer contains the text encoded in the document format as specified by
  1597. // encoding. Convert it to a .NET UTF-16 string
  1598. text = _encoding.GetString(buffer, 0, length);
  1599. return (int)ret;
  1600. }
  1601. /// <summary>
  1602. /// Handles Scintilla Call Style:
  1603. /// (int,string)
  1604. /// Notes:
  1605. /// This helper method handles all messages that take
  1606. /// const char* as an input string in the lParam. In
  1607. /// some messages Scintilla expects a NULL terminated string
  1608. /// and in others it depends on the string _length passed in
  1609. /// as wParam. This method handles both situations and will
  1610. /// NULL terminate the string either way.
  1611. ///
  1612. /// </summary>
  1613. /// <param name="msg">Scintilla Message Number</param>
  1614. /// <param name="wParam">int wParam</param>
  1615. /// <param name="lParam">string lParam</param>
  1616. /// <returns></returns>
  1617. unsafe int INativeScintilla.SendMessageDirect(uint msg, int wParam, string lParam)
  1618. {
  1619. // Just as when retrieving we make to convert .NET's
  1620. // UTF-16 strings into a document encoded byte array.
  1621. fixed (byte* bp = _encoding.GetBytes(ZeroTerminated(lParam)))
  1622. return (int)_ns.SendMessageDirect(msg, (IntPtr)wParam, (IntPtr)bp);
  1623. }
  1624. /// <summary>
  1625. /// Handles Scintilla Call Style:
  1626. /// (,string)
  1627. ///
  1628. /// Notes:
  1629. /// This helper method handles all messages that take
  1630. /// const char* as an input string in the lParam. In
  1631. /// some messages Scintilla expects a NULL terminated string
  1632. /// and in others it depends on the string _length passed in
  1633. /// as wParam. This method handles both situations and will
  1634. /// NULL terminate the string either way.
  1635. ///
  1636. /// </summary>
  1637. /// <param name="msg">Scintilla Message Number</param>
  1638. /// <param name="NULL">always pass null--Unused parameter</param>
  1639. /// <param name="lParam">string lParam</param>
  1640. /// <returns></returns>
  1641. unsafe int INativeScintilla.SendMessageDirect(uint msg, VOID NULL, string lParam)
  1642. {
  1643. // Just as when retrieving we make to convert .NET's
  1644. // UTF-16 strings into a document encoded byte array.
  1645. fixed (byte* bp = _encoding.GetBytes(ZeroTerminated(lParam)))
  1646. return (int)_ns.SendMessageDirect(msg, IntPtr.Zero, (IntPtr)bp);
  1647. }
  1648. /// <summary>
  1649. /// Handles Scintilla Call Style:
  1650. /// (string,string)
  1651. ///
  1652. /// Notes:
  1653. /// Used by SCI_SETPROPERTY
  1654. /// </summary>
  1655. /// <param name="msg">Scintilla Message Number</param>
  1656. /// <param name="wParam">string wParam</param>
  1657. /// <param name="lParam">string lParam</param>
  1658. /// <returns></returns>
  1659. unsafe int INativeScintilla.SendMessageDirect(uint msg, string wParam, string lParam)
  1660. {
  1661. fixed (byte* bpw = _encoding.GetBytes(ZeroTerminated(wParam)))
  1662. fixed (byte* bpl = _encoding.GetBytes(ZeroTerminated(lParam)))
  1663. return (int)_ns.SendMessageDirect(msg, (IntPtr)bpw, (IntPtr)bpl);
  1664. }
  1665. /// <summary>
  1666. /// Handles Scintilla Call Style:
  1667. /// (string,stringresult)
  1668. ///
  1669. /// Notes:
  1670. /// This one is used specifically by SCI_GETPROPERTY and SCI_GETPROPERTYEXPANDED
  1671. /// so it assumes it's usage
  1672. ///
  1673. /// </summary>
  1674. /// <param name="msg">Scintilla Message Number</param>
  1675. /// <param name="wParam">string wParam</param>
  1676. /// <param name="stringResult">Stringresult output</param>
  1677. /// <returns></returns>
  1678. unsafe int INativeScintilla.SendMessageDirect(uint msg, string wParam, out string stringResult)
  1679. {
  1680. IntPtr ret;
  1681. fixed (byte* bpw = _encoding.GetBytes(ZeroTerminated(wParam)))
  1682. {
  1683. int length = (int)_ns.SendMessageDirect(msg, (IntPtr)bpw, IntPtr.Zero);
  1684. byte[] buffer = new byte[length + 1];
  1685. fixed (byte* bpl = buffer)
  1686. ret = _ns.SendMessageDirect(msg, (IntPtr)bpw, (IntPtr)bpl);
  1687. stringResult = _encoding.GetString(buffer, 0, length);
  1688. }
  1689. return (int)ret;
  1690. }
  1691. /// <summary>
  1692. /// Handles Scintilla Call Style:
  1693. /// (string,int)
  1694. /// </summary>
  1695. /// <param name="msg">Scintilla Message Number</param>
  1696. /// <param name="wParam">string wParam</param>
  1697. /// <param name="lParam">int lParam</param>
  1698. /// <returns></returns>
  1699. unsafe int INativeScintilla.SendMessageDirect(uint msg, string wParam, int lParam)
  1700. {
  1701. fixed (byte* bp = _encoding.GetBytes(ZeroTerminated(wParam)))
  1702. return (int)_ns.SendMessageDirect(msg, (IntPtr)bp, (IntPtr)lParam);
  1703. }
  1704. /// <summary>
  1705. /// Handles Scintilla Call Style:
  1706. /// (string,)
  1707. /// </summary>
  1708. /// <param name="msg">Scintilla Message Number</param>
  1709. /// <param name="wParam">string wParam</param>
  1710. /// <returns></returns>
  1711. unsafe int INativeScintilla.SendMessageDirect(uint msg, string wParam)
  1712. {
  1713. fixed (byte* bp = _encoding.GetBytes(ZeroTerminated(wParam)))
  1714. return (int)_ns.SendMessageDirect(msg, (IntPtr)bp, IntPtr.Zero);
  1715. }
  1716. void INativeScintilla.SetAnchor(int position)
  1717. {
  1718. _ns.SendMessageDirect(Constants.SCI_SETANCHOR, position, 0);
  1719. }
  1720. void INativeScintilla.SetBackSpaceUnIndents(bool bsUnIndents)
  1721. {
  1722. _ns.SendMessageDirect(Constants.SCI_SETBACKSPACEUNINDENTS, bsUnIndents, 0);
  1723. }
  1724. void INativeScintilla.SetBufferedDraw(bool isBuffered)
  1725. {
  1726. _ns.SendMessageDirect(Constants.SCI_SETBUFFEREDDRAW, isBuffered, 0);
  1727. }
  1728. void INativeScintilla.SetCaretFore(int alpha)
  1729. {
  1730. _ns.SendMessageDirect(Constants.SCI_SETCARETFORE, alpha, 0);
  1731. }
  1732. void INativeScintilla.SetCaretLineBack(int show)
  1733. {
  1734. _ns.SendMessageDirect(Constants.SCI_SETCARETLINEBACK, show, 0);
  1735. }
  1736. void INativeScintilla.SetCaretLineBackAlpha(int alpha)
  1737. {
  1738. _ns.SendMessageDirect(Constants.SCI_SETCARETLINEBACKALPHA, alpha, 0);
  1739. }
  1740. void INativeScintilla.SetCaretLineVisible(bool colour)
  1741. {
  1742. _ns.SendMessageDirect(Constants.SCI_SETCARETLINEVISIBLE, colour, 0);
  1743. }
  1744. void INativeScintilla.SetCaretPeriod(int milliseconds)
  1745. {
  1746. _ns.SendMessageDirect(Constants.SCI_SETCARETPERIOD, milliseconds, 0);
  1747. }
  1748. void INativeScintilla.SetCaretSticky(bool useCaretStickyBehaviour)
  1749. {
  1750. _ns.SendMessageDirect(Constants.SCI_SETCARETSTICKY, useCaretStickyBehaviour, 0);
  1751. }
  1752. void INativeScintilla.SetCaretStyle(int style)
  1753. {
  1754. _ns.SendMessageDirect(Constants.SCI_SETCARETSTYLE, style, 0);
  1755. }
  1756. void INativeScintilla.SetCaretWidth(int pixels)
  1757. {
  1758. _ns.SendMessageDirect(Constants.SCI_SETCARETWIDTH, pixels, 0);
  1759. }
  1760. void INativeScintilla.SetCharsDefault()
  1761. {
  1762. _ns.SendMessageDirect(Constants.SCI_SETCHARSDEFAULT, 0, 0);
  1763. }
  1764. void INativeScintilla.SetCodePage(int codePage)
  1765. {
  1766. _ns.SendMessageDirect(Constants.SCI_SETCODEPAGE, codePage, 0);
  1767. _encoding = Encoding.GetEncoding(codePage);
  1768. }
  1769. void INativeScintilla.SetControlCharSymbol(int symbol)
  1770. {
  1771. _ns.SendMessageDirect(Constants.SCI_SETCONTROLCHARSYMBOL, symbol, 0);
  1772. }
  1773. void INativeScintilla.SetCurrentPos(int position)
  1774. {
  1775. _ns.SendMessageDirect(Constants.SCI_SETCURRENTPOS, position, 0);
  1776. }
  1777. void INativeScintilla.SetCursor(int curType)
  1778. {
  1779. _ns.SendMessageDirect(Constants.SCI_SETCURSOR, curType, 0);
  1780. }
  1781. void INativeScintilla.SetDocPointer(IntPtr pDoc)
  1782. {
  1783. _ns.SendMessageDirect(Constants.SCI_SETDOCPOINTER, IntPtr.Zero, pDoc);
  1784. }
  1785. void INativeScintilla.SetEdgeColour(int colour)
  1786. {
  1787. _ns.SendMessageDirect(Constants.SCI_SETEDGECOLOUR, colour, 0);
  1788. }
  1789. void INativeScintilla.SetEdgeColumn(int column)
  1790. {
  1791. _ns.SendMessageDirect(Constants.SCI_SETEDGECOLUMN, column, 0);
  1792. }
  1793. void INativeScintilla.SetEdgeMode(int mode)
  1794. {
  1795. _ns.SendMessageDirect(Constants.SCI_SETEDGEMODE, mode, 0);
  1796. }
  1797. void INativeScintilla.SetEndAtLastLine(bool endAtLastLine)
  1798. {
  1799. _ns.SendMessageDirect(Constants.SCI_SETENDATLASTLINE, endAtLastLine, 0);
  1800. }
  1801. void INativeScintilla.SetEolMode(int eolMode)
  1802. {
  1803. _ns.SendMessageDirect(Constants.SCI_SETEOLMODE, eolMode, 0);
  1804. }
  1805. void INativeScintilla.SetFocus(bool focus)
  1806. {
  1807. _ns.SendMessageDirect(Constants.SCI_SETFOCUS, focus, 0);
  1808. }
  1809. void INativeScintilla.SetFoldExpanded(int line, bool expanded)
  1810. {
  1811. _ns.SendMessageDirect(Constants.SCI_SETFOLDEXPANDED, line, expanded);
  1812. }
  1813. void INativeScintilla.SetFoldFlags(int flags)
  1814. {
  1815. _ns.SendMessageDirect(Constants.SCI_SETFOLDFLAGS, flags, 0);
  1816. }
  1817. void INativeScintilla.SetFoldLevel(int line, uint level)
  1818. {
  1819. _ns.SendMessageDirect(Constants.SCI_SETFOLDLEVEL, line, level);
  1820. }
  1821. void INativeScintilla.SetFoldMarginColour(bool useSetting, int colour)
  1822. {
  1823. _ns.SendMessageDirect(Constants.SCI_SETFOLDMARGINCOLOUR, useSetting, colour);
  1824. }
  1825. void INativeScintilla.SetFoldMarginHiColour(bool useSetting, int colour)
  1826. {
  1827. _ns.SendMessageDirect(Constants.SCI_SETFOLDMARGINHICOLOUR, useSetting, colour);
  1828. }
  1829. void INativeScintilla.SetHighlightGuide(int column)
  1830. {
  1831. _ns.SendMessageDirect(Constants.SCI_SETHIGHLIGHTGUIDE, column, 0);
  1832. }
  1833. void INativeScintilla.SetHotspotActiveBack(bool useHotspotBackColour, int colour)
  1834. {
  1835. _ns.SendMessageDirect(Constants.SCI_SETHOTSPOTACTIVEBACK, useHotspotBackColour, colour);
  1836. }
  1837. void INativeScintilla.SetHotspotActiveFore(bool useHotspotForeColour, int colour)
  1838. {
  1839. _ns.SendMessageDirect(Constants.SCI_SETHOTSPOTACTIVEFORE, useHotspotForeColour, colour);
  1840. }
  1841. void INativeScintilla.SetHotspotActiveUnderline(bool underline)
  1842. {
  1843. _ns.SendMessageDirect(Constants.SCI_SETHOTSPOTACTIVEUNDERLINE, underline, 0);
  1844. }
  1845. void INativeScintilla.SetHotspotSingleLine(bool singleLine)
  1846. {
  1847. _ns.SendMessageDirect(Constants.SCI_SETHOTSPOTSINGLELINE, singleLine, 0);
  1848. }
  1849. void INativeScintilla.SetHScrollBar(bool visible)
  1850. {
  1851. _ns.SendMessageDirect(Constants.SCI_SETHSCROLLBAR, visible, 0);
  1852. }
  1853. void INativeScintilla.SetIndent(int widthInChars)
  1854. {
  1855. _ns.SendMessageDirect(Constants.SCI_SETINDENT, widthInChars, 0);
  1856. }
  1857. void INativeScintilla.SetIndentationGuides(bool view)
  1858. {
  1859. _ns.SendMessageDirect(Constants.SCI_SETINDENTATIONGUIDES, view, 0);
  1860. }
  1861. void INativeScintilla.SetIndicatorCurrent(int indicator)
  1862. {
  1863. _ns.SendMessageDirect(Constants.SCI_SETINDICATORCURRENT, indicator, 0);
  1864. }
  1865. void INativeScintilla.SetIndicatorValue(int value)
  1866. {
  1867. _ns.SendMessageDirect(Constants.SCI_SETINDICATORVALUE, value, 0);
  1868. }
  1869. void INativeScintilla.SetKeywords(int keywordSet, string keyWordList)
  1870. {
  1871. _ns.SendMessageDirect(Constants.SCI_SETKEYWORDS, keywordSet, keyWordList);
  1872. }
  1873. int INativeScintilla.SetLengthForEncode(int bytes)
  1874. {
  1875. throw new NotSupportedException();
  1876. }
  1877. void INativeScintilla.SetLexer(int lexer)
  1878. {
  1879. _ns.SendMessageDirect(Constants.SCI_SETLEXER, lexer, 0);
  1880. }
  1881. void INativeScintilla.SetLexerLanguage(string name)
  1882. {
  1883. _ns.SendMessageDirect(Constants.SCI_SETLEXERLANGUAGE, VOID.NULL, name);
  1884. }
  1885. void INativeScintilla.SetLineIndentation(int line, int indentation)
  1886. {
  1887. _ns.SendMessageDirect(Constants.SCI_SETLINEINDENTATION, line, indentation);
  1888. }
  1889. void INativeScintilla.SetLineState(int line, int value)
  1890. {
  1891. _ns.SendMessageDirect(Constants.SCI_SETLINESTATE, line, value);
  1892. }
  1893. void INativeScintilla.SetMarginLeft(int pixels)
  1894. {
  1895. _ns.SendMessageDirect(Constants.SCI_SETMARGINLEFT, 0, pixels);
  1896. }
  1897. void INativeScintilla.SetMarginMaskN(int margin, int mask)
  1898. {
  1899. _ns.SendMessageDirect(Constants.SCI_SETMARGINMASKN, margin, mask);
  1900. }
  1901. void INativeScintilla.SetMarginRight(int pixels)
  1902. {
  1903. _ns.SendMessageDirect(Constants.SCI_SETMARGINRIGHT, 0, pixels);
  1904. }
  1905. void INativeScintilla.SetMarginSensitiveN(int margin, bool sensitive)
  1906. {
  1907. _ns.SendMessageDirect(Constants.SCI_SETMARGINSENSITIVEN, margin, sensitive);
  1908. }
  1909. void INativeScintilla.SetMarginTypeN(int margin, int type)
  1910. {
  1911. _ns.SendMessageDirect(Constants.SCI_SETMARGINTYPEN, margin, type);
  1912. }
  1913. void INativeScintilla.SetMarginWidthN(int margin, int pixelWidth)
  1914. {
  1915. _ns.SendMessageDirect(Constants.SCI_SETMARGINWIDTHN, margin, pixelWidth);
  1916. }
  1917. void INativeScintilla.SetModEventMask(int modEventMask)
  1918. {
  1919. _ns.SendMessageDirect(Constants.SCI_SETMODEVENTMASK, modEventMask, 0);
  1920. }
  1921. void INativeScintilla.SetMouseDownCaptures(bool captures)
  1922. {
  1923. _ns.SendMessageDirect(Constants.SCI_SETMOUSEDOWNCAPTURES, captures, 0);
  1924. }
  1925. void INativeScintilla.SetMouseDwellTime(int mouseDwellTime)
  1926. {
  1927. _ns.SendMessageDirect(Constants.SCI_SETMOUSEDWELLTIME, mouseDwellTime, 0);
  1928. }
  1929. void INativeScintilla.SetOvertype(bool overType)
  1930. {
  1931. _ns.SendMessageDirect(Constants.SCI_SETOVERTYPE, overType, 0);
  1932. }
  1933. void INativeScintilla.SetPrintColourMode(int mode)
  1934. {
  1935. _ns.SendMessageDirect(Constants.SCI_SETPRINTCOLOURMODE, mode, 0);
  1936. }
  1937. void INativeScintilla.SetPrintMagnification(int magnification)
  1938. {
  1939. _ns.SendMessageDirect(Constants.SCI_SETPRINTMAGNIFICATION, magnification, 0);
  1940. }
  1941. void INativeScintilla.SetPrintWrapMode(int wrapMode)
  1942. {
  1943. _ns.SendMessageDirect(Constants.SCI_SETPRINTWRAPMODE, wrapMode, 0);
  1944. }
  1945. void INativeScintilla.SetProperty(string key, string value)
  1946. {
  1947. _ns.SendMessageDirect(Constants.SCI_SETPROPERTY, key, value);
  1948. }
  1949. void INativeScintilla.SetReadOnly(bool readOnly)
  1950. {
  1951. _ns.SendMessageDirect(Constants.SCI_SETREADONLY, readOnly, 0);
  1952. }
  1953. void INativeScintilla.SetSavePoint()
  1954. {
  1955. _ns.SendMessageDirect(Constants.SCI_SETSAVEPOINT, 0, 0);
  1956. }
  1957. void INativeScintilla.SetScrollWidth(int pixelWidth)
  1958. {
  1959. _ns.SendMessageDirect(Constants.SCI_SETSCROLLWIDTH, pixelWidth, 0);
  1960. }
  1961. void INativeScintilla.SetSearchFlags(int searchFlags)
  1962. {
  1963. _ns.SendMessageDirect(Constants.SCI_SETSEARCHFLAGS, searchFlags, 0);
  1964. }
  1965. void INativeScintilla.SetSel(int anchorPos, int currentPos)
  1966. {
  1967. _ns.SendMessageDirect(Constants.SCI_SETSEL, anchorPos, currentPos);
  1968. }
  1969. void INativeScintilla.SetSelBack(bool useSelectionBackColour, int colour)
  1970. {
  1971. _ns.SendMessageDirect(Constants.SCI_SETSELBACK, useSelectionBackColour, colour);
  1972. }
  1973. void INativeScintilla.SetSelectionEnd(int position)
  1974. {
  1975. _ns.SendMessageDirect(Constants.SCI_SETSELECTIONEND, position, 0);
  1976. }
  1977. void INativeScintilla.SetSelectionMode(int mode)
  1978. {
  1979. _ns.SendMessageDirect(Constants.SCI_SETSELECTIONMODE, mode, 0);
  1980. }
  1981. void INativeScintilla.SetSelectionStart(int position)
  1982. {
  1983. _ns.SendMessageDirect(Constants.SCI_SETSELECTIONSTART, position, 0);
  1984. }
  1985. void INativeScintilla.SetSelFore(bool useSelectionForeColour, int colour)
  1986. {
  1987. _ns.SendMessageDirect(Constants.SCI_SETSELFORE, useSelectionForeColour, colour);
  1988. }
  1989. void INativeScintilla.SetStatus(int status)
  1990. {
  1991. _ns.SendMessageDirect(Constants.SCI_SETSTATUS, status, 0);
  1992. }
  1993. void INativeScintilla.SetStyleBits(int bits)
  1994. {
  1995. _ns.SendMessageDirect(Constants.SCI_SETSTYLEBITS, bits, 0);
  1996. }
  1997. void INativeScintilla.SetStyling(int length, int style)
  1998. {
  1999. _ns.SendMessageDirect(Constants.SCI_SETSTYLING, length, style);
  2000. }
  2001. void INativeScintilla.SetStylingEx(int length, string styles)
  2002. {
  2003. _ns.SendMessageDirect(Constants.SCI_SETSTYLINGEX, length, styles);
  2004. }
  2005. void INativeScintilla.SetTabIndents(bool tabIndents)
  2006. {
  2007. _ns.SendMessageDirect(Constants.SCI_SETTABINDENTS, tabIndents, 0);
  2008. }
  2009. void INativeScintilla.SetTabWidth(int widthInChars)
  2010. {
  2011. _ns.SendMessageDirect(Constants.SCI_SETTABWIDTH, widthInChars, 0);
  2012. }
  2013. void INativeScintilla.SetTargetEnd(int pos)
  2014. {
  2015. _ns.SendMessageDirect(Constants.SCI_SETTARGETEND, pos, 0);
  2016. }
  2017. void INativeScintilla.SetTargetStart(int pos)
  2018. {
  2019. _ns.SendMessageDirect(Constants.SCI_SETTARGETSTART, pos, 0);
  2020. }
  2021. void INativeScintilla.SetText(string text)
  2022. {
  2023. _ns.SendMessageDirect(Constants.SCI_SETTEXT, VOID.NULL, text);
  2024. }
  2025. void INativeScintilla.SetTwoPhaseDraw(bool twoPhase)
  2026. {
  2027. _ns.SendMessageDirect(Constants.SCI_SETTWOPHASEDRAW, twoPhase, 0);
  2028. }
  2029. void INativeScintilla.SetUndoCollection(bool collectUndo)
  2030. {
  2031. _ns.SendMessageDirect(Constants.SCI_SETUNDOCOLLECTION, collectUndo, 0);
  2032. }
  2033. void INativeScintilla.SetUsePalette(bool allowPaletteUse)
  2034. {
  2035. _ns.SendMessageDirect(Constants.SCI_SETUSEPALETTE, allowPaletteUse, 0);
  2036. }
  2037. void INativeScintilla.SetUseTabs(bool useTabs)
  2038. {
  2039. _ns.SendMessageDirect(Constants.SCI_SETUSETABS, useTabs, 0);
  2040. }
  2041. void INativeScintilla.SetViewEol(bool visible)
  2042. {
  2043. _ns.SendMessageDirect(Constants.SCI_SETVIEWEOL, visible, 0);
  2044. }
  2045. void INativeScintilla.SetViewWs(int wsMode)
  2046. {
  2047. _ns.SendMessageDirect(Constants.SCI_SETVIEWWS, wsMode, 0);
  2048. }
  2049. void INativeScintilla.SetVisiblePolicy(int visiblePolicy, int visibleSlop)
  2050. {
  2051. _ns.SendMessageDirect(Constants.SCI_SETVISIBLEPOLICY, visiblePolicy, visibleSlop);
  2052. }
  2053. void INativeScintilla.SetVScrollBar(bool visible)
  2054. {
  2055. _ns.SendMessageDirect(Constants.SCI_SETVSCROLLBAR, visible, 0);
  2056. }
  2057. void INativeScintilla.SetWhitespaceBack(bool useWhitespaceBackColour, int colour)
  2058. {
  2059. _ns.SendMessageDirect(Constants.SCI_SETWHITESPACEBACK, useWhitespaceBackColour, colour);
  2060. }
  2061. void INativeScintilla.SetWhitespaceChars(string chars)
  2062. {
  2063. _ns.SendMessageDirect(Constants.SCI_SETWHITESPACECHARS, VOID.NULL, chars);
  2064. }
  2065. void INativeScintilla.SetWhitespaceFore(bool useWhitespaceForeColour, int colour)
  2066. {
  2067. _ns.SendMessageDirect(Constants.SCI_SETWHITESPACEFORE, useWhitespaceForeColour, colour);
  2068. }
  2069. void INativeScintilla.SetWordChars(string chars)
  2070. {
  2071. _ns.SendMessageDirect(Constants.SCI_SETWORDCHARS, VOID.NULL, chars);
  2072. }
  2073. void INativeScintilla.SetXCaretPolicy(int caretPolicy, int caretSlop)
  2074. {
  2075. _ns.SendMessageDirect(Constants.SCI_SETXCARETPOLICY, caretPolicy, caretSlop);
  2076. }
  2077. void INativeScintilla.SetXOffset(int xOffset)
  2078. {
  2079. _ns.SendMessageDirect(Constants.SCI_SETXOFFSET, xOffset, 0);
  2080. }
  2081. void INativeScintilla.SetYCaretPolicy(int caretPolicy, int caretSlop)
  2082. {
  2083. _ns.SendMessageDirect(Constants.SCI_SETYCARETPOLICY, caretPolicy, caretSlop);
  2084. }
  2085. void INativeScintilla.SetZoom(int zoomInPoints)
  2086. {
  2087. _ns.SendMessageDirect(Constants.SCI_SETZOOM, zoomInPoints, 0);
  2088. }
  2089. void INativeScintilla.ShowLines(int lineStart, int lineEnd)
  2090. {
  2091. _ns.SendMessageDirect(Constants.SCI_SHOWLINES, lineStart, lineEnd);
  2092. }
  2093. void INativeScintilla.StartRecord()
  2094. {
  2095. _ns.SendMessageDirect(Constants.SCI_STARTRECORD, 0, 0);
  2096. }
  2097. void INativeScintilla.StartStyling(int position, int mask)
  2098. {
  2099. _ns.SendMessageDirect(Constants.SCI_STARTSTYLING, position, mask);
  2100. }
  2101. void INativeScintilla.StopRecord()
  2102. {
  2103. _ns.SendMessageDirect(Constants.SCI_STOPRECORD, 0, 0);
  2104. }
  2105. void INativeScintilla.StutteredPageDown()
  2106. {
  2107. _ns.SendMessageDirect(Constants.SCI_STUTTEREDPAGEDOWN, 0, 0);
  2108. }
  2109. void INativeScintilla.StutteredPageDownExtend()
  2110. {
  2111. _ns.SendMessageDirect(Constants.SCI_STUTTEREDPAGEDOWNEXTEND, 0, 0);
  2112. }
  2113. void INativeScintilla.StutteredPageUp()
  2114. {
  2115. _ns.SendMessageDirect(Constants.SCI_STUTTEREDPAGEUP, 0, 0);
  2116. }
  2117. void INativeScintilla.StutteredPageUpExtend()
  2118. {
  2119. _ns.SendMessageDirect(Constants.SCI_STUTTEREDPAGEUPEXTEND, 0, 0);
  2120. }
  2121. void INativeScintilla.StyleClearAll()
  2122. {
  2123. _ns.SendMessageDirect(Constants.SCI_STYLECLEARALL, 0, 0);
  2124. }
  2125. int INativeScintilla.StyleGetBack(int styleNumber)
  2126. {
  2127. return _ns.SendMessageDirect(Constants.SCI_STYLEGETBACK, styleNumber, 0);
  2128. }
  2129. bool INativeScintilla.StyleGetBold(int styleNumber)
  2130. {
  2131. return _ns.SendMessageDirect(Constants.SCI_STYLEGETBOLD, styleNumber, 0) != 0;
  2132. }
  2133. int INativeScintilla.StyleGetCase(int styleNumber)
  2134. {
  2135. return _ns.SendMessageDirect(Constants.SCI_STYLEGETCASE, styleNumber, 0);
  2136. }
  2137. bool INativeScintilla.StyleGetChangeable(int styleNumber)
  2138. {
  2139. return _ns.SendMessageDirect(Constants.SCI_STYLEGETCHANGEABLE, styleNumber, 0) != 0;
  2140. }
  2141. int INativeScintilla.StyleGetCharacterSet(int styleNumber)
  2142. {
  2143. return _ns.SendMessageDirect(Constants.SCI_STYLEGETCHARACTERSET, styleNumber, 0);
  2144. }
  2145. bool INativeScintilla.StyleGetEOLFilled(int styleNumber)
  2146. {
  2147. return _ns.SendMessageDirect(Constants.SCI_STYLEGETEOLFILLED, styleNumber, 0) != 0;
  2148. }
  2149. void INativeScintilla.StyleGetFont(int styleNumber, out string fontName)
  2150. {
  2151. string s;
  2152. int length = _ns.SendMessageDirect(Constants.SCI_STYLEGETFONT, styleNumber, 0);
  2153. _ns.SendMessageDirect(Constants.SCI_STYLEGETFONT, (IntPtr)styleNumber, out s, length);
  2154. fontName = s;
  2155. }
  2156. int INativeScintilla.StyleGetFore(int styleNumber)
  2157. {
  2158. return _ns.SendMessageDirect(Constants.SCI_STYLEGETFORE, styleNumber, 0);
  2159. }
  2160. bool INativeScintilla.StyleGetHotspot(int styleNumber)
  2161. {
  2162. return _ns.SendMessageDirect(Constants.SCI_STYLEGETHOTSPOT, styleNumber, 0) != 0;
  2163. }
  2164. bool INativeScintilla.StyleGetItalic(int styleNumber)
  2165. {
  2166. return _ns.SendMessageDirect(Constants.SCI_STYLEGETITALIC, styleNumber, 0) != 0;
  2167. }
  2168. int INativeScintilla.StyleGetSize(int styleNumber)
  2169. {
  2170. return _ns.SendMessageDirect(Constants.SCI_STYLEGETSIZE, 0, 0);
  2171. }
  2172. bool INativeScintilla.StyleGetUnderline(int styleNumber)
  2173. {
  2174. return _ns.SendMessageDirect(Constants.SCI_STYLEGETUNDERLINE, styleNumber, 0) != 0;
  2175. }
  2176. bool INativeScintilla.StyleGetVisible(int styleNumber)
  2177. {
  2178. return _ns.SendMessageDirect(Constants.SCI_STYLEGETVISIBLE, styleNumber, 0) != 0;
  2179. }
  2180. void INativeScintilla.StyleResetDefault()
  2181. {
  2182. _ns.SendMessageDirect(Constants.SCI_STYLERESETDEFAULT, 0, 0);
  2183. }
  2184. void INativeScintilla.StyleSetBack(int styleNumber, int colour)
  2185. {
  2186. _ns.SendMessageDirect(Constants.SCI_STYLESETBACK, styleNumber, colour);
  2187. }
  2188. void INativeScintilla.StyleSetBold(int styleNumber, bool bold)
  2189. {
  2190. _ns.SendMessageDirect(Constants.SCI_STYLESETBOLD, styleNumber, bold);
  2191. }
  2192. void INativeScintilla.StyleSetCase(int styleNumber, int caseMode)
  2193. {
  2194. _ns.SendMessageDirect(Constants.SCI_STYLESETCASE, styleNumber, caseMode);
  2195. }
  2196. void INativeScintilla.StyleSetChangeable(int styleNumber, bool changeable)
  2197. {
  2198. _ns.SendMessageDirect(Constants.SCI_STYLESETCHANGEABLE, styleNumber, changeable);
  2199. }
  2200. void INativeScintilla.StyleSetCharacterSet(int styleNumber, int charSet)
  2201. {
  2202. _ns.SendMessageDirect(Constants.SCI_STYLESETCHARACTERSET, styleNumber, charSet);
  2203. }
  2204. void INativeScintilla.StyleSetEOLFilled(int styleNumber, bool eolFilled)
  2205. {
  2206. _ns.SendMessageDirect(Constants.SCI_STYLESETEOLFILLED, styleNumber, eolFilled);
  2207. }
  2208. void INativeScintilla.StyleSetFont(int styleNumber, string fontName)
  2209. {
  2210. _ns.SendMessageDirect(Constants.SCI_STYLESETFONT, styleNumber, fontName);
  2211. }
  2212. void INativeScintilla.StyleSetFore(int styleNumber, int colour)
  2213. {
  2214. _ns.SendMessageDirect(Constants.SCI_STYLESETFORE, styleNumber, colour);
  2215. }
  2216. void INativeScintilla.StyleSetHotspot(int styleNumber, bool hotspot)
  2217. {
  2218. _ns.SendMessageDirect(Constants.SCI_STYLESETHOTSPOT, styleNumber, hotspot);
  2219. }
  2220. void INativeScintilla.StyleSetItalic(int styleNumber, bool italic)
  2221. {
  2222. _ns.SendMessageDirect(Constants.SCI_STYLESETITALIC, styleNumber, italic);
  2223. }
  2224. void INativeScintilla.StyleSetSize(int styleNumber, int sizeInPoints)
  2225. {
  2226. _ns.SendMessageDirect(Constants.SCI_STYLESETSIZE, styleNumber, sizeInPoints);
  2227. }
  2228. void INativeScintilla.StyleSetUnderline(int styleNumber, bool underline)
  2229. {
  2230. _ns.SendMessageDirect(Constants.SCI_STYLESETUNDERLINE, styleNumber, underline);
  2231. }
  2232. void INativeScintilla.StyleSetVisible(int styleNumber, bool visible)
  2233. {
  2234. _ns.SendMessageDirect(Constants.SCI_STYLESETVISIBLE, styleNumber, visible);
  2235. }
  2236. void INativeScintilla.Tab()
  2237. {
  2238. _ns.SendMessageDirect(Constants.SCI_TAB, 0, 0);
  2239. }
  2240. // These 3 methods don't really make sense when targeting .NET
  2241. // which stores strings as UTF-16. I guess if you really wanted
  2242. // to have it it would make more sense to have the strings
  2243. // as byte[]s instead.
  2244. int INativeScintilla.TargetAsUtf8(out string s)
  2245. {
  2246. throw new NotSupportedException();
  2247. }
  2248. void INativeScintilla.TargetFromSelection()
  2249. {
  2250. _ns.SendMessageDirect(Constants.SCI_TARGETFROMSELECTION, 0, 0);
  2251. }
  2252. int INativeScintilla.TextHeight(int line)
  2253. {
  2254. return _ns.SendMessageDirect(Constants.SCI_TEXTHEIGHT, line, 0);
  2255. }
  2256. int INativeScintilla.TextWidth(int styleNumber, string text)
  2257. {
  2258. return _ns.SendMessageDirect(Constants.SCI_TEXTWIDTH, styleNumber, text);
  2259. }
  2260. void INativeScintilla.ToggleCaretSticky()
  2261. {
  2262. _ns.SendMessageDirect(Constants.SCI_TOGGLECARETSTICKY, 0, 0);
  2263. }
  2264. void INativeScintilla.ToggleFold(int line)
  2265. {
  2266. _ns.SendMessageDirect(Constants.SCI_TOGGLEFOLD, line, 0);
  2267. }
  2268. void INativeScintilla.Undo()
  2269. {
  2270. _ns.SendMessageDirect(Constants.SCI_UNDO, 0, 0);
  2271. }
  2272. void INativeScintilla.UpperCase()
  2273. {
  2274. _ns.SendMessageDirect(Constants.SCI_UPPERCASE, 0, 0);
  2275. }
  2276. void INativeScintilla.UsePopUp(bool bEnablePopup)
  2277. {
  2278. _ns.SendMessageDirect(Constants.SCI_USEPOPUP, bEnablePopup, 0);
  2279. }
  2280. void INativeScintilla.UserListShow(int listType, string list)
  2281. {
  2282. _ns.SendMessageDirect(Constants.SCI_USERLISTSHOW, listType, list);
  2283. }
  2284. void INativeScintilla.VCHome()
  2285. {
  2286. _ns.SendMessageDirect(Constants.SCI_VCHOME, 0, 0);
  2287. }
  2288. void INativeScintilla.VCHomeExtend()
  2289. {
  2290. _ns.SendMessageDirect(Constants.SCI_VCHOMEEXTEND, 0, 0);
  2291. }
  2292. void INativeScintilla.VCHomeRectExtend()
  2293. {
  2294. _ns.SendMessageDirect(Constants.SCI_VCHOMERECTEXTEND, 0, 0);
  2295. }
  2296. void INativeScintilla.VCHomeWrap()
  2297. {
  2298. _ns.SendMessageDirect(Constants.SCI_VCHOMEWRAP, 0, 0);
  2299. }
  2300. void INativeScintilla.VCHomeWrapExtend()
  2301. {
  2302. _ns.SendMessageDirect(Constants.SCI_VCHOMEWRAPEXTEND, 0, 0);
  2303. }
  2304. int INativeScintilla.VisibleFromDocLine(int docLine)
  2305. {
  2306. return _ns.SendMessageDirect(Constants.SCI_VISIBLEFROMDOCLINE, docLine, 0);
  2307. }
  2308. int INativeScintilla.WordEndPosition(int position, bool onlyWordCharacters)
  2309. {
  2310. return _ns.SendMessageDirect(Constants.SCI_WORDENDPOSITION, position, onlyWordCharacters);
  2311. }
  2312. void INativeScintilla.WordLeft()
  2313. {
  2314. _ns.SendMessageDirect(Constants.SCI_WORDLEFT, 0, 0);
  2315. }
  2316. void INativeScintilla.WordLeftEnd()
  2317. {
  2318. _ns.SendMessageDirect(Constants.SCI_WORDLEFTEND, 0, 0);
  2319. }
  2320. void INativeScintilla.WordLeftEndExtend()
  2321. {
  2322. _ns.SendMessageDirect(Constants.SCI_WORDLEFTENDEXTEND, 0, 0);
  2323. }
  2324. void INativeScintilla.WordLeftExtend()
  2325. {
  2326. _ns.SendMessageDirect(Constants.SCI_WORDLEFTEXTEND, 0, 0);
  2327. }
  2328. void INativeScintilla.WordPartLeft()
  2329. {
  2330. _ns.SendMessageDirect(Constants.SCI_WORDPARTLEFT, 0, 0);
  2331. }
  2332. void INativeScintilla.WordPartLeftExtend()
  2333. {
  2334. _ns.SendMessageDirect(Constants.SCI_WORDPARTLEFTEXTEND, 0, 0);
  2335. }
  2336. void INativeScintilla.WordPartRight()
  2337. {
  2338. _ns.SendMessageDirect(Constants.SCI_WORDPARTRIGHT, 0, 0);
  2339. }
  2340. void INativeScintilla.WordPartRightExtend()
  2341. {
  2342. _ns.SendMessageDirect(Constants.SCI_WORDPARTRIGHTEXTEND, 0, 0);
  2343. }
  2344. void INativeScintilla.WordRight()
  2345. {
  2346. _ns.SendMessageDirect(Constants.SCI_WORDRIGHT, 0, 0);
  2347. }
  2348. void INativeScintilla.WordRightEnd()
  2349. {
  2350. _ns.SendMessageDirect(Constants.SCI_WORDRIGHTEND, 0, 0);
  2351. }
  2352. void INativeScintilla.WordRightEndExtend()
  2353. {
  2354. _ns.SendMessageDirect(Constants.SCI_WORDRIGHTENDEXTEND, 0, 0);
  2355. }
  2356. void INativeScintilla.WordRightExtend()
  2357. {
  2358. _ns.SendMessageDirect(Constants.SCI_WORDRIGHTEXTEND, 0, 0);
  2359. }
  2360. int INativeScintilla.WordStartPosition(int position, bool onlyWordCharacters)
  2361. {
  2362. return _ns.SendMessageDirect(Constants.SCI_WORDSTARTPOSITION, position, onlyWordCharacters);
  2363. }
  2364. void INativeScintilla.ZoomIn()
  2365. {
  2366. _ns.SendMessageDirect(Constants.SCI_ZOOMIN, 0, 0);
  2367. }
  2368. void INativeScintilla.ZoomOut()
  2369. {
  2370. _ns.SendMessageDirect(Constants.SCI_ZOOMOUT, 0, 0);
  2371. }
  2372. private static string ZeroTerminated(string param)
  2373. {
  2374. if (string.IsNullOrEmpty(param))
  2375. return "\0";
  2376. else if (!param.EndsWith("\0"))
  2377. return param + "\0";
  2378. return param;
  2379. }
  2380. #endregion Methods
  2381. #region Events
  2382. event EventHandler<NativeScintillaEventArgs> INativeScintilla.AutoCSelection
  2383. {
  2384. add { Events.AddHandler(_autoCSelectionEventKey, value); }
  2385. remove { Events.RemoveHandler(_autoCSelectionEventKey, value); }
  2386. }
  2387. event EventHandler<NativeScintillaEventArgs> INativeScintilla.CallTipClick
  2388. {
  2389. add { Events.AddHandler(_callTipClickEventKeyNative, value); }
  2390. remove { Events.RemoveHandler(_callTipClickEventKeyNative, value); }
  2391. }
  2392. event EventHandler<NativeScintillaEventArgs> INativeScintilla.CharAdded
  2393. {
  2394. add { Events.AddHandler(_charAddedEventKeyNative, value); }
  2395. remove { Events.RemoveHandler(_charAddedEventKeyNative, value); }
  2396. }
  2397. event EventHandler<NativeScintillaEventArgs> INativeScintilla.DoubleClick
  2398. {
  2399. add { Events.AddHandler(_doubleClickEventKey, value); }
  2400. remove { Events.RemoveHandler(_doubleClickEventKey, value); }
  2401. }
  2402. event EventHandler<NativeScintillaEventArgs> INativeScintilla.DwellEnd
  2403. {
  2404. add { Events.AddHandler(_dwellEndEventKeyNative, value); }
  2405. remove { Events.RemoveHandler(_dwellEndEventKeyNative, value); }
  2406. }
  2407. event EventHandler<NativeScintillaEventArgs> INativeScintilla.DwellStart
  2408. {
  2409. add { Events.AddHandler(_dwellStartEventKeyNative, value); }
  2410. remove { Events.RemoveHandler(_dwellStartEventKeyNative, value); }
  2411. }
  2412. event EventHandler<NativeScintillaEventArgs> INativeScintilla.IndicatorClick
  2413. {
  2414. add { Events.AddHandler(_indicatorClickKeyNative, value); }
  2415. remove { Events.RemoveHandler(_indicatorClickKeyNative, value); }
  2416. }
  2417. event EventHandler<NativeScintillaEventArgs> INativeScintilla.IndicatorRelease
  2418. {
  2419. add { Events.AddHandler(_indicatorReleaseKeyNative, value); }
  2420. remove { Events.RemoveHandler(_indicatorReleaseKeyNative, value); }
  2421. }
  2422. event EventHandler<NativeScintillaEventArgs> INativeScintilla.Key
  2423. {
  2424. add { Events.AddHandler(_keyEventKey, value); }
  2425. remove { Events.RemoveHandler(_keyEventKey, value); }
  2426. }
  2427. event EventHandler<NativeScintillaEventArgs> INativeScintilla.MacroRecord
  2428. {
  2429. add { Events.AddHandler(_macroRecordEventKeyNative, value); }
  2430. remove { Events.RemoveHandler(_macroRecordEventKeyNative, value); }
  2431. }
  2432. event EventHandler<NativeScintillaEventArgs> INativeScintilla.MarginClick
  2433. {
  2434. add { Events.AddHandler(_marginClickEventKeyNative, value); }
  2435. remove { Events.RemoveHandler(_marginClickEventKeyNative, value); }
  2436. }
  2437. event EventHandler<NativeScintillaEventArgs> INativeScintilla.Modified
  2438. {
  2439. add { Events.AddHandler(_modifiedEventKey, value); }
  2440. remove { Events.RemoveHandler(_modifiedEventKey, value); }
  2441. }
  2442. event EventHandler<NativeScintillaEventArgs> INativeScintilla.ModifyAttemptRO
  2443. {
  2444. add { Events.AddHandler(_modifyAttemptROEventKey, value); }
  2445. remove { Events.RemoveHandler(_modifyAttemptROEventKey, value); }
  2446. }
  2447. event EventHandler<NativeScintillaEventArgs> INativeScintilla.NeedShown
  2448. {
  2449. add { Events.AddHandler(_needShownEventKey, value); }
  2450. remove { Events.RemoveHandler(_needShownEventKey, value); }
  2451. }
  2452. event EventHandler<NativeScintillaEventArgs> INativeScintilla.Painted
  2453. {
  2454. add { Events.AddHandler(_paintedEventKey, value); }
  2455. remove { Events.RemoveHandler(_paintedEventKey, value); }
  2456. }
  2457. event EventHandler<NativeScintillaEventArgs> INativeScintilla.SavePointLeft
  2458. {
  2459. add { Events.AddHandler(_savePointLeftEventKeyNative, value); }
  2460. remove { Events.RemoveHandler(_savePointLeftEventKeyNative, value); }
  2461. }
  2462. event EventHandler<NativeScintillaEventArgs> INativeScintilla.SavePointReached
  2463. {
  2464. add { Events.AddHandler(_savePointReachedEventKeyNative, value); }
  2465. remove { Events.RemoveHandler(_savePointReachedEventKeyNative, value); }
  2466. }
  2467. event EventHandler<NativeScintillaEventArgs> INativeScintilla.StyleNeeded
  2468. {
  2469. add { Events.AddHandler(_styleNeededEventKeyNative, value); }
  2470. remove { Events.RemoveHandler(_styleNeededEventKeyNative, value); }
  2471. }
  2472. event EventHandler<NativeScintillaEventArgs> INativeScintilla.UpdateUI
  2473. {
  2474. add { Events.AddHandler(_updateUIEventKey, value); }
  2475. remove { Events.RemoveHandler(_updateUIEventKey, value); }
  2476. }
  2477. event EventHandler<NativeScintillaEventArgs> INativeScintilla.UriDropped
  2478. {
  2479. add { Events.AddHandler(_uriDroppedEventKeyNative, value); }
  2480. remove { Events.RemoveHandler(_uriDroppedEventKeyNative, value); }
  2481. }
  2482. event EventHandler<NativeScintillaEventArgs> INativeScintilla.UserListSelection
  2483. {
  2484. add { Events.AddHandler(_userListSelectionEventKeyNative, value); }
  2485. remove { Events.RemoveHandler(_userListSelectionEventKeyNative, value); }
  2486. }
  2487. event EventHandler<NativeScintillaEventArgs> INativeScintilla.Zoom
  2488. {
  2489. add { Events.AddHandler(_zoomEventKey, value); }
  2490. remove { Events.RemoveHandler(_zoomEventKey, value); }
  2491. }
  2492. #endregion Events
  2493. #region Types
  2494. /// <summary>
  2495. /// Holds the last previous selection's properties, to let us know when we should fire SelectionChanged
  2496. /// </summary>
  2497. private class LastSelection
  2498. {
  2499. #region Fields
  2500. private int _end;
  2501. private int _length;
  2502. private int _start;
  2503. #endregion Fields
  2504. #region Properties
  2505. public int End
  2506. {
  2507. get { return _end; }
  2508. set
  2509. {
  2510. _end = value;
  2511. }
  2512. }
  2513. public int Length
  2514. {
  2515. get { return _length; }
  2516. set
  2517. {
  2518. _length = value;
  2519. }
  2520. }
  2521. public int Start
  2522. {
  2523. get { return _start; }
  2524. set
  2525. {
  2526. _start = value;
  2527. }
  2528. }
  2529. #endregion Properties
  2530. }
  2531. #endregion Types
  2532. }
  2533. }