IDEIntf: implemented TIDEMenuSection.Visible, added menu items for package editor

git-svn-id: trunk@26159 -
This commit is contained in:
mattias 2010-06-17 14:44:59 +00:00
parent 6e5c9ebf1c
commit 2a3b817e5c
5 changed files with 261 additions and 147 deletions

View File

@ -3786,7 +3786,7 @@ resourcestring
lisPckEditAddToProject = 'Add to project';
lisPckEditInstall = 'Install';
lisPckEditUninstall = 'Uninstall';
lisPckEditViewPackgeSource = 'View Package Source';
lisPckEditViewPackageSource = 'View Package Source';
lisPEViewToDoList = 'View ToDo list';
lisPckEditGeneralOptions = 'General Options';
lisPckEditSaveChanges = 'Save Changes?';

View File

@ -12698,7 +12698,7 @@ begin
begin
IDEWindowCreators.ShowForm(SearchResultsView,true);
if IDEDockMaster=nil then
// the sourcenotebook is more interesting than the messages
// the sourcenotebook is more interesting than the search results
SourceEditorManager.ShowActiveWindowOnTop(False);
end;
end;

View File

@ -368,7 +368,7 @@ var
itmInfoHelps: TIDEMenuSection;
itmHelpTools: TIDEMenuSection;
// Source Editor: Popupmenu
// Source Editor(s): Popupmenu
SourceEditorMenuRoot: TIDEMenuSection = nil;
// Source Editor: First dynamic section for often used context sensitive stuff
// The items are cleared automatically after each popup.
@ -415,6 +415,17 @@ var
DesignerMenuSectionMisc: TIDEMenuSection;
DesignerMenuSectionOptions: TIDEMenuSection;
// Package editor(s)
PackageEditorMenuRoot: TIDEMenuSection = nil;
PkgEditMenuSectionFile: TIDEMenuSection; // e.g. open file, remove file, move file up/down
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
PkgEditMenuSectionSave: TIDEMenuSection; // e.g. save as, revert, publish
PkgEditMenuSectionCompile: TIDEMenuSection; // e.g. build clean, create Makefile
PkgEditMenuSectionAddRemove: TIDEMenuSection; // e.g. add unit, add dependency
PkgEditMenuSectionMisc: TIDEMenuSection; // e.g. options
function RegisterIDEMenuRoot(const Name: string; MenuItem: TMenuItem = nil
): TIDEMenuSection;
function RegisterIDEMenuSection(Parent: TIDEMenuSection;
@ -639,15 +650,11 @@ procedure TIDEMenuItem.SetMenuItem(const AValue: TMenuItem);
begin
if FMenuItem = AValue then exit;
if FMenuItem <> nil then ClearMenuItems;
if FMenuItem = nil then
begin
FMenuItem := AValue;
AutoFreeMenuItem := False;
if MenuItem <> nil then
MenuItem.AddHandlerOnDestroy(@MenuItemDestroy);
end;
FMenuItem := AValue;
AutoFreeMenuItem := False;
if MenuItem <> nil then
begin
MenuItem.AddHandlerOnDestroy(@MenuItemDestroy);
MenuItem.Caption := Caption;
MenuItem.Bitmap := FBitmap;
MenuItem.Hint := Hint;
@ -896,7 +903,7 @@ var
procedure UpdateNeedTopSeparator;
// a separator at top is needed, if
// - this section is imbedded (not ChildsAsSubMenu)
// - this section is embedded (not ChildsAsSubMenu)
// - and this section is visible
// - and this section has visible childs
// - and there is a visible menu item in front
@ -912,7 +919,7 @@ var
if Section[i].VisibleActive then begin
// there is a visible menu item in front
// => the Top separator is needed
//debugln('TIDEMenuSection.UpdateNeedTopSeparator Name="',Name,'" ItemInFront="',Section[i].Name,'"');
//debugln('TIDEMenuSection.UpdateNeedTopSeparator Name="',Name,'" ItemInFront="',Section[i].Name,'" ');
NewNeedTopSeparator:=true;
break;
end;
@ -1061,8 +1068,9 @@ begin
inc(ContainerMenuIndex);
// update childs
for i:=0 to FInvalidChildStartIndex-1 do
inc(ContainerMenuIndex,Items[i].Size);
if Visible then
for i:=0 to FInvalidChildStartIndex-1 do
inc(ContainerMenuIndex,Items[i].Size);
while (FInvalidChildStartIndex<=FInvalidChildEndIndex)
and (FInvalidChildStartIndex<Count) do begin
Item:=Items[FInvalidChildStartIndex];
@ -1074,9 +1082,10 @@ begin
CurSection:=TIDEMenuSection(Item)
else
CurSection:=nil;
// insert menu item
if (CurSection=nil) or CurSection.ChildsAsSubMenu then begin
if ContainerMenuItem<>nil then begin
if Visible then begin
// insert menu item
if ((CurSection=nil) or CurSection.ChildsAsSubMenu)
and (ContainerMenuItem<>nil) then begin
Item.CreateMenuItem;
if Item.MenuItem.Parent=nil then begin
{$IFDEF VerboseMenuIntf}
@ -1085,17 +1094,24 @@ begin
ContainerMenuItem.Insert(ContainerMenuIndex,Item.MenuItem);
end;
end;
// update grand childs
if CurSection<>nil then begin
CurSection:=TIDEMenuSection(Item);
CurSection.FInvalidChildStartIndex:=0;
CurSection.FInvalidChildEndIndex:=CurSection.Count-1;
CurSection.UpdateMenuStructure;
end;
//debugln('TIDEMenuSection.UpdateMenuStructure Increase ContainerMenuIndex MenuItem Name="',Name,'" Item="',Item.Name,'" ContainerMenuIndex=',dbgs(ContainerMenuIndex),' Item.Size=',dbgs(Item.Size));
inc(ContainerMenuIndex,Item.Size);
end else begin
// clear menu items
Item.MenuItem:=nil;
if CurSection<>nil then begin
// Separators are not needed anymore
FreeAndNil(CurSection.FTopSeparator);
FreeAndNil(CurSection.FBottomSeparator);
end;
end;
// update grand childs
if CurSection<>nil then begin
CurSection:=TIDEMenuSection(Item);
CurSection.FInvalidChildStartIndex:=0;
CurSection.FInvalidChildEndIndex:=CurSection.Count-1;
CurSection.UpdateMenuStructure;
end;
// next
//debugln('TIDEMenuSection.UpdateMenuStructure Increase ContainerMenuIndex MenuItem Name="',Name,'" Item="',Item.Name,'" ContainerMenuIndex=',dbgs(ContainerMenuIndex),' Item.Size=',dbgs(Item.Size));
inc(ContainerMenuIndex,Item.Size);
end;
// update BottomSeparator
@ -1174,6 +1190,8 @@ procedure TIDEMenuSection.ItemVisibleActiveChanged(AnItem: TIDEMenuItem);
var
OldVisibleActive: Boolean;
NowVisibleActive: Boolean;
FromIndex: LongInt;
ToIndex: LongInt;
begin
if imssClearing in FStates then
exit;
@ -1182,7 +1200,11 @@ begin
RaiseGDBException('');
AnItem.FLastVisibleActive:=NowVisibleActive;
Invalidate(AnItem.SectionIndex,AnItem.SectionIndex);
FromIndex:=AnItem.SectionIndex;
ToIndex:=AnItem.SectionIndex;
if (FromIndex>0) and NowVisibleActive then dec(FromIndex);
if (ToIndex<Count-1) and not NowVisibleActive then inc(ToIndex);
Invalidate(FromIndex,ToIndex);
{$IFDEF VerboseMenuIntf}
debugln('TIDEMenuSection.ItemVisibleActiveChanged Self="',Name,'" AnItem="',AnItem.Name,'" AnItem.VisibleActive=',dbgs(AnItem.VisibleActive));
{$ENDIF}
@ -1375,7 +1397,7 @@ end;
function TIDEMenuSection.VisibleActive: boolean;
begin
Result:=VisibleCount>0;
Result:=Visible and (VisibleCount>0);
end;
function TIDEMenuSection.Size: integer;

View File

@ -41,13 +41,58 @@ uses
Classes, SysUtils, Forms, Controls, StdCtrls, ComCtrls, Buttons, LResources,
Graphics, LCLType, LCLProc, Menus, Dialogs, FileUtil, AVL_Tree,
// IDEIntf CodeTools
HelpIntfs, LazIDEIntf, ProjectIntf, FormEditingIntf, Laz_XMLCfg, PackageIntf,
MenuIntf, HelpIntfs, LazIDEIntf, ProjectIntf, FormEditingIntf, Laz_XMLCfg,
PackageIntf,
// IDE
MainIntf, IDEProcs, LazConf, LazarusIDEStrConsts, IDEOptionDefs, IDEDefs,
IDEContextHelpEdit, CompilerOptions, CompilerOptionsDlg, ComponentReg,
PackageDefs, PkgOptionsDlg, AddToPackageDlg, PkgVirtualUnitEditor,
PackageSystem;
const
PackageEditorMenuRootName = 'PackageEditor';
var
PkgEditMenuOpenFile: TIDEMenuCommand;
PkgEditMenuRemoveFile: TIDEMenuCommand;
PkgEditMenuReAddFile: TIDEMenuCommand;
PkgEditMenuMoveFileUp: TIDEMenuCommand;
PkgEditMenuMoveFileDown: TIDEMenuCommand;
PkgEditMenuEditVirtualUnit: TIDEMenuCommand;
PkgEditMenuSectionFileType: TIDEMenuSection;
PkgEditMenuOpenPackage: TIDEMenuCommand;
PkgEditMenuRemoveDependency: TIDEMenuCommand;
PkgEditMenuReAddDependency: TIDEMenuCommand;
PkgEditMenuMoveDependencyUp: TIDEMenuCommand;
PkgEditMenuMoveDependencyDown: TIDEMenuCommand;
PkgEditMenuDependencyStoreFileNameAsDefault: TIDEMenuCommand;
PkgEditMenuDependencyStoreFileNameAsPreferred: TIDEMenuCommand;
PkgEditMenuDependencyClearStoredFileName: TIDEMenuCommand;
PkgEditMenuSortFiles: TIDEMenuCommand;
PkgEditMenuFixFilesCase: TIDEMenuCommand;
PkgEditMenuAddToProject: TIDEMenuCommand;
PkgEditMenuInstall: TIDEMenuCommand;
PkgEditMenuUninstall: TIDEMenuCommand;
PkgEditMenuSave: TIDEMenuCommand;
PkgEditMenuSaveAs: TIDEMenuCommand;
PkgEditMenuRevert: TIDEMenuCommand;
PkgEditMenuPublish: TIDEMenuCommand;
PkgEditMenuCompile: TIDEMenuCommand;
PkgEditMenuRecompileClean: TIDEMenuCommand;
PkgEditMenuRecompileAllRequired: TIDEMenuCommand;
PkgEditMenuCreateMakefile: TIDEMenuCommand;
PkgEditMenuAdd: TIDEMenuCommand;
PkgEditMenuRemove: TIDEMenuCommand;
PkgEditMenuGeneralOptions: TIDEMenuCommand;
PkgEditMenuCompilerOptions: TIDEMenuCommand;
PkgEditMenuViewPackageSource: TIDEMenuCommand;
type
TOnCreatePkgMakefile =
function(Sender: TObject; APackage: TLazPackage): TModalResult of object;
@ -331,6 +376,7 @@ type
var
PackageEditors: TPackageEditors;
procedure RegisterStandardPackageEditorMenuItems;
implementation
@ -371,6 +417,78 @@ begin
Result:=CompareFilenames(Filename,Layout.Filename);
end;
procedure RegisterStandardPackageEditorMenuItems;
var
AParent: TIDEMenuSection;
begin
PackageEditorMenuRoot:=RegisterIDEMenuRoot(PackageEditorMenuRootName);
// register the section for operations on single files
PkgEditMenuSectionFile:=RegisterIDEMenuSection(PackageEditorMenuRoot,'File');
AParent:=PkgEditMenuSectionFile;
PkgEditMenuOpenFile:=RegisterIDEMenuCommand(AParent,'Open File',lisOpenFile);
PkgEditMenuRemoveFile:=RegisterIDEMenuCommand(AParent,'Remove File',lisPckEditRemoveFile);
PkgEditMenuReAddFile:=RegisterIDEMenuCommand(AParent,'ReAdd File',lisPckEditReAddFile);
PkgEditMenuMoveFileUp:=RegisterIDEMenuCommand(AParent,'Move File Up',lisPEMoveFileUp);
PkgEditMenuMoveFileDown:=RegisterIDEMenuCommand(AParent,'Move File Down',lisPEMoveFileDown);
PkgEditMenuEditVirtualUnit:=RegisterIDEMenuCommand(AParent,'Edit Virtual File',lisPEEditVirtualUnit);
PkgEditMenuSectionFileType:=RegisterIDESubMenu(AParent,'File Type',lisAF2PFileType);
// register the section for operations on single dependencies
PkgEditMenuSectionDependency:=RegisterIDEMenuSection(PackageEditorMenuRoot,'Dependency');
AParent:=PkgEditMenuSectionDependency;
PkgEditMenuOpenPackage:=RegisterIDEMenuCommand(AParent,'Open Package',lisMenuOpenPackage);
PkgEditMenuRemoveDependency:=RegisterIDEMenuCommand(AParent,'Remove Dependency',lisPckEditRemoveDependency);
PkgEditMenuReAddDependency:=RegisterIDEMenuCommand(AParent,'ReAdd Dependency',lisPckEditReAddDependency);
PkgEditMenuMoveDependencyUp:=RegisterIDEMenuCommand(AParent,'Move Dependency Up',lisPckEditMoveDependencyUp);
PkgEditMenuMoveDependencyDown:=RegisterIDEMenuCommand(AParent,'Move Dependency Down',lisPckEditMoveDependencyDown);
PkgEditMenuDependencyStoreFileNameAsDefault:=RegisterIDEMenuCommand(AParent,'Dependency Store Filename As Default',lisPckEditStoreFileNameAsDefaultForThisDependency);
PkgEditMenuDependencyStoreFileNameAsPreferred:=RegisterIDEMenuCommand(AParent,'Dependency Store Filename As Preferred',lisPckEditStoreFileNameAsPreferredForThisDependency);
PkgEditMenuDependencyClearStoredFileName:=RegisterIDEMenuCommand(AParent,'Dependency Clear Stored Filename',lisPckEditClearDefaultPreferredFilenameOfDependency);
// register the section for operations on all files
PkgEditMenuSectionFiles:=RegisterIDEMenuSection(PackageEditorMenuRoot,'Files');
AParent:=PkgEditMenuSectionFiles;
PkgEditMenuSortFiles:=RegisterIDEMenuCommand(AParent,'Sort Files',lisPESortFiles);
PkgEditMenuFixFilesCase:=RegisterIDEMenuCommand(AParent,'Fix Files Case',lisPEFixFilesCase);
// register the section for using the package
PkgEditMenuSectionUse:=RegisterIDEMenuSection(PackageEditorMenuRoot,'Use');
AParent:=PkgEditMenuSectionUse;
PkgEditMenuAddToProject:=RegisterIDEMenuCommand(AParent,'Add To Project',lisPckEditAddToProject);
PkgEditMenuInstall:=RegisterIDEMenuCommand(AParent,'Install',lisPckEditInstall);
PkgEditMenuUninstall:=RegisterIDEMenuCommand(AParent,'Uninstall',lisPckEditUninstall);
// register the section for saving the package
PkgEditMenuSectionSave:=RegisterIDEMenuSection(PackageEditorMenuRoot,'Save');
AParent:=PkgEditMenuSectionSave;
PkgEditMenuSave:=RegisterIDEMenuCommand(AParent,'Save',lisMenuSave);
PkgEditMenuSaveAs:=RegisterIDEMenuCommand(AParent,'Save As',lisMenuSaveAs);
PkgEditMenuRevert:=RegisterIDEMenuCommand(AParent,'Revert',lisMenuRevert);
PkgEditMenuPublish:=RegisterIDEMenuCommand(AParent,'Publish',lisPkgEditPublishPackage);
// register the section for compiling the package
PkgEditMenuSectionCompile:=RegisterIDEMenuSection(PackageEditorMenuRoot,'Compile');
AParent:=PkgEditMenuSectionCompile;
PkgEditMenuCompile:=RegisterIDEMenuCommand(AParent,'Compile',lisPckEditCompile);
PkgEditMenuRecompileClean:=RegisterIDEMenuCommand(AParent,'Recompile Clean',lisPckEditRecompileClean);
PkgEditMenuRecompileAllRequired:=RegisterIDEMenuCommand(AParent,'Recompile All Required',lisPckEditRecompileAllRequired);
PkgEditMenuCreateMakefile:=RegisterIDEMenuCommand(AParent,'Create Makefile',lisPckEditCreateMakefile);
// register the section for adding to or removing from package
PkgEditMenuSectionAddRemove:=RegisterIDEMenuSection(PackageEditorMenuRoot,'AddRemove');
AParent:=PkgEditMenuSectionCompile;
PkgEditMenuAdd:=RegisterIDEMenuCommand(AParent,'Add',lisCodeTemplAdd);
PkgEditMenuRemove:=RegisterIDEMenuCommand(AParent,'Remove',lisExtToolRemove);
// register the section for other things
PkgEditMenuSectionMisc:=RegisterIDEMenuSection(PackageEditorMenuRoot,'Misc');
AParent:=PkgEditMenuSectionMisc;
PkgEditMenuGeneralOptions:=RegisterIDEMenuCommand(AParent,'General Options',lisPckEditGeneralOptions);
PkgEditMenuCompilerOptions:=RegisterIDEMenuCommand(AParent,'Compiler Options',dlgCompilerOptions);
PkgEditMenuViewPackageSource:=RegisterIDEMenuCommand(AParent,'View Package Source',lisPckEditViewPackageSource);
end;
{ TPackageEditorForm }
procedure TPackageEditorForm.PublishClick(Sender: TObject);
@ -417,43 +535,34 @@ end;
procedure TPackageEditorForm.FilesPopupMenuPopup(Sender: TObject);
var
ItemCnt: Integer;
CurDependency: TPkgDependency;
Removed: boolean;
CurFile: TPkgFile;
Writable: Boolean;
FileIndex: Integer;
function AddPopupMenuItem(const ACaption: string; AnEvent: TNotifyEvent;
EnabledFlag: boolean): TMenuItem;
procedure SetItem(Item: TIDEMenuCommand; AnOnClick: TNotifyEvent;
aShow: boolean = true; AEnable: boolean = true);
begin
if FilesPopupMenu.Items.Count<=ItemCnt then begin
Result:=TMenuItem.Create(Self);
FilesPopupMenu.Items.Add(Result);
end else begin
Result:=FilesPopupMenu.Items[ItemCnt];
while Result.Count>0 do Result.Delete(Result.Count-1);
end;
Result.Caption:=ACaption;
Result.OnClick:=AnEvent;
Result.Enabled:=EnabledFlag;
inc(ItemCnt);
Item.OnClick:=AnOnClick;
Item.Visible:=aShow;
Item.Enabled:=AEnable;
end;
procedure AddFileTypeMenuItem;
var
FileTypeMenuItem: TMenuItem;
CurPFT: TPkgFileType;
NewMenuItem: TMenuItem;
VirtualFileExists: Boolean;
NewMenuItem: TIDEMenuCommand;
begin
FileTypeMenuItem:=AddPopupMenuItem(lisAF2PFileType, nil, true);
PkgEditMenuSectionFileType.Clear;
VirtualFileExists:=(CurFile.FileType=pftVirtualUnit)
and FileExistsUTF8(CurFile.Filename);
for CurPFT:=Low(TPkgFileType) to High(TPkgFileType) do begin
NewMenuItem:=TMenuItem.Create(Self);
NewMenuItem.Caption:=GetPkgFileTypeLocalizedName(CurPFT);
NewMenuItem.OnClick:=@ChangeFileTypeMenuItemClick;
NewMenuItem:=RegisterIDEMenuCommand(PkgEditMenuSectionFileType,
'SetFileType'+IntToStr(ord(CurPFT)),
GetPkgFileTypeLocalizedName(CurPFT),
@ChangeFileTypeMenuItemClick);
if CurPFT=CurFile.FileType then begin
// menuitem to keep the current type
NewMenuItem.Enabled:=true;
@ -470,110 +579,92 @@ var
else
// default is to not allow
NewMenuItem.Enabled:=false;
FileTypeMenuItem.Add(NewMenuItem);
end;
end;
begin
ItemCnt:=0;
PackageEditorMenuRoot.MenuItem:=FilesPopupMenu.Items;
//debugln(['TPackageEditorForm.FilesPopupMenuPopup START ',FilesPopupMenu.Items.Count]);
PackageEditorMenuRoot.BeginUpdate;
try
CurDependency:=GetCurrentDependency(Removed);
Writable:=(not LazPackage.ReadOnly);
if (CurDependency=nil) then
CurFile:=GetCurrentFile(Removed)
else
CurFile:=nil;
CurDependency:=GetCurrentDependency(Removed);
Writable:=(not LazPackage.ReadOnly);
if (CurDependency=nil) then
CurFile:=GetCurrentFile(Removed)
else
CurFile:=nil;
if (CurFile<>nil) then begin
FileIndex:=LazPackage.IndexOfPkgFile(CurFile);
if not Removed then begin
AddPopupMenuItem(lisOpenFile, @OpenFileMenuItemClick, true);
AddPopupMenuItem(lisPckEditRemoveFile, @RemoveBitBtnClick,
RemoveBitBtn.Enabled);
AddPopupMenuItem(lisPEMoveFileUp, @MoveFileUpMenuItemClick,
(FileIndex>0) and Writable);
AddPopupMenuItem(lisPEMoveFileDown, @MoveFileDownMenuItemClick,
(FileIndex<LazPackage.FileCount-1) and Writable);
PkgEditMenuSectionFileType.Clear;
if (CurFile<>nil) then begin
PkgEditMenuSectionFile.Visible:=true;
FileIndex:=LazPackage.IndexOfPkgFile(CurFile);
SetItem(PkgEditMenuOpenFile,@OpenFileMenuItemClick);
SetItem(PkgEditMenuReAddFile,@ReAddMenuItemClick,Removed);
SetItem(PkgEditMenuRemoveFile,@RemoveBitBtnClick,not Removed,RemoveBitBtn.Enabled);
SetItem(PkgEditMenuMoveFileUp,@MoveFileUpMenuItemClick,not Removed,(FileIndex>0) and Writable);
SetItem(PkgEditMenuMoveFileDown,@MoveFileDownMenuItemClick,
not Removed,(FileIndex>LazPackage.FileCount-1) and Writable);
PkgEditMenuSectionFileType.Visible:=true;
AddFileTypeMenuItem;
if CurFile.FileType=pftVirtualUnit then
AddPopupMenuItem(lisPEEditVirtualUnit, @EditVirtualUnitMenuItemClick,
Writable);
SetItem(PkgEditMenuEditVirtualUnit,@EditVirtualUnitMenuItemClick,
(CurFile.FileType=pftVirtualUnit) and not Removed,Writable);
end else begin
AddPopupMenuItem(lisOpenFile, @OpenFileMenuItemClick, true);
AddPopupMenuItem(lisPckEditReAddFile, @ReAddMenuItemClick,
AddBitBtn.Enabled);
PkgEditMenuSectionFile.Visible:=false;
end;
end;
if (LazPackage.FileCount>1) then begin
AddPopupMenuItem(lisPESortFiles, @SortFilesMenuItemClick, Writable);
AddPopupMenuItem(lisPEFixFilesCase, @FixFilesCaseMenuItemClick, Writable);
end;
SetItem(PkgEditMenuSortFiles,@SortFilesMenuItemClick,(LazPackage.FileCount>1),Writable);
SetItem(PkgEditMenuFixFilesCase,@FixFilesCaseMenuItemClick,(LazPackage.FileCount>1),Writable);
if CurDependency<>nil then begin
if (not Removed) then begin
AddPopupMenuItem(lisMenuOpenPackage, @OpenFileMenuItemClick, true);
AddPopupMenuItem(lisPckEditRemoveDependency, @RemoveBitBtnClick,
RemoveBitBtn.Enabled);
AddPopupMenuItem(lisPckEditMoveDependencyUp, @MoveDependencyUpClick,
(CurDependency.PrevRequiresDependency<>nil)
and Writable);
AddPopupMenuItem(lisPckEditMoveDependencyDown, @MoveDependencyDownClick,
(CurDependency.NextRequiresDependency<>nil)
and Writable);
AddPopupMenuItem(lisPckEditStoreFileNameAsDefaultForThisDependency,
@SetDependencyDefaultFilenameMenuItemClick,
Writable and (CurDependency.RequiredPackage<>nil));
AddPopupMenuItem(lisPckEditStoreFileNameAsPreferredForThisDependency,
@SetDependencyPreferredFilenameMenuItemClick,
Writable and (CurDependency.RequiredPackage<>nil));
AddPopupMenuItem(lisPckEditClearDefaultPreferredFilenameOfDependency,
@ClearDependencyFilenameMenuItemClick,
Writable and (CurDependency.DefaultFilename<>''));
end else begin
AddPopupMenuItem(lisMenuOpenPackage, @OpenFileMenuItemClick, true);
AddPopupMenuItem(lisPckEditReAddDependency, @ReAddMenuItemClick,
AddBitBtn.Enabled);
end;
if CurDependency<>nil then begin
PkgEditMenuSectionDependency.Visible:=true;
SetItem(PkgEditMenuOpenPackage,@OpenFileMenuItemClick,CurDependency.RequiredPackage<>nil);
SetItem(PkgEditMenuRemoveDependency,@RemoveBitBtnClick,not Removed,
RemoveBitBtn.Enabled);
SetItem(PkgEditMenuReAddDependency,@ReAddMenuItemClick,Removed and AddBitBtn.Enabled);
SetItem(PkgEditMenuMoveDependencyUp,@MoveDependencyUpClick,not Removed,
(CurDependency.PrevRequiresDependency<>nil) and Writable);
SetItem(PkgEditMenuMoveDependencyDown,@MoveDependencyDownClick,not Removed,
(CurDependency.NextRequiresDependency<>nil) and Writable);
SetItem(PkgEditMenuDependencyStoreFileNameAsDefault,
@SetDependencyDefaultFilenameMenuItemClick,not Removed,
Writable and (CurDependency.RequiredPackage<>nil));
SetItem(PkgEditMenuDependencyStoreFileNameAsPreferred,
@SetDependencyPreferredFilenameMenuItemClick,not Removed,
Writable and (CurDependency.RequiredPackage<>nil));
SetItem(PkgEditMenuDependencyClearStoredFileName,
@ClearDependencyFilenameMenuItemClick,not Removed,
Writable and (CurDependency.DefaultFilename<>''));
end else
PkgEditMenuSectionDependency.Visible:=false;
SetItem(PkgEditMenuAddToProject,@AddToProjectClick,true,CanBeAddedToProject);
SetItem(PkgEditMenuInstall,@InstallClick,true,not LazPackage.AutoCreated);
SetItem(PkgEditMenuUninstall,@UninstallClick,true,
(LazPackage.Installed<>pitNope) or (LazPackage.AutoInstall<>pitNope));
SetItem(PkgEditMenuSave,@SaveBitBtnClick,true,SaveBitBtn.Enabled);
SetItem(PkgEditMenuSaveAs,@SaveAsClick,true,not LazPackage.AutoCreated);
SetItem(PkgEditMenuRevert,@RevertClick,true,
(not LazPackage.AutoCreated) and FileExistsUTF8(LazPackage.Filename));
SetItem(PkgEditMenuPublish,@PublishClick,true,
(not LazPackage.AutoCreated) and LazPackage.HasDirectory);
SetItem(PkgEditMenuCompile,@CompileBitBtnClick,true,CompileBitBtn.Enabled);
SetItem(PkgEditMenuRecompileClean,@CompileCleanClick,true,CompileBitBtn.Enabled);
SetItem(PkgEditMenuRecompileAllRequired,@CompileAllCleanClick,true,CompileBitBtn.Enabled);
SetItem(PkgEditMenuCreateMakefile,@CreateMakefileClick,true,CompileBitBtn.Enabled);
SetItem(PkgEditMenuAdd,@AddBitBtnClick,true,AddBitBtn.Enabled);
SetItem(PkgEditMenuRemove,@RemoveBitBtnClick,true,RemoveBitBtn.Enabled);
SetItem(PkgEditMenuGeneralOptions,@OptionsBitBtnClick,true,OptionsBitBtn.Enabled);
SetItem(PkgEditMenuCompilerOptions,@CompilerOptionsBitBtnClick,true,
CompilerOptionsBitBtn.Enabled);
SetItem(PkgEditMenuViewPackageSource,@ViewPkgSourceClick);
finally
PackageEditorMenuRoot.EndUpdate;
end;
if ItemCnt>0 then
AddPopupMenuItem('-',nil,true);
AddPopupMenuItem(lisPckEditAddToProject, @AddToProjectClick,
CanBeAddedToProject);
AddPopupMenuItem(lisPckEditInstall, @InstallClick,not LazPackage.AutoCreated);
AddPopupMenuItem(lisPckEditUninstall, @UninstallClick,
(LazPackage.Installed<>pitNope) or (LazPackage.AutoInstall<>pitNope));
AddPopupMenuItem('-',nil,true);
AddPopupMenuItem(lisMenuSave, @SaveBitBtnClick, SaveBitBtn.Enabled);
AddPopupMenuItem(lisMenuSaveAs, @SaveAsClick, not LazPackage.AutoCreated);
AddPopupMenuItem(lisMenuRevert, @RevertClick, (not LazPackage.AutoCreated) and
FileExistsUTF8(LazPackage.Filename));
AddPopupMenuItem(lisPkgEditPublishPackage, @PublishClick,
(not LazPackage.AutoCreated) and (LazPackage.HasDirectory));
AddPopupMenuItem('-',nil,true);
AddPopupMenuItem(lisPckEditCompile, @CompileBitBtnClick, CompileBitBtn.Enabled
);
AddPopupMenuItem(lisPckEditRecompileClean, @CompileCleanClick,
CompileBitBtn.Enabled);
AddPopupMenuItem(lisPckEditRecompileAllRequired, @CompileAllCleanClick,
CompileBitBtn.Enabled);
AddPopupMenuItem(lisPckEditCreateMakefile, @CreateMakefileClick,
CompileBitBtn.Enabled);
AddPopupMenuItem('-',nil,true);
AddPopupMenuItem(lisCodeTemplAdd, @AddBitBtnClick, AddBitBtn.Enabled);
AddPopupMenuItem(lisExtToolRemove, @RemoveBitBtnClick, RemoveBitBtn.Enabled);
AddPopupMenuItem('-',nil,true);
AddPopupMenuItem(lisPckEditGeneralOptions, @OptionsBitBtnClick,
OptionsBitBtn.Enabled);
AddPopupMenuItem(dlgCompilerOptions, @CompilerOptionsBitBtnClick,
CompilerOptionsBitBtn.Enabled);
AddPopupMenuItem(lisPckEditViewPackgeSource, @ViewPkgSourceClick,true);
AddPopupMenuItem(lisPEViewToDoList, @ViewPkgTodosClick, true);
// remove unneeded menu items
while FilesPopupMenu.Items.Count>ItemCnt do
FilesPopupMenu.Items.Delete(FilesPopupMenu.Items.Count-1);
//debugln(['TPackageEditorForm.FilesPopupMenuPopup END ',FilesPopupMenu.Items.Count]); PackageEditorMenuRoot.WriteDebugReport(' ',true);
end;
procedure TPackageEditorForm.UsePopupMenuPopup(Sender: TObject);
@ -1444,7 +1535,7 @@ begin
OnDrawItem:=@RegisteredListBoxDrawItem;
Style:= lbOwnerDrawFixed;
Parent:=RegisteredPluginsGroupBox;
//DebugLn('TPackageEditorForm.SetupComponents AAAAAAAAAA');
//DebugLn('TPackageEditorForm.SetupComponents ');
end;
UseMinVersionCheckBox:=TCheckBox.Create(Self);

View File

@ -1871,6 +1871,7 @@ begin
IDEWindowCreators.Add(NonModalIDEWindowNames[nmiwPkgGraphExplorer],
nil,@CreateIDEWindow,'250','200','400','300');
RegisterStandardPackageEditorMenuItems;
end;
procedure TPkgManager.ConnectSourceNotebookEvents;
@ -2147,7 +2148,7 @@ begin
end;
// save package file links
DebugLn(['TPkgManager.AddPackageToGraph ',APackage.Name]);
//DebugLn(['TPkgManager.AddPackageToGraph ',APackage.Name]);
PkgLinks.SaveUserLinks;
Result:=mrOk;