IDE: package editor: menu items for expand and collapse directory

git-svn-id: trunk@29109 -
This commit is contained in:
mattias 2011-01-18 14:20:03 +00:00
parent a9b81694a4
commit 397deec80b
3 changed files with 84 additions and 16 deletions

View File

@ -3770,6 +3770,8 @@ resourcestring
lisAF2PHasRegisterProcedure = 'Has Register procedure';
lisAF2PIsVirtualUnit = 'Virtual unit (source is not in package)';
lisAF2PFileType = 'File Type';
lisPEExpandDirectory = 'Expand directory';
lisPECollapseDirectory = 'Collapse directory';
lisAF2PDestinationPackage = 'Destination Package';
lisAF2PShowAll = 'Show All';
lisAF2PAddFileToAPackage = 'Add file to a package';

View File

@ -421,6 +421,7 @@ var
// Package editor(s)
PackageEditorMenuRoot: TIDEMenuSection = nil;
PkgEditMenuSectionFile: TIDEMenuSection; // e.g. open file, remove file, move file up/down
PkgEditMenuSectionDirectory: TIDEMenuSection; // e.g. change all properties of all files in a directory and ub directories
PkgEditMenuSectionDependency: TIDEMenuSection; // e.g. open package, remove dependency
PkgEditMenuSectionFiles: TIDEMenuSection; // e.g. sort files, clean up files
PkgEditMenuSectionUse: TIDEMenuSection; // e.g. install, add to project

View File

