Remove LCL dependency from PackageDefs. Move Pkg editor related stuff to new unit EditablePackage.

This commit is contained in:
Juha 2024-04-07 12:04:52 +03:00
parent 5814e6dba1
commit 99aa02f484
23 changed files with 385 additions and 314 deletions

View File

@ -30,7 +30,36 @@ uses
IDEOptionsIntf, CompOptsIntf;
type
TPFComponentBaseClass = (
pfcbcNone, // unknown
pfcbcForm, // is TForm
pfcbcFrame, // is TFrame
pfcbcDataModule,// is TDataModule
pfcbcCustomForm,// is TCustomForm (not TForm)
pfcbcOther // is a designer base class, see ResourceBaseClassname
);
const
PFComponentBaseClassNames: array[TPFComponentBaseClass] of string = (
'None',
'Form',
'Frame',
'DataModule',
'CustomForm',
'Other'
);
DefaultResourceBaseClassnames: array[TPFComponentBaseClass] of string = (
'',
'TForm',
'TFrame',
'TDataModule',
'TCustomForm',
''
);
function StrToComponentBaseClass(const s: string): TPFComponentBaseClass;
type
{$M+}
TIDEOwnedFile = class
protected
@ -67,6 +96,13 @@ type
implementation
function StrToComponentBaseClass(const s: string): TPFComponentBaseClass;
begin
for Result:=low(TPFComponentBaseClass) to high(TPFComponentBaseClass) do
if SysUtils.CompareText(PFComponentBaseClassNames[Result],s)=0 then exit;
Result:=pfcbcNone;
end;
{ TIDEProjPackBase }
function TIDEProjPackBase.HasDirectory: boolean;

View File

@ -21,10 +21,11 @@ interface
uses
Classes, SysUtils,
// LCL
LCLMemManager, Forms, LResources;
LCLMemManager, Forms, LResources,
// BuildIntf
ProjPackIntf;
type
{ TUnitResourcefileFormat }
TUnitResourcefileFormat = class
@ -70,6 +71,8 @@ var
procedure RegisterUnitResourcefileFormat(AResourceFileFormat: TUnitResourcefileFormatClass);
function GetUnitResourcefileFormats: TUnitResourcefileFormatArr;
function GetComponentBaseClass(aClass: TClass): TPFComponentBaseClass;
implementation
@ -103,6 +106,22 @@ begin
Result := GUnitResourcefileFormats;
end;
function GetComponentBaseClass(aClass: TClass): TPFComponentBaseClass;
begin
Result:=pfcbcNone;
if aClass=nil then exit;
if aClass.InheritsFrom(TForm) then
Result:=pfcbcForm
else if aClass.InheritsFrom(TFrame) then
Result:=pfcbcFrame
else if aClass.InheritsFrom(TDataModule) then
Result:=pfcbcDataModule
else if aClass.InheritsFrom(TCustomForm) then
Result:=pfcbcCustomForm
else
Result:=pfcbcOther;
end;
{ TCustomLFMUnitResourceFileFormat }
class function TCustomLFMUnitResourceFileFormat.ResourceDirectiveFilename: string;

View File

@ -50,7 +50,7 @@ uses
// IdeConfig
IDEProcs, SearchPathProcs, ParsedCompilerOpts, CompilerOptions, ProjPackCommon,
// IDE
DialogProcs, Project, PackageDefs, PackageSystem, PackageEditor,
DialogProcs, Project, PackageDefs, EditablePackage, PackageSystem, PackageEditor,
BasePkgManager, LazarusIDEStrConsts, SourceFileManager,
// Converter
ConverterTypes, ConvertSettings, ConvCodeTool, MissingUnits, MissingPropertiesDlg,
@ -173,7 +173,7 @@ type
// Now they can't share much code.
TConvertDelphiProjPack = class(TConvertDelphiPBase)
private
// Either Project or LazPackage. Typecasted to right types in property getter.
// Either Project or EditablePackage. Typecasted to right types in property getter.
fProjPack: iProjPack;
fLazPInfoFilename: string; // .lpi or .lpk file name
fDelphiPFilename: string; // .dpr or .dpk file name
@ -259,8 +259,8 @@ type
TConvertDelphiPackage = class(TConvertDelphiProjPack)
private
function AddUnit(AFileName: string): TModalResult;
function GetLazPackage: TLazPackage;
procedure SetLazPackage(const AValue: TLazPackage);
function GetLazPackage: TEditablePackage;
procedure SetLazPackage(const AValue: TEditablePackage);
protected
function CreateInstance: TModalResult; override;
function CreateMainSourceFile: TModalResult; override;
@ -276,7 +276,7 @@ type
constructor Create(const aPackageFilename: string);
destructor Destroy; override;
public
property LazPackage: TLazPackage read GetLazPackage write SetLazPackage;
property LazPackage: TEditablePackage read GetLazPackage write SetLazPackage;
end;
{ TConvertedDelphiProjectDescriptor }
@ -2116,12 +2116,12 @@ begin
Result:=mrOK;
end;
function TConvertDelphiPackage.GetLazPackage: TLazPackage;
function TConvertDelphiPackage.GetLazPackage: TEditablePackage;
begin
Result:=fProjPack as TLazPackage;
Result:=fProjPack as TEditablePackage;
end;
procedure TConvertDelphiPackage.SetLazPackage(const AValue: TLazPackage);
procedure TConvertDelphiPackage.SetLazPackage(const AValue: TEditablePackage);
begin
fProjPack:=AValue;
end;

View File

@ -49,7 +49,7 @@ uses
// Codetools
CodeCache, CodeTree, CodeToolManager, FindDeclarationTool,
// BuildIntf
ComponentReg, ProjectIntf,
ComponentReg, ProjPackIntf, ProjectIntf,
// IDEIntf
PropEdits, PropEditUtils, ObjectInspector, FormEditingIntf,
UnitResources, IDEOptEditorIntf, IDEDialogs, ComponentEditors,

View File

@ -10,6 +10,8 @@ uses
Forms, Controls, Graphics, Dialogs, StdCtrls, Buttons,
// LazUtils
LazUTF8,
// BuildIntf
ProjPackIntf,
// IdeIntf
IDEOptionsIntf, IDEOptEditorIntf, ProjectIntf, IDEImagesIntf,
// IDE

View File

@ -1475,6 +1475,11 @@
<HasResources Value="True"/>
<ResourceBaseClass Value="Frame"/>
</Unit>
<Unit>
<Filename Value="../packager/editablepackage.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="EditablePackage"/>
</Unit>
</Units>
</ProjectOptions>
<CompilerOptions>

View File

@ -92,8 +92,8 @@ uses
ParsedCompilerOpts, CompilerOptions, CheckCompilerOpts, BuildProjectDlg,
BuildModesManager, ApplicationBundle, ExtTools, ExtToolsIDE,
// projects
ProjectResources, Project, ProjectDefs, NewProjectDlg,
PublishModuleDlg, ProjectInspector, PackageDefs, ProjectDescriptorTypes,
ProjectResources, Project, ProjectDefs, NewProjectDlg, PublishModuleDlg,
ProjectInspector, PackageDefs, EditablePackage, ProjectDescriptorTypes,
// help manager
IDEContextHelpEdit, IDEHelpIntf, IdeDebuggerWatchValueIntf, IDEHelpManager,
CodeHelp, HelpOptions,
@ -8875,7 +8875,7 @@ var
i: integer;
CurUnit: TUnitInfo;
CurCode: TCodeBuffer;
CurPackage: TLazPackage;
CurPackage: TEditablePackage;
Reload: TModalResult;
begin
Result:=mrOk;
@ -8994,7 +8994,7 @@ begin
// package should be reloaded
else begin
// keep package
CurPackage:=TLazPackage(APackageList.Objects[i]);
CurPackage:=TEditablePackage(APackageList.Objects[i]);
if CurPackage.Editor=nil then begin
if PkgBoss.DoOpenPackage(CurPackage,[pofMultiOpen],false)=mrAbort then
exit;

View File

@ -0,0 +1,82 @@
unit EditablePackage;
{$mode ObjFPC}{$H+}
interface
uses
Classes, SysUtils,
// LCL
Forms,
// IDE
PackageDefs;
type
TBasePackageEditor = class;
{ TEditablePackage }
TEditablePackage = class(TLazPackage)
private
FPackageEditor: TBasePackageEditor;
procedure SetPackageEditor(const AValue: TBasePackageEditor);
protected
procedure SetModified(const AValue: boolean); override;
public
constructor Create; override;
destructor Destroy; override;
public
property Editor: TBasePackageEditor read FPackageEditor write SetPackageEditor;
end;
{ TBasePackageEditor }
TBasePackageEditor = class(TForm)
protected
function GetLazPackage: TEditablePackage; virtual;
procedure SetLazPackage(const AValue: TEditablePackage); virtual; abstract;
public
function CanCloseEditor: TModalResult; virtual; abstract;
procedure UpdateAll(Immediately: boolean = false); virtual; abstract;
property LazPackage: TEditablePackage read GetLazPackage write SetLazPackage;
end;
implementation
{ TEditablePackage }
constructor TEditablePackage.Create;
begin
inherited Create;
end;
destructor TEditablePackage.Destroy;
begin
inherited Destroy;
end;
procedure TEditablePackage.SetPackageEditor(const AValue: TBasePackageEditor);
begin
if FPackageEditor=AValue then exit;
FPackageEditor:=AValue;
end;
procedure TEditablePackage.SetModified(const AValue: boolean);
begin
inherited SetModified(AValue);
if Modified and (Editor<>nil) then
Editor.UpdateAll(false);
end;
{ TBasePackageEditor }
function TBasePackageEditor.GetLazPackage: TEditablePackage;
begin
Result:=nil;
raise Exception.Create('TBasePackageEditor.GetLazPackage should not be called.');
end;
end.

