diff options
author | Daniel Burrows <dburrows@debian.org> | 2009-04-04 18:15:12 -0700 |
---|---|---|
committer | Daniel Burrows <dburrows@debian.org> | 2009-04-04 18:15:12 -0700 |
commit | 537beeb15e85b85ab0e849f149027c76b9e329d1 (patch) | |
tree | c66ed2f50a2c3161c3babce708025b4b9afecd1e | |
parent | cec50fa5a6fd2fe399c871f3a7e7ee9a005e8508 (diff) | |
download | aptitude-537beeb15e85b85ab0e849f149027c76b9e329d1.tar.gz |
Display dep, choice, and parent information in the chronological view, and display dep information in the tree view.
-rwxr-xr-x | tools/resolver-visualize/Main.hs | 83 | ||||
-rw-r--r-- | tools/resolver-visualize/Resolver/PrettyPrint.hs | 4 |
2 files changed, 73 insertions, 14 deletions
diff --git a/tools/resolver-visualize/Main.hs b/tools/resolver-visualize/Main.hs index 6c5dd5d9..25e3736b 100755 --- a/tools/resolver-visualize/Main.hs +++ b/tools/resolver-visualize/Main.hs @@ -75,7 +75,8 @@ data TreeViewColumnInfo = treeViewHeight :: TextColumnInfo, treeViewSubtreeSize :: TextColumnInfo, treeViewTier :: TextColumnInfo, - treeViewScore :: TextColumnInfo } + treeViewScore :: TextColumnInfo, + treeViewDep :: TextColumnInfo } treeViewColumnInfoRenderers :: TreeViewColumnInfo -> [CellRenderer] treeViewColumnInfoRenderers inf = @@ -87,7 +88,8 @@ treeViewColumnInfoRenderers inf = toCellRenderer $ textRenderer $ treeViewHeight inf, toCellRenderer $ textRenderer $ treeViewSubtreeSize inf, toCellRenderer $ textRenderer $ treeViewTier inf, - toCellRenderer $ textRenderer $ treeViewScore inf ] + toCellRenderer $ textRenderer $ treeViewScore inf, + toCellRenderer $ textRenderer $ treeViewDep inf ] treeViewColumnInfoColumns :: TreeViewColumnInfo -> [TreeViewColumn] treeViewColumnInfoColumns inf = @@ -99,7 +101,8 @@ treeViewColumnInfoColumns inf = textColumn $ treeViewHeight inf, textColumn $ treeViewSubtreeSize inf, textColumn $ treeViewTier inf, - textColumn $ treeViewScore inf ] + textColumn $ treeViewScore inf, + textColumn $ treeViewDep inf ] -- | Discard attribute bindings for the tree view. treeViewColumnInfoClear :: TreeViewColumnInfo -> IO () @@ -117,6 +120,7 @@ newTreeViewColumns = subtreeSize <- textColumnNew "Size" tier <- textColumnNew "Tier" score <- textColumnNew "Score" + dep <- textColumnNew "Dep" return TreeViewColumnInfo { treeViewText = text, treeViewNumChoices = numChoices, treeViewBrokenDeps = brokenDeps, @@ -125,7 +129,8 @@ newTreeViewColumns = treeViewHeight = height, treeViewSubtreeSize = subtreeSize, treeViewTier = tier, - treeViewScore = score } + treeViewScore = score, + treeViewDep = dep } -- | Information about the columns and renderers of the chronological -- display. @@ -137,7 +142,11 @@ data ChronologicalViewColumnInfo = chronViewHeight :: TextColumnInfo, chronViewSubtreeSize :: TextColumnInfo, chronViewTier :: TextColumnInfo, - chronViewScore :: TextColumnInfo } + chronViewScore :: TextColumnInfo, + chronViewParent :: TextColumnInfo, + chronViewChoice :: TextColumnInfo, + chronViewDep :: TextColumnInfo + } chronViewColumnInfoRenderers :: ChronologicalViewColumnInfo -> [CellRenderer] chronViewColumnInfoRenderers inf = @@ -148,7 +157,10 @@ chronViewColumnInfoRenderers inf = toCellRenderer $ textRenderer $ chronViewHeight inf, toCellRenderer $ textRenderer $ chronViewSubtreeSize inf, toCellRenderer $ textRenderer $ chronViewTier inf, - toCellRenderer $ textRenderer $ chronViewScore inf ] + toCellRenderer $ textRenderer $ chronViewScore inf, + toCellRenderer $ textRenderer $ chronViewParent inf, + toCellRenderer $ textRenderer $ chronViewChoice inf, + toCellRenderer $ textRenderer $ chronViewDep inf ] chronViewColumnInfoColumns :: ChronologicalViewColumnInfo -> [TreeViewColumn] chronViewColumnInfoColumns inf = @@ -159,7 +171,10 @@ chronViewColumnInfoColumns inf = textColumn $ chronViewHeight inf, textColumn $ chronViewSubtreeSize inf, textColumn $ chronViewTier inf, - textColumn $ chronViewScore inf ] + textColumn $ chronViewScore inf, + textColumn $ chronViewParent inf, + textColumn $ chronViewChoice inf, + textColumn $ chronViewDep inf ] -- | Discard attribute bindings for the chronological view. chronViewColumnInfoClear :: ChronologicalViewColumnInfo -> IO () @@ -176,6 +191,9 @@ newChronViewColumns = subtreeSize <- textColumnNew "Size" tier <- textColumnNew "Tier" score <- textColumnNew "Score" + parent <- textColumnNew "Parent" + dep <- textColumnNew "Dep" + choice <- textColumnNew "Step" return ChronologicalViewColumnInfo { chronViewNumChoices = numChoices, chronViewBrokenDeps = brokenDeps, @@ -184,7 +202,10 @@ newChronViewColumns = chronViewHeight = height, chronViewSubtreeSize = subtreeSize, chronViewTier = tier, - chronViewScore = score + chronViewScore = score, + chronViewParent = parent, + chronViewDep = dep, + chronViewChoice = choice } -- | Information about the columns and renderers of the run list. @@ -509,8 +530,7 @@ runToForest params steps = entryTreeInfo = treeInfo } choiceText :: LinkChoice -> String -choiceText (LinkChoice (InstallVersion ver _ _)) = "Install " ++ pp ver -choiceText (LinkChoice (BreakSoftDep d)) = "Break " ++ pp d +choiceText (LinkChoice c) = pp c choiceText Unknown = "(...)" -- Column definitions for tree view entries. @@ -587,6 +607,23 @@ entryColumnScore (AlreadyGeneratedStep { entrySol = sol }) = show $ entryColumnScore (NoStep { entrySol = sol }) = show $ solScore sol entryColumnScore (Error {}) = "" +entryColumnDep :: TreeViewEntry -> String +entryColumnDep (Root {}) = "" +entryColumnDep (Step { entryChoice = choice }) = + case choice of + LinkChoice (InstallVersion { choiceVerReason = Just d }) -> pp d + _ -> "" +entryColumnDep (Horizon { }) = "" +entryColumnDep (AlreadyGeneratedStep { entryChoice = choice }) = + case choice of + LinkChoice (InstallVersion { choiceVerReason = Just d }) -> pp d + _ -> "" +entryColumnDep (NoStep { entryChoice = choice }) = + case choice of + LinkChoice (InstallVersion { choiceVerReason = Just d }) -> pp d + _ -> "" +entryColumnDep (Error { entryErrorText = err }) = "" + renderTreeView :: Params -> [ProcessingStep] -> TreeViewStore -> IO () renderTreeView params steps model = do let forest = runToForest params steps @@ -604,6 +641,9 @@ data ChronViewEntry = chronSubtreeSize :: Integer, chronTier :: Tier, chronScore :: Integer, + chronParent :: Maybe Integer, + chronDep :: Maybe Dep, + chronChoice :: Maybe Choice, chronStep :: ProcessingStep } makeChronStep :: ProcessingStep -> ChronViewEntry @@ -615,8 +655,16 @@ makeChronStep step = height = stepDepth step subtreeSize = stepBranchSize step tier = solTier $ stepSol step - score = solScore $ stepSol step in + score = solScore $ stepSol step + parent = fmap (stepOrder . parentLinkParent) $ stepPredecessor step + choice = case stepPredecessor step of + Just (ParentLink { parentLinkAction = LinkChoice c }) -> Just c + _ -> Nothing + dep = case choice of + Just (InstallVersion { choiceVerReason = maybeDep }) -> maybeDep + _ -> Nothing in numChoices `seq` brokenDeps `seq` stepNum `seq` children `seq` height `seq` subtreeSize `seq` step `seq` tier `seq` score `seq` + choice `seq` parent `seq` dep `seq` ChronStep { chronNumChoices = numChoices, chronBrokenDeps = brokenDeps, chronStepNum = stepNum, @@ -625,7 +673,10 @@ makeChronStep step = chronSubtreeSize = subtreeSize, chronStep = step, chronTier = tier, - chronScore = score } + chronScore = score, + chronParent = parent, + chronDep = dep, + chronChoice = choice } renderChronView :: Params -> [ProcessingStep] -> ChronViewStore -> IO () renderChronView params steps model = @@ -817,7 +868,8 @@ createMainWindowStores treeViewInf chronViewInf runListInf = do (treeViewHeight, entryColumnHeight), (treeViewSubtreeSize, entryColumnSubtreeSize), (treeViewTier, entryColumnTier), - (treeViewScore, entryColumnScore)] + (treeViewScore, entryColumnScore), + (treeViewDep, entryColumnDep)] chronCols = [(chronViewNumChoices, show . chronNumChoices), (chronViewBrokenDeps, show . chronBrokenDeps), (chronViewStepNum, show . chronStepNum), @@ -825,7 +877,10 @@ createMainWindowStores treeViewInf chronViewInf runListInf = do (chronViewHeight, show . chronHeight), (chronViewSubtreeSize, show . chronSubtreeSize), (chronViewTier, show . chronTier), - (chronViewScore, show . chronScore)] + (chronViewScore, show . chronScore), + (chronViewDep, maybe "" pp . chronDep), + (chronViewParent, maybe "" show . chronParent), + (chronViewChoice, maybe "" pp . chronChoice)] runCols = [(runListNumber, show . fst), (runListLength, show . length . snd)] mapM_ (makeCol treeViewInf treeModel) treeCols diff --git a/tools/resolver-visualize/Resolver/PrettyPrint.hs b/tools/resolver-visualize/Resolver/PrettyPrint.hs index 78022661..8752bfa0 100644 --- a/tools/resolver-visualize/Resolver/PrettyPrint.hs +++ b/tools/resolver-visualize/Resolver/PrettyPrint.hs @@ -19,4 +19,8 @@ instance PP Dep where else " -> {" in ppS src . (arrow++) . (\x -> foldr (++) x $ intersperse ", " $ map pp solvers) . ('}':) +instance PP Choice where + ppS (InstallVersion ver _ _) = ("Install "++) . ppS ver + ppS (BreakSoftDep d) = ("Break "++) . ppS d + pp x = ppS x "" |