mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-11 16:36:01 +02:00
IDE: make wrappers or TFileOpenClose methods global functions. Refer to SourceFileMgr singleton when needed.
git-svn-id: trunk@45702 -
This commit is contained in:
parent
1b53356f3f
commit
e1034b74cc
33
ide/main.pp
33
ide/main.pp
@ -3121,7 +3121,7 @@ var
|
||||
ActiveUnitInfo: TUnitInfo;
|
||||
begin
|
||||
GetCurrentUnit(ActiveSrcEdit,ActiveUnitInfo);
|
||||
SourceFileMgr.OpenFileAtCursor(ActiveSrcEdit, ActiveUnitInfo);
|
||||
OpenFileAtCursor(ActiveSrcEdit, ActiveUnitInfo);
|
||||
end;
|
||||
|
||||
procedure TMainIDE.mnuGotoIncludeDirectiveClicked(Sender: TObject);
|
||||
@ -4230,7 +4230,7 @@ end;
|
||||
|
||||
procedure TMainIDE.mnuViewProjectSourceClicked(Sender: TObject);
|
||||
begin
|
||||
SourceFileMgr.OpenMainUnit(-1,-1,[]);
|
||||
OpenMainUnit(-1,-1,[]);
|
||||
end;
|
||||
|
||||
procedure TMainIDE.mnuProjectOptionsClicked(Sender: TObject);
|
||||
@ -5705,7 +5705,7 @@ end;
|
||||
function TMainIDE.DoOpenEditorFile(AFileName: string; PageIndex, WindowIndex: integer;
|
||||
AEditorInfo: TUnitEditorInfo; Flags: TOpenFlags): TModalResult;
|
||||
begin
|
||||
Result:=SourceFileMgr.OpenEditorFile(AFileName, PageIndex, WindowIndex, AEditorInfo, Flags);
|
||||
Result:=OpenEditorFile(AFileName, PageIndex, WindowIndex, AEditorInfo, Flags);
|
||||
end;
|
||||
|
||||
procedure TMainIDE.DoDropFiles(Sender: TObject;
|
||||
@ -5795,7 +5795,7 @@ begin
|
||||
end else
|
||||
begin
|
||||
if Project1.MainUnitInfo = AnUnitInfo then
|
||||
Result:=SourceFileMgr.OpenMainUnit(-1,-1,[])
|
||||
Result:=OpenMainUnit(-1,-1,[])
|
||||
else
|
||||
Result:=DoOpenEditorFile(AnUnitInfo.Filename,-1,-1,[ofOnlyIfExists]);
|
||||
if Result=mrAbort then exit;
|
||||
@ -6193,10 +6193,10 @@ begin
|
||||
if (Project1=nil) then exit;
|
||||
AnUnitInfo:=Project1.UnitInfoWithFilename(Filename,[]);
|
||||
if (AnUnitInfo<>nil) and (AnUnitInfo.OpenEditorInfoCount > 0) then
|
||||
Result:=SourceFileMgr.OpenEditorFile(AnUnitInfo.Filename,
|
||||
AnUnitInfo.OpenEditorInfo[0].PageIndex,
|
||||
AnUnitInfo.OpenEditorInfo[0].WindowID,
|
||||
nil,[ofRevert],True); // Reverting one will revert all
|
||||
Result:=OpenEditorFile(AnUnitInfo.Filename,
|
||||
AnUnitInfo.OpenEditorInfo[0].PageIndex,
|
||||
AnUnitInfo.OpenEditorInfo[0].WindowID,
|
||||
nil,[ofRevert],True); // Reverting one will revert all
|
||||
end;
|
||||
|
||||
function TMainIDE.CreateProjectObject(ProjectDesc,
|
||||
@ -8500,7 +8500,7 @@ begin
|
||||
AnUnitInfo:=Project1.UnitInfoWithFilename(SearchedFilename);
|
||||
AnEditorInfo := nil;
|
||||
if AnUnitInfo <> nil then
|
||||
AnEditorInfo := SourceFileMgr.GetAvailableUnitEditorInfo(AnUnitInfo, LogCaretXY);
|
||||
AnEditorInfo := GetAvailableUnitEditorInfo(AnUnitInfo, LogCaretXY);
|
||||
if AnEditorInfo <> nil then begin
|
||||
SourceEditorManager.ActiveEditor := TSourceEditor(AnEditorInfo.EditorComponent);
|
||||
Result := True;
|
||||
@ -8623,7 +8623,7 @@ begin
|
||||
AnUnitInfo := Project1.UnitInfoWithFilename(SearchedFilename);
|
||||
AnEditorInfo := nil;
|
||||
if AnUnitInfo <> nil then
|
||||
AnEditorInfo := SourceFileMgr.GetAvailableUnitEditorInfo(AnUnitInfo, LogCaretXY);
|
||||
AnEditorInfo := GetAvailableUnitEditorInfo(AnUnitInfo, LogCaretXY);
|
||||
if AnEditorInfo <> nil then begin
|
||||
SourceEditorManager.ActiveEditor := TSourceEditor(AnEditorInfo.EditorComponent);
|
||||
Result := True;
|
||||
@ -9482,7 +9482,7 @@ begin
|
||||
|
||||
AnEditorInfo := nil;
|
||||
if ActiveUnitInfo <> nil then
|
||||
AnEditorInfo := SourceFileMgr.GetAvailableUnitEditorInfo(ActiveUnitInfo, Point(NewX,NewY), NewTopLine);
|
||||
AnEditorInfo := GetAvailableUnitEditorInfo(ActiveUnitInfo, Point(NewX,NewY), NewTopLine);
|
||||
if AnEditorInfo <> nil then begin
|
||||
SourceEditorManager.ActiveEditor := TSourceEditor(AnEditorInfo.EditorComponent);
|
||||
Result := mrOK;
|
||||
@ -9497,7 +9497,7 @@ begin
|
||||
NewSrcEdit := SourceEditorManager.ActiveEditor;
|
||||
end
|
||||
else begin
|
||||
AnEditorInfo := SourceFileMgr.GetAvailableUnitEditorInfo(ActiveUnitInfo, Point(NewX,NewY), NewTopLine);
|
||||
AnEditorInfo := GetAvailableUnitEditorInfo(ActiveUnitInfo, Point(NewX,NewY), NewTopLine);
|
||||
if AnEditorInfo <> nil then begin
|
||||
NewSrcEdit := TSourceEditor(AnEditorInfo.EditorComponent);
|
||||
SourceEditorManager.ActiveEditor := NewSrcEdit;
|
||||
@ -9664,7 +9664,7 @@ begin
|
||||
AnEditorInfo := nil;
|
||||
ActiveSrcEdit := nil;
|
||||
if AnUnitInfo <> nil then
|
||||
AnEditorInfo := SourceFileMgr.GetAvailableUnitEditorInfo(AnUnitInfo, ErrorCaret);
|
||||
AnEditorInfo := GetAvailableUnitEditorInfo(AnUnitInfo, ErrorCaret);
|
||||
if AnEditorInfo <> nil then begin
|
||||
ActiveSrcEdit := TSourceEditor(AnEditorInfo.EditorComponent);
|
||||
SourceEditorManager.ActiveEditor := ActiveSrcEdit;
|
||||
@ -10731,7 +10731,7 @@ begin
|
||||
AnUnitInfo := TUnitInfo(Project1.Bookmarks.UnitInfoForBookmarkWithIndex(ID));
|
||||
if (AnUnitInfo <> nil) and (AnUnitInfo.OpenEditorInfoCount > 0) then begin
|
||||
NewXY := Project1.Bookmarks.BookmarkWithID(ID).CursorPos;
|
||||
AnEditorInfo := SourceFileMgr.GetAvailableUnitEditorInfo(AnUnitInfo, NewXY);
|
||||
AnEditorInfo := GetAvailableUnitEditorInfo(AnUnitInfo, NewXY);
|
||||
end;
|
||||
if AnEditorInfo <> nil then
|
||||
AnEditor := TSourceEditor(AnEditorInfo.EditorComponent);
|
||||
@ -11292,8 +11292,7 @@ begin
|
||||
LFMFilename:=ChangeFileExt(AnUnitInfo.Filename, '.lfm');
|
||||
if not FileExistsUTF8(LFMFilename) then
|
||||
LFMFilename:=ChangeFileExt(AnUnitInfo.Filename, '.dfm');
|
||||
SourceFileMgr.OpenEditorFile(LFMFilename, EditorInfo.PageIndex+1,
|
||||
EditorInfo.WindowID, nil, [], True);
|
||||
OpenEditorFile(LFMFilename, EditorInfo.PageIndex+1, EditorInfo.WindowID, nil, [], True);
|
||||
end;
|
||||
|
||||
procedure TMainIDE.OnDesignerSaveAsXML(Sender: TObject);
|
||||
@ -11492,7 +11491,7 @@ begin
|
||||
JumpHistory.HistoryIndex:=DestIndex;
|
||||
NewCaretXY:=DestJumpPoint.CaretXY;
|
||||
NewTopLine:=DestJumpPoint.TopLine;
|
||||
AnEditorInfo := SourceFileMgr.GetAvailableUnitEditorInfo(Project1.Units[UnitIndex], NewCaretXY);
|
||||
AnEditorInfo := GetAvailableUnitEditorInfo(Project1.Units[UnitIndex], NewCaretXY);
|
||||
if AnEditorInfo <> nil then
|
||||
DestEditor:=TSourceEditor(AnEditorInfo.EditorComponent);
|
||||
{$IFDEF VerboseJumpHistory}
|
||||
|
@ -54,13 +54,10 @@ uses
|
||||
|
||||
type
|
||||
|
||||
TLazSourceFileManager = class;
|
||||
|
||||
{ TFileOpenClose }
|
||||
|
||||
TFileOpenClose = class
|
||||
private
|
||||
FManager: TLazSourceFileManager;
|
||||
FFileName: string;
|
||||
// Used by OpenEditorFile
|
||||
FPageIndex: integer;
|
||||
@ -95,7 +92,7 @@ type
|
||||
function FindFile(SearchPath: String): Boolean;
|
||||
function GetFilenameAtRowCol(XY: TPoint): string;
|
||||
public
|
||||
constructor Create(AManager: TLazSourceFileManager);
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
function GetAvailableUnitEditorInfo(AnUnitInfo: TUnitInfo;
|
||||
ACaretPoint: TPoint; WantedTopLine: integer = -1): TUnitEditorInfo;
|
||||
@ -132,18 +129,6 @@ type
|
||||
public
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
///
|
||||
function GetAvailableUnitEditorInfo(AnUnitInfo: TUnitInfo;
|
||||
ACaretPoint: TPoint; WantedTopLine: integer = -1): TUnitEditorInfo;
|
||||
function OpenEditorFile(AFileName: string; PageIndex, WindowIndex: integer;
|
||||
AEditorInfo: TUnitEditorInfo; Flags: TOpenFlags;
|
||||
UseWindowID: Boolean = False): TModalResult; // WindowIndex is WindowID
|
||||
function OpenFileAtCursor(ActiveSrcEdit: TSourceEditor;
|
||||
ActiveUnitInfo: TUnitInfo): TModalResult;
|
||||
function OpenMainUnit(PageIndex, WindowIndex: integer;
|
||||
Flags: TOpenFlags; UseWindowID: Boolean = False): TModalResult;
|
||||
function RevertMainUnit: TModalResult;
|
||||
///
|
||||
procedure AddRecentProjectFileToEnvironment(const AFilename: string);
|
||||
procedure UpdateSourceNames;
|
||||
function CheckEditorNeedsSave(AEditor: TSourceEditorInterface;
|
||||
@ -286,6 +271,18 @@ type
|
||||
IgnoreEditor: TSourceEditor): string;
|
||||
procedure UpdateDefaultPasFileExt;
|
||||
|
||||
// Wrappers for TFileOpenClose methods.
|
||||
// WindowIndex is WindowID
|
||||
function GetAvailableUnitEditorInfo(AnUnitInfo: TUnitInfo;
|
||||
ACaretPoint: TPoint; WantedTopLine: integer = -1): TUnitEditorInfo;
|
||||
function OpenEditorFile(AFileName: string; PageIndex, WindowIndex: integer;
|
||||
AEditorInfo: TUnitEditorInfo; Flags: TOpenFlags; UseWindowID: Boolean = False): TModalResult;
|
||||
function OpenFileAtCursor(ActiveSrcEdit: TSourceEditor;
|
||||
ActiveUnitInfo: TUnitInfo): TModalResult;
|
||||
function OpenMainUnit(PageIndex, WindowIndex: integer;
|
||||
Flags: TOpenFlags; UseWindowID: Boolean = False): TModalResult;
|
||||
function RevertMainUnit: TModalResult;
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
@ -323,11 +320,79 @@ begin
|
||||
LazProjectFileDescriptors.DefaultPascalFileExt:=DefPasExt;
|
||||
end;
|
||||
|
||||
// Wrappers for TFileOpenClose methods.
|
||||
|
||||
function GetAvailableUnitEditorInfo(AnUnitInfo: TUnitInfo;
|
||||
ACaretPoint: TPoint; WantedTopLine: integer = -1): TUnitEditorInfo;
|
||||
var
|
||||
Opener: TFileOpenClose;
|
||||
begin
|
||||
Opener := TFileOpenClose.Create;
|
||||
try
|
||||
Result := Opener.GetAvailableUnitEditorInfo(AnUnitInfo,ACaretPoint,WantedTopLine);
|
||||
finally
|
||||
Opener.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
function OpenEditorFile(AFileName: string; PageIndex, WindowIndex: integer;
|
||||
AEditorInfo: TUnitEditorInfo; Flags: TOpenFlags; UseWindowID: Boolean = False): TModalResult;
|
||||
var
|
||||
Opener: TFileOpenClose;
|
||||
begin
|
||||
Opener := TFileOpenClose.Create;
|
||||
try
|
||||
Opener.FFileName := AFileName;
|
||||
Result := Opener.OpenEditorFile(PageIndex,WindowIndex,AEditorInfo,Flags,UseWindowID);
|
||||
finally
|
||||
Opener.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
function OpenFileAtCursor(ActiveSrcEdit: TSourceEditor; ActiveUnitInfo: TUnitInfo): TModalResult;
|
||||
var
|
||||
Opener: TFileOpenClose;
|
||||
begin
|
||||
Opener := TFileOpenClose.Create;
|
||||
try
|
||||
Opener.FActiveSrcEdit := ActiveSrcEdit;
|
||||
Opener.FActiveUnitInfo := ActiveUnitInfo;
|
||||
Result := Opener.OpenFileAtCursor;
|
||||
finally
|
||||
Opener.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
function OpenMainUnit(PageIndex, WindowIndex: integer;
|
||||
Flags: TOpenFlags; UseWindowID: Boolean): TModalResult;
|
||||
var
|
||||
Opener: TFileOpenClose;
|
||||
begin
|
||||
Opener := TFileOpenClose.Create;
|
||||
try
|
||||
Result := Opener.OpenMainUnit(PageIndex, WindowIndex, Flags, UseWindowID);
|
||||
finally
|
||||
Opener.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
function RevertMainUnit: TModalResult;
|
||||
var
|
||||
Opener: TFileOpenClose;
|
||||
begin
|
||||
Opener := TFileOpenClose.Create;
|
||||
try
|
||||
Result := Opener.RevertMainUnit;
|
||||
finally
|
||||
Opener.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TFileOpenClose }
|
||||
|
||||
constructor TFileOpenClose.Create(AManager: TLazSourceFileManager);
|
||||
constructor TFileOpenClose.Create;
|
||||
begin
|
||||
FManager:=AManager;
|
||||
|
||||
end;
|
||||
|
||||
destructor TFileOpenClose.Destroy;
|
||||
@ -381,7 +446,7 @@ begin
|
||||
|
||||
// update marks and cursor positions in Project1, so that merging the old
|
||||
// settings during restoration will work
|
||||
FManager.SaveSourceEditorProjectSpecificSettings;
|
||||
SourceFileMgr.SaveSourceEditorProjectSpecificSettings;
|
||||
AShareEditor := nil;
|
||||
if AnUnitInfo.OpenEditorInfoCount > 0 then
|
||||
AShareEditor := TSourceEditor(AnUnitInfo.OpenEditorInfo[0].EditorComponent);
|
||||
@ -627,7 +692,7 @@ begin
|
||||
CloseFlags:=[cfSaveDependencies];
|
||||
if ofRevert in FFlags then
|
||||
Include(CloseFlags,cfCloseDependencies);
|
||||
Result:=FManager.LoadLFM(FNewUnitInfo,FFlags,CloseFlags);
|
||||
Result:=SourceFileMgr.LoadLFM(FNewUnitInfo,FFlags,CloseFlags);
|
||||
if Result<>mrOk then begin
|
||||
DebugLn(['TFileOpenClose.OpenResource LoadLFM failed']);
|
||||
exit;
|
||||
@ -639,7 +704,7 @@ begin
|
||||
// this is no pascal source and there is a designer form
|
||||
// This can be the case, when the file is renamed and/or reverted
|
||||
// -> close form
|
||||
Result:=FManager.CloseUnitComponent(FNewUnitInfo,
|
||||
Result:=SourceFileMgr.CloseUnitComponent(FNewUnitInfo,
|
||||
[cfCloseDependencies,cfSaveDependencies]);
|
||||
if Result<>mrOk then begin
|
||||
DebugLn(['TFileOpenClose.OpenResource CloseUnitComponent failed']);
|
||||
@ -863,7 +928,7 @@ begin
|
||||
ACaption:=lisProgramDetected;
|
||||
if IDEMessageDialog(ACaption, AText, mtConfirmation, [mbYes,mbNo])=mrYes then
|
||||
begin
|
||||
Result:=FManager.CreateProjectForProgram(PreReadBuf);
|
||||
Result:=SourceFileMgr.CreateProjectForProgram(PreReadBuf);
|
||||
if Result = mrOK then
|
||||
Result := mrIgnore;
|
||||
exit;
|
||||
@ -1381,76 +1446,6 @@ begin
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
// Wrappers for TFileOpenClose methods.
|
||||
|
||||
function TLazSourceFileManager.GetAvailableUnitEditorInfo(AnUnitInfo: TUnitInfo;
|
||||
ACaretPoint: TPoint; WantedTopLine: integer = -1): TUnitEditorInfo;
|
||||
var
|
||||
Opener: TFileOpenClose;
|
||||
begin
|
||||
Opener := TFileOpenClose.Create(Self);
|
||||
try
|
||||
Result := Opener.GetAvailableUnitEditorInfo(AnUnitInfo,ACaretPoint,WantedTopLine);
|
||||
finally
|
||||
Opener.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TLazSourceFileManager.OpenEditorFile(AFileName: string;
|
||||
PageIndex, WindowIndex: integer; AEditorInfo: TUnitEditorInfo;
|
||||
Flags: TOpenFlags; UseWindowID: Boolean = False): TModalResult;
|
||||
var
|
||||
Opener: TFileOpenClose;
|
||||
begin
|
||||
Opener := TFileOpenClose.Create(Self);
|
||||
try
|
||||
Opener.FFileName := AFileName;
|
||||
Result := Opener.OpenEditorFile(PageIndex,WindowIndex,AEditorInfo,Flags,UseWindowID);
|
||||
finally
|
||||
Opener.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TLazSourceFileManager.OpenFileAtCursor(ActiveSrcEdit: TSourceEditor;
|
||||
ActiveUnitInfo: TUnitInfo): TModalResult;
|
||||
var
|
||||
Opener: TFileOpenClose;
|
||||
begin
|
||||
Opener := TFileOpenClose.Create(Self);
|
||||
try
|
||||
Opener.FActiveSrcEdit := ActiveSrcEdit;
|
||||
Opener.FActiveUnitInfo := ActiveUnitInfo;
|
||||
Result := Opener.OpenFileAtCursor;
|
||||
finally
|
||||
Opener.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TLazSourceFileManager.OpenMainUnit(PageIndex, WindowIndex: integer;
|
||||
Flags: TOpenFlags; UseWindowID: Boolean): TModalResult;
|
||||
var
|
||||
Opener: TFileOpenClose;
|
||||
begin
|
||||
Opener := TFileOpenClose.Create(Self);
|
||||
try
|
||||
Result := Opener.OpenMainUnit(PageIndex, WindowIndex, Flags, UseWindowID);
|
||||
finally
|
||||
Opener.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TLazSourceFileManager.RevertMainUnit: TModalResult;
|
||||
var
|
||||
Opener: TFileOpenClose;
|
||||
begin
|
||||
Opener := TFileOpenClose.Create(Self);
|
||||
try
|
||||
Result := Opener.RevertMainUnit;
|
||||
finally
|
||||
Opener.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TLazSourceFileManager.CheckMainSrcLCLInterfaces(Silent: boolean): TModalResult;
|
||||
var
|
||||
MainUnitInfo: TUnitInfo;
|
||||
|
Loading…
Reference in New Issue
Block a user