mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-08 16:38:17 +02:00
IDE: Update project inspector also when there is no active project.
git-svn-id: trunk@62813 -
This commit is contained in:
parent
de38b0140e
commit
2ba03b720e
23
ide/main.pp
23
ide/main.pp
@ -393,7 +393,7 @@ type
|
||||
UpdatePackageCommandsStamp: TPackageCommandsStamp;
|
||||
UpdateBookmarkCommandsStamp: TBookmarkCommandsStamp;
|
||||
BookmarksStamp: Int64;
|
||||
public
|
||||
//public
|
||||
procedure UpdateMainIDECommands(Sender: TObject);
|
||||
procedure UpdateFileCommands(Sender: TObject);
|
||||
procedure UpdateEditorCommands(Sender: TObject);
|
||||
@ -4157,29 +4157,18 @@ begin
|
||||
|
||||
// project change build mode
|
||||
ACmd := IDECommandList.FindIDECommand(ecProjectChangeBuildMode);
|
||||
AHint := lisChangeBuildMode+' '+KeyValuesToCaptionStr(ACmd.ShortcutA,ACmd.ShortcutB,'(');
|
||||
if Assigned(Project1) then
|
||||
AHint :=
|
||||
Trim(lisChangeBuildMode + ' ' + KeyValuesToCaptionStr(ACmd.ShortcutA, ACmd.ShortcutB, '(')) + sLineBreak +
|
||||
Format('[%s]', [Project1.ActiveBuildMode.GetCaption])
|
||||
else
|
||||
AHint :=
|
||||
Trim(lisChangeBuildMode + ' ' + KeyValuesToCaptionStr(ACmd.ShortcutA, ACmd.ShortcutB, '('));
|
||||
AHint := AHint + sLineBreak + Project1.ActiveBuildMode.GetCaption;
|
||||
ACmd.Hint := AHint;
|
||||
if ProjInspector<>nil then
|
||||
begin
|
||||
ProjInspector.OptionsBitBtn.Hint := AHint;
|
||||
ProjInspector.UpdateTitle;
|
||||
end;
|
||||
ProjInspector.OptionsBitBtn.Hint := AHint; //ProjInspector.UpdateTitle;
|
||||
|
||||
// run
|
||||
ACmd := IDECommandList.FindIDECommand(ecRun);
|
||||
AHint := lisRun+' '+KeyValuesToCaptionStr(ACmd.ShortcutA,ACmd.ShortcutB,'(');
|
||||
if Assigned(Project1) and Assigned(Project1.RunParameterOptions.GetActiveMode) then
|
||||
AHint :=
|
||||
Trim(lisRun + ' ' + KeyValuesToCaptionStr(ACmd.ShortcutA, ACmd.ShortcutB, '(')) + sLineBreak +
|
||||
Format('[%s]', [Project1.RunParameterOptions.GetActiveMode.Name])
|
||||
else
|
||||
AHint :=
|
||||
Trim(lisRun + ' ' + KeyValuesToCaptionStr(ACmd.ShortcutA, ACmd.ShortcutB, '('));
|
||||
AHint := AHint + sLineBreak + Project1.RunParameterOptions.GetActiveMode.Name;
|
||||
ACmd.Hint := AHint;
|
||||
end;
|
||||
|
||||
|
@ -9,7 +9,9 @@ object ProjectInspectorForm: TProjectInspectorForm
|
||||
Caption = 'ProjectInspectorForm'
|
||||
ClientHeight = 456
|
||||
ClientWidth = 299
|
||||
OnActivate = FormActivate
|
||||
OnCreate = FormCreate
|
||||
OnDeactivate = FormDeactivate
|
||||
OnDropFiles = FormDropFiles
|
||||
LCLVersion = '2.1.0.0'
|
||||
object ItemsTreeView: TTreeView
|
||||
@ -31,7 +33,6 @@ object ProjectInspectorForm: TProjectInspectorForm
|
||||
OnDragDrop = ItemsTreeViewDragDrop
|
||||
OnDragOver = ItemsTreeViewDragOver
|
||||
OnKeyDown = ItemsTreeViewKeyDown
|
||||
OnSelectionChanged = ItemsTreeViewSelectionChanged
|
||||
Options = [tvoAllowMultiselect, tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoRightClickSelect, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw]
|
||||
end
|
||||
object BtnPanel: TPanel
|
||||
|
@ -114,7 +114,9 @@ type
|
||||
procedure CopyMoveToDirMenuItemClick(Sender: TObject);
|
||||
procedure DirectoryHierarchyButtonClick(Sender: TObject);
|
||||
procedure FilterEditKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState);
|
||||
procedure FormActivate(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormDeactivate(Sender: TObject);
|
||||
procedure FormDropFiles(Sender: TObject; const FileNames: array of String);
|
||||
procedure ItemsPopupMenuPopup(Sender: TObject);
|
||||
procedure ItemsTreeViewAdvancedCustomDrawItem(Sender: TCustomTreeView;
|
||||
@ -191,11 +193,15 @@ type
|
||||
procedure SetSortAlphabetically(const AValue: boolean);
|
||||
procedure SetupComponents;
|
||||
function OnTreeViewGetImageIndex({%H-}Str: String; Data: TObject; var {%H-}AIsEnabled: Boolean): Integer;
|
||||
procedure OnProjectBeginUpdate(Sender: TObject);
|
||||
procedure OnProjectEndUpdate(Sender: TObject; ProjectChanged: boolean);
|
||||
procedure ProjectBeginUpdate(Sender: TObject);
|
||||
procedure ProjectEndUpdate(Sender: TObject; ProjectChanged: boolean);
|
||||
procedure EnableI18NForSelectedLFM(TheEnable: boolean);
|
||||
procedure DoOnPackageListAvailable(Sender: TObject);
|
||||
function FindOnlinePackageLink(const ADependency: TPkgDependency): TPackageLink;
|
||||
function CanUpdate(Flag: TProjectInspectorFlag): boolean;
|
||||
procedure UpdateProjectFiles;
|
||||
procedure UpdateButtons;
|
||||
procedure UpdatePending;
|
||||
protected
|
||||
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
|
||||
procedure IdleHandler(Sender: TObject; var {%H-}Done: Boolean);
|
||||
@ -204,11 +210,7 @@ type
|
||||
destructor Destroy; override;
|
||||
function IsUpdateLocked: boolean; inline;
|
||||
procedure UpdateTitle;
|
||||
procedure UpdateProjectFiles;
|
||||
procedure UpdateRequiredPackages;
|
||||
procedure UpdateButtons;
|
||||
procedure UpdatePending;
|
||||
function CanUpdate(Flag: TProjectInspectorFlag): boolean;
|
||||
function GetSingleSelectedDependency: TPkgDependency;
|
||||
function TreeViewToInspector(TV: TTreeView): TProjectInspectorForm;
|
||||
public
|
||||
@ -579,6 +581,17 @@ begin
|
||||
OPMInterface.OnPackageListAvailable := @DoOnPackageListAvailable;
|
||||
end;
|
||||
|
||||
procedure TProjectInspectorForm.FormActivate(Sender: TObject);
|
||||
begin
|
||||
ItemsTreeView.OnSelectionChanged := @ItemsTreeViewSelectionChanged;
|
||||
end;
|
||||
|
||||
procedure TProjectInspectorForm.FormDeactivate(Sender: TObject);
|
||||
begin
|
||||
// Prevent calling handler when the tree gets updated with a project.
|
||||
ItemsTreeView.OnSelectionChanged := Nil;
|
||||
end;
|
||||
|
||||
procedure TProjectInspectorForm.FormDropFiles(Sender: TObject;
|
||||
const FileNames: array of String);
|
||||
var
|
||||
@ -972,18 +985,19 @@ end;
|
||||
procedure TProjectInspectorForm.SetLazProject(const AValue: TProject);
|
||||
begin
|
||||
if FLazProject=AValue then exit;
|
||||
if FLazProject<>nil then begin
|
||||
if FLazProject<>nil then begin // Old Project
|
||||
dec(FUpdateLock,LazProject.UpdateLock);
|
||||
FLazProject.OnBeginUpdate:=nil;
|
||||
FLazProject.OnEndUpdate:=nil;
|
||||
end;
|
||||
FLazProject:=AValue;
|
||||
if FLazProject<>nil then begin
|
||||
if FLazProject<>nil then begin // New Project
|
||||
inc(FUpdateLock,LazProject.UpdateLock);
|
||||
FLazProject.OnBeginUpdate:=@OnProjectBeginUpdate;
|
||||
FLazProject.OnEndUpdate:=@OnProjectEndUpdate;
|
||||
end;
|
||||
UpdateAll;
|
||||
FLazProject.OnBeginUpdate:=@ProjectBeginUpdate;
|
||||
FLazProject.OnEndUpdate:=@ProjectEndUpdate;
|
||||
end
|
||||
else // Only update when no project. ProjectEndUpdate will update a project.
|
||||
UpdateAll;
|
||||
end;
|
||||
|
||||
procedure TProjectInspectorForm.SetShowDirectoryHierarchy(const AValue: boolean);
|
||||
@ -1190,7 +1204,6 @@ begin
|
||||
finally
|
||||
ItemsTreeView.EndUpdate;
|
||||
end;
|
||||
UpdateButtons;
|
||||
end;
|
||||
|
||||
procedure TProjectInspectorForm.UpdateRequiredPackages;
|
||||
@ -1265,13 +1278,12 @@ begin
|
||||
UpdateButtons;
|
||||
end;
|
||||
|
||||
procedure TProjectInspectorForm.OnProjectBeginUpdate(Sender: TObject);
|
||||
procedure TProjectInspectorForm.ProjectBeginUpdate(Sender: TObject);
|
||||
begin
|
||||
BeginUpdate;
|
||||
end;
|
||||
|
||||
procedure TProjectInspectorForm.OnProjectEndUpdate(Sender: TObject;
|
||||
ProjectChanged: boolean);
|
||||
procedure TProjectInspectorForm.ProjectEndUpdate(Sender: TObject; ProjectChanged: boolean);
|
||||
begin
|
||||
if ProjectChanged then
|
||||
UpdateAll;
|
||||
@ -1353,11 +1365,10 @@ end;
|
||||
|
||||
procedure TProjectInspectorForm.IdleHandler(Sender: TObject; var Done: Boolean);
|
||||
begin
|
||||
if IsUpdateLocked then begin
|
||||
IdleConnected:=false;
|
||||
exit;
|
||||
end;
|
||||
UpdatePending;
|
||||
if IsUpdateLocked then
|
||||
IdleConnected:=false
|
||||
else
|
||||
UpdatePending;
|
||||
end;
|
||||
|
||||
function TProjectInspectorForm.GetSingleSelectedDependency: TPkgDependency;
|
||||
@ -1495,17 +1506,12 @@ end;
|
||||
|
||||
procedure TProjectInspectorForm.UpdateAll(Immediately: boolean);
|
||||
begin
|
||||
ItemsTreeView.BeginUpdate;
|
||||
try
|
||||
UpdateTitle;
|
||||
UpdateProjectFiles;
|
||||
UpdateRequiredPackages;
|
||||
UpdateButtons;
|
||||
if Immediately then
|
||||
UpdatePending;
|
||||
finally
|
||||
ItemsTreeView.EndUpdate;
|
||||
end;
|
||||
UpdateTitle;
|
||||
UpdateProjectFiles;
|
||||
UpdateRequiredPackages;
|
||||
UpdateButtons;
|
||||
if Immediately then
|
||||
UpdatePending;
|
||||
end;
|
||||
|
||||
procedure TProjectInspectorForm.UpdateTitle;
|
||||
@ -1514,13 +1520,10 @@ var
|
||||
IconStream: TStream;
|
||||
begin
|
||||
if not CanUpdate(pifNeedUpdateTitle) then exit;
|
||||
|
||||
Icon.Clear;
|
||||
if LazProject=nil then
|
||||
begin
|
||||
Caption:=lisMenuProjectInspector;
|
||||
end else
|
||||
begin
|
||||
Caption:=lisMenuProjectInspector
|
||||
else begin
|
||||
NewCaption:=LazProject.GetTitle;
|
||||
if NewCaption='' then
|
||||
NewCaption:=ExtractFilenameOnly(LazProject.ProjectInfoFile);
|
||||
@ -1553,12 +1556,10 @@ var
|
||||
CanOpenCount: Integer;
|
||||
begin
|
||||
if not CanUpdate(pifNeedUpdateButtons) then exit;
|
||||
|
||||
if LazProject<>nil then begin
|
||||
AddBitBtn.Enabled:=true;
|
||||
|
||||
CanRemoveCount:=0;
|
||||
CanOpenCount:=0;
|
||||
CanRemoveCount:=0;
|
||||
CanOpenCount:=0;
|
||||
if Assigned(LazProject) then
|
||||
begin
|
||||
for i:=0 to ItemsTreeView.SelectionCount-1 do begin
|
||||
TVNode:=ItemsTreeView.Selections[i];
|
||||
if not GetNodeDataItem(TVNode,NodeData,Item) then continue;
|
||||
@ -1574,41 +1575,30 @@ begin
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
RemoveBitBtn.Enabled:=(CanRemoveCount>0);
|
||||
OpenButton.Enabled:=(CanOpenCount>0);
|
||||
OptionsBitBtn.Enabled:=true;
|
||||
end else begin
|
||||
AddBitBtn.Enabled:=false;
|
||||
RemoveBitBtn.Enabled:=false;
|
||||
OpenButton.Enabled:=false;
|
||||
OptionsBitBtn.Enabled:=false;
|
||||
end;
|
||||
AddBitBtn.Enabled:=Assigned(LazProject);
|
||||
RemoveBitBtn.Enabled:=(CanRemoveCount>0);
|
||||
OpenButton.Enabled:=(CanOpenCount>0);
|
||||
OptionsBitBtn.Enabled:=Assigned(LazProject);
|
||||
end;
|
||||
|
||||
procedure TProjectInspectorForm.UpdatePending;
|
||||
begin
|
||||
ItemsTreeView.BeginUpdate;
|
||||
try
|
||||
if pifNeedUpdateFiles in FFlags then
|
||||
UpdateProjectFiles;
|
||||
if pifNeedUpdateDependencies in FFlags then
|
||||
UpdateRequiredPackages;
|
||||
if pifNeedUpdateTitle in FFlags then
|
||||
UpdateTitle;
|
||||
if pifNeedUpdateButtons in FFlags then
|
||||
UpdateButtons;
|
||||
IdleConnected:=false;
|
||||
finally
|
||||
ItemsTreeView.EndUpdate;
|
||||
end;
|
||||
if pifNeedUpdateFiles in FFlags then
|
||||
UpdateProjectFiles;
|
||||
if pifNeedUpdateDependencies in FFlags then
|
||||
UpdateRequiredPackages;
|
||||
if pifNeedUpdateTitle in FFlags then
|
||||
UpdateTitle;
|
||||
if pifNeedUpdateButtons in FFlags then
|
||||
UpdateButtons;
|
||||
IdleConnected:=false;
|
||||
end;
|
||||
|
||||
function TProjectInspectorForm.CanUpdate(Flag: TProjectInspectorFlag): boolean;
|
||||
begin
|
||||
Result:=false;
|
||||
if csDestroying in ComponentState then exit;
|
||||
if LazProject=nil then exit;
|
||||
if IsUpdateLocked then begin
|
||||
Include(fFlags,Flag);
|
||||
IdleConnected:=true;
|
||||
|
Loading…
Reference in New Issue
Block a user