IDE: make wrappers or TFileOpenClose methods global functions. Refer to SourceFileMgr singleton when needed.

git-svn-id: trunk@45702 -
This commit is contained in:
juha 2014-06-27 08:36:39 +00:00
parent 1b53356f3f
commit e1034b74cc
2 changed files with 103 additions and 109 deletions

View File

@ -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}

View File

@ -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;