cody: unit deps: all units: group nodes

git-svn-id: trunk@41743 -
This commit is contained in:
mattias 2013-06-17 13:17:46 +00:00
parent 8480e85171
commit c97895ac60
2 changed files with 75 additions and 18 deletions

View File

@ -1,7 +1,7 @@
object UnitDependenciesWindow: TUnitDependenciesWindow object UnitDependenciesWindow: TUnitDependenciesWindow
Left = 347 Left = 319
Height = 440 Height = 440
Top = 188 Top = 174
Width = 620 Width = 620
Caption = 'UnitDependenciesWindow' Caption = 'UnitDependenciesWindow'
ClientHeight = 440 ClientHeight = 440
@ -151,6 +151,7 @@ object UnitDependenciesWindow: TUnitDependenciesWindow
AllowAllUp = True AllowAllUp = True
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
GroupIndex = 12 GroupIndex = 12
OnClick = AllUnitsShowGroupNodesSpeedButtonClick
ShowHint = True ShowHint = True
ParentShowHint = False ParentShowHint = False
end end
@ -167,6 +168,7 @@ object UnitDependenciesWindow: TUnitDependenciesWindow
AllowAllUp = True AllowAllUp = True
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
GroupIndex = 13 GroupIndex = 13
OnClick = AllUnitsShowDirsSpeedButtonClick
ShowHint = True ShowHint = True
ParentShowHint = False ParentShowHint = False
end end
@ -179,6 +181,7 @@ object UnitDependenciesWindow: TUnitDependenciesWindow
Top = 0 Top = 0
Width = 175 Width = 175
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
OnChange = AllUnitsFilterEditChange
TabOrder = 0 TabOrder = 0
Text = 'AllUnitsFilterEdit' Text = 'AllUnitsFilterEdit'
end end

View File

@ -99,6 +99,14 @@ type
function Count: integer; function Count: integer;
end; end;
TUDWFlag = (
udwParsing,
udwNeedUpdateGroupsLvlGraph,
udwNeedUpdateUnitsLvlGraph,
udwNeedUpdateAllUnitsTreeView
);
TUDWFlags = set of TUDWFlag;
{ TUnitDependenciesWindow } { TUnitDependenciesWindow }
TUnitDependenciesWindow = class(TForm) TUnitDependenciesWindow = class(TForm)
@ -130,7 +138,10 @@ type
UnitsSplitter: TSplitter; UnitsSplitter: TSplitter;
UnitsTabSheet: TTabSheet; UnitsTabSheet: TTabSheet;
Timer1: TTimer; Timer1: TTimer;
procedure AllUnitsFilterEditChange(Sender: TObject);
procedure AllUnitsMultiselectSpeedButtonClick(Sender: TObject); procedure AllUnitsMultiselectSpeedButtonClick(Sender: TObject);
procedure AllUnitsShowDirsSpeedButtonClick(Sender: TObject);
procedure AllUnitsShowGroupNodesSpeedButtonClick(Sender: TObject);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject); procedure FormDestroy(Sender: TObject);
procedure GroupsLvlGraphSelectionChanged(Sender: TObject); procedure GroupsLvlGraphSelectionChanged(Sender: TObject);
@ -148,6 +159,7 @@ type
FUsesGraph: TUsesGraph; FUsesGraph: TUsesGraph;
FGroups: TUGGroups; // referenced by Nodes.Data of GroupsLvlGraph FGroups: TUGGroups; // referenced by Nodes.Data of GroupsLvlGraph
FAllUnitsRootUDNode: TUDNode; FAllUnitsRootUDNode: TUDNode;
FFlags: TUDWFlags;
function CreateAllUnitsTree: TUDNode; function CreateAllUnitsTree: TUDNode;
procedure SetAllUnitsMultiSelect(AValue: boolean); procedure SetAllUnitsMultiSelect(AValue: boolean);
procedure SetCurrentUnit(AValue: TUGUnit); procedure SetCurrentUnit(AValue: TUGUnit);
@ -161,7 +173,7 @@ type
procedure AddAdditionalFilesAsStartUnits; procedure AddAdditionalFilesAsStartUnits;
procedure SetupGroupsTabSheet; procedure SetupGroupsTabSheet;
procedure SetupUnitsTabSheet; procedure SetupUnitsTabSheet;
procedure UpdateAddFiles; procedure UpdateUnitsButtons;
procedure UpdateAll; procedure UpdateAll;
procedure UpdateGroupsLvlGraph; procedure UpdateGroupsLvlGraph;
procedure UpdateUnitsLvlGraph; procedure UpdateUnitsLvlGraph;
@ -292,6 +304,26 @@ begin
AllUnitsMultiSelect:=AllUnitsMultiselectSpeedButton.Down; AllUnitsMultiSelect:=AllUnitsMultiselectSpeedButton.Down;
end; end;
procedure TUnitDependenciesWindow.AllUnitsShowDirsSpeedButtonClick(
Sender: TObject);
begin
Include(FFlags,udwNeedUpdateAllUnitsTreeView);
IdleConnected:=true;
end;
procedure TUnitDependenciesWindow.AllUnitsShowGroupNodesSpeedButtonClick(
Sender: TObject);
begin
Include(FFlags,udwNeedUpdateAllUnitsTreeView);
IdleConnected:=true;
end;
procedure TUnitDependenciesWindow.AllUnitsFilterEditChange(Sender: TObject);
begin
Include(FFlags,udwNeedUpdateAllUnitsTreeView);
IdleConnected:=true;
end;
procedure TUnitDependenciesWindow.FormDestroy(Sender: TObject); procedure TUnitDependenciesWindow.FormDestroy(Sender: TObject);
begin begin
IdleConnected:=false; IdleConnected:=false;
@ -312,24 +344,35 @@ procedure TUnitDependenciesWindow.OnIdle(Sender: TObject; var Done: Boolean);
var var
Completed: boolean; Completed: boolean;
begin begin
if udwParsing in FFlags then begin
UsesGraph.Parse(true,Completed,200); UsesGraph.Parse(true,Completed,200);
if Completed then begin if Completed then begin
Exclude(FFlags,udwParsing);
CreateGroups; CreateGroups;
IdleConnected:=false;
ProgressBar1.Visible:=false; ProgressBar1.Visible:=false;
ProgressBar1.Style:=pbstNormal; ProgressBar1.Style:=pbstNormal;
Timer1.Enabled:=false; Timer1.Enabled:=false;
UpdateAll; UpdateAll;
end; end;
end else if udwNeedUpdateGroupsLvlGraph in FFlags then
UpdateGroupsLvlGraph
else if udwNeedUpdateUnitsLvlGraph in FFlags then
UpdateUnitsLvlGraph
else if udwNeedUpdateAllUnitsTreeView in FFlags then
UpdateAllUnitsTreeView
else
IdleConnected:=false;
end; end;
procedure TUnitDependenciesWindow.SearchPkgsCheckBoxChange(Sender: TObject); procedure TUnitDependenciesWindow.SearchPkgsCheckBoxChange(Sender: TObject);
begin begin
// ToDo: reparse
IdleConnected:=true; IdleConnected:=true;
end; end;
procedure TUnitDependenciesWindow.SearchSrcEditCheckBoxChange(Sender: TObject); procedure TUnitDependenciesWindow.SearchSrcEditCheckBoxChange(Sender: TObject);
begin begin
// ToDo: reparse
IdleConnected:=true; IdleConnected:=true;
end; end;
@ -357,6 +400,7 @@ begin
if s<>'' then s+=';'; if s<>'' then s+=';';
s+=aFilename; s+=aFilename;
SearchCustomFilesComboBox.Text:=s; SearchCustomFilesComboBox.Text:=s;
// ToDo: Reparse
IdleConnected:=true; IdleConnected:=true;
finally finally
Dlg.Free; Dlg.Free;
@ -366,13 +410,15 @@ end;
procedure TUnitDependenciesWindow.SearchCustomFilesCheckBoxChange( procedure TUnitDependenciesWindow.SearchCustomFilesCheckBoxChange(
Sender: TObject); Sender: TObject);
begin begin
UpdateAddFiles; UpdateUnitsButtons;
// ToDo: reparse
IdleConnected:=true; IdleConnected:=true;
end; end;
procedure TUnitDependenciesWindow.SearchCustomFilesComboBoxChange( procedure TUnitDependenciesWindow.SearchCustomFilesComboBoxChange(
Sender: TObject); Sender: TObject);
begin begin
// ToDo: reparse
IdleConnected:=true; IdleConnected:=true;
end; end;
@ -573,11 +619,12 @@ var
UGUnit: TUGGroupUnit; UGUnit: TUGGroupUnit;
AVLNode: TAVLTreeNode; AVLNode: TAVLTreeNode;
Group: TUGGroup; Group: TUGGroup;
GroupNode: TUDNode;
begin begin
Filter:=UTF8LowerCase(GetAllUnitsFilter); Filter:=UTF8LowerCase(GetAllUnitsFilter);
RootNode:=TUDNode.Create;
ShowGroups:=AllUnitsShowGroupNodesSpeedButton.Down; ShowGroups:=AllUnitsShowGroupNodesSpeedButton.Down;
ShowDirectories:=AllUnitsShowDirsSpeedButton.Down; ShowDirectories:=AllUnitsShowDirsSpeedButton.Down;
RootNode:=TUDNode.Create;
for AVLNode in UsesGraph.FilesTree do begin for AVLNode in UsesGraph.FilesTree do begin
UGUnit:=TUGGroupUnit(AVLNode.Data); UGUnit:=TUGGroupUnit(AVLNode.Data);
NodeText:=ExtractFileName(UGUnit.Filename); NodeText:=ExtractFileName(UGUnit.Filename);
@ -590,9 +637,14 @@ begin
GroupName:=Group.Name; GroupName:=Group.Name;
ParentNode:=RootNode; ParentNode:=RootNode;
if ShowGroups then begin if ShowGroups then begin
// create group nodes
GroupNode:=ParentNode.GetNode(udnGroup,GroupName,true);
GroupNode.Identifier:=GroupName;
GroupNode.Group:=GroupName;
ParentNode:=GroupNode;
end; end;
if ShowDirectories then begin if ShowDirectories then begin
// create directory nodes
end; end;
Node:=ParentNode.GetNode(udnUnit, NodeText, true); Node:=ParentNode.GetNode(udnUnit, NodeText, true);
@ -612,6 +664,7 @@ var
j: Integer; j: Integer;
PkgFile: TLazPackageFile; PkgFile: TLazPackageFile;
begin begin
Include(FFlags,udwParsing);
UsesGraph.TargetAll:=true; UsesGraph.TargetAll:=true;
// project lpr // project lpr
@ -751,10 +804,10 @@ begin
SelUnitsSearchPrevSpeedButton.Hint:='Search previous unit of this phrase'; SelUnitsSearchPrevSpeedButton.Hint:='Search previous unit of this phrase';
SelUnitsSearchPrevSpeedButton.LoadGlyphFromLazarusResource('arrow_up'); SelUnitsSearchPrevSpeedButton.LoadGlyphFromLazarusResource('arrow_up');
UpdateAddFiles; UpdateUnitsButtons;
end; end;
procedure TUnitDependenciesWindow.UpdateAddFiles; procedure TUnitDependenciesWindow.UpdateUnitsButtons;
begin begin
SearchCustomFilesComboBox.Enabled:=SearchCustomFilesCheckBox.Checked; SearchCustomFilesComboBox.Enabled:=SearchCustomFilesCheckBox.Checked;
SearchCustomFilesBrowseButton.Enabled:=SearchCustomFilesCheckBox.Checked; SearchCustomFilesBrowseButton.Enabled:=SearchCustomFilesCheckBox.Checked;
@ -762,7 +815,6 @@ end;
procedure TUnitDependenciesWindow.UpdateAll; procedure TUnitDependenciesWindow.UpdateAll;
begin begin
UpdateAddFiles;
UpdateGroupsLvlGraph; UpdateGroupsLvlGraph;
UpdateUnitsLvlGraph; UpdateUnitsLvlGraph;
UpdateAllUnitsTreeView; UpdateAllUnitsTreeView;
@ -782,6 +834,7 @@ var
GrpUnit: TUGGroupUnit; GrpUnit: TUGGroupUnit;
UsedUnit: TUGGroupUnit; UsedUnit: TUGGroupUnit;
begin begin
Exclude(FFlags,udwNeedUpdateGroupsLvlGraph);
GroupsLvlGraph.BeginUpdate; GroupsLvlGraph.BeginUpdate;
Graph:=GroupsLvlGraph.Graph; Graph:=GroupsLvlGraph.Graph;
Graph.Clear; Graph.Clear;
@ -789,7 +842,6 @@ begin
while AVLNode<>nil do begin while AVLNode<>nil do begin
Group:=TUGGroup(AVLNode.Data); Group:=TUGGroup(AVLNode.Data);
AVLNode:=Groups.Groups.FindSuccessor(AVLNode); AVLNode:=Groups.Groups.FindSuccessor(AVLNode);
// ToDo: IsFPCSrcGroup
GraphGroup:=Graph.GetNode(Group.Name,true); GraphGroup:=Graph.GetNode(Group.Name,true);
GraphGroup.Data:=Group; GraphGroup.Data:=Group;
GroupObj:=nil; GroupObj:=nil;
@ -856,6 +908,7 @@ var
NewGroups: TStringToPointerTree; NewGroups: TStringToPointerTree;
UsedUnit: TUGGroupUnit; UsedUnit: TUGGroupUnit;
begin begin
Exclude(FFlags,udwNeedUpdateUnitsLvlGraph);
NewGroups:=TStringToPointerTree.Create(false); NewGroups:=TStringToPointerTree.Create(false);
NewUnits:=TFilenameToPointerTree.Create(false); NewUnits:=TFilenameToPointerTree.Create(false);
try try
@ -945,6 +998,7 @@ var
TV: TTreeView; TV: TTreeView;
OldExpanded: TTreeNodeExpandedState; OldExpanded: TTreeNodeExpandedState;
begin begin
Exclude(FFlags,udwNeedUpdateAllUnitsTreeView);
TV:=AllUnitsTreeView; TV:=AllUnitsTreeView;
TV.BeginUpdate; TV.BeginUpdate;
// save old expanded state // save old expanded state