IDE: code observer: max 50 items per category

git-svn-id: trunk@19564 -
This commit is contained in:
mattias 2009-04-22 05:02:41 +00:00
parent 9e597f8954
commit 63f92835aa

View File

@ -120,6 +120,7 @@ type
fCategoryNodes: array[TCodeExplorerCategory] of TTreeNode; fCategoryNodes: array[TCodeExplorerCategory] of TTreeNode;
fObserverNode: TTreeNode; fObserverNode: TTreeNode;
fObserverCatNodes: array[TCEObserverCategory] of TTreeNode; fObserverCatNodes: array[TCEObserverCategory] of TTreeNode;
fObserverCatOverflow: array[TCEObserverCategory] of boolean;
FDirectivesFilename: string; FDirectivesFilename: string;
FFlags: TCodeExplorerViewFlags; FFlags: TCodeExplorerViewFlags;
FLastCodeFilter: string; FLastCodeFilter: string;
@ -224,6 +225,7 @@ type
const const
CodeExplorerMenuRootName = 'Code Explorer'; CodeExplorerMenuRootName = 'Code Explorer';
CodeObserverMaxNodes = 50;
var var
CodeExplorerView: TCodeExplorerView; CodeExplorerView: TCodeExplorerView;
@ -766,8 +768,13 @@ procedure TCodeExplorerView.CreateObservations(Tool: TCodeTool);
NodeText: String; NodeText: String;
NodeImageIndCex: LongInt; NodeImageIndCex: LongInt;
begin begin
Data:=TViewNodeData.Create(CodeNode);
ObsTVNode:=CreateObserverNode(Tool,f); ObsTVNode:=CreateObserverNode(Tool,f);
if ObsTVNode.Count>=CodeObserverMaxNodes then
begin
fObserverCatOverflow[f]:=true;
exit(nil);
end;
Data:=TViewNodeData.Create(CodeNode);
NodeText:=GetCodeNodeDescription(Tool,CodeNode); NodeText:=GetCodeNodeDescription(Tool,CodeNode);
NodeImageIndCex:=GetCodeNodeImage(Tool,CodeNode); NodeImageIndCex:=GetCodeNodeImage(Tool,CodeNode);
Result:=CodeTreeview.Items.AddChild(ObsTVNode,NodeText); Result:=CodeTreeview.Items.AddChild(ObsTVNode,NodeText);
@ -984,8 +991,12 @@ begin
for f:=low(TCEObserverCategory) to high(TCEObserverCategory) do for f:=low(TCEObserverCategory) to high(TCEObserverCategory) do
begin begin
if fObserverCatNodes[f]=nil then continue; if fObserverCatNodes[f]=nil then continue;
fObserverCatNodes[f].Text:= if fObserverCatOverflow[f] then
fObserverCatNodes[f].Text+' ('+IntToStr(fObserverCatNodes[f].Count)+')'; fObserverCatNodes[f].Text:=
fObserverCatNodes[f].Text+' ('+IntToStr(fObserverCatNodes[f].Count)+'+)'
else
fObserverCatNodes[f].Text:=
fObserverCatNodes[f].Text+' ('+IntToStr(fObserverCatNodes[f].Count)+')';
end; end;
end; end;
@ -1055,29 +1066,35 @@ begin
// ignore user defined constants // ignore user defined constants
end else begin end else begin
// add constant // add constant
Data:=TViewNodeData.Create(CodeNode);
Data.Desc:=ctnConstant;
Data.SubDesc:=ctnsNone;
Data.StartPos:=Tool.CurPos.StartPos;
Data.EndPos:=Tool.CurPos.EndPos;
ObsTVNode:=CreateObserverNode(Tool,cefcUnnamedConsts); ObsTVNode:=CreateObserverNode(Tool,cefcUnnamedConsts);
NodeText:=Tool.GetAtom; if ObsTVNode.Count>=CodeObserverMaxNodes then
// add some context information begin
ProcNode:=CodeNode; fObserverCatOverflow[cefcUnnamedConsts]:=true;
while (ProcNode<>nil) and (ProcNode.Desc<>ctnProcedure) do break;
ProcNode:=ProcNode.Parent; end else begin
if ProcNode<>nil then begin Data:=TViewNodeData.Create(CodeNode);
OldPos:=Tool.CurPos.EndPos; Data.Desc:=ctnConstant;
NodeText:=Format(lisCEIn, [NodeText, Tool.ExtractProcName(ProcNode, [ Data.SubDesc:=ctnsNone;
phpWithoutClassName])]); Data.StartPos:=Tool.CurPos.StartPos;
Tool.MoveCursorToCleanPos(OldPos); Data.EndPos:=Tool.CurPos.EndPos;
NodeText:=Tool.GetAtom;
// add some context information
ProcNode:=CodeNode;
while (ProcNode<>nil) and (ProcNode.Desc<>ctnProcedure) do
ProcNode:=ProcNode.Parent;
if ProcNode<>nil then begin
OldPos:=Tool.CurPos.EndPos;
NodeText:=Format(lisCEIn, [NodeText, Tool.ExtractProcName(ProcNode, [
phpWithoutClassName])]);
Tool.MoveCursorToCleanPos(OldPos);
end;
NodeImageIndCex:=ImgIDConst;
TVNode:=CodeTreeview.Items.AddChild(ObsTVNode,NodeText);
TVNode.Data:=Data;
TVNode.Text:=NodeText;
TVNode.ImageIndex:=NodeImageIndCex;
TVNode.SelectedIndex:=NodeImageIndCex;
end; end;
NodeImageIndCex:=ImgIDConst;
TVNode:=CodeTreeview.Items.AddChild(ObsTVNode,NodeText);
TVNode.Data:=Data;
TVNode.Text:=NodeText;
TVNode.ImageIndex:=NodeImageIndCex;
TVNode.SelectedIndex:=NodeImageIndCex;
end; end;
end; end;
@ -1134,21 +1151,26 @@ begin
if GetToDoComment(Src,p,CommentEndPos,MagicStartPos,TextStartPos,TextEndPos) if GetToDoComment(Src,p,CommentEndPos,MagicStartPos,TextStartPos,TextEndPos)
then begin then begin
// add todo // add todo
Data:=TViewNodeData.Create(Tool.Tree.Root);
Data.Desc:=ctnConstant;
Data.SubDesc:=ctnsNone;
Data.StartPos:=p;
Data.EndPos:=MagicStartPos;
ObsTVNode:=CreateObserverNode(Tool,cefcToDos); ObsTVNode:=CreateObserverNode(Tool,cefcToDos);
l:=TextEndPos-TextStartPos; if fObserverNode.Count>=CodeObserverMaxNodes then begin
if l>20 then l:=20; fObserverCatOverflow[cefcToDos]:=true;
NodeText:=TrimCodeSpace(copy(Src,TextStartPos,l)); break;
NodeImageIndCex:=ImgIDConst; end else begin
TVNode:=CodeTreeview.Items.AddChild(ObsTVNode,NodeText); Data:=TViewNodeData.Create(Tool.Tree.Root);
TVNode.Data:=Data; Data.Desc:=ctnConstant;
TVNode.Text:=NodeText; Data.SubDesc:=ctnsNone;
TVNode.ImageIndex:=NodeImageIndCex; Data.StartPos:=p;
TVNode.SelectedIndex:=NodeImageIndCex; Data.EndPos:=MagicStartPos;
l:=TextEndPos-TextStartPos;
if l>20 then l:=20;
NodeText:=TrimCodeSpace(copy(Src,TextStartPos,l));
NodeImageIndCex:=ImgIDConst;
TVNode:=CodeTreeview.Items.AddChild(ObsTVNode,NodeText);
TVNode.Data:=Data;
TVNode.Text:=NodeText;
TVNode.ImageIndex:=NodeImageIndCex;
TVNode.SelectedIndex:=NodeImageIndCex;
end;
end; end;
p:=CommentEndPos; p:=CommentEndPos;
until p>SrcLen; until p>SrcLen;