@ -61,6 +61,9 @@ var
PkgEditMenuEditVirtualUnit: TIDEMenuCommand;
PkgEditMenuSectionFileType: TIDEMenuSection;
PkgEditMenuExpandDirectory: TIDEMenuCommand;
PkgEditMenuCollapseDirectory: TIDEMenuCommand;
PkgEditMenuOpenPackage: TIDEMenuCommand;
PkgEditMenuRemoveDependency: TIDEMenuCommand;
PkgEditMenuReAddDependency: TIDEMenuCommand;
@ -181,29 +184,30 @@ type
UsePopupMenu: TPopupMenu;
FilesPopupMenu: TPopupMenu;
procedure AddBitBtnClick(Sender: TObject);
procedure AddToUsesPkgSectionCheckBoxChange(Sender: TObject);
procedure AddToProjectClick(Sender: TObject);
procedure AddToUsesPkgSectionCheckBoxChange(Sender: TObject);
procedure ApplyDependencyButtonClick(Sender: TObject);
procedure CallRegisterProcCheckBoxChange(Sender: TObject);
procedure ChangeFileTypeMenuItemClick(Sender: TObject);
procedure ClearDependencyFilenameMenuItemClick(Sender: TObject);
procedure CollapseDirectoryMenuItemClick(Sender: TObject);
procedure CompileAllCleanClick(Sender: TObject);
procedure CompileBitBtnClick(Sender: TObject);
procedure CompileCleanClick(Sender: TObject);
procedure CompilerOptionsBitBtnClick(Sender: TObject);
procedure CreateMakefileClick(Sender: TObject);
procedure DirectoryHierarchySpeedButtonClick(Sender: TObject);
procedure EditVirtualUnitMenuItemClick(Sender: TObject);
procedure ExpandDirectoryMenuItemClick(Sender: TObject);
procedure FilePropsGroupBoxResize(Sender: TObject);
procedure FilesPopupMenuPopup(Sender: TObject);
procedure FilterEditChange(Sender: TObject);
procedure FilterEditEnter(Sender: TObject);
procedure FilterEditExit(Sender: TObject);
procedure SortAlphabeticallySpeedButtonClick(Sender: TObject);
procedure UsePopupMenuPopup(Sender: TObject);
procedure FilesTreeViewDblClick(Sender: TObject);
procedure FilesTreeViewKeyPress(Sender: TObject; var Key: Char);
procedure FilesTreeViewSelectionChanged(Sender: TObject);
procedure FilterEditChange(Sender: TObject);
procedure FilterEditEnter(Sender: TObject);
procedure FilterEditExit(Sender: TObject);
procedure FixFilesCaseMenuItemClick(Sender: TObject);
procedure ShowMissingFilesMenuItemClick(Sender: TObject);
procedure HelpBitBtnClick(Sender: TObject);
procedure InstallClick(Sender: TObject);
procedure MaxVersionEditChange(Sender: TObject);
@ -212,9 +216,6 @@ type
procedure MoveDependencyUpClick(Sender: TObject);
procedure MoveFileDownMenuItemClick(Sender: TObject);
procedure MoveFileUpMenuItemClick(Sender: TObject);
procedure SetDependencyDefaultFilenameMenuItemClick(Sender: TObject);
procedure SetDependencyPreferredFilenameMenuItemClick(Sender: TObject);
procedure ClearDependencyFilenameMenuItemClick(Sender: TObject);
procedure OpenFileMenuItemClick(Sender: TObject);
procedure OptionsBitBtnClick(Sender: TObject);
procedure PackageEditorFormClose(Sender: TObject; var CloseAction: TCloseAction);
@ -224,14 +225,18 @@ type
procedure RegisteredListBoxDrawItem(Control: TWinControl; Index: Integer;
ARect: TRect; State: TOwnerDrawState);
procedure RemoveBitBtnClick(Sender: TObject);
procedure EditVirtualUnitMenuItemClick(Sender: TObject);
procedure RevertClick(Sender: TObject);
procedure SaveAsClick(Sender: TObject);
procedure SaveBitBtnClick(Sender: TObject);
procedure SetDependencyDefaultFilenameMenuItemClick(Sender: TObject);
procedure SetDependencyPreferredFilenameMenuItemClick(Sender: TObject);
procedure ShowMissingFilesMenuItemClick(Sender: TObject);
procedure SortAlphabeticallySpeedButtonClick(Sender: TObject);
procedure SortFilesMenuItemClick(Sender: TObject);
procedure UninstallClick(Sender: TObject);
procedure UseMaxVersionCheckBoxChange(Sender: TObject);
procedure UseMinVersionCheckBoxChange(Sender: TObject);
procedure UsePopupMenuPopup(Sender: TObject);
procedure ViewPkgSourceClick(Sender: TObject);
procedure ViewPkgTodosClick(Sender: TObject);
private
@ -289,6 +294,8 @@ type
procedure DoMoveCurrentFile(Offset: integer);
procedure DoPublishProject;
procedure DoEditVirtualUnit;
procedure DoExpandDirectory;
procedure DoCollapseDirectory;
procedure DoRevert;
procedure DoSave(SaveAs: boolean);
procedure DoSortFiles;
@ -439,6 +446,12 @@ begin
PkgEditMenuEditVirtualUnit:=RegisterIDEMenuCommand(AParent,'Edit Virtual File',lisPEEditVirtualUnit);
PkgEditMenuSectionFileType:=RegisterIDESubMenu(AParent,'File Type',lisAF2PFileType);
// register the section for operations on directories
PkgEditMenuSectionDirectory:=RegisterIDEMenuSection(PackageEditorMenuRoot,'Directory');
AParent:=PkgEditMenuSectionDirectory;
PkgEditMenuExpandDirectory:=RegisterIDEMenuCommand(AParent,'Expand directory',lisPEExpandDirectory);
PkgEditMenuCollapseDirectory:=RegisterIDEMenuCommand(AParent, 'Collapse directory', lisPECollapseDirectory);
// register the section for operations on single dependencies
PkgEditMenuSectionDependency:=RegisterIDEMenuSection(PackageEditorMenuRoot,'Dependency');
AParent:=PkgEditMenuSectionDependency;
@ -553,6 +566,8 @@ var
CurFile: TPkgFile;
Writable: Boolean;
FileIndex: Integer;
CurNode: TTreeNode;
IsDir: Boolean;
procedure SetItem(Item: TIDEMenuCommand; AnOnClick: TNotifyEvent;
aShow: boolean = true; AEnable: boolean = true);
@ -602,17 +617,20 @@ begin
//debugln(['TPackageEditorForm.FilesPopupMenuPopup START after connect ',FilesPopupMenu.Items.Count]);
PackageEditorMenuRoot.BeginUpdate;
try
CurNode:=FilesTreeView.Selected;
CurDependency:=GetCurrentDependency(Removed);
Writable:=(not LazPackage.ReadOnly);
if (CurDependency=nil) then
CurFile:=GetCurrentFile(Removed)
else
CurFile:=nil;
IsDir:=IsDirectoryNode(CurNode) or (CurNode=FFilesNode);
PkgEditMenuSectionFileType.Clear;
// items for single files
PkgEditMenuSectionFile.Visible:=CurFile<>nil;
if (CurFile<>nil) then begin
PkgEditMenuSectionFile.Visible:=true;
FileIndex:=LazPackage.IndexOfPkgFile(CurFile);
SetItem(PkgEditMenuOpenFile,@OpenFileMenuItemClick);
SetItem(PkgEditMenuReAddFile,@ReAddMenuItemClick,Removed);
@ -626,9 +644,16 @@ begin
AddFileTypeMenuItem;
SetItem(PkgEditMenuEditVirtualUnit,@EditVirtualUnitMenuItemClick,
(CurFile.FileType=pftVirtualUnit) and not Removed,Writable);
end else begin
PkgEditMenuSectionFile.Visible:=false;
end;
// items for directories
PkgEditMenuSectionDirectory.Visible:=IsDir and ShowDirectoryHierarchy;
if IsDir and ShowDirectoryHierarchy then begin
SetItem(PkgEditMenuExpandDirectory,@ExpandDirectoryMenuItemClick);
SetItem(PkgEditMenuCollapseDirectory,@CollapseDirectoryMenuItemClick);
end;
// items for all files
SetItem(PkgEditMenuSortFiles,@SortFilesMenuItemClick,(LazPackage.FileCount>1),Writable);
SetItem(PkgEditMenuFixFilesCase,@FixFilesCaseMenuItemClick,(LazPackage.FileCount>1),Writable);
SetItem(PkgEditMenuShowMissingFiles,@ShowMissingFilesMenuItemClick,(LazPackage.FileCount>1),Writable);
@ -844,6 +869,11 @@ begin
UpdateButtons;
end;
procedure TPackageEditorForm.CollapseDirectoryMenuItemClick(Sender: TObject);
begin
DoCollapseDirectory;
end;
procedure TPackageEditorForm.MoveFileDownMenuItemClick(Sender: TObject);
begin
DoMoveCurrentFile(1);
@ -1010,6 +1040,11 @@ begin
DoEditVirtualUnit;
end;
procedure TPackageEditorForm.ExpandDirectoryMenuItemClick(Sender: TObject);
begin
DoExpandDirectory;
end;
procedure TPackageEditorForm.RevertClick(Sender: TObject);
begin
DoRevert;
@ -1148,7 +1183,8 @@ var
begin
// add file
with AddParams do begin
if CompareFileExt(UnitFilename,'.inc',false)=0 then
if (CompareFileExt(UnitFilename,'.inc',false)=0)
or (CompareFileExt(UnitFilename,'.lrs',false)=0) then
ExtendIncPathForNewIncludeFile(UnitFilename,IgnoreIncPaths);
FNextSelectedPart := LazPackage.AddFile(UnitFilename,Unit_Name,FileType,
PkgFileFlags,cpNormal);
@ -2406,6 +2442,35 @@ begin
UpdateAll(true);
end;
procedure TPackageEditorForm.DoExpandDirectory;
var
CurNode: TTreeNode;
begin
if not ShowDirectoryHierarchy then exit;
CurNode:=FilesTreeView.Selected;
if not (IsDirectoryNode(CurNode) or (CurNode=FFilesNode)) then exit;
FilesTreeView.BeginUpdate;
CurNode.Expand(true);
FilesTreeView.EndUpdate;
end;
procedure TPackageEditorForm.DoCollapseDirectory;
var
CurNode: TTreeNode;
Node: TTreeNode;
begin
if not ShowDirectoryHierarchy then exit;
CurNode:=FilesTreeView.Selected;
if not (IsDirectoryNode(CurNode) or (CurNode=FFilesNode)) then exit;
FilesTreeView.BeginUpdate;
Node:=CurNode.GetFirstChild;
while Node<>nil do begin
Node.Collapse(true);
Node:=Node.GetNextSibling;
end;
FilesTreeView.EndUpdate;
end;
procedure TPackageEditorForm.DoMoveCurrentFile(Offset: integer);
var
Removed: boolean;