leksah-0.6.0: src/IDE/Group/Debugger.hs
-----------------------------------------------------------------------------
--
-- Module : IDE.Group.Debugger
-- Copyright : 2007-2009 Juergen Nicklisch-Franken, Hamish Mackenzie
-- License : GPL
--
-- Maintainer : maintainer@leksah.org
-- Stability : provisional
-- Portability :
--
-- |
--
-----------------------------------------------------------------------------
module IDE.Group.Debugger (
showDebugger
) where
import IDE.Core.State
(getNotebook, viewSplit', newGroupOrBringToFront, IDEAction(..))
import Graphics.UI.Frame.Panes
(PaneDirection(..),
PanePathElement(..),
panePathForGroup)
import IDE.Pane.SourceBuffer
(newTextBuffer, bufferName, allBuffers)
import Graphics.UI.Editor.Parameters (Direction(..))
import Control.Monad.Trans (liftIO)
import Graphics.UI.Gtk (notebookSetShowTabs, notebookSetTabPos)
import Graphics.UI.Gtk.General.Enums (PositionType(..))
import IDE.Pane.Variables (showVariables')
import IDE.Pane.Breakpoints (showBreakpointList')
import IDE.Pane.Trace(showTrace')
import Control.Monad (when)
showDebugger :: IDEAction
showDebugger = do
pp <- panePathForGroup "*Debug"
ret <- newGroupOrBringToFront "Debug" pp
bufs <- allBuffers
case ret of
(Just rpp, True) -> do
viewSplit' rpp Horizontal
viewSplit' (rpp ++ [SplitP TopP]) Horizontal
let lowerP = rpp ++ [SplitP BottomP]
let middleP = rpp ++ [SplitP TopP,SplitP BottomP]
let upperP = rpp ++ [SplitP TopP,SplitP TopP]
lower <- getNotebook lowerP
middle <- getNotebook middleP
upper <- getNotebook upperP
liftIO $ do
notebookSetTabPos lower PosTop
notebookSetTabPos middle PosTop
notebookSetTabPos upper PosTop
notebookSetShowTabs upper False
showBreakpointList' middleP
showVariables' middleP
showTrace' lowerP
when (null $ filter (\b -> bufferName b == "_Eval.hs") bufs) $
newTextBuffer upperP "_Eval.hs" Nothing >> return ()
return ()
(Just rpp, False) -> do
let lowerP = rpp ++ [SplitP BottomP]
let middleP = rpp ++ [SplitP TopP,SplitP BottomP]
let upperP = rpp ++ [SplitP TopP,SplitP TopP]
showBreakpointList' middleP
showVariables' middleP
showTrace' lowerP
when (null $ filter (\b -> bufferName b == "_Eval.hs") bufs) $
newTextBuffer upperP "_Eval.hs" Nothing >> return ()
return ()
_ -> return ()