IDE: code observer options split in groups, bug #13551, Alexander S. Klenin

git-svn-id: trunk@19568 -
This commit is contained in:
mattias 2009-04-22 08:03:25 +00:00
parent 02ba3921d6
commit ce7fa875fb
5 changed files with 205 additions and 131 deletions

View File

@ -81,6 +81,8 @@ type
);
TCEObserverCategories = set of TCEObserverCategory;
TCEObserverCategoryGroup = (ocgComplexity, ocgEmpty, ocgStyle, ocgOther);
const
FirstCodeExplorerCategory = cecUses;
DefaultCodeExplorerCategories = [cecUses,

View File

@ -1,20 +1,19 @@
inherited CodeObserverOptionsFrame: TCodeObserverOptionsFrame
Height = 396
Width = 531
ClientHeight = 392
ClientWidth = 527
ClientHeight = 396
ClientWidth = 531
TabOrder = 0
DesignLeft = 756
DesignTop = 357
DesignLeft = 220
DesignTop = 220
object CodeObsIgnoreConstantsLabel: TLabel[0]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = CodeObsCategoriesCheckGroup
AnchorSideTop.Side = asrBottom
AnchorSideBottom.Control = CodeObsCharConstCheckBox
Left = 0
Height = 18
Height = 14
Top = 176
Width = 198
Width = 151
BorderSpacing.Top = 6
Caption = 'CodeObsIgnoreConstantsLabel'
ParentColor = False
@ -23,10 +22,10 @@ inherited CodeObserverOptionsFrame: TCodeObserverOptionsFrame
AnchorSideLeft.Control = CodeObsLeftPanel
AnchorSideTop.Control = CodeObsCategoriesCheckGroup
AnchorSideTop.Side = asrBottom
Left = 267
Height = 18
Left = 269
Height = 14
Top = 176
Width = 178
Width = 139
BorderSpacing.Top = 6
Caption = 'COIgnoreConstInFuncsLabel'
ParentColor = False
@ -34,10 +33,10 @@ inherited CodeObserverOptionsFrame: TCodeObserverOptionsFrame
object Label1: TLabel[2]
AnchorSideLeft.Control = Owner
AnchorSideLeft.Side = asrCenter
Left = 262
Height = 15
Left = 265
Height = 14
Top = 40
Width = 2
Width = 1
ParentColor = False
end
object CodeObsCategoriesCheckGroup: TCheckGroup[3]
@ -46,10 +45,8 @@ inherited CodeObserverOptionsFrame: TCodeObserverOptionsFrame
AnchorSideRight.Control = Label1
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 0
Height = 170
Top = 0
Width = 259
Width = 262
Anchors = [akTop, akLeft, akRight]
AutoFill = True
AutoSize = True
@ -64,6 +61,7 @@ inherited CodeObserverOptionsFrame: TCodeObserverOptionsFrame
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
Constraints.MinHeight = 170
OnItemClick = CodeObsCategoriesCheckGroupItemClick
TabOrder = 0
end
object CodeObsIgnoreConstantsMemo: TMemo[4]
@ -74,10 +72,9 @@ inherited CodeObserverOptionsFrame: TCodeObserverOptionsFrame
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 0
Height = 195
Top = 197
Width = 259
Height = 203
Top = 193
Width = 262
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Top = 3
Lines.Strings = (
@ -89,24 +86,22 @@ inherited CodeObserverOptionsFrame: TCodeObserverOptionsFrame
AnchorSideLeft.Control = Label1
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Owner
Left = 267
Height = 178
Top = 0
Width = 212
Left = 269
Height = 161
Width = 162
AutoSize = True
BorderSpacing.Left = 3
BevelOuter = bvNone
ClientHeight = 178
ClientWidth = 212
ClientHeight = 161
ClientWidth = 162
TabOrder = 2
object NestedProcCountLabel: TLabel
AnchorSideLeft.Control = CodeObsLeftPanel
AnchorSideTop.Control = LongParamListCountSpinEdit
AnchorSideTop.Side = asrBottom
Left = 0
Height = 18
Top = 106
Width = 147
Height = 14
Top = 98
Width = 110
BorderSpacing.Top = 6
Caption = 'NestedProcCountLabel'
ParentColor = False
@ -115,10 +110,9 @@ inherited CodeObserverOptionsFrame: TCodeObserverOptionsFrame
AnchorSideLeft.Control = CodeObsLeftPanel
AnchorSideTop.Control = LongProcLineCountSpinEdit
AnchorSideTop.Side = asrBottom
Left = 0
Height = 18
Top = 56
Width = 167
Height = 14
Top = 52
Width = 124
BorderSpacing.Top = 6
Caption = 'LongParamListCountLabel'
ParentColor = False
@ -126,10 +120,9 @@ inherited CodeObserverOptionsFrame: TCodeObserverOptionsFrame
object LongProcLineCountLabel: TLabel
AnchorSideLeft.Control = CodeObsLeftPanel
AnchorSideTop.Control = CodeObsLeftPanel
Left = 0
Height = 18
Height = 14
Top = 6
Width = 158
Width = 118
BorderSpacing.Top = 6
Caption = 'LongProcLineCountLabel'
ParentColor = False
@ -138,10 +131,9 @@ inherited CodeObserverOptionsFrame: TCodeObserverOptionsFrame
AnchorSideLeft.Control = CodeObsLeftPanel
AnchorSideTop.Control = NestedProcCountSpinEdit
AnchorSideTop.Side = asrBottom
Left = 0
Height = 22
Top = 156
Width = 212
Height = 17
Top = 144
Width = 162
BorderSpacing.Top = 6
Caption = 'CodeObsCharConstCheckBox'
TabOrder = 0
@ -152,7 +144,7 @@ inherited CodeObserverOptionsFrame: TCodeObserverOptionsFrame
AnchorSideTop.Side = asrBottom
Left = 6
Height = 23
Top = 127
Top = 115
Width = 60
BorderSpacing.Left = 6
BorderSpacing.Top = 3
@ -164,7 +156,7 @@ inherited CodeObserverOptionsFrame: TCodeObserverOptionsFrame
AnchorSideTop.Side = asrBottom
Left = 6
Height = 23
Top = 77
Top = 69
Width = 60
BorderSpacing.Left = 6
BorderSpacing.Top = 3
@ -176,7 +168,7 @@ inherited CodeObserverOptionsFrame: TCodeObserverOptionsFrame
AnchorSideTop.Side = asrBottom
Left = 6
Height = 23
Top = 27
Top = 23
Width = 60
BorderSpacing.Left = 6
BorderSpacing.Top = 3
@ -191,10 +183,10 @@ inherited CodeObserverOptionsFrame: TCodeObserverOptionsFrame
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 267
Height = 195
Top = 197
Width = 260
Left = 269
Height = 203
Top = 193
Width = 262
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Top = 3
Lines.Strings = (

View File

@ -2,80 +2,79 @@
LazarusResources.Add('TCodeObserverOptionsFrame','FORMDATA',[
'TPF0'#241#25'TCodeObserverOptionsFrame'#24'CodeObserverOptionsFrame'#6'Heigh'
+'t'#3#140#1#5'Width'#3#19#2#12'ClientHeight'#3#136#1#11'ClientWidth'#3#15#2#8
+'TabOrder'#2#0#10'DesignLeft'#3#244#2#9'DesignTop'#3'e'#1#0#242#2#0#6'TLabel'
+#27'CodeObsIgnoreConstantsLabel'#22'AnchorSideLeft.Control'#7#5'Owner'#21'An'
+'chorSideTop.Control'#7#27'CodeObsCategoriesCheckGroup'#18'AnchorSideTop.Sid'
+'e'#7#9'asrBottom'#24'AnchorSideBottom.Control'#7#24'CodeObsCharConstCheckBo'
+'x'#4'Left'#2#0#6'Height'#2#18#3'Top'#3#176#0#5'Width'#3#198#0#17'BorderSpac'
+'ing.Top'#2#6#7'Caption'#6#27'CodeObsIgnoreConstantsLabel'#11'ParentColor'#8
+#0#0#242#2#1#6'TLabel'#25'COIgnoreConstInFuncsLabel'#22'AnchorSideLeft.Contr'
+'ol'#7#16'CodeObsLeftPanel'#21'AnchorSideTop.Control'#7#27'CodeObsCategories'
+'CheckGroup'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#3#11#1#6'Height'#2
+#18#3'Top'#3#176#0#5'Width'#3#178#0#17'BorderSpacing.Top'#2#6#7'Caption'#6#25
+'COIgnoreConstInFuncsLabel'#11'ParentColor'#8#0#0#242#2#2#6'TLabel'#6'Label1'
+#22'AnchorSideLeft.Control'#7#5'Owner'#19'AnchorSideLeft.Side'#7#9'asrCenter'
+#4'Left'#3#6#1#6'Height'#2#15#3'Top'#2'('#5'Width'#2#2#11'ParentColor'#8#0#0
+#242#2#3#11'TCheckGroup'#27'CodeObsCategoriesCheckGroup'#22'AnchorSideLeft.C'
+'ontrol'#7#5'Owner'#21'AnchorSideTop.Control'#7#5'Owner'#23'AnchorSideRight.'
+'Control'#7#6'Label1'#24'AnchorSideBottom.Control'#7#5'Owner'#21'AnchorSideB'
+'ottom.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#3#170#0#3'Top'#2#0#5'Width'
+#3#3#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'AutoFill'#9#8'AutoSiz'
+'e'#9#19'BorderSpacing.Right'#2#3#7'Caption'#6#27'CodeObsCategoriesCheckGrou'
+'p'#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6
+#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChildResize'#27'ChildSi'
+'zing.EnlargeVertical'#7#24'crsHomogenousChildResize'#28'ChildSizing.ShrinkH'
+'orizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsScal'
+'eChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'Chil'
+'dSizing.ControlsPerLine'#2#1#21'Constraints.MinHeight'#3#170#0#8'TabOrder'#2
+#0#0#0#242#2#4#5'TMemo'#26'CodeObsIgnoreConstantsMemo'#22'AnchorSideLeft.Con'
+'trol'#7#27'CodeObsIgnoreConstantsLabel'#21'AnchorSideTop.Control'#7#27'Code'
+'ObsIgnoreConstantsLabel'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSid'
+'eRight.Control'#7#27'CodeObsCategoriesCheckGroup'#20'AnchorSideRight.Side'#7
+#9'asrBottom'#24'AnchorSideBottom.Control'#7#5'Owner'#21'AnchorSideBottom.Si'
+'de'#7#9'asrBottom'#4'Left'#2#0#6'Height'#3#195#0#3'Top'#3#197#0#5'Width'#3#3
+#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#17'BorderSpacin'
+'g.Top'#2#3#13'Lines.Strings'#1#6#26'CodeObsIgnoreConstantsMemo'#0#8'TabOrde'
+'r'#2#1#0#0#242#2#5#6'TPanel'#16'CodeObsLeftPanel'#22'AnchorSideLeft.Control'
+#7#6'Label1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'
+#7#5'Owner'#4'Left'#3#11#1#6'Height'#3#178#0#3'Top'#2#0#5'Width'#3#212#0#8'A'
+'utoSize'#9#18'BorderSpacing.Left'#2#3#10'BevelOuter'#7#6'bvNone'#12'ClientH'
+'eight'#3#178#0#11'ClientWidth'#3#212#0#8'TabOrder'#2#2#0#6'TLabel'#20'Neste'
+'dProcCountLabel'#22'AnchorSideLeft.Control'#7#16'CodeObsLeftPanel'#21'Ancho'
+'rSideTop.Control'#7#26'LongParamListCountSpinEdit'#18'AnchorSideTop.Side'#7
+#9'asrBottom'#4'Left'#2#0#6'Height'#2#18#3'Top'#2'j'#5'Width'#3#147#0#17'Bor'
+'derSpacing.Top'#2#6#7'Caption'#6#20'NestedProcCountLabel'#11'ParentColor'#8
+#0#0#6'TLabel'#23'LongParamListCountLabel'#22'AnchorSideLeft.Control'#7#16'C'
+'odeObsLeftPanel'#21'AnchorSideTop.Control'#7#25'LongProcLineCountSpinEdit'
+#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#18#3'Top'#2'8'
+#5'Width'#3#167#0#17'BorderSpacing.Top'#2#6#7'Caption'#6#23'LongParamListCou'
+'ntLabel'#11'ParentColor'#8#0#0#6'TLabel'#22'LongProcLineCountLabel'#22'Anch'
+'orSideLeft.Control'#7#16'CodeObsLeftPanel'#21'AnchorSideTop.Control'#7#16'C'
+'odeObsLeftPanel'#4'Left'#2#0#6'Height'#2#18#3'Top'#2#6#5'Width'#3#158#0#17
+'BorderSpacing.Top'#2#6#7'Caption'#6#22'LongProcLineCountLabel'#11'ParentCol'
+'or'#8#0#0#9'TCheckBox'#24'CodeObsCharConstCheckBox'#22'AnchorSideLeft.Contr'
+'ol'#7#16'CodeObsLeftPanel'#21'AnchorSideTop.Control'#7#23'NestedProcCountSp'
+'inEdit'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#22#3
+'Top'#3#156#0#5'Width'#3#212#0#17'BorderSpacing.Top'#2#6#7'Caption'#6#24'Cod'
+'eObsCharConstCheckBox'#8'TabOrder'#2#0#0#0#9'TSpinEdit'#23'NestedProcCountS'
+'pinEdit'#22'AnchorSideLeft.Control'#7#24'CodeObsCharConstCheckBox'#21'Ancho'
+'rSideTop.Control'#7#20'NestedProcCountLabel'#18'AnchorSideTop.Side'#7#9'asr'
+'Bottom'#4'Left'#2#6#6'Height'#2#23#3'Top'#2''#5'Width'#2'<'#18'BorderSpaci'
+'ng.Left'#2#6#17'BorderSpacing.Top'#2#3#8'TabOrder'#2#1#0#0#9'TSpinEdit'#26
+'LongParamListCountSpinEdit'#22'AnchorSideLeft.Control'#7#16'CodeObsLeftPane'
+'l'#21'AnchorSideTop.Control'#7#23'LongParamListCountLabel'#18'AnchorSideTop'
+'.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#23#3'Top'#2'M'#5'Width'#2'<'
,#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#3#8'TabOrder'#2#2#0#0#9
+'TSpinEdit'#25'LongProcLineCountSpinEdit'#22'AnchorSideLeft.Control'#7#16'Co'
+'deObsLeftPanel'#21'AnchorSideTop.Control'#7#22'LongProcLineCountLabel'#18'A'
+'nchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#23#3'Top'#2#27#5
+'t'#3#140#1#5'Width'#3#19#2#12'ClientHeight'#3#140#1#11'ClientWidth'#3#19#2#8
+'TabOrder'#2#0#10'DesignLeft'#3#220#0#9'DesignTop'#3#220#0#0#242#2#0#6'TLabe'
+'l'#27'CodeObsIgnoreConstantsLabel'#22'AnchorSideLeft.Control'#7#5'Owner'#21
+'AnchorSideTop.Control'#7#27'CodeObsCategoriesCheckGroup'#18'AnchorSideTop.S'
+'ide'#7#9'asrBottom'#24'AnchorSideBottom.Control'#7#24'CodeObsCharConstCheck'
+'Box'#6'Height'#2#14#3'Top'#3#176#0#5'Width'#3#151#0#17'BorderSpacing.Top'#2
+#6#7'Caption'#6#27'CodeObsIgnoreConstantsLabel'#11'ParentColor'#8#0#0#242#2#1
+#6'TLabel'#25'COIgnoreConstInFuncsLabel'#22'AnchorSideLeft.Control'#7#16'Cod'
+'eObsLeftPanel'#21'AnchorSideTop.Control'#7#27'CodeObsCategoriesCheckGroup'
+#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#3#13#1#6'Height'#2#14#3'Top'#3
+#176#0#5'Width'#3#139#0#17'BorderSpacing.Top'#2#6#7'Caption'#6#25'COIgnoreCo'
+'nstInFuncsLabel'#11'ParentColor'#8#0#0#242#2#2#6'TLabel'#6'Label1'#22'Ancho'
+'rSideLeft.Control'#7#5'Owner'#19'AnchorSideLeft.Side'#7#9'asrCenter'#4'Left'
+#3#9#1#6'Height'#2#14#3'Top'#2'('#5'Width'#2#1#11'ParentColor'#8#0#0#242#2#3
+#11'TCheckGroup'#27'CodeObsCategoriesCheckGroup'#22'AnchorSideLeft.Control'#7
+#5'Owner'#21'AnchorSideTop.Control'#7#5'Owner'#23'AnchorSideRight.Control'#7
+#6'Label1'#24'AnchorSideBottom.Control'#7#5'Owner'#21'AnchorSideBottom.Side'
+#7#9'asrBottom'#6'Height'#3#170#0#5'Width'#3#6#1#7'Anchors'#11#5'akTop'#6'ak'
+'Left'#7'akRight'#0#8'AutoFill'#9#8'AutoSize'#9#19'BorderSpacing.Right'#2#3#7
+'Caption'#6#27'CodeObsCategoriesCheckGroup'#28'ChildSizing.LeftRightSpacing'
+#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7
+#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomoge'
+'nousChildResize'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'C'
+'hildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29
+'cclLeftToRightThenTopToBottom'#27'ChildSizing.ControlsPerLine'#2#1#21'Const'
+'raints.MinHeight'#3#170#0#11'OnItemClick'#7'$CodeObsCategoriesCheckGroupIte'
+'mClick'#8'TabOrder'#2#0#0#0#242#2#4#5'TMemo'#26'CodeObsIgnoreConstantsMemo'
+#22'AnchorSideLeft.Control'#7#27'CodeObsIgnoreConstantsLabel'#21'AnchorSideT'
+'op.Control'#7#27'CodeObsIgnoreConstantsLabel'#18'AnchorSideTop.Side'#7#9'as'
+'rBottom'#23'AnchorSideRight.Control'#7#27'CodeObsCategoriesCheckGroup'#20'A'
+'nchorSideRight.Side'#7#9'asrBottom'#24'AnchorSideBottom.Control'#7#5'Owner'
+#21'AnchorSideBottom.Side'#7#9'asrBottom'#6'Height'#3#203#0#3'Top'#3#193#0#5
+'Width'#3#6#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#17'B'
+'orderSpacing.Top'#2#3#13'Lines.Strings'#1#6#26'CodeObsIgnoreConstantsMemo'#0
+#8'TabOrder'#2#1#0#0#242#2#5#6'TPanel'#16'CodeObsLeftPanel'#22'AnchorSideLef'
+'t.Control'#7#6'Label1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSide'
+'Top.Control'#7#5'Owner'#4'Left'#3#13#1#6'Height'#3#161#0#5'Width'#3#162#0#8
+'AutoSize'#9#18'BorderSpacing.Left'#2#3#10'BevelOuter'#7#6'bvNone'#12'Client'
+'Height'#3#161#0#11'ClientWidth'#3#162#0#8'TabOrder'#2#2#0#6'TLabel'#20'Nest'
+'edProcCountLabel'#22'AnchorSideLeft.Control'#7#16'CodeObsLeftPanel'#21'Anch'
+'orSideTop.Control'#7#26'LongParamListCountSpinEdit'#18'AnchorSideTop.Side'#7
+#9'asrBottom'#6'Height'#2#14#3'Top'#2'b'#5'Width'#2'n'#17'BorderSpacing.Top'
+#2#6#7'Caption'#6#20'NestedProcCountLabel'#11'ParentColor'#8#0#0#6'TLabel'#23
+'LongParamListCountLabel'#22'AnchorSideLeft.Control'#7#16'CodeObsLeftPanel'
+#21'AnchorSideTop.Control'#7#25'LongProcLineCountSpinEdit'#18'AnchorSideTop.'
+'Side'#7#9'asrBottom'#6'Height'#2#14#3'Top'#2'4'#5'Width'#2'|'#17'BorderSpac'
+'ing.Top'#2#6#7'Caption'#6#23'LongParamListCountLabel'#11'ParentColor'#8#0#0
+#6'TLabel'#22'LongProcLineCountLabel'#22'AnchorSideLeft.Control'#7#16'CodeOb'
+'sLeftPanel'#21'AnchorSideTop.Control'#7#16'CodeObsLeftPanel'#6'Height'#2#14
+#3'Top'#2#6#5'Width'#2'v'#17'BorderSpacing.Top'#2#6#7'Caption'#6#22'LongProc'
+'LineCountLabel'#11'ParentColor'#8#0#0#9'TCheckBox'#24'CodeObsCharConstCheck'
+'Box'#22'AnchorSideLeft.Control'#7#16'CodeObsLeftPanel'#21'AnchorSideTop.Con'
+'trol'#7#23'NestedProcCountSpinEdit'#18'AnchorSideTop.Side'#7#9'asrBottom'#6
+'Height'#2#17#3'Top'#3#144#0#5'Width'#3#162#0#17'BorderSpacing.Top'#2#6#7'Ca'
+'ption'#6#24'CodeObsCharConstCheckBox'#8'TabOrder'#2#0#0#0#9'TSpinEdit'#23'N'
+'estedProcCountSpinEdit'#22'AnchorSideLeft.Control'#7#24'CodeObsCharConstChe'
+'ckBox'#21'AnchorSideTop.Control'#7#20'NestedProcCountLabel'#18'AnchorSideTo'
+'p.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#23#3'Top'#2's'#5'Width'#2'<'
+#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#3#8'TabOrder'#2#1#0#0#9
+'TSpinEdit'#26'LongParamListCountSpinEdit'#22'AnchorSideLeft.Control'#7#16'C'
+'odeObsLeftPanel'#21'AnchorSideTop.Control'#7#23'LongParamListCountLabel'#18
+'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#23#3'Top'#2'E'#5
+'Width'#2'<'#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#3#8'TabOrder'
+#2#3#0#0#0#242#2#6#5'TMemo'#24'COIgnoreConstInFuncsMemo'#22'AnchorSideLeft.C'
+'ontrol'#7#16'CodeObsLeftPanel'#21'AnchorSideTop.Control'#7#25'COIgnoreConst'
+'InFuncsLabel'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Cont'
+'rol'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#24'AnchorSideBottom'
+'.Control'#7#5'Owner'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#3#11#1
+#6'Height'#3#195#0#3'Top'#3#197#0#5'Width'#3#4#1#7'Anchors'#11#5'akTop'#6'ak'
+'Left'#7'akRight'#8'akBottom'#0#17'BorderSpacing.Top'#2#3#13'Lines.Strings'#1
+#6#24'COIgnoreConstInFuncsMemo'#0#8'TabOrder'#2#3#0#0#0
,#2#2#0#0#9'TSpinEdit'#25'LongProcLineCountSpinEdit'#22'AnchorSideLeft.Contro'
+'l'#7#16'CodeObsLeftPanel'#21'AnchorSideTop.Control'#7#22'LongProcLineCountL'
+'abel'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#23#3'To'
+'p'#2#23#5'Width'#2'<'#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#3#8
+'TabOrder'#2#3#0#0#0#242#2#6#5'TMemo'#24'COIgnoreConstInFuncsMemo'#22'Anchor'
+'SideLeft.Control'#7#16'CodeObsLeftPanel'#21'AnchorSideTop.Control'#7#25'COI'
+'gnoreConstInFuncsLabel'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSide'
+'Right.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#24'Anchor'
+'SideBottom.Control'#7#5'Owner'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'L'
+'eft'#3#13#1#6'Height'#3#203#0#3'Top'#3#193#0#5'Width'#3#6#1#7'Anchors'#11#5
+'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#17'BorderSpacing.Top'#2#3#13'Line'
+'s.Strings'#1#6#24'COIgnoreConstInFuncsMemo'#0#8'TabOrder'#2#3#0#0#0
]);

View File

@ -25,7 +25,7 @@ unit codeobserver_options;
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms,
Classes, Graphics, SysUtils, FileUtil, LResources, Forms,
IDEOptionsIntf, LazarusIDEStrConsts, CodeExplOpts, ExtCtrls, Spin, StdCtrls;
type
@ -47,6 +47,11 @@ type
LongParamListCountSpinEdit: TSpinEdit;
NestedProcCountSpinEdit: TSpinEdit;
CodeObsLeftPanel: TPanel;
procedure CodeObsCategoriesCheckGroupItemClick(Sender: TObject;
Index: integer);
private
FCategoryCheckBoxes: array [TCEObserverCategory] of TCheckBox;
FGroupCheckBoxes: array [TCEObserverCategoryGroup] of TCheckBox;
public
function GetTitle: String; override;
procedure Setup(ADialog: TAbstractOptionsEditorDialog); override;
@ -57,8 +62,61 @@ type
implementation
const
GroupCategories: array [TCEObserverCategoryGroup] of TCEObserverCategories = (
[cefcLongProcs, cefcLongParamLists, cefcNestedProcs],
[cefcEmptyProcs, cefcEmptyBlocks, cefcEmptyClassSections],
[cefcUnnamedConsts, cefcUnsortedClassVisibility, cefcUnsortedClassMembers],
[cefcPublishedPropWithoutDefault, cefcToDos]);
function GroupName(AGroup: TCEObserverCategoryGroup): String;
begin
case AGroup of
ocgComplexity: Result := lisCEComplexityGroup;
ocgEmpty: Result := lisCEEmptyGroup;
ocgStyle: Result := lisCEStyleGroup;
ocgOther: Result := lisCEOtherGroup;
else Result := '?';
end;
end;
{ TCodeObserverOptionsFrame }
procedure TCodeObserverOptionsFrame.CodeObsCategoriesCheckGroupItemClick(
Sender: TObject; Index: integer);
var
c: TCEObserverCategory;
g: TCEObserverCategoryGroup;
hasState: array [Boolean] of Boolean;
begin
CodeObsCategoriesCheckGroup.OnItemClick := nil;
try
for g := Low(g) to High(g) do begin
hasState[true] := false;
hasState[false] := false;
for c := Low(c) to High(c) do
if c in GroupCategories[g] then
hasState[FCategoryCheckBoxes[c].Checked] := true;
if (Sender <> nil)
and (FGroupCheckBoxes[g] = CodeObsCategoriesCheckGroup.Components[Index])
then begin
// Check/uncheck all categories in group
for c := Low(c) to High(c) do
if c in GroupCategories[g] then
FCategoryCheckBoxes[c].Checked := hasState[false];
FGroupCheckBoxes[g].Checked := hasState[false]
end
else if hasState[true] and hasState[false] then
FGroupCheckBoxes[g].State := cbGrayed
else
FGroupCheckBoxes[g].Checked := not hasState[false];
end;
finally
CodeObsCategoriesCheckGroup.OnItemClick :=
@CodeObsCategoriesCheckGroupItemClick;
end;
end;
function TCodeObserverOptionsFrame.GetTitle: String;
begin
Result := lisCodeObserver;
@ -68,10 +126,28 @@ procedure TCodeObserverOptionsFrame.Setup(
ADialog: TAbstractOptionsEditorDialog);
var
c: TCEObserverCategory;
g: TCEObserverCategoryGroup;
function AddCheckBox(ACaption: String): TCheckBox;
begin
with CodeObsCategoriesCheckGroup do
Result := TCheckBox(Components[Items.Add(ACaption)]);
end;
begin
CodeObsCategoriesCheckGroup.Caption := lisCEShowCodeObserver;
for c := Low(TCEObserverCategory) to High(TCEObserverCategory) do
CodeObsCategoriesCheckGroup.Items.Add(CodeExplorerLocalizedString(c));
for g := Low(g) to High(g) do begin
FGroupCheckBoxes[g] := AddCheckBox(GroupName(g) + ':');
with FGroupCheckBoxes[g] do begin
AllowGrayed := true;
State := cbGrayed;
Font.Style := [fsItalic];
end;
for c := Low(c) to High(c) do
if c in GroupCategories[g] then
FCategoryCheckBoxes[c] :=
AddCheckBox(' ' + CodeExplorerLocalizedString(c));
end;
LongProcLineCountLabel.Caption := lisCELongProcLineCount;
LongParamListCountLabel.Caption := lisCELongParamListCount;
@ -89,8 +165,9 @@ var
begin
with TCodeExplorerOptions(AOptions) do
begin
for c := Low(TCEObserverCategory) to High(TCEObserverCategory) do
CodeObsCategoriesCheckGroup.Checked[ord(c)] := c in ObserverCategories;
for c := Low(c) to High(c) do
FCategoryCheckBoxes[c].Checked := c in ObserverCategories;
CodeObsCategoriesCheckGroupItemClick(nil, -1);
LongProcLineCountSpinEdit.Value := LongProcLineCount;
LongParamListCountSpinEdit.Value := LongParamListCount;
@ -112,8 +189,8 @@ var
c: TCEObserverCategory;
begin
NewCategories := [];
for c := Low(TCEObserverCategory) to high(TCEObserverCategory) do
if CodeObsCategoriesCheckGroup.Checked[ord(c)] then
for c := Low(c) to high(c) do
if FCategoryCheckBoxes[c].Checked then
Include(NewCategories, c);
with TCodeExplorerOptions(AOptions) do
begin

View File

@ -4148,7 +4148,7 @@ resourcestring
lisUnusedUnits = 'Unused units';
lisRemoveSelectedUnits = 'Remove selected units';
lisRemoveAllUnits = 'Remove all units';
lisCEShowCodeObserver = 'Show Code Observer';
lisCEShowCodeObserver = 'Show observerations about';
lisCELongProcedures = 'Long procedures';
lisCEManyParameters = 'Many parameters';
lisCEUnnamedConstants = 'Unnamed constants';
@ -4166,6 +4166,10 @@ resourcestring
lisCodeObsIgnoreeConstants = 'Ignore next unnamed constants';
lisCodeObIgnoreConstInFuncs = 'Ignore constants in next functions';
lisCEEmptyBlocks = 'Empty blocks';
lisCEComplexityGroup = 'Complexity';
lisCEEmptyGroup = 'Empty constructs';
lisCEStyleGroup = 'Style';
lisCEOtherGroup = 'Other';
implementation