From f6896bbbb29652f4af602ad058cc3ade2e6a02a5 Mon Sep 17 00:00:00 2001 From: martin Date: Mon, 12 Nov 2018 19:45:15 +0000 Subject: [PATCH] Debugger: Register Window, add "Copy name and value", "Copy All". Patch by silvioprog, Issue #34544 git-svn-id: trunk@59529 - --- debugger/registersdlg.lfm | 50 ++++++++++++++++++++++++++----------- debugger/registersdlg.pp | 35 ++++++++++++++++++++++++++ ide/lazarusidestrconsts.pas | 2 ++ 3 files changed, 73 insertions(+), 14 deletions(-) diff --git a/debugger/registersdlg.lfm b/debugger/registersdlg.lfm index 86e380cf10..546a858f4a 100644 --- a/debugger/registersdlg.lfm +++ b/debugger/registersdlg.lfm @@ -8,7 +8,8 @@ inherited RegistersDlg: TRegistersDlg Caption = 'Registers' ClientHeight = 253 ClientWidth = 346 - object lvRegisters: TListView[0] + LCLVersion = '2.1.0.0' + object lvRegisters: TListView Left = 0 Height = 227 Top = 26 @@ -31,7 +32,7 @@ inherited RegistersDlg: TRegistersDlg ViewStyle = vsReport OnSelectItem = lvRegistersSelectItem end - object ToolBar1: TToolBar[1] + object ToolBar1: TToolBar Left = 0 Height = 26 Top = 0 @@ -67,11 +68,11 @@ inherited RegistersDlg: TRegistersDlg Style = tbsDropDown end end - object ImageList1: TImageList[2] + object ImageList1: TImageList Height = 8 Width = 8 - left = 112 - top = 93 + Left = 112 + Top = 93 Bitmap = { 4C69010000000800000008000000000000000000000000000000000000000000 000000000000000000000000000000000000000000005CDD8AFF33D56FFF65DE @@ -84,26 +85,41 @@ inherited RegistersDlg: TRegistersDlg 0000000000000000000000000000 } end - object ActionList1: TActionList[3] - left = 200 - top = 112 + object ActionList1: TActionList + Left = 200 + Top = 112 object actPower: TAction + Enabled = False OnExecute = actPowerExecute end object actCopyName: TAction Category = 'copy' Caption = 'actCopyName' + Enabled = False OnExecute = actCopyNameExecute end object actCopyValue: TAction Category = 'copy' Caption = 'actCopyValue' + Enabled = False OnExecute = actCopyValueExecute end + object actCopyNameValue: TAction + Category = 'copy' + Caption = 'actCopyNameValue' + Enabled = False + OnExecute = actCopyNameValueExecute + end + object actCopyAll: TAction + Category = 'copy' + Caption = 'actCopyAll' + Enabled = False + OnExecute = actCopyAllExecute + end end - object PopupDispType: TPopupMenu[4] - left = 200 - top = 176 + object PopupDispType: TPopupMenu + Left = 200 + Top = 176 object DispDefault: TMenuItem Caption = 'New Item1' OnClick = DispDefaultClick @@ -129,9 +145,9 @@ inherited RegistersDlg: TRegistersDlg OnClick = DispDefaultClick end end - object PopupMenu1: TPopupMenu[5] - left = 95 - top = 178 + object PopupMenu1: TPopupMenu + Left = 95 + Top = 178 object popFormat: TMenuItem Caption = 'New Item1' object PopDispDefault: TMenuItem @@ -168,5 +184,11 @@ inherited RegistersDlg: TRegistersDlg object popCopyValue: TMenuItem Action = actCopyValue end + object popCopyNameValue: TMenuItem + Action = actCopyNameValue + end + object popCopyAll: TMenuItem + Action = actCopyAll + end end end diff --git a/debugger/registersdlg.pp b/debugger/registersdlg.pp index c2b5b5bc11..acc33c8c32 100644 --- a/debugger/registersdlg.pp +++ b/debugger/registersdlg.pp @@ -48,6 +48,8 @@ type TRegistersDlg = class(TDebuggerDlg) actCopyName: TAction; actCopyValue: TAction; + actCopyNameValue: TAction; + actCopyAll: TAction; actPower: TAction; ActionList1: TActionList; ImageList1: TImageList; @@ -58,6 +60,8 @@ type DispOct: TMenuItem; DispDec: TMenuItem; DispRaw: TMenuItem; + popCopyAll: TMenuItem; + popCopyNameValue: TMenuItem; PopDispDefault: TMenuItem; PopDispHex: TMenuItem; PopDispBin: TMenuItem; @@ -74,7 +78,9 @@ type ToolButton1: TToolButton; ToolButtonDispType: TToolButton; ToolButtonPower: TToolButton; + procedure actCopyAllExecute(Sender: TObject); procedure actCopyNameExecute(Sender: TObject); + procedure actCopyNameValueExecute(Sender: TObject); procedure actCopyValueExecute(Sender: TObject); procedure actPowerExecute(Sender: TObject); procedure DispDefaultClick(Sender: TObject); @@ -153,6 +159,8 @@ begin actCopyName.Caption := lisLocalsDlgCopyName; actCopyValue.Caption := lisLocalsDlgCopyValue; + actCopyNameValue.Caption := lisLocalsDlgCopyNameValue; + actCopyAll.Caption := lisLocalsDlgCopyAll; ToolButtonDispType.Hint := regdlgDisplayTypeForSelectedRegisters; @@ -224,6 +232,31 @@ begin Clipboard.Close; end; +procedure TRegistersDlg.actCopyNameValueExecute(Sender: TObject); +begin + Clipboard.Open; + Clipboard.AsText := Concat(lvRegisters.Selected.Caption, '=', + lvRegisters.Selected.SubItems[0]); + Clipboard.Close; +end; + +procedure TRegistersDlg.actCopyAllExecute(Sender: TObject); +var + T: string; + I: Integer; + LI: TListItem; +begin + Clipboard.Open; + T := ''; + for I := 0 to Pred(lvRegisters.Items.Count) do + begin + LI := lvRegisters.Items[I]; + T := Concat(T, LI.Caption, '=', LI.SubItems[0], sLineBreak); + end; + Clipboard.AsText := T; + Clipboard.Close; +end; + procedure TRegistersDlg.DispDefaultClick(Sender: TObject); var n: Integer; @@ -282,6 +315,8 @@ begin popFormat.Enabled := j > 0; actCopyName.Enabled := j > 0; actCopyValue.Enabled := j > 0; + actCopyNameValue.Enabled := j > 0; + actCopyAll.Enabled := lvRegisters.Items.Count > 0; PopDispDefault.Checked := False; PopDispHex.Checked := False; diff --git a/ide/lazarusidestrconsts.pas b/ide/lazarusidestrconsts.pas index 13237cb9d0..c6836bf5ca 100644 --- a/ide/lazarusidestrconsts.pas +++ b/ide/lazarusidestrconsts.pas @@ -5529,6 +5529,8 @@ resourcestring lisEvaluateModify = '&Evaluate/Modify'; lisLocalsDlgCopyName = '&Copy Name'; lisLocalsDlgCopyValue = 'C&opy Value'; + lisLocalsDlgCopyNameValue = 'Co&py Name and Value'; + lisLocalsDlgCopyAll = 'Copy &all'; lisLocalsDlgCopyRAWValue = 'Copy &RAW Value'; // Registers Dialog