mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-16 00:40:43 +01:00
Remove LCL dependency from PackageDefs. Move Pkg editor related stuff to new unit EditablePackage.
This commit is contained in:
parent
5814e6dba1
commit
99aa02f484
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -10,6 +10,8 @@ uses
|
||||
Forms, Controls, Graphics, Dialogs, StdCtrls, Buttons,
|
||||
// LazUtils
|
||||
LazUTF8,
|
||||
// BuildIntf
|
||||
ProjPackIntf,
|
||||
// IdeIntf
|
||||
IDEOptionsIntf, IDEOptEditorIntf, ProjectIntf, IDEImagesIntf,
|
||||
// IDE
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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;
|
||||
|
||||
82
ide/packages/idepackager/editablepackage.pas
Normal file
82
ide/packages/idepackager/editablepackage.pas
Normal 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.
|
||||
|
||||
@ -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"/>
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -50,6 +50,8 @@ uses
|
||||
CodeToolManager, FileProcs,
|
||||
// LazControls
|
||||
ListFilterEdit,
|
||||
// BuildIntf
|
||||
ProjPackIntf,
|
||||
// IdeIntf
|
||||
IdeIntfStrConsts, IDEWindowIntf, IDEImagesIntf, TextTools,
|
||||
// IdeConfig
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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));
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user