mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-29 01:30:46 +02:00
Component Palette: Move SelectionMode to interface. Support multiselect also in ComponentList.
git-svn-id: trunk@48516 -
This commit is contained in:
parent
8b06480841
commit
dade590e2a
@ -176,11 +176,17 @@ type
|
||||
cphtSelectionChanged
|
||||
);
|
||||
|
||||
TComponentSelectionMode = (
|
||||
csmSingle, // reset selection on component add
|
||||
csmMulty // don't reset selection on component add
|
||||
);
|
||||
|
||||
TEndUpdatePaletteEvent = procedure(Sender: TObject; PaletteChanged: boolean) of object;
|
||||
TGetComponentClassEvent = procedure(const AClass: TComponentClass) of object;
|
||||
TUpdateCompVisibleEvent = procedure(AComponent: TRegisteredComponent;
|
||||
var VoteVisible: integer { Visible>0 } ) of object;
|
||||
TPaletteHandlerEvent = procedure of object;
|
||||
//TComponentAddedEvent = procedure(ALookupRoot, AComponent: TComponent; ARegisteredComponent: TRegisteredComponent) of object;
|
||||
RegisterUnitComponentProc = procedure(const Page, UnitName: ShortString;
|
||||
ComponentClass: TComponentClass);
|
||||
TBaseComponentPageList = specialize TFPGList<TBaseComponentPage>;
|
||||
@ -207,6 +213,7 @@ type
|
||||
fHandlers: array[TComponentPaletteHandlerType] of TMethodList;
|
||||
fComponentPageClass: TBaseComponentPageClass;
|
||||
fSelected: TRegisteredComponent;
|
||||
fSelectionMode: TComponentSelectionMode;
|
||||
fHideControls: boolean;
|
||||
fUpdateLock: integer;
|
||||
fChanged: boolean;
|
||||
@ -223,7 +230,9 @@ type
|
||||
procedure DoPageRemovedComponent(Component: TRegisteredComponent);
|
||||
function VoteCompVisibility(AComponent: TRegisteredComponent): Boolean;
|
||||
function GetSelected: TRegisteredComponent;
|
||||
function GetMultiSelect: boolean;
|
||||
procedure SetSelected(const AValue: TRegisteredComponent);
|
||||
procedure SetMultiSelect(AValue: boolean);
|
||||
public
|
||||
constructor Create(EnvPaletteOptions: TCompPaletteOptions);
|
||||
destructor Destroy; override;
|
||||
@ -244,6 +253,7 @@ type
|
||||
function CreateNewClassName(const Prefix: string): string;
|
||||
procedure Update({%H-}ForceUpdateAll: Boolean); virtual;
|
||||
procedure IterateRegisteredClasses(Proc: TGetComponentClassEvent);
|
||||
procedure SetSelectedComp(AComponent: TRegisteredComponent; AMulti: Boolean);
|
||||
// Registered handlers
|
||||
procedure DoAfterComponentAdded;
|
||||
procedure DoAfterSelectionChanged;
|
||||
@ -267,6 +277,8 @@ type
|
||||
property ChangeStamp: integer read fChangeStamp;
|
||||
property HideControls: boolean read FHideControls write FHideControls;
|
||||
property Selected: TRegisteredComponent read GetSelected write SetSelected;
|
||||
property MultiSelect: boolean read GetMultiSelect write SetMultiSelect;
|
||||
property SelectionMode: TComponentSelectionMode read FSelectionMode write FSelectionMode;
|
||||
// User ordered + original pages and components.
|
||||
property UserOrder: TCompPaletteUserOrder read fUserOrder;
|
||||
property OnClassSelected: TNotifyEvent read fOnClassSelected write fOnClassSelected;
|
||||
@ -655,6 +667,7 @@ end;
|
||||
|
||||
constructor TBaseComponentPalette.Create(EnvPaletteOptions: TCompPaletteOptions);
|
||||
begin
|
||||
fSelectionMode:=csmSingle;
|
||||
fPages:=TBaseComponentPageList.Create;
|
||||
fComps:=TRegisteredComponentList.Create;
|
||||
fOrigPagePriorities:=TPagePriorityList.Create;
|
||||
@ -848,6 +861,11 @@ begin
|
||||
Result := fSelected;
|
||||
end;
|
||||
|
||||
function TBaseComponentPalette.GetMultiSelect: boolean;
|
||||
begin
|
||||
Result := FSelectionMode = csmMulty;
|
||||
end;
|
||||
|
||||
procedure TBaseComponentPalette.SetSelected(const AValue: TRegisteredComponent);
|
||||
begin
|
||||
if fSelected=AValue then exit;
|
||||
@ -861,6 +879,14 @@ begin
|
||||
DoAfterSelectionChanged;
|
||||
end;
|
||||
|
||||
procedure TBaseComponentPalette.SetMultiSelect(AValue: boolean);
|
||||
begin
|
||||
if AValue then
|
||||
FSelectionMode := csmMulty
|
||||
else
|
||||
FSelectionMode := csmSingle;
|
||||
end;
|
||||
|
||||
procedure TBaseComponentPalette.AddHandler(HandlerType: TComponentPaletteHandlerType;
|
||||
const AMethod: TMethod; AsLast: boolean);
|
||||
begin
|
||||
@ -1035,6 +1061,12 @@ begin
|
||||
Proc(Comps[i].ComponentClass);
|
||||
end;
|
||||
|
||||
procedure TBaseComponentPalette.SetSelectedComp(AComponent: TRegisteredComponent; AMulti: Boolean);
|
||||
begin
|
||||
MultiSelect := AMulti;
|
||||
Selected := AComponent;
|
||||
end;
|
||||
|
||||
// Execute handlers
|
||||
|
||||
function TBaseComponentPalette.VoteCompVisibility(AComponent: TRegisteredComponent): Boolean;
|
||||
|
@ -378,7 +378,7 @@ var
|
||||
begin
|
||||
AComponent:=GetSelectedComponent;
|
||||
if AComponent<>nil then
|
||||
IDEComponentPalette.Selected:=AComponent;
|
||||
IDEComponentPalette.SetSelectedComp(AComponent, ssShift in GetKeyShiftState);
|
||||
UpdateButtonState;
|
||||
end;
|
||||
|
||||
|
@ -48,11 +48,6 @@ const
|
||||
CompPalSelectionToolBtnPrefix = 'PaletteSelectBtn';
|
||||
CompPaletteCompBtnPrefix = 'PaletteBtn';
|
||||
type
|
||||
TComponentSelectionMode = (
|
||||
csmSingle, // reset selection on component add
|
||||
csmMulty // don't reset selection on component add
|
||||
);
|
||||
|
||||
{ TComponentPage }
|
||||
|
||||
TComponentPage = class(TBaseComponentPage)
|
||||
@ -102,7 +97,6 @@ type
|
||||
FPageControl: TPageControl;
|
||||
FOnOpenPackage: TNotifyEvent;
|
||||
FOnOpenUnit: TNotifyEvent;
|
||||
FSelectionMode: TComponentSelectionMode;
|
||||
fUnregisteredIcon: TCustomBitmap;
|
||||
fSelectButtonIcon: TCustomBitmap;
|
||||
fUpdatingPageControl: boolean;
|
||||
@ -141,7 +135,6 @@ type
|
||||
procedure Update(ForceUpdateAll: Boolean); override;
|
||||
public
|
||||
property PageControl: TPageControl read FPageControl write SetPageControl;
|
||||
property SelectionMode: TComponentSelectionMode read FSelectionMode write FSelectionMode;
|
||||
property OnOpenPackage: TNotifyEvent read FOnOpenPackage write FOnOpenPackage;
|
||||
property OnOpenUnit: TNotifyEvent read FOnOpenUnit write FOnOpenUnit;
|
||||
end;
|
||||
@ -832,7 +825,6 @@ end;
|
||||
constructor TComponentPalette.Create;
|
||||
begin
|
||||
inherited Create(EnvironmentOptions.ComponentPaletteOptions);
|
||||
FSelectionMode:=csmSingle;
|
||||
fComponentButtons:=TComponentButtonMap.Create;
|
||||
fComponentButtons.Sorted:=True;
|
||||
OnComponentIsInvisible:=@CheckComponentDesignerVisible;
|
||||
|
Loading…
Reference in New Issue
Block a user