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