mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-06 03:46:01 +02:00
designer: add SelectAll menu item, Ctrl+A key handling (implements issue #0001776)
git-svn-id: trunk@18757 -
This commit is contained in:
parent
2b2c44b007
commit
e8e122df26
@ -483,6 +483,8 @@ type
|
||||
property RubberbandSelectionColor: TColor read GetRubberbandSelectionColor;
|
||||
property RubberbandCreationColor: TColor read GetRubberbandCreationColor;
|
||||
procedure DrawRubberband(DC: TDesignerDeviceContext);
|
||||
|
||||
procedure SelectAll(ALookupRoot: TComponent);
|
||||
procedure SelectWithRubberBand(ALookupRoot: TComponent;
|
||||
ClearBefore, ExclusiveOr: boolean;
|
||||
var SelectionChanged: boolean;
|
||||
@ -2367,10 +2369,24 @@ begin
|
||||
DrawInvertFrameRect(Left-Diff.X,Top-Diff.Y,Right-Diff.X,Bottom-Diff.Y);
|
||||
end;
|
||||
|
||||
procedure TControlSelection.SelectAll(ALookupRoot: TComponent);
|
||||
var
|
||||
i: integer;
|
||||
AComponent: TComponent;
|
||||
begin
|
||||
for i := 0 to ALookupRoot.ComponentCount - 1 do
|
||||
begin
|
||||
AComponent := ALookupRoot.Components[i];
|
||||
if not IsSelected(AComponent) then
|
||||
Add(AComponent);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TControlSelection.SelectWithRubberBand(ALookupRoot: TComponent;
|
||||
ClearBefore, ExclusiveOr:boolean; var SelectionChanged: boolean;
|
||||
MaxParentControl: TControl);
|
||||
var i:integer;
|
||||
var
|
||||
i: integer;
|
||||
AComponent: TComponent;
|
||||
|
||||
function ControlInRubberBand(AComponent: TComponent): boolean;
|
||||
|
@ -160,6 +160,7 @@ type
|
||||
// procedures for working with components and persistents
|
||||
function GetDesignControl(AControl: TControl): TControl;
|
||||
function DoDeleteSelectedPersistents: boolean;
|
||||
procedure DoSelectAll;
|
||||
procedure DoDeletePersistent(APersistent: TPersistent; FreeIt: boolean);
|
||||
procedure MarkPersistentForDeletion(APersistent: TPersistent);
|
||||
function PersistentIsMarkedForDeletion(APersistent: TPersistent): boolean;
|
||||
@ -204,6 +205,7 @@ type
|
||||
procedure OnCutMenuClick(Sender: TObject);
|
||||
procedure OnPasteMenuClick(Sender: TObject);
|
||||
procedure OnDeleteSelectionMenuClick(Sender: TObject);
|
||||
procedure OnSelectAllMenuClick(Sender: TObject);
|
||||
procedure OnChangeClassMenuClick(Sender: TObject);
|
||||
procedure OnChangeParentMenuClick(Sender: TObject);
|
||||
procedure OnSnapToGridOptionMenuClick(Sender: TObject);
|
||||
@ -342,6 +344,7 @@ var
|
||||
DesignerMenuCopy: TIDEMenuCommand;
|
||||
DesignerMenuPaste: TIDEMenuCommand;
|
||||
DesignerMenuDeleteSelection: TIDEMenuCommand;
|
||||
DesignerMenuSelectAll: TIDEMenuCommand;
|
||||
|
||||
DesignerMenuChangeClass: TIDEMenuCommand;
|
||||
DesignerMenuChangeParent: TIDEMenuSection;
|
||||
@ -420,7 +423,9 @@ begin
|
||||
DesignerMenuPaste:=RegisterIDEMenuCommand(DesignerMenuSectionClipboard,
|
||||
'Paste',lisMenuPaste, nil, nil, nil, 'laz_paste');
|
||||
DesignerMenuDeleteSelection:=RegisterIDEMenuCommand(DesignerMenuSectionClipboard,
|
||||
'Delete selection',fdmDeleteSelection, nil, nil, nil, 'delete_selection');
|
||||
'Delete Selection',fdmDeleteSelection, nil, nil, nil, 'delete_selection');
|
||||
DesignerMenuSelectAll:=RegisterIDEMenuCommand(DesignerMenuSectionClipboard,
|
||||
'Select All',fdmSelectAll, nil, nil, nil, 'menu_select_all');
|
||||
|
||||
// register miscellaneous section
|
||||
DesignerMenuSectionMisc:=RegisterIDEMenuSection(DesignerMenuRoot,
|
||||
@ -1853,8 +1858,8 @@ var
|
||||
if (ssShift in Shift) then
|
||||
NudgeSize(x, y);
|
||||
end;
|
||||
|
||||
Begin
|
||||
|
||||
begin
|
||||
{$IFDEF VerboseDesigner}
|
||||
DebugLn(['TDesigner.KEYDOWN ',TheMessage.CharCode,' ',TheMessage.KeyData]);
|
||||
{$ENDIF}
|
||||
@ -1870,7 +1875,7 @@ Begin
|
||||
|
||||
if not Handled then
|
||||
begin
|
||||
Handled:=true;
|
||||
Handled := True;
|
||||
case TheMessage.CharCode of
|
||||
VK_DELETE:
|
||||
if not ControlSelection.OnlyInvisiblePersistentsSelected then
|
||||
@ -1888,6 +1893,11 @@ Begin
|
||||
VK_LEFT:
|
||||
Nudge(-1,0);
|
||||
|
||||
VK_A:
|
||||
if Shift = [ssCtrl] then
|
||||
DoSelectAll
|
||||
else
|
||||
Handled := False;
|
||||
else
|
||||
Handled:=false;
|
||||
end;
|
||||
@ -1974,6 +1984,15 @@ begin
|
||||
Result:=true;
|
||||
end;
|
||||
|
||||
procedure TDesigner.DoSelectAll;
|
||||
begin
|
||||
ControlSelection.BeginUpdate;
|
||||
ControlSelection.Clear;
|
||||
ControlSelection.SelectAll(FLookupRoot);
|
||||
ControlSelection.EndUpdate;
|
||||
Form.Invalidate;
|
||||
end;
|
||||
|
||||
procedure TDesigner.DoDeletePersistent(APersistent: TPersistent;
|
||||
FreeIt: boolean);
|
||||
var
|
||||
@ -2279,6 +2298,11 @@ begin
|
||||
DoDeleteSelectedPersistents;
|
||||
end;
|
||||
|
||||
procedure TDesigner.OnSelectAllMenuClick(Sender: TObject);
|
||||
begin
|
||||
DoSelectAll;
|
||||
end;
|
||||
|
||||
procedure TDesigner.OnChangeClassMenuClick(Sender: TObject);
|
||||
begin
|
||||
DoShowChangeClassDialog;
|
||||
@ -2803,6 +2827,7 @@ begin
|
||||
DesignerMenuCopy.OnClick:=@OnCopyMenuClick;
|
||||
DesignerMenuPaste.OnClick:=@OnPasteMenuClick;
|
||||
DesignerMenuDeleteSelection.OnClick:=@OnDeleteSelectionMenuClick;
|
||||
DesignerMenuSelectAll.OnClick:=@OnSelectAllMenuClick;
|
||||
|
||||
DesignerMenuChangeClass.OnClick:=@OnChangeClassMenuClick;
|
||||
DesignerMenuViewLFM.OnClick:=@OnViewLFMMenuClick;
|
||||
|
@ -1776,7 +1776,8 @@ resourcestring
|
||||
fdmOrderMoveToback='Move to back';
|
||||
fdmOrderForwardOne='Forward one';
|
||||
fdmOrderBackOne='Back one';
|
||||
fdmDeleteSelection='Delete selection';
|
||||
fdmDeleteSelection='Delete Selection';
|
||||
fdmSelectAll='Select All';
|
||||
lisChangeClass = 'Change Class';
|
||||
fdmSnapToGridOption='Option: Snap to grid';
|
||||
lisViewSourceLfm = 'View Source (.lfm)';
|
||||
|
Loading…
Reference in New Issue
Block a user