IDE: Allow to register extra entries in component palette pages dropdown

git-svn-id: trunk@61147 -
This commit is contained in:
martin 2019-05-05 13:59:51 +00:00
parent efe5909dac
commit 6ce19f4c88
2 changed files with 25 additions and 2 deletions

View File

@ -411,6 +411,9 @@ var
PkgEditMenuSectionDirectory: TIDEMenuSection; // e.g. change all properties of all files in a directory and ub directories moved ..
PkgEditMenuSectionDependency: TIDEMenuSection; // e.g. open package, remove dependency
// Component Palette, pages drop down. (no submenus allowed / only top level / must have OnClick(Proc))
ComponentPalettePageDropDownExtraEntries: TIDEMenuSection = nil;
function RegisterIDEMenuRoot(const Name: string; MenuItem: TMenuItem = nil
): TIDEMenuSection;
function RegisterIDEMenuSection(Parent: TIDEMenuSection;
@ -1933,5 +1936,9 @@ begin
end;
end;
initialization
ComponentPalettePageDropDownExtraEntries := TIDEMenuSection.Create('');
finalization
ComponentPalettePageDropDownExtraEntries.Free;
end.

View File

@ -36,8 +36,8 @@ interface
uses
Classes, SysUtils, math, FileUtil, LazLoggerBase, Forms, Controls, Graphics,
LMessages, Dialogs, ComCtrls, ExtCtrls, Buttons, LCLIntf, LCLType,
IDEImagesIntf, LazarusIDEStrConsts, MainBar, ComponentPalette_Options,
MainBase;
IDEImagesIntf, MenuIntf, LazarusIDEStrConsts, MainBar,
ComponentPalette_Options, MainBase;
type
@ -181,9 +181,17 @@ procedure TDlgCompPagesPopup.TreeView1Click(Sender: TObject);
var
i: integer;
SelNode: TTreeNode;
e: TIDEMenuItem;
begin
SelNode:=TreeView1.Selected;
if (SelNode=nil) or (SelNode.ImageIndex=1) then exit;
if (SelNode.Data <> nil) then begin
e := TIDEMenuItem(SelNode.Data);
Close;
e.DoOnClick;
exit;
end;
if SelNode=fViewAllNode then
MainIDE.DoShowComponentList
else if SelNode=fOptionsNode then
@ -270,6 +278,8 @@ end;
procedure TDlgCompPagesPopup.BuildList;
var
i: integer;
e: TIDEMenuItem;
n: TTreeNode;
begin
TreeView1.BeginUpdate;
TreeView1.Items.Clear;
@ -294,6 +304,12 @@ begin
fViewAllNode.ImageIndex:=IDEImages.GetImageIndex('item_package');
fViewAllNode.SelectedIndex:=fViewAllNode.ImageIndex;
for i := 0 to ComponentPalettePageDropDownExtraEntries.Count - 1 do begin
e := ComponentPalettePageDropDownExtraEntries.Items[i];
n := TreeView1.Items.AddChildObject(nil, e.Caption, Pointer(e));
n.ImageIndex := e.ImageIndex;
end;
// add 'Options'
fOptionsNode:=TreeView1.Items.AddChild(nil, lisOptions);
fOptionsNode.ImageIndex:=IDEImages.LoadImage('menu_environment_options');