IDE: show Component List from Component Palette's popup menu.

git-svn-id: trunk@35053 -
This commit is contained in:
juha 2012-01-31 11:00:45 +00:00
parent f762ac3dbd
commit 5084b5f3d5
4 changed files with 56 additions and 15 deletions

View File

@ -37,14 +37,12 @@ unit ComponentPalette;
interface
uses
Classes, SysUtils, LCLProc, Controls, Forms, Dialogs, Graphics, ExtCtrls,
ComCtrls, Buttons, FileUtil, Menus, LResources, AVL_Tree,
PropEdits, FormEditingIntf, LazIDEIntf, MacroIntf,
Classes, SysUtils, Controls, Forms, Graphics, ComCtrls, Buttons, FileUtil, Menus,
LResources, AVL_Tree, PropEdits, FormEditingIntf, LazIDEIntf, IDEProcs,
{$IFDEF CustomIDEComps}
CustomIDEComps,
{$ENDIF}
LazarusIDEStrConsts, ComponentReg, DesignerProcs, IDEProcs, PackageDefs,
FindPaletteComp;
LazarusIDEStrConsts, ComponentReg, DesignerProcs, PackageDefs, FindPaletteComp;
type
TComponentSelectionMode = (
@ -55,15 +53,17 @@ type
{ TComponentPalette }
TComponentPalette = class(TBaseComponentPalette)
PalettePopupMenu: TPopupMenu;
PopupMenu: TPopupMenu;
OpenPackageMenuItem: TMenuItem;
OpenUnitMenuItem: TMenuItem;
FindComponentMenuItem: TMenuItem;
procedure ActivePageChanged(Sender: TObject);
procedure OnPageResize(Sender: TObject);
procedure OpenPackageClicked(Sender: TObject);
procedure OpenUnitClicked(Sender: TObject);
procedure ComponentListClicked(Sender: TObject);
procedure FindComponentClicked(Sender: TObject);
procedure PalettePopupMenuPopup(Sender: TObject);
procedure PopupMenuPopup(Sender: TObject);
private
fComponents: TAVLTree; // tree of TRegisteredComponent sorted for componentclass
@ -126,6 +126,8 @@ function CompareControlsWithTag(Control1, Control2: Pointer): integer;
implementation
uses MainBase;
function CompareRegisteredComponents(Data1, Data2: Pointer): integer;
var
RegComp1: TRegisteredComponent;
@ -199,6 +201,11 @@ begin
OnOpenUnit(PkgComponent);
end;
procedure TComponentPalette.ComponentListClicked(Sender: TObject);
begin
MainIDE.DoShowComponentList(true);
end;
procedure TComponentPalette.FindComponentClicked(Sender: TObject);
var
AComponent: TRegisteredComponent;
@ -207,6 +214,11 @@ begin
Selected:=AComponent;
end;
procedure TComponentPalette.PalettePopupMenuPopup(Sender: TObject);
begin
;
end;
procedure TComponentPalette.PopupMenuPopup(Sender: TObject);
var
PkgComponent: TPkgComponent;
@ -239,12 +251,36 @@ begin
end;
procedure TComponentPalette.SetPageControl(const AValue: TPageControl);
var
MenuItem: TMenuItem;
begin
if FPageControl=AValue then exit;
ClearButtons;
FPageControl:=AValue;
if FPageControl<>nil then begin
FPageControl.OnChange:=@ActivePageChanged;
if PalettePopupMenu=nil then begin
PalettePopupMenu:=TPopupMenu.Create(nil);
PalettePopupMenu.OnPopup:=@PalettePopupMenuPopup;
PalettePopupMenu.Name:='PalettePopupMenu';
// Component List
MenuItem:=TMenuItem.Create(PalettePopupMenu);
with MenuItem do begin
Name:='ComponentListMenuItem';
Caption:=lisCompPalComponentList;
OnClick:=@ComponentListClicked;
end;
PalettePopupMenu.Items.Add(MenuItem);
// Find Component
MenuItem:=TMenuItem.Create(PalettePopupMenu);
with MenuItem do begin
Name:='FindComponentMenuItem';
Caption:=lisCompPalFindComponent;
OnClick:=@FindComponentClicked;
end;
PalettePopupMenu.Items.Add(MenuItem);
end;
FPageControl.PopupMenu:=PalettePopupMenu;
end;
UpdateNoteBookButtons;
end;
@ -354,11 +390,13 @@ begin
end;
procedure TComponentPalette.CreatePopupMenu;
var
MenuItem: TMenuItem;
begin
if PopupMenu<>nil then exit;
PopupMenu:=TPopupMenu.Create(nil);
PopupMenu.OnPopup:=@PopupMenuPopup;
PopupMenu.Name:='ComponentPalettePopupMenu';
PopupMenu.Name:='ComponentPopupMenu';
OpenPackageMenuItem:=TMenuItem.Create(PopupMenu);
with OpenPackageMenuItem do begin
@ -378,13 +416,13 @@ begin
PopupMenu.Items.AddSeparator;
FindComponentMenuItem:=TMenuItem.Create(PopupMenu);
with FindComponentMenuItem do begin
Name:='FindComponentMenuItem';
Caption:=lisCompPalFindComponent;
OnClick:=@FindComponentClicked;
MenuItem:=TMenuItem.Create(PopupMenu);
with MenuItem do begin
Name:='ComponentListMenuItem';
Caption:=lisCompPalComponentList;
OnClick:=@ComponentListClicked;
end;
PopupMenu.Items.Add(FindComponentMenuItem);
PopupMenu.Items.Add(MenuItem);
end;
procedure TComponentPalette.DoBeginUpdate;
@ -449,6 +487,7 @@ begin
FreeAndNil(fUnregisteredIcon);
FreeAndNil(fSelectButtonIcon);
FreeAndNil(PopupMenu);
FreeAndNil(PalettePopupMenu);
inherited Destroy;
end;

View File

@ -3472,7 +3472,8 @@ resourcestring
lisCPOpenPackage = 'Open Package %s';
lisCPOpenUnit = 'Open Unit %s';
lisCompPalOpenUnit = 'Open unit';
lisCompPalFindComponent = 'Find component';
lisCompPalComponentList = 'View Component List';
lisCompPalFindComponent = 'Find component (to be removed)';
// macro promp dialog
lisMacroPromptEnterData = 'Enter data';

View File

@ -872,7 +872,7 @@ type
procedure DoShowCodeExplorer(Show: boolean);
procedure DoShowCodeBrowser(Show: boolean);
procedure DoShowRestrictionBrowser(Show: boolean; const RestrictedName: String = '');
procedure DoShowComponentList(Show: boolean);
procedure DoShowComponentList(Show: boolean); override;
procedure DoShowInspector(Show: boolean);
procedure CreateIDEWindow(Sender: TObject; aFormName: string;
var AForm: TCustomForm; DoDisableAutoSizing: boolean);

View File

@ -154,6 +154,7 @@ type
var ActiveSourceEditor: TSourceEditor; var ActiveUnitInfo: TUnitInfo); virtual; abstract;
procedure GetUnitWithPersistent(APersistent: TPersistent;
var ActiveSourceEditor: TSourceEditor; var ActiveUnitInfo: TUnitInfo); virtual; abstract;
procedure DoShowComponentList(Show: boolean); virtual; abstract;
function DoOpenMacroFile(Sender: TObject; const AFilename: string
): TModalResult; override;