mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-08 05:17:24 +01:00
implemented open package file
git-svn-id: trunk@4028 -
This commit is contained in:
parent
d2685ce21a
commit
0dcd66ea61
@ -196,6 +196,7 @@ const
|
|||||||
// components menu
|
// components menu
|
||||||
ecConfigCustomComps = ecUserFirst + 900;
|
ecConfigCustomComps = ecUserFirst + 900;
|
||||||
ecOpenInstalledPkg = ecUserFirst + 901;
|
ecOpenInstalledPkg = ecUserFirst + 901;
|
||||||
|
ecOpenPackageFile = ecUserFirst + 902;
|
||||||
|
|
||||||
// help menu
|
// help menu
|
||||||
ecAboutLazarus = ecUserFirst + 1000;
|
ecAboutLazarus = ecUserFirst + 1000;
|
||||||
@ -628,6 +629,7 @@ begin
|
|||||||
// components menu
|
// components menu
|
||||||
ecConfigCustomComps : Result:= lisMenuConfigCustomComps;
|
ecConfigCustomComps : Result:= lisMenuConfigCustomComps;
|
||||||
ecOpenInstalledPkg : Result:= lisMenuOpenInstalledPkg;
|
ecOpenInstalledPkg : Result:= lisMenuOpenInstalledPkg;
|
||||||
|
ecOpenPackageFile : Result:= lisMenuOpenPackageFile;
|
||||||
|
|
||||||
// tools menu
|
// tools menu
|
||||||
ecExtToolSettings : Result:= srkmecExtToolSettings;
|
ecExtToolSettings : Result:= srkmecExtToolSettings;
|
||||||
@ -1464,6 +1466,7 @@ begin
|
|||||||
C:=Categories[AddCategory('Components',srkmCatComponentsMenu,caAll)];
|
C:=Categories[AddCategory('Components',srkmCatComponentsMenu,caAll)];
|
||||||
Add(C,'Configure custom components',ecConfigCustomComps,VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
Add(C,'Configure custom components',ecConfigCustomComps,VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||||
Add(C,'Open installed package',ecOpenInstalledPkg,VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
Add(C,'Open installed package',ecOpenInstalledPkg,VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||||
|
Add(C,'Open package file',ecOpenPackageFile,VK_UNKNOWN,[],VK_UNKNOWN,[]);
|
||||||
|
|
||||||
// tools menu
|
// tools menu
|
||||||
C:=Categories[AddCategory(KeyCategoryToolMenuName,srkmCatToolMenu,caAll)];
|
C:=Categories[AddCategory(KeyCategoryToolMenuName,srkmCatToolMenu,caAll)];
|
||||||
|
|||||||
@ -208,6 +208,7 @@ resourcestring
|
|||||||
lisMenuConfigCustomComps = 'Configure custom components';
|
lisMenuConfigCustomComps = 'Configure custom components';
|
||||||
lisMenuOpenInstalledPkg = 'Open installed package';
|
lisMenuOpenInstalledPkg = 'Open installed package';
|
||||||
lisMenuOpenRecentPkg = 'Open recent package';
|
lisMenuOpenRecentPkg = 'Open recent package';
|
||||||
|
lisMenuOpenPackageFile = 'Open package file';
|
||||||
|
|
||||||
lisMenuSettings = 'Configure custom tools ...';
|
lisMenuSettings = 'Configure custom tools ...';
|
||||||
lisMenuQuickSyntaxCheck = 'Quick syntax check';
|
lisMenuQuickSyntaxCheck = 'Quick syntax check';
|
||||||
@ -233,6 +234,7 @@ resourcestring
|
|||||||
// file dialogs
|
// file dialogs
|
||||||
lisOpenFile = 'Open file';
|
lisOpenFile = 'Open file';
|
||||||
lisOpenProjectFile = 'Open Project File';
|
lisOpenProjectFile = 'Open Project File';
|
||||||
|
lisOpenPackageFile = 'Open Package File';
|
||||||
lisSaveSpace = 'Save ';
|
lisSaveSpace = 'Save ';
|
||||||
lisSelectDFMFiles = 'Select Delphi form files (*.dfm)';
|
lisSelectDFMFiles = 'Select Delphi form files (*.dfm)';
|
||||||
lisChooseDirectory = 'Choose directory';
|
lisChooseDirectory = 'Choose directory';
|
||||||
|
|||||||
@ -282,6 +282,7 @@ type
|
|||||||
// components menu
|
// components menu
|
||||||
itmCompsConfigCustomComps: TMenuItem;
|
itmCompsConfigCustomComps: TMenuItem;
|
||||||
itmPkgOpenInstalled: TMenuItem;
|
itmPkgOpenInstalled: TMenuItem;
|
||||||
|
itmPkgOpenPackageFile: TMenuItem;
|
||||||
itmPkgOpenRecent: TMenuItem;
|
itmPkgOpenRecent: TMenuItem;
|
||||||
|
|
||||||
// tools menu
|
// tools menu
|
||||||
@ -358,6 +359,7 @@ type
|
|||||||
Compiling: boolean): TModalResult;
|
Compiling: boolean): TModalResult;
|
||||||
function DoBackupFile(const Filename:string;
|
function DoBackupFile(const Filename:string;
|
||||||
IsPartOfProject:boolean): TModalResult; virtual; abstract;
|
IsPartOfProject:boolean): TModalResult; virtual; abstract;
|
||||||
|
function DoDeleteAmbigiousFiles(const Filename:string): TModalResult; virtual; abstract;
|
||||||
|
|
||||||
procedure UpdateWindowsMenu; virtual;
|
procedure UpdateWindowsMenu; virtual;
|
||||||
procedure SaveEnvironment; virtual; abstract;
|
procedure SaveEnvironment; virtual; abstract;
|
||||||
@ -1087,6 +1089,13 @@ begin
|
|||||||
mnuComponents.Add(itmPkgOpenInstalled);
|
mnuComponents.Add(itmPkgOpenInstalled);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
|
||||||
|
itmPkgOpenPackageFile := TMenuItem.Create(Self);
|
||||||
|
itmPkgOpenPackageFile.Name:='itmPkgOpenPackageFile';
|
||||||
|
itmPkgOpenPackageFile.Caption := lisMenuOpenPackageFile;
|
||||||
|
{$IFDEF EnablePkgs}
|
||||||
|
mnuComponents.Add(itmPkgOpenPackageFile);
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
itmPkgOpenRecent := TMenuItem.Create(Self);
|
itmPkgOpenRecent := TMenuItem.Create(Self);
|
||||||
itmPkgOpenRecent.Name:='itmPkgOpenRecent';
|
itmPkgOpenRecent.Name:='itmPkgOpenRecent';
|
||||||
itmPkgOpenRecent.Caption := lisMenuOpenRecentPkg;
|
itmPkgOpenRecent.Caption := lisMenuOpenRecentPkg;
|
||||||
@ -1297,6 +1306,7 @@ begin
|
|||||||
// components menu
|
// components menu
|
||||||
itmCompsConfigCustomComps.ShortCut:=CommandToShortCut(ecConfigCustomComps);
|
itmCompsConfigCustomComps.ShortCut:=CommandToShortCut(ecConfigCustomComps);
|
||||||
itmPkgOpenInstalled.ShortCut:=CommandToShortCut(ecOpenInstalledPkg);
|
itmPkgOpenInstalled.ShortCut:=CommandToShortCut(ecOpenInstalledPkg);
|
||||||
|
itmPkgOpenPackageFile.ShortCut:=CommandToShortCut(ecOpenPackageFile);
|
||||||
|
|
||||||
// tools menu
|
// tools menu
|
||||||
itmToolConfigure.ShortCut:=CommandToShortCut(ecExtToolSettings);
|
itmToolConfigure.ShortCut:=CommandToShortCut(ecExtToolSettings);
|
||||||
|
|||||||
@ -719,8 +719,8 @@ begin
|
|||||||
XMLConfig.SetDeleteValue(Path+'PackageName/Value',PackageName,'');
|
XMLConfig.SetDeleteValue(Path+'PackageName/Value',PackageName,'');
|
||||||
MaxVersion.SaveToXMLConfig(XMLConfig,Path+'MaxVersion/');
|
MaxVersion.SaveToXMLConfig(XMLConfig,Path+'MaxVersion/');
|
||||||
MinVersion.SaveToXMLConfig(XMLConfig,Path+'MinVersion/');
|
MinVersion.SaveToXMLConfig(XMLConfig,Path+'MinVersion/');
|
||||||
XMLConfig.SetDeleteValue(Path+'MaxVersion/Value',pdfMaxVersion in FFlags,false);
|
XMLConfig.SetDeleteValue(Path+'MaxVersion/Valid',pdfMaxVersion in FFlags,false);
|
||||||
XMLConfig.SetDeleteValue(Path+'MinVersion/Value',pdfMinVersion in FFlags,false);
|
XMLConfig.SetDeleteValue(Path+'MinVersion/Valid',pdfMinVersion in FFlags,false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TPkgDependency.MakeSense: boolean;
|
function TPkgDependency.MakeSense: boolean;
|
||||||
@ -1155,7 +1155,7 @@ var
|
|||||||
NewCount:=XMLConfig.GetValue(ThePath+'Count',0);
|
NewCount:=XMLConfig.GetValue(ThePath+'Count',0);
|
||||||
for i:=0 to NewCount-1 do begin
|
for i:=0 to NewCount-1 do begin
|
||||||
PkgDependency:=TPkgDependency.Create;
|
PkgDependency:=TPkgDependency.Create;
|
||||||
PkgDependency.LoadFromXMLConfig(XMLConfig,ThePath+'Item'+IntToStr(i)+'/',
|
PkgDependency.LoadFromXMLConfig(XMLConfig,ThePath+'Item'+IntToStr(i+1)+'/',
|
||||||
FileVersion);
|
FileVersion);
|
||||||
List.Add(PkgDependency);
|
List.Add(PkgDependency);
|
||||||
end;
|
end;
|
||||||
@ -1219,10 +1219,10 @@ procedure TLazPackage.SaveToXMLConfig(XMLConfig: TXMLConfig; const Path: string
|
|||||||
i: Integer;
|
i: Integer;
|
||||||
PkgDependency: TPkgDependency;
|
PkgDependency: TPkgDependency;
|
||||||
begin
|
begin
|
||||||
XMLConfig.SetDeleteValue(Path+'Count',List.Count,0);
|
XMLConfig.SetDeleteValue(ThePath+'Count',List.Count,0);
|
||||||
for i:=0 to List.Count-1 do begin
|
for i:=0 to List.Count-1 do begin
|
||||||
PkgDependency:=TPkgDependency(List[i]);
|
PkgDependency:=TPkgDependency(List[i]);
|
||||||
PkgDependency.SaveToXMLConfig(XMLConfig,ThePath+'Item'+IntToStr(i)+'/');
|
PkgDependency.SaveToXMLConfig(XMLConfig,ThePath+'Item'+IntToStr(i+1)+'/');
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|||||||
@ -39,8 +39,9 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, Forms, Controls, StdCtrls, ExtCtrls, ComCtrls, Buttons,
|
Classes, SysUtils, Forms, Controls, StdCtrls, ExtCtrls, ComCtrls, Buttons,
|
||||||
LResources, Graphics, LCLType, Menus, LazarusIDEStrConsts, IDEOptionDefs,
|
LResources, Graphics, LCLType, Menus, Dialogs, LazarusIDEStrConsts,
|
||||||
IDEDefs, ComponentReg, PackageDefs, AddToPackageDlg, PackageSystem;
|
IDEOptionDefs, IDEDefs, ComponentReg, PackageDefs, AddToPackageDlg,
|
||||||
|
PackageSystem;
|
||||||
|
|
||||||
type
|
type
|
||||||
TOnOpenFile =
|
TOnOpenFile =
|
||||||
@ -51,6 +52,7 @@ type
|
|||||||
function(Sender: TObject;
|
function(Sender: TObject;
|
||||||
const Params: TAddToPkgResult): TModalResult of object;
|
const Params: TAddToPkgResult): TModalResult of object;
|
||||||
|
|
||||||
|
|
||||||
{ TPackageEditorForm }
|
{ TPackageEditorForm }
|
||||||
|
|
||||||
TPackageEditorForm = class(TBasePackageEditor)
|
TPackageEditorForm = class(TBasePackageEditor)
|
||||||
@ -76,6 +78,7 @@ type
|
|||||||
procedure PackageEditorFormResize(Sender: TObject);
|
procedure PackageEditorFormResize(Sender: TObject);
|
||||||
procedure RegisteredListBoxDrawItem(Control: TWinControl; Index: Integer;
|
procedure RegisteredListBoxDrawItem(Control: TWinControl; Index: Integer;
|
||||||
ARect: TRect; State: TOwnerDrawState);
|
ARect: TRect; State: TOwnerDrawState);
|
||||||
|
procedure RemoveBitBtnClick(Sender: TObject);
|
||||||
procedure SaveBitBtnClick(Sender: TObject);
|
procedure SaveBitBtnClick(Sender: TObject);
|
||||||
private
|
private
|
||||||
FLazPackage: TLazPackage;
|
FLazPackage: TLazPackage;
|
||||||
@ -228,6 +231,7 @@ end;
|
|||||||
procedure TPackageEditorForm.FilesTreeViewSelectionChanged(Sender: TObject);
|
procedure TPackageEditorForm.FilesTreeViewSelectionChanged(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
UpdateSelectedFile;
|
UpdateSelectedFile;
|
||||||
|
UpdateButtons;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPackageEditorForm.OpenFileMenuItemClick(Sender: TObject);
|
procedure TPackageEditorForm.OpenFileMenuItemClick(Sender: TObject);
|
||||||
@ -292,6 +296,36 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TPackageEditorForm.RemoveBitBtnClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
ANode: TTreeNode;
|
||||||
|
NodeIndex: Integer;
|
||||||
|
CurFile: TPkgFile;
|
||||||
|
begin
|
||||||
|
ANode:=FilesTreeView.Selected;
|
||||||
|
if (ANode=nil) or LazPackage.ReadOnly then begin
|
||||||
|
UpdateButtons;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
NodeIndex:=ANode.Index;
|
||||||
|
if ANode.Parent=FilesNode then begin
|
||||||
|
// get current package file
|
||||||
|
CurFile:=LazPackage.Files[NodeIndex];
|
||||||
|
if CurFile=nil then exit;
|
||||||
|
if MessageDlg('Remove file?',
|
||||||
|
'Remove file "'+CurFile.Filename+'"'#13
|
||||||
|
+'from package "'+LazPackage.IDAsString+'"?',
|
||||||
|
mtConfirmation,[mbYes,mbNo],0)=mrNo
|
||||||
|
then
|
||||||
|
exit;
|
||||||
|
|
||||||
|
// ToDo
|
||||||
|
|
||||||
|
end else if ANode.Parent=RequiredPackagesNode then begin
|
||||||
|
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TPackageEditorForm.SaveBitBtnClick(Sender: TObject);
|
procedure TPackageEditorForm.SaveBitBtnClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
DoSave;
|
DoSave;
|
||||||
@ -352,6 +386,9 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
UpdateSelectedFile;
|
||||||
|
UpdateStatusBar;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPackageEditorForm.SetLazPackage(const AValue: TLazPackage);
|
procedure TPackageEditorForm.SetLazPackage(const AValue: TLazPackage);
|
||||||
@ -435,6 +472,7 @@ begin
|
|||||||
Name:='RemoveBitBtn';
|
Name:='RemoveBitBtn';
|
||||||
Parent:=Self;
|
Parent:=Self;
|
||||||
Caption:='Remove';
|
Caption:='Remove';
|
||||||
|
OnClick:=@RemoveBitBtnClick;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
InstallBitBtn:=TBitBtn.Create(Self);
|
InstallBitBtn:=TBitBtn.Create(Self);
|
||||||
@ -657,6 +695,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
if LazPackage.ReadOnly then
|
if LazPackage.ReadOnly then
|
||||||
StatusText:='Read Only: '+StatusText;
|
StatusText:='Read Only: '+StatusText;
|
||||||
|
if LazPackage.Modified then
|
||||||
|
StatusText:='Modified: '+StatusText;
|
||||||
StatusBar.SimpleText:=StatusText;
|
StatusBar.SimpleText:=StatusText;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -664,6 +704,8 @@ procedure TPackageEditorForm.DoSave;
|
|||||||
begin
|
begin
|
||||||
PackageEditors.SavePackage(LazPackage);
|
PackageEditors.SavePackage(LazPackage);
|
||||||
UpdateButtons;
|
UpdateButtons;
|
||||||
|
UpdateTitle;
|
||||||
|
UpdateStatusBar;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
constructor TPackageEditorForm.Create(TheOwner: TComponent);
|
constructor TPackageEditorForm.Create(TheOwner: TComponent);
|
||||||
|
|||||||
@ -45,7 +45,7 @@ uses
|
|||||||
MemCheck,
|
MemCheck,
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
Classes, SysUtils, LCLProc, Forms, Controls, FileCtrl, Dialogs, Menus,
|
Classes, SysUtils, LCLProc, Forms, Controls, FileCtrl, Dialogs, Menus,
|
||||||
CodeToolManager, CodeCache, Laz_XMLCfg,
|
CodeToolManager, CodeCache, Laz_XMLCfg, LazarusIDEStrConsts,
|
||||||
KeyMapping, EnvironmentOpts, IDEProcs, ProjectDefs, InputHistory,
|
KeyMapping, EnvironmentOpts, IDEProcs, ProjectDefs, InputHistory,
|
||||||
IDEDefs, UComponentManMain, PackageEditor, AddToPackageDlg, PackageDefs,
|
IDEDefs, UComponentManMain, PackageEditor, AddToPackageDlg, PackageDefs,
|
||||||
PackageLinks, PackageSystem, ComponentReg, OpenInstalledPkgDlg,
|
PackageLinks, PackageSystem, ComponentReg, OpenInstalledPkgDlg,
|
||||||
@ -53,6 +53,7 @@ uses
|
|||||||
|
|
||||||
type
|
type
|
||||||
TPkgManager = class(TBasePkgManager)
|
TPkgManager = class(TBasePkgManager)
|
||||||
|
procedure MainIDEitmPkgOpenPackageFileClick(Sender: TObject);
|
||||||
function OnPackageEditorCreateFile(Sender: TObject;
|
function OnPackageEditorCreateFile(Sender: TObject;
|
||||||
const Params: TAddToPkgResult): TModalResult;
|
const Params: TAddToPkgResult): TModalResult;
|
||||||
procedure OnPackageEditorGetUnitRegisterInfo(Sender: TObject;
|
procedure OnPackageEditorGetUnitRegisterInfo(Sender: TObject;
|
||||||
@ -93,6 +94,34 @@ implementation
|
|||||||
|
|
||||||
{ TPkgManager }
|
{ TPkgManager }
|
||||||
|
|
||||||
|
procedure TPkgManager.MainIDEitmPkgOpenPackageFileClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
OpenDialog: TOpenDialog;
|
||||||
|
AFilename: string;
|
||||||
|
I: Integer;
|
||||||
|
OpenFlags: TPkgOpenFlags;
|
||||||
|
begin
|
||||||
|
OpenDialog:=TOpenDialog.Create(Application);
|
||||||
|
try
|
||||||
|
InputHistories.ApplyFileDialogSettings(OpenDialog);
|
||||||
|
OpenDialog.Title:=lisOpenPackageFile;
|
||||||
|
OpenDialog.Options:=OpenDialog.Options+[ofAllowMultiSelect];
|
||||||
|
if OpenDialog.Execute and (OpenDialog.Files.Count>0) then begin
|
||||||
|
OpenFlags:=[pofAddToRecent];
|
||||||
|
For I := 0 to OpenDialog.Files.Count-1 do
|
||||||
|
Begin
|
||||||
|
AFilename:=CleanAndExpandFilename(OpenDialog.Files.Strings[i]);
|
||||||
|
if DoOpenPackageFile(AFilename,OpenFlags)=mrAbort then begin
|
||||||
|
break;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
InputHistories.StoreFileDialogSettings(OpenDialog);
|
||||||
|
finally
|
||||||
|
OpenDialog.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
function TPkgManager.OnPackageEditorCreateFile(Sender: TObject;
|
function TPkgManager.OnPackageEditorCreateFile(Sender: TObject;
|
||||||
const Params: TAddToPkgResult): TModalResult;
|
const Params: TAddToPkgResult): TModalResult;
|
||||||
var
|
var
|
||||||
@ -219,6 +248,7 @@ var
|
|||||||
NewPkgName: String;
|
NewPkgName: String;
|
||||||
ConflictPkg: TLazPackage;
|
ConflictPkg: TLazPackage;
|
||||||
PkgFile: TPkgFile;
|
PkgFile: TPkgFile;
|
||||||
|
LowerFilename: String;
|
||||||
begin
|
begin
|
||||||
OldPkgFilename:=APackage.Filename;
|
OldPkgFilename:=APackage.Filename;
|
||||||
|
|
||||||
@ -267,19 +297,29 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
// apply naming conventions
|
// apply naming conventions
|
||||||
if EnvironmentOptions.PascalFileAutoLowerCase then
|
if lowercase(NewPkgName)<>NewPkgName then begin
|
||||||
NewFileName:=ExtractFilePath(NewFilename)
|
LowerFilename:=ExtractFilePath(NewFilename)
|
||||||
+lowercase(ExtractFileName(NewFilename));
|
+lowercase(ExtractFileName(NewFilename));
|
||||||
|
if EnvironmentOptions.PascalFileAskLowerCase then begin
|
||||||
|
if MessageDlg('Rename File lowercase?',
|
||||||
|
'Should the file renamed lowercase to'#13
|
||||||
|
+'"'+LowerFilename+'"?',
|
||||||
|
mtConfirmation,[mbYes,mbNo],0)=mrYes
|
||||||
|
then
|
||||||
|
NewFileName:=LowerFilename;
|
||||||
|
end else begin
|
||||||
|
if EnvironmentOptions.PascalFileAutoLowerCase then
|
||||||
|
NewFileName:=LowerFilename;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
// check package name conflicts
|
// check package name conflict
|
||||||
ConflictPkg:=PackageGraph.FindAPackageWithName(NewPkgName,APackage);
|
ConflictPkg:=PackageGraph.FindAPackageWithName(NewPkgName,APackage);
|
||||||
if ConflictPkg<>nil then begin
|
if ConflictPkg<>nil then begin
|
||||||
Result:=MessageDlg('Package name already exists',
|
Result:=MessageDlg('Package name already exists',
|
||||||
'The package name "'+NewPkgName+'" already exists.'#13
|
'There is already another package with the name "'+NewPkgName+'".'#13
|
||||||
+'Conflict package: "'+ConflictPkg.IDAsString+'"'#13
|
+'Conflict package: "'+ConflictPkg.IDAsString+'"'#13
|
||||||
+'File: "'+ConflictPkg.Filename+'"'#13
|
+'File: "'+ConflictPkg.Filename+'"',
|
||||||
+#13
|
|
||||||
+'It is strongly recommended to choose another name.',
|
|
||||||
mtInformation,[mbRetry,mbAbort,mbIgnore],0);
|
mtInformation,[mbRetry,mbAbort,mbIgnore],0);
|
||||||
if Result=mrAbort then exit;
|
if Result=mrAbort then exit;
|
||||||
if Result<>mrIgnore then continue; // try again
|
if Result<>mrIgnore then continue; // try again
|
||||||
@ -326,13 +366,15 @@ begin
|
|||||||
APackage.Filename:=NewFilename;
|
APackage.Filename:=NewFilename;
|
||||||
|
|
||||||
// rename package
|
// rename package
|
||||||
if AnsiCompareText(NewPkgName,APackage.Name)=0 then begin
|
if NewPkgName<>APackage.Name then begin
|
||||||
// just change in case
|
if AnsiCompareText(NewPkgName,APackage.Name)=0 then begin
|
||||||
APackage.Name:=NewPkgName;
|
// just change the case
|
||||||
end else begin
|
APackage.Name:=NewPkgName;
|
||||||
// name change -> update package graph
|
end else begin
|
||||||
APackage.Name:=NewPkgName;
|
// name change -> update package graph
|
||||||
// ToDo: update package graph
|
APackage.Name:=NewPkgName;
|
||||||
|
// ToDo: update package graph
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// clean up old package file to reduce ambigiousities
|
// clean up old package file to reduce ambigiousities
|
||||||
@ -389,7 +431,10 @@ begin
|
|||||||
with MainIDE do begin
|
with MainIDE do begin
|
||||||
itmCompsConfigCustomComps.OnClick :=@mnuConfigCustomCompsClicked;
|
itmCompsConfigCustomComps.OnClick :=@mnuConfigCustomCompsClicked;
|
||||||
itmPkgOpenInstalled.OnClick :=@mnuOpenInstalledPckClicked;
|
itmPkgOpenInstalled.OnClick :=@mnuOpenInstalledPckClicked;
|
||||||
|
itmPkgOpenPackageFile.OnClick:=@MainIDEitmPkgOpenPackageFileClick;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
SetRecentPackagesMenu;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPkgManager.ConnectSourceNotebookEvents;
|
procedure TPkgManager.ConnectSourceNotebookEvents;
|
||||||
@ -404,7 +449,6 @@ end;
|
|||||||
|
|
||||||
procedure TPkgManager.SetRecentPackagesMenu;
|
procedure TPkgManager.SetRecentPackagesMenu;
|
||||||
begin
|
begin
|
||||||
writeln('TPkgManager.SetRecentPackagesMenu ',EnvironmentOptions.RecentPackageFiles.Count);
|
|
||||||
MainIDE.SetRecentSubMenu(MainIDE.itmPkgOpenRecent,
|
MainIDE.SetRecentSubMenu(MainIDE.itmPkgOpenRecent,
|
||||||
EnvironmentOptions.RecentPackageFiles,@mnuOpenRecentPackageClicked);
|
EnvironmentOptions.RecentPackageFiles,@mnuOpenRecentPackageClicked);
|
||||||
end;
|
end;
|
||||||
@ -433,7 +477,7 @@ var
|
|||||||
ConflictPkg: TLazPackage;
|
ConflictPkg: TLazPackage;
|
||||||
begin
|
begin
|
||||||
// check Package Name
|
// check Package Name
|
||||||
if not IsValidIdent(APackage.Name) then begin
|
if (APackage.Name='') or (not IsValidIdent(APackage.Name)) then begin
|
||||||
Result:=MessageDlg('Invalid Package Name',
|
Result:=MessageDlg('Invalid Package Name',
|
||||||
'The package name "'+APackage.Name+'" of'#13
|
'The package name "'+APackage.Name+'" of'#13
|
||||||
+'the file "'+APackage.Filename+'" is invalid.',
|
+'the file "'+APackage.Filename+'" is invalid.',
|
||||||
@ -509,13 +553,22 @@ begin
|
|||||||
APackage:=PackageGraph.FindPackageWithFilename(AFilename,true);
|
APackage:=PackageGraph.FindPackageWithFilename(AFilename,true);
|
||||||
if APackage=nil then begin
|
if APackage=nil then begin
|
||||||
// package not yet loaded
|
// package not yet loaded
|
||||||
|
|
||||||
|
if not FileExists(AFilename) then begin
|
||||||
|
MessageDlg('File not found',
|
||||||
|
'File "'+AFilename+'" not found.',
|
||||||
|
mtError,[mbCancel],0);
|
||||||
|
RemoveFromRecentList(AFilename,EnvironmentOptions.RecentPackageFiles);
|
||||||
|
SetRecentPackagesMenu;
|
||||||
|
Result:=mrCancel;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
// create a new package
|
// create a new package
|
||||||
Result:=mrCancel;
|
Result:=mrCancel;
|
||||||
APackage:=TLazPackage.Create;
|
APackage:=TLazPackage.Create;
|
||||||
try
|
try
|
||||||
// load the package file
|
// load the package file
|
||||||
APackage.Filename:=AFilename;
|
|
||||||
try
|
try
|
||||||
XMLConfig:=TXMLConfig.Create(AFilename);
|
XMLConfig:=TXMLConfig.Create(AFilename);
|
||||||
try
|
try
|
||||||
@ -531,6 +584,8 @@ begin
|
|||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
APackage.Filename:=AFilename;
|
||||||
|
APackage.Modified:=false;
|
||||||
|
|
||||||
Result:=AddPackageToGraph(APackage);
|
Result:=AddPackageToGraph(APackage);
|
||||||
finally
|
finally
|
||||||
@ -569,9 +624,13 @@ begin
|
|||||||
if Result<>mrOk then exit;
|
if Result<>mrOk then exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
// backup old file
|
||||||
Result:=MainIDE.DoBackupFile(APackage.Filename,false);
|
Result:=MainIDE.DoBackupFile(APackage.Filename,false);
|
||||||
if Result=mrAbort then exit;
|
if Result=mrAbort then exit;
|
||||||
|
|
||||||
|
Result:=MainIDE.DoDeleteAmbigiousFiles(APackage.Filename);
|
||||||
|
if Result=mrAbort then exit;
|
||||||
|
|
||||||
// save
|
// save
|
||||||
try
|
try
|
||||||
XMLConfig:=TXMLConfig.Create(APackage.Filename);
|
XMLConfig:=TXMLConfig.Create(APackage.Filename);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user