mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-22 12:39:29 +02:00
IDE: project inspector: multi selection for readd, delete, open, clear deps, set dep defaults
git-svn-id: trunk@45586 -
This commit is contained in:
parent
2fa4bf34b6
commit
44b1fcc42d
13
ide/main.pp
13
ide/main.pp
@ -578,7 +578,6 @@ type
|
||||
procedure OnGetDesignerSelection(const ASelection: TPersistentSelectionList);
|
||||
|
||||
// project inspector
|
||||
procedure ProjInspectorOpen(Sender: TObject);
|
||||
function ProjInspectorAddUnitToProject(Sender: TObject;
|
||||
AnUnitInfo: TUnitInfo): TModalresult;
|
||||
function ProjInspectorRemoveFile(Sender: TObject;
|
||||
@ -6427,7 +6426,6 @@ procedure TMainIDE.DoShowProjectInspector(Show: boolean);
|
||||
begin
|
||||
if ProjInspector=nil then begin
|
||||
ProjInspector:=TProjectInspectorForm.Create(OwningComponent);
|
||||
ProjInspector.OnOpen:=@ProjInspectorOpen;
|
||||
ProjInspector.OnShowOptions:=@mnuProjectOptionsClicked;
|
||||
ProjInspector.OnAddUnitToProject:=@ProjInspectorAddUnitToProject;
|
||||
ProjInspector.OnAddDependency:=@PkgBoss.OnProjectInspectorAddDependency;
|
||||
@ -12018,17 +12016,6 @@ begin
|
||||
Result:=CheckCompOptsAndMainSrcForNewUnit(CompOpts);
|
||||
end;
|
||||
|
||||
procedure TMainIDE.ProjInspectorOpen(Sender: TObject);
|
||||
var
|
||||
CurUnitInfo: TUnitInfo;
|
||||
begin
|
||||
CurUnitInfo:=ProjInspector.GetSelectedFile;
|
||||
if CurUnitInfo<>nil then
|
||||
DoOpenEditorFile(CurUnitInfo.Filename,-1,-1,[ofRegularFile])
|
||||
else
|
||||
PkgBoss.OnProjectInspectorOpen(Sender);
|
||||
end;
|
||||
|
||||
{$IFNDEF EnableOldExtTools}
|
||||
procedure TMainIDE.FPCMsgFilePoolLoadFile(aFilename: string; out s: string);
|
||||
// Note: called by any thread
|
||||
|
@ -1,25 +1,25 @@
|
||||
object ProjectInspectorForm: TProjectInspectorForm
|
||||
Left = 393
|
||||
Height = 474
|
||||
Height = 456
|
||||
Top = 104
|
||||
Width = 425
|
||||
Width = 299
|
||||
ActiveControl = ItemsTreeView
|
||||
AllowDropFiles = True
|
||||
Caption = 'ProjectInspectorForm'
|
||||
ClientHeight = 474
|
||||
ClientWidth = 425
|
||||
ClientHeight = 456
|
||||
ClientWidth = 299
|
||||
OnDropFiles = FormDropFiles
|
||||
OnShow = ProjectInspectorFormShow
|
||||
LCLVersion = '1.3'
|
||||
object ItemsTreeView: TTreeView
|
||||
Left = 0
|
||||
Height = 396
|
||||
Height = 378
|
||||
Top = 78
|
||||
Width = 425
|
||||
Width = 299
|
||||
Align = alClient
|
||||
Anchors = [akTop, akLeft, akBottom]
|
||||
BorderSpacing.Top = 2
|
||||
DefaultItemHeight = 18
|
||||
MultiSelect = True
|
||||
PopupMenu = ItemsPopupMenu
|
||||
ReadOnly = True
|
||||
RightClickSelect = True
|
||||
@ -28,16 +28,16 @@ object ProjectInspectorForm: TProjectInspectorForm
|
||||
OnDblClick = ItemsTreeViewDblClick
|
||||
OnKeyDown = ItemsTreeViewKeyDown
|
||||
OnSelectionChanged = ItemsTreeViewSelectionChanged
|
||||
Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoRightClickSelect, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw]
|
||||
Options = [tvoAllowMultiselect, tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoRightClickSelect, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw]
|
||||
end
|
||||
object BtnPanel: TPanel
|
||||
Left = 0
|
||||
Height = 28
|
||||
Top = 48
|
||||
Width = 425
|
||||
Width = 299
|
||||
Align = alTop
|
||||
ClientHeight = 28
|
||||
ClientWidth = 425
|
||||
ClientWidth = 299
|
||||
TabOrder = 1
|
||||
object OpenButton: TSpeedButton
|
||||
AnchorSideLeft.Control = BtnPanel
|
||||
@ -102,7 +102,7 @@ object ProjectInspectorForm: TProjectInspectorForm
|
||||
Left = 91
|
||||
Height = 25
|
||||
Top = 2
|
||||
Width = 311
|
||||
Width = 185
|
||||
UseFormActivate = True
|
||||
ButtonWidth = 23
|
||||
NumGlyphs = 1
|
||||
@ -119,7 +119,7 @@ object ProjectInspectorForm: TProjectInspectorForm
|
||||
Left = 0
|
||||
Height = 48
|
||||
Top = 0
|
||||
Width = 425
|
||||
Width = 299
|
||||
AutoSize = True
|
||||
ButtonHeight = 46
|
||||
ShowCaptions = True
|
||||
|
@ -80,7 +80,8 @@ type
|
||||
ADependency: TPkgDependency): TModalResult of object;
|
||||
|
||||
TProjectInspectorFlag = (
|
||||
pifNeedUpdateItems,
|
||||
pifNeedUpdateFiles,
|
||||
pifNeedUpdateDependencies,
|
||||
pifNeedUpdateButtons,
|
||||
pifNeedUpdateTitle
|
||||
);
|
||||
@ -134,7 +135,6 @@ type
|
||||
procedure OpenButtonClick(Sender: TObject);
|
||||
procedure OptionsBitBtnClick(Sender: TObject);
|
||||
procedure HelpBitBtnClick(Sender: TObject);
|
||||
procedure ProjectInspectorFormShow(Sender: TObject);
|
||||
procedure ReAddMenuItemClick(Sender: TObject);
|
||||
procedure RemoveBitBtnClick(Sender: TObject);
|
||||
procedure RemoveNonExistingFilesMenuItemClick(Sender: TObject);
|
||||
@ -145,7 +145,6 @@ type
|
||||
FIdleConnected: boolean;
|
||||
FOnAddDependency: TAddProjInspDepEvent;
|
||||
FOnAddUnitToProject: TOnAddUnitToProject;
|
||||
FOnOpen: TNotifyEvent;
|
||||
FOnReAddDependency: TAddProjInspDepEvent;
|
||||
FOnRemoveDependency: TRemoveProjInspDepEvent;
|
||||
FOnRemoveFile: TRemoveProjInspFileEvent;
|
||||
@ -183,8 +182,6 @@ type
|
||||
procedure SetSortAlphabetically(const AValue: boolean);
|
||||
procedure SetupComponents;
|
||||
function OnTreeViewGetImageIndex(Str: String; Data: TObject; var AIsEnabled: Boolean): Integer;
|
||||
procedure UpdateProjectFiles;
|
||||
procedure UpdateRequiredPackages;
|
||||
procedure OnProjectBeginUpdate(Sender: TObject);
|
||||
procedure OnProjectEndUpdate(Sender: TObject; ProjectChanged: boolean);
|
||||
procedure EnableI18NForSelectedLFM(TheEnable: boolean);
|
||||
@ -199,15 +196,14 @@ type
|
||||
function IsUpdateLocked: boolean; inline;
|
||||
procedure UpdateAll(Immediately: boolean = false);
|
||||
procedure UpdateTitle(Immediately: boolean = false);
|
||||
procedure UpdateItems(Immediately: boolean = false);
|
||||
procedure UpdateProjectFiles(Immediately: boolean = false);
|
||||
procedure UpdateRequiredPackages(Immediately: boolean = false);
|
||||
procedure UpdateButtons(Immediately: boolean = false);
|
||||
procedure UpdatePending;
|
||||
function CanUpdate(Flag: TProjectInspectorFlag): boolean;
|
||||
function GetSelectedFile: TUnitInfo;
|
||||
function GetSingleSelectedDependency: TPkgDependency;
|
||||
public
|
||||
property LazProject: TProject read FLazProject write SetLazProject;
|
||||
property OnOpen: TNotifyEvent read FOnOpen write FOnOpen;
|
||||
property OnShowOptions: TNotifyEvent read FOnShowOptions write FOnShowOptions;
|
||||
property OnAddUnitToProject: TOnAddUnitToProject read FOnAddUnitToProject
|
||||
write FOnAddUnitToProject;
|
||||
@ -306,16 +302,27 @@ end;
|
||||
procedure TProjectInspectorForm.ClearDependencyFilenameMenuItemClick(Sender: TObject);
|
||||
var
|
||||
CurDependency: TPkgDependency;
|
||||
i: Integer;
|
||||
TVNode: TTreeNode;
|
||||
NodeData: TPINodeData;
|
||||
Item: TObject;
|
||||
begin
|
||||
CurDependency:=GetSingleSelectedDependency;
|
||||
if (CurDependency=nil) then exit;
|
||||
if CurDependency.RequiredPackage=nil then exit;
|
||||
if CurDependency.DefaultFilename='' then exit;
|
||||
CurDependency.DefaultFilename:='';
|
||||
CurDependency.PreferDefaultFilename:=false;
|
||||
LazProject.Modified:=true;
|
||||
UpdateRequiredPackages;
|
||||
UpdateButtons;
|
||||
BeginUpdate;
|
||||
try
|
||||
for i:=0 to ItemsTreeView.SelectionCount-1 do begin
|
||||
TVNode:=ItemsTreeView.Selections[i];
|
||||
if not GetNodeDataItem(TVNode,NodeData,Item) then continue;
|
||||
if not (Item is TPkgDependency) then continue;
|
||||
CurDependency:=TPkgDependency(Item);
|
||||
if CurDependency.DefaultFilename='' then exit;
|
||||
CurDependency.DefaultFilename:='';
|
||||
CurDependency.PreferDefaultFilename:=false;
|
||||
LazProject.Modified:=true;
|
||||
UpdateRequiredPackages;
|
||||
end;
|
||||
finally
|
||||
EndUpdate;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TProjectInspectorForm.AddBitBtnClick(Sender: TObject);
|
||||
@ -347,7 +354,7 @@ begin
|
||||
end;
|
||||
FNextSelectedPart:=NewFile;
|
||||
end;
|
||||
UpdateAll(false);
|
||||
UpdateAll;
|
||||
EndUpdate;
|
||||
end;
|
||||
|
||||
@ -357,7 +364,7 @@ begin
|
||||
if Assigned(OnAddDependency) then
|
||||
OnAddDependency(Self,AddResult.Dependency);
|
||||
FNextSelectedPart:=AddResult.Dependency;
|
||||
UpdateItems(false);
|
||||
UpdateRequiredPackages;
|
||||
EndUpdate;
|
||||
end;
|
||||
|
||||
@ -402,7 +409,7 @@ begin
|
||||
if Assigned(OnAddUnitToProject) then begin
|
||||
if OnAddUnitToProject(Self,NewFile)<>mrOk then break;
|
||||
end;
|
||||
UpdateAll(false);
|
||||
UpdateAll;
|
||||
end;
|
||||
finally
|
||||
EndUpdate;
|
||||
@ -445,6 +452,9 @@ var
|
||||
CanReAddCount: Integer;
|
||||
SingleSelectedDep: TPkgDependency;
|
||||
DepCount: Integer;
|
||||
Dependency: TPkgDependency;
|
||||
HasValidDep: Integer;
|
||||
CanClearDep: Integer;
|
||||
begin
|
||||
ItemCnt:=0;
|
||||
|
||||
@ -455,6 +465,8 @@ begin
|
||||
CanReAddCount:=0;
|
||||
SingleSelectedDep:=nil;
|
||||
DepCount:=0;
|
||||
HasValidDep:=0;
|
||||
CanClearDep:=0;
|
||||
for i:=0 to ItemsTreeView.SelectionCount-1 do begin
|
||||
TVNode:=ItemsTreeView.Selections[i];
|
||||
if not GetNodeDataItem(TVNode,NodeData,Item) then continue;
|
||||
@ -470,16 +482,21 @@ begin
|
||||
inc(DisabledI18NForLFMCount);
|
||||
end;
|
||||
end else if Item is TPkgDependency then begin
|
||||
inc(DepCount);
|
||||
if DepCount=1 then
|
||||
SingleSelectedDep:=TPkgDependency(Item)
|
||||
else
|
||||
SingleSelectedDep:=nil;
|
||||
Dependency:=TPkgDependency(Item);
|
||||
if NodeData.Removed then begin
|
||||
inc(CanReAddCount);
|
||||
end else begin
|
||||
inc(DepCount);
|
||||
if DepCount=1 then
|
||||
SingleSelectedDep:=Dependency
|
||||
else
|
||||
SingleSelectedDep:=nil;
|
||||
inc(CanRemoveCount);
|
||||
inc(CanOpenCount);
|
||||
if Dependency.RequiredPackage<>nil then
|
||||
inc(HasValidDep);
|
||||
if (Dependency.DefaultFilename<>'') then
|
||||
inc(CanClearDep);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
@ -508,15 +525,16 @@ begin
|
||||
(SingleSelectedDep.PrevRequiresDependency<>nil));
|
||||
AddPopupMenuItem(lisPckEditMoveDependencyDown, @MoveDependencyDownClick,
|
||||
(SingleSelectedDep.NextRequiresDependency<>nil));
|
||||
end;
|
||||
if HasValidDep>0 then begin
|
||||
AddPopupMenuItem(lisPckEditStoreFileNameAsDefaultForThisDependency,
|
||||
@SetDependencyDefaultFilenameMenuItemClick,
|
||||
(SingleSelectedDep.RequiredPackage<>nil));
|
||||
@SetDependencyDefaultFilenameMenuItemClick, true);
|
||||
AddPopupMenuItem(lisPckEditStoreFileNameAsPreferredForThisDependency,
|
||||
@SetDependencyPreferredFilenameMenuItemClick,
|
||||
(SingleSelectedDep.RequiredPackage<>nil));
|
||||
@SetDependencyPreferredFilenameMenuItemClick, true);
|
||||
end;
|
||||
if CanClearDep>0 then begin
|
||||
AddPopupMenuItem(lisPckEditClearDefaultPreferredFilenameOfDependency,
|
||||
@ClearDependencyFilenameMenuItemClick,
|
||||
(SingleSelectedDep.DefaultFilename<>''));
|
||||
@ClearDependencyFilenameMenuItemClick, true);
|
||||
end;
|
||||
|
||||
while ItemsPopupMenu.Items.Count>ItemCnt do
|
||||
@ -548,8 +566,34 @@ begin
|
||||
end;
|
||||
|
||||
procedure TProjectInspectorForm.OpenButtonClick(Sender: TObject);
|
||||
var
|
||||
i: Integer;
|
||||
TVNode: TTreeNode;
|
||||
NodeData: TPINodeData;
|
||||
Item: TObject;
|
||||
CurFile: TUnitInfo;
|
||||
CurDependency: TPkgDependency;
|
||||
begin
|
||||
if Assigned(OnOpen) then OnOpen(Self);
|
||||
BeginUpdate;
|
||||
try
|
||||
for i:=0 to ItemsTreeView.SelectionCount-1 do begin
|
||||
TVNode:=ItemsTreeView.Selections[i];
|
||||
if not GetNodeDataItem(TVNode,NodeData,Item) then continue;
|
||||
if Item is TUnitInfo then begin
|
||||
CurFile:=TUnitInfo(Item);
|
||||
if LazarusIDE.DoOpenEditorFile(CurFile.Filename,-1,-1,[ofAddToRecent])<>mrOk
|
||||
then exit;
|
||||
end else if Item is TPkgDependency then begin
|
||||
CurDependency:=TPkgDependency(Item);
|
||||
if PackageEditingInterface.DoOpenPackageWithName(
|
||||
CurDependency.PackageName,[],false)<>mrOk
|
||||
then
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
EndUpdate;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TProjectInspectorForm.OptionsBitBtnClick(Sender: TObject);
|
||||
@ -562,21 +606,29 @@ begin
|
||||
LazarusHelp.ShowHelpForIDEControl(Self);
|
||||
end;
|
||||
|
||||
procedure TProjectInspectorForm.ProjectInspectorFormShow(Sender: TObject);
|
||||
begin
|
||||
UpdateAll(false);
|
||||
end;
|
||||
|
||||
procedure TProjectInspectorForm.ReAddMenuItemClick(Sender: TObject);
|
||||
var
|
||||
Dependency: TPkgDependency;
|
||||
i: Integer;
|
||||
TVNode: TTreeNode;
|
||||
NodeData: TPINodeData;
|
||||
Item: TObject;
|
||||
begin
|
||||
Dependency:=GetSingleSelectedDependency;
|
||||
if (Dependency=nil) or (not Dependency.Removed)
|
||||
or (not CheckAddingDependency(LazProject,Dependency)) then exit;
|
||||
BeginUpdate;
|
||||
if Assigned(OnReAddDependency) then OnReAddDependency(Self,Dependency);
|
||||
EndUpdate;
|
||||
try
|
||||
for i:=0 to ItemsTreeView.SelectionCount-1 do begin
|
||||
TVNode:=ItemsTreeView.Selections[i];
|
||||
if not GetNodeDataItem(TVNode,NodeData,Item) then continue;
|
||||
if not NodeData.Removed then continue;
|
||||
if not (Item is TPkgDependency) then continue;
|
||||
Dependency:=TPkgDependency(Item);
|
||||
if not CheckAddingDependency(LazProject,Dependency) then exit;
|
||||
if Assigned(OnReAddDependency) then
|
||||
OnReAddDependency(Self,Dependency);
|
||||
end;
|
||||
finally
|
||||
EndUpdate;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TProjectInspectorForm.RemoveBitBtnClick(Sender: TObject);
|
||||
@ -649,19 +701,24 @@ var
|
||||
HasChanged: Boolean;
|
||||
begin
|
||||
if LazProject.IsVirtual then exit;
|
||||
HasChanged:=false;
|
||||
AnUnitInfo:=LazProject.FirstPartOfProject;
|
||||
while AnUnitInfo<>nil do begin
|
||||
NextUnitInfo:=AnUnitInfo.NextPartOfProject;
|
||||
if not (AnUnitInfo.IsVirtual or FileExistsUTF8(AnUnitInfo.Filename)) then begin
|
||||
AnUnitInfo.IsPartOfProject:=false;
|
||||
HasChanged:=true;
|
||||
BeginUpdate;
|
||||
try
|
||||
HasChanged:=false;
|
||||
AnUnitInfo:=LazProject.FirstPartOfProject;
|
||||
while AnUnitInfo<>nil do begin
|
||||
NextUnitInfo:=AnUnitInfo.NextPartOfProject;
|
||||
if not (AnUnitInfo.IsVirtual or FileExistsUTF8(AnUnitInfo.Filename)) then begin
|
||||
AnUnitInfo.IsPartOfProject:=false;
|
||||
HasChanged:=true;
|
||||
end;
|
||||
AnUnitInfo:=NextUnitInfo;
|
||||
end;
|
||||
AnUnitInfo:=NextUnitInfo;
|
||||
end;
|
||||
if HasChanged then begin
|
||||
LazProject.Modified:=true;
|
||||
UpdateProjectFiles;
|
||||
if HasChanged then begin
|
||||
LazProject.Modified:=true;
|
||||
UpdateProjectFiles;
|
||||
end;
|
||||
finally
|
||||
EndUpdate;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -694,7 +751,7 @@ begin
|
||||
FLazProject.OnBeginUpdate:=@OnProjectBeginUpdate;
|
||||
FLazProject.OnEndUpdate:=@OnProjectEndUpdate;
|
||||
end;
|
||||
UpdateAll(false);
|
||||
UpdateAll;
|
||||
end;
|
||||
|
||||
procedure TProjectInspectorForm.SetShowDirectoryHierarchy(const AValue: boolean);
|
||||
@ -721,18 +778,31 @@ procedure TProjectInspectorForm.SetDependencyDefaultFilename(AsPreferred: boolea
|
||||
var
|
||||
NewFilename: String;
|
||||
CurDependency: TPkgDependency;
|
||||
i: Integer;
|
||||
TVNode: TTreeNode;
|
||||
NodeData: TPINodeData;
|
||||
Item: TObject;
|
||||
begin
|
||||
CurDependency:=GetSingleSelectedDependency;
|
||||
if (CurDependency=nil) then exit;
|
||||
if CurDependency.RequiredPackage=nil then exit;
|
||||
NewFilename:=CurDependency.RequiredPackage.Filename;
|
||||
if (NewFilename=CurDependency.DefaultFilename) // do not use CompareFilenames
|
||||
and (CurDependency.PreferDefaultFilename=AsPreferred) then exit;
|
||||
CurDependency.DefaultFilename:=NewFilename;
|
||||
CurDependency.PreferDefaultFilename:=AsPreferred;
|
||||
LazProject.Modified:=true;
|
||||
UpdateRequiredPackages;
|
||||
UpdateButtons;
|
||||
BeginUpdate;
|
||||
try
|
||||
for i:=0 to ItemsTreeView.SelectionCount-1 do begin
|
||||
TVNode:=ItemsTreeView.Selections[i];
|
||||
if not GetNodeDataItem(TVNode,NodeData,Item) then continue;
|
||||
if NodeData.Removed then continue;
|
||||
if not (Item is TPkgDependency) then continue;
|
||||
CurDependency:=TPkgDependency(Item);
|
||||
if CurDependency.RequiredPackage=nil then continue;
|
||||
NewFilename:=CurDependency.RequiredPackage.Filename;
|
||||
if (NewFilename=CurDependency.DefaultFilename) // do not use CompareFilenames
|
||||
and (CurDependency.PreferDefaultFilename=AsPreferred) then continue;
|
||||
CurDependency.DefaultFilename:=NewFilename;
|
||||
CurDependency.PreferDefaultFilename:=AsPreferred;
|
||||
LazProject.Modified:=true;
|
||||
UpdateRequiredPackages;
|
||||
end;
|
||||
finally
|
||||
EndUpdate;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TProjectInspectorForm.SetIdleConnected(AValue: boolean);
|
||||
@ -841,13 +911,14 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TProjectInspectorForm.UpdateProjectFiles;
|
||||
procedure TProjectInspectorForm.UpdateProjectFiles(Immediately: boolean);
|
||||
var
|
||||
CurFile: TUnitInfo;
|
||||
FilesBranch: TTreeFilterBranch;
|
||||
Filename: String;
|
||||
ANodeData : TPINodeData;
|
||||
begin
|
||||
if not CanUpdate(pifNeedUpdateFiles) then exit;
|
||||
ItemsTreeView.BeginUpdate;
|
||||
try
|
||||
FilesBranch:=FilterEdit.GetBranch(FFilesNode);
|
||||
@ -873,15 +944,17 @@ begin
|
||||
finally
|
||||
ItemsTreeView.EndUpdate;
|
||||
end;
|
||||
UpdateButtons;
|
||||
end;
|
||||
|
||||
procedure TProjectInspectorForm.UpdateRequiredPackages;
|
||||
procedure TProjectInspectorForm.UpdateRequiredPackages(Immediately: boolean);
|
||||
var
|
||||
Dependency: TPkgDependency;
|
||||
RequiredBranch, RemovedBranch: TTreeFilterBranch;
|
||||
NodeText, AFilename: String;
|
||||
ANodeData : TPINodeData;
|
||||
begin
|
||||
if not CanUpdate(pifNeedUpdateDependencies) then exit;
|
||||
ItemsTreeView.BeginUpdate;
|
||||
try
|
||||
RequiredBranch:=FilterEdit.GetBranch(DependenciesNode);
|
||||
@ -937,6 +1010,7 @@ begin
|
||||
finally
|
||||
ItemsTreeView.EndUpdate;
|
||||
end;
|
||||
UpdateButtons;
|
||||
end;
|
||||
|
||||
procedure TProjectInspectorForm.OnProjectBeginUpdate(Sender: TObject);
|
||||
@ -947,7 +1021,7 @@ end;
|
||||
procedure TProjectInspectorForm.OnProjectEndUpdate(Sender: TObject;
|
||||
ProjectChanged: boolean);
|
||||
begin
|
||||
UpdateAll(false);
|
||||
UpdateAll;
|
||||
EndUpdate;
|
||||
end;
|
||||
|
||||
@ -984,16 +1058,6 @@ begin
|
||||
UpdatePending;
|
||||
end;
|
||||
|
||||
function TProjectInspectorForm.GetSelectedFile: TUnitInfo;
|
||||
var
|
||||
Item: TObject;
|
||||
begin
|
||||
Result:=nil;
|
||||
Item:=GetNodeItem(GetNodeData(ItemsTreeView.Selected));
|
||||
if Item is TUnitInfo then
|
||||
Result:=TUnitInfo(Item);
|
||||
end;
|
||||
|
||||
function TProjectInspectorForm.GetSingleSelectedDependency: TPkgDependency;
|
||||
var
|
||||
Item: TObject;
|
||||
@ -1045,11 +1109,17 @@ end;
|
||||
|
||||
procedure TProjectInspectorForm.UpdateAll(Immediately: boolean);
|
||||
begin
|
||||
UpdateItems;
|
||||
UpdateTitle;
|
||||
UpdateButtons;
|
||||
if Immediately then
|
||||
UpdatePending;
|
||||
ItemsTreeView.BeginUpdate;
|
||||
try
|
||||
UpdateTitle;
|
||||
UpdateProjectFiles;
|
||||
UpdateRequiredPackages;
|
||||
UpdateButtons;
|
||||
if Immediately then
|
||||
UpdatePending;
|
||||
finally
|
||||
ItemsTreeView.EndUpdate;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TProjectInspectorForm.UpdateTitle(Immediately: boolean);
|
||||
@ -1068,18 +1138,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TProjectInspectorForm.UpdateItems(Immediately: boolean);
|
||||
begin
|
||||
if not CanUpdate(pifNeedUpdateItems) then exit;
|
||||
ItemsTreeView.BeginUpdate;
|
||||
try
|
||||
UpdateProjectFiles;
|
||||
UpdateRequiredPackages;
|
||||
finally
|
||||
ItemsTreeView.EndUpdate;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TProjectInspectorForm.UpdateButtons(Immediately: boolean);
|
||||
var
|
||||
i: Integer;
|
||||
@ -1126,13 +1184,20 @@ end;
|
||||
|
||||
procedure TProjectInspectorForm.UpdatePending;
|
||||
begin
|
||||
if pifNeedUpdateItems in FFlags then
|
||||
UpdateItems(true);
|
||||
if pifNeedUpdateTitle in FFlags then
|
||||
UpdateTitle(true);
|
||||
if pifNeedUpdateButtons in FFlags then
|
||||
UpdateButtons(true);
|
||||
IdleConnected:=false;
|
||||
ItemsTreeView.BeginUpdate;
|
||||
try
|
||||
if pifNeedUpdateFiles in FFlags then
|
||||
UpdateProjectFiles(true);
|
||||
if pifNeedUpdateDependencies in FFlags then
|
||||
UpdateRequiredPackages(true);
|
||||
if pifNeedUpdateTitle in FFlags then
|
||||
UpdateTitle(true);
|
||||
if pifNeedUpdateButtons in FFlags then
|
||||
UpdateButtons(true);
|
||||
IdleConnected:=false;
|
||||
finally
|
||||
ItemsTreeView.EndUpdate;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TProjectInspectorForm.CanUpdate(Flag: TProjectInspectorFlag): boolean;
|
||||
|
@ -96,7 +96,6 @@ type
|
||||
function CheckProjectHasInstalledPackages(AProject: TProject; Interactive: boolean): TModalResult; virtual; abstract;
|
||||
function CanOpenDesignerForm(AnUnitInfo: TUnitInfo;
|
||||
Interactive: boolean): TModalResult; virtual; abstract;
|
||||
function OnProjectInspectorOpen(Sender: TObject): boolean; virtual; abstract;
|
||||
function OnProjectInspectorAddDependency(Sender: TObject;
|
||||
ADependency: TPkgDependency): TModalResult; virtual; abstract;
|
||||
function OnProjectInspectorRemoveDependency(Sender: TObject;
|
||||
|
@ -294,7 +294,7 @@ type
|
||||
procedure SetupComponents;
|
||||
function OnTreeViewGetImageIndex(Str: String; Data: TObject; var AIsEnabled: Boolean): Integer;
|
||||
procedure UpdatePending;
|
||||
function CanUpdate(Flag: TPEFlag): boolean;
|
||||
function CanUpdate(Flag: TPEFlag; Immediately: boolean): boolean;
|
||||
procedure UpdateTitle(Immediately: boolean = false);
|
||||
procedure UpdateFiles(Immediately: boolean = false);
|
||||
procedure UpdateRequiredPkgs(Immediately: boolean = false);
|
||||
@ -2197,7 +2197,7 @@ procedure TPackageEditorForm.UpdateTitle(Immediately: boolean);
|
||||
var
|
||||
NewCaption: String;
|
||||
begin
|
||||
if not CanUpdate(pefNeedUpdateTitle) then exit;
|
||||
if not CanUpdate(pefNeedUpdateTitle,Immediately) then exit;
|
||||
NewCaption:=Format(lisPckEditPackage, [FLazPackage.Name]);
|
||||
if LazPackage.Modified then
|
||||
NewCaption:=NewCaption+'*';
|
||||
@ -2216,7 +2216,7 @@ var
|
||||
FileCount: Integer;
|
||||
DepCount: Integer;
|
||||
begin
|
||||
if not CanUpdate(pefNeedUpdateButtons) then exit;
|
||||
if not CanUpdate(pefNeedUpdateButtons,Immediately) then exit;
|
||||
|
||||
FileCount:=0;
|
||||
DepCount:=0;
|
||||
@ -2293,28 +2293,35 @@ end;
|
||||
|
||||
procedure TPackageEditorForm.UpdatePending;
|
||||
begin
|
||||
if pefNeedUpdateTitle in fFlags then
|
||||
UpdateTitle(true);
|
||||
if pefNeedUpdateFiles in fFlags then
|
||||
UpdateFiles(true);
|
||||
if pefNeedUpdateRequiredPkgs in fFlags then
|
||||
UpdateRequiredPkgs(true);
|
||||
if pefNeedUpdateProperties in fFlags then
|
||||
UpdatePEProperties(true);
|
||||
if pefNeedUpdateButtons in fFlags then
|
||||
UpdateButtons(true);
|
||||
if pefNeedUpdateApplyDependencyButton in fFlags then
|
||||
UpdateApplyDependencyButton(true);
|
||||
if pefNeedUpdateStatusBar in fFlags then
|
||||
UpdateStatusBar(true);
|
||||
ItemsTreeView.BeginUpdate;
|
||||
try
|
||||
if pefNeedUpdateTitle in fFlags then
|
||||
UpdateTitle(true);
|
||||
if pefNeedUpdateFiles in fFlags then
|
||||
UpdateFiles(true);
|
||||
if pefNeedUpdateRequiredPkgs in fFlags then
|
||||
UpdateRequiredPkgs(true);
|
||||
if pefNeedUpdateProperties in fFlags then
|
||||
UpdatePEProperties(true);
|
||||
if pefNeedUpdateButtons in fFlags then
|
||||
UpdateButtons(true);
|
||||
if pefNeedUpdateApplyDependencyButton in fFlags then
|
||||
UpdateApplyDependencyButton(true);
|
||||
if pefNeedUpdateStatusBar in fFlags then
|
||||
UpdateStatusBar(true);
|
||||
IdleConnected:=false;
|
||||
finally
|
||||
ItemsTreeView.EndUpdate;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TPackageEditorForm.CanUpdate(Flag: TPEFlag): boolean;
|
||||
function TPackageEditorForm.CanUpdate(Flag: TPEFlag; Immediately: boolean
|
||||
): boolean;
|
||||
begin
|
||||
Result:=false;
|
||||
if csDestroying in ComponentState then exit;
|
||||
if LazPackage=nil then exit;
|
||||
if fUpdateLock>0 then begin
|
||||
if (fUpdateLock>0) and not Immediately then begin
|
||||
Include(fFlags,Flag);
|
||||
IdleConnected:=true;
|
||||
Result:=false;
|
||||
@ -2333,7 +2340,7 @@ var
|
||||
NodeData: TPENodeData;
|
||||
OldFilter : String;
|
||||
begin
|
||||
if not CanUpdate(pefNeedUpdateFiles) then exit;
|
||||
if not CanUpdate(pefNeedUpdateFiles,Immediately) then exit;
|
||||
|
||||
OldFilter := FilterEdit.ForceFilter('');
|
||||
|
||||
@ -2397,7 +2404,7 @@ var
|
||||
CurNodeText, aFilename, OldFilter: String;
|
||||
NodeData: TPENodeData;
|
||||
begin
|
||||
if not CanUpdate(pefNeedUpdateRequiredPkgs) then exit;
|
||||
if not CanUpdate(pefNeedUpdateRequiredPkgs,Immediately) then exit;
|
||||
|
||||
OldFilter := FilterEdit.ForceFilter('');
|
||||
|
||||
@ -2518,7 +2525,7 @@ var
|
||||
HasRegisterProcCount: integer;
|
||||
AddToUsesPkgSectionCount: integer;
|
||||
begin
|
||||
if not CanUpdate(pefNeedUpdateProperties) then exit;
|
||||
if not CanUpdate(pefNeedUpdateProperties,Immediately) then exit;
|
||||
|
||||
FPlugins.Clear;
|
||||
|
||||
@ -2676,7 +2683,7 @@ var
|
||||
NodeData: TPENodeData;
|
||||
Item: TObject;
|
||||
begin
|
||||
if not CanUpdate(pefNeedUpdateApplyDependencyButton) then exit;
|
||||
if not CanUpdate(pefNeedUpdateApplyDependencyButton,Immediately) then exit;
|
||||
|
||||
FSingleSelectedDependency:=nil;
|
||||
for i:=0 to ItemsTreeView.SelectionCount-1 do begin
|
||||
@ -2724,7 +2731,7 @@ procedure TPackageEditorForm.UpdateStatusBar(Immediately: boolean);
|
||||
var
|
||||
StatusText: String;
|
||||
begin
|
||||
if not CanUpdate(pefNeedUpdateStatusBar) then exit;
|
||||
if not CanUpdate(pefNeedUpdateStatusBar,Immediately) then exit;
|
||||
|
||||
if LazPackage.IsVirtual and (not LazPackage.ReadOnly) then begin
|
||||
StatusText:=Format(lisPckEditpackageNotSaved, [LazPackage.Name]);
|
||||
@ -3847,7 +3854,7 @@ begin
|
||||
mtConfirmation,[mbYes,mbNo],0)<>mrYes
|
||||
then exit;
|
||||
PackageEditors.RevertPackage(LazPackage);
|
||||
UpdateAll(true);
|
||||
UpdateAll(false);
|
||||
end;
|
||||
|
||||
procedure TPackageEditorForm.DoPublishProject;
|
||||
|
@ -264,7 +264,6 @@ type
|
||||
procedure AddProjectLCLDependency(AProject: TProject); override;
|
||||
function AddProjectDependencies(AProject: TProject; const Packages: string;
|
||||
OnlyTestIfPossible: boolean = false): TModalResult; override;
|
||||
function OnProjectInspectorOpen(Sender: TObject): boolean; override;
|
||||
function OnProjectInspectorAddDependency(Sender: TObject;
|
||||
ADependency: TPkgDependency): TModalResult; override;
|
||||
function OnProjectInspectorRemoveDependency(Sender: TObject;
|
||||
@ -960,7 +959,7 @@ begin
|
||||
if PackageEditors<>nil then
|
||||
PackageEditors.UpdateAllEditors(false);
|
||||
if ProjInspector<>nil then
|
||||
ProjInspector.UpdateItems(false);
|
||||
ProjInspector.UpdateRequiredPackages;
|
||||
DoCallNotifyHandler(pihtGraphChanged,Self);
|
||||
end;
|
||||
end;
|
||||
@ -4851,21 +4850,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TPkgManager.OnProjectInspectorOpen(Sender: TObject): boolean;
|
||||
var
|
||||
Dependency: TPkgDependency;
|
||||
begin
|
||||
Result:=false;
|
||||
if (Sender=nil) or (not (Sender is TProjectInspectorForm)) then exit;
|
||||
Dependency:=TProjectInspectorForm(Sender).GetSingleSelectedDependency;
|
||||
if Dependency=nil then exit;
|
||||
// user has selected a dependency -> open package
|
||||
Result:=true;
|
||||
if PackageGraph.OpenDependency(Dependency,false)<>lprSuccess then
|
||||
exit;
|
||||
DoOpenPackage(Dependency.RequiredPackage,[],false);
|
||||
end;
|
||||
|
||||
function TPkgManager.OnProjectInspectorAddDependency(Sender: TObject;
|
||||
ADependency: TPkgDependency): TModalResult;
|
||||
begin
|
||||
|
Loading…
Reference in New Issue
Block a user