mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-17 23:59:07 +02:00
IDE: Ask about auto-creating form after adding a unit.
git-svn-id: trunk@64870 -
This commit is contained in:
parent
566adc9a29
commit
6be311758d
@ -981,9 +981,9 @@ type
|
|||||||
function UpdateIsPartOfProjectFromMainUnit: TModalResult;
|
function UpdateIsPartOfProjectFromMainUnit: TModalResult;
|
||||||
|
|
||||||
// Application.CreateForm statements
|
// Application.CreateForm statements
|
||||||
function AddCreateFormToProjectFile(const AClassName, AName:string):boolean;
|
function AddCreateFormToProjectFile(const AClassName, AName:string): boolean;
|
||||||
function RemoveCreateFormFromProjectFile(const AName: string): boolean;
|
function RemoveCreateFormFromProjectFile(const AName: string): boolean;
|
||||||
function FormIsCreatedInProjectFile(const AClassname, AName:string):boolean;
|
function FormIsCreatedInProjectFile(const AClassname, AName:string): boolean;
|
||||||
function GetAutoCreatedFormsList: TStrings;
|
function GetAutoCreatedFormsList: TStrings;
|
||||||
property TmpAutoCreatedForms: TStrings read FTmpAutoCreatedForms write FTmpAutoCreatedForms;
|
property TmpAutoCreatedForms: TStrings read FTmpAutoCreatedForms write FTmpAutoCreatedForms;
|
||||||
|
|
||||||
@ -4072,16 +4072,11 @@ begin
|
|||||||
until ProjectUnitWithShortFilename(Result)=nil;
|
until ProjectUnitWithShortFilename(Result)=nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TProject.AddCreateFormToProjectFile(const AClassName, AName: string):boolean;
|
function TProject.AddCreateFormToProjectFile(const AClassName, AName: string): boolean;
|
||||||
begin
|
begin
|
||||||
if (pfMainUnitHasCreateFormStatements in Project1.Flags) then begin
|
Result:=CodeToolBoss.AddCreateFormStatement(MainUnitInfo.Source,AClassName,AName);
|
||||||
Result:=CodeToolBoss.AddCreateFormStatement(MainUnitInfo.Source,AClassName,AName);
|
if Result then
|
||||||
if Result then begin
|
MainUnitInfo.Modified:=true;
|
||||||
MainUnitInfo.Modified:=true;
|
|
||||||
end;
|
|
||||||
end else begin
|
|
||||||
Result:=false;
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TProject.RemoveCreateFormFromProjectFile(const AName:string):boolean;
|
function TProject.RemoveCreateFormFromProjectFile(const AName:string):boolean;
|
||||||
@ -4091,7 +4086,7 @@ begin
|
|||||||
MainUnitInfo.Modified:=true;
|
MainUnitInfo.Modified:=true;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TProject.FormIsCreatedInProjectFile(const AClassname,AName:string):boolean;
|
function TProject.FormIsCreatedInProjectFile(const AClassname,AName:string): boolean;
|
||||||
var p: integer;
|
var p: integer;
|
||||||
begin
|
begin
|
||||||
Result:=(CodeToolBoss.FindCreateFormStatement(MainUnitInfo.Source,
|
Result:=(CodeToolBoss.FindCreateFormStatement(MainUnitInfo.Source,
|
||||||
|
@ -289,7 +289,7 @@ implementation
|
|||||||
|
|
||||||
function UpdateUnitInfoResourceBaseClass(AnUnitInfo: TUnitInfo; Quiet: boolean): boolean;
|
function UpdateUnitInfoResourceBaseClass(AnUnitInfo: TUnitInfo; Quiet: boolean): boolean;
|
||||||
var
|
var
|
||||||
LFMFilename, LFMClassName, LFMType, Ancestor, LFMComponentName: String;
|
LFMFilename, LFMType, Ancestor, LFMClassName, LFMComponentName: String;
|
||||||
LFMCode, Code: TCodeBuffer;
|
LFMCode, Code: TCodeBuffer;
|
||||||
LoadFileFlags: TLoadBufferFlags;
|
LoadFileFlags: TLoadBufferFlags;
|
||||||
ClearOldInfo: Boolean;
|
ClearOldInfo: Boolean;
|
||||||
@ -354,7 +354,7 @@ begin
|
|||||||
if Node=nil then
|
if Node=nil then
|
||||||
exit(Tool.FindImplementationNode<>nil); // class not found, reliable if whole interface was read
|
exit(Tool.FindImplementationNode<>nil); // class not found, reliable if whole interface was read
|
||||||
|
|
||||||
if (Node=nil) or (Node.Desc<>ctnTypeDefinition)
|
if (Node.Desc<>ctnTypeDefinition)
|
||||||
or (Node.FirstChild=nil) or (Node.FirstChild.Desc<>ctnClass) then
|
or (Node.FirstChild=nil) or (Node.FirstChild.Desc<>ctnClass) then
|
||||||
exit(true); // this is not a class
|
exit(true); // this is not a class
|
||||||
Tool.FindClassAndAncestors(Node.FirstChild,ListOfPFindContext,false);
|
Tool.FindClassAndAncestors(Node.FirstChild,ListOfPFindContext,false);
|
||||||
@ -366,22 +366,41 @@ begin
|
|||||||
Ancestor:=UpperCase(Context^.Tool.ExtractClassName(Context^.Node,false));
|
Ancestor:=UpperCase(Context^.Tool.ExtractClassName(Context^.Node,false));
|
||||||
if (Ancestor='TFORM') then begin
|
if (Ancestor='TFORM') then begin
|
||||||
AnUnitInfo.ResourceBaseClass:=pfcbcForm;
|
AnUnitInfo.ResourceBaseClass:=pfcbcForm;
|
||||||
exit(true);
|
Result:=true;
|
||||||
|
Break;
|
||||||
end else if (Ancestor='TCUSTOMFORM') then begin
|
end else if (Ancestor='TCUSTOMFORM') then begin
|
||||||
AnUnitInfo.ResourceBaseClass:=pfcbcCustomForm;
|
AnUnitInfo.ResourceBaseClass:=pfcbcCustomForm;
|
||||||
exit(true);
|
Result:=true;
|
||||||
|
Break;
|
||||||
end else if Ancestor='TDATAMODULE' then begin
|
end else if Ancestor='TDATAMODULE' then begin
|
||||||
AnUnitInfo.ResourceBaseClass:=pfcbcDataModule;
|
AnUnitInfo.ResourceBaseClass:=pfcbcDataModule;
|
||||||
exit(true);
|
Result:=true;
|
||||||
|
Break;
|
||||||
end else if (Ancestor='TFRAME') or (Ancestor='TCUSTOMFRAME') then begin
|
end else if (Ancestor='TFRAME') or (Ancestor='TCUSTOMFRAME') then begin
|
||||||
AnUnitInfo.ResourceBaseClass:=pfcbcFrame;
|
AnUnitInfo.ResourceBaseClass:=pfcbcFrame;
|
||||||
exit(true);
|
Result:=true;
|
||||||
end else if Ancestor='TCOMPONENT' then
|
Break;
|
||||||
exit(true);
|
end else if Ancestor='TCOMPONENT' then begin
|
||||||
|
Result:=true;
|
||||||
|
Break;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
except
|
except
|
||||||
exit; // syntax error or unit not found
|
exit; // syntax error or unit not found
|
||||||
end;
|
end;
|
||||||
|
if not Result then exit;
|
||||||
|
|
||||||
|
// Maybe auto-create it
|
||||||
|
// (pfMainUnitHasCreateFormStatements in Project1.Flags)
|
||||||
|
// and Project1.AutoCreateForms are checked by caller.
|
||||||
|
if (AnUnitInfo.ResourceBaseClass in [pfcbcForm,pfcbcCustomForm,pfcbcDataModule])
|
||||||
|
and (LFMComponentName<>'')
|
||||||
|
and (IDEMessageDialog(lisAddToStartupComponents,
|
||||||
|
Format(lisShouldTheComponentBeAutoCreatedWhenTheApplicationS,
|
||||||
|
[LFMComponentName]),
|
||||||
|
mtInformation,[mbYes,mbNo])=mrYes)
|
||||||
|
then
|
||||||
|
Project1.AddCreateFormToProjectFile(LFMClassName,LFMComponentName);
|
||||||
finally
|
finally
|
||||||
FreeListOfPFindContext(ListOfPFindContext);
|
FreeListOfPFindContext(ListOfPFindContext);
|
||||||
end;
|
end;
|
||||||
|
@ -216,8 +216,8 @@ function FindSourceFileImpl(const AFilename, BaseDirectory: string;
|
|||||||
Flags: TFindSourceFlags): string;
|
Flags: TFindSourceFlags): string;
|
||||||
function FindUnitsOfOwnerImpl(TheOwner: TObject; Flags: TFindUnitsOfOwnerFlags): TStrings;
|
function FindUnitsOfOwnerImpl(TheOwner: TObject; Flags: TFindUnitsOfOwnerFlags): TStrings;
|
||||||
// project
|
// project
|
||||||
function AddUnitToProject(const AEditor: TSourceEditorInterface): TModalResult;
|
|
||||||
function AddActiveUnitToProject: TModalResult;
|
function AddActiveUnitToProject: TModalResult;
|
||||||
|
function AddUnitToProject(const AEditor: TSourceEditorInterface): TModalResult;
|
||||||
function RemoveFromProjectDialog: TModalResult;
|
function RemoveFromProjectDialog: TModalResult;
|
||||||
function InitNewProject(ProjectDesc: TProjectDescriptor): TModalResult;
|
function InitNewProject(ProjectDesc: TProjectDescriptor): TModalResult;
|
||||||
function InitOpenedProjectFile(AFileName: string; Flags: TOpenFlags): TModalResult;
|
function InitOpenedProjectFile(AFileName: string; Flags: TOpenFlags): TModalResult;
|
||||||
@ -1753,17 +1753,21 @@ begin
|
|||||||
MainIDE.SaveEnvironment;
|
MainIDE.SaveEnvironment;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function AddActiveUnitToProject: TModalResult;
|
||||||
|
begin
|
||||||
|
Result := AddUnitToProject(nil);
|
||||||
|
end;
|
||||||
|
|
||||||
function AddUnitToProject(const AEditor: TSourceEditorInterface): TModalResult;
|
function AddUnitToProject(const AEditor: TSourceEditorInterface): TModalResult;
|
||||||
var
|
var
|
||||||
ActiveSourceEditor: TSourceEditor;
|
ActiveSourceEditor: TSourceEditor;
|
||||||
ActiveUnitInfo: TUnitInfo;
|
ActiveUnitInfo: TUnitInfo;
|
||||||
s, ShortUnitName, LFMFilename, LFMType, LFMComponentName, LFMClassName: string;
|
s, ShortUnitName: string;
|
||||||
OkToAdd, IsPascal: boolean;
|
OkToAdd, IsPascal: boolean;
|
||||||
Owners: TFPList;
|
Owners: TFPList;
|
||||||
i: Integer;
|
i: Integer;
|
||||||
APackage: TLazPackage;
|
APackage: TLazPackage;
|
||||||
MsgResult: TModalResult;
|
MsgResult: TModalResult;
|
||||||
LFMCode: TCodeBuffer;
|
|
||||||
begin
|
begin
|
||||||
Result:=mrCancel;
|
Result:=mrCancel;
|
||||||
if AEditor<>nil then
|
if AEditor<>nil then
|
||||||
@ -1864,28 +1868,7 @@ begin
|
|||||||
|
|
||||||
if Project1.AutoCreateForms and IsPascal
|
if Project1.AutoCreateForms and IsPascal
|
||||||
and (pfMainUnitHasCreateFormStatements in Project1.Flags) then
|
and (pfMainUnitHasCreateFormStatements in Project1.Flags) then
|
||||||
begin
|
|
||||||
UpdateUnitInfoResourceBaseClass(ActiveUnitInfo,true);
|
UpdateUnitInfoResourceBaseClass(ActiveUnitInfo,true);
|
||||||
if ActiveUnitInfo.ResourceBaseClass in [pfcbcForm,pfcbcCustomForm,pfcbcDataModule] then
|
|
||||||
begin
|
|
||||||
LFMFilename:=ActiveUnitInfo.UnitResourceFileformat.GetUnitResourceFilename(ActiveUnitInfo.Filename,true);
|
|
||||||
if LoadCodeBuffer(LFMCode,LFMFilename,[lbfUpdateFromDisk],false)=mrOk then
|
|
||||||
begin
|
|
||||||
// read lfm header
|
|
||||||
ReadLFMHeader(LFMCode.Source,LFMType,LFMComponentName,LFMClassName);
|
|
||||||
if (LFMComponentName<>'')
|
|
||||||
and (LFMClassName<>'') then begin
|
|
||||||
if IDEMessageDialog(lisAddToStartupComponents,
|
|
||||||
Format(lisShouldTheComponentBeAutoCreatedWhenTheApplicationS, [
|
|
||||||
LFMComponentName]),
|
|
||||||
mtInformation,[mbYes,mbNo])=mrYes then
|
|
||||||
begin
|
|
||||||
Project1.AddCreateFormToProjectFile(LFMClassName,LFMComponentName);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure UpdateSourceNames;
|
procedure UpdateSourceNames;
|
||||||
@ -3532,11 +3515,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function AddActiveUnitToProject: TModalResult;
|
|
||||||
begin
|
|
||||||
Result := AddUnitToProject(nil);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function RemoveFromProjectDialog: TModalResult;
|
function RemoveFromProjectDialog: TModalResult;
|
||||||
var
|
var
|
||||||
ViewUnitEntries: TViewUnitEntries;
|
ViewUnitEntries: TViewUnitEntries;
|
||||||
|
Loading…
Reference in New Issue
Block a user