IDE: codetools values: report

git-svn-id: trunk@28900 -
This commit is contained in:
mattias 2011-01-08 01:15:25 +00:00
parent ea6c4b0e0b
commit 27512bc4dd
2 changed files with 970 additions and 507 deletions

File diff suppressed because it is too large Load Diff

View File

@ -55,7 +55,11 @@ type
DirectoryBrowseButton: TButton; DirectoryBrowseButton: TButton;
DirectoryCombobox: TComboBox; DirectoryCombobox: TComboBox;
DirectoryGroupbox: TGroupBox; DirectoryGroupbox: TGroupBox;
PageControl1: TPageControl;
ReportMemo: TMemo;
Splitter1: TSplitter; Splitter1: TSplitter;
ValuesTabSheet: TTabSheet;
ReportTabSheet: TTabSheet;
TemplatesMemo: TMemo; TemplatesMemo: TMemo;
TemplatesSplitter: TSplitter; TemplatesSplitter: TSplitter;
TemplatesGroupBox: TGroupBox; TemplatesGroupBox: TGroupBox;
@ -77,6 +81,7 @@ type
private private
FDefineTree: TDefineTree; FDefineTree: TDefineTree;
FNodeValues: TAvgLvlTree; FNodeValues: TAvgLvlTree;
fReport: TStringList;
procedure SetDefineTree(const AValue: TDefineTree); procedure SetDefineTree(const AValue: TDefineTree);
procedure UpdateValues; procedure UpdateValues;
procedure UpdateValue; procedure UpdateValue;
@ -225,6 +230,37 @@ end;
procedure TCodeToolsDefinesDialog.UpdateValues; procedure TCodeToolsDefinesDialog.UpdateValues;
// let the codetools calculate the defines for the directory // let the codetools calculate the defines for the directory
procedure AddNodeReport(Prefix: string; DefTempl: TDefineTemplate);
var
AVLNode: TAvgLvlTreeNode;
NodeValues: TCodeToolsDefinesNodeValues;
s: String;
begin
while DefTempl<>nil do begin
s:=Prefix+'Name="'+DefTempl.Name+'"';
s:=s+' Description="'+DefTempl.Description+'"';
s:=s+' Action="'+DefineActionNames[DefTempl.Action]+'"';
s:=s+' Variable="'+DefTempl.Variable+'"';
s:=s+' Value="'+dbgstr(DefTempl.Value)+'"';
if FNodeValues<>nil then begin
AVLNode:=FNodeValues.FindKey(DefTempl,@CompareNodeAndNodeValues);
if AVLNode<>nil then begin
NodeValues:=TCodeToolsDefinesNodeValues(AVLNode.Data);
if NodeValues.ValueParsed then
s:=s+' ParsedValue="'+dbgstr(NodeValues.ParsedValue)+'"';
if NodeValues.ExpressionCalculated then
s:=s+' ExpressionResult="'+dbgstr(NodeValues.ExpressionResult)+'"';
s:=s+' Executed="'+dbgs(NodeValues.Execute)+'"';
end;
end;
fReport.Add(s);
if DefTempl.FirstChild<>nil then
AddNodeReport(Prefix+' ',DefTempl.FirstChild);
DefTempl:=DefTempl.Next;
end;
end;
var var
Dir: String; Dir: String;
Defines: TExpressionEvaluator; Defines: TExpressionEvaluator;
@ -245,6 +281,10 @@ begin
FNodeValues.FreeAndClear; FNodeValues.FreeAndClear;
DefineTree.ClearCache;// make sure the defines are reparsed DefineTree.ClearCache;// make sure the defines are reparsed
fReport:=TStringList.Create;
try
fReport.Add('Directory: '+Dir);
OldOnCalculate:=DefineTree.OnCalculate; OldOnCalculate:=DefineTree.OnCalculate;
DefineTree.OnCalculate:=@DefineTreeCalculate; DefineTree.OnCalculate:=@DefineTreeCalculate;
try try
@ -256,11 +296,13 @@ begin
// fill the ValuesListview // fill the ValuesListview
ValuesListview.BeginUpdate; ValuesListview.BeginUpdate;
if Defines<>nil then begin if Defines<>nil then begin
fReport.Add('Defines:');
for i:=0 to Defines.Count-1 do begin for i:=0 to Defines.Count-1 do begin
if ValuesListview.Items.Count<=i then if ValuesListview.Items.Count<=i then
ListItem:=ValuesListview.Items.Add ListItem:=ValuesListview.Items.Add
else else
ListItem:=ValuesListview.Items[i]; ListItem:=ValuesListview.Items[i];
fReport.Add(Defines.Names(i)+'='+dbgstr(Defines.Values(i)));
ListItem.Caption:=Defines.Names(i); ListItem.Caption:=Defines.Names(i);
Value:=Defines.Values(i); Value:=Defines.Values(i);
if length(Value)>100 then if length(Value)>100 then
@ -270,6 +312,7 @@ begin
else else
ListItem.SubItems[0]:=Value; ListItem.SubItems[0]:=Value;
end; end;
fReport.Add('');
while ValuesListview.Items.Count>Defines.Count do while ValuesListview.Items.Count>Defines.Count do
ValuesListview.Items.Delete(ValuesListview.Items.Count-1); ValuesListview.Items.Delete(ValuesListview.Items.Count-1);
end else begin end else begin
@ -277,6 +320,15 @@ begin
end; end;
ValuesListview.EndUpdate; ValuesListview.EndUpdate;
UpdateValue; UpdateValue;
// add all nodes to report
fReport.Add('Tree:');
AddNodeReport(' ',DefineTree.RootTemplate);
ReportMemo.Lines.Assign(fReport);
finally
FreeAndNil(fReport);
end;
end; end;
procedure TCodeToolsDefinesDialog.UpdateValue; procedure TCodeToolsDefinesDialog.UpdateValue;
@ -388,6 +440,8 @@ begin
Caption:=lisCTDefCodeToolsDirectoryValues; Caption:=lisCTDefCodeToolsDirectoryValues;
ValuesTabSheet.Caption:=lisValues;
ListColumn:=ValuesListview.Columns.Add; ListColumn:=ValuesListview.Columns.Add;
ListColumn.Caption:=lisCTDefVariableName; ListColumn.Caption:=lisCTDefVariableName;
ListColumn.Width:=150; ListColumn.Width:=150;
@ -413,6 +467,9 @@ begin
EditorOpts.GetSynEditSettings(ValueSynedit); EditorOpts.GetSynEditSettings(ValueSynedit);
ValueSynedit.Gutter.Visible:=false; ValueSynedit.Gutter.Visible:=false;
ReportTabSheet.Caption:=dlgReport;
PageControl1.PageIndex:=0;
end; end;
procedure TCodeToolsDefinesDialog.CodeToolsDefinesDialogCLOSE(Sender: TObject; procedure TCodeToolsDefinesDialog.CodeToolsDefinesDialogCLOSE(Sender: TObject;