From 18edc84831c627b4f6dd68900e7a095bcdce5bd8 Mon Sep 17 00:00:00 2001 From: martin Date: Sun, 7 Apr 2019 19:57:37 +0000 Subject: [PATCH] Unit-Dependencies, PkgGraphExplorer: Add DEBUG setting "TestRandomSeed" to option dialog. Allows other options to be tested on a fixed/reproducible graph git-svn-id: trunk@60893 - --- ide/dependencygraphoptions.pas | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/ide/dependencygraphoptions.pas b/ide/dependencygraphoptions.pas index 79a32dbac1..7bdc97f778 100644 --- a/ide/dependencygraphoptions.pas +++ b/ide/dependencygraphoptions.pas @@ -1,6 +1,7 @@ unit DependencyGraphOptions; {$mode objfpc}{$H+} +{off $DEFINE WITH_RANDOM_SEED} // ONLY applies, after "apply" or "ok" when the graph is redrawn interface @@ -27,6 +28,9 @@ type FOnLoaded: TNotifyEvent; FReduceBackEdges: Boolean; FStraightenGraph: Boolean; + {$IFDEF WITH_RANDOM_SEED} + FTestRandomSeed: integer; + {$ENDIF} public constructor Create; procedure ReadFromXml(AnXmlConf: TRttiXMLConfig; APath: String); override; @@ -46,6 +50,9 @@ type property StraightenGraph: Boolean read FStraightenGraph write FStraightenGraph; property LimitLvlHeighAbs: integer read FLimitLvlHeighAbs write FLimitLvlHeighAbs; property LimitLvlHeighRel: Single read FLimitLvlHeighRel write FLimitLvlHeighRel; + {$IFDEF WITH_RANDOM_SEED} + property TestRandomSeed: integer read FTestRandomSeed write FTestRandomSeed; + {$ENDIF} property OnLoaded: TNotifyEvent read FOnLoaded write FOnLoaded; end; @@ -106,6 +113,9 @@ type procedure FormCreate(Sender: TObject); procedure OKButtonClick(Sender: TObject); private + {$IFDEF WITH_RANDOM_SEED} + spinTestRandomSeed: TSpinEdit; + {$ENDIF} FApplyCallback: TApplyOptionsProc; FGraph: TLvlGraph; FOptions: TLvlGraphOptions; @@ -192,6 +202,14 @@ begin spinHorizSpacing.Hint := Format(LvlGraphAddHorizontalSpacing, [LineEnding]); spinVertSpacing.Hint := Format(LvlGraphAddVerticalSpacingAr, [LineEnding]); + {$IFDEF WITH_RANDOM_SEED} + spinTestRandomSeed := TSpinEdit.Create(Self); + spinTestRandomSeed.Parent := OptionsGroup; + spinTestRandomSeed.Hint := 'Random seed for testing. Set to none zero to activate'; + spinTestRandomSeed.ShowHint := True; + {$ENDIF} + + PopulateEdgeSplit; PopulateEdgeShape; end; @@ -305,6 +323,9 @@ begin Options.ExtraSpacingVert := spinVertSpacing.Value; Options.LimitLvlHeighAbs := spinLvlLimitAbs.Value; Options.LimitLvlHeighRel := spinLvlLimitRel.Value; + {$IFDEF WITH_RANDOM_SEED} + Options.TestRandomSeed := spinTestRandomSeed.Value; + {$ENDIF} end; procedure TDependencyGraphOptDialog.ReadFromOpts; @@ -320,6 +341,9 @@ begin spinVertSpacing.Value := Options.ExtraSpacingVert; spinLvlLimitAbs.Value := Options.LimitLvlHeighAbs; spinLvlLimitRel.Value := Options.LimitLvlHeighRel; + {$IFDEF WITH_RANDOM_SEED} + spinTestRandomSeed.Value := Options.TestRandomSeed; + {$ENDIF} end; procedure TDependencyGraphOptDialog.UpdateInfo; @@ -464,6 +488,10 @@ begin AValue.Options := AValue.Options - [lgoStraightenGraph]; AValue.Limits.MaxLevelHeightAbs := LimitLvlHeighAbs; AValue.Limits.MaxLevelHeightRel := LimitLvlHeighRel; + {$IFDEF WITH_RANDOM_SEED} + if TestRandomSeed <> 0 then + RandSeed := TestRandomSeed; // graph autolayout should be triggered before anything else uses random + {$ENDIF} end; procedure TLvlGraphOptions.ReadFromGraph(AValue: TLvlGraphControl);