/// <summary> /// Moves edit position to char position. /// </summary> /// <param name="sourceEditor">Source editor</param> /// <param name="editPos">Edit position</param> /// <returns></returns> public static OTACharPos EditPosToCharPos(IOTASourceEditor sourceEditor, OTAEditPos editPos) { IOTAEditView _EditView = GetEditView(sourceEditor); OTACharPos _CharPos = new OTACharPos(); if (_EditView != null) { _EditView.ConvertPos(true, ref editPos, ref _CharPos); } return _CharPos; }
/// <summary> /// Moves char position to edit position. /// </summary> /// <param name="sourceEditor">Source editor</param> /// <param name="charPos">Char position</param> /// <returns>Edit position.</returns> public static OTAEditPos CharPosToEditPos(IOTASourceEditor sourceEditor, OTACharPos charPos) { IOTAEditView _EditView = GetEditView(sourceEditor); OTAEditPos _EditPos = new OTAEditPos(); if (_EditView != null) { _EditView.ConvertPos(false, ref _EditPos, ref charPos); } return _EditPos; }
/// <summary> /// Selects text from position to position. /// </summary> /// <param name="sourceEditor">Source</param> /// <param name="startPos">Start position</param> /// <param name="endPos">End position</param> public static void SelectTextFromPosToPos(IOTASourceEditor sourceEditor, OTAEditPos startPos, OTAEditPos endPos) { if (sourceEditor != null) { if (sourceEditor.EditViewCount > 0) { IOTAEditView _EditView = sourceEditor.GetEditView(0); _EditView.CursorPos = startPos; _EditView.Block.BeginBlock(); _EditView.Block.Style = OTABlockType.btNonInclusive; _EditView.CursorPos = endPos; _EditView.MoveViewToCursor(); _EditView.Block.EndBlock(); } } }
/// <summary> /// Moves edit position to buffer position. /// </summary> /// <param name="sourceEditor">Source editor</param> /// <param name="editPos">Edit position</param> /// <returns></returns> public static int EditPosToBufferPos(IOTASourceEditor sourceEditor, OTAEditPos editPos) { OTACharPos _CharPos = EditPosToCharPos(sourceEditor, editPos); return CharPosToBufferPos(sourceEditor, _CharPos); }
/// <summary> /// Selects line. /// </summary> /// <param name="sourceEditor">Source editor</param> public static void SelectLine(IOTASourceEditor sourceEditor) { if (sourceEditor != null) { if (sourceEditor.EditViewCount > 0) { IOTAEditView _EditView = sourceEditor.GetEditView(0); OTAEditPos _EditPos = new OTAEditPos(); _EditPos.Line = _EditView.Position.Row; _EditPos.Col = 1; _EditView.CursorPos = _EditPos; _EditView.Block.BeginBlock(); _EditView.Block.Style = OTABlockType.btNonInclusive; if (_EditView.Position.MoveEOL()) { _EditView.MoveViewToCursor(); } _EditView.Block.EndBlock(); } } }
/// <summary> /// Goes to position. /// </summary> /// <param name="sourceEditor">Source editor</param> /// <param name="lineNumber">Line number</param> /// <param name="colNumber">column number</param> /// <remarks>After calling this, EditView.MoveViewToCursor() and /// EditView.Paint() must be called to move the view.</remarks> public static void GoToPosition(IOTASourceEditor sourceEditor, int lineNumber, short colNumber) { if (sourceEditor != null) { IOTAEditView _EditView = GetEditView(sourceEditor); OTAEditPos _Pos = new OTAEditPos(); _Pos.Col = colNumber; _Pos.Line = lineNumber; _EditView.CursorPos = _Pos; } }
/// <summary> /// Gets current line. /// </summary> /// <param name="sourceEditor">Source editor</param> /// <returns>String.Empty if no.</returns> /// <remarks> /// <para>Spaces are kept.</para> /// </remarks> public static string GetCurrentLine(IOTASourceEditor sourceEditor) { string _Source = GetSourceEditorText(sourceEditor); if (_Source.Length == 0) { return String.Empty; } IOTAEditView _EditView = GetEditView(sourceEditor); OTAEditPos _OriginalPos = _EditView.CursorPos; try { _EditView.Buffer.EditPosition.MoveEOL(); // Get the Begin of the Line OTAEditPos _BeginEditPos = new OTAEditPos(); _BeginEditPos.Col = 1; _BeginEditPos.Line = _EditView.CursorPos.Line; // Get the End of the Line OTAEditPos _EndEditPos = new OTAEditPos(); _EndEditPos.Col = _EditView.CursorPos.Col; _EndEditPos.Line = _EditView.CursorPos.Line; int _Begining = EditPosToBufferPos(sourceEditor, _BeginEditPos); int _End = EditPosToBufferPos(sourceEditor, _EndEditPos); return _Source.Substring(_Begining, _End - _Begining); } finally { _EditView.CursorPos = _OriginalPos; } }
/// <summary> /// Verifies cursor is at end of line. /// </summary> /// <param name="sourceEditor">Source editor</param> /// <returns></returns> /// <remarks>This function is not correctly implemented.</remarks> public static bool CursorIsAtEndOfLine(IOTASourceEditor sourceEditor) { IOTAEditView _EditView = GetEditView(sourceEditor); OTAEditPos _OriginalPos = _EditView.CursorPos; bool result = false; try { _EditView.Buffer.EditPosition.MoveEOL(); // Get the End of the Line OTAEditPos _EndEditPos = new OTAEditPos(); _EndEditPos.Col = _EditView.CursorPos.Col; _EndEditPos.Line = _EditView.CursorPos.Line; result = (_EndEditPos.Col == _OriginalPos.Col); } finally { _EditView.CursorPos = _OriginalPos; } return result; }
public static bool FindSelectionText(string id, string source, int lastPos, bool prev, out int pos) { IOTAEditView _EditView = GetCurrentEditView(); OTAEditPos _EditPos = new OTAEditPos(); _EditPos.Line = _EditView.Buffer.EditBlock.StartingRow; _EditPos.Col = (short)_EditView.Buffer.EditBlock.StartingColumn; int _StartPos = EditPosToBufferPos(GetCurrentSourceEditor(), _EditPos); _EditPos.Line = _EditView.Buffer.EditBlock.EndingRow; _EditPos.Col = (short)_EditView.Buffer.EditBlock.EndingColumn; //int _LastPos = EditPosToBufferPos(GetCurrentSourceEditor(), _EditPos); //int _Diff = lastPos - _StartPos; pos = -1; if (id.Length == 0) { return false; } id = id.ToUpperInvariant(); while (Lextm.StringHelper.GoNext(source, ref _StartPos, prev)) { if (Char.ToUpperInvariant(source[_StartPos]) == id[0]) { if (Lextm.StringHelper.IsStrCaseIns(source, _StartPos, id)) { pos = _StartPos; return true; } } } return false; }