ghcprofview 0.1.0.0 → 0.1.0.1
raw patch · 4 files changed
+35/−20 lines, 4 filesdep +mtldep −regex-tdfa-text
Dependencies added: mtl
Dependencies removed: regex-tdfa-text
Files
- README.md +2/−0
- ghcprofview.cabal +4/−4
- src/Gui/Page.hs +18/−13
- src/Gui/TreeWidget.hs +11/−3
README.md view
@@ -1,6 +1,8 @@ ghcprofview README ================== +[](https://travis-ci.org/portnov/ghcprofview-hs) + This is GHC `.prof` files viewer, implemented in Haskell + Gtk3. Unlike [profiterole][1] and [profiteur][2], `ghcprofview` uses a traditional
ghcprofview.cabal view
@@ -1,13 +1,13 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.31.1.+-- This file has been generated from package.yaml by hpack version 0.33.0. -- -- see: https://github.com/sol/hpack ----- hash: b1508baa3bc5a0e04f53b8a9b3d8f2faca0079ca881ff61113d2b31c5f472e93+-- hash: 1af11545e3da13219f5e775588be3ada381d8abd4cee98035bc3d0891a341388 name: ghcprofview-version: 0.1.0.0+version: 0.1.0.1 synopsis: GHC .prof files viewer description: Please see the README on GitHub at <https://github.com/portnov/ghcprofview-hs#readme> category: Development@@ -50,8 +50,8 @@ , ghc-prof , gi-gtk , haskell-gi-base+ , mtl >=2.2 , regex-tdfa- , regex-tdfa-text , scientific , text default-language: Haskell2010
src/Gui/Page.hs view
@@ -67,7 +67,7 @@ let subtrees = ccdFindIncoming mod src name ccd result = ccdSum subtrees showTree ("Calls to " <> name) result- + return menu mkPage :: Statusbar -> T.Text -> CostCentreData -> ShowTree -> IO Page@@ -75,6 +75,8 @@ vbox <- boxNew OrientationVertical 0 searchHbox <- boxNew OrientationHorizontal 0 filterBox <- boxNew OrientationHorizontal 0+ filterSettingsBox <- flowBoxNew+ flowBoxSetSelectionMode filterSettingsBox SelectionModeNone entry <- searchEntryNew boxPackStart searchHbox entry True True 0@@ -93,27 +95,29 @@ on entry #activate $ buttonClicked searchButton - let addFilterPercent name = do+ let mkEntry :: IsWidget w => T.Text -> w -> IO (Box, w)+ mkEntry name widget = do lbl <- labelNew (Just name)- spin <- spinButtonNewWithRange 0 100 1+ box <- boxNew OrientationHorizontal 0+ boxPackStart box lbl False False 0+ boxPackStart box widget True True 10+ return (box, widget)++ let addFilterPercent name = do+ (box, spin) <- mkEntry name =<< spinButtonNewWithRange 0 100 1 spinButtonSetDigits spin 2- boxPackStart filterBox lbl False False 10- boxPackStart filterBox spin True True 0+ containerAdd filterSettingsBox box return spin let addFilterNumber name = do- lbl <- labelNew (Just name)- spin <- spinButtonNewWithRange 0 (1e38) 1+ (box, spin) <- mkEntry name =<< spinButtonNewWithRange 0 (1e38) 1 spinButtonSetDigits spin 0- boxPackStart filterBox lbl False False 10- boxPackStart filterBox spin True True 0+ containerAdd filterSettingsBox box return spin let addFilterText name = do- lbl <- labelNew (Just name)- entry <- entryNew- boxPackStart filterBox lbl False False 10- boxPackStart filterBox entry True True 0+ (box, spin) <- mkEntry name =<< entryNew+ containerAdd filterSettingsBox box return entry fltrEntries <- addFilterNumber "Entries:"@@ -126,6 +130,7 @@ filterButton <- buttonNewWithLabel "Filter" + boxPackStart filterBox filterSettingsBox True True 0 boxPackStart filterBox filterButton False False 0 boxPackStart vbox filterBox False False 0
src/Gui/TreeWidget.hs view
@@ -4,15 +4,18 @@ {-# LANGUAGE RankNTypes #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE MonoLocalBinds #-} module Gui.TreeWidget where import Control.Monad import qualified Data.Text as T+import Data.Int import Data.GI.Base.GType import Data.GI.Base.GValue-import GI.Gtk +import Data.GI.Base.Signals+import GI.Gtk import Types @@ -47,7 +50,7 @@ forM_ (zip [0..] (twcColumns cfg)) $ \(i, column) -> treeStoreSetValue store item i =<< columnData column cc forM_ (treeChildren node) $ fill store (Just item)- + mkTreeView :: forall t a . IsTree t a => TreeWidgetConfig a -> t -> IO TreeView mkTreeView cfg@(TreeWidgetConfig columns) tree = do srcStore <- mkTreeStore cfg tree@@ -59,6 +62,11 @@ return view where+ addColumn :: TreeView+ -> Int32+ -> ColumnType+ -> T.Text+ -> IO SignalHandlerId addColumn view i ctype title = do column <- treeViewColumnNew treeViewColumnSetTitle column title@@ -81,7 +89,7 @@ return True else return False - withRenderer :: ColumnType -> (forall r. IsCellRenderer r => r -> IO x) -> IO x+ withRenderer :: forall x. ColumnType -> (forall r. IsCellRenderer r => r -> IO Int32) -> IO Int32 withRenderer TextColumn f = cellRendererTextNew >>= f withRenderer PercentColumn f = cellRendererProgressNew >>= f