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