mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-13 11:39:13 +02:00
IDE: code observer: max 50 items per category
git-svn-id: trunk@19564 -
This commit is contained in:
parent
9e597f8954
commit
63f92835aa
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user