mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-12 12:19:57 +02:00
IDEIntf: implemented TIDEMenuSection.Visible, added menu items for package editor
git-svn-id: trunk@26159 -
This commit is contained in:
parent
6e5c9ebf1c
commit
2a3b817e5c
@ -3786,7 +3786,7 @@ resourcestring
|
|||||||
lisPckEditAddToProject = 'Add to project';
|
lisPckEditAddToProject = 'Add to project';
|
||||||
lisPckEditInstall = 'Install';
|
lisPckEditInstall = 'Install';
|
||||||
lisPckEditUninstall = 'Uninstall';
|
lisPckEditUninstall = 'Uninstall';
|
||||||
lisPckEditViewPackgeSource = 'View Package Source';
|
lisPckEditViewPackageSource = 'View Package Source';
|
||||||
lisPEViewToDoList = 'View ToDo list';
|
lisPEViewToDoList = 'View ToDo list';
|
||||||
lisPckEditGeneralOptions = 'General Options';
|
lisPckEditGeneralOptions = 'General Options';
|
||||||
lisPckEditSaveChanges = 'Save Changes?';
|
lisPckEditSaveChanges = 'Save Changes?';
|
||||||
|
@ -12698,7 +12698,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
IDEWindowCreators.ShowForm(SearchResultsView,true);
|
IDEWindowCreators.ShowForm(SearchResultsView,true);
|
||||||
if IDEDockMaster=nil then
|
if IDEDockMaster=nil then
|
||||||
// the sourcenotebook is more interesting than the messages
|
// the sourcenotebook is more interesting than the search results
|
||||||
SourceEditorManager.ShowActiveWindowOnTop(False);
|
SourceEditorManager.ShowActiveWindowOnTop(False);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@ -368,7 +368,7 @@ var
|
|||||||
itmInfoHelps: TIDEMenuSection;
|
itmInfoHelps: TIDEMenuSection;
|
||||||
itmHelpTools: TIDEMenuSection;
|
itmHelpTools: TIDEMenuSection;
|
||||||
|
|
||||||
// Source Editor: Popupmenu
|
// Source Editor(s): Popupmenu
|
||||||
SourceEditorMenuRoot: TIDEMenuSection = nil;
|
SourceEditorMenuRoot: TIDEMenuSection = nil;
|
||||||
// Source Editor: First dynamic section for often used context sensitive stuff
|
// Source Editor: First dynamic section for often used context sensitive stuff
|
||||||
// The items are cleared automatically after each popup.
|
// The items are cleared automatically after each popup.
|
||||||
@ -415,6 +415,17 @@ var
|
|||||||
DesignerMenuSectionMisc: TIDEMenuSection;
|
DesignerMenuSectionMisc: TIDEMenuSection;
|
||||||
DesignerMenuSectionOptions: 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
|
function RegisterIDEMenuRoot(const Name: string; MenuItem: TMenuItem = nil
|
||||||
): TIDEMenuSection;
|
): TIDEMenuSection;
|
||||||
function RegisterIDEMenuSection(Parent: TIDEMenuSection;
|
function RegisterIDEMenuSection(Parent: TIDEMenuSection;
|
||||||
@ -639,15 +650,11 @@ procedure TIDEMenuItem.SetMenuItem(const AValue: TMenuItem);
|
|||||||
begin
|
begin
|
||||||
if FMenuItem = AValue then exit;
|
if FMenuItem = AValue then exit;
|
||||||
if FMenuItem <> nil then ClearMenuItems;
|
if FMenuItem <> nil then ClearMenuItems;
|
||||||
if FMenuItem = nil then
|
FMenuItem := AValue;
|
||||||
begin
|
AutoFreeMenuItem := False;
|
||||||
FMenuItem := AValue;
|
|
||||||
AutoFreeMenuItem := False;
|
|
||||||
if MenuItem <> nil then
|
|
||||||
MenuItem.AddHandlerOnDestroy(@MenuItemDestroy);
|
|
||||||
end;
|
|
||||||
if MenuItem <> nil then
|
if MenuItem <> nil then
|
||||||
begin
|
begin
|
||||||
|
MenuItem.AddHandlerOnDestroy(@MenuItemDestroy);
|
||||||
MenuItem.Caption := Caption;
|
MenuItem.Caption := Caption;
|
||||||
MenuItem.Bitmap := FBitmap;
|
MenuItem.Bitmap := FBitmap;
|
||||||
MenuItem.Hint := Hint;
|
MenuItem.Hint := Hint;
|
||||||
@ -896,7 +903,7 @@ var
|
|||||||
|
|
||||||
procedure UpdateNeedTopSeparator;
|
procedure UpdateNeedTopSeparator;
|
||||||
// a separator at top is needed, if
|
// 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 is visible
|
||||||
// - and this section has visible childs
|
// - and this section has visible childs
|
||||||
// - and there is a visible menu item in front
|
// - and there is a visible menu item in front
|
||||||
@ -912,7 +919,7 @@ var
|
|||||||
if Section[i].VisibleActive then begin
|
if Section[i].VisibleActive then begin
|
||||||
// there is a visible menu item in front
|
// there is a visible menu item in front
|
||||||
// => the Top separator is needed
|
// => 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;
|
NewNeedTopSeparator:=true;
|
||||||
break;
|
break;
|
||||||
end;
|
end;
|
||||||
@ -1061,8 +1068,9 @@ begin
|
|||||||
inc(ContainerMenuIndex);
|
inc(ContainerMenuIndex);
|
||||||
|
|
||||||
// update childs
|
// update childs
|
||||||
for i:=0 to FInvalidChildStartIndex-1 do
|
if Visible then
|
||||||
inc(ContainerMenuIndex,Items[i].Size);
|
for i:=0 to FInvalidChildStartIndex-1 do
|
||||||
|
inc(ContainerMenuIndex,Items[i].Size);
|
||||||
while (FInvalidChildStartIndex<=FInvalidChildEndIndex)
|
while (FInvalidChildStartIndex<=FInvalidChildEndIndex)
|
||||||
and (FInvalidChildStartIndex<Count) do begin
|
and (FInvalidChildStartIndex<Count) do begin
|
||||||
Item:=Items[FInvalidChildStartIndex];
|
Item:=Items[FInvalidChildStartIndex];
|
||||||
@ -1074,9 +1082,10 @@ begin
|
|||||||
CurSection:=TIDEMenuSection(Item)
|
CurSection:=TIDEMenuSection(Item)
|
||||||
else
|
else
|
||||||
CurSection:=nil;
|
CurSection:=nil;
|
||||||
// insert menu item
|
if Visible then begin
|
||||||
if (CurSection=nil) or CurSection.ChildsAsSubMenu then begin
|
// insert menu item
|
||||||
if ContainerMenuItem<>nil then begin
|
if ((CurSection=nil) or CurSection.ChildsAsSubMenu)
|
||||||
|
and (ContainerMenuItem<>nil) then begin
|
||||||
Item.CreateMenuItem;
|
Item.CreateMenuItem;
|
||||||
if Item.MenuItem.Parent=nil then begin
|
if Item.MenuItem.Parent=nil then begin
|
||||||
{$IFDEF VerboseMenuIntf}
|
{$IFDEF VerboseMenuIntf}
|
||||||
@ -1085,17 +1094,24 @@ begin
|
|||||||
ContainerMenuItem.Insert(ContainerMenuIndex,Item.MenuItem);
|
ContainerMenuItem.Insert(ContainerMenuIndex,Item.MenuItem);
|
||||||
end;
|
end;
|
||||||
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;
|
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;
|
end;
|
||||||
|
|
||||||
// update BottomSeparator
|
// update BottomSeparator
|
||||||
@ -1174,6 +1190,8 @@ procedure TIDEMenuSection.ItemVisibleActiveChanged(AnItem: TIDEMenuItem);
|
|||||||
var
|
var
|
||||||
OldVisibleActive: Boolean;
|
OldVisibleActive: Boolean;
|
||||||
NowVisibleActive: Boolean;
|
NowVisibleActive: Boolean;
|
||||||
|
FromIndex: LongInt;
|
||||||
|
ToIndex: LongInt;
|
||||||
begin
|
begin
|
||||||
if imssClearing in FStates then
|
if imssClearing in FStates then
|
||||||
exit;
|
exit;
|
||||||
@ -1182,7 +1200,11 @@ begin
|
|||||||
RaiseGDBException('');
|
RaiseGDBException('');
|
||||||
AnItem.FLastVisibleActive:=NowVisibleActive;
|
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}
|
{$IFDEF VerboseMenuIntf}
|
||||||
debugln('TIDEMenuSection.ItemVisibleActiveChanged Self="',Name,'" AnItem="',AnItem.Name,'" AnItem.VisibleActive=',dbgs(AnItem.VisibleActive));
|
debugln('TIDEMenuSection.ItemVisibleActiveChanged Self="',Name,'" AnItem="',AnItem.Name,'" AnItem.VisibleActive=',dbgs(AnItem.VisibleActive));
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
@ -1375,7 +1397,7 @@ end;
|
|||||||
|
|
||||||
function TIDEMenuSection.VisibleActive: boolean;
|
function TIDEMenuSection.VisibleActive: boolean;
|
||||||
begin
|
begin
|
||||||
Result:=VisibleCount>0;
|
Result:=Visible and (VisibleCount>0);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TIDEMenuSection.Size: integer;
|
function TIDEMenuSection.Size: integer;
|
||||||
|
@ -41,13 +41,58 @@ uses
|
|||||||
Classes, SysUtils, Forms, Controls, StdCtrls, ComCtrls, Buttons, LResources,
|
Classes, SysUtils, Forms, Controls, StdCtrls, ComCtrls, Buttons, LResources,
|
||||||
Graphics, LCLType, LCLProc, Menus, Dialogs, FileUtil, AVL_Tree,
|
Graphics, LCLType, LCLProc, Menus, Dialogs, FileUtil, AVL_Tree,
|
||||||
// IDEIntf CodeTools
|
// IDEIntf CodeTools
|
||||||
HelpIntfs, LazIDEIntf, ProjectIntf, FormEditingIntf, Laz_XMLCfg, PackageIntf,
|
MenuIntf, HelpIntfs, LazIDEIntf, ProjectIntf, FormEditingIntf, Laz_XMLCfg,
|
||||||
|
PackageIntf,
|
||||||
// IDE
|
// IDE
|
||||||
MainIntf, IDEProcs, LazConf, LazarusIDEStrConsts, IDEOptionDefs, IDEDefs,
|
MainIntf, IDEProcs, LazConf, LazarusIDEStrConsts, IDEOptionDefs, IDEDefs,
|
||||||
IDEContextHelpEdit, CompilerOptions, CompilerOptionsDlg, ComponentReg,
|
IDEContextHelpEdit, CompilerOptions, CompilerOptionsDlg, ComponentReg,
|
||||||
PackageDefs, PkgOptionsDlg, AddToPackageDlg, PkgVirtualUnitEditor,
|
PackageDefs, PkgOptionsDlg, AddToPackageDlg, PkgVirtualUnitEditor,
|
||||||
PackageSystem;
|
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
|
type
|
||||||
TOnCreatePkgMakefile =
|
TOnCreatePkgMakefile =
|
||||||
function(Sender: TObject; APackage: TLazPackage): TModalResult of object;
|
function(Sender: TObject; APackage: TLazPackage): TModalResult of object;
|
||||||
@ -331,6 +376,7 @@ type
|
|||||||
var
|
var
|
||||||
PackageEditors: TPackageEditors;
|
PackageEditors: TPackageEditors;
|
||||||
|
|
||||||
|
procedure RegisterStandardPackageEditorMenuItems;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
@ -371,6 +417,78 @@ begin
|
|||||||
Result:=CompareFilenames(Filename,Layout.Filename);
|
Result:=CompareFilenames(Filename,Layout.Filename);
|
||||||
end;
|
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 }
|
{ TPackageEditorForm }
|
||||||
|
|
||||||
procedure TPackageEditorForm.PublishClick(Sender: TObject);
|
procedure TPackageEditorForm.PublishClick(Sender: TObject);
|
||||||
@ -417,43 +535,34 @@ end;
|
|||||||
|
|
||||||
procedure TPackageEditorForm.FilesPopupMenuPopup(Sender: TObject);
|
procedure TPackageEditorForm.FilesPopupMenuPopup(Sender: TObject);
|
||||||
var
|
var
|
||||||
ItemCnt: Integer;
|
|
||||||
CurDependency: TPkgDependency;
|
CurDependency: TPkgDependency;
|
||||||
Removed: boolean;
|
Removed: boolean;
|
||||||
CurFile: TPkgFile;
|
CurFile: TPkgFile;
|
||||||
Writable: Boolean;
|
Writable: Boolean;
|
||||||
FileIndex: Integer;
|
FileIndex: Integer;
|
||||||
|
|
||||||
function AddPopupMenuItem(const ACaption: string; AnEvent: TNotifyEvent;
|
procedure SetItem(Item: TIDEMenuCommand; AnOnClick: TNotifyEvent;
|
||||||
EnabledFlag: boolean): TMenuItem;
|
aShow: boolean = true; AEnable: boolean = true);
|
||||||
begin
|
begin
|
||||||
if FilesPopupMenu.Items.Count<=ItemCnt then begin
|
Item.OnClick:=AnOnClick;
|
||||||
Result:=TMenuItem.Create(Self);
|
Item.Visible:=aShow;
|
||||||
FilesPopupMenu.Items.Add(Result);
|
Item.Enabled:=AEnable;
|
||||||
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);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure AddFileTypeMenuItem;
|
procedure AddFileTypeMenuItem;
|
||||||
var
|
var
|
||||||
FileTypeMenuItem: TMenuItem;
|
|
||||||
CurPFT: TPkgFileType;
|
CurPFT: TPkgFileType;
|
||||||
NewMenuItem: TMenuItem;
|
|
||||||
VirtualFileExists: Boolean;
|
VirtualFileExists: Boolean;
|
||||||
|
NewMenuItem: TIDEMenuCommand;
|
||||||
begin
|
begin
|
||||||
FileTypeMenuItem:=AddPopupMenuItem(lisAF2PFileType, nil, true);
|
PkgEditMenuSectionFileType.Clear;
|
||||||
VirtualFileExists:=(CurFile.FileType=pftVirtualUnit)
|
VirtualFileExists:=(CurFile.FileType=pftVirtualUnit)
|
||||||
and FileExistsUTF8(CurFile.Filename);
|
and FileExistsUTF8(CurFile.Filename);
|
||||||
for CurPFT:=Low(TPkgFileType) to High(TPkgFileType) do begin
|
for CurPFT:=Low(TPkgFileType) to High(TPkgFileType) do begin
|
||||||
NewMenuItem:=TMenuItem.Create(Self);
|
NewMenuItem:=RegisterIDEMenuCommand(PkgEditMenuSectionFileType,
|
||||||
NewMenuItem.Caption:=GetPkgFileTypeLocalizedName(CurPFT);
|
'SetFileType'+IntToStr(ord(CurPFT)),
|
||||||
NewMenuItem.OnClick:=@ChangeFileTypeMenuItemClick;
|
GetPkgFileTypeLocalizedName(CurPFT),
|
||||||
|
@ChangeFileTypeMenuItemClick);
|
||||||
if CurPFT=CurFile.FileType then begin
|
if CurPFT=CurFile.FileType then begin
|
||||||
// menuitem to keep the current type
|
// menuitem to keep the current type
|
||||||
NewMenuItem.Enabled:=true;
|
NewMenuItem.Enabled:=true;
|
||||||
@ -470,110 +579,92 @@ var
|
|||||||
else
|
else
|
||||||
// default is to not allow
|
// default is to not allow
|
||||||
NewMenuItem.Enabled:=false;
|
NewMenuItem.Enabled:=false;
|
||||||
FileTypeMenuItem.Add(NewMenuItem);
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
ItemCnt:=0;
|
PackageEditorMenuRoot.MenuItem:=FilesPopupMenu.Items;
|
||||||
|
//debugln(['TPackageEditorForm.FilesPopupMenuPopup START ',FilesPopupMenu.Items.Count]);
|
||||||
|
PackageEditorMenuRoot.BeginUpdate;
|
||||||
|
try
|
||||||
|
|
||||||
CurDependency:=GetCurrentDependency(Removed);
|
CurDependency:=GetCurrentDependency(Removed);
|
||||||
Writable:=(not LazPackage.ReadOnly);
|
Writable:=(not LazPackage.ReadOnly);
|
||||||
if (CurDependency=nil) then
|
if (CurDependency=nil) then
|
||||||
CurFile:=GetCurrentFile(Removed)
|
CurFile:=GetCurrentFile(Removed)
|
||||||
else
|
else
|
||||||
CurFile:=nil;
|
CurFile:=nil;
|
||||||
|
|
||||||
if (CurFile<>nil) then begin
|
PkgEditMenuSectionFileType.Clear;
|
||||||
FileIndex:=LazPackage.IndexOfPkgFile(CurFile);
|
if (CurFile<>nil) then begin
|
||||||
if not Removed then begin
|
PkgEditMenuSectionFile.Visible:=true;
|
||||||
AddPopupMenuItem(lisOpenFile, @OpenFileMenuItemClick, true);
|
FileIndex:=LazPackage.IndexOfPkgFile(CurFile);
|
||||||
AddPopupMenuItem(lisPckEditRemoveFile, @RemoveBitBtnClick,
|
SetItem(PkgEditMenuOpenFile,@OpenFileMenuItemClick);
|
||||||
RemoveBitBtn.Enabled);
|
SetItem(PkgEditMenuReAddFile,@ReAddMenuItemClick,Removed);
|
||||||
AddPopupMenuItem(lisPEMoveFileUp, @MoveFileUpMenuItemClick,
|
SetItem(PkgEditMenuRemoveFile,@RemoveBitBtnClick,not Removed,RemoveBitBtn.Enabled);
|
||||||
(FileIndex>0) and Writable);
|
SetItem(PkgEditMenuMoveFileUp,@MoveFileUpMenuItemClick,not Removed,(FileIndex>0) and Writable);
|
||||||
AddPopupMenuItem(lisPEMoveFileDown, @MoveFileDownMenuItemClick,
|
SetItem(PkgEditMenuMoveFileDown,@MoveFileDownMenuItemClick,
|
||||||
(FileIndex<LazPackage.FileCount-1) and Writable);
|
not Removed,(FileIndex>LazPackage.FileCount-1) and Writable);
|
||||||
|
PkgEditMenuSectionFileType.Visible:=true;
|
||||||
AddFileTypeMenuItem;
|
AddFileTypeMenuItem;
|
||||||
if CurFile.FileType=pftVirtualUnit then
|
SetItem(PkgEditMenuEditVirtualUnit,@EditVirtualUnitMenuItemClick,
|
||||||
AddPopupMenuItem(lisPEEditVirtualUnit, @EditVirtualUnitMenuItemClick,
|
(CurFile.FileType=pftVirtualUnit) and not Removed,Writable);
|
||||||
Writable);
|
|
||||||
end else begin
|
end else begin
|
||||||
AddPopupMenuItem(lisOpenFile, @OpenFileMenuItemClick, true);
|
PkgEditMenuSectionFile.Visible:=false;
|
||||||
AddPopupMenuItem(lisPckEditReAddFile, @ReAddMenuItemClick,
|
|
||||||
AddBitBtn.Enabled);
|
|
||||||
end;
|
end;
|
||||||
end;
|
SetItem(PkgEditMenuSortFiles,@SortFilesMenuItemClick,(LazPackage.FileCount>1),Writable);
|
||||||
if (LazPackage.FileCount>1) then begin
|
SetItem(PkgEditMenuFixFilesCase,@FixFilesCaseMenuItemClick,(LazPackage.FileCount>1),Writable);
|
||||||
AddPopupMenuItem(lisPESortFiles, @SortFilesMenuItemClick, Writable);
|
|
||||||
AddPopupMenuItem(lisPEFixFilesCase, @FixFilesCaseMenuItemClick, Writable);
|
|
||||||
end;
|
|
||||||
|
|
||||||
if CurDependency<>nil then begin
|
if CurDependency<>nil then begin
|
||||||
if (not Removed) then begin
|
PkgEditMenuSectionDependency.Visible:=true;
|
||||||
AddPopupMenuItem(lisMenuOpenPackage, @OpenFileMenuItemClick, true);
|
SetItem(PkgEditMenuOpenPackage,@OpenFileMenuItemClick,CurDependency.RequiredPackage<>nil);
|
||||||
AddPopupMenuItem(lisPckEditRemoveDependency, @RemoveBitBtnClick,
|
SetItem(PkgEditMenuRemoveDependency,@RemoveBitBtnClick,not Removed,
|
||||||
RemoveBitBtn.Enabled);
|
RemoveBitBtn.Enabled);
|
||||||
AddPopupMenuItem(lisPckEditMoveDependencyUp, @MoveDependencyUpClick,
|
SetItem(PkgEditMenuReAddDependency,@ReAddMenuItemClick,Removed and AddBitBtn.Enabled);
|
||||||
(CurDependency.PrevRequiresDependency<>nil)
|
SetItem(PkgEditMenuMoveDependencyUp,@MoveDependencyUpClick,not Removed,
|
||||||
and Writable);
|
(CurDependency.PrevRequiresDependency<>nil) and Writable);
|
||||||
AddPopupMenuItem(lisPckEditMoveDependencyDown, @MoveDependencyDownClick,
|
SetItem(PkgEditMenuMoveDependencyDown,@MoveDependencyDownClick,not Removed,
|
||||||
(CurDependency.NextRequiresDependency<>nil)
|
(CurDependency.NextRequiresDependency<>nil) and Writable);
|
||||||
and Writable);
|
SetItem(PkgEditMenuDependencyStoreFileNameAsDefault,
|
||||||
AddPopupMenuItem(lisPckEditStoreFileNameAsDefaultForThisDependency,
|
@SetDependencyDefaultFilenameMenuItemClick,not Removed,
|
||||||
@SetDependencyDefaultFilenameMenuItemClick,
|
Writable and (CurDependency.RequiredPackage<>nil));
|
||||||
Writable and (CurDependency.RequiredPackage<>nil));
|
SetItem(PkgEditMenuDependencyStoreFileNameAsPreferred,
|
||||||
AddPopupMenuItem(lisPckEditStoreFileNameAsPreferredForThisDependency,
|
@SetDependencyPreferredFilenameMenuItemClick,not Removed,
|
||||||
@SetDependencyPreferredFilenameMenuItemClick,
|
Writable and (CurDependency.RequiredPackage<>nil));
|
||||||
Writable and (CurDependency.RequiredPackage<>nil));
|
SetItem(PkgEditMenuDependencyClearStoredFileName,
|
||||||
AddPopupMenuItem(lisPckEditClearDefaultPreferredFilenameOfDependency,
|
@ClearDependencyFilenameMenuItemClick,not Removed,
|
||||||
@ClearDependencyFilenameMenuItemClick,
|
Writable and (CurDependency.DefaultFilename<>''));
|
||||||
Writable and (CurDependency.DefaultFilename<>''));
|
end else
|
||||||
end else begin
|
PkgEditMenuSectionDependency.Visible:=false;
|
||||||
AddPopupMenuItem(lisMenuOpenPackage, @OpenFileMenuItemClick, true);
|
|
||||||
AddPopupMenuItem(lisPckEditReAddDependency, @ReAddMenuItemClick,
|
SetItem(PkgEditMenuAddToProject,@AddToProjectClick,true,CanBeAddedToProject);
|
||||||
AddBitBtn.Enabled);
|
SetItem(PkgEditMenuInstall,@InstallClick,true,not LazPackage.AutoCreated);
|
||||||
end;
|
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;
|
end;
|
||||||
|
//debugln(['TPackageEditorForm.FilesPopupMenuPopup END ',FilesPopupMenu.Items.Count]); PackageEditorMenuRoot.WriteDebugReport(' ',true);
|
||||||
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);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPackageEditorForm.UsePopupMenuPopup(Sender: TObject);
|
procedure TPackageEditorForm.UsePopupMenuPopup(Sender: TObject);
|
||||||
@ -1444,7 +1535,7 @@ begin
|
|||||||
OnDrawItem:=@RegisteredListBoxDrawItem;
|
OnDrawItem:=@RegisteredListBoxDrawItem;
|
||||||
Style:= lbOwnerDrawFixed;
|
Style:= lbOwnerDrawFixed;
|
||||||
Parent:=RegisteredPluginsGroupBox;
|
Parent:=RegisteredPluginsGroupBox;
|
||||||
//DebugLn('TPackageEditorForm.SetupComponents AAAAAAAAAA');
|
//DebugLn('TPackageEditorForm.SetupComponents ');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
UseMinVersionCheckBox:=TCheckBox.Create(Self);
|
UseMinVersionCheckBox:=TCheckBox.Create(Self);
|
||||||
|
@ -1871,6 +1871,7 @@ begin
|
|||||||
|
|
||||||
IDEWindowCreators.Add(NonModalIDEWindowNames[nmiwPkgGraphExplorer],
|
IDEWindowCreators.Add(NonModalIDEWindowNames[nmiwPkgGraphExplorer],
|
||||||
nil,@CreateIDEWindow,'250','200','400','300');
|
nil,@CreateIDEWindow,'250','200','400','300');
|
||||||
|
RegisterStandardPackageEditorMenuItems;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPkgManager.ConnectSourceNotebookEvents;
|
procedure TPkgManager.ConnectSourceNotebookEvents;
|
||||||
@ -2147,7 +2148,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
// save package file links
|
// save package file links
|
||||||
DebugLn(['TPkgManager.AddPackageToGraph ',APackage.Name]);
|
//DebugLn(['TPkgManager.AddPackageToGraph ',APackage.Name]);
|
||||||
PkgLinks.SaveUserLinks;
|
PkgLinks.SaveUserLinks;
|
||||||
|
|
||||||
Result:=mrOk;
|
Result:=mrOk;
|
||||||
|
Loading…
Reference in New Issue
Block a user