mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-13 04:29:11 +02:00
IDE: added menu item: Package / New component, feature 1337
git-svn-id: trunk@35055 -
This commit is contained in:
parent
13ceadc4af
commit
7fb7467b8e
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -6143,6 +6143,8 @@ packager/installpkgsetdlg.lfm svneol=native#text/plain
|
|||||||
packager/installpkgsetdlg.pas svneol=native#text/pascal
|
packager/installpkgsetdlg.pas svneol=native#text/pascal
|
||||||
packager/missingpkgfilesdlg.lfm svneol=native#text/plain
|
packager/missingpkgfilesdlg.lfm svneol=native#text/plain
|
||||||
packager/missingpkgfilesdlg.pas svneol=native#text/plain
|
packager/missingpkgfilesdlg.pas svneol=native#text/plain
|
||||||
|
packager/newpkgcomponentdlg.lfm svneol=native#text/plain
|
||||||
|
packager/newpkgcomponentdlg.pas svneol=native#text/pascal
|
||||||
packager/openinstalledpkgdlg.lfm svneol=native#text/plain
|
packager/openinstalledpkgdlg.lfm svneol=native#text/plain
|
||||||
packager/openinstalledpkgdlg.pas svneol=native#text/pascal
|
packager/openinstalledpkgdlg.pas svneol=native#text/pascal
|
||||||
packager/packagedefs.pas svneol=native#text/pascal
|
packager/packagedefs.pas svneol=native#text/pascal
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<CONFIG Name="IDE windows and dialogs" Path="IDE_Window:_" ChildCount="59">
|
<CONFIG Name="IDE windows and dialogs" Path="IDE_Window:_" ChildCount="60">
|
||||||
<Node1 Name="TObjectInspector" Path="Object_Inspector" HasHelp="True"/>
|
<Node1 Name="TObjectInspector" Path="Object_Inspector" HasHelp="True"/>
|
||||||
<Node2 Name="TfrmCompilerOptions" Path="Compiler_Options" IsRoot="True" HasHelp="True" ChildCount="1">
|
<Node2 Name="TfrmCompilerOptions" Path="Compiler_Options" IsRoot="True" HasHelp="True" ChildCount="1">
|
||||||
<Node1 Name="MainNotebook" ChildCount="7">
|
<Node1 Name="MainNotebook" ChildCount="7">
|
||||||
@ -162,4 +162,5 @@
|
|||||||
<Node8 Name="DirCheck" Path="#ClickDir" HasHelp="True"/>
|
<Node8 Name="DirCheck" Path="#ClickDir" HasHelp="True"/>
|
||||||
</Node58>
|
</Node58>
|
||||||
<Node59 Name="TCleanBuildProjectDialog" Path="Clean_up_build_files_dialog" IsRoot="True" HasHelp="True"/>
|
<Node59 Name="TCleanBuildProjectDialog" Path="Clean_up_build_files_dialog" IsRoot="True" HasHelp="True"/>
|
||||||
|
<Node60 Name="TNewPkgComponentDialog" Path="Create_new_package_component" IsRoot="True" HasHelp="True"/>
|
||||||
</CONFIG>
|
</CONFIG>
|
||||||
|
@ -581,6 +581,7 @@ begin
|
|||||||
ecOpenPackageFile : Result:= lisMenuOpenPackageFile;
|
ecOpenPackageFile : Result:= lisMenuOpenPackageFile;
|
||||||
ecOpenPackageOfCurUnit : Result:= lisMenuOpenPackageOfCurUnit;
|
ecOpenPackageOfCurUnit : Result:= lisMenuOpenPackageOfCurUnit;
|
||||||
ecAddCurFileToPkg : Result:= lisMenuAddCurFileToPkg;
|
ecAddCurFileToPkg : Result:= lisMenuAddCurFileToPkg;
|
||||||
|
ecNewPkgComponent : Result:= lisMenuPkgNewPackageComponent;
|
||||||
ecPackageGraph : Result:= lisMenuPackageGraph;
|
ecPackageGraph : Result:= lisMenuPackageGraph;
|
||||||
ecEditInstallPkgs : Result:= lisMenuEditInstallPkgs;
|
ecEditInstallPkgs : Result:= lisMenuEditInstallPkgs;
|
||||||
ecConfigCustomComps : Result:= lisMenuConfigCustomComps;
|
ecConfigCustomComps : Result:= lisMenuConfigCustomComps;
|
||||||
@ -1164,6 +1165,7 @@ begin
|
|||||||
ecOpenPackageFile: SetSingle(VK_UNKNOWN,[]);
|
ecOpenPackageFile: SetSingle(VK_UNKNOWN,[]);
|
||||||
ecOpenPackageOfCurUnit:SetSingle(VK_UNKNOWN,[]);
|
ecOpenPackageOfCurUnit:SetSingle(VK_UNKNOWN,[]);
|
||||||
ecAddCurFileToPkg: SetSingle(VK_UNKNOWN,[]);
|
ecAddCurFileToPkg: SetSingle(VK_UNKNOWN,[]);
|
||||||
|
ecNewPkgComponent: SetSingle(VK_UNKNOWN,[]);
|
||||||
ecPackageGraph: SetSingle(VK_UNKNOWN,[]);
|
ecPackageGraph: SetSingle(VK_UNKNOWN,[]);
|
||||||
ecEditInstallPkgs: SetSingle(VK_UNKNOWN,[]);
|
ecEditInstallPkgs: SetSingle(VK_UNKNOWN,[]);
|
||||||
ecConfigCustomComps: SetSingle(VK_UNKNOWN,[]);
|
ecConfigCustomComps: SetSingle(VK_UNKNOWN,[]);
|
||||||
@ -1592,6 +1594,7 @@ begin
|
|||||||
ecOpenPackageFile: SetSingle(VK_UNKNOWN,[]);
|
ecOpenPackageFile: SetSingle(VK_UNKNOWN,[]);
|
||||||
ecOpenPackageOfCurUnit:SetSingle(VK_UNKNOWN,[]);
|
ecOpenPackageOfCurUnit:SetSingle(VK_UNKNOWN,[]);
|
||||||
ecAddCurFileToPkg: SetSingle(VK_UNKNOWN,[]);
|
ecAddCurFileToPkg: SetSingle(VK_UNKNOWN,[]);
|
||||||
|
ecNewPkgComponent: SetSingle(VK_UNKNOWN,[]);
|
||||||
ecPackageGraph: SetSingle(VK_UNKNOWN,[]);
|
ecPackageGraph: SetSingle(VK_UNKNOWN,[]);
|
||||||
ecEditInstallPkgs: SetSingle(VK_UNKNOWN,[]);
|
ecEditInstallPkgs: SetSingle(VK_UNKNOWN,[]);
|
||||||
ecConfigCustomComps: SetSingle(VK_UNKNOWN,[]);
|
ecConfigCustomComps: SetSingle(VK_UNKNOWN,[]);
|
||||||
@ -2201,6 +2204,7 @@ begin
|
|||||||
ecOpenPackageFile: SetSingle(VK_UNKNOWN,[]);
|
ecOpenPackageFile: SetSingle(VK_UNKNOWN,[]);
|
||||||
ecOpenPackageOfCurUnit:SetSingle(VK_UNKNOWN,[]);
|
ecOpenPackageOfCurUnit:SetSingle(VK_UNKNOWN,[]);
|
||||||
ecAddCurFileToPkg: SetSingle(VK_UNKNOWN,[]);
|
ecAddCurFileToPkg: SetSingle(VK_UNKNOWN,[]);
|
||||||
|
ecNewPkgComponent: SetSingle(VK_UNKNOWN,[]);
|
||||||
ecPackageGraph: SetSingle(VK_UNKNOWN,[]);
|
ecPackageGraph: SetSingle(VK_UNKNOWN,[]);
|
||||||
ecEditInstallPkgs: SetSingle(VK_UNKNOWN,[]);
|
ecEditInstallPkgs: SetSingle(VK_UNKNOWN,[]);
|
||||||
ecConfigCustomComps: SetSingle(VK_UNKNOWN,[]);
|
ecConfigCustomComps: SetSingle(VK_UNKNOWN,[]);
|
||||||
@ -2792,6 +2796,7 @@ begin
|
|||||||
AddDefault(C, 'Open package file', lisKMOpenPackageFile, ecOpenPackageFile);
|
AddDefault(C, 'Open package file', lisKMOpenPackageFile, ecOpenPackageFile);
|
||||||
AddDefault(C, 'Open package of current unit', lisMenuOpenPackageOfCurUnit, ecOpenPackageOfCurUnit);
|
AddDefault(C, 'Open package of current unit', lisMenuOpenPackageOfCurUnit, ecOpenPackageOfCurUnit);
|
||||||
AddDefault(C, 'Add active unit to a package', lisMenuAddCurFileToPkg, ecAddCurFileToPkg);
|
AddDefault(C, 'Add active unit to a package', lisMenuAddCurFileToPkg, ecAddCurFileToPkg);
|
||||||
|
AddDefault(C, 'Add new component to a package', lisMenuPkgNewPackageComponent, ecNewPkgComponent);
|
||||||
AddDefault(C, 'Package graph', lisMenuPackageGraph, ecPackageGraph);
|
AddDefault(C, 'Package graph', lisMenuPackageGraph, ecPackageGraph);
|
||||||
AddDefault(C, 'Configure installed packages', lisInstallUninstallPackages, ecEditInstallPkgs);
|
AddDefault(C, 'Configure installed packages', lisInstallUninstallPackages, ecEditInstallPkgs);
|
||||||
AddDefault(C, 'Configure custom components', lisKMConfigureCustomComponents, ecConfigCustomComps);
|
AddDefault(C, 'Configure custom components', lisKMConfigureCustomComponents, ecConfigCustomComps);
|
||||||
|
@ -63,7 +63,7 @@
|
|||||||
<PackageName Value="SynEdit"/>
|
<PackageName Value="SynEdit"/>
|
||||||
</Item6>
|
</Item6>
|
||||||
</RequiredPackages>
|
</RequiredPackages>
|
||||||
<Units Count="87">
|
<Units Count="88">
|
||||||
<Unit0>
|
<Unit0>
|
||||||
<Filename Value="lazarus.pp"/>
|
<Filename Value="lazarus.pp"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
@ -655,6 +655,13 @@
|
|||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="IDEFPDocFileSearch"/>
|
<UnitName Value="IDEFPDocFileSearch"/>
|
||||||
</Unit86>
|
</Unit86>
|
||||||
|
<Unit87>
|
||||||
|
<Filename Value="../packager/newpkgcomponentdlg.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<ComponentName Value="NewPkgComponentDialog"/>
|
||||||
|
<ResourceBaseClass Value="Form"/>
|
||||||
|
<UnitName Value="NewPkgComponentDlg"/>
|
||||||
|
</Unit87>
|
||||||
</Units>
|
</Units>
|
||||||
</ProjectOptions>
|
</ProjectOptions>
|
||||||
<CompilerOptions>
|
<CompilerOptions>
|
||||||
|
@ -3254,6 +3254,10 @@ resourcestring
|
|||||||
lisPkgFileTypeIssues = 'Issues xml file';
|
lisPkgFileTypeIssues = 'Issues xml file';
|
||||||
lisPkgFileTypeText = 'Text';
|
lisPkgFileTypeText = 'Text';
|
||||||
lisPkgFileTypeBinary = 'Binary';
|
lisPkgFileTypeBinary = 'Binary';
|
||||||
|
lisCreateNewPackage = '(Create new package)';
|
||||||
|
lisCreateNewPackageComponent = 'Create new package component';
|
||||||
|
lisMenuNewComponent = 'New component';
|
||||||
|
lisPkgSelectAPackage = 'Select a package';
|
||||||
|
|
||||||
// view project units dialog
|
// view project units dialog
|
||||||
lisViewProjectUnits = 'View Project Units';
|
lisViewProjectUnits = 'View Project Units';
|
||||||
@ -5495,6 +5499,7 @@ resourcestring
|
|||||||
lisFileFiltersDeleteRow = 'Delete Row';
|
lisFileFiltersDeleteRow = 'Delete Row';
|
||||||
lisFileFiltersInsertRow = 'Insert Row';
|
lisFileFiltersInsertRow = 'Insert Row';
|
||||||
lisFileFiltersSetDefaults = 'Set defaults';
|
lisFileFiltersSetDefaults = 'Set defaults';
|
||||||
|
lisMenuPkgNewPackageComponent = 'New package component';
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
14
ide/main.pp
14
ide/main.pp
@ -3926,20 +3926,20 @@ var
|
|||||||
ASrcEdit: TSourceEditor;
|
ASrcEdit: TSourceEditor;
|
||||||
AUnitInfo: TUnitInfo;
|
AUnitInfo: TUnitInfo;
|
||||||
PkgFile: TPkgFile;
|
PkgFile: TPkgFile;
|
||||||
OpenPkgCurF, AddCurF: Boolean;
|
CanOpenPkgOfFile, CanAddCurFile: Boolean;
|
||||||
begin
|
begin
|
||||||
OpenPkgCurF:=False;
|
CanOpenPkgOfFile:=False;
|
||||||
AddCurF:=False;
|
CanAddCurFile:=False;
|
||||||
GetCurrentUnit(ASrcEdit,AUnitInfo);
|
GetCurrentUnit(ASrcEdit,AUnitInfo);
|
||||||
if Assigned(ASrcEdit) then begin
|
if Assigned(ASrcEdit) then begin
|
||||||
PkgFile:=PackageGraph.FindFileInAllPackages(AUnitInfo.Filename,true,
|
PkgFile:=PackageGraph.FindFileInAllPackages(AUnitInfo.Filename,true,
|
||||||
not AUnitInfo.IsPartOfProject);
|
not AUnitInfo.IsPartOfProject);
|
||||||
OpenPkgCurF:=Assigned(PkgFile);
|
CanOpenPkgOfFile:=Assigned(PkgFile);
|
||||||
AddCurF:=(not AUnitInfo.IsVirtual) and FileExistsUTF8(AUnitInfo.Filename)
|
CanAddCurFile:=(not AUnitInfo.IsVirtual) and FileExistsUTF8(AUnitInfo.Filename)
|
||||||
and not AUnitInfo.IsPartOfProject;
|
and not AUnitInfo.IsPartOfProject;
|
||||||
end;
|
end;
|
||||||
MainIDEBar.itmPkgOpenPackageOfCurUnit.Enabled:=OpenPkgCurF;
|
MainIDEBar.itmPkgOpenPackageOfCurUnit.Enabled:=CanOpenPkgOfFile;
|
||||||
MainIDEBar.itmPkgAddCurFileToPkg.Enabled:=AddCurF;
|
MainIDEBar.itmPkgAddCurFileToPkg.Enabled:=CanAddCurFile;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{------------------------------------------------------------------------------}
|
{------------------------------------------------------------------------------}
|
||||||
|
@ -314,6 +314,7 @@ type
|
|||||||
//itmPkgOpenRecent: TIDEMenuSection;
|
//itmPkgOpenRecent: TIDEMenuSection;
|
||||||
//itmPkgUnits: TIDEMenuSection;
|
//itmPkgUnits: TIDEMenuSection;
|
||||||
itmPkgAddCurFileToPkg: TIDEMenuCommand;
|
itmPkgAddCurFileToPkg: TIDEMenuCommand;
|
||||||
|
itmPkgAddNewComponentToPkg: TIDEMenuCommand;
|
||||||
//itmPkgGraphSection: TIDEMenuSection;
|
//itmPkgGraphSection: TIDEMenuSection;
|
||||||
itmPkgPkgGraph: TIDEMenuCommand;
|
itmPkgPkgGraph: TIDEMenuCommand;
|
||||||
itmPkgEditInstallPkgs: TIDEMenuCommand;
|
itmPkgEditInstallPkgs: TIDEMenuCommand;
|
||||||
|
@ -720,6 +720,7 @@ begin
|
|||||||
CreateMenuSeparatorSection(mnuComponent,itmPkgUnits,'itmPkgUnits');
|
CreateMenuSeparatorSection(mnuComponent,itmPkgUnits,'itmPkgUnits');
|
||||||
ParentMI:=itmPkgUnits;
|
ParentMI:=itmPkgUnits;
|
||||||
CreateMenuItem(ParentMI,itmPkgAddCurFileToPkg,'itmPkgAddCurFileToPkg',lisMenuAddCurFileToPkg,'pkg_add');
|
CreateMenuItem(ParentMI,itmPkgAddCurFileToPkg,'itmPkgAddCurFileToPkg',lisMenuAddCurFileToPkg,'pkg_add');
|
||||||
|
CreateMenuItem(ParentMI, itmPkgAddNewComponentToPkg, 'itmPkgAddNewComponentToPkg', lisMenuNewComponent, 'pkg_add');
|
||||||
|
|
||||||
CreateMenuSeparatorSection(mnuComponent,itmPkgGraphSection,'itmPkgGraphSection');
|
CreateMenuSeparatorSection(mnuComponent,itmPkgGraphSection,'itmPkgGraphSection');
|
||||||
ParentMI:=itmPkgGraphSection;
|
ParentMI:=itmPkgGraphSection;
|
||||||
@ -991,6 +992,7 @@ begin
|
|||||||
itmPkgOpenPackageFile.Command:=GetCommand(ecOpenPackageFile);
|
itmPkgOpenPackageFile.Command:=GetCommand(ecOpenPackageFile);
|
||||||
itmPkgOpenPackageOfCurUnit.Command:=GetCommand(ecOpenPackageOfCurUnit);
|
itmPkgOpenPackageOfCurUnit.Command:=GetCommand(ecOpenPackageOfCurUnit);
|
||||||
itmPkgAddCurFileToPkg.Command:=GetCommand(ecAddCurFileToPkg);
|
itmPkgAddCurFileToPkg.Command:=GetCommand(ecAddCurFileToPkg);
|
||||||
|
itmPkgAddNewComponentToPkg.Command:=GetCommand(ecNewPkgComponent);
|
||||||
itmPkgPkgGraph.Command:=GetCommand(ecPackageGraph);
|
itmPkgPkgGraph.Command:=GetCommand(ecPackageGraph);
|
||||||
itmPkgEditInstallPkgs.Command:=GetCommand(ecEditInstallPkgs);
|
itmPkgEditInstallPkgs.Command:=GetCommand(ecEditInstallPkgs);
|
||||||
{$IFDEF CustomIDEComps}
|
{$IFDEF CustomIDEComps}
|
||||||
|
@ -283,11 +283,12 @@ const
|
|||||||
ecOpenPackageFile = ecFirstLazarus + 601;
|
ecOpenPackageFile = ecFirstLazarus + 601;
|
||||||
ecOpenPackageOfCurUnit = ecFirstLazarus + 602;
|
ecOpenPackageOfCurUnit = ecFirstLazarus + 602;
|
||||||
ecAddCurFileToPkg = ecFirstLazarus + 603;
|
ecAddCurFileToPkg = ecFirstLazarus + 603;
|
||||||
|
ecNewPkgComponent = ecFirstLazarus + 604;
|
||||||
// ecAddCurUnitToPkg = ecAddCurFileToPkg deprecated;
|
// ecAddCurUnitToPkg = ecAddCurFileToPkg deprecated;
|
||||||
ecPackageGraph = ecFirstLazarus + 604;
|
ecPackageGraph = ecFirstLazarus + 605;
|
||||||
ecEditInstallPkgs = ecFirstLazarus + 605;
|
ecEditInstallPkgs = ecFirstLazarus + 606;
|
||||||
ecConfigCustomComps = ecFirstLazarus + 606;
|
ecConfigCustomComps = ecFirstLazarus + 607;
|
||||||
ecNewPackage = ecFirstLazarus + 607;
|
ecNewPackage = ecFirstLazarus + 608;
|
||||||
|
|
||||||
// custom tools menu
|
// custom tools menu
|
||||||
ecExtToolFirst = ecFirstLazarus + 700;
|
ecExtToolFirst = ecFirstLazarus + 700;
|
||||||
|
@ -177,6 +177,8 @@ type
|
|||||||
fPkgComponents: TAVLTree;// tree of TPkgComponent
|
fPkgComponents: TAVLTree;// tree of TPkgComponent
|
||||||
fPackages: TAVLTree;// tree of TLazPackage or TPackageLink
|
fPackages: TAVLTree;// tree of TLazPackage or TPackageLink
|
||||||
FComponentIconFilename: string;
|
FComponentIconFilename: string;
|
||||||
|
function GetActivatePage: TAddToPkgType;
|
||||||
|
procedure SetActivatePage(AValue: TAddToPkgType);
|
||||||
procedure SetLazPackage(const AValue: TLazPackage);
|
procedure SetLazPackage(const AValue: TLazPackage);
|
||||||
procedure SetupComponents;
|
procedure SetupComponents;
|
||||||
procedure SetupNewFilePage;
|
procedure SetupNewFilePage;
|
||||||
@ -202,11 +204,13 @@ type
|
|||||||
write FOnGetIDEFileInfo;
|
write FOnGetIDEFileInfo;
|
||||||
property OnGetUnitRegisterInfo: TOnGetUnitRegisterInfo
|
property OnGetUnitRegisterInfo: TOnGetUnitRegisterInfo
|
||||||
read FOnGetUnitRegisterInfo write FOnGetUnitRegisterInfo;
|
read FOnGetUnitRegisterInfo write FOnGetUnitRegisterInfo;
|
||||||
|
property ActivatePage: TAddToPkgType read GetActivatePage write SetActivatePage;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function ShowAddToPackageDlg(Pkg: TLazPackage; var Params: TAddToPkgResult;
|
function ShowAddToPackageDlg(Pkg: TLazPackage; var Params: TAddToPkgResult;
|
||||||
OnGetIDEFileInfo: TGetIDEFileStateEvent;
|
OnGetIDEFileInfo: TGetIDEFileStateEvent;
|
||||||
OnGetUnitRegisterInfo: TOnGetUnitRegisterInfo): TModalResult;
|
OnGetUnitRegisterInfo: TOnGetUnitRegisterInfo;
|
||||||
|
var Page: TAddToPkgType): TModalResult;
|
||||||
function CheckAddingUnitFilename(LazPackage: TLazPackage;
|
function CheckAddingUnitFilename(LazPackage: TLazPackage;
|
||||||
AddFileType: TAddToPkgType; OnGetIDEFileInfo: TGetIDEFileStateEvent;
|
AddFileType: TAddToPkgType; OnGetIDEFileInfo: TGetIDEFileStateEvent;
|
||||||
var AFilename: string): boolean;
|
var AFilename: string): boolean;
|
||||||
@ -223,7 +227,8 @@ implementation
|
|||||||
|
|
||||||
function ShowAddToPackageDlg(Pkg: TLazPackage; var Params: TAddToPkgResult;
|
function ShowAddToPackageDlg(Pkg: TLazPackage; var Params: TAddToPkgResult;
|
||||||
OnGetIDEFileInfo: TGetIDEFileStateEvent;
|
OnGetIDEFileInfo: TGetIDEFileStateEvent;
|
||||||
OnGetUnitRegisterInfo: TOnGetUnitRegisterInfo): TModalResult;
|
OnGetUnitRegisterInfo: TOnGetUnitRegisterInfo;
|
||||||
|
var Page: TAddToPkgType): TModalResult;
|
||||||
var
|
var
|
||||||
AddDlg: TAddToPackageDlg;
|
AddDlg: TAddToPackageDlg;
|
||||||
begin
|
begin
|
||||||
@ -231,7 +236,9 @@ begin
|
|||||||
AddDlg.OnGetIDEFileInfo:=OnGetIDEFileInfo;
|
AddDlg.OnGetIDEFileInfo:=OnGetIDEFileInfo;
|
||||||
AddDlg.OnGetUnitRegisterInfo:=OnGetUnitRegisterInfo;
|
AddDlg.OnGetUnitRegisterInfo:=OnGetUnitRegisterInfo;
|
||||||
AddDlg.LazPackage:=Pkg;
|
AddDlg.LazPackage:=Pkg;
|
||||||
|
AddDlg.ActivatePage:=Page;
|
||||||
Result:=AddDlg.ShowModal;
|
Result:=AddDlg.ShowModal;
|
||||||
|
Page:=AddDlg.ActivatePage;
|
||||||
if Result=mrOk then begin
|
if Result=mrOk then begin
|
||||||
Params:=AddDlg.Params;
|
Params:=AddDlg.Params;
|
||||||
AddDlg.Params:=nil;
|
AddDlg.Params:=nil;
|
||||||
@ -1052,6 +1059,28 @@ begin
|
|||||||
UpdateAvailableDependencyNames;
|
UpdateAvailableDependencyNames;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TAddToPackageDlg.GetActivatePage: TAddToPkgType;
|
||||||
|
begin
|
||||||
|
if NoteBook.ActivePage=NewComponentPage then
|
||||||
|
Result:=d2ptNewComponent
|
||||||
|
else if NoteBook.ActivePage=NewRequirementPage then
|
||||||
|
Result:=d2ptRequiredPkg
|
||||||
|
else if NoteBook.ActivePage=AddFilesPage then
|
||||||
|
Result:=d2ptFiles
|
||||||
|
else
|
||||||
|
Result:=d2ptNewFile;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TAddToPackageDlg.SetActivatePage(AValue: TAddToPkgType);
|
||||||
|
begin
|
||||||
|
case AValue of
|
||||||
|
d2ptNewComponent: NoteBook.ActivePage:=NewComponentPage;
|
||||||
|
d2ptRequiredPkg: NoteBook.ActivePage:=NewRequirementPage;
|
||||||
|
d2ptFile,d2ptFiles: NoteBook.ActivePage:=AddFilesPage;
|
||||||
|
else NoteBook.ActivePage:=NewFilePage;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TAddToPackageDlg.SetupComponents;
|
procedure TAddToPackageDlg.SetupComponents;
|
||||||
begin
|
begin
|
||||||
NewFilePage.Caption:=lisA2PNewFile;
|
NewFilePage.Caption:=lisA2PNewFile;
|
||||||
|
51
packager/newpkgcomponentdlg.lfm
Normal file
51
packager/newpkgcomponentdlg.lfm
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
object NewPkgComponentDialog: TNewPkgComponentDialog
|
||||||
|
Left = 250
|
||||||
|
Height = 255
|
||||||
|
Top = 250
|
||||||
|
Width = 343
|
||||||
|
Caption = 'NewPkgComponentDialog'
|
||||||
|
ClientHeight = 255
|
||||||
|
ClientWidth = 343
|
||||||
|
OnCreate = FormCreate
|
||||||
|
Position = poScreenCenter
|
||||||
|
LCLVersion = '0.9.31'
|
||||||
|
object ButtonPanel1: TButtonPanel
|
||||||
|
Left = 6
|
||||||
|
Height = 40
|
||||||
|
Top = 209
|
||||||
|
Width = 331
|
||||||
|
OKButton.Name = 'OKButton'
|
||||||
|
OKButton.DefaultCaption = True
|
||||||
|
HelpButton.Name = 'HelpButton'
|
||||||
|
HelpButton.DefaultCaption = True
|
||||||
|
CloseButton.Name = 'CloseButton'
|
||||||
|
CloseButton.DefaultCaption = True
|
||||||
|
CancelButton.Name = 'CancelButton'
|
||||||
|
CancelButton.DefaultCaption = True
|
||||||
|
TabOrder = 0
|
||||||
|
ShowButtons = [pbOK, pbCancel, pbHelp]
|
||||||
|
end
|
||||||
|
object PkgsGroupBox: TGroupBox
|
||||||
|
Left = 6
|
||||||
|
Height = 197
|
||||||
|
Top = 6
|
||||||
|
Width = 331
|
||||||
|
Align = alClient
|
||||||
|
BorderSpacing.Around = 6
|
||||||
|
Caption = 'PkgsGroupBox'
|
||||||
|
ClientHeight = 178
|
||||||
|
ClientWidth = 327
|
||||||
|
TabOrder = 1
|
||||||
|
object PkgsListBox: TListBox
|
||||||
|
Left = 0
|
||||||
|
Height = 178
|
||||||
|
Top = 0
|
||||||
|
Width = 327
|
||||||
|
Align = alClient
|
||||||
|
ItemHeight = 0
|
||||||
|
ScrollWidth = 325
|
||||||
|
TabOrder = 0
|
||||||
|
TopIndex = -1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
122
packager/newpkgcomponentdlg.pas
Normal file
122
packager/newpkgcomponentdlg.pas
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
{
|
||||||
|
***************************************************************************
|
||||||
|
* *
|
||||||
|
* This source is free software; you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or *
|
||||||
|
* (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This code is distributed in the hope that it will be useful, but *
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
||||||
|
* General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* A copy of the GNU General Public License is available on the World *
|
||||||
|
* Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also *
|
||||||
|
* obtain it by writing to the Free Software Foundation, *
|
||||||
|
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
|
* *
|
||||||
|
***************************************************************************
|
||||||
|
|
||||||
|
Author: Mattias Gaertner
|
||||||
|
|
||||||
|
Abstract:
|
||||||
|
Dialog to select the package where to create the new component.
|
||||||
|
}
|
||||||
|
unit NewPkgComponentDlg;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ButtonPanel,
|
||||||
|
StdCtrls, PackageSystem, PackageDefs, LazarusIDEStrConsts;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{ TNewPkgComponentDialog }
|
||||||
|
|
||||||
|
TNewPkgComponentDialog = class(TForm)
|
||||||
|
ButtonPanel1: TButtonPanel;
|
||||||
|
PkgsGroupBox: TGroupBox;
|
||||||
|
PkgsListBox: TListBox;
|
||||||
|
procedure FormCreate(Sender: TObject);
|
||||||
|
private
|
||||||
|
procedure FillPkgsListBox;
|
||||||
|
public
|
||||||
|
function GetPackageName: string;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function ShowNewPkgComponentDialog(out aPackage: TLazPackage): TModalResult;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
{$R *.lfm}
|
||||||
|
|
||||||
|
function ShowNewPkgComponentDialog(out aPackage: TLazPackage): TModalResult;
|
||||||
|
var
|
||||||
|
NewPkgComponentDialog: TNewPkgComponentDialog;
|
||||||
|
PkgName: String;
|
||||||
|
begin
|
||||||
|
aPackage:=nil;
|
||||||
|
NewPkgComponentDialog:=TNewPkgComponentDialog.Create(nil);
|
||||||
|
try
|
||||||
|
Result:=NewPkgComponentDialog.ShowModal;
|
||||||
|
if Result<>mrOk then exit;
|
||||||
|
PkgName:=NewPkgComponentDialog.GetPackageName;
|
||||||
|
if PkgName<>'' then
|
||||||
|
aPackage:=PackageGraph.FindPackageWithName(PkgName,nil);
|
||||||
|
finally
|
||||||
|
NewPkgComponentDialog.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TNewPkgComponentDialog }
|
||||||
|
|
||||||
|
procedure TNewPkgComponentDialog.FormCreate(Sender: TObject);
|
||||||
|
begin
|
||||||
|
Caption:=lisCreateNewPackageComponent;
|
||||||
|
|
||||||
|
PkgsGroupBox.Caption:=lisPkgSelectAPackage;
|
||||||
|
FillPkgsListBox;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TNewPkgComponentDialog.FillPkgsListBox;
|
||||||
|
var
|
||||||
|
sl: TStringList;
|
||||||
|
Pkg: TLazPackage;
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
sl:=TStringList.Create;
|
||||||
|
try
|
||||||
|
for i:=0 to PackageGraph.Count-1 do begin
|
||||||
|
Pkg:=PackageGraph[i];
|
||||||
|
if (not (Pkg.PackageType in [lptRunAndDesignTime,lptDesignTime]))
|
||||||
|
or Pkg.ReadOnly or Pkg.AutoCreated
|
||||||
|
then continue;
|
||||||
|
sl.Add(Pkg.Name);
|
||||||
|
end;
|
||||||
|
sl.Sort;
|
||||||
|
// add as first item '(create new)'
|
||||||
|
sl.Insert(0,lisCreateNewPackage);
|
||||||
|
PkgsListBox.Items.Assign(sl);
|
||||||
|
PkgsListBox.ItemIndex:=0;
|
||||||
|
finally
|
||||||
|
sl.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TNewPkgComponentDialog.GetPackageName: string;
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
i:=PkgsListBox.ItemIndex;
|
||||||
|
if i<1 then
|
||||||
|
Result:=''
|
||||||
|
else
|
||||||
|
Result:=PkgsListBox.Items[i];
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
@ -271,6 +271,7 @@ type
|
|||||||
var IgnoreIncPaths: TFilenameToStringTree);
|
var IgnoreIncPaths: TFilenameToStringTree);
|
||||||
function CanBeAddedToProject: boolean;
|
function CanBeAddedToProject: boolean;
|
||||||
protected
|
protected
|
||||||
|
fLastDlgPage: TAddToPkgType;
|
||||||
procedure SetLazPackage(const AValue: TLazPackage); override;
|
procedure SetLazPackage(const AValue: TLazPackage); override;
|
||||||
public
|
public
|
||||||
constructor Create(TheOwner: TComponent); override;
|
constructor Create(TheOwner: TComponent); override;
|
||||||
@ -289,6 +290,7 @@ type
|
|||||||
procedure DoSortFiles;
|
procedure DoSortFiles;
|
||||||
procedure DoOpenPkgFile(PkgFile: TPkgFile);
|
procedure DoOpenPkgFile(PkgFile: TPkgFile);
|
||||||
procedure UpdateAll(Immediately: boolean); override;
|
procedure UpdateAll(Immediately: boolean); override;
|
||||||
|
function ShowAddDialog(var DlgPage: TAddToPkgType): TModalResult;
|
||||||
public
|
public
|
||||||
property LazPackage: TLazPackage read FLazPackage write SetLazPackage;
|
property LazPackage: TLazPackage read FLazPackage write SetLazPackage;
|
||||||
property SortAlphabetically: boolean read FSortAlphabetically write SetSortAlphabetically;
|
property SortAlphabetically: boolean read FSortAlphabetically write SetSortAlphabetically;
|
||||||
@ -1125,189 +1127,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPackageEditorForm.AddBitBtnClick(Sender: TObject);
|
procedure TPackageEditorForm.AddBitBtnClick(Sender: TObject);
|
||||||
var
|
|
||||||
IgnoreUnitPaths, IgnoreIncPaths: TFilenameToStringTree;
|
|
||||||
|
|
||||||
procedure AddUnit(AddParams: TAddToPkgResult);
|
|
||||||
var
|
|
||||||
NewLFMFilename: String;
|
|
||||||
NewLRSFilename: String;
|
|
||||||
begin
|
|
||||||
NewLFMFilename:='';
|
|
||||||
NewLRSFilename:='';
|
|
||||||
// add lfm file
|
|
||||||
if AddParams.AutoAddLFMFile then begin
|
|
||||||
NewLFMFilename:=ChangeFileExt(AddParams.UnitFilename,'.lfm');
|
|
||||||
if FileExistsUTF8(NewLFMFilename)
|
|
||||||
and (LazPackage.FindPkgFile(NewLFMFilename,true,false)=nil) then
|
|
||||||
LazPackage.AddFile(NewLFMFilename,'',pftLFM,[],cpNormal)
|
|
||||||
else
|
|
||||||
NewLFMFilename:='';
|
|
||||||
end;
|
|
||||||
// add lrs file
|
|
||||||
if AddParams.AutoAddLRSFile then begin
|
|
||||||
NewLRSFilename:=ChangeFileExt(AddParams.UnitFilename,'.lrs');
|
|
||||||
if FileExistsUTF8(NewLRSFilename)
|
|
||||||
and (LazPackage.FindPkgFile(NewLRSFilename,true,false)=nil) then
|
|
||||||
LazPackage.AddFile(NewLRSFilename,'',pftLRS,[],cpNormal)
|
|
||||||
else
|
|
||||||
NewLRSFilename:='';
|
|
||||||
end;
|
|
||||||
ExtendUnitIncPathForNewUnit(AddParams.UnitFilename,NewLRSFilename,
|
|
||||||
IgnoreUnitPaths);
|
|
||||||
// add unit file
|
|
||||||
with AddParams do
|
|
||||||
FNextSelectedPart := LazPackage.AddFile(UnitFilename,Unit_Name,
|
|
||||||
FileType,PkgFileFlags,cpNormal);
|
|
||||||
PackageEditors.DeleteAmbiguousFiles(LazPackage,AddParams.UnitFilename);
|
|
||||||
UpdateAll(false);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure AddVirtualUnit(AddParams: TAddToPkgResult);
|
|
||||||
begin
|
|
||||||
with AddParams do
|
|
||||||
FNextSelectedPart := LazPackage.AddFile(UnitFilename,Unit_Name,FileType,
|
|
||||||
PkgFileFlags,cpNormal);
|
|
||||||
PackageEditors.DeleteAmbiguousFiles(LazPackage,AddParams.UnitFilename);
|
|
||||||
UpdateAll(false);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure AddNewComponent(AddParams: TAddToPkgResult);
|
|
||||||
begin
|
|
||||||
ExtendUnitIncPathForNewUnit(AddParams.UnitFilename,'',IgnoreUnitPaths);
|
|
||||||
// add file
|
|
||||||
with AddParams do
|
|
||||||
FNextSelectedPart := LazPackage.AddFile(UnitFilename,Unit_Name,FileType,
|
|
||||||
PkgFileFlags,cpNormal);
|
|
||||||
// add dependency
|
|
||||||
if (AddParams.Dependency<>nil)
|
|
||||||
and (LazPackage.FindDependencyByName(AddParams.Dependency.PackageName)=nil)
|
|
||||||
then
|
|
||||||
PackageGraph.AddDependencyToPackage(LazPackage,AddParams.Dependency);
|
|
||||||
if (AddParams.IconFile<>'')
|
|
||||||
and (LazPackage.FindDependencyByName('LCL')=nil) then
|
|
||||||
PackageGraph.AddDependencyToPackage(LazPackage,PackageGraph.LCLPackage);
|
|
||||||
PackageEditors.DeleteAmbiguousFiles(LazPackage,AddParams.UnitFilename);
|
|
||||||
// open file in editor
|
|
||||||
PackageEditors.CreateNewFile(Self,AddParams);
|
|
||||||
UpdateAll(false);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure AddRequiredPkg(AddParams: TAddToPkgResult);
|
|
||||||
begin
|
|
||||||
// add dependency
|
|
||||||
PackageGraph.AddDependencyToPackage(LazPackage,AddParams.Dependency);
|
|
||||||
FNextSelectedPart := AddParams.Dependency;
|
|
||||||
UpdateAll(false);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure AddFile(AddParams: TAddToPkgResult);
|
|
||||||
begin
|
|
||||||
// add file
|
|
||||||
with AddParams do begin
|
|
||||||
if (CompareFileExt(UnitFilename,'.inc',false)=0)
|
|
||||||
or (CompareFileExt(UnitFilename,'.lrs',false)=0) then
|
|
||||||
ExtendIncPathForNewIncludeFile(UnitFilename,IgnoreIncPaths);
|
|
||||||
FNextSelectedPart := LazPackage.AddFile(UnitFilename,Unit_Name,FileType,
|
|
||||||
PkgFileFlags,cpNormal);
|
|
||||||
end;
|
|
||||||
UpdateAll(false);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure AddNewFile(AddParams: TAddToPkgResult);
|
|
||||||
var
|
|
||||||
NewFilename: String;
|
|
||||||
DummyResult: TModalResult;
|
|
||||||
NewFileType: TPkgFileType;
|
|
||||||
NewPkgFileFlags: TPkgFileFlags;
|
|
||||||
Desc: TProjectFileDescriptor;
|
|
||||||
NewUnitName: String;
|
|
||||||
HasRegisterProc: Boolean;
|
|
||||||
begin
|
|
||||||
// create new file
|
|
||||||
if AddParams.NewItem is TNewItemProjectFile then begin
|
|
||||||
// create new file
|
|
||||||
Desc:=TNewItemProjectFile(AddParams.NewItem).Descriptor;
|
|
||||||
NewFilename:='';
|
|
||||||
DummyResult:=LazarusIDE.DoNewFile(Desc,NewFilename,'',
|
|
||||||
[nfOpenInEditor,nfCreateDefaultSrc,nfIsNotPartOfProject],LazPackage);
|
|
||||||
if DummyResult=mrOk then begin
|
|
||||||
// success
|
|
||||||
// -> now add it to package
|
|
||||||
NewUnitName:='';
|
|
||||||
NewFileType:=FileNameToPkgFileType(NewFilename);
|
|
||||||
NewPkgFileFlags:=[];
|
|
||||||
if (NewFileType in PkgFileUnitTypes) then begin
|
|
||||||
Include(NewPkgFileFlags,pffAddToPkgUsesSection);
|
|
||||||
NewUnitName:=ExtractFilenameOnly(NewFilename);
|
|
||||||
if Assigned(PackageEditors.OnGetUnitRegisterInfo) then begin
|
|
||||||
HasRegisterProc:=false;
|
|
||||||
PackageEditors.OnGetUnitRegisterInfo(Self,NewFilename,
|
|
||||||
NewUnitName,HasRegisterProc);
|
|
||||||
if HasRegisterProc then
|
|
||||||
Include(NewPkgFileFlags,pffHasRegisterProc);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
FNextSelectedPart := LazPackage.AddFile(NewFilename,NewUnitName,NewFileType,
|
|
||||||
NewPkgFileFlags, cpNormal);
|
|
||||||
UpdateAll(true);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
AddParams: TAddToPkgResult;
|
|
||||||
OldParams: TAddToPkgResult;
|
|
||||||
begin
|
begin
|
||||||
if LazPackage.ReadOnly then begin
|
ShowAddDialog(fLastDlgPage);
|
||||||
UpdateButtons;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
|
|
||||||
if ShowAddToPackageDlg(LazPackage,AddParams,PackageEditors.OnGetIDEFileInfo,
|
|
||||||
PackageEditors.OnGetUnitRegisterInfo)
|
|
||||||
<>mrOk
|
|
||||||
then
|
|
||||||
exit;
|
|
||||||
|
|
||||||
PackageGraph.BeginUpdate(false);
|
|
||||||
IgnoreUnitPaths:=nil;
|
|
||||||
IgnoreIncPaths:=nil;
|
|
||||||
try
|
|
||||||
while AddParams<>nil do begin
|
|
||||||
case AddParams.AddType of
|
|
||||||
|
|
||||||
d2ptUnit:
|
|
||||||
AddUnit(AddParams);
|
|
||||||
|
|
||||||
d2ptVirtualUnit:
|
|
||||||
AddVirtualUnit(AddParams);
|
|
||||||
|
|
||||||
d2ptNewComponent:
|
|
||||||
AddNewComponent(AddParams);
|
|
||||||
|
|
||||||
d2ptRequiredPkg:
|
|
||||||
AddRequiredPkg(AddParams);
|
|
||||||
|
|
||||||
d2ptFile:
|
|
||||||
AddFile(AddParams);
|
|
||||||
|
|
||||||
d2ptNewFile:
|
|
||||||
AddNewFile(AddParams);
|
|
||||||
|
|
||||||
end;
|
|
||||||
OldParams:=AddParams;
|
|
||||||
AddParams:=AddParams.Next;
|
|
||||||
OldParams.Next:=nil;
|
|
||||||
OldParams.Free;
|
|
||||||
end;
|
|
||||||
AddParams.Free;
|
|
||||||
LazPackage.Modified:=true;
|
|
||||||
finally
|
|
||||||
IgnoreUnitPaths.Free;
|
|
||||||
IgnoreIncPaths.Free;
|
|
||||||
PackageGraph.EndUpdate;
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPackageEditorForm.AddToUsesPkgSectionCheckBoxChange(Sender: TObject);
|
procedure TPackageEditorForm.AddToUsesPkgSectionCheckBoxChange(Sender: TObject);
|
||||||
@ -1638,6 +1459,192 @@ begin
|
|||||||
UpdateStatusBar;
|
UpdateStatusBar;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TPackageEditorForm.ShowAddDialog(var DlgPage: TAddToPkgType
|
||||||
|
): TModalResult;
|
||||||
|
var
|
||||||
|
IgnoreUnitPaths, IgnoreIncPaths: TFilenameToStringTree;
|
||||||
|
|
||||||
|
procedure AddUnit(AddParams: TAddToPkgResult);
|
||||||
|
var
|
||||||
|
NewLFMFilename: String;
|
||||||
|
NewLRSFilename: String;
|
||||||
|
begin
|
||||||
|
NewLFMFilename:='';
|
||||||
|
NewLRSFilename:='';
|
||||||
|
// add lfm file
|
||||||
|
if AddParams.AutoAddLFMFile then begin
|
||||||
|
NewLFMFilename:=ChangeFileExt(AddParams.UnitFilename,'.lfm');
|
||||||
|
if FileExistsUTF8(NewLFMFilename)
|
||||||
|
and (LazPackage.FindPkgFile(NewLFMFilename,true,false)=nil) then
|
||||||
|
LazPackage.AddFile(NewLFMFilename,'',pftLFM,[],cpNormal)
|
||||||
|
else
|
||||||
|
NewLFMFilename:='';
|
||||||
|
end;
|
||||||
|
// add lrs file
|
||||||
|
if AddParams.AutoAddLRSFile then begin
|
||||||
|
NewLRSFilename:=ChangeFileExt(AddParams.UnitFilename,'.lrs');
|
||||||
|
if FileExistsUTF8(NewLRSFilename)
|
||||||
|
and (LazPackage.FindPkgFile(NewLRSFilename,true,false)=nil) then
|
||||||
|
LazPackage.AddFile(NewLRSFilename,'',pftLRS,[],cpNormal)
|
||||||
|
else
|
||||||
|
NewLRSFilename:='';
|
||||||
|
end;
|
||||||
|
ExtendUnitIncPathForNewUnit(AddParams.UnitFilename,NewLRSFilename,
|
||||||
|
IgnoreUnitPaths);
|
||||||
|
// add unit file
|
||||||
|
with AddParams do
|
||||||
|
FNextSelectedPart := LazPackage.AddFile(UnitFilename,Unit_Name,
|
||||||
|
FileType,PkgFileFlags,cpNormal);
|
||||||
|
PackageEditors.DeleteAmbiguousFiles(LazPackage,AddParams.UnitFilename);
|
||||||
|
UpdateAll(false);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure AddVirtualUnit(AddParams: TAddToPkgResult);
|
||||||
|
begin
|
||||||
|
with AddParams do
|
||||||
|
FNextSelectedPart := LazPackage.AddFile(UnitFilename,Unit_Name,FileType,
|
||||||
|
PkgFileFlags,cpNormal);
|
||||||
|
PackageEditors.DeleteAmbiguousFiles(LazPackage,AddParams.UnitFilename);
|
||||||
|
UpdateAll(false);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure AddNewComponent(AddParams: TAddToPkgResult);
|
||||||
|
begin
|
||||||
|
ExtendUnitIncPathForNewUnit(AddParams.UnitFilename,'',IgnoreUnitPaths);
|
||||||
|
// add file
|
||||||
|
with AddParams do
|
||||||
|
FNextSelectedPart := LazPackage.AddFile(UnitFilename,Unit_Name,FileType,
|
||||||
|
PkgFileFlags,cpNormal);
|
||||||
|
// add dependency
|
||||||
|
if (AddParams.Dependency<>nil)
|
||||||
|
and (LazPackage.FindDependencyByName(AddParams.Dependency.PackageName)=nil)
|
||||||
|
then
|
||||||
|
PackageGraph.AddDependencyToPackage(LazPackage,AddParams.Dependency);
|
||||||
|
if (AddParams.IconFile<>'')
|
||||||
|
and (LazPackage.FindDependencyByName('LCL')=nil) then
|
||||||
|
PackageGraph.AddDependencyToPackage(LazPackage,PackageGraph.LCLPackage);
|
||||||
|
PackageEditors.DeleteAmbiguousFiles(LazPackage,AddParams.UnitFilename);
|
||||||
|
// open file in editor
|
||||||
|
PackageEditors.CreateNewFile(Self,AddParams);
|
||||||
|
UpdateAll(false);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure AddRequiredPkg(AddParams: TAddToPkgResult);
|
||||||
|
begin
|
||||||
|
// add dependency
|
||||||
|
PackageGraph.AddDependencyToPackage(LazPackage,AddParams.Dependency);
|
||||||
|
FNextSelectedPart := AddParams.Dependency;
|
||||||
|
UpdateAll(false);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure AddFile(AddParams: TAddToPkgResult);
|
||||||
|
begin
|
||||||
|
// add file
|
||||||
|
with AddParams do begin
|
||||||
|
if (CompareFileExt(UnitFilename,'.inc',false)=0)
|
||||||
|
or (CompareFileExt(UnitFilename,'.lrs',false)=0) then
|
||||||
|
ExtendIncPathForNewIncludeFile(UnitFilename,IgnoreIncPaths);
|
||||||
|
FNextSelectedPart := LazPackage.AddFile(UnitFilename,Unit_Name,FileType,
|
||||||
|
PkgFileFlags,cpNormal);
|
||||||
|
end;
|
||||||
|
UpdateAll(false);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure AddNewFile(AddParams: TAddToPkgResult);
|
||||||
|
var
|
||||||
|
NewFilename: String;
|
||||||
|
DummyResult: TModalResult;
|
||||||
|
NewFileType: TPkgFileType;
|
||||||
|
NewPkgFileFlags: TPkgFileFlags;
|
||||||
|
Desc: TProjectFileDescriptor;
|
||||||
|
NewUnitName: String;
|
||||||
|
HasRegisterProc: Boolean;
|
||||||
|
begin
|
||||||
|
// create new file
|
||||||
|
if AddParams.NewItem is TNewItemProjectFile then begin
|
||||||
|
// create new file
|
||||||
|
Desc:=TNewItemProjectFile(AddParams.NewItem).Descriptor;
|
||||||
|
NewFilename:='';
|
||||||
|
DummyResult:=LazarusIDE.DoNewFile(Desc,NewFilename,'',
|
||||||
|
[nfOpenInEditor,nfCreateDefaultSrc,nfIsNotPartOfProject],LazPackage);
|
||||||
|
if DummyResult=mrOk then begin
|
||||||
|
// success
|
||||||
|
// -> now add it to package
|
||||||
|
NewUnitName:='';
|
||||||
|
NewFileType:=FileNameToPkgFileType(NewFilename);
|
||||||
|
NewPkgFileFlags:=[];
|
||||||
|
if (NewFileType in PkgFileUnitTypes) then begin
|
||||||
|
Include(NewPkgFileFlags,pffAddToPkgUsesSection);
|
||||||
|
NewUnitName:=ExtractFilenameOnly(NewFilename);
|
||||||
|
if Assigned(PackageEditors.OnGetUnitRegisterInfo) then begin
|
||||||
|
HasRegisterProc:=false;
|
||||||
|
PackageEditors.OnGetUnitRegisterInfo(Self,NewFilename,
|
||||||
|
NewUnitName,HasRegisterProc);
|
||||||
|
if HasRegisterProc then
|
||||||
|
Include(NewPkgFileFlags,pffHasRegisterProc);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
FNextSelectedPart := LazPackage.AddFile(NewFilename,NewUnitName,NewFileType,
|
||||||
|
NewPkgFileFlags, cpNormal);
|
||||||
|
UpdateAll(true);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
AddParams: TAddToPkgResult;
|
||||||
|
OldParams: TAddToPkgResult;
|
||||||
|
begin
|
||||||
|
if LazPackage.ReadOnly then begin
|
||||||
|
UpdateButtons;
|
||||||
|
exit(mrCancel);
|
||||||
|
end;
|
||||||
|
|
||||||
|
Result:=ShowAddToPackageDlg(LazPackage,AddParams,PackageEditors.OnGetIDEFileInfo,
|
||||||
|
PackageEditors.OnGetUnitRegisterInfo,DlgPage);
|
||||||
|
fLastDlgPage:=DlgPage;
|
||||||
|
if Result<>mrOk then exit;
|
||||||
|
|
||||||
|
PackageGraph.BeginUpdate(false);
|
||||||
|
IgnoreUnitPaths:=nil;
|
||||||
|
IgnoreIncPaths:=nil;
|
||||||
|
try
|
||||||
|
while AddParams<>nil do begin
|
||||||
|
case AddParams.AddType of
|
||||||
|
|
||||||
|
d2ptUnit:
|
||||||
|
AddUnit(AddParams);
|
||||||
|
|
||||||
|
d2ptVirtualUnit:
|
||||||
|
AddVirtualUnit(AddParams);
|
||||||
|
|
||||||
|
d2ptNewComponent:
|
||||||
|
AddNewComponent(AddParams);
|
||||||
|
|
||||||
|
d2ptRequiredPkg:
|
||||||
|
AddRequiredPkg(AddParams);
|
||||||
|
|
||||||
|
d2ptFile:
|
||||||
|
AddFile(AddParams);
|
||||||
|
|
||||||
|
d2ptNewFile:
|
||||||
|
AddNewFile(AddParams);
|
||||||
|
|
||||||
|
end;
|
||||||
|
OldParams:=AddParams;
|
||||||
|
AddParams:=AddParams.Next;
|
||||||
|
OldParams.Next:=nil;
|
||||||
|
OldParams.Free;
|
||||||
|
end;
|
||||||
|
AddParams.Free;
|
||||||
|
LazPackage.Modified:=true;
|
||||||
|
finally
|
||||||
|
IgnoreUnitPaths.Free;
|
||||||
|
IgnoreIncPaths.Free;
|
||||||
|
PackageGraph.EndUpdate;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TPackageEditorForm.UpdateTitle;
|
procedure TPackageEditorForm.UpdateTitle;
|
||||||
var
|
var
|
||||||
NewCaption: String;
|
NewCaption: String;
|
||||||
|
@ -61,7 +61,7 @@ uses
|
|||||||
IDETranslations, TransferMacros, BuildLazDialog, NewDialog,
|
IDETranslations, TransferMacros, BuildLazDialog, NewDialog,
|
||||||
IDEDialogs, ProjectInspector, ComponentPalette, SourceEditor,
|
IDEDialogs, ProjectInspector, ComponentPalette, SourceEditor,
|
||||||
AddFileToAPackageDlg, LazarusPackageIntf, PublishProjectDlg, PkgLinksDlg,
|
AddFileToAPackageDlg, LazarusPackageIntf, PublishProjectDlg, PkgLinksDlg,
|
||||||
InstallPkgSetDlg, ConfirmPkgListDlg,
|
InstallPkgSetDlg, ConfirmPkgListDlg, NewPkgComponentDlg,
|
||||||
// bosses
|
// bosses
|
||||||
BaseBuildManager, BasePkgManager,
|
BaseBuildManager, BasePkgManager,
|
||||||
MainBar, MainIntf, MainBase;
|
MainBar, MainIntf, MainBase;
|
||||||
@ -128,6 +128,7 @@ type
|
|||||||
procedure MainIDEitmPkgPkgGraphClick(Sender: TObject);
|
procedure MainIDEitmPkgPkgGraphClick(Sender: TObject);
|
||||||
procedure MainIDEitmPkgEditInstallPkgsClick(Sender: TObject);
|
procedure MainIDEitmPkgEditInstallPkgsClick(Sender: TObject);
|
||||||
procedure MainIDEitmPkgAddCurFileToPkgClick(Sender: TObject);
|
procedure MainIDEitmPkgAddCurFileToPkgClick(Sender: TObject);
|
||||||
|
procedure MainIDEitmPkgNewComponentClick(Sender: TObject);
|
||||||
procedure MainIDEitmPkgOpenPackageOfCurUnitClicked(Sender: TObject);
|
procedure MainIDEitmPkgOpenPackageOfCurUnitClicked(Sender: TObject);
|
||||||
procedure MainIDEitmConfigCustomCompsClicked(Sender: TObject);
|
procedure MainIDEitmConfigCustomCompsClicked(Sender: TObject);
|
||||||
procedure MainIDEitmOpenRecentPackageClicked(Sender: TObject);
|
procedure MainIDEitmOpenRecentPackageClicked(Sender: TObject);
|
||||||
@ -285,6 +286,7 @@ type
|
|||||||
function DoClosePackageEditor(APackage: TLazPackage): TModalResult; override;
|
function DoClosePackageEditor(APackage: TLazPackage): TModalResult; override;
|
||||||
function DoCloseAllPackageEditors: TModalResult; override;
|
function DoCloseAllPackageEditors: TModalResult; override;
|
||||||
function DoAddActiveUnitToAPackage: TModalResult;
|
function DoAddActiveUnitToAPackage: TModalResult;
|
||||||
|
function DoNewPackageComponent: TModalResult;
|
||||||
function WarnAboutMissingPackageFiles(APackage: TLazPackage): TModalResult;
|
function WarnAboutMissingPackageFiles(APackage: TLazPackage): TModalResult;
|
||||||
function AddPackageDependency(APackage: TLazPackage; const ReqPackage: string;
|
function AddPackageDependency(APackage: TLazPackage; const ReqPackage: string;
|
||||||
OnlyTestIfPossible: boolean = false): TModalResult; override;
|
OnlyTestIfPossible: boolean = false): TModalResult; override;
|
||||||
@ -559,6 +561,11 @@ begin
|
|||||||
DoAddActiveUnitToAPackage;
|
DoAddActiveUnitToAPackage;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TPkgManager.MainIDEitmPkgNewComponentClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
DoNewPackageComponent;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TPkgManager.MainIDEitmPkgOpenPackageOfCurUnitClicked(Sender: TObject);
|
procedure TPkgManager.MainIDEitmPkgOpenPackageOfCurUnitClicked(Sender: TObject);
|
||||||
var
|
var
|
||||||
ActiveSourceEditor: TSourceEditorInterface;
|
ActiveSourceEditor: TSourceEditorInterface;
|
||||||
@ -1579,6 +1586,7 @@ begin
|
|||||||
itmPkgOpenPackageFile.OnClick:=@MainIDEitmPkgOpenPackageFileClick;
|
itmPkgOpenPackageFile.OnClick:=@MainIDEitmPkgOpenPackageFileClick;
|
||||||
itmPkgOpenPackageOfCurUnit.OnClick :=@MainIDEitmPkgOpenPackageOfCurUnitClicked;
|
itmPkgOpenPackageOfCurUnit.OnClick :=@MainIDEitmPkgOpenPackageOfCurUnitClicked;
|
||||||
itmPkgAddCurFileToPkg.OnClick:=@MainIDEitmPkgAddCurFileToPkgClick;
|
itmPkgAddCurFileToPkg.OnClick:=@MainIDEitmPkgAddCurFileToPkgClick;
|
||||||
|
itmPkgAddNewComponentToPkg.OnClick:=@MainIDEitmPkgNewComponentClick;
|
||||||
itmPkgPkgGraph.OnClick:=@MainIDEitmPkgPkgGraphClick;
|
itmPkgPkgGraph.OnClick:=@MainIDEitmPkgPkgGraphClick;
|
||||||
itmPkgEditInstallPkgs.OnClick:=@MainIDEitmPkgEditInstallPkgsClick;
|
itmPkgEditInstallPkgs.OnClick:=@MainIDEitmPkgEditInstallPkgsClick;
|
||||||
{$IFDEF CustomIDEComps}
|
{$IFDEF CustomIDEComps}
|
||||||
@ -3448,6 +3456,36 @@ begin
|
|||||||
@MainIDE.GetIDEFileState);
|
@MainIDE.GetIDEFileState);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TPkgManager.DoNewPackageComponent: TModalResult;
|
||||||
|
var
|
||||||
|
APackage: TLazPackage;
|
||||||
|
CurEditor: TPackageEditorForm;
|
||||||
|
SaveFlags: TPkgSaveFlags;
|
||||||
|
Page: TAddToPkgType;
|
||||||
|
begin
|
||||||
|
Result:=ShowNewPkgComponentDialog(APackage);
|
||||||
|
if Result<>mrOk then exit;
|
||||||
|
SaveFlags:=[];
|
||||||
|
if APackage=nil then begin
|
||||||
|
// create new package
|
||||||
|
// create a new package with standard dependencies
|
||||||
|
APackage:=PackageGraph.CreateNewPackage(NameToValidIdentifier(lisPkgMangNewPackage));
|
||||||
|
PackageGraph.AddDependencyToPackage(APackage,
|
||||||
|
PackageGraph.IDEIntfPackage.CreateDependencyWithOwner(APackage));
|
||||||
|
APackage.Modified:=false;
|
||||||
|
Include(SaveFlags,psfSaveAs);
|
||||||
|
end;
|
||||||
|
// open a package editor
|
||||||
|
CurEditor:=PackageEditors.OpenEditor(APackage);
|
||||||
|
IDEWindowCreators.ShowForm(CurEditor,true);
|
||||||
|
// save
|
||||||
|
Result:=DoSavePackage(APackage,SaveFlags);
|
||||||
|
if Result<>mrOk then exit;
|
||||||
|
// show new component dialog
|
||||||
|
Page:=d2ptNewComponent;
|
||||||
|
Result:=CurEditor.ShowAddDialog(Page);
|
||||||
|
end;
|
||||||
|
|
||||||
function TPkgManager.WarnAboutMissingPackageFiles(APackage: TLazPackage): TModalResult;
|
function TPkgManager.WarnAboutMissingPackageFiles(APackage: TLazPackage): TModalResult;
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
|
Loading…
Reference in New Issue
Block a user