designer: add SelectAll menu item, Ctrl+A key handling (implements issue #0001776)

git-svn-id: trunk@18757 -
This commit is contained in:
paul 2009-02-19 03:43:00 +00:00
parent 2b2c44b007
commit e8e122df26
3 changed files with 48 additions and 6 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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)';