View File

@ -42,6 +42,11 @@ Files in this package are for the main configuration of the IDE."/>
<Filename Value="idepackagerstrconsts.pas"/>
<UnitName Value="IdePackagerStrConsts"/>
</Item>
<Item>
<Filename Value="editablepackage.pas"/>
<AddToUsesPkgSection Value="False"/>
<UnitName Value="EditablePackage"/>
</Item>
</Files>
<i18n>
<EnableI18N Value="True"/>

View File

@ -39,8 +39,6 @@ interface
uses
// FCL
Classes, SysUtils, Contnrs, TypInfo, AVL_Tree, System.UITypes,
// LCL
Forms,
// Codetools
LazConfigStorage, DefineTemplates, CodeToolManager,
CodeCache, CodeToolsCfgScript, CodeToolsStructs, BasicCodeTools,
@ -49,17 +47,15 @@ uses
LazTracer, LazLoggerBase, Laz2_XMLCfg, AvgLvlTree,
// BuildIntf
MacroIntf, MacroDefIntf, CompOptsIntf, IDEOptionsIntf, PublishModuleIntf, ComponentReg,
PackageDependencyIntf, PackageIntf, FppkgIntf, LazMsgWorker, BaseIDEIntf,
PackageDependencyIntf, ProjPackIntf, PackageIntf, FppkgIntf, LazMsgWorker, BaseIDEIntf,
// IdeConfig
TransferMacros, IDEProcs, IDEOptionDefs, CompOptsModes, SearchPathProcs,
IdeXmlConfigProcs, ParsedCompilerOpts, CompilerOptions, EditDefineTree,
ProjPackCommon, FppkgHelper,
IdePackagerStrConsts;
ProjPackCommon, FppkgHelper, IdePackagerStrConsts;
type
TLazPackage = class;
TPkgFile = class;
TBasePackageEditor = class;
TPkgDependency = class;
TPackageUpdatePolicy = (
@ -106,37 +102,6 @@ type
{ TPkgFile }
type
TPFComponentBaseClass = (
pfcbcNone, // unknown
pfcbcForm, // is TForm
pfcbcFrame, // is TFrame
pfcbcDataModule,// is TDataModule
pfcbcCustomForm,// is TCustomForm (not TForm)
pfcbcOther // is a designer base class, see ResourceBaseClassname
);
const
PFComponentBaseClassNames: array[TPFComponentBaseClass] of string = (
'None',
'Form',
'Frame',
'DataModule',
'CustomForm',
'Other'
);
DefaultResourceBaseClassnames: array[TPFComponentBaseClass] of string = (
'',
'TForm',
'TFrame',
'TDataModule',
'TCustomForm',
''
);
function StrToComponentBaseClass(const s: string): TPFComponentBaseClass;
function GetComponentBaseClass(aClass: TClass): TPFComponentBaseClass;
type
TPkgFileFlag = (
pffHasRegisterProc, // file is unit and has a 'register' procedure
@ -536,7 +501,6 @@ type
FMissing: boolean;
FModifiedLock: integer;
FOutputStateFile: string;
FPackageEditor: TBasePackageEditor;
FPOOutputDirectory: string;
FProvides: TStrings;
fPublishOptions: TPublishPackageOptions;
@ -579,7 +543,6 @@ type
procedure SetPOOutputDirectory(const AValue: string);
procedure SetEnableI18N(const AValue: boolean);
procedure SetRegistered(const AValue: boolean);
procedure SetPackageEditor(const AValue: TBasePackageEditor);
procedure SetPackageType(const AValue: TLazPackageType);
procedure SetStorePathDelim(const AValue: TPathDelimSwitch);
procedure SetUseLegacyLists(const AUseLegacyLists: Boolean);
@ -746,7 +709,6 @@ type
property DefineTemplates: TLazPackageDefineTemplates read FDefineTemplates
write FDefineTemplates;
property Description: string read FDescription write SetDescription;
property Editor: TBasePackageEditor read FPackageEditor write SetPackageEditor;
property EnableI18N: Boolean read FEnableI18N write SetEnableI18N;
property EnableI18NForLFM: boolean read FEnableI18NForLFM write SetEnableI18NForLFM;
property FileReadOnly: boolean read FFileReadOnly write SetFileReadOnly;
@ -791,19 +753,6 @@ type
PLazPackage = ^TLazPackage;
{ TBasePackageEditor }
TBasePackageEditor = class(TForm)
protected
function GetLazPackage: TLazPackage; virtual;
procedure SetLazPackage(const AValue: TLazPackage); virtual; abstract;
public
function CanCloseEditor: TModalResult; virtual; abstract;
procedure UpdateAll(Immediately: boolean = false); virtual; abstract;
property LazPackage: TLazPackage read GetLazPackage write SetLazPackage;
end;
const
LazPkgXMLFileVersion = 5;
AutoUpdateNames: array[TPackageUpdatePolicy] of string = (
@ -1107,29 +1056,6 @@ begin
end;
end;
function StrToComponentBaseClass(const s: string): TPFComponentBaseClass;
begin
for Result:=low(TPFComponentBaseClass) to high(TPFComponentBaseClass) do
if SysUtils.CompareText(PFComponentBaseClassNames[Result],s)=0 then exit;
Result:=pfcbcNone;
end;
function GetComponentBaseClass(aClass: TClass): TPFComponentBaseClass;
begin
Result:=pfcbcNone;
if aClass=nil then exit;
if aClass.InheritsFrom(TForm) then
Result:=pfcbcForm
else if aClass.InheritsFrom(TFrame) then
Result:=pfcbcFrame
else if aClass.InheritsFrom(TDataModule) then
Result:=pfcbcDataModule
else if aClass.InheritsFrom(TCustomForm) then
Result:=pfcbcCustomForm
else
Result:=pfcbcOther;
end;
function CompareLazPackageID(Data1, Data2: Pointer): integer;
var
Pkg1: TLazPackageID absolute Data1;
@ -2600,8 +2526,6 @@ begin
PublishOptions.Modified:=false;
CompilerOptions.Modified:=false;
end;
if Modified and (Editor<>nil) then
Editor.UpdateAll(false);
end;
procedure TLazPackage.SetName(const NewName: TComponentName);
@ -2612,12 +2536,6 @@ begin
Modified:=true;
end;
procedure TLazPackage.SetPackageEditor(const AValue: TBasePackageEditor);
begin
if FPackageEditor=AValue then exit;
FPackageEditor:=AValue;
end;
procedure TLazPackage.SetPackageType(const AValue: TLazPackageType);
begin
if FPackageType=AValue then exit;
@ -4650,13 +4568,6 @@ begin
inherited Destroy;
end;
{ TBasePackageEditor }
function TBasePackageEditor.GetLazPackage: TLazPackage;
begin
Result:=nil;
end;
{ TPublishPackageOptions }
procedure TPublishPackageOptions.DoOnModifyChange;

View File

@ -64,7 +64,7 @@ uses
EnvironmentOpts, LazConf, TransferMacros, IDEProcs, SearchPathProcs,
ParsedCompilerOpts, CompilerOptions, FppkgHelper,
// IdePackager
IdePackagerStrConsts, PackageLinks, PackageDefs, PkgSysBasePkgs;
IdePackagerStrConsts, PackageLinks, PackageDefs, PkgSysBasePkgs, EditablePackage;
const
MakefileCompileVersion = 2;
@ -123,10 +123,10 @@ type
TLazPkgGraphBuildItem = class(TComponent)
private
FLazPackage: TLazPackage;
FLazPackage: TEditablePackage;
fTools: TFPList; // list of TExternalTools
function GetTools(Index: integer): TAbstractExternalTool;
procedure SetLazPackage(AValue: TLazPackage);
procedure SetLazPackage(AValue: TEditablePackage);
protected
procedure Notification(AComponent: TComponent; Operation: TOperation);
override;
@ -140,7 +140,7 @@ type
function GetFirstOrDummy: TAbstractExternalTool;
function GetLastOrDummy: TAbstractExternalTool;
property Tools[Index: integer]: TAbstractExternalTool read GetTools; default;
property LazPackage: TLazPackage read FLazPackage write SetLazPackage;
property LazPackage: TEditablePackage read FLazPackage write SetLazPackage;
end;
{ TLazPkgGraphExtToolData }
@ -191,8 +191,11 @@ type
private
FAbortRegistration: boolean;
fChanged: boolean;
FCodeToolsPackage: TLazPackage;
FErrorMsg: string;
FItems: TFPList; // unsorted list of TLazPackage
FLazarusBasePackages: TFPList;
// Lazarus Base Packages
FCodeToolsPackage: TLazPackage;
FFCLPackage: TLazPackage;
FBuildIntfPackage: TLazPackage;
FIDEIntfPackage: TLazPackage;
@ -204,11 +207,12 @@ type
FLazDebuggerGdbmiPackage: TLazPackage;
FIdeDebuggerPackage: TLazPackage;
FIdeConfigPackage: TLazPackage;
FItems: TFPList; // unsorted list of TLazPackage
FLazarusBasePackages: TFPList;
FLazUtilsPackage: TLazPackage;
FLCLBasePackage: TLazPackage;
FLCLPackage: TLazPackage;
FSynEditPackage: TLazPackage;
FLazControlsPackage: TLazPackage;
// Events
FOnAddPackage: TPkgAddedEvent;
FOnBeforeCompilePackages: TOnBeforeCompilePackages;
FOnBeginUpdate: TNotifyEvent;
@ -229,17 +233,15 @@ type
FSrcBasePackages: TStringListUTF8Fast;
FSrcBasePackagesFilename: string;
FSrcBasePackagesFileChangeStep: integer;
FSynEditPackage: TLazPackage;
FLazControlsPackage: TLazPackage;
FTree: TAVLTree; // sorted tree of TLazPackage
FUpdateLock: integer;
FLockedChangeStamp: int64;
FHasCompiledFpmakePackages: Boolean;
FVerbosity: TPkgVerbosityFlags;
FFindFileCache: TLazPackageGraphFileCache;
function CreateDefaultPackage: TLazPackage;
function CreateDefaultPackage: TEditablePackage;
function GetCount: Integer;
function GetPackages(Index: integer): TLazPackage;
function GetPackages(Index: integer): TEditablePackage;
procedure DoDependencyChanged(Dependency: TPkgDependency);
procedure SetRegistrationPackage(const AValue: TLazPackage);
procedure UpdateBrokenDependenciesToPackage(APackage: TLazPackage);
@ -248,7 +250,7 @@ type
function DeleteAmbiguousFiles(const Filename: string): TModalResult;
procedure AddMessage(TheUrgency: TMessageLineUrgency; const Msg, Filename: string);
function OutputDirectoryIsWritable(APackage: TLazPackage; Directory: string;
Verbose: boolean): boolean;
Verbose: boolean): boolean;
function GetPackageCompilerParams(APackage: TLazPackage): TStrings;
function CheckIfCurPkgOutDirNeedsCompile(APackage: TLazPackage;
CheckDependencies, SkipDesignTimePackages, GroupCompile: boolean;
@ -289,8 +291,8 @@ type
function MacroFunctionCTPkgIncPath(Data: Pointer): boolean;
function MacroFunctionCTPkgName(Data: Pointer): boolean;
function MacroFunctionCTPkgOutDir(Data: Pointer): boolean;
function GetPackageFromMacroParameter(const TheID: string;
out APackage: TLazPackage): boolean;
function GetPackageFromMacroParameter(const TheID: string; out
APackage: TLazPackage): boolean;
function SrcEditFileIsModified(const SrcFilename: string): boolean;
public
// searching
@ -335,8 +337,8 @@ type
Flags: TFindPackageFlags): TAVLTreeNode;
function FindOpenPackage(Dependency: TPkgDependency;
Flags: TFindPackageFlags): TLazPackage;
function FindPackageWithName(const PkgName: string;
IgnorePackage: TLazPackage): TLazPackage;
function FindPackageWithName(const PkgName: string; IgnorePackage: TLazPackage
): TLazPackage;
function FindPackageWithFilename(const TheFilename: string): TLazPackage;
function FindPackageWithID(PkgID: TLazPackageID): TLazPackage;
function FindPackageWithIDMask(PkgIDMask: TLazPackageID): TLazPackage;
@ -397,14 +399,13 @@ type
procedure ConsistencyCheck;
public
// packages handling
function CreateNewPackage(const Prefix: string): TLazPackage;
function CreateNewPackage(const Prefix: string): TEditablePackage;
procedure AddPackage(APackage: TLazPackage);
procedure ReplacePackage(var OldPackage: TLazPackage; NewPackage: TLazPackage);
procedure ClosePackage(APackage: TLazPackage);
procedure CloseUnneededPackages;
procedure ChangePackageID(APackage: TLazPackage;
const NewName: string; NewVersion: TPkgVersion;
RenameDependencies, RenameMacros: boolean);
procedure ChangePackageID(APackage: TLazPackage; const NewName: string;
NewVersion: TPkgVersion; RenameDependencies, RenameMacros: boolean);
function SavePackageCompiledState(APackage: TLazPackage;
const CompilerFilename: string; CompilerParams: TStrings;
Complete, MainPPUExists, ShowAbort: boolean): TModalResult;
@ -463,8 +464,7 @@ type
procedure RegisterComponentsHandler(const Page: string;
ComponentClasses: array of TComponentClass);
procedure RegistrationError(const Msg: string);
procedure RegisterStaticPackage(APackage: TLazPackage;
RegisterProc: TRegisterProc);
procedure RegisterStaticPackage(APackage: TLazPackage; RegisterProc: TRegisterProc);
procedure CallRegisterProc(RegisterProc: TRegisterProc);
public
// dependency handling
@ -488,7 +488,7 @@ type
property QuietRegistration: boolean read FQuietRegistration
write FQuietRegistration;
property ErrorMsg: string read FErrorMsg write FErrorMsg;
property Packages[Index: integer]: TLazPackage read GetPackages; default; // see Count for the number
property Packages[Index: integer]: TEditablePackage read GetPackages; default; // see Count for the number
property UpdateLock: integer read FUpdateLock;
property Verbosity: TPkgVerbosityFlags read FVerbosity write FVerbosity;
@ -935,7 +935,7 @@ begin
Result:=TAbstractExternalTool(fTools[Index]);
end;
procedure TLazPkgGraphBuildItem.SetLazPackage(AValue: TLazPackage);
procedure TLazPkgGraphBuildItem.SetLazPackage(AValue: TEditablePackage);
begin
if FLazPackage=AValue then Exit;
if FLazPackage<>nil then
@ -1016,9 +1016,9 @@ begin
if Assigned(OnDependencyModified) then OnDependencyModified(Dependency);
end;
function TLazPackageGraph.GetPackages(Index: integer): TLazPackage;
function TLazPackageGraph.GetPackages(Index: integer): TEditablePackage;
begin
Result:=TLazPackage(FItems[Index]);
Result:=TEditablePackage(FItems[Index]);
end;
procedure TLazPackageGraph.SetRegistrationPackage(const AValue: TLazPackage);
@ -1030,8 +1030,7 @@ begin
RegisterNoIconProc:=@RegisterNoIconGlobalHandler;
end;
procedure TLazPackageGraph.UpdateBrokenDependenciesToPackage(
APackage: TLazPackage);
procedure TLazPackageGraph.UpdateBrokenDependenciesToPackage(APackage: TLazPackage);
var
ANode: TAVLTreeNode;
Dependency: TPkgDependency;
@ -1055,10 +1054,9 @@ function TLazPackageGraph.OpenDependencyWithPackageLink(
): TModalResult;
var
AFilename: String;
NewPackage: TLazPackage;
NewPackage, OldPackage: TLazPackage;
XMLConfig: TXMLConfig;
Code: TCodeBuffer;
OldPackage: TLazPackage;
begin
NewPackage:=nil;
XMLConfig:=nil;
@ -1084,7 +1082,7 @@ begin
PkgLink.LPKFileDate:=FileDateToDateTimeDef(FileAgeUTF8(AFilename));
PkgLink.LPKFileDateValid:=true;
XMLConfig:=TXMLConfig.Create(nil);
NewPackage:=TLazPackage.Create;
NewPackage:=TEditablePackage.Create;
NewPackage.BeginUpdate('TLazPackageGraph.OpenDependencyWithPackageLink');
NewPackage.Filename:=AFilename;
NewPackage.OnModifySilently := @PkgModify;
@ -1189,8 +1187,7 @@ begin
Result:=true;
end;
function TLazPackageGraph.GetPackageCompilerParams(APackage: TLazPackage
): TStrings;
function TLazPackageGraph.GetPackageCompilerParams(APackage: TLazPackage): TStrings;
begin
Result:=APackage.CompilerOptions.MakeCompilerParams(
APackage.CompilerOptions.DefaultMakeOptionsFlags+[ccloAbsolutePaths]);
@ -1527,7 +1524,7 @@ begin
NextNode:=FTree.FindSuccessor(ANode);
if (NextNode=nil)
or (SysUtils.CompareText(TLazPackage(ANode.Data).Name,
TLazPackage(NextNode.Data).Name)<>0)
TLazPackage(NextNode.Data).Name)<>0)
then exit;
Result:=NextNode;
end;
@ -1535,12 +1532,12 @@ end;
function TLazPackageGraph.FindNodeOfDependency(Dependency: TPkgDependency;
Flags: TFindPackageFlags): TAVLTreeNode;
var
CurPkg: TLazPackage;
CurPkg: TEditablePackage;
begin
// search in all packages with the same name
Result:=FindLowestPkgNodeByName(Dependency.PackageName);
while Result<>nil do begin
CurPkg:=TLazPackage(Result.Data);
CurPkg:=TEditablePackage(Result.Data);
// check version
if (not (fpfIgnoreVersion in Flags))
and (not Dependency.IsCompatible(CurPkg)) then begin
@ -1616,8 +1613,7 @@ begin
end;
function TLazPackageGraph.FindPackageProvidingName(
FirstDependency: TPkgDependency;
const Name: string): TLazPackage;
FirstDependency: TPkgDependency; const Name: string): TLazPackage;
function Search(ADependency: TPkgDependency; out Found: TLazPackage): boolean;
begin
@ -1770,8 +1766,8 @@ begin
end;
function TLazPackageGraph.FindUnit(StartPackage: TLazPackage;
const TheUnitName: string;
WithRequiredPackages, IgnoreDeleted: boolean): TPkgFile;
const TheUnitName: string; WithRequiredPackages, IgnoreDeleted: boolean
): TPkgFile;
var
ADependency: TPkgDependency;
ARequiredPackage: TLazPackage;
@ -1901,8 +1897,7 @@ begin
end;
end;
function TLazPackageGraph.FindPackageWithFilename(const TheFilename: string
): TLazPackage;
function TLazPackageGraph.FindPackageWithFilename(const TheFilename: string): TLazPackage;
var
Cnt: Integer;
i: Integer;
@ -1977,10 +1972,10 @@ begin
end;
end;
function TLazPackageGraph.CreateNewPackage(const Prefix: string): TLazPackage;
function TLazPackageGraph.CreateNewPackage(const Prefix: string): TEditablePackage;
begin
BeginUpdate(true);
Result:=TLazPackage.CreateAndClear;
Result:=TEditablePackage.CreateAndClear;
Result.OnModifySilently:=@PkgModify;
Result.Name:=CreateUniquePkgName(Prefix,nil);
AddPackage(Result);
@ -2232,9 +2227,9 @@ begin
end;
end;
function TLazPackageGraph.CreateDefaultPackage: TLazPackage;
function TLazPackageGraph.CreateDefaultPackage: TEditablePackage;
begin
Result:=TLazPackage.CreateAndClear;
Result:=TEditablePackage.CreateAndClear;
with Result do begin
Missing:=true;
UserReadOnly:=true;
@ -2401,7 +2396,8 @@ begin
// save flags
OldInstalled:=OldPackage.Installed;
OldAutoInstall:=OldPackage.AutoInstall;
OldEditor:=OldPackage.Editor;
Assert(OldPackage is TEditablePackage, 'TLazPackageGraph.ReplacePackage: OldPackage is not TEditablePackage');
OldEditor:=TEditablePackage(OldPackage).Editor;
if OldEditor<>nil then
OldEditor.LazPackage:=nil;
// migrate components
@ -2418,7 +2414,7 @@ begin
// add package to graph
AddPackage(NewPackage);
if OldEditor<>nil then
OldEditor.LazPackage:=NewPackage;
OldEditor.LazPackage:=TEditablePackage(NewPackage);
EndUpdate;
end;
@ -2637,7 +2633,8 @@ end;
procedure TLazPackageGraph.MarkNeededPackages;
var
StackPtr, i: Integer;
Pkg, RequiredPackage: TLazPackage;
Pkg: TLazPackage;
RequiredPackage: TLazPackage;
Dependency: TPkgDependency;
PkgStack: PLazPackage;
begin
@ -2989,8 +2986,8 @@ begin
Result.Insert(0,APackage);
end;
function TLazPackageGraph.FindNotInstalledRegisterUnits(
APackage: TLazPackage; FirstDependency: TPkgDependency): TFPList;
function TLazPackageGraph.FindNotInstalledRegisterUnits(APackage: TLazPackage;
FirstDependency: TPkgDependency): TFPList;
// returns the list of required units (TPkgFile) with a Register procedure,
// that are not installed in the IDE
@ -3132,7 +3129,7 @@ var
PkgFile2:=UnitsTreeOfPkg2.FindPkgFileWithUnitName(Pkg1.Name);
if PkgFile2<>nil then begin
File1:=PkgFile2;
ConflictPkg:=Pkg1;
ConflictPkg:=TLazPackage(Pkg1);
Result:=true;
exit;
end;
@ -3151,7 +3148,7 @@ var
// check if a unit of Pkg1 has the same name as Pkg2
if SysUtils.CompareText(PkgFile1.Unit_Name,Pkg2.Name)=0 then begin
File1:=PkgFile1;
ConflictPkg:=Pkg2;
ConflictPkg:=TLazPackage(Pkg2);
Result:=true;
exit;
end;
@ -3198,8 +3195,8 @@ end;
function TLazPackageGraph.FindFPCConflictUnit(APackage: TLazPackage;
FirstDependency: TPkgDependency; const Directory: string;
OnFindFPCUnit: TFindFPCUnitEvent;
var File1: TPkgFile; var ConflictPkg: TLazPackage): boolean;
OnFindFPCUnit: TFindFPCUnitEvent; var File1: TPkgFile;
var ConflictPkg: TLazPackage): boolean;
function CheckUnitName(const AnUnitName: string): boolean;
var Filename: string;
@ -3225,7 +3222,7 @@ function TLazPackageGraph.FindFPCConflictUnit(APackage: TLazPackage;
Pkg1.Flags:=Pkg1.Flags+[lpfVisited];
Result:=CheckUnitName(Pkg1.Name);
if Result then begin
ConflictPkg:=Pkg1;
ConflictPkg:=TLazPackage(Pkg1);
exit;
end;
Cnt:=Pkg1.FileCount;
@ -4223,7 +4220,7 @@ begin
CurPkg:=TLazPackage(PkgList[i]);
if CurPkg.AutoUpdate=pupManually then continue;
BuildItem:=TLazPkgGraphBuildItem.Create(nil);
BuildItem.LazPackage:=CurPkg;
BuildItem.LazPackage:=TEditablePackage(CurPkg);
BuildItems.Add(BuildItem);
Result:=CompilePackage(CurPkg,Flags,false,BuildItem);
if Result<>mrOk then exit;
@ -5940,7 +5937,7 @@ end;
function TLazPackageGraph.GetBrokenDependenciesWhenChangingPkgID(
APackage: TLazPackage; const NewName: string; NewVersion: TPkgVersion
): TFPList;
): TFPList;
var
Dependency: TPkgDependency;
begin
@ -6133,7 +6130,7 @@ begin
// check if package is open, installed or will be installed
if (APackage.Installed<>pitNope) or (APackage.AutoInstall<>pitNope)
or APackage.Modified
or (APackage.Editor<>nil)
or ( (APackage is TEditablePackage) and (TEditablePackage(APackage).Editor<>nil) )
or (APackage.HoldPackageCount>0) then
begin
exit;
@ -6148,8 +6145,8 @@ begin
Result:=false;
end;
function TLazPackageGraph.PackageCanBeReplaced(
OldPackage, NewPackage: TLazPackage): boolean;
function TLazPackageGraph.PackageCanBeReplaced(OldPackage,
NewPackage: TLazPackage): boolean;
begin
if SysUtils.CompareText(OldPackage.Name,NewPackage.Name)<>0 then
RaiseGDBException('TLazPackageGraph.PackageCanBeReplaced');
@ -6543,7 +6540,7 @@ end;
procedure TLazPackageGraph.OpenInstalledDependency(Dependency: TPkgDependency;
InstallType: TPackageInstallType; var Quiet: boolean);
var
BrokenPackage: TLazPackage;
BrokenPackage: TEditablePackage;
CurResult: TModalResult;
IsBasePkg: Boolean;
begin
@ -6552,7 +6549,7 @@ begin
// a valid lpk file of the installed package can not be found
IsBasePkg:=IsCompiledInBasePackage(Dependency.PackageName);
// -> create a broken package
BrokenPackage:=TLazPackage.CreateAndClear;
BrokenPackage:=TEditablePackage.CreateAndClear;
with BrokenPackage do begin
BeginUpdate('TLazPackageGraph.OpenInstalledDependency');
try
@ -6672,7 +6669,7 @@ end;
procedure TLazPackageGraph.IteratePackages(Flags: TFindPackageFlags;
Event: TIteratePackagesEvent);
var
CurPkg: TLazPackage;
CurPkg: TEditablePackage;
i: Integer;
begin
// iterate opened packages
@ -6698,11 +6695,11 @@ procedure TLazPackageGraph.IteratePackagesSorted(Flags: TFindPackageFlags;
Event: TIteratePackagesEvent);
var
ANode: TAVLTreeNode;
CurPkg: TLazPackage;
CurPkg: TEditablePackage;
begin
ANode:=FTree.FindLowest;
while ANode<>nil do begin
CurPkg:=TLazPackage(ANode.Data);
CurPkg:=TEditablePackage(ANode.Data);
// check installed packages
if ((fpfSearchInInstalledPckgs in Flags) and (CurPkg.Installed<>pitNope))
// check autoinstall packages

View File

@ -55,7 +55,7 @@ uses
FPCAdds, LazUtilities, FileUtil, LazFileUtils, LazFileCache, LazMethodList,
LazLoggerBase, LazTracer, FileReferenceList, LazUTF8, Laz2_XMLCfg, Maps, AvgLvlTree,
// BuildIntf
BaseIDEIntf, ProjectIntf, PackageIntf, MacroIntf, MacroDefIntf,
BaseIDEIntf, ProjPackIntf, ProjectIntf, PackageIntf, MacroIntf, MacroDefIntf,
CompOptsIntf, IDEOptionsIntf,
// IDEIntf
PropEdits, UnitResources, EditorSyntaxHighlighterDef, InputHistory, SrcEditorIntf,

View File

@ -66,7 +66,7 @@ uses
// Codetools
CodeToolsStructs, CodeToolManager, FileProcs, CodeCache, CodeTree, FindDeclarationTool,
// BuildIntf
ProjectIntf, PackageIntf, PackageLinkIntf, PackageDependencyIntf,
ProjPackIntf, ProjectIntf, PackageIntf, PackageLinkIntf, PackageDependencyIntf,
// IDEIntf
IDECommands, IDEDialogs, IDEImagesIntf, LazIDEIntf, ToolBarIntf,
IdeIntfStrConsts, MenuIntf, FormEditingIntf, SrcEditorIntf, InputHistory,

View File

@ -46,8 +46,8 @@ uses
BasicCodeTools, CodeToolsStructs, CodeToolManager, FileProcs, DefineTemplates,
CodeCache, CodeTree, FindDeclarationTool, KeywordFuncLists,
// BuildIntf
NewItemIntf, ProjectIntf, PackageIntf, PackageDependencyIntf, IDEExternToolIntf,
ComponentReg, BaseIDEIntf,
NewItemIntf, ProjPackIntf, ProjectIntf, PackageIntf, PackageDependencyIntf,
IDEExternToolIntf, ComponentReg, BaseIDEIntf,
// IdeIntf
IDEDialogs, PropEdits, IDEMsgIntf, LazIDEIntf, MenuIntf, IDEWindowIntf, FormEditingIntf,
IdeIntfStrConsts, ObjectInspector, SrcEditorIntf, EditorSyntaxHighlighterDef,

View File

@ -50,6 +50,8 @@ uses
CodeToolManager, FileProcs,
// LazControls
ListFilterEdit,
// BuildIntf
ProjPackIntf,
// IdeIntf
IdeIntfStrConsts, IDEWindowIntf, IDEImagesIntf, TextTools,
// IdeConfig

View File

@ -7,28 +7,28 @@ object AddFileToAPackageDialog: TAddFileToAPackageDialog
Caption = 'AddFileToAPackageDialog'
ClientHeight = 272
ClientWidth = 469
OnClose = AddFileToAPackageDlgClose
OnCreate = FormCreate
Position = poScreenCenter
ShowHint = True
LCLVersion = '2.1.0.0'
LCLVersion = '4.99.0.0'
OnClose = AddFileToAPackageDlgClose
OnCreate = FormCreate
object FileGroupBox: TGroupBox
Left = 6
Height = 54
Height = 63
Top = 6
Width = 457
Align = alTop
AutoSize = True
BorderSpacing.Around = 6
Caption = 'FileGroupBox'
ClientHeight = 36
ClientWidth = 453
ClientHeight = 43
ClientWidth = 455
TabOrder = 0
object FileNameEdit: TEdit
Left = 6
Height = 20
Height = 31
Top = 6
Width = 439
Width = 441
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Around = 6
ReadOnly = True
@ -38,44 +38,44 @@ object AddFileToAPackageDialog: TAddFileToAPackageDialog
end
object PackagesGroupBox: TGroupBox
Left = 6
Height = 77
Top = 66
Height = 90
Top = 75
Width = 457
Align = alTop
Anchors = [akLeft, akRight]
AutoSize = True
BorderSpacing.Around = 6
Caption = 'PackagesGroupBox'
ClientHeight = 59
ClientWidth = 453
ClientHeight = 70
ClientWidth = 455
TabOrder = 1
object PackagesComboBox: TComboBox
Left = 6
Height = 23
Height = 31
Top = 6
Width = 441
Width = 443
Align = alTop
BorderSpacing.Around = 6
ItemHeight = 14
ItemHeight = 0
TabOrder = 0
Text = 'PackagesComboBox'
end
object ShowAllCheckBox: TCheckBox
Left = 6
Height = 18
Top = 35
Width = 441
Height = 21
Top = 43
Width = 443
Align = alTop
BorderSpacing.Around = 6
Caption = 'ShowAllCheckBox'
OnClick = ShowAllCheckBoxClick
TabOrder = 1
OnClick = ShowAllCheckBoxClick
end
end
object BtnPanel: TButtonPanel
Left = 6
Height = 26
Top = 240
Height = 34
Top = 232
Width = 457
OKButton.Name = 'OKButton'
OKButton.DefaultCaption = True

View File

@ -47,7 +47,7 @@ uses
// IdeIntf
IdeIntfStrConsts, IDEWindowIntf, PackageIntf,
// IDE
LazarusIDEStrConsts, PackageDefs, PackageSystem, EnvironmentOpts;
LazarusIDEStrConsts, PackageDefs, EditablePackage, PackageSystem, EnvironmentOpts;
type
@ -148,7 +148,8 @@ begin
// extend unit and include search path
if not APackage.ExtendUnitSearchPath(NewUnitPaths) then exit;
if not APackage.ExtendIncSearchPath(NewIncPaths) then exit;
if APackage.Editor<>nil then APackage.Editor.UpdateAll(true);
if (APackage is TEditablePackage) and (TEditablePackage(APackage).Editor<>nil) then
TEditablePackage(APackage).Editor.UpdateAll(true);
finally
APackage.EndUpdate('TAddFileToAPackageDialog.OkButtonClick');
end;

View File

@ -44,13 +44,18 @@ uses
MemCheck,
{$ENDIF}
TypInfo, Classes, SysUtils,
// LazUtils
LazFileUtils, LazLoggerBase,
// LCL
Forms, ComCtrls,
// BuildIntf
PackageIntf, BaseIDEIntf,
// IdeIntf
MenuIntf, IdeIntfStrConsts,
// IdeConfig
EnvironmentOpts, CompilerOptions,
LazarusIDEStrConsts,
PackageDefs, PackageSystem, Project;
// IDE
LazarusIDEStrConsts, PackageDefs, EditablePackage, PackageSystem, Project;
type
{ TBasePkgManager }
@ -110,15 +115,15 @@ type
procedure ProjectInspectorCopyMoveFiles(Sender: TObject); virtual; abstract;
// package editors
function CanClosePackageEditor(APackage: TLazPackage): TModalResult; virtual; abstract;
function CanClosePackageEditor(APackage: TEditablePackage): TModalResult; virtual; abstract;
function CanCloseAllPackageEditors: TModalResult; virtual; abstract;
function DoNewPackage: TModalResult; virtual; abstract;
function DoOpenPackage(APackage: TLazPackage; Flags: TPkgOpenFlags;
function DoOpenPackage(APackage: TEditablePackage; Flags: TPkgOpenFlags;
ShowAbort: boolean): TModalResult; virtual; abstract;
function DoSavePackage(APackage: TLazPackage;
function DoSavePackage(APackage: TEditablePackage;
Flags: TPkgSaveFlags): TModalResult; virtual; abstract;
function DoClosePackageEditor(APackage: TLazPackage): TModalResult; virtual; abstract;
function DoClosePackageEditor(APackage: TEditablePackage): TModalResult; virtual; abstract;
function DoCloseAllPackageEditors: TModalResult; virtual; abstract;
function AddPackageDependency(APackage: TLazPackage; const ReqPackage: string;
OnlyTestIfPossible: boolean = false): TModalResult; virtual; abstract;

View File

@ -38,7 +38,7 @@ uses
// IdeIntf
PackageIntf,
// IDE
PackageSystem, PackageDefs, LazarusIDEStrConsts;
PackageSystem, PackageDefs, EditablePackage, LazarusIDEStrConsts;
type
@ -55,13 +55,13 @@ type
function GetPackageName: string;
end;
function ShowNewPkgComponentDialog(out aPackage: TLazPackage): TModalResult;
function ShowNewPkgComponentDialog(out aPackage: TEditablePackage): TModalResult;
implementation
{$R *.lfm}
function ShowNewPkgComponentDialog(out aPackage: TLazPackage): TModalResult;
function ShowNewPkgComponentDialog(out aPackage: TEditablePackage): TModalResult;
var
NewPkgComponentDialog: TNewPkgComponentDialog;
PkgName: String;
@ -73,7 +73,7 @@ begin
if Result<>mrOk then exit;
PkgName:=NewPkgComponentDialog.GetPackageName;
if PkgName<>'' then
aPackage:=PackageGraph.FindPackageWithName(PkgName,nil);
aPackage:=TEditablePackage(PackageGraph.FindPackageWithName(PkgName,nil));
finally
NewPkgComponentDialog.Free;
end;

View File

@ -41,7 +41,7 @@ uses
// IdeIntf
IDEWindowIntf, PackageIntf,
// IDE
PackageDefs, LazarusIDEStrConsts, PackageSystem;
LazarusIDEStrConsts, PackageDefs, EditablePackage, PackageSystem;
type
@ -60,19 +60,19 @@ type
procedure PkgListViewKeyPress(Sender: TObject; var Key: char);
procedure PkgListViewSelectItem(Sender: TObject; {%H-}Item: TListItem; {%H-}Selected: Boolean);
private
Package: TLazPackage;
Package: TEditablePackage;
public
procedure UpdateSelection;
procedure UpdatePackageList;
end;
function ShowOpenLoadedPkgDlg(out OpenPackage: TLazPackage): TModalResult;
function ShowOpenLoadedPkgDlg(out OpenPackage: TEditablePackage): TModalResult;
implementation
{$R *.lfm}
function ShowOpenLoadedPkgDlg(out OpenPackage: TLazPackage): TModalResult;
function ShowOpenLoadedPkgDlg(out OpenPackage: TEditablePackage): TModalResult;
var
Dlg: TOpenLoadedPackagesDlg;
begin
@ -139,7 +139,7 @@ procedure TOpenLoadedPackagesDlg.OpenButtonClick(Sender: TObject);
begin
if Assigned(PkgListView.Selected) then
begin
Package:=PackageGraph.FindPackageWithName(PkgListView.Selected.Caption,nil);
Package:=TEditablePackage(PackageGraph.FindPackageWithName(PkgListView.Selected.Caption,nil));
if Assigned(Package) then
begin
ModalResult:=mrOk;

View File

@ -52,7 +52,7 @@ uses
// IdeConfig
EnvironmentOpts, SearchPathProcs, ParsedCompilerOpts, CompilerOptions,
// IDE
MainBase, DialogProcs, LazarusIDEStrConsts, IDEDefs,
MainBase, DialogProcs, LazarusIDEStrConsts, IDEDefs, EditablePackage,
PackageSystem, PackageDefs, AddToPackageDlg, AddPkgDependencyDlg, ComponentPalette,
AddFPMakeDependencyDlg, ProjPackChecks, PkgVirtualUnitEditor, CleanPkgDeps,
MissingPkgFilesDlg, ProjPackFilePropGui, ProjPackEditing, BasePkgManager;
@ -116,25 +116,19 @@ var
type
TOnPkgEvent = function(Sender: TObject; APackage: TLazPackage): TModalResult of object;
TOnAddPkgToProject =
function(Sender: TObject; APackage: TLazPackage;
OnlyTestIfPossible: boolean): TModalResult of object;
TOnCompilePackage =
function(Sender: TObject; APackage: TLazPackage;
CompileClean, CompileRequired: boolean): TModalResult of object;
TOnCreateNewPkgFile =
function(Sender: TObject; Params: TAddToPkgResult): TModalResult of object;
TOnDeleteAmbiguousFiles =
function(Sender: TObject; APackage: TLazPackage;
const Filename: string): TModalResult of object;
TOnFreePkgEditor = procedure(APackage: TLazPackage) of object;
TOnOpenFile =
function(Sender: TObject; const Filename: string): TModalResult of object;
TOnOpenPkgFile =
function(Sender: TObject; PkgFile: TPkgFile): TModalResult of object;
TOnSavePackage =
function(Sender: TObject; APackage: TLazPackage;
SaveAs: boolean): TModalResult of object;
TOnAddPkgToProject = function(Sender: TObject; APackage: TLazPackage;
OnlyTestIfPossible: boolean): TModalResult of object;
TOnCompilePackage = function(Sender: TObject; APackage: TLazPackage;
CompileClean, CompileRequired: boolean): TModalResult of object;
TOnCreateNewPkgFile = function(Sender: TObject; Params: TAddToPkgResult): TModalResult of object;
TOnDeleteAmbiguousFiles = function(Sender: TObject; APackage: TLazPackage;
const Filename: string): TModalResult of object;
TOnFreePkgEditor = procedure(APackage: TEditablePackage) of object;
TOnOpenFile = function(Sender: TObject; const Filename: string): TModalResult of object;
TOnOpenPkgFile = function(Sender: TObject; PkgFile: TPkgFile): TModalResult of object;
TOnOpenPackage = function(Sender: TObject; APackage: TEditablePackage): TModalResult of object;
TOnSavePackage = function(Sender: TObject; APackage: TEditablePackage;
SaveAs: boolean): TModalResult of object;
TIDEPackageOptsDlgAction = (
iodaRead,
@ -265,7 +259,7 @@ type
FIdleConnected: boolean;
FCompiling: boolean;
FCompileDesignTimePkg: boolean;
FLazPackage: TLazPackage;
FLazPackage: TEditablePackage;
FNextSelectedPart: TPENodeData;// select this file/dependency on next update
FFilesNode: TTreeNode;
FRequiredPackagesNode: TTreeNode;
@ -325,7 +319,8 @@ type
procedure AddUserFiles(Filenames: TStrings);
protected
fFlags: TPEFlags;
procedure SetLazPackage(const AValue: TLazPackage); override;
function GetLazPackage: TEditablePackage; override;
procedure SetLazPackage(const AValue: TEditablePackage); override;
property IdleConnected: boolean read FIdleConnected write SetIdleConnected;
public
constructor Create(TheOwner: TComponent); override;
@ -372,7 +367,7 @@ type
procedure EndUpdate;
procedure UpdateAll(Immediately: boolean = false); override;
public
property LazPackage: TLazPackage read FLazPackage write SetLazPackage;
//property LazPackage: TLazPackage read FLazPackage write SetLazPackage;
property SortAlphabetically: boolean read FSortAlphabetically write SetSortAlphabetically;
property ShowDirectoryHierarchy: boolean read FShowDirectoryHierarchy write SetShowDirectoryHierarchy;
property FilesNode: TTreeNode read FFilesNode;
@ -401,7 +396,7 @@ type
FOnGetIDEFileInfo: TGetIDEFileStateEvent;
FOnInstallPackage: TOnPkgEvent;
FOnOpenFile: TOnOpenFile;
FOnOpenPackage: TOnPkgEvent;
FOnOpenPackage: TOnOpenPackage;
FOnOpenPkgFile: TOnOpenPkgFile;
FOnPublishPackage: TOnPkgEvent;
FOnRevertPackage: TOnPkgEvent;
@ -420,15 +415,17 @@ type
function IndexOfPackage(const PkgName: string): integer;
function FindEditor(Pkg: TLazPackage): TPackageEditorForm; overload;
function FindEditor(const PkgName: string): TPackageEditorForm; overload;
function CreateEditor(Pkg: TLazPackage; DoDisableAutoSizing: boolean): TPackageEditorForm;
function OpenEditor(Pkg: TLazPackage; BringToFront: boolean): TPackageEditorForm;
function CreateEditor(Pkg: TEditablePackage; DoDisableAutoSizing: boolean
): TPackageEditorForm;
function OpenEditor(Pkg: TEditablePackage; BringToFront: boolean
): TPackageEditorForm;
function OpenFile(Sender: TObject; const Filename: string): TModalResult;
function OpenPkgFile(Sender: TObject; PkgFile: TPkgFile): TModalResult;
function OpenDependency(Sender: TObject;
Dependency: TPkgDependency): TModalResult;
procedure DoFreeEditor(Pkg: TLazPackage);
procedure DoFreeEditor(Pkg: TEditablePackage);
function CreateNewFile(Sender: TObject; Params: TAddToPkgResult): TModalResult;
function SavePackage(APackage: TLazPackage; SaveAs: boolean): TModalResult;
function SavePackage(APackage: TEditablePackage; SaveAs: boolean): TModalResult;
function RevertPackage(APackage: TLazPackage): TModalResult;
function PublishPackage(APackage: TLazPackage): TModalResult;
function CompilePackage(APackage: TLazPackage;
@ -480,7 +477,7 @@ type
property OnInstallPackage: TOnPkgEvent read FOnInstallPackage
write FOnInstallPackage;
property OnOpenFile: TOnOpenFile read FOnOpenFile write FOnOpenFile;
property OnOpenPackage: TOnPkgEvent read FOnOpenPackage
property OnOpenPackage: TOnOpenPackage read FOnOpenPackage
write FOnOpenPackage;
property OnOpenPkgFile: TOnOpenPkgFile read FOnOpenPkgFile
write FOnOpenPkgFile;
@ -1899,7 +1896,12 @@ begin
end;
end;
procedure TPackageEditorForm.SetLazPackage(const AValue: TLazPackage);
function TPackageEditorForm.GetLazPackage: TEditablePackage;
begin
Result:=FLazPackage;
end;
procedure TPackageEditorForm.SetLazPackage(const AValue: TEditablePackage);
begin
//force editor name change when package name changed!
if (FLazPackage=Nil)
@ -3105,7 +3107,7 @@ begin
if Assigned(SourceEditorManagerIntf) and Assigned(PackageEditingInterface) and Assigned(SourceEditorManagerIntf.ActiveEditor) then
begin
PackageEditingInterface.GetPackageOfSourceEditor(LPackage, SourceEditorManagerIntf.ActiveEditor);
if (LPackage is TLazPackage) and (TLazPackage(LPackage).Editor = Self) then
if (LPackage is TEditablePackage) and (TEditablePackage(LPackage).Editor = Self) then
SelectFileNode(SourceEditorManagerIntf.ActiveEditor.FileName);
end;
end;
@ -3570,9 +3572,10 @@ begin
if Assigned(SourceEditorManagerIntf.ActiveEditor) then
begin
PackageEditingInterface.GetPackageOfSourceEditor(LPackage, SourceEditorManagerIntf.ActiveEditor);
if (LPackage is TLazPackage) and (TLazPackage(LPackage).Editor is TPackageEditorForm) then
if (LPackage is TEditablePackage)
and (TEditablePackage(LPackage).Editor is TPackageEditorForm) then
begin
LForm := TPackageEditorForm(TLazPackage(LPackage).Editor);
LForm := TPackageEditorForm(TEditablePackage(LPackage).Editor);
LForm.SelectFileNode(SourceEditorManagerIntf.ActiveEditor.FileName);
end;
end;
@ -3620,7 +3623,7 @@ begin
Result:=nil;
end;
function TPackageEditors.CreateEditor(Pkg: TLazPackage;
function TPackageEditors.CreateEditor(Pkg: TEditablePackage;
DoDisableAutoSizing: boolean): TPackageEditorForm;
begin
Result:=FindEditor(Pkg);
@ -3645,7 +3648,7 @@ begin
end;
end;
function TPackageEditors.OpenEditor(Pkg: TLazPackage; BringToFront: boolean
function TPackageEditors.OpenEditor(Pkg: TEditablePackage; BringToFront: boolean
): TPackageEditorForm;
begin
Result:=CreateEditor(Pkg,true);
@ -3675,14 +3678,14 @@ end;
function TPackageEditors.OpenDependency(Sender: TObject;
Dependency: TPkgDependency): TModalResult;
var
APackage: TLazPackage;
APackage: TEditablePackage;
begin
Result:=mrCancel;
if PackageGraph.OpenDependency(Dependency,false)=lprSuccess then
begin
if Dependency.DependencyType=pdtLazarus then
begin
APackage:=Dependency.RequiredPackage;
APackage:=TEditablePackage(Dependency.RequiredPackage);
if Assigned(OnOpenPackage) then
Result:=OnOpenPackage(Sender,APackage);
end
@ -3691,7 +3694,7 @@ begin
end;
end;
procedure TPackageEditors.DoFreeEditor(Pkg: TLazPackage);
procedure TPackageEditors.DoFreeEditor(Pkg: TEditablePackage);
begin
if FItems<>nil then
FItems.Remove(Pkg.Editor);
@ -3719,7 +3722,7 @@ begin
Result:=mrCancel;
end;
function TPackageEditors.SavePackage(APackage: TLazPackage;
function TPackageEditors.SavePackage(APackage: TEditablePackage;
SaveAs: boolean): TModalResult;
begin
if Assigned(OnSavePackage) then

View File

@ -49,7 +49,7 @@ uses
IDECommands, PackageIntf, IDEImagesIntf,
// IDE
LazarusIDEStrConsts, IDEOptionDefs, Project, DependencyGraphOptions,
EnvironmentOpts, MainIntf, PackageDefs, PackageSystem, PackageEditor,
EnvironmentOpts, MainIntf, PackageDefs, EditablePackage, PackageSystem, PackageEditor,
CleanPkgDeps;
const
@ -100,13 +100,12 @@ type
ImgIndexUninstallPackage: integer;
ImgIndexCyclePackage: integer;
ImgIndexMissingPackage: integer;
FOnOpenPackage: TOnPkgEvent;
FOnOpenPackage: TOnOpenPackage;
FChangedDuringLock: boolean;
FUpdateLock: integer;
FUpdatingSelection: boolean;
procedure DoLoadedOpts(Sender: TObject);
procedure GraphOptsApplyClicked(AnOpts: TLvlGraphOptions; {%H-}AGraph: TLvlGraph
);
procedure GraphOptsApplyClicked(AnOpts: TLvlGraphOptions; {%H-}AGraph: TLvlGraph);
procedure OpenDependencyOwner(DependencyOwner: TObject);
procedure SetupComponents;
function GetPackageImageIndex(Pkg: TLazPackage; InstallPkgList: TFPList): integer;
@ -132,10 +131,10 @@ type
function FindLvlGraphNodeWithText(const s: string): TLvlGraphNode;
procedure ShowPath(PathList: TFPList);
public
property OnOpenPackage: TOnPkgEvent read FOnOpenPackage write FOnOpenPackage;
property OnOpenPackage: TOnOpenPackage read FOnOpenPackage write FOnOpenPackage;
property OnOpenProject: TOnOpenProject read FOnOpenProject write FOnOpenProject;
property OnUninstallPackage: TOnPkgEvent read FOnUninstallPackage
write FOnUninstallPackage;
write FOnUninstallPackage;
end;
var
@ -171,7 +170,7 @@ begin
Pkg:=GetSelectedPackage;
if Pkg=nil then exit;
if Assigned(OnOpenPackage) then
OnOpenPackage(Self,Pkg);
OnOpenPackage(Self,TEditablePackage(Pkg));
end;
procedure TPkgGraphExplorerDlg.CleanPkgDepsMenuItemClick(Sender: TObject);
@ -206,7 +205,7 @@ begin
if Dependency=nil then continue;
// open package editor
if Assigned(OnOpenPackage) then
OnOpenPackage(Self,Pkg);
OnOpenPackage(Self,TEditablePackage(Pkg));
// remove dependency
PackageGraph.RemoveDependencyFromPackage(Pkg,Dependency,true);
end;
@ -292,7 +291,7 @@ begin
Pkg:=FindPackage(TVNode.Text);
if Pkg=nil then exit;
if Assigned(OnOpenPackage) then
OnOpenPackage(Self,Pkg);
OnOpenPackage(Self,TEditablePackage(Pkg));
end;
procedure TPkgGraphExplorerDlg.PkgTreeViewExpanding(Sender: TObject;
@ -720,9 +719,9 @@ end;
procedure TPkgGraphExplorerDlg.OpenDependencyOwner(DependencyOwner: TObject);
begin
if DependencyOwner is TLazPackage then begin
if DependencyOwner is TEditablePackage then begin
if Assigned(OnOpenPackage) then
OnOpenPackage(Self,TLazPackage(DependencyOwner));
OnOpenPackage(Self,TEditablePackage(DependencyOwner));
end else if DependencyOwner is TProject then begin
if Assigned(OnOpenProject) then
OnOpenProject(Self,TProject(DependencyOwner));

View File

@ -73,8 +73,8 @@ uses
// FCL registration
LazarusPackageIntf,
// IDE
LazarusIDEStrConsts, DialogProcs, MiscOptions,
Project, ProjPackEditing, AddToPackageDlg, PackageDefs, PackageLinks, PackageSystem,
LazarusIDEStrConsts, DialogProcs, MiscOptions, Project, ProjPackEditing,
AddToPackageDlg, PackageDefs, EditablePackage, PackageLinks, PackageSystem,
OpenInstalledPkgDlg, PkgGraphExplorer, BrokenDependenciesDlg,
IDETranslations, BuildLazDialog, NewDialog, FindInFilesDlg,
ProjectInspector, PackageEditor, SourceEditor, ProjPackChecks, AddFileToAPackageDlg,
@ -112,24 +112,24 @@ type
function PackageEditorFindInFiles(Sender: TObject; APackage: TLazPackage): TModalResult;
function PackageEditorInstallPackage(Sender: TObject;
APackage: TLazPackage): TModalResult;
function PackageEditorOpenPackage(Sender: TObject; APackage: TLazPackage): TModalResult;
function PackageEditorOpenPackage(Sender: TObject; APackage: TEditablePackage): TModalResult;
function PackageEditorOpenPkgFile(Sender: TObject; PkgFile: TPkgFile): TModalResult;
function PackageEditorPublishPackage(Sender: TObject; APackage: TLazPackage): TModalResult;
function PackageEditorRevertPackage(Sender: TObject; APackage: TLazPackage): TModalResult;
function PackageEditorSavePackage(Sender: TObject; APackage: TLazPackage;
SaveAs: boolean): TModalResult;
function PackageEditorSavePackage(Sender: TObject; APackage: TEditablePackage;
SaveAs: boolean): TModalResult;
function PackageEditorUninstallPackage(Sender: TObject;
APackage: TLazPackage): TModalResult;
function PackageEditorViewPkgSource(Sender: TObject;
APackage: TLazPackage): TModalResult;
procedure AfterWritePackage(Sender: TObject; Restore: boolean);
procedure BeforeReadPackage(Sender: TObject);
procedure PackageEditorFreeEditor(APackage: TLazPackage);
procedure PackageEditorFreeEditor(APackage: TEditablePackage);
function PackageGraphCheckInterPkgFiles(IDEObject: TObject;
PkgList: TFPList; out FilesChanged: boolean): boolean;
// package graph
function PackageGraphExplorerOpenPackage(Sender: TObject;
APackage: TLazPackage): TModalResult;
APackage: TEditablePackage): TModalResult;
function PackageGraphExplorerOpenProject(Sender: TObject;
AProject: TProject): TModalResult;
function PackageGraphExplorerUninstallPackage(Sender: TObject;
@ -188,7 +188,7 @@ type
{$IFDEF UseLRS}
FIconLRSSource: string;
{$ENDIF}
function DoShowSavePackageAsDialog(APackage: TLazPackage): TModalResult;
function DoShowSavePackageAsDialog(APackage: TEditablePackage): TModalResult;
function CheckPackageGraphForCompilation(APackage: TLazPackage;
FirstDependency: TPkgDependency;
const Directory: string;
@ -309,12 +309,12 @@ type
procedure ProjectInspectorCopyMoveFiles(Sender: TObject); override;
// package editors
function CanClosePackageEditor(APackage: TLazPackage): TModalResult; override;
function CanClosePackageEditor(APackage: TEditablePackage): TModalResult; override;
function CanCloseAllPackageEditors: TModalResult; override;
function DoOpenPkgFile(PkgFile: TPkgFile): TModalResult;
function DoNewPackage: TModalResult; override;
function DoShowLoadedPkgDlg: TModalResult; override;
function DoOpenPackage(APackage: TLazPackage; Flags: TPkgOpenFlags;
function DoOpenPackage(APackage: TEditablePackage; Flags: TPkgOpenFlags;
ShowAbort: boolean): TModalResult; override;
function DoOpenPackageWithName(const APackageName: string;
Flags: TPkgOpenFlags; ShowAbort: boolean): TModalResult; override;
@ -323,10 +323,9 @@ type
ShowAbort: boolean): TModalResult; override;
function IsPackageEditorForm(AForm: TCustomForm): boolean; override;
procedure OpenHiddenModifiedPackages; override;
function DoSavePackage(APackage: TLazPackage;
Flags: TPkgSaveFlags): TModalResult; override;
function DoSavePackage(APackage: TEditablePackage; Flags: TPkgSaveFlags): TModalResult; override;
function DoSaveAllPackages(Flags: TPkgSaveFlags): TModalResult; override;
function DoClosePackageEditor(APackage: TLazPackage): TModalResult; override;
function DoClosePackageEditor(APackage: TEditablePackage): TModalResult; override;
function DoCloseAllPackageEditors: TModalResult; override;
function DoAddActiveUnitToAPackage: TModalResult;
function DoNewPackageComponent: TModalResult;
@ -475,8 +474,8 @@ end;
procedure TPkgManager.IDEComponentPaletteOpenPackage(Sender: TObject);
begin
if (Sender=nil) or (not (Sender is TLazPackage)) then exit;
DoOpenPackage(TLazPackage(Sender),[],false);
if Sender is TEditablePackage then
DoOpenPackage(TEditablePackage(Sender),[],false);
end;
procedure TPkgManager.IDEComponentPaletteOpenUnit(Sender: TObject);
@ -608,8 +607,8 @@ var
APackage: TIDEPackage;
begin
GetPackageOfCurrentSourceEditor(APackage);
if APackage is TLazPackage then
DoOpenPackage(TLazPackage(APackage),[],false);
if APackage is TEditablePackage then
DoOpenPackage(TEditablePackage(APackage),[],false);
end;
procedure TPkgManager.CreateIDEWindow(Sender: TObject; aFormName: string; var
@ -617,7 +616,7 @@ procedure TPkgManager.CreateIDEWindow(Sender: TObject; aFormName: string; var
var
APackageName: String;
NewDependency: TPkgDependency;
APackage: TLazPackage;
APackage: TEditablePackage;
LoadResult: TLoadPackageResult;
begin
//debugln(['TPkgManager.CreateIDEWindow ',aFormName]);
@ -641,7 +640,7 @@ begin
finally
NewDependency.Free;
end;
APackage:=PackageGraph.FindPackageWithName(APackageName,nil);
APackage:=TEditablePackage(PackageGraph.FindPackageWithName(APackageName,nil));
if APackage=nil then exit;
AForm:=PackageEditors.CreateEditor(APackage,DoDisableAutoSizing);
end;
@ -935,7 +934,7 @@ begin
Result:=DoOpenPkgFile(PkgFile);
end;
procedure TPkgManager.PackageEditorFreeEditor(APackage: TLazPackage);
procedure TPkgManager.PackageEditorFreeEditor(APackage: TEditablePackage);
begin
APackage.Editor:=nil;
PackageGraph.ClosePackage(APackage);
@ -948,13 +947,13 @@ begin
end;
function TPkgManager.PackageEditorOpenPackage(Sender: TObject;
APackage: TLazPackage): TModalResult;
APackage: TEditablePackage): TModalResult;
begin
Result:=DoOpenPackage(APackage,[],false);
end;
function TPkgManager.PackageEditorSavePackage(Sender: TObject;
APackage: TLazPackage; SaveAs: boolean): TModalResult;
APackage: TEditablePackage; SaveAs: boolean): TModalResult;
begin
if SaveAs then
Result:=DoSavePackage(APackage,[psfSaveAs])
@ -981,10 +980,15 @@ begin
end;
procedure TPkgManager.PackageGraphDeletePackage(APackage: TLazPackage);
var
Pkg: TEditablePackage;
begin
if APackage.Editor<>nil then begin
APackage.Editor.Hide;
APackage.Editor.Free;
Assert(APackage is TEditablePackage,
'TPkgManager.PackageGraphDeletePackage: APackage is not TEditablePackage');
Pkg := TEditablePackage(APackage);
if Pkg.Editor<>nil then begin
Pkg.Editor.Hide;
Pkg.Editor.Free;
end;
end;
@ -1000,7 +1004,7 @@ begin
end;
function TPkgManager.PackageGraphExplorerOpenPackage(Sender: TObject;
APackage: TLazPackage): TModalResult;
APackage: TEditablePackage): TModalResult;
begin
Result:=DoOpenPackage(APackage,[pofAddToRecent],false);
end;
@ -1108,7 +1112,7 @@ begin
PackageGraph.CloseUnneededPackages;
end;
function TPkgManager.DoShowSavePackageAsDialog(APackage: TLazPackage): TModalResult;
function TPkgManager.DoShowSavePackageAsDialog(APackage: TEditablePackage): TModalResult;
var
OldPkgFilename: String;
SaveDialog: TSaveDialog;
@ -3213,7 +3217,7 @@ begin
mtConfirmation,[mbYes,mbNo,mbCancel,mbAbort]);
if Result=mrNo then Result:=mrOk;
if Result=mrYes then begin
Result:=DoSavePackage(ConflictPkg,[]);
Result:=DoSavePackage(TEditablePackage(ConflictPkg),[]);
end;
if Result<>mrOk then exit;
end;
@ -3455,7 +3459,7 @@ end;
function TPkgManager.DoNewPackage: TModalResult;
var
NewPackage: TLazPackage;
NewPackage: TEditablePackage;
begin
Result:=mrCancel;
// create a new package with standard dependencies
@ -3472,14 +3476,14 @@ end;
function TPkgManager.DoShowLoadedPkgDlg: TModalResult;
var
APackage: TLazPackage;
APackage: TEditablePackage;
begin
Result:=ShowOpenLoadedPkgDlg(APackage);
if (Result<>mrOk) then exit;
Result:=DoOpenPackage(APackage,[pofAddToRecent],false);
end;
function TPkgManager.DoOpenPackage(APackage: TLazPackage;
function TPkgManager.DoOpenPackage(APackage: TEditablePackage;
Flags: TPkgOpenFlags; ShowAbort: boolean): TModalResult;
var
AFilename: String;
@ -3500,7 +3504,7 @@ end;
function TPkgManager.DoOpenPackageWithName(const APackageName: string;
Flags: TPkgOpenFlags; ShowAbort: boolean): TModalResult;
var
APackage: TLazPackage;
APackage: TEditablePackage;
NewDependency: TPkgDependency;
LoadResult: TLoadPackageResult;
begin
@ -3514,7 +3518,7 @@ begin
finally
NewDependency.Free;
end;
APackage:=PackageGraph.FindPackageWithName(APackageName,nil);
APackage:=TEditablePackage(PackageGraph.FindPackageWithName(APackageName,nil));
if APackage=nil then exit;
Result:=DoOpenPackage(APackage,Flags,ShowAbort);
end;
@ -3533,7 +3537,7 @@ function TPkgManager.DoOpenPackageFile(AFilename: string; Flags: TPkgOpenFlags;
end;
var
APackage: TLazPackage;
APackage: TEditablePackage;
XMLConfig: TXMLConfig;
AlternativePkgName: String;
Code: TCodeBuffer;
@ -3575,7 +3579,7 @@ begin
OpenEditor:=not (pofDoNotOpenEditor in Flags);
// check if package is already loaded
APackage:=PackageGraph.FindPackageWithFilename(AFilename);
APackage:=TEditablePackage(PackageGraph.FindPackageWithFilename(AFilename));
if (APackage=nil) or (pofRevert in Flags) then begin
// package not yet loaded or it should be reloaded
@ -3595,7 +3599,7 @@ begin
// create a new package
Result:=mrCancel;
APackage:=TLazPackage.Create;
APackage:=TEditablePackage.Create;
try
// load the package file
try
@ -3657,7 +3661,7 @@ end;
procedure TPkgManager.OpenHiddenModifiedPackages;
var
i: Integer;
APackage: TLazPackage;
APackage: TEditablePackage;
begin
for i:=0 to PackageGraph.Count-1 do begin
APackage:=PackageGraph.Packages[i];
@ -3668,7 +3672,7 @@ begin
end;
end;
function TPkgManager.DoSavePackage(APackage: TLazPackage;
function TPkgManager.DoSavePackage(APackage: TEditablePackage;
Flags: TPkgSaveFlags): TModalResult;
var
XMLConfig: TCodeBufXMLConfig;
@ -3772,7 +3776,7 @@ end;
function TPkgManager.DoCloseAllPackageEditors: TModalResult;
var
APackage: TLazPackage;
APackage: TEditablePackage;
begin
while PackageEditors.Count>0 do begin
APackage:=PackageEditors.Editors[PackageEditors.Count-1].LazPackage;
@ -4255,8 +4259,8 @@ begin
if (NewPkgFile<>nil) and (OldPackage<>NewPkgFile.LazPackage) then exit;
OldPkgFile.Filename:=NewFilename;
if OldPackage.Editor<>nil then
OldPackage.Editor.UpdateAll(true);
if TEditablePackage(OldPackage).Editor<>nil then
TEditablePackage(OldPackage).Editor.UpdateAll(true);
OldPackage.Modified:=true;
end;
@ -5274,7 +5278,7 @@ end;
function TPkgManager.DoNewPackageComponent: TModalResult;
var
APackage: TLazPackage;
APackage: TEditablePackage;
SaveFlags: TPkgSaveFlags;
CurEditor: TPackageEditorForm;
begin
@ -5543,7 +5547,7 @@ begin
// save package
if APackage.IsVirtual or APackage.Modified then begin
Result:=DoSavePackage(APackage,[]);
Result:=DoSavePackage(TEditablePackage(APackage),[]);
if Result<>mrOk then exit;
end;
@ -5684,7 +5688,7 @@ begin
try
// save package
if APackage.IsVirtual or APackage.Modified then begin
Result:=DoSavePackage(APackage,[]);
Result:=DoSavePackage(TEditablePackage(APackage),[]);
if Result<>mrOk then exit;
end;
@ -5829,7 +5833,7 @@ begin
if (not APackage.UserReadOnly)
and (APackage.IsVirtual or APackage.Modified) then begin
SaveFlags:=[];
if DoSavePackage(APackage,SaveFlags)<>mrOk then exit;
if DoSavePackage(TEditablePackage(APackage),SaveFlags)<>mrOk then exit;
end;
end;
@ -6212,7 +6216,7 @@ begin
end;
// save package
Result:=DoSavePackage(APackage,Flags);
Result:=DoSavePackage(TEditablePackage(APackage),Flags);
if Result<>mrOk then exit;
// publish package
@ -6555,14 +6559,14 @@ begin
CopyMoveFiles(Sender);
end;
function TPkgManager.CanClosePackageEditor(APackage: TLazPackage): TModalResult;
function TPkgManager.CanClosePackageEditor(APackage: TEditablePackage): TModalResult;
begin
Result:=APackage.Editor.CanCloseEditor;
end;
function TPkgManager.CanCloseAllPackageEditors: TModalResult;
var
APackage: TLazPackage;
APackage: TEditablePackage;
i: Integer;
begin
for i:=0 to PackageEditors.Count-1 do begin
@ -6585,7 +6589,7 @@ begin
Result:=CheckProjectHasInstalledPackages(AProject,Interactive);
end;
function TPkgManager.DoClosePackageEditor(APackage: TLazPackage): TModalResult;
function TPkgManager.DoClosePackageEditor(APackage: TEditablePackage): TModalResult;
begin
if APackage.Editor<>nil then
APackage.Editor.Free;
@ -6596,7 +6600,7 @@ function TPkgManager.DoSaveAllPackages(Flags: TPkgSaveFlags): TModalResult;
var
AllSaved: Boolean;
i: Integer;
CurPackage: TLazPackage;
CurPackage: TEditablePackage;
begin
try
repeat