IdeIntf: A new ProjectOpening event. Triggered before a project opens. Issue #36899.

git-svn-id: trunk@63085 -
This commit is contained in:
juha 2020-04-26 19:58:32 +00:00
parent bc9d1a87a3
commit 7ef32e6a3a
3 changed files with 29 additions and 6 deletions

View File

@ -1402,8 +1402,7 @@ begin
Result:=nil;
end;
function TAbstractExternalTool.FindParser(const SubTool: string
): TExtToolParser;
function TAbstractExternalTool.FindParser(const SubTool: string): TExtToolParser;
var
i: Integer;
ParserClass: TExtToolParserClass;

View File

@ -236,6 +236,7 @@ type
lihtSaveAsEditorFile, // called after user selected a new filename for an editor file
lihtIDERestoreWindows, // called when IDE is restoring the windows (before opening the first project)
lihtIDEClose, // called when IDE is shutting down (after closequery, so no more interactivity)
lihtProjectOpening,// called before IDE opens a project
lihtProjectOpened,// called after IDE opened a project
lihtProjectClose, // called before IDE closes a project
lihtProjectBuilding, // called before IDE builds the project
@ -470,6 +471,11 @@ type
procedure AddHandlerOnIDEClose(const OnIDECloseEvent: TNotifyEvent;
AsLast: boolean = false);
procedure RemoveHandlerOnIDEClose(const OnIDECloseEvent: TNotifyEvent);
procedure AddHandlerOnProjectOpening(
const OnProjectOpeningEvent: TLazProjectChangedFunction;
AsLast: boolean = false);
procedure RemoveHandlerOnProjectOpening(
const OnProjectOpeningEvent: TLazProjectChangedFunction);
procedure AddHandlerOnProjectOpened(
const OnProjectOpenedEvent: TLazProjectChangedFunction;
AsLast: boolean = false);
@ -900,6 +906,18 @@ begin
RemoveHandler(lihtIDEClose,TMethod(OnIDECloseEvent));
end;
procedure TLazIDEInterface.AddHandlerOnProjectOpening(
const OnProjectOpeningEvent: TLazProjectChangedFunction; AsLast: boolean);
begin
AddHandler(lihtProjectOpening,TMethod(OnProjectOpeningEvent),AsLast);
end;
procedure TLazIDEInterface.RemoveHandlerOnProjectOpening(
const OnProjectOpeningEvent: TLazProjectChangedFunction);
begin
RemoveHandler(lihtProjectOpening,TMethod(OnProjectOpeningEvent));
end;
procedure TLazIDEInterface.AddHandlerOnProjectOpened(
const OnProjectOpenedEvent: TLazProjectChangedFunction; AsLast: boolean);
begin

View File

@ -3611,8 +3611,11 @@ begin
Project1.Flags:=Project1.Flags-[pfUseDefaultCompilerOptions];
end;
Project1.AutoAddOutputDirToIncPath;
// call ProjectOpening handlers
HandlerResult:=MainIDE.DoCallProjectChangedHandler(lihtProjectOpening, Project1);
MainIDE.UpdateCaption;
if ProjInspector<>nil then ProjInspector.LazProject:=Project1;
if ProjInspector<>nil then
ProjInspector.LazProject:=Project1;
// add and load default required packages
PkgBoss.OpenProjectDependencies(Project1,true);
// rebuild codetools defines
@ -3653,7 +3656,7 @@ begin
for i:=0 to Project1.UnitCount-1 do
Project1.Units[i].ClearModifieds;
Project1.Modified:=false;
// call handlers
// call ProjectOpened handlers
HandlerResult:=MainIDE.DoCallProjectChangedHandler(lihtProjectOpened, Project1);
if not (HandlerResult in [mrOk,mrCancel,mrAbort]) then
HandlerResult:=mrCancel;
@ -3676,7 +3679,10 @@ begin
try
Project1.BeginUpdate(true);
try
if ProjInspector<>nil then ProjInspector.LazProject:=Project1;
// call ProjectOpening handlers
HandlerResult:=MainIDE.DoCallProjectChangedHandler(lihtProjectOpening, Project1);
if ProjInspector<>nil then
ProjInspector.LazProject:=Project1;
// read project info file
{$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('InitOpenedProjectFile B3');{$ENDIF}
@ -3810,7 +3816,7 @@ begin
AnUnitInfo.Loaded := false;
end;
end;
// call handlers
// call ProjectOpened handlers
HandlerResult:=MainIDE.DoCallProjectChangedHandler(lihtProjectOpened, Project1);
if not (HandlerResult in [mrOk,mrCancel,mrAbort]) then
HandlerResult:=mrCancel;