From ff0abfca3e6a76a80235f20dc050572e7c2b8873 Mon Sep 17 00:00:00 2001 From: mattias Date: Wed, 24 Nov 2004 08:18:13 +0000 Subject: [PATCH] TTextStrings improvements (Exchange, Put), clean ups git-svn-id: trunk@6293 - --- ide/debugmanager.pas | 5 +- ide/main.pp | 372 ++++++++++++++++++++-------------------- ideintf/newitemintf.pas | 9 +- lcl/textstrings.pas | 225 ++++++++++++++++++++++-- 4 files changed, 406 insertions(+), 205 deletions(-) diff --git a/ide/debugmanager.pas b/ide/debugmanager.pas index b6c82fab69..03c9b6d1b2 100644 --- a/ide/debugmanager.pas +++ b/ide/debugmanager.pas @@ -1753,7 +1753,7 @@ end; procedure TDebugManager.ProcessCommand(Command: word; var Handled: boolean); begin - debugln('TDebugManager.ProcessCommand ',dbgs(Command)); + //debugln('TDebugManager.ProcessCommand ',dbgs(Command)); Handled:=true; case Command of ecPause: DoPauseProject; @@ -1941,6 +1941,9 @@ end. { ============================================================================= $Log$ + Revision 1.79 2004/11/24 08:18:13 mattias + TTextStrings improvements (Exchange, Put), clean ups + Revision 1.78 2004/11/23 11:01:10 mattias added key handling for debug manager diff --git a/ide/main.pp b/ide/main.pp index df8110095d..92f9e8acc4 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -23,7 +23,7 @@ top level functions of the IDE. - Initial Revision : Sun Mar 28 23:15:32 CST 1999 + Initial Revision : Sun Mar 28 23:15:32 CST 1999 ***************************************************************************/ @@ -115,31 +115,31 @@ type TMainIDE = class(TMainIDEBase) // event handlers - //procedure FormShow(Sender : TObject); - procedure MainIDEFormClose(Sender : TObject; var CloseAction: TCloseAction); - procedure MainIDEFormCloseQuery(Sender : TObject; var CanClose: boolean); - //procedure FormPaint(Sender : TObject); + //procedure FormShow(Sender: TObject); + procedure MainIDEFormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure MainIDEFormCloseQuery(Sender: TObject; var CanClose: boolean); + //procedure FormPaint(Sender: TObject); procedure OnApplicationUserInput(Sender: TObject; Msg: Cardinal); procedure OnApplicationIdle(Sender: TObject); procedure OnScreenRemoveForm(Sender: TObject; AForm: TCustomForm); // file menu - procedure mnuNewUnitClicked(Sender : TObject); - procedure mnuNewFormClicked(Sender : TObject); - procedure mnuNewOtherClicked(Sender : TObject); - procedure mnuOpenClicked(Sender : TObject); - procedure mnuOpenRecentClicked(Sender : TObject); - procedure mnuRevertClicked(Sender : TObject); - procedure mnuSaveClicked(Sender : TObject); - procedure mnuSaveAsClicked(Sender : TObject); - procedure mnuSaveAllClicked(Sender : TObject); - procedure mnuCloseClicked(Sender : TObject); - procedure mnuCloseAllClicked(Sender : TObject); - procedure mnuCleanDirectoryClicked(Sender : TObject); + procedure mnuNewUnitClicked(Sender: TObject); + procedure mnuNewFormClicked(Sender: TObject); + procedure mnuNewOtherClicked(Sender: TObject); + procedure mnuOpenClicked(Sender: TObject); + procedure mnuOpenRecentClicked(Sender: TObject); + procedure mnuRevertClicked(Sender: TObject); + procedure mnuSaveClicked(Sender: TObject); + procedure mnuSaveAsClicked(Sender: TObject); + procedure mnuSaveAllClicked(Sender: TObject); + procedure mnuCloseClicked(Sender: TObject); + procedure mnuCloseAllClicked(Sender: TObject); + procedure mnuCleanDirectoryClicked(Sender: TObject); {$IFDEF UseStartLazarus} - procedure mnuRestartClicked(Sender : TObject); + procedure mnuRestartClicked(Sender: TObject); {$ENDIF} - procedure mnuQuitClicked(Sender : TObject); + procedure mnuQuitClicked(Sender: TObject); // edit menu procedure mnuEditUndoClicked(Sender: TObject); @@ -191,83 +191,84 @@ type procedure mnuSearchFindBlockOtherEnd(Sender: TObject); procedure mnuSearchFindBlockStart(Sender: TObject); procedure mnuSearchFindDeclaration(Sender: TObject); - procedure mnuFindDeclarationClicked(Sender : TObject); - procedure mnuOpenFileAtCursorClicked(Sender : TObject); - procedure mnuGotoIncludeDirectiveClicked(Sender : TObject); + procedure mnuFindDeclarationClicked(Sender: TObject); + procedure mnuOpenFileAtCursorClicked(Sender: TObject); + procedure mnuGotoIncludeDirectiveClicked(Sender: TObject); // view menu - procedure mnuViewInspectorClicked(Sender : TObject); - procedure mnuViewSourceEditorClicked(Sender : TObject); - procedure mnuViewUnitsClicked(Sender : TObject); - procedure mnuViewFormsClicked(Sender : TObject); - procedure mnuViewUnitDependenciesClicked(Sender : TObject); - procedure mnuViewUnitInfoClicked(Sender : TObject); - procedure mnuViewCodeExplorerClick(Sender : TObject); - procedure mnuViewMessagesClick(Sender : TObject); - procedure mnuViewSearchResultsClick(Sender : TObject); - procedure mnuToggleFormUnitClicked(Sender : TObject); + procedure mnuViewInspectorClicked(Sender: TObject); + procedure mnuViewSourceEditorClicked(Sender: TObject); + procedure mnuViewUnitsClicked(Sender: TObject); + procedure mnuViewFormsClicked(Sender: TObject); + procedure mnuViewUnitDependenciesClicked(Sender: TObject); + procedure mnuViewUnitInfoClicked(Sender: TObject); + procedure mnuViewCodeExplorerClick(Sender: TObject); + procedure mnuViewMessagesClick(Sender: TObject); + procedure mnuViewSearchResultsClick(Sender: TObject); + procedure mnuToggleFormUnitClicked(Sender: TObject); // project menu - procedure mnuNewProjectClicked(Sender : TObject); - procedure mnuNewProjectFromFileClicked(Sender : TObject); - procedure mnuOpenProjectClicked(Sender : TObject); - procedure mnuSaveProjectClicked(Sender : TObject); - procedure mnuSaveProjectAsClicked(Sender : TObject); - procedure mnuPublishProjectClicked(Sender : TObject); - procedure mnuProjectInspectorClicked(Sender : TObject); - procedure mnuAddToProjectClicked(Sender : TObject); - procedure mnuRemoveFromProjectClicked(Sender : TObject); - procedure mnuViewProjectSourceClicked(Sender : TObject); - procedure mnuViewProjectTodosClicked(Sender : TObject); - procedure mnuProjectOptionsClicked(Sender : TObject); + procedure mnuNewProjectClicked(Sender: TObject); + procedure mnuNewProjectFromFileClicked(Sender: TObject); + procedure mnuOpenProjectClicked(Sender: TObject); + procedure mnuSaveProjectClicked(Sender: TObject); + procedure mnuSaveProjectAsClicked(Sender: TObject); + procedure mnuPublishProjectClicked(Sender: TObject); + procedure mnuProjectInspectorClicked(Sender: TObject); + procedure mnuAddToProjectClicked(Sender: TObject); + procedure mnuRemoveFromProjectClicked(Sender: TObject); + procedure mnuViewProjectSourceClicked(Sender: TObject); + procedure mnuViewProjectTodosClicked(Sender: TObject); + procedure mnuProjectOptionsClicked(Sender: TObject); // run menu - procedure mnuBuildProjectClicked(Sender : TObject); - procedure mnuBuildAllProjectClicked(Sender : TObject); - procedure mnuAbortBuildProjectClicked(Sender : TObject); - procedure mnuRunProjectClicked(Sender : TObject); - procedure mnuPauseProjectClicked(Sender : TObject); - procedure mnuStepIntoProjectClicked(Sender : TObject); - procedure mnuStepOverProjectClicked(Sender : TObject); - procedure mnuRunToCursorProjectClicked(Sender : TObject); - procedure mnuStopProjectClicked(Sender : TObject); - procedure mnuRunParametersClicked(Sender : TObject); - procedure mnuProjectCompilerSettingsClicked(Sender : TObject); - procedure mnuBuildFileClicked(Sender : TObject); - procedure mnuRunFileClicked(Sender : TObject); - procedure mnuConfigBuildFileClicked(Sender : TObject); + procedure mnuBuildProjectClicked(Sender: TObject); + procedure mnuBuildAllProjectClicked(Sender: TObject); + procedure mnuAbortBuildProjectClicked(Sender: TObject); + procedure mnuRunProjectClicked(Sender: TObject); + procedure mnuPauseProjectClicked(Sender: TObject); + procedure mnuStepIntoProjectClicked(Sender: TObject); + procedure mnuStepOverProjectClicked(Sender: TObject); + procedure mnuRunToCursorProjectClicked(Sender: TObject); + procedure mnuStopProjectClicked(Sender: TObject); + procedure mnuRunParametersClicked(Sender: TObject); + procedure mnuProjectCompilerSettingsClicked(Sender: TObject); + procedure mnuBuildFileClicked(Sender: TObject); + procedure mnuRunFileClicked(Sender: TObject); + procedure mnuConfigBuildFileClicked(Sender: TObject); // components menu + // see pkgmanager.pas // tools menu - procedure mnuToolConfigureClicked(Sender : TObject); - procedure mnuToolSyntaxCheckClicked(Sender : TObject); - procedure mnuToolGuessUnclosedBlockClicked(Sender : TObject); - procedure mnuToolGuessMisplacedIFDEFClicked(Sender : TObject); - procedure mnuToolMakeResourceStringClicked(Sender : TObject); - procedure mnuToolDiffClicked(Sender : TObject); - procedure mnuToolConvertDFMtoLFMClicked(Sender : TObject); + procedure mnuToolConfigureClicked(Sender: TObject); + procedure mnuToolSyntaxCheckClicked(Sender: TObject); + procedure mnuToolGuessUnclosedBlockClicked(Sender: TObject); + procedure mnuToolGuessMisplacedIFDEFClicked(Sender: TObject); + procedure mnuToolMakeResourceStringClicked(Sender: TObject); + procedure mnuToolDiffClicked(Sender: TObject); + procedure mnuToolConvertDFMtoLFMClicked(Sender: TObject); procedure mnuToolCheckLFMClicked(Sender: TObject); procedure mnuToolConvertDelphiUnitClicked(Sender: TObject); procedure mnuToolConvertDelphiProjectClicked(Sender: TObject); - procedure mnuToolBuildLazarusClicked(Sender : TObject); - procedure mnuToolConfigBuildLazClicked(Sender : TObject); - procedure mnuCustomExtToolClick(Sender : TObject); + procedure mnuToolBuildLazarusClicked(Sender: TObject); + procedure mnuToolConfigBuildLazClicked(Sender: TObject); + procedure mnuCustomExtToolClick(Sender: TObject); // environment menu - procedure mnuEnvGeneralOptionsClicked(Sender : TObject); - procedure mnuEnvEditorOptionsClicked(Sender : TObject); - procedure mnuEnvCodeToolsOptionsClicked(Sender : TObject); - procedure mnuEnvCodeToolsDefinesEditorClicked(Sender : TObject); - procedure mnuEnvRescanFPCSrcDirClicked(Sender : TObject); + procedure mnuEnvGeneralOptionsClicked(Sender: TObject); + procedure mnuEnvEditorOptionsClicked(Sender: TObject); + procedure mnuEnvCodeToolsOptionsClicked(Sender: TObject); + procedure mnuEnvCodeToolsDefinesEditorClicked(Sender: TObject); + procedure mnuEnvRescanFPCSrcDirClicked(Sender: TObject); // windows menu // help menu - // see HelpManager.pas + // see helpmanager.pas - procedure OpenFileDownArrowClicked(Sender : TObject); - procedure mnuOpenFilePopupClick(Sender : TObject); + procedure OpenFileDownArrowClicked(Sender: TObject); + procedure mnuOpenFilePopupClick(Sender: TObject); public // Global IDE events @@ -284,31 +285,31 @@ type procedure DoShowEnvGeneralOptions(StartPage: TEnvOptsDialogPage); // SourceNotebook events - procedure OnSrcNoteBookActivated(Sender : TObject); + procedure OnSrcNoteBookActivated(Sender: TObject); procedure OnSrcNoteBookAddJumpPoint(ACaretXY: TPoint; ATopLine: integer; APageIndex: integer; DeleteForwardHistory: boolean); - procedure OnSrcNoteBookCtrlMouseUp(Sender : TObject; - Button : TMouseButton; Shift: TShiftstate; X, Y: Integer); + procedure OnSrcNoteBookCtrlMouseUp(Sender: TObject; + Button: TMouseButton; Shift: TShiftstate; X, Y: Integer); procedure OnSrcNotebookDeleteLastJumPoint(Sender: TObject); - procedure OnSrcNotebookEditorVisibleChanged(Sender : TObject); - procedure OnSrcNotebookEditorChanged(Sender : TObject); - procedure OnSrcNotebookFileNew(Sender : TObject); - procedure OnSrcNotebookFileOpen(Sender : TObject); - procedure OnSrcNotebookFileOpenAtCursor(Sender : TObject); - procedure OnSrcNotebookFileSave(Sender : TObject); - procedure OnSrcNotebookFileSaveAs(Sender : TObject); - procedure OnSrcNotebookFileClose(Sender : TObject); - procedure OnSrcNotebookFindDeclaration(Sender : TObject); + procedure OnSrcNotebookEditorVisibleChanged(Sender: TObject); + procedure OnSrcNotebookEditorChanged(Sender: TObject); + procedure OnSrcNotebookFileNew(Sender: TObject); + procedure OnSrcNotebookFileOpen(Sender: TObject); + procedure OnSrcNotebookFileOpenAtCursor(Sender: TObject); + procedure OnSrcNotebookFileSave(Sender: TObject); + procedure OnSrcNotebookFileSaveAs(Sender: TObject); + procedure OnSrcNotebookFileClose(Sender: TObject); + procedure OnSrcNotebookFindDeclaration(Sender: TObject); procedure OnSrcNotebookInitIdentCompletion(Sender: TObject; var Handled, Abort: boolean); procedure OnSrcNotebookJumpToHistoryPoint(var NewCaretXY: TPoint; var NewTopLine, NewPageIndex: integer; JumpAction: TJumpHistoryAction); procedure OnSrcNotebookMovingPage(Sender: TObject; OldPageIndex, NewPageIndex: integer); - procedure OnSrcNotebookReadOnlyChanged(Sender : TObject); - procedure OnSrcNotebookSaveAll(Sender : TObject); + procedure OnSrcNotebookReadOnlyChanged(Sender: TObject); + procedure OnSrcNotebookSaveAll(Sender: TObject); procedure OnSrcNotebookShowHintForSource(SrcEdit: TSourceEditor; - ClientPos: TPoint; CaretPos: TPoint); + ClientPos: TPoint; CaretPos: TPoint); procedure OnSrcNoteBookShowUnitInfo(Sender: TObject); procedure OnSrcNotebookToggleFormUnit(Sender: TObject); procedure OnSrcNotebookToggleObjectInsp(Sender: TObject); @@ -322,8 +323,9 @@ type Shift: TShiftState); procedure OnPropHookGetMethods(TypeData:PTypeData; Proc:TGetStringProc); function OnPropHookMethodExists(const AMethodName:ShortString; - TypeData: PTypeData; - var MethodIsCompatible,MethodIsPublished,IdentIsMethod: boolean):boolean; + TypeData: PTypeData; + var MethodIsCompatible, MethodIsPublished, + IdentIsMethod: boolean): boolean; function OnPropHookCreateMethod(const AMethodName:ShortString; ATypeInfo:PTypeInfo): TMethod; procedure OnPropHookShowMethod(const AMethodName:ShortString); @@ -338,7 +340,7 @@ type // designer events procedure OnDesignerGetSelectedComponentClass(Sender: TObject; - var RegisteredComponent: TRegisteredComponent); + var RegisteredComponent: TRegisteredComponent); procedure OnDesignerUnselectComponentClass(Sender: TObject); procedure OnDesignerSetDesigning(Sender: TObject; Component: TComponent; Value: boolean); @@ -363,14 +365,14 @@ type procedure OnControlSelectionChanged(Sender: TObject); procedure OnControlSelectionPropsChanged(Sender: TObject); procedure OnControlSelectionFormChanged(Sender: TObject; OldForm, - NewForm: TCustomForm); + NewForm: TCustomForm); // project inspector procedure ProjInspectorOpen(Sender: TObject); function ProjInspectorAddUnitToProject(Sender: TObject; - AnUnitInfo: TUnitInfo): TModalresult; + AnUnitInfo: TUnitInfo): TModalresult; function ProjInspectorRemoveFile(Sender: TObject; - AnUnitInfo: TUnitInfo): TModalresult; + AnUnitInfo: TUnitInfo): TModalresult; // compiler options dialog events procedure OnCompilerOptionsDialogTest(Sender: TObject); @@ -379,9 +381,9 @@ type // unit dependencies events procedure UnitDependenciesViewAccessingSources(Sender: TObject); function UnitDependenciesViewGetProjectMainFilename( - Sender: TObject): string; + Sender: TObject): string; procedure UnitDependenciesViewOpenFile(Sender: TObject; - const Filename: string); + const Filename: string); // code explorer events procedure OnCodeExplorerGetCodeTree(Sender: TObject; @@ -413,10 +415,10 @@ type procedure OnCompilerGraphStampIncreased; // MessagesView events - procedure MessagesViewSelectionChanged(sender : TObject); + procedure MessagesViewSelectionChanged(sender: TObject); //SearchResultsView events - procedure SearchResultsViewSelectionChanged(sender : TObject); + procedure SearchResultsViewSelectionChanged(sender: TObject); // External Tools events procedure OnExtToolNeedsOutputFilter(var OutputFilter: TOutputFilter; @@ -424,9 +426,9 @@ type procedure OnExtToolFreeOutputFilter(OutputFilter: TOutputFilter; ErrorOccurred: boolean); private - FDisplayState : TDisplayState; - FLastFormActivated : TCustomForm;// used to find the last form so you can - // display the correct tab + FDisplayState: TDisplayState; + FLastFormActivated: TCustomForm;// used to find the last form so you can + // display the correct tab FOpenEditorsOnCodeToolChange: boolean; FRunProcess: TProcess; // temp solution, will be replaced by dummydebugger @@ -523,9 +525,9 @@ type // methods for publish project procedure OnCopyFile(const Filename: string; var Copy: boolean; - Data: TObject); + Data: TObject); procedure OnCopyError(const ErrorData: TCopyErrorData; - var Handled: boolean; Data: TObject); + var Handled: boolean; Data: TObject); public CustomExtToolMenuSeparator: TMenuItem; @@ -746,7 +748,7 @@ type procedure DoBringToFrontFormOrInspector; procedure DoShowDesignerFormOfCurrentSrc; procedure DoShowSourceOfActiveDesignerForm; - procedure SetDesigning(AComponent: TComponent; Value : Boolean); + procedure SetDesigning(AComponent: TComponent; Value: Boolean); procedure CreateDesignerForComponent(AComponent: TComponent); procedure InvalidateAllDesignerForms; procedure UpdateIDEComponentPalette; @@ -1112,14 +1114,14 @@ begin end; end; -Procedure TMainIDE.ToolButtonClick(Sender : TObject); +Procedure TMainIDE.ToolButtonClick(Sender: TObject); Begin Assert(False, 'Trace:TOOL BUTTON CLICK!'); end; {------------------------------------------------------------------------------} -procedure TMainIDE.MainIDEFormClose(Sender : TObject; +procedure TMainIDE.MainIDEFormClose(Sender: TObject; var CloseAction: TCloseAction); begin SaveEnvironment; @@ -1130,7 +1132,7 @@ begin if SourceNoteBook<>nil then SourceNoteBook.ClearUnUsedEditorComponents(true); end; -procedure TMainIDE.MainIDEFormCloseQuery(Sender : TObject; +procedure TMainIDE.MainIDEFormCloseQuery(Sender: TObject; var CanClose: boolean); var MsgResult: integer; @@ -1179,7 +1181,7 @@ procedure TMainIDE.SetupSpeedButtons; function CreateButton(const AName, APixName: String; ANumGlyphs: Integer; var ALeft, ATop: Integer; const AMoveFlags: TMoveFlags; - const AOnClick: TNotifyEvent; const AHint : String): TSpeedButton; + const AOnClick: TNotifyEvent; const AHint: String): TSpeedButton; begin Result := TSpeedButton.Create(OwningComponent); with Result do @@ -1786,30 +1788,30 @@ end; {------------------------------------------------------------------------------} -procedure TMainIDE.mnuToggleFormUnitClicked(Sender : TObject); +procedure TMainIDE.mnuToggleFormUnitClicked(Sender: TObject); begin DoBringToFrontFormOrUnit; end; -Procedure TMainIDE.SetDesigning(AComponent: TComponent; Value : Boolean); +Procedure TMainIDE.SetDesigning(AComponent: TComponent; Value: Boolean); Begin AComponent.SetDesigning(Value); if Value then InterfaceObject.SetDesigning(AComponent); end; {------------------------------------------------------------------------------} -procedure TMainIDE.mnuFindDeclarationClicked(Sender : TObject); +procedure TMainIDE.mnuFindDeclarationClicked(Sender: TObject); begin if SourceNoteBook.NoteBook=nil then exit; DoFindDeclarationAtCursor; end; -procedure TMainIDE.mnuNewUnitClicked(Sender : TObject); +procedure TMainIDE.mnuNewUnitClicked(Sender: TObject); begin DoNewEditorFile(FileDescriptorUnit,'','',[nfOpenInEditor,nfCreateDefaultSrc]); end; -procedure TMainIDE.mnuNewFormClicked(Sender : TObject); +procedure TMainIDE.mnuNewFormClicked(Sender: TObject); begin DoNewEditorFile(FileDescriptorForm,'','',[nfOpenInEditor,nfCreateDefaultSrc]); end; @@ -1819,7 +1821,7 @@ begin DoNewOther; end; -procedure TMainIDE.mnuOpenClicked(Sender : TObject); +procedure TMainIDE.mnuOpenClicked(Sender: TObject); procedure UpdateEnvironment; begin @@ -1885,42 +1887,42 @@ begin end; end; -procedure TMainIDE.mnuRevertClicked(Sender : TObject); +procedure TMainIDE.mnuRevertClicked(Sender: TObject); begin if SourceNoteBook.NoteBook=nil then exit; DoOpenEditorFile('',SourceNoteBook.NoteBook.PageIndex,[ofRevert]); end; -procedure TMainIDE.mnuOpenFileAtCursorClicked(Sender : TObject); +procedure TMainIDE.mnuOpenFileAtCursorClicked(Sender: TObject); begin if SourceNoteBook.NoteBook=nil then exit; DoOpenFileAtCursor(Sender); end; -procedure TMainIDE.mnuGotoIncludeDirectiveClicked(Sender : TObject); +procedure TMainIDE.mnuGotoIncludeDirectiveClicked(Sender: TObject); begin DoGotoIncludeDirective; end; -procedure TMainIDE.mnuSaveClicked(Sender : TObject); +procedure TMainIDE.mnuSaveClicked(Sender: TObject); begin if SourceNoteBook.NoteBook=nil then exit; DoSaveEditorFile(SourceNoteBook.NoteBook.PageIndex,[sfCheckAmbigiousFiles]); end; -procedure TMainIDE.mnuSaveAsClicked(Sender : TObject); +procedure TMainIDE.mnuSaveAsClicked(Sender: TObject); begin if SourceNoteBook.NoteBook=nil then exit; DoSaveEditorFile(SourceNoteBook.NoteBook.PageIndex, [sfSaveAs,sfCheckAmbigiousFiles]); end; -procedure TMainIDE.mnuSaveAllClicked(Sender : TObject); +procedure TMainIDE.mnuSaveAllClicked(Sender: TObject); begin DoSaveAll([sfCheckAmbigiousFiles]); end; -procedure TMainIDE.mnuCloseClicked(Sender : TObject); +procedure TMainIDE.mnuCloseClicked(Sender: TObject); var PageIndex: integer; begin if SourceNoteBook.NoteBook=nil then exit; @@ -1934,7 +1936,7 @@ begin DoCloseEditorFile(PageIndex,[cfSaveFirst]); end; -procedure TMainIDE.mnuCloseAllClicked(Sender : TObject); +procedure TMainIDE.mnuCloseAllClicked(Sender: TObject); begin DoSaveAll([]); while (SourceNoteBook.NoteBook<>nil) @@ -1947,37 +1949,37 @@ begin ShowCleanDirectoryDialog(Project1.ProjectDirectory,MacroList); end; -Procedure TMainIDE.OnSrcNotebookFileNew(Sender : TObject); +Procedure TMainIDE.OnSrcNotebookFileNew(Sender: TObject); begin mnuNewFormClicked(Sender); end; -Procedure TMainIDE.OnSrcNotebookFileClose(Sender : TObject); +Procedure TMainIDE.OnSrcNotebookFileClose(Sender: TObject); begin mnuCloseClicked(Sender); end; -Procedure TMainIDE.OnSrcNotebookFileOpen(Sender : TObject); +Procedure TMainIDE.OnSrcNotebookFileOpen(Sender: TObject); begin mnuOpenClicked(Sender); end; -Procedure TMainIDE.OnSrcNoteBookFileOpenAtCursor(Sender : TObject); +Procedure TMainIDE.OnSrcNoteBookFileOpenAtCursor(Sender: TObject); begin mnuOpenFileAtCursorClicked(Sender); end; -Procedure TMainIDE.OnSrcNotebookFileSave(Sender : TObject); +Procedure TMainIDE.OnSrcNotebookFileSave(Sender: TObject); begin mnuSaveClicked(Sender); end; -Procedure TMainIDE.OnSrcNotebookFileSaveAs(Sender : TObject); +Procedure TMainIDE.OnSrcNotebookFileSaveAs(Sender: TObject); begin mnuSaveAsClicked(Sender); end; -Procedure TMainIDE.OnSrcNoteBookFindDeclaration(Sender : TObject); +Procedure TMainIDE.OnSrcNoteBookFindDeclaration(Sender: TObject); begin mnuFindDeclarationClicked(Sender); end; @@ -1989,12 +1991,12 @@ begin Abort:=not DoInitIdentCompletion; end; -Procedure TMainIDE.OnSrcNotebookSaveAll(Sender : TObject); +Procedure TMainIDE.OnSrcNotebookSaveAll(Sender: TObject); begin mnuSaveAllClicked(Sender); end; -procedure TMainIDE.OnSrcNotebookToggleFormUnit(Sender : TObject); +procedure TMainIDE.OnSrcNotebookToggleFormUnit(Sender: TObject); begin mnuToggleFormUnitClicked(Sender); end; @@ -2179,7 +2181,7 @@ end; {------------------------------------------------------------------------------} -Procedure TMainIDE.OpenFileDownArrowClicked(Sender : TObject); +Procedure TMainIDE.OpenFileDownArrowClicked(Sender: TObject); var CurIndex: integer; PopupPos: TPoint; @@ -2382,7 +2384,7 @@ begin end; {$ENDIF} -procedure TMainIDE.mnuQuitClicked(Sender : TObject); +procedure TMainIDE.mnuQuitClicked(Sender: TObject); var CanClose: boolean; begin CanClose:=true; @@ -2397,7 +2399,7 @@ begin end; {------------------------------------------------------------------------------} -procedure TMainIDE.mnuViewInspectorClicked(Sender : TObject); +procedure TMainIDE.mnuViewInspectorClicked(Sender: TObject); begin DoBringToFrontFormOrInspector; end; @@ -2409,17 +2411,17 @@ end; {------------------------------------------------------------------------------} -Procedure TMainIDE.mnuViewUnitsClicked(Sender : TObject); +Procedure TMainIDE.mnuViewUnitsClicked(Sender: TObject); begin DoViewUnitsAndForms(false); end; -Procedure TMainIDE.mnuViewFormsClicked(Sender : TObject); +Procedure TMainIDE.mnuViewFormsClicked(Sender: TObject); Begin DoViewUnitsAndForms(true); end; -Procedure TMainIDE.mnuViewUnitDependenciesClicked(Sender : TObject); +Procedure TMainIDE.mnuViewUnitDependenciesClicked(Sender: TObject); begin DoViewUnitDependencies; end; @@ -2429,17 +2431,17 @@ begin DoViewUnitInfo; end; -Procedure TMainIDE.mnuViewCodeExplorerClick(Sender : TObject); +Procedure TMainIDE.mnuViewCodeExplorerClick(Sender: TObject); begin DoShowCodeExplorer; end; -Procedure TMainIDE.mnuViewMessagesClick(Sender : TObject); +Procedure TMainIDE.mnuViewMessagesClick(Sender: TObject); Begin MessagesView.ShowOnTop; End; -Procedure TMainIDE.mnuViewSearchResultsClick(Sender : TObject); +Procedure TMainIDE.mnuViewSearchResultsClick(Sender: TObject); Begin CreateSearchResultWindow; SearchResultsView.ShowOnTop; @@ -2449,7 +2451,7 @@ End; {------------------------------------------------------------------------------} -Procedure TMainIDE.mnuNewProjectClicked(Sender : TObject); +Procedure TMainIDE.mnuNewProjectClicked(Sender: TObject); var NewProjectDesc: TProjectDescriptor; Begin @@ -2491,7 +2493,7 @@ Begin end; end; -Procedure TMainIDE.mnuOpenProjectClicked(Sender : TObject); +Procedure TMainIDE.mnuOpenProjectClicked(Sender: TObject); var OpenDialog:TOpenDialog; AFileName: string; @@ -2524,12 +2526,12 @@ begin end; end; -Procedure TMainIDE.mnuSaveProjectClicked(Sender : TObject); +Procedure TMainIDE.mnuSaveProjectClicked(Sender: TObject); Begin DoSaveProject([]); end; -procedure TMainIDE.mnuSaveProjectAsClicked(Sender : TObject); +procedure TMainIDE.mnuSaveProjectAsClicked(Sender: TObject); begin DoSaveProject([sfSaveAs]); end; @@ -2544,17 +2546,17 @@ begin DoShowProjectInspector; end; -procedure TMainIDE.mnuAddToProjectClicked(Sender : TObject); +procedure TMainIDE.mnuAddToProjectClicked(Sender: TObject); begin DoAddActiveUnitToProject; end; -procedure TMainIDE.mnuRemoveFromProjectClicked(Sender : TObject); +procedure TMainIDE.mnuRemoveFromProjectClicked(Sender: TObject); begin DoRemoveFromProjectDialog; end; -procedure TMainIDE.mnuViewProjectSourceClicked(Sender : TObject); +procedure TMainIDE.mnuViewProjectSourceClicked(Sender: TObject); begin DoOpenMainUnit(false); end; @@ -2564,7 +2566,7 @@ begin DoShowToDoList; end; -procedure TMainIDE.mnuProjectOptionsClicked(Sender : TObject); +procedure TMainIDE.mnuProjectOptionsClicked(Sender: TObject); var ActiveSrcEdit: TSourceEditor; ActiveUnitInfo: TUnitInfo; @@ -2575,52 +2577,52 @@ begin end; end; -Procedure TMainIDE.mnuBuildProjectClicked(Sender : TObject); +Procedure TMainIDE.mnuBuildProjectClicked(Sender: TObject); Begin DoBuildProject(crCompile); end; -Procedure TMainIDE.mnuBuildAllProjectClicked(Sender : TObject); +Procedure TMainIDE.mnuBuildAllProjectClicked(Sender: TObject); Begin DoBuildProject(crBuild); end; -Procedure TMainIDE.mnuAbortBuildProjectClicked(Sender : TObject); +Procedure TMainIDE.mnuAbortBuildProjectClicked(Sender: TObject); Begin DoAbortBuild; end; -Procedure TMainIDE.mnuRunProjectClicked(Sender : TObject); +Procedure TMainIDE.mnuRunProjectClicked(Sender: TObject); begin DoRunProject; end; -Procedure TMainIDE.mnuPauseProjectClicked(Sender : TObject); +Procedure TMainIDE.mnuPauseProjectClicked(Sender: TObject); begin DebugBoss.DoPauseProject; end; -Procedure TMainIDE.mnuStepIntoProjectClicked(Sender : TObject); +Procedure TMainIDE.mnuStepIntoProjectClicked(Sender: TObject); begin DebugBoss.DoStepIntoProject; end; -Procedure TMainIDE.mnuStepOverProjectClicked(Sender : TObject); +Procedure TMainIDE.mnuStepOverProjectClicked(Sender: TObject); begin DebugBoss.DoStepOverProject; end; -Procedure TMainIDE.mnuRunToCursorProjectClicked(Sender : TObject); +Procedure TMainIDE.mnuRunToCursorProjectClicked(Sender: TObject); begin DebugBoss.DoRunToCursor; end; -Procedure TMainIDE.mnuStopProjectClicked(Sender : TObject); +Procedure TMainIDE.mnuStopProjectClicked(Sender: TObject); begin DebugBoss.DoStopProject; end; -procedure TMainIDE.mnuProjectCompilerSettingsClicked(Sender : TObject); +procedure TMainIDE.mnuProjectCompilerSettingsClicked(Sender: TObject); var frmCompilerOptions: TfrmCompilerOptions; NewCaption: String; @@ -2660,14 +2662,14 @@ begin DoConfigBuildFile; end; -procedure TMainIDE.mnuRunParametersClicked(Sender : TObject); +procedure TMainIDE.mnuRunParametersClicked(Sender: TObject); begin ShowRunParamsOptsDlg(Project1.RunParameterOptions); end; //------------------------------------------------------------------------------ -procedure TMainIDE.mnuToolConfigureClicked(Sender : TObject); +procedure TMainIDE.mnuToolConfigureClicked(Sender: TObject); begin if ShowExtToolDialog(EnvironmentOptions.ExternalTools,MacroList)=mrOk then begin @@ -2682,32 +2684,32 @@ begin end; end; -procedure TMainIDE.mnuToolSyntaxCheckClicked(Sender : TObject); +procedure TMainIDE.mnuToolSyntaxCheckClicked(Sender: TObject); begin DoCheckSyntax; end; -procedure TMainIDE.mnuToolGuessUnclosedBlockClicked(Sender : TObject); +procedure TMainIDE.mnuToolGuessUnclosedBlockClicked(Sender: TObject); begin DoJumpToGuessedUnclosedBlock(true); end; -procedure TMainIDE.mnuToolGuessMisplacedIFDEFClicked(Sender : TObject); +procedure TMainIDE.mnuToolGuessMisplacedIFDEFClicked(Sender: TObject); begin DoJumpToGuessedMisplacedIFDEF(true); end; -procedure TMainIDE.mnuToolMakeResourceStringClicked(Sender : TObject); +procedure TMainIDE.mnuToolMakeResourceStringClicked(Sender: TObject); begin DoMakeResourceString; end; -procedure TMainIDE.mnuToolDiffClicked(Sender : TObject); +procedure TMainIDE.mnuToolDiffClicked(Sender: TObject); begin DoDiff; end; -procedure TMainIDE.mnuToolConvertDFMtoLFMClicked(Sender : TObject); +procedure TMainIDE.mnuToolConvertDFMtoLFMClicked(Sender: TObject); begin DoConvertDFMtoLFM; end; @@ -2779,12 +2781,12 @@ begin end; end; -procedure TMainIDE.mnuToolBuildLazarusClicked(Sender : TObject); +procedure TMainIDE.mnuToolBuildLazarusClicked(Sender: TObject); begin DoBuildLazarus([]); end; -procedure TMainIDE.mnuToolConfigBuildLazClicked(Sender : TObject); +procedure TMainIDE.mnuToolConfigBuildLazClicked(Sender: TObject); var CmdLineDefines: TDefineTemplate; LazSrcTemplate: TDefineTemplate; @@ -2976,7 +2978,7 @@ Begin end; End; -procedure TMainIDE.mnuEnvEditorOptionsClicked(Sender : TObject); +procedure TMainIDE.mnuEnvEditorOptionsClicked(Sender: TObject); var EditorOptionsForm: TEditorOptionsForm; Begin EditorOptionsForm:=TEditorOptionsForm.Create(Application); @@ -2990,12 +2992,12 @@ Begin end; End; -procedure TMainIDE.mnuEnvCodeToolsOptionsClicked(Sender : TObject); +procedure TMainIDE.mnuEnvCodeToolsOptionsClicked(Sender: TObject); begin ShowCodeToolsOptions(CodeToolsOpts,@SourceNoteBook.GetSynEditPreviewSettings); end; -procedure TMainIDE.mnuEnvCodeToolsDefinesEditorClicked(Sender : TObject); +procedure TMainIDE.mnuEnvCodeToolsDefinesEditorClicked(Sender: TObject); begin ShowCodeToolsDefinesEditor(CodeToolBoss,CodeToolsOpts,MacroList); end; @@ -3049,7 +3051,7 @@ end; function TMainIDE.CreateNewForm(NewUnitInfo: TUnitInfo; AncestorType: TPersistentClass; ResourceCode: TCodeBuffer): TModalResult; var - CInterface : TComponentInterface; + CInterface: TComponentInterface; NewComponent: TComponent; begin if not AncestorType.InheritsFrom(TComponent) then @@ -5353,6 +5355,7 @@ Begin ProjectDesc.CreateStartFiles(Project1); // rebuild codetools defines + RescanCompilerDefines(true); // (i.e. remove old project specific things and create new) IncreaseCompilerParseStamp; Project1.DefineTemplates.AllChanged; @@ -9856,19 +9859,19 @@ end; //----------------------------------------------------------------------------- -procedure TMainIDE.MessagesViewSelectionChanged(sender : TObject); +procedure TMainIDE.MessagesViewSelectionChanged(sender: TObject); begin DoJumpToCompilerMessage(TMessagesView(Sender).SelectedMessageIndex,True); end; -procedure TMainIDE.SearchResultsViewSelectionChanged(sender : TObject); +procedure TMainIDE.SearchResultsViewSelectionChanged(sender: TObject); begin DoJumpToSearchResult(True); end; -Procedure TMainIDE.OnSrcNotebookEditorVisibleChanged(Sender : TObject); +Procedure TMainIDE.OnSrcNotebookEditorVisibleChanged(Sender: TObject); var - ActiveUnitInfo : TUnitInfo; + ActiveUnitInfo: TUnitInfo; begin if SourceNotebook.Notebook = nil then Exit; @@ -9882,7 +9885,7 @@ begin end; //this is fired when the editor is focused, changed, ?. Anything that causes the status change -Procedure TMainIDE.OnSrcNotebookEditorChanged(Sender : TObject); +Procedure TMainIDE.OnSrcNotebookEditorChanged(Sender: TObject); begin if SourceNotebook.Notebook = nil then Exit; MainIDEBar.SaveSpeedBtn.Enabled := SourceNotebook.GetActiveSE.Modified; @@ -9949,13 +9952,13 @@ begin SrcEdit.ActivateHint(ClientPos,SmartHintStr); end; -procedure TMainIDE.OnSrcNoteBookActivated(Sender : TObject); +procedure TMainIDE.OnSrcNoteBookActivated(Sender: TObject); begin FDisplayState:= dsSource; DoCheckFilesOnDisk; end; -Procedure TMainIDE.OnDesignerActivated(Sender : TObject); +Procedure TMainIDE.OnDesignerActivated(Sender: TObject); begin FDisplayState:= dsForm; FLastFormActivated := TDesigner(Sender).Form; @@ -10246,7 +10249,7 @@ begin ActiveUnitInfo.UserReadOnly:=ActiveSourceEditor.ReadOnly; end; -Procedure TMainIDE.OnSrcNotebookViewJumpHistory(Sender : TObject); +Procedure TMainIDE.OnSrcNotebookViewJumpHistory(Sender: TObject); begin // ToDo MessageDlg(ueNotImplCap, lisSorryNotImplementedYet, mtInformation, @@ -10962,6 +10965,9 @@ end. { ============================================================================= $Log$ + Revision 1.798 2004/11/24 08:18:13 mattias + TTextStrings improvements (Exchange, Put), clean ups + Revision 1.797 2004/11/23 11:01:10 mattias added key handling for debug manager diff --git a/ideintf/newitemintf.pas b/ideintf/newitemintf.pas index f273c96794..2fe03fc75e 100644 --- a/ideintf/newitemintf.pas +++ b/ideintf/newitemintf.pas @@ -44,7 +44,7 @@ type function GetCount: integer; virtual; abstract; function GetItems(Index: integer): TNewIDEItemTemplate; virtual; abstract; public - constructor Create(const AName: string); virtual; {$IFNDEF VER1_0}abstract;{$ENDIF} + constructor Create(const AName: string); virtual; procedure Clear; virtual; abstract; procedure Add(ATemplate: TNewIDEItemTemplate); virtual; abstract; function LocalizedName: string; virtual; abstract; @@ -131,16 +131,13 @@ begin NewIDEItems.UnregisterItem(NewItem); end; +{ TNewIDEItemCategory } -{$IFDEF VER1_0} +constructor TNewIDEItemCategory.Create(const AName: string); //fpc 1.0 doesn't support virtual abstract constructors, //so we just make it virtual - -{ TNewIDEItemCategory } -constructor TNewIDEItemCategory.Create(const AName: string); begin end; -{$ENDIF} { TNewIDEItemTemplate } diff --git a/lcl/textstrings.pas b/lcl/textstrings.pas index 3ab2954e0f..e351832d0d 100644 --- a/lcl/textstrings.pas +++ b/lcl/textstrings.pas @@ -26,13 +26,9 @@ UNDER CONSTRUCTION by Mattias Gaertner ToDo: - - Exchange - - Put - - Sort - - CustomSort - - Find - - Index - Add + - Move + - IndexOf } unit TextStrings; @@ -50,7 +46,7 @@ type StartPos: integer; // start of line in Text EndPos: integer; // end of line in Text (= start of newline character(s)) Line: string; // cached line as string - TheObject: TObject; + TheObject: TObject; // user data end; TTextStrings = class(TStrings) @@ -64,6 +60,7 @@ type FLineRanges: ^TTextLineRange;// array of TTextLineRange FText: string; FUpdateCount: integer; + FChangedWhileUpdate: boolean; function GetTextStr: string; override; procedure SetTextStr(const AValue: string); override; procedure BuildArrays; virtual; @@ -73,6 +70,7 @@ type function Get(Index: Integer): string; override; procedure ClearArrays; function GetObject(Index: Integer): TObject; override; + procedure Put(Index: Integer; const S: string); override; procedure PutObject(Index: Integer; AnObject: TObject); override; function GetLineLen(Index: integer; IncludeNewLineChars: boolean): integer; public @@ -82,7 +80,14 @@ type procedure Insert(Index: Integer; const S: string); override; procedure Delete(Index: Integer); override; procedure Exchange(Index1, Index2: Integer); override; + procedure Move(CurIndex, NewIndex: Integer); override; procedure MakeTextBufferUnique; + procedure BeginUpdate; + procedure EndUpdate; + function GetText: PChar; override; + function IndexOf(const S: string): Integer; override; + function Add(const S: string): Integer; override; + procedure AddStrings(TheStrings: TStrings); override; public property Text: string read FText write SetTextStr; property OnChange: TNotifyEvent read FOnChange write FOnChange; @@ -167,10 +172,14 @@ begin end; procedure TTextStrings.Changed; +// called after text changed begin - if (FUpdateCount=0) then - if Assigned(FOnChange) then - FOnChange(Self); + if (FUpdateCount>0) then begin + FChangedWhileUpdate:=true; + exit; + end; + if Assigned(FOnChange) then + FOnChange(Self); end; procedure TTextStrings.Changing; @@ -215,6 +224,48 @@ begin Result:=nil; end; +procedure TTextStrings.Put(Index: Integer; const S: string); +var + OldLineLen: Integer; + NewLineLen: Integer; + Movement: Integer; + OldStartPos: LongInt; + OldEndPos: LongInt; + MoveLen: Integer; + i: Integer; + NewEndPos: Integer; +begin + if not FArraysValid then BuildArrays; + OldStartPos:=FLineRanges[Index].StartPos; + OldEndPos:=FLineRanges[Index].EndPos; + NewLineLen:=length(s); + OldLineLen:=OldEndPos-OldStartPos; + Movement:=NewLineLen-OldLineLen; + NewEndPos:=OldEndPos+Movement; + // move text behind + MoveLen:=length(FText)-OldEndPos; + if (Movement<>0) and (MoveLen>0) then begin + SetLength(FText,length(FText)+Movement); + System.Move(FText[OldEndPos],FText[NewEndPos],MoveLen); + for i:=Index+1 to FLineCount-1 do begin + inc(FLineRanges[i].StartPos,Movement); + inc(FLineRanges[i].EndPos,Movement); + end; + end; + FLineRanges[Index].EndPos:=NewEndPos; + // copy text + if NewLineLen>0 then + System.Move(S[1],FText[OldStartPos],NewLineLen); + FLineRanges[Index].Line:=S; + // check if arrays need rebuild + i:=NewLineLen; + while (i>0) and (not (S[i] in [#10,#13])) do dec(i); + if i>0 then begin + // S contains new line chars => rebuild needed + FArraysValid:=false; + end; +end; + procedure TTextStrings.PutObject(Index: Integer; AnObject: TObject); begin if not FArraysValid then BuildArrays; @@ -262,23 +313,29 @@ var NewLineCharCount: Integer; NewLineLen: Integer; i: Integer; + SEndsInNewLine: boolean; begin if not FArraysValid then BuildArrays; NewLineLen:=length(S); + SEndsInNewLine:=(S<>'') and (S[NewLineLen] in [#10,#13]); if Index0) and (S[NewLineLen] in [#10,#13]) then begin + if SEndsInNewLine then begin inc(NewLineCharCount); if (NewLineLen>1) and (S[NewLineLen-1] in [#10,#13]) and (S[NewLineLen-1]<>S[NewLineLen]) then inc(NewLineCharCount); + System.Insert(S,FText,NewStartPos); + end else begin + // append missing newline char + System.Insert(S+LineEnding,FText,NewStartPos); + NewLineCharCount:=length(LineEnding); + inc(NewLineLen,NewLineCharCount); end; - // adjust text - System.Insert(S,FText,NewStartPos); // adjust arrays if FLineCount=FLineCapacity then begin if FLineCapacity<8 then @@ -289,7 +346,7 @@ begin end; if Index=FLineCount'); + end; + + procedure RaiseIndex2Big; + begin + raise Exception.Create('TTextStrings.Exchange Index2>=FLineCount'); + end; + var LineLen1: Integer; LineLen2: Integer; + buf: Pointer; + Dummy: Integer; + OldBetweenStart: Integer; + NewBetweenStart: Integer; + BetweenLength: Integer; + StartPos1: LongInt; + StartPos2: LongInt; + DummyRange: TTextLineRange; + i: Integer; + Movement: Integer; begin + // check values if Index1=Index2 then exit; + if Index1<=0 then RaiseIndex1Neg; + if Index2<=0 then RaiseIndex2Neg; + if Index1>=FLineCount then RaiseIndex1Big; + if Index2>=FLineCount then RaiseIndex2Big; + + // make sure Index1Index2 then begin + Dummy:=Index1; + Index1:=Index2; + Index2:=Dummy; + end; + + // get line lengths including new line chars if not FArraysValid then BuildArrays; LineLen1:=GetLineLen(Index1,true); LineLen2:=GetLineLen(Index2,true); if (LineLen1<1) and (LineLen2<1) then exit; + // adjust text MakeTextBufferUnique; - + // save the bigger line + StartPos1:=FLineRanges[Index1].StartPos; + StartPos2:=FLineRanges[Index2].StartPos; + if LineLen1>=LineLen2 then begin + GetMem(buf,LineLen1); + System.Move(FText[StartPos1],buf^,LineLen1); + end else begin + GetMem(buf,LineLen2); + System.Move(FText[StartPos2],buf^,LineLen2); + end; + + // move text in between + OldBetweenStart:=StartPos1+LineLen1; + BetweenLength:=StartPos2-OldBetweenStart; + NewBetweenStart:=StartPos1+LineLen2; + if (BetweenLength>0) and (OldBetweenStart<>NewBetweenStart) then + System.Move(FText[OldBetweenStart],FText[NewBetweenStart],BetweenLength); + + // move both lines + if LineLen1>=LineLen2 then begin + System.Move(FText[StartPos2],FText[StartPos1],LineLen2); + System.Move(buf^,FText[StartPos2],LineLen1); + end else begin + System.Move(FText[StartPos1],FText[StartPos2],LineLen1); + System.Move(buf^,FText[StartPos1],LineLen2); + end; + + // adjust line ranges + if LineLen1<>LineLen2 then begin + System.Move(FLineRanges[Index1],DummyRange,SizeOf(TTextLineRange)); + System.Move(FLineRanges[Index2],FLineRanges[Index1],SizeOf(TTextLineRange)); + System.Move(DummyRange,FLineRanges[Index2],SizeOf(TTextLineRange)); + if (BetweenLength>0) and (OldBetweenStart<>NewBetweenStart) then begin + Movement:=NewBetweenStart-OldBetweenStart; + for i:=Index1+1 to Index2-1 do begin + inc(FLineRanges[i].StartPos,Movement); + inc(FLineRanges[i].EndPos,Movement); + end; + end; + end; + + // clean up + FreeMem(buf); +end; + +procedure TTextStrings.Move(CurIndex, NewIndex: Integer); +begin + // TODO + inherited Move(CurIndex, NewIndex); end; procedure TTextStrings.MakeTextBufferUnique; @@ -348,5 +499,49 @@ begin UniqueString(FText); end; +procedure TTextStrings.BeginUpdate; +begin + inc(FUpdateCount); +end; + +procedure TTextStrings.EndUpdate; +begin + if FUpdateCount<=0 then + raise Exception.Create('TTextStrings.EndUpdate'); + dec(FUpdateCount); + if FUpdateCount=0 then begin + if FChangedWhileUpdate then + Changed; + end; +end; + +function TTextStrings.GetText: PChar; +begin + Result:=PChar(FText); +end; + +function TTextStrings.IndexOf(const S: string): Integer; +begin + // TODO + Result:=inherited IndexOf(S); +end; + +function TTextStrings.Add(const S: string): Integer; +begin + // TODO + Result:=inherited Add(S); +end; + +procedure TTextStrings.AddStrings(TheStrings: TStrings); +var + s: String; +begin + if (FText<>'') and (not (FText[length(FText)] in [#10,#13])) then + s:=LineEnding + else + s:=''; + Text:=Text+s+TheStrings.Text; +end; + end.