mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-04 12:00:18 +02:00
IDE: codetools values: report
git-svn-id: trunk@28900 -
This commit is contained in:
parent
ea6c4b0e0b
commit
27512bc4dd
File diff suppressed because it is too large
Load Diff
@ -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,38 +281,54 @@ begin
|
|||||||
FNodeValues.FreeAndClear;
|
FNodeValues.FreeAndClear;
|
||||||
DefineTree.ClearCache;// make sure the defines are reparsed
|
DefineTree.ClearCache;// make sure the defines are reparsed
|
||||||
|
|
||||||
OldOnCalculate:=DefineTree.OnCalculate;
|
fReport:=TStringList.Create;
|
||||||
DefineTree.OnCalculate:=@DefineTreeCalculate;
|
|
||||||
try
|
try
|
||||||
Defines:=DefineTree.GetDefinesForDirectory(Dir,false);
|
fReport.Add('Directory: '+Dir);
|
||||||
finally
|
|
||||||
DefineTree.OnCalculate:=OldOnCalculate;
|
|
||||||
end;
|
|
||||||
|
|
||||||
// fill the ValuesListview
|
OldOnCalculate:=DefineTree.OnCalculate;
|
||||||
ValuesListview.BeginUpdate;
|
DefineTree.OnCalculate:=@DefineTreeCalculate;
|
||||||
if Defines<>nil then begin
|
try
|
||||||
for i:=0 to Defines.Count-1 do begin
|
Defines:=DefineTree.GetDefinesForDirectory(Dir,false);
|
||||||
if ValuesListview.Items.Count<=i then
|
finally
|
||||||
ListItem:=ValuesListview.Items.Add
|
DefineTree.OnCalculate:=OldOnCalculate;
|
||||||
else
|
|
||||||
ListItem:=ValuesListview.Items[i];
|
|
||||||
ListItem.Caption:=Defines.Names(i);
|
|
||||||
Value:=Defines.Values(i);
|
|
||||||
if length(Value)>100 then
|
|
||||||
Value:=copy(Value,1,100)+' ...';
|
|
||||||
if ListItem.SubItems.Count<1 then
|
|
||||||
ListItem.SubItems.Add(Value)
|
|
||||||
else
|
|
||||||
ListItem.SubItems[0]:=Value;
|
|
||||||
end;
|
end;
|
||||||
while ValuesListview.Items.Count>Defines.Count do
|
|
||||||
ValuesListview.Items.Delete(ValuesListview.Items.Count-1);
|
// fill the ValuesListview
|
||||||
end else begin
|
ValuesListview.BeginUpdate;
|
||||||
ValuesListview.Items.Clear;
|
if Defines<>nil then begin
|
||||||
|
fReport.Add('Defines:');
|
||||||
|
for i:=0 to Defines.Count-1 do begin
|
||||||
|
if ValuesListview.Items.Count<=i then
|
||||||
|
ListItem:=ValuesListview.Items.Add
|
||||||
|
else
|
||||||
|
ListItem:=ValuesListview.Items[i];
|
||||||
|
fReport.Add(Defines.Names(i)+'='+dbgstr(Defines.Values(i)));
|
||||||
|
ListItem.Caption:=Defines.Names(i);
|
||||||
|
Value:=Defines.Values(i);
|
||||||
|
if length(Value)>100 then
|
||||||
|
Value:=copy(Value,1,100)+' ...';
|
||||||
|
if ListItem.SubItems.Count<1 then
|
||||||
|
ListItem.SubItems.Add(Value)
|
||||||
|
else
|
||||||
|
ListItem.SubItems[0]:=Value;
|
||||||
|
end;
|
||||||
|
fReport.Add('');
|
||||||
|
while ValuesListview.Items.Count>Defines.Count do
|
||||||
|
ValuesListview.Items.Delete(ValuesListview.Items.Count-1);
|
||||||
|
end else begin
|
||||||
|
ValuesListview.Items.Clear;
|
||||||
|
end;
|
||||||
|
ValuesListview.EndUpdate;
|
||||||
|
UpdateValue;
|
||||||
|
|
||||||
|
// add all nodes to report
|
||||||
|
fReport.Add('Tree:');
|
||||||
|
AddNodeReport(' ',DefineTree.RootTemplate);
|
||||||
|
|
||||||
|
ReportMemo.Lines.Assign(fReport);
|
||||||
|
finally
|
||||||
|
FreeAndNil(fReport);
|
||||||
end;
|
end;
|
||||||
ValuesListview.EndUpdate;
|
|
||||||
UpdateValue;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCodeToolsDefinesDialog.UpdateValue;
|
procedure TCodeToolsDefinesDialog.UpdateValue;
|
||||||
@ -387,7 +439,9 @@ begin
|
|||||||
IDEDialogLayoutList.ApplyLayout(Self,485,450);
|
IDEDialogLayoutList.ApplyLayout(Self,485,450);
|
||||||
|
|
||||||
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;
|
||||||
|
Loading…
Reference in New Issue
Block a user