From 77c705410ab32daf05a4960a2e62d82f0c68a92e Mon Sep 17 00:00:00 2001 From: mattias Date: Sun, 4 Apr 2010 14:25:43 +0000 Subject: [PATCH] IDE: codebrowser: clean up git-svn-id: trunk@24393 - --- ide/codebrowser.pas | 116 +++++++++++++++++++------------------------- 1 file changed, 49 insertions(+), 67 deletions(-) diff --git a/ide/codebrowser.pas b/ide/codebrowser.pas index b39682d823..eeea433597 100644 --- a/ide/codebrowser.pas +++ b/ide/codebrowser.pas @@ -1867,9 +1867,12 @@ var end; function Shorten(const s: string): string; + const + MAX_LEN=100; begin Result:=DbgStr(s); - if length(Result)>100 then Result:=copy(Result,1,100)+' ...'; + if Length(Result)>MAX_LEN then + Result:=LeftStr(Result, MAX_LEN)+'...'; end; procedure GetNodeDescription(CTNode: TCodeTreeNode; @@ -2106,8 +2109,7 @@ var List.DeleteUnit(NewUnit); NewUnit:=nil; if OldDestParentList=nil then begin - DestParentList.Free; - DestParentList:=nil; + FreeAndNil(DestParentList); end; end; if (NewUnit<>nil) and (NewUnit.UnitList=nil) and (List<>nil) then @@ -2169,8 +2171,7 @@ var NewList:=nil; if (OldDestParentList=nil) and (DestParentList<>nil) and DestParentList.IsEmpty then begin - DestParentList.Free; - DestParentList:=nil; + FreeAndNil(DestParentList); end; end; // update DestParentList @@ -2180,13 +2181,37 @@ var end; procedure AddTreeNodes(CodeNode: TObject; ParentViewNode: TTreeNode); - // create visual nodes (TTreeNode) - {off $DEFINE DisableTreeViewNodes} var - List: TCodeBrowserUnitList; - ListName: String; - Node: TAVLTreeNode; TVNode: TTreeNode; + + procedure RecursiveAdd(Tree: TAVLTree); + var + Node: TAVLTreeNode; + begin + if Tree<>nil then begin + Node:=Tree.FindLowest; + while Node<>nil do begin + AddTreeNodes(TObject(Node.Data), TVNode); + Node:=Tree.FindSuccessor(Node); + end; + end; + end; + + {off $DEFINE DisableTreeViewNodes} + procedure AddToTreeView(Name: String); + begin + {$IFNDEF DisableTreeViewNodes} + TVNode:=BrowseTreeView.Items.AddChildObject( + ParentViewNode, Name, CodeNode); + TVNode.ImageIndex:=GetNodeImage(CodeNode); + TVNode.SelectedIndex:=TVNode.ImageIndex; + {$ENDIF} + end; + + // create visual nodes (TTreeNode) + var + CurList: TCodeBrowserUnitList; + CurListName: String; CurUnit: TCodeBrowserUnit; CurUnitName: String; CurTool: TStandardCodeTool; @@ -2197,93 +2222,50 @@ var ExpandParent:=true; //DebugLn(['AddTreeNodes ',DbgSName(CodeNode)]); TVNode:=ParentViewNode; + if CodeNode is TCodeBrowserUnitList then begin - // unit list - List:=TCodeBrowserUnitList(CodeNode); - //DebugLn(['AddTreeNodes ',List.Owner]); - if List.Owner=CodeBrowserHidden then begin + CurList:=TCodeBrowserUnitList(CodeNode); + //DebugLn(['AddTreeNodes ',CurList.Owner]); + if CurList.Owner=CodeBrowserHidden then begin TVNode:=ParentViewNode; end else begin - ListName:=ListOwnerToText(List.Owner); + CurListName:=ListOwnerToText(CurList.Owner); inc(NewPackageCount); - {$IFNDEF DisableTreeViewNodes} - TVNode:=BrowseTreeView.Items.AddChildObject( - ParentViewNode,ListName,CodeNode); - TVNode.ImageIndex:=GetNodeImage(CodeNode); - TVNode.SelectedIndex:=TVNode.ImageIndex; - {$ENDIF} - end; - if List.UnitLists<>nil then begin - Node:=List.UnitLists.FindLowest; - while Node<>nil do begin - AddTreeNodes(TObject(Node.Data),TVNode); - Node:=List.UnitLists.FindSuccessor(Node); - end; - end; - if List.Units<>nil then begin - Node:=List.Units.FindLowest; - while Node<>nil do begin - AddTreeNodes(TObject(Node.Data),TVNode); - Node:=List.Units.FindSuccessor(Node); - end; + AddToTreeView(CurListName); end; + RecursiveAdd(CurList.UnitLists); + RecursiveAdd(CurList.Units); end else if CodeNode is TCodeBrowserUnit then begin - // unit CurUnit:=TCodeBrowserUnit(CodeNode); CurTool:=nil; if CurUnit.Filename<>'' then CurTool:=GetCodeTool(CurUnit); if CurTool<>nil then begin - // add a treenode for this unit + // add a tree node for this unit CurUnitName:=TCodeTool(CurTool).GetCachedSourceName; if CurUnitName='' then CurUnitName:=ExtractFileNameOnly(CurTool.MainFilename); inc(NewUnitCount); - {$IFNDEF DisableTreeViewNodes} - TVNode:=BrowseTreeView.Items.AddChildObject(ParentViewNode, - CurUnitName,CodeNode); - TVNode.ImageIndex:=GetNodeImage(CodeNode); - TVNode.SelectedIndex:=TVNode.ImageIndex; - {$ENDIF} + AddToTreeView(CurUnitName); end else begin // do not add a tree node for this unit TVNode:=ParentViewNode; end; // create tree nodes for code nodes - if CurUnit.ChildNodes<>nil then begin - Node:=CurUnit.ChildNodes.FindLowest; - while Node<>nil do begin - AddTreeNodes(TObject(Node.Data),TVNode); - Node:=CurUnit.ChildNodes.FindSuccessor(Node); - end; - end; + RecursiveAdd(CurUnit.ChildNodes); end else if CodeNode is TCodeBrowserNode then begin - // code node CurNode:=TCodeBrowserNode(CodeNode); if CurNode.Description<>'' then begin inc(NewIdentifierCount); //if (NewIdentifierCount mod 100)=0 then // DebugLn(['AddTreeNodes ',NewIdentifierCount,' ',CurNode.Description]); - {$IFNDEF DisableTreeViewNodes} - TVNode:=BrowseTreeView.Items.AddChildObject(ParentViewNode, - CurNode.Description,CodeNode); - TVNode.ImageIndex:=GetNodeImage(CodeNode); - TVNode.SelectedIndex:=TVNode.ImageIndex; - {$ENDIF} - + AddToTreeView(CurNode.Description); // create tree nodes for child code nodes - if CurNode.ChildNodes<>nil then begin - Node:=CurNode.ChildNodes.FindLowest; - while Node<>nil do begin - AddTreeNodes(TObject(Node.Data),TVNode); - Node:=CurNode.ChildNodes.FindSuccessor(Node); - end; - end; - + RecursiveAdd(CurNode.ChildNodes); // do not expand unit nodes - if (TObject(ParentViewNode.Data) is TCodeBrowserUnit) then + if TObject(ParentViewNode.Data) is TCodeBrowserUnit then ExpandParent:=false; end; end;