IdeInspector: Work with modal too

git-svn-id: trunk@28687 -
This commit is contained in:
martin 2010-12-11 18:26:46 +00:00
parent be513b35da
commit 77a6748d93
7 changed files with 489 additions and 68 deletions

2
.gitattributes vendored
View File

@ -4,6 +4,8 @@
/COPYING.modifiedLGPL.txt -text svneol=unset#application/octet-stream /COPYING.modifiedLGPL.txt -text svneol=unset#application/octet-stream
/COPYING.txt svneol=native#text/plain /COPYING.txt svneol=native#text/plain
/README.txt svneol=native#text/plain /README.txt svneol=native#text/plain
components/IdeInspector/ideinspectkeygrapper.lfm svneol=native#text/plain
components/IdeInspector/ideinspectkeygrapper.pas svneol=native#text/pascal
components/IdeInspector/ideinspector.lpk svneol=native#text/xml components/IdeInspector/ideinspector.lpk svneol=native#text/xml
components/IdeInspector/ideinspector.pas svneol=native#text/pascal components/IdeInspector/ideinspector.pas svneol=native#text/pascal
components/IdeInspector/maininspector.lfm svneol=native#text/plain components/IdeInspector/maininspector.lfm svneol=native#text/plain

View File

@ -0,0 +1,32 @@
object IdeInspectKeyGrabForm: TIdeInspectKeyGrabForm
Left = 1193
Height = 240
Top = 155
Width = 320
Caption = 'Key Shortcut'
ClientHeight = 240
ClientWidth = 320
OnCreate = FormCreate
LCLVersion = '0.9.29'
object ButtonPanel1: TButtonPanel
Left = 6
Height = 34
Top = 200
Width = 308
OKButton.Name = 'OKButton'
OKButton.Caption = '&OK'
OKButton.OnClick = OKButtonClick
HelpButton.Name = 'HelpButton'
HelpButton.Caption = '&Help'
HelpButton.Enabled = False
CloseButton.Name = 'CloseButton'
CloseButton.Caption = '&Close'
CloseButton.Enabled = False
CancelButton.Name = 'CancelButton'
CancelButton.Caption = 'Cancel'
CancelButton.OnClick = CancelButtonClick
TabOrder = 0
ShowButtons = [pbOK, pbCancel]
ShowGlyphs = [pbOK, pbCancel]
end
end

View File

@ -0,0 +1,57 @@
unit IdeInspectKeyGrapper;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ButtonPanel, PropEdits;
type
{ TIdeInspectKeyGrabForm }
TIdeInspectKeyGrabForm = class(TForm)
ButtonPanel1: TButtonPanel;
procedure CancelButtonClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure OKButtonClick(Sender: TObject);
private
FKeyBox: TShortCutGrabBox;
{ private declarations }
public
{ public declarations }
property KeyBox: TShortCutGrabBox read FKeyBox;
end;
implementation
{$R *.lfm}
{ TIdeInspectKeyGrabForm }
procedure TIdeInspectKeyGrabForm.FormCreate(Sender: TObject);
begin
FKeyBox:=TShortCutGrabBox.Create(Self);
with FKeyBox do begin
Name:='FKeyBox';
Align:=alClient;
AutoSize:=true;
BorderSpacing.Around:=6;
Parent:=self;
end;
AutoSize := True;
end;
procedure TIdeInspectKeyGrabForm.OKButtonClick(Sender: TObject);
begin
ModalResult := mrOK;
end;
procedure TIdeInspectKeyGrabForm.CancelButtonClick(Sender: TObject);
begin
ModalResult := mrCancel;
end;
end.

View File

@ -24,12 +24,16 @@
"Here be dragons" Be careful and save your data first"/> "Here be dragons" Be careful and save your data first"/>
<License Value="LGPL, same as LCL"/> <License Value="LGPL, same as LCL"/>
<Version Minor="1"/> <Version Minor="1"/>
<Files Count="1"> <Files Count="2">
<Item1> <Item1>
<Filename Value="maininspector.pas"/> <Filename Value="maininspector.pas"/>
<HasRegisterProc Value="True"/> <HasRegisterProc Value="True"/>
<UnitName Value="MainInspector"/> <UnitName Value="MainInspector"/>
</Item1> </Item1>
<Item2>
<Filename Value="ideinspectkeygrapper.pas"/>
<UnitName Value="ideinspectkeygrapper"/>
</Item2>
</Files> </Files>
<Type Value="RunAndDesignTime"/> <Type Value="RunAndDesignTime"/>
<RequiredPkgs Count="3"> <RequiredPkgs Count="3">

View File

@ -7,7 +7,7 @@ unit IdeInspector;
interface interface
uses uses
MainInspector, LazarusPackageIntf; MainInspector, IdeInspectKeyGrapper, LazarusPackageIntf;
implementation implementation

View File

@ -1,19 +1,24 @@
object IdeInspectForm: TIdeInspectForm object IdeInspectForm: TIdeInspectForm
Left = 2070 Left = 2070
Height = 479 Height = 494
Top = 157 Top = 157
Width = 498 Width = 512
BorderStyle = bsSizeToolWin BorderStyle = bsSizeToolWin
Caption = 'IdeInspectForm' Caption = 'IdeInspectForm'
ClientHeight = 479 ClientHeight = 494
ClientWidth = 498 ClientWidth = 512
Constraints.MinHeight = 220
Constraints.MinWidth = 280
OnClose = FormClose
OnShow = FormShow
Position = poDefault Position = poDefault
LCLVersion = '0.9.29' LCLVersion = '0.9.29'
object ToolBar1: TToolBar object ToolBar1: TToolBar
Left = 0 Left = 0
Height = 26 Height = 24
Top = 0 Top = 0
Width = 498 Width = 512
AutoSize = True
Caption = 'ToolBar1' Caption = 'ToolBar1'
EdgeBorders = [ebBottom] EdgeBorders = [ebBottom]
Images = ImageList1 Images = ImageList1
@ -22,23 +27,21 @@ object IdeInspectForm: TIdeInspectForm
ShowHint = True ShowHint = True
TabOrder = 0 TabOrder = 0
object btnComponent: TToolButton object btnComponent: TToolButton
Left = 98 Left = 121
Top = 0 Top = 0
AutoSize = True
DropdownMenu = popComponent DropdownMenu = popComponent
OnClick = btnComponentClick OnClick = btnComponentClick
Style = tbsDropDown Style = tbsDropDown
end end
object btnSubComponent: TToolButton object btnSubComponent: TToolButton
Left = 141 Left = 164
Top = 0 Top = 0
AutoSize = True
DropdownMenu = popSubComponent DropdownMenu = popSubComponent
OnClick = btnSubComponentClick OnClick = btnSubComponentClick
Style = tbsDropDown Style = tbsDropDown
end end
object ToolButton1: TToolButton object ToolButton1: TToolButton
Left = 90 Left = 113
Top = 0 Top = 0
Width = 8 Width = 8
Caption = 'ToolButton1' Caption = 'ToolButton1'
@ -51,14 +54,14 @@ object IdeInspectForm: TIdeInspectForm
OnClick = btnRemoveSelectedClick OnClick = btnRemoveSelectedClick
end end
object ToolButton2: TToolButton object ToolButton2: TToolButton
Left = 133 Left = 156
Top = 0 Top = 0
Width = 8 Width = 8
Caption = 'ToolButton2' Caption = 'ToolButton2'
Style = tbsSeparator Style = tbsSeparator
end end
object btnControls: TToolButton object btnControls: TToolButton
Left = 176 Left = 199
Top = 0 Top = 0
DropdownMenu = popControls DropdownMenu = popControls
OnClick = btnControlsClick OnClick = btnControlsClick
@ -72,7 +75,7 @@ object IdeInspectForm: TIdeInspectForm
Style = tbsSeparator Style = tbsSeparator
end end
object ToolButtonFollowActive: TToolButton object ToolButtonFollowActive: TToolButton
Left = 32 Left = 55
Hint = 'Follow Active Window or Frame' Hint = 'Follow Active Window or Frame'
Top = 0 Top = 0
ImageIndex = 1 ImageIndex = 1
@ -81,18 +84,56 @@ object IdeInspectForm: TIdeInspectForm
Style = tbsCheck Style = tbsCheck
end end
object ToolButtonActiveType: TToolButton object ToolButtonActiveType: TToolButton
Left = 55 Left = 78
Top = 0 Top = 0
AutoSize = True
DropdownMenu = popFollowType DropdownMenu = popFollowType
OnClick = ToolButtonActiveTypeClick OnClick = ToolButtonActiveTypeClick
Style = tbsDropDown Style = tbsDropDown
end end
object ToolButton4: TToolButton
Left = 234
Top = 0
Width = 8
Caption = 'ToolButton4'
Style = tbsSeparator
end
object ToolButtonKey: TToolButton
Left = 242
Hint = 'Set Key shortcut'
Top = 0
ImageIndex = 2
OnClick = ToolButtonKeyClick
ShowCaption = False
end
object btnEndModal: TToolButton
Left = 1
Hint = 'Finish modal'
Top = 0
ImageIndex = 3
OnClick = btnEndModalClick
Visible = False
end
object sepModal: TToolButton
Left = 1
Top = 0
Width = 8
Caption = 'sepModal'
Style = tbsSeparator
Visible = False
end
object btnKeepTop: TToolButton
Left = 32
Hint = 'Keep on top'
Top = 0
ImageIndex = 4
OnClick = btnKeepTopClick
Style = tbsCheck
end
end end
object TreeView1: TTreeView object TreeView1: TTreeView
Left = 0 Left = 0
Height = 364 Height = 381
Top = 26 Top = 24
Width = 217 Width = 217
Align = alLeft Align = alLeft
DefaultItemHeight = 17 DefaultItemHeight = 17
@ -106,20 +147,20 @@ object IdeInspectForm: TIdeInspectForm
end end
object Splitter1: TSplitter object Splitter1: TSplitter
Left = 217 Left = 217
Height = 364 Height = 381
Top = 26 Top = 24
Width = 5 Width = 5
end end
object Panel1: TPanel object Panel1: TPanel
Left = 0 Left = 0
Height = 89 Height = 89
Top = 390 Top = 405
Width = 498 Width = 512
Align = alBottom Align = alBottom
AutoSize = True AutoSize = True
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 89 ClientHeight = 89
ClientWidth = 498 ClientWidth = 512
TabOrder = 3 TabOrder = 3
object ComboHistory: TComboBox object ComboHistory: TComboBox
AnchorSideLeft.Control = Panel1 AnchorSideLeft.Control = Panel1
@ -129,7 +170,7 @@ object IdeInspectForm: TIdeInspectForm
Left = 5 Left = 5
Height = 23 Height = 23
Top = 5 Top = 5
Width = 488 Width = 502
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 5 BorderSpacing.Left = 5
BorderSpacing.Top = 5 BorderSpacing.Top = 5
@ -143,13 +184,13 @@ object IdeInspectForm: TIdeInspectForm
AnchorSideLeft.Control = ComboHistory AnchorSideLeft.Control = ComboHistory
AnchorSideTop.Control = EditUnit AnchorSideTop.Control = EditUnit
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = btnOpenFile AnchorSideRight.Control = Panel2
AnchorSideBottom.Control = Panel1 AnchorSideBottom.Control = Panel1
AnchorSideBottom.Side = asrBottom AnchorSideBottom.Side = asrBottom
Left = 5 Left = 5
Height = 23 Height = 23
Top = 61 Top = 61
Width = 454 Width = 451
Anchors = [akTop, akLeft, akRight, akBottom] Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Top = 5 BorderSpacing.Top = 5
BorderSpacing.Right = 5 BorderSpacing.Right = 5
@ -161,43 +202,69 @@ object IdeInspectForm: TIdeInspectForm
AnchorSideLeft.Control = ComboHistory AnchorSideLeft.Control = ComboHistory
AnchorSideTop.Control = ComboHistory AnchorSideTop.Control = ComboHistory
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = btnOpenFile AnchorSideRight.Control = Panel2
Left = 5 Left = 5
Height = 23 Height = 23
Top = 33 Top = 33
Width = 454 Width = 451
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 5 BorderSpacing.Top = 5
BorderSpacing.Right = 5 BorderSpacing.Right = 5
ReadOnly = True ReadOnly = True
TabOrder = 2 TabOrder = 2
end end
object btnOpenFile: TSpeedButton object Panel2: TPanel
AnchorSideTop.Control = EditFile AnchorSideTop.Control = EditFile
AnchorSideTop.Side = asrCenter AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = Panel1 AnchorSideRight.Control = Panel1
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 464 Left = 461
Height = 22 Height = 28
Hint = 'Open File' Top = 58
Top = 61 Width = 51
Width = 29
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
AutoSize = True AutoSize = True
BorderSpacing.Top = 5 BevelOuter = bvNone
BorderSpacing.Right = 5 ChildSizing.Layout = cclTopToBottomThenLeftToRight
Caption = '...' ClientHeight = 28
NumGlyphs = 0 ClientWidth = 51
OnClick = btnOpenFileClick TabOrder = 3
ShowHint = True object btnOpenFile: TSpeedButton
ParentShowHint = False AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = Panel2
AnchorSideRight.Side = asrBottom
Left = 0
Height = 23
Hint = 'Open File'
Top = 5
Width = 23
BorderSpacing.Top = 5
BorderSpacing.Right = 5
Caption = '...'
NumGlyphs = 0
OnClick = btnOpenFileClick
ShowHint = True
ParentShowHint = False
end
object btnSaveHist: TSpeedButton
AnchorSideTop.Side = asrCenter
AnchorSideRight.Side = asrBottom
Left = 28
Height = 23
Top = 5
Width = 23
Caption = '+'
NumGlyphs = 0
Visible = False
OnClick = btnSaveHistClick
end
end end
end end
object TabControl1: TTabControl object TabControl1: TTabControl
Left = 222 Left = 222
Height = 364 Height = 381
Top = 26 Top = 24
Width = 276 Width = 290
Align = alClient Align = alClient
OnChange = TabControl1Change OnChange = TabControl1Change
TabIndex = 0 TabIndex = 0
@ -223,7 +290,7 @@ object IdeInspectForm: TIdeInspectForm
left = 48 left = 48
top = 200 top = 200
Bitmap = { Bitmap = {
4C69020000001000000010000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 4C69050000001000000010000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006360 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006360
F80AFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007774FF1F7774 F80AFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007774FF1F7774
FF2BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00625FF82B5D5B FF2BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00625FF82B5D5B
@ -287,7 +354,103 @@ object IdeInspectForm: TIdeInspectForm
8CFFBA848CFFBA848CFFBA848CFFBA848CFFBA848CFFBA858DFFBA848CFFBB87 8CFFBA848CFFBA848CFFBA848CFFBA848CFFBA848CFFBA858DFFBA848CFFBB87
8FFFC2949BFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 8FFFC2949BFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00858A8849888D8BEB858A88FF858A
88FF858A88FF858A88FF858A88FF858A88FF858A88FF858A88FF858A88FF858A
88FF878C8AF1878C8A61FFFFFF00FFFFFF008A8E8CD7D4D7D6FFECEEEDFFEEF0
EFFFF1F2F2FFF3F4F4FFF5F6F6FFF7F7F7FFF7F7F7FFF5F6F6FFF3F4F4FFF1F2
F2FFDEE0E0FF888C8AF1FFFFFF00FFFFFF00888D8BECE4E7E5FFD7DBDBFFD7DA
DAFFD8DCDBFFD8DCDBFFD8DCDBFFD8DDDCFFD8DDDCFFD8DCDBFFD8DCDBFFD9DD
DCFFEFF0F0FF858A88FFFFFFFF00FFFFFF00888D8BECE3E5E4FFD5D9D9FFD8DF
DBFFDAE0DDFFDBE1DEFFDCE2DFFFDDE2DFFF6B6D6CFF515453FFDBE2DEFFD5D9
D9FFEDEEEEFF858A88FFFFFFFF00FFFFFF00888D8BECE0E3E2FFD9DDDDFFDBE1
DEFFDDE3E0FFDEE4E1FFE0E5E2FFDCE2DFFFBABFBCFFD5DAD7FFDFE4E1FFD9DD
DDFFE9EBEBFF858A88FFFFFFFF00FFFFFF00888D8BECDDE0DFFFE0E3E3FFDDE3
E0FFE0E5E2FFE1E7E4FFE3E8E5FF9C9F9DFF6E716FFF393B3AFFE2E7E4FFE0E3
E3FFE5E7E7FF858A88FFFFFFFF00FFFFFF00878C8AECD9DDDBFFE5E7E7FFE0E5
E2FFE2E7E4FFE4E9E6FFE6EAE8FF9A9C9BFF696C6AFF232323FFD7DBD9FFE5E7
E7FFE0E3E2FF858A88FFFFFFFF00FFFFFF00878C8AECD5D9D7FFEBEEEDFFE1E6
E4FFE4E9E6FFE7EBE8FFE9EDEBFF3B3C3CFFE3E6E4FF2B2C2CFFD8DDDAFFEBEE
EEFFDBDEDDFF858A88FFFFFFFF00FFFFFF00878C8AECD5D8D7FFF3F4F4FFE2E7
E4FFE5EAE7FFE8ECEAFFEBEFECFF969997FF767877FF7E807FFFE0E4E2FFF3F4
F4FFD8DCDBFF858A88FFFFFFFF00FFFFFF00878C8AECD5D8D7FFF4F5F5FFF5F7
F7FFF5F8F7FFF6F8F8FFF6F8F8FFF6F8F8FFF6F8F8FFF6F8F8FFF6F8F8FFF4F5
F5FFD8DCDBFF858A88FFFFFFFF00FFFFFF00878C8AECD5D8D7FFBAC0BEFFBCC3
C0FFBCC3C0FFBCC3C0FFBCC3C0FFBCC3C0FFBCC3C0FFBCC3C0FFBCC3C0FFBAC0
BEFFD8DCDBFF858A88FFFFFFFF00FFFFFF00878C8AECD5D8D7FFB7BEBBFFB6BD
BAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB7BE
BBFFD8DCDBFF858A88FFFFFFFF00FFFFFF00888D8BD9C8CCCBFFD9DDDBFFD9DD
DBFFD9DDDBFFD9DDDBFFD9DDDBFFD9DDDBFFD9DDDBFFD9DDDBFFD9DDDBFFD9DD
DBFFCBCFCEFF868B89F3FFFFFF00FFFFFF00858A8851868B89EF858A88FC858A
88FC858A88FC858A88FC858A88FC858A88FC858A88FC858A88FC858A88FC858A
88FC868B89F4868C896AFFFFFF00FFFFFF00FFFFFF00858A8802858A8808858A
8808858A8808858A8808858A8808858A8808858A8808858A8808858A8808858A
8808858A8803FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF006D9CD4896A9AD2FB6697CFEEFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00709ED6DB6D9C
D4FF85B1DAFF5A91B9FF6093CBEAFFFFFF00FFFFFF00808080FF7E7E7EFF7C7C
7CFF7A7A7AFF777777FF757575FF727272FF719ED4FF6F9ED6FF87B2DCFFABD3
E8FFA9D0E6FF5890B8FF598EC6EAFFFFFF00FFFFFF007D7D7DFF999999FF9999
99FF9A9A9AFF9A9A9AFF9B9B9BFF9B9B9BFF6F9DD3FFAAD1E7FFABD1E7FF98C7
E1FF91C2DEFF568FB7FF5289C1EAFFFFFF00FFFFFF007A7A7AFF999999FF5291
59FF999A99FF9B9B9BFF9C9C9CFF9C9C9CFF6C9AD0FFA7CEE5FF8FC1DFFF89BD
DCFF8BBDDCFF538DB6FF4B84BCEAFFFFFF00FFFFFF00777777FF9A9A9AFF3D8A
45FF498A4FFF9C9C9CFF9D9D9DFF9D9D9DFF6696CCFFA2CBE3FF89BDDCFF83B9
DAFF84B9DAFF518BB5FF437EB6EA44944DFF42914BFF3F8D48FF3D8945FF5DA4
65FF5AA061FF45834BFF9E9E9EFF9E9E9EFF6092C9FF9EC7E2FF83B8DAFF7DB4
D7FF7EB3D7FF4F89B4FF3B79B1EA41904AFF94D29FFF91D09AFF8DCD96FF89CB
92FF84C88DFF519858FF417C46FF9F9F9FFF5A8EC4FF98C3E0FF7CB3D7FF74AF
D6FF5EC4EDFF4B88B3FF3473ABEA3E8B46FF8FCE99FF7DC687FF78C381FF73C0
7CFF74C07CFF79C281FF49904FFF547F57FF5489BFFF94BFDDFF75ADD4FF63B8
E1FF4BD4FFFF428BB8FF2C6EA6EA3B8742FF89CB92FF84C88DFF80C688FF7BC3
83FF77C17FFF478F4DFF3B743FFFA1A1A1FF4C84BAFF8DBBDBFF6EA8D1FF66A6
D1FF5FB4DFFF4785B1FF2569A1EA37823EFF347E3BFF317937FF2E7534FF4991
50FF468F4CFF39733DFFA1A1A1FFA2A2A2FF457EB4FF88B7D9FF67A3CFFF619E
CCFF639FCCFF4583B1FF1F649CEAFFFFFF00FFFFFF00606060FFA0A0A0FF3D76
41FF367139FFA2A2A2FFA2A2A2FFA3A3A3FF3D79B0FF82B3D7FF629FCCFF5A9A
C9FF5E9BCAFF4381AFFF196098EAFFFFFF00FFFFFF005C5C5CFFA1A1A1FF3C73
40FFA0A1A1FFA3A3A3FFA3A3A3FFA4A4A4FF3674AAFF7DAFD4FF5B9AC9FF5495
C7FF5896C8FF4180AEFF135C94EAFFFFFF00FFFFFF00585858FFA2A2A2FFA2A2
A2FFA3A3A3FFA4A4A4FFA4A4A4FFA5A5A5FF2F6FA5FF78ABD2FF78ABD3FF73A7
D1FF69A0CDFF407FAEFF0F5991EA999999FF717171FF545454FF515151FF4F4F
4FFF4C4C4CFF4A4A4AFF474747FF454545FF25679DFF3274A8FF3D7CAFFF4784
B5FF4E8ABAFF3E7EADFF0C578FEAFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001D639B1619609839145D9562105A
92880D5890A4135C92FC0C578FEDDFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDEFFDADADAFFD2D1D1FFC9C9C8FFBFBFBFFFB6B6
B6FFAEAEAEFFA4A5A5FFDFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DCDCDCFFD9D9D9FFD8D8D8FFD4D4D4FFD0D0
D0FFCECECEFFA5A5A5FFDFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDEFFDADADAFFD2D1D1FFC9C9C8FFBFBFBFFFB6B6B6FFAEAEAEFFA4A5
A5FFCCCCCCFFA5A5A5FFDFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DCDCDCFFD9D9D9FFD8D8D8FFD4D4D4FFD0D0D0FFCECECEFFA5A5
A5FFCACACAFFA5A6A5FFDFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDEFFDADA
DAFFD2D1D1FFC9C9C8FFBFBFBFFFB6B6B6FFAEAEAEFFA4A5A5FFCCCCCCFFA5A5
A5FFCCCCCCFFA5A5A5FFDFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DCDC
DCFFD9D9D9FFD8D8D8FFD4D4D4FFD0D0D0FFCECECEFFA5A5A5FFCACACAFFA5A6
A5FFCACACAFFA5A5A5FFDFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DCDC
DCFFD8D8D8FFD5D5D5FFD1D1D1FFCECECEFFCCCCCCFFA5A5A5FFCCCCCCFFA5A5
A5FFAFAEAEFFA6A5A6FFDFDFDF00DFDFDF00E7B48DFEE6B38CFFE6B38CFFE5AF
88FFE2A880FFDE9F76FFDA956CFFD49876FFCACACAFFA5A6A5FFCACACAFFA5A5
A5FFDFDFDF00DFDFDF00DFDFDF00DFDFDF00E7B48DFEECC8ACFFEBC3A4FFEABE
A0FFE7B798FFE4AF90FFE2AA8BFFD79B7AFFCCCCCCFFA5A5A5FFAFAEAEFFA6A5
A6FFDFDFDF00DFDFDF00DFDFDF00DFDFDF00E7B48DFEECC7AAFFEBC0A1FFE7BA
9BFFE5B192FFE2AA8BFFE0A687FFD59877FFCACACAFFA5A5A5FFDFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00E7B48DFEEBC5A7FFE9BB9DFFE5B4
95FFE2AC8DFFE0A584FFDFA384FFD29574FFAFAEAEFFA6A5A6FFDFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00E7B48DFEECC7AAFFEBC0A1FFE7BA
9BFFE5B192FFE2AA8BFFE0A687FFD88E66D2DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00E7B48DFEEBC5A7FFE9BB9DFFE5B4
95FFE2AC8DFFE0A584FFDFA384FFD88E66D2DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00E6B089FEE2A880FFDD9F76FFD996
6CFFD78C63FFD3855AFFD28358FFD48358D2DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDFDF00DFDF
DF00DFDFDF00DFDFDF00DFDFDF00
} }
end end
object popControls: TPopupMenu object popControls: TPopupMenu

View File

@ -7,7 +7,7 @@ interface
uses uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, Buttons, Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, Buttons,
ComCtrls, Menus, StdCtrls, MenuIntf, ObjectInspector, PropEdits, types, typinfo, ComCtrls, Menus, StdCtrls, MenuIntf, ObjectInspector, PropEdits, types, typinfo,
LazIDEIntf, LCLProc; LazIDEIntf, LazConfigStorage, BaseIDEIntf, LCLProc, IdeInspectKeyGrapper, math;
type type
@ -35,11 +35,13 @@ type
menuFollowForm: TMenuItem; menuFollowForm: TMenuItem;
menuFollowFrame: TMenuItem; menuFollowFrame: TMenuItem;
Panel1: TPanel; Panel1: TPanel;
Panel2: TPanel;
popComponent: TPopupMenu; popComponent: TPopupMenu;
popSubComponent: TPopupMenu; popSubComponent: TPopupMenu;
popControls: TPopupMenu; popControls: TPopupMenu;
popFollowType: TPopupMenu; popFollowType: TPopupMenu;
btnOpenFile: TSpeedButton; btnOpenFile: TSpeedButton;
btnSaveHist: TSpeedButton;
Splitter1: TSplitter; Splitter1: TSplitter;
TabControl1: TTabControl; TabControl1: TTabControl;
ToolBar1: TToolBar; ToolBar1: TToolBar;
@ -50,13 +52,23 @@ type
ToolButton2: TToolButton; ToolButton2: TToolButton;
btnControls: TToolButton; btnControls: TToolButton;
ToolButton3: TToolButton; ToolButton3: TToolButton;
ToolButton4: TToolButton;
btnEndModal: TToolButton;
sepModal: TToolButton;
btnKeepTop: TToolButton;
ToolButtonKey: TToolButton;
ToolButtonActiveType: TToolButton; ToolButtonActiveType: TToolButton;
ToolButtonFollowActive: TToolButton; ToolButtonFollowActive: TToolButton;
TreeView1: TTreeView; TreeView1: TTreeView;
procedure btnControlsClick(Sender: TObject); procedure btnControlsClick(Sender: TObject);
procedure btnEndModalClick(Sender: TObject);
procedure btnKeepTopClick(Sender: TObject);
procedure btnOpenFileClick(Sender: TObject); procedure btnOpenFileClick(Sender: TObject);
procedure btnSaveHistClick(Sender: TObject);
procedure btnSubComponentClick(Sender: TObject); procedure btnSubComponentClick(Sender: TObject);
procedure ComboHistoryChange(Sender: TObject); procedure ComboHistoryChange(Sender: TObject);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormShow(Sender: TObject);
procedure menuFollowFormClick(Sender: TObject); procedure menuFollowFormClick(Sender: TObject);
procedure menuFollowFrameClick(Sender: TObject); procedure menuFollowFrameClick(Sender: TObject);
procedure MenuItem1Click(Sender: TObject); procedure MenuItem1Click(Sender: TObject);
@ -68,6 +80,7 @@ type
procedure TabControl1Change(Sender: TObject); procedure TabControl1Change(Sender: TObject);
procedure ToolButtonActiveTypeClick(Sender: TObject); procedure ToolButtonActiveTypeClick(Sender: TObject);
procedure ToolButtonFollowActiveClick(Sender: TObject); procedure ToolButtonFollowActiveClick(Sender: TObject);
procedure ToolButtonKeyClick(Sender: TObject);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode); procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
procedure TreeView1Click(Sender: TObject); procedure TreeView1Click(Sender: TObject);
private private
@ -77,6 +90,10 @@ type
FHistoryList: TList; FHistoryList: TList;
FCurEntry: THistoryEntry; FCurEntry: THistoryEntry;
FIsUpdatingHistory: Boolean; FIsUpdatingHistory: Boolean;
FConf: TConfigStorage;
FKeyGrabForm: TIdeInspectKeyGrabForm;
FShortCutKey: Word;
FShortCutShift: TShiftState;
procedure DoPropSelChanged(Sender: TObject); procedure DoPropSelChanged(Sender: TObject);
protected protected
FPropertiesGrid: TCustomPropertiesGrid; FPropertiesGrid: TCustomPropertiesGrid;
@ -85,7 +102,9 @@ type
procedure Notification(AComponent: TComponent; Operation: TOperation); override; procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure DoActiveFormChanged(Sender: TObject; Form: TCustomForm); procedure DoActiveFormChanged(Sender: TObject; Form: TCustomForm);
procedure DoActiveControChanged(Sender: TObject; LastControl: TControl); procedure DoActiveControChanged(Sender: TObject; LastControl: TControl);
procedure UpdateHistory; procedure DoKeyDownBefore(Sender: TObject; var Key: Word; Shift: TShiftState);
function IndexOfCurrent: Integer;
procedure UpdateHistory(ForceAdd: Boolean = False);
procedure UpdateCurrent; procedure UpdateCurrent;
public public
{ public declarations } { public declarations }
@ -115,6 +134,13 @@ implementation
const const
MAX_HIST_CNT = 25; MAX_HIST_CNT = 25;
IDE_INSPECT_CONF_FILE = 'ide_inspector_config.xml';
ShiftStateNames: Array [TShiftStateEnum] of string =
('ssShift', 'ssAlt', 'ssCtrl',
'ssLeft', 'ssRight', 'ssMiddle', 'ssDouble',
// Extra additions
'ssMeta', 'ssSuper', 'ssHyper', 'ssAltGr', 'ssCaps', 'ssNum',
'ssScroll', 'ssTriple', 'ssQuad', 'ssExtra1', 'ssExtra2');
var var
OriginalBackTraceStrFunc: TBackTraceStrFunc; OriginalBackTraceStrFunc: TBackTraceStrFunc;
@ -185,6 +211,28 @@ begin
UpdateCurrent; UpdateCurrent;
end; end;
procedure TIdeInspectForm.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
FConf.SetDeleteValue('IDEInspect/FormPos/Left', Left, 400);
FConf.SetDeleteValue('IDEInspect/FormPos/top', Top, 50);
FConf.SetDeleteValue('IDEInspect/FormPos/Heigh', Height, 520);
FConf.SetDeleteValue('IDEInspect/FormPos/Width', Width, 500);
FConf.WriteToDisk;
end;
procedure TIdeInspectForm.FormShow(Sender: TObject);
begin
Left := FConf.GetValue('IDEInspect/FormPos/Left', 400);
Top := FConf.GetValue('IDEInspect/FormPos/top', 50);
Height := Max(220, FConf.GetValue('IDEInspect/FormPos/Heigh', 520));
Width := Max(280, FConf.GetValue('IDEInspect/FormPos/Width', 500));
//if Screen.MonitorFromPoint(IdeInspectForm.ClientToScreen
// (Point(IdeInspectForm.Left, IdeInspectForm.Top))) = nil
//then
MakeFullyVisible;
end;
procedure TIdeInspectForm.DoPropSelChanged(Sender: TObject); procedure TIdeInspectForm.DoPropSelChanged(Sender: TObject);
var var
i: LongInt; i: LongInt;
@ -209,7 +257,7 @@ begin
s := TObject(Method.Data).MethodName(Method.Code); s := TObject(Method.Data).MethodName(Method.Code);
if s = '' then if s = '' then
s := IntToHex(PtrUint(Method.Code), 2*SizeOf(Pointer)); s := IntToHex(QWord(PtrUint(Method.Code)), 2*SizeOf(Pointer));
s := TObject(Method.Data).ClassName + OName + '.' + s; s := TObject(Method.Data).ClassName + OName + '.' + s;
@ -227,7 +275,7 @@ begin
FCurEntry.Display := s; FCurEntry.Display := s;
FCurEntry.Comp := nil; FCurEntry.Comp := nil;
FCurEntry.TheUnitName := TObject(Method.Data).ClassType.UnitName; FCurEntry.TheUnitName := TObject(Method.Data).ClassType.UnitName;
FCurEntry.FileName := LazarusIDE.FindUnitFile(FCurEntry.TheUnitName); FCurEntry.FileName := LazarusIDE.FindUnitFile(FCurEntry.TheUnitName, LazarusIDE);
//LazarusIDE.DoOpenFileAndJumpToIdentifier(AFile, copy(AName,1,i), -1, -1, [ofOnlyIfExists, ofRegularFile]); //LazarusIDE.DoOpenFileAndJumpToIdentifier(AFile, copy(AName,1,i), -1, -1, [ofOnlyIfExists, ofRegularFile]);
//LazarusIDE.DoOpenFileAndJumpToPos(AFile, Point(1,i), Max(i-1,1), -1, -1, [ofOnlyIfExists, ofRegularFile]); //LazarusIDE.DoOpenFileAndJumpToPos(AFile, Point(1,i), Max(i-1,1), -1, -1, [ofOnlyIfExists, ofRegularFile]);
@ -239,6 +287,9 @@ begin
FFollowFrames := False; FFollowFrames := False;
ToolButtonActiveType.Caption := menuFollowForm.Caption; ToolButtonActiveType.Caption := menuFollowForm.Caption;
ToolButtonFollowActive.Down := True; ToolButtonFollowActive.Down := True;
FConf.SetDeleteValue('IDEInspect/FollowActive/Type', 0, 0);
FConf.WriteToDisk;
end; end;
procedure TIdeInspectForm.menuFollowFrameClick(Sender: TObject); procedure TIdeInspectForm.menuFollowFrameClick(Sender: TObject);
@ -246,6 +297,9 @@ begin
FFollowFrames := True; FFollowFrames := True;
ToolButtonActiveType.Caption := menuFollowFrame.Caption; ToolButtonActiveType.Caption := menuFollowFrame.Caption;
ToolButtonFollowActive.Down := True; ToolButtonFollowActive.Down := True;
FConf.SetDeleteValue('IDEInspect/FollowActive/Type', 1, 0);
FConf.WriteToDisk;
end; end;
procedure TIdeInspectForm.btnControlsClick(Sender: TObject); procedure TIdeInspectForm.btnControlsClick(Sender: TObject);
@ -253,11 +307,31 @@ begin
btnControls.CheckMenuDropdown; btnControls.CheckMenuDropdown;
end; end;
procedure TIdeInspectForm.btnEndModalClick(Sender: TObject);
begin
ModalResult := mrOK;
end;
procedure TIdeInspectForm.btnKeepTopClick(Sender: TObject);
begin
if btnKeepTop.Down then
FormStyle := fsStayOnTop
else
FormStyle := fsNormal;
FConf.SetDeleteValue('IDEInspect/FormPos/KeepTop', btnKeepTop.Down, False);
FConf.WriteToDisk;
end;
procedure TIdeInspectForm.btnOpenFileClick(Sender: TObject); procedure TIdeInspectForm.btnOpenFileClick(Sender: TObject);
begin begin
LazarusIDE.DoOpenEditorFile(EditFile.Text, -1, -1, [ofOnlyIfExists, ofRegularFile]); LazarusIDE.DoOpenEditorFile(EditFile.Text, -1, -1, [ofOnlyIfExists, ofRegularFile]);
end; end;
procedure TIdeInspectForm.btnSaveHistClick(Sender: TObject);
begin
UpdateHistory(True);
end;
procedure TIdeInspectForm.btnComponentClick(Sender: TObject); procedure TIdeInspectForm.btnComponentClick(Sender: TObject);
begin begin
btnComponent.CheckMenuDropdown; btnComponent.CheckMenuDropdown;
@ -367,6 +441,26 @@ procedure TIdeInspectForm.ToolButtonFollowActiveClick(Sender: TObject);
begin begin
if ToolButtonFollowActive.Down then if ToolButtonFollowActive.Down then
SetSelected(Self); SetSelected(Self);
FConf.SetDeleteValue('IDEInspect/FollowActive/Enabled', ToolButtonFollowActive.Down, False);
FConf.WriteToDisk;
end;
procedure TIdeInspectForm.ToolButtonKeyClick(Sender: TObject);
var
i: TShiftStateEnum;
begin
FKeyGrabForm.KeyBox.Key := FShortCutKey;
FKeyGrabForm.KeyBox.ShiftState := FShortCutShift;
if FKeyGrabForm.ShowModal = mrOK then begin
FShortCutKey := FKeyGrabForm.KeyBox.Key;
FShortCutShift := FKeyGrabForm.KeyBox.ShiftState;
FConf.SetDeleteValue('IDEInspect/KeyShortCut/Key', FShortCutKey, 0);
for i := low(TShiftStateEnum) to high(TShiftStateEnum) do
FConf.SetDeleteValue('IDEInspect/KeyShortCut/' + ShiftStateNames[i],
i in FShortCutShift, False);
FConf.WriteToDisk;
end;
end; end;
procedure TIdeInspectForm.TreeView1Change(Sender: TObject; Node: TTreeNode); procedure TIdeInspectForm.TreeView1Change(Sender: TObject; Node: TTreeNode);
@ -394,8 +488,14 @@ begin
if FCurEntry.Comp <> FSelected then begin if FCurEntry.Comp <> FSelected then begin
FCurEntry.Comp := FSelected; FCurEntry.Comp := FSelected;
FCurEntry.UpdateDisplayName; FCurEntry.UpdateDisplayName;
FCurEntry.TheUnitName := FSelected.UnitName; if FSelected <> nil then begin
FCurEntry.FileName := LazarusIDE.FindUnitFile(FCurEntry.TheUnitName); FCurEntry.TheUnitName := FSelected.UnitName;
FCurEntry.FileName := LazarusIDE.FindUnitFile(FCurEntry.TheUnitName, LazarusIDE);
end
else begin
FCurEntry.TheUnitName := '';
FCurEntry.FileName := '';
end;
UpdateHistory; UpdateHistory;
end; end;
end; end;
@ -483,7 +583,7 @@ end;
procedure TIdeInspectForm.DoActiveFormChanged(Sender: TObject; Form: TCustomForm); procedure TIdeInspectForm.DoActiveFormChanged(Sender: TObject; Form: TCustomForm);
begin begin
If not ToolButtonFollowActive.Down then If (not ToolButtonFollowActive.Down) or (not Self.Visible) then
exit; exit;
if Form <> Self then if Form <> Self then
@ -492,7 +592,7 @@ end;
procedure TIdeInspectForm.DoActiveControChanged(Sender: TObject; LastControl: TControl); procedure TIdeInspectForm.DoActiveControChanged(Sender: TObject; LastControl: TControl);
begin begin
If (not ToolButtonFollowActive.Down) or (not FFollowFrames) then If (not ToolButtonFollowActive.Down) or (not FFollowFrames) or (not Self.Visible) then
exit; exit;
if Screen.ActiveForm = Self then if Screen.ActiveForm = Self then
exit; exit;
@ -501,20 +601,62 @@ begin
SetSelected(Screen.ActiveControl.Owner); SetSelected(Screen.ActiveControl.Owner);
end; end;
procedure TIdeInspectForm.UpdateHistory; procedure TIdeInspectForm.DoKeyDownBefore(Sender: TObject; var Key: Word; Shift: TShiftState);
var
CurVisible: Boolean;
begin
if (Screen.ActiveForm = self) or (Screen.ActiveForm = FKeyGrabForm) then exit;
if FShortCutKey = 0 then exit;
if (FShortCutKey <> Key) or (FShortCutShift <> Shift) then
exit;
Key := 0;
if Application.ModalLevel = 0 then begin
Self.Show;
exit;
end;
CurVisible := Visible;
Close;
DestroyHandle;
btnOpenFile.Visible := False;
btnSaveHist.Visible := True;
btnEndModal.Visible := True;
sepModal.Visible := True;
sepModal.Left := 1;
btnEndModal.Left := 1;
btnRemoveSelected.Left := 2;
if Self. ShowModal <> mrOK then
CurVisible := False;
btnSaveHist.Visible := False;
btnOpenFile.Visible := True;
btnEndModal.Visible := False;
sepModal.Visible := False;
Visible := CurVisible;
end;
function TIdeInspectForm.IndexOfCurrent: Integer;
begin
if FCurEntry.Comp = nil then exit(-1);;
Result := FHistoryList.Count - 1;
while (Result >= 0) and (THistoryEntry(FHistoryList[Result]).Comp <> FCurEntry.Comp) do
dec(Result);
end;
procedure TIdeInspectForm.UpdateHistory(ForceAdd: Boolean = False);
var var
i: Integer; i: Integer;
FNewHist: THistoryEntry; FNewHist: THistoryEntry;
CanAdd: Boolean;
begin begin
FIsUpdatingHistory := True; FIsUpdatingHistory := True;
CanAdd := (FCurEntry.Comp is TCustomForm) or (FCurEntry.Comp is TCustomFrame)
or ForceAdd;
i := -1; i := -1;
if (FCurEntry.Comp <> nil) and if (FCurEntry.Comp <> nil) and CanAdd then begin
( (FCurEntry.Comp is TCustomForm) or (FCurEntry.Comp is TCustomFrame) ) i := IndexOfCurrent;
then begin
i := FHistoryList.Count - 1;
while (i >= 0) and (THistoryEntry(FHistoryList[i]).Comp <> FCurEntry.Comp) do
dec(i);
if i < 0 then begin if i < 0 then begin
FNewHist := THistoryEntry.Create; FNewHist := THistoryEntry.Create;
FNewHist.Assign(FCurEntry); FNewHist.Assign(FCurEntry);
@ -554,14 +696,20 @@ begin
Caption := ideinspIdeInspector; Caption := ideinspIdeInspector;
btnOpenFile.Enabled := EditFile.Text <> ''; btnOpenFile.Enabled := EditFile.Text <> '';
FIsUpdatingHistory := False; FIsUpdatingHistory := False;
btnSaveHist.Enabled := (FCurEntry.Comp <> nil) and (IndexOfCurrent < 0);
end; end;
constructor TIdeInspectForm.Create(TheOwner: TComponent); constructor TIdeInspectForm.Create(TheOwner: TComponent);
var
i: TShiftStateEnum;
begin begin
FKeyGrabForm := TIdeInspectKeyGrabForm.Create(Self);
FHistoryList := TList.Create; FHistoryList := TList.Create;
FCurEntry := THistoryEntry.Create; FCurEntry := THistoryEntry.Create;
Screen.AddHandlerActiveFormChanged(@DoActiveFormChanged); Screen.AddHandlerActiveFormChanged(@DoActiveFormChanged);
Screen.AddHandlerActiveControlChanged(@DoActiveControChanged); Screen.AddHandlerActiveControlChanged(@DoActiveControChanged);
Application.AddOnKeyDownBeforeHandler(@DoKeyDownBefore);
inherited Create(TheOwner); inherited Create(TheOwner);
FPropertiesGrid := TCustomPropertiesGrid.Create(Self); FPropertiesGrid := TCustomPropertiesGrid.Create(Self);
@ -578,16 +726,32 @@ begin
btnControls.Caption := ideinspControlsChildren; btnControls.Caption := ideinspControlsChildren;
btnRemoveSelected.Hint := ideinspRemoveSelectedItemSFromTree; btnRemoveSelected.Hint := ideinspRemoveSelectedItemSFromTree;
FFollowFrames := True; FConf := GetIDEConfigStorage(IDE_INSPECT_CONF_FILE, True);
ToolButtonActiveType.Caption := menuFollowFrame.Caption;
FFollowFrames := FConf.GetValue('IDEInspect/FollowActive/Type', 0) > 0;
if FFollowFrames then
ToolButtonActiveType.Caption := menuFollowFrame.Caption
else
ToolButtonActiveType.Caption := menuFollowForm.Caption;
TabControl1Change(nil); TabControl1Change(nil);
SetSelected(Application); SetSelected(Application);
FShortCutKey := FConf.GetValue('IDEInspect/KeyShortCut/Key', 0);
FShortCutShift := [];
for i := low(TShiftStateEnum) to high(TShiftStateEnum) do
if FConf.GetValue('IDEInspect/KeyShortCut/' + ShiftStateNames[i], False) then
FShortCutShift := FShortCutShift + [i];
btnKeepTop.Down := FConf.GetValue('IDEInspect/FormPos/KeepTop', False);
ToolButtonFollowActive.Down := FConf.GetValue('IDEInspect/FollowActive/Enabled', False);
end; end;
destructor TIdeInspectForm.Destroy; destructor TIdeInspectForm.Destroy;
var var
i: Integer; i: Integer;
begin begin
FreeAndNil(fConf);
Application.RemoveOnKeyDownBeforeHandler(@DoKeyDownBefore);
Screen.RemoveHandlerActiveControlChanged(@DoActiveControChanged); Screen.RemoveHandlerActiveControlChanged(@DoActiveControChanged);
Screen.RemoveHandlerActiveFormChanged(@DoActiveFormChanged); Screen.RemoveHandlerActiveFormChanged(@DoActiveFormChanged);
for i := 0 to FHistoryList.Count - 1 do for i := 0 to FHistoryList.Count - 1 do
@ -595,19 +759,18 @@ begin
FreeAndNil(FHistoryList); FreeAndNil(FHistoryList);
FreeAndNil(FCurEntry); FreeAndNil(FCurEntry);
FreeAndNil(TreeView1); FreeAndNil(TreeView1);
FreeAndNil(FKeyGrabForm);
inherited Destroy; inherited Destroy;
end; end;
procedure IDEMenuClicked(Sender: TObject); procedure IDEMenuClicked(Sender: TObject);
begin begin
if not Assigned(IdeInspectForm) then begin
IdeInspectForm := TIdeInspectForm.Create(Application);
end;
IdeInspectForm.Show; IdeInspectForm.Show;
end; end;
procedure Register; procedure Register;
begin begin
IdeInspectForm := TIdeInspectForm.Create(Application);
RegisterIDEMenuCommand(itmViewIDEInternalsWindows, 'mnuIdeInspector', ideinspInspectIDE, nil, RegisterIDEMenuCommand(itmViewIDEInternalsWindows, 'mnuIdeInspector', ideinspInspectIDE, nil,
@IDEMenuClicked); @IDEMenuClicked);
end; end;