packages feed

phoityne 0.0.1.1 → 0.0.2.0

raw patch · 14 files changed

+979/−587 lines, 14 files

Files

Changelog.md view
@@ -1,8 +1,14 @@-20151223 phoityne-0.0.1.1
-
-* [Add] README.md, Changelog.md
-
-20151220 phoityne-0.0.1.0
-
-* [Info] Initial release.+20160101 phoityne-0.0.2.0++  * [Add] 参照先情報を取得する機能を追加した(:info)+  * [Add] ファイル保存時にghci上でファイルをロードする機能を追加した+  * [Add] print source file path on statusbar.++20151223 phoityne-0.0.1.1++  * [Add] README.md, Changelog.md++20151220 phoityne-0.0.1.0++  * [Info] Initial release. 
README.md view
@@ -4,15 +4,15 @@ (on Windows)  ## Install-
-
-### Setup GTK3
-Download the all in package of gtk from [here](http://win32builder.gnome.org/ "GTK3").
-Extract it and set path to bin and lib folder, set install directory to prefix of  lib/pkgconfig/*.pc files.
-
-
-### Start stack project
 ++### Setup GTK3+Download the all in package of gtk from [here](http://win32builder.gnome.org/ "GTK3").+Extract it and set path to bin and lib folder, set install directory to prefix of  lib/pkgconfig/*.pc files.+++### Start stack project+     % stack new project       . . . . .     %@@ -25,26 +25,26 @@  ## Keyboard shortcuts -
-### Build, Debug
-* F5 : start debug / jump to next break point
-* Shift+F5 : end debug
-* F7 : build
-* Shift+F7 : rebuild (stack clean; stack build)
-* F9 : put on/off break point
-* F10 : step over
-* F11 : step in
-
-### File, Search
-* Ctrl+S : save all
-* Ctrl+F : search
-* F3 : jump to next search result
-* Ctrl+R : replace
-
-### Folder Tree
-* Left :  collapse folder
-* Right :  expand folder
-* Up :  go up
++### Build, Debug+* F5 : start debug / jump to next break point+* Shift+F5 : end debug+* F7 : build+* Shift+F7 : rebuild (stack clean; stack build)+* F9 : put on/off break point+* F10 : step over+* F11 : step in++### File, Search+* Ctrl+S : save all+* Ctrl+F : search+* F3 : jump to next search result+* Ctrl+R : replace++### Folder Tree+* Left :  collapse folder+* Right :  expand folder+* Up :  go up * Down :  go down  @@ -55,4 +55,29 @@  ### Demo Video2 [![Demo Video2](http://img.youtube.com/vi/T10wWCmWHaA/0.jpg)](https://www.youtube.com/watch?v=T10wWCmWHaA)+++## Document+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド1.PNG)+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド2.PNG)+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド3.PNG)+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド4.PNG)+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド5.PNG)+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド6.PNG)+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド7.PNG)+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド8.PNG)+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド9.PNG)+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド10.PNG)+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド11.PNG)+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド12.PNG)+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド13.PNG)+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド14.PNG)+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド15.PNG)+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド16.PNG)+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド17.PNG)+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド18.PNG)+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド19.PNG)+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド20.PNG)+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド21.PNG)+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド22.PNG) 
app/Phoityne/Constant.hs view
@@ -19,6 +19,8 @@ _INI_SEC_PHOITYNE_TARGET_DIR :: String _INI_SEC_PHOITYNE_TARGET_DIR = "target" +_INI_SEC_PHOITYNE_GHCI_AUTO_START :: String+_INI_SEC_PHOITYNE_GHCI_AUTO_START = "ghci_auto_start"  _LOG_NAME :: String _LOG_NAME = "phoityne"
app/Phoityne/IO/CUI/GHCiControl.hs view
@@ -18,7 +18,7 @@ import System.IO
 import System.Exit
 import System.Log.Logger
-+import qualified Data.List as L 
 -- |
 --
@@ -62,6 +62,7 @@   hSetEncoding outReadHandle    osEnc
   hSetEncoding outWriteHandle   utf8
 +  debugM _LOG_NAME $ cmd ++ (L.intercalate " " opts)   ghciProc <- runProcess cmd opts curDir Nothing (Just stdInReadHandle) (Just outWriteHandle) (Just outWriteHandle) 
   return $ ExternalCommandData (Just stdInWriteHandle) (Just outReadHandle) (Just outReadHandle) (Just ghciProc)
@@ -82,8 +83,10 @@ --
 --
 writeLine :: ExternalCommandData -> String -> IO ()
-writeLine (ExternalCommandData (Just ghciIn) _ _ _) cmd = hPutStrLn ghciIn cmd
-writeLine _ _ = criticalM _LOG_NAME "writeLine"
+writeLine (ExternalCommandData (Just ghciIn) _ _ _) cmd = hIsOpen ghciIn >>= \case+  False -> criticalM _LOG_NAME "[writeLine] handle not open."+  True  -> debugM _LOG_NAME ("[writeLine]" ++ cmd) >> hPutStrLn ghciIn cmd
+writeLine _ _ = criticalM _LOG_NAME "[writeLine] handle is nothing."
 
  -- |
app/Phoityne/IO/Control.hs view
@@ -34,7 +34,9 @@     -> IO Int         -- exit code run _ ini = do -  let cwdSet = forceEither $ C.get ini _INI_SEC_PHOITYNE _INI_SEC_PHOITYNE_TARGET_DIR+  let cwdSet  = forceEither $ C.get ini _INI_SEC_PHOITYNE _INI_SEC_PHOITYNE_TARGET_DIR+      autoRun = forceEither $ C.get ini _INI_SEC_PHOITYNE _INI_SEC_PHOITYNE_GHCI_AUTO_START+   cwd <- if "." == cwdSet then getCurrentDirectory else return cwdSet    infoM _LOG_NAME $ "CWD:" ++ cwd
@@ -46,7 +48,7 @@ 
   let cmdData = createCmdData mvarCUI cwd
 
-  GUI.createMainWindow cmdData [cwd]
+  GUI.createMainWindow cmdData [cwd] autoRun
    return 1
 @@ -75,7 +77,8 @@       , GUI.buildStartDebugCommandData   = buildStart mvarCUI cwd
       , GUI.cleanStartDebugCommandData   = cleanStart mvarCUI cwd       , GUI.loadFileDebugCommandData     = \f-> execCmd mvarCUI $ ":l " ++ f
-      , GUI.readWhileDebugCommandData    = readWhile mvarCUI
+      , GUI.readWhileDebugCommandData    = readWhile mvarCUI+      , GUI.infoDebugCommandData        = \arg -> execCmd mvarCUI $ ":info " ++ arg
       }  
app/Phoityne/IO/GUI/Control.hs view
@@ -81,7 +81,8 @@   , unDoReDoFlagMVarGUIData            :: Bool   , buildMsgMVarGUIData                :: [String]   , searchFilesMVarGUIData             :: [FilePath]-  , startupNodeDataMVarGUIData         :: Maybe IF.NodeData
+  , startupNodeDataMVarGUIData         :: Maybe IF.NodeData+  , ghciAutoStart                      :: Bool
   }
 
 -- |
@@ -111,7 +112,8 @@   , buildStartDebugCommandData   :: IO ()
   , cleanStartDebugCommandData   :: IO ()   , loadFileDebugCommandData     :: FilePath -> IO String-  , readWhileDebugCommandData    :: (String -> Bool) -> IO String
+  , readWhileDebugCommandData    :: (String -> Bool) -> IO String+  , infoDebugCommandData         :: String -> IO String   }
 
 -- |
@@ -140,9 +142,10 @@                    -> IF.FolderTreeStore
                    -> IF.BindingListStore
                    -> IF.TraceDataListStore
-                   -> IF.SearchResultListStore
+                   -> IF.SearchResultListStore+                   -> Bool
                    -> MVarGUIData
-defaultMVarGUIData widgets breaks folder bindings trace search =
+defaultMVarGUIData widgets breaks folder bindings trace search autoRun =
   MVarGUIData {
     widgetStoreMVarGUIData           = widgets
   , breakPointListMVarGUIData        = breaks
@@ -158,13 +161,14 @@   , buildMsgMVarGUIData              = []   , searchFilesMVarGUIData           = []   , startupNodeDataMVarGUIData       = Nothing+  , ghciAutoStart                    = autoRun   }
 
 -- | --
 ---createMainWindow :: DebugCommandData -> [FilePath] -> IO ()
-createMainWindow cmdData paths = do+createMainWindow :: DebugCommandData -> [FilePath] -> Bool -> IO ()
+createMainWindow cmdData paths autoRun = do    -- Storeの作成   builder           <- IF.getBuilder
@@ -175,7 +179,7 @@   treeStore         <- loadFolderForest _PROJECT_ROOT_MODULE_NAME paths >>= IF.createTreeStore    -- GUI共有データの作成
-  mvarGUI <- newMVar $ defaultMVarGUIData builder breakStore treeStore bindingStore traceStore searchResultStore
+  mvarGUI <- newMVar $ defaultMVarGUIData builder breakStore treeStore bindingStore traceStore searchResultStore autoRun
    -- イベントハンドラの登録   IF.setupMainWindow builder@@ -189,12 +193,13 @@     (toolBTstepInHandler     mvarGUI cmdData)
     (toolBTcontinueHandler   mvarGUI cmdData)
     (toolBTbuildHandler      mvarGUI cmdData)
-    (toolBTdeleteHandler     mvarGUI cmdData)
     (toolBTsaveHandler       mvarGUI cmdData)
     (toolBTindentHandler     mvarGUI)
     (toolBTunIndentHandler   mvarGUI)
     (toolBTcommentHandler    mvarGUI)
     (toolBTunCommentHandler  mvarGUI)
+    (toolBTstartGHCiHandler  mvarGUI cmdData)
+    (toolBTstopGHCiHandler   mvarGUI cmdData)
    IF.setupFolderTree builder treeStore     (folderTreeDoubleClickedHandler mvarGUI cmdData)
@@ -213,6 +218,7 @@ 
   IF.setupBreakPointTable builder breakStore     (breakPointTableDoubleClickedHandler mvarGUI cmdData)
+    (toolBTdeleteHandler     mvarGUI cmdData)
 
   IF.setupBindingTable builder bindingStore     (bindingTableDoubleClickedHandler mvarGUI cmdData)
@@ -222,10 +228,15 @@ 
   IF.setupSearchResultTable builder searchResultStore     (searchResultTableDoubleClickedHandler mvarGUI cmdData)
++  autoRunGHCi mvarGUI cmdData >>= \case+    True -> return ()+    False -> errorM _LOG_NAME "run ghci failed." 
   -- 開始-  IF.start builder
+  IF.start builder 
+
  -- |===================================================================== --  MainWindowのイベントハンドラ@@ -259,11 +270,9 @@ mainWindowKeyPressEventHandler mvarGUI cmdDat "F7" True  _ = do
   guiData <- readMVar mvarGUI
   let builder = widgetStoreMVarGUIData guiData
-  isStart <- IF.isBuildStart builder
-
-  when (False == isStart) $ do-    runClean -    toolBTbuildHandler mvarGUI cmdDat
+  IF.isBuildStart builder >>= \case+    True  -> IF.putStrStatusBar builder "build unavailable. Currently building or ghci running."+    False -> runClean >> toolBTbuildHandler mvarGUI cmdDat
    return True @@ -298,12 +307,13 @@ mainWindowKeyPressEventHandler mvarGUI cmdDat "F7" _  _ = do
   guiData <- readMVar mvarGUI
   let builder = widgetStoreMVarGUIData guiData
-  isStart <- IF.isBuildStart builder
-
-  when (False == isStart) $ do-    IF.clearConsole builder-    toolBTbuildHandler mvarGUI cmdDat
 +  IF.isBuildStart builder >>= \case+    True  -> IF.putStrStatusBar builder "build unavailable. Currently building or ghci running."+    False -> do
+      IF.clearConsole builder+      toolBTbuildHandler mvarGUI cmdDat
+   return True
 
 mainWindowKeyPressEventHandler mvarGUI cmdDat "F10" _ _ = do
@@ -330,7 +340,7 @@ 
 
 mainWindowKeyPressEventHandler mvarGUI cmdDat "s" _ True = do-  saveAll mvarGUI cmdDat -- Ctr+s
+  saveAll mvarGUI cmdDat >>= loadHsFiles mvarGUI cmdDat   return True
 
 mainWindowKeyPressEventHandler mvarGUI cmdDat "f" _ True =  findCurrentTextEditor mvarGUI >>= \case@@ -398,71 +408,148 @@ --
 toolBTdebugStartHandler :: MVar MVarGUIData -> DebugCommandData -> IF.DebugStartBTClickedEventHandler
 toolBTdebugStartHandler mvarGUI cmdData = do-  runGHCi >>= \case-    False -> do-      warningM _LOG_NAME "run ghci fail."-    True  -> loadHsFile >>= \case+  guiData <- readMVar mvarGUI
+  let builder = widgetStoreMVarGUIData guiData++  IF.isGHCiStarted builder >>= \case+    False -> errorM _LOG_NAME "ghci has not yet started."+    True  -> loadHsFileInternal >>= \case+      True -> startDebug
       False -> do-        warningM _LOG_NAME "run ghci fail."-      True -> setupDebug >> startDebug
+        let msg = "load startup module fail. check startup module set."+        warningM _LOG_NAME msg+        IF.putStrStatusBar builder msg 
   where-    runGHCi = do-      guiData <- readMVar mvarGUI
-
-      let builder    = widgetStoreMVarGUIData guiData
-          startCmd   = startDebugCommandData cmdData
-          readLines  = readLinesDebugCommandData cmdData
-          readWhile = readWhileDebugCommandData cmdData
--      IF.clearConsole builder
-      IF.putStrConsole builder $ "start stack ghci.\n"
-
-      startCmd
-
-      cont <- readLines (debugStartResultHandler builder)
-      if | null cont -> return False-         | startswith "Ok," (last cont) -> do-           res <- readWhile $ not . endswith "> "-           IF.putStrConsole builder res-           return True-         | otherwise -> return False-        --    loadHsFile = do+    loadHsFileInternal = do       guiData <- readMVar mvarGUI       loadHsFileMay $ startupNodeDataMVarGUIData guiData
 -    loadHsFileMay Nothing = return True-    loadHsFileMay (Just nodeDat) = do+    loadHsFileMay Nothing = return False+    loadHsFileMay (Just nodeDat) = loadHsFile mvarGUI cmdData $ IF.getPathFromNodeData nodeDat+
+    startDebug = do
       guiData <- readMVar mvarGUI
       let builder    = widgetStoreMVarGUIData guiData-          loadFile   = loadFileDebugCommandData cmdData
-          readLines  = readLinesDebugCommandData cmdData
-          readWhile = readWhileDebugCommandData cmdData
+          breakStore = breakPointListMVarGUIData guiData
+          getResult  = readDebugCommandData cmdData
+          runDebug   = runDebugCommandData cmdData
++      IF.changeTBsOnDebugStarted builder
 
-      cmdStr <- loadFile $ IF.getPathFromNodeData nodeDat
+      breakList <- IF.getBreakPointList breakStore
+
+      mapM_ (addBreakPointOnCUI mvarGUI cmdData) breakList
+
+      cmdStr <- runDebug True
       IF.putStrLnConsole builder cmdStr
 
-      cont <- readLines (debugStartResultHandler builder)
+      cmdStr <- getResult
+      IF.putStrConsole builder cmdStr
+      let breakPos = getStoppedTextRangeData cmdStr
+      +      continueWithHighlightTextRangeData mvarGUI cmdData breakPos -      if | null cont -> return False-         | startswith "Ok," (last cont) -> do-           res <- readWhile $ not . endswith "> "-           IF.putStrConsole builder res-           return True-         | otherwise -> return False++-- |
+--
+--+loadHsFiles :: MVar MVarGUIData -> DebugCommandData -> [FilePath] -> IO ()+loadHsFiles mvarGUI cmdData paths = do+  guiData <- readMVar mvarGUI
+  let builder   = widgetStoreMVarGUIData guiData++  debugStarted <- IF.isDebugStart builder+  when debugStarted $ do+    IF.putStrStatusBar builder "stop debug and load files."+    toolBTdebugStopHandler mvarGUI cmdData++  autoRunGHCi mvarGUI cmdData >>= \case+    False -> errorM _LOG_NAME "run ghci failed."+    True  -> mapM_ (loadHsFile mvarGUI cmdData) paths+  +-- |
+--
+--+loadHsFile :: MVar MVarGUIData -> DebugCommandData -> FilePath -> IO Bool+loadHsFile mvarGUI cmdData path+  | (False == endswith _HS_FILE_EXT path) = return False+  | otherwise = do+    guiData <- readMVar mvarGUI
+    let builder   = widgetStoreMVarGUIData guiData+        loadFile  = loadFileDebugCommandData cmdData
+        readLines = readLinesDebugCommandData cmdData
+        getResult = readDebugCommandData cmdData+  
+    cmdStr <- loadFile path
+    IF.putStrLnConsole builder cmdStr
+  
+    cont <- readLines (debugStartResultHandler builder)
+  +    if | null cont -> return False+       | startswith "Ok," (last cont) -> do+         cmdStr <- getResult
+         IF.putStrConsole builder cmdStr+         return True+       | otherwise -> do+         cmdStr <- getResult
+         IF.putStrConsole builder cmdStr+         return False+  +-- |
+--
+--+autoRunGHCi :: MVar MVarGUIData -> DebugCommandData -> IO Bool+autoRunGHCi mvarGUI cmdData = do+  guiData <- readMVar mvarGUI
+  let builder       = widgetStoreMVarGUIData guiData+      autoRun       = ghciAutoStart guiData
+      +  isGHCiStarted <- IF.isGHCiStarted builder++  withFlag autoRun isGHCiStarted ++  where+    withFlag _ True = return True+    withFlag False False = return False+    withFlag True False = runGHCi mvarGUI cmdData+    +-- |
+--
+--+runGHCi :: MVar MVarGUIData -> DebugCommandData -> IO Bool+runGHCi mvarGUI cmdData = do+  guiData <- readMVar mvarGUI
+  let builder   = widgetStoreMVarGUIData guiData
+      startCmd  = startDebugCommandData cmdData
+      readLines = readLinesDebugCommandData cmdData
++  IF.changeTBsOnGHCiStartting builder++  IF.clearConsole builder
+  IF.putStrConsole builder $ "start stack ghci.\n"
 
-    setupDebug = do
+  startCmd
 
+  cont <- readLines (debugStartResultHandler builder)
+  if | null cont -> IF.changeTBsOnGHCiStopped builder >> return False+     | startswith "Ok," (last cont) -> readAndSetPrompt >> IF.changeTBsOnGHCiStarted builder >> return True+     | startswith "Failed," (last cont) -> readAndSetPrompt >> IF.changeTBsOnGHCiStarted builder >>return True+     | otherwise -> IF.changeTBsOnGHCiStopped builder >> return False++  where+    readAndSetPrompt = do       guiData <- readMVar mvarGUI
-
-      let builder     = widgetStoreMVarGUIData guiData
-          breakStore  = breakPointListMVarGUIData guiData
-          setPrompt   = promptDebugCommandData cmdData
-          getResult   = readDebugCommandData cmdData
-          printEvld   = printEvldDebugCommandData cmdData
+    
+      let builder   = widgetStoreMVarGUIData guiData
+          readWhile = readWhileDebugCommandData cmdData+          setPrompt = promptDebugCommandData cmdData+          getResult = readDebugCommandData cmdData
+          printEvld = printEvldDebugCommandData cmdData +      res <- readWhile $ not . endswith "> "+      IF.putStrConsole builder res+       promptStr <- setPrompt
       IF.putStrLnConsole builder promptStr
 
@@ -473,79 +560,32 @@       IF.putStrLnConsole builder cmdStr
 
       cmdStr <- getResult
-      IF.putStrConsole builder cmdStr
-
-      IF.setupDebugButtonOn builder
-
-      breakList <- IF.getBreakPointList breakStore
-
-      mapM_ (addBreakPointOnCUI mvarGUI cmdData) breakList
+      IF.putStrConsole builder cmdStr -
-    startDebug = do
-
-      guiData <- readMVar mvarGUI
-
-      let builder   = widgetStoreMVarGUIData guiData
-          getResult = readDebugCommandData cmdData
-          runDebug  = runDebugCommandData cmdData
-
-      cmdStr <- runDebug True
-      IF.putStrLnConsole builder cmdStr
-
-      cmdStr <- getResult
-      IF.putStrConsole builder cmdStr
-      let breakPos = getStoppedTextRangeData cmdStr
-      -      continueWithHighlightTextRangeData mvarGUI cmdData breakPos+-- |
+--
+--
+debugStartResultHandler :: IF.WidgetStore -> [String] -> IO Bool
+debugStartResultHandler builder acc = IF.putStrLnConsole builder curStr >> if
+  | L.isPrefixOf "Ok," curStr -> return False
+  | L.isPrefixOf "Failed," curStr -> return False
+  | otherwise -> return True+  where+    curStr | null acc = ""+           | otherwise = last acc -    -- |
-    --
-    --
-    debugStartResultHandler :: IF.WidgetStore -> [String] -> IO Bool
-    debugStartResultHandler builder acc = IF.putStrLnConsole builder curStr >> if
-      | L.isPrefixOf "Ok," curStr -> return False
-      | L.isPrefixOf "Failed," curStr -> return False
-      | otherwise -> return True-      where-        curStr | null acc = ""-               | otherwise = last acc-      -- |
 --  Event Handler
 --
 toolBTdebugStopHandler :: MVar MVarGUIData -> DebugCommandData -> IF.DebugStopBTClickedEventHandler
-toolBTdebugStopHandler mvarGUI cmdData = do
-
-  guiData <- takeMVar mvarGUI
-
-  let builder     = widgetStoreMVarGUIData guiData
-      codeNoteMap = codeNoteMapMVarGUIData guiData
-      exitCmd     = stopDebugCommandData cmdData
-      quitCmd     = quitDebugCommandData cmdData
-      -- readLines   = readLinesDebugCommandData cmdData
-      readWhile   = readWhileDebugCommandData cmdData
-
-  putMVar mvarGUI guiData
-
-  cmdStr <- quitCmd
-  IF.putStrLnConsole builder cmdStr
-
-  str <- readWhile $ const True 
-  IF.putStrConsole builder str
-  IF.putStrLnConsole builder ""
-
-  code <- exitCmd
-
-  IF.putStrLnConsole builder $ show code
-
-  IF.setupDebugButtonOff builder
-
-  mapM_ IF.offLightBreakPoint $ Map.elems codeNoteMap
-
-  return ()
-
+toolBTdebugStopHandler mvarGUI _ = do
+  guiData <- readMVar mvarGUI
+  let builder = widgetStoreMVarGUIData guiData++  IF.changeTBsOnDebugStopped builder++ -- |
 --  Event Handler
 --
@@ -657,7 +697,7 @@   
     putMVar mvarGUI guiData{buildMsgMVarGUIData = []}
   -    IF.setupBuildButtonOff builder
+    IF.changeTBsOnBuildStart builder
     --IF.clearConsole builder
     appendBuildMsg mvarGUI "start stack build.\n" @@ -671,7 +711,7 @@     appendBuildMsg mvarGUI $ "\n" ++ show code ++ "\n"     _ <- IF.addCallback $ buildCallbackHandler mvarGUI False   
-    IF.setupBuildButtonOn builder
+    IF.changeTBsOnBuildFinish builder
      return () @@ -720,9 +760,9 @@ toolBTdeleteHandler mvarGUI cmdData = do
   guiData <- takeMVar mvarGUI
   let bpList  = breakPointListMVarGUIData guiData
-      noteMap = codeNoteMapMVarGUIData guiData
+      --noteMap = codeNoteMapMVarGUIData guiData
 
-  mapM_ IF.offLightBreakPoint $ Map.elems noteMap
+  --mapM_ IF.offLightBreakPoint $ Map.elems noteMap
   putMVar mvarGUI guiData
 
   IF.getBreakPointList bpList >>= mapM_ go
@@ -738,8 +778,11 @@ --  Event Handler
 --
 toolBTsaveHandler :: MVar MVarGUIData -> DebugCommandData -> IF.SaveBTClickedEventHandler
-toolBTsaveHandler = saveAll+toolBTsaveHandler mvarGUI cmdData = do+  files <- saveAll mvarGUI cmdData+  loadHsFiles mvarGUI cmdData files + -- |
 --  Event Handler
 --
@@ -772,10 +815,47 @@   Nothing -> return()   Just (_, editor) -> IF.blockUnCommentTextEditor editor
 +-- |
+--  Event Handler
+--
+toolBTstartGHCiHandler :: MVar MVarGUIData -> DebugCommandData -> IO ()
+toolBTstartGHCiHandler mvarGUI cmdData = runGHCi mvarGUI cmdData >>= \case+  True -> return ()+  False -> errorM _LOG_NAME "run ghci failed." 
 -- |
+--  Event Handler
 --
+toolBTstopGHCiHandler :: MVar MVarGUIData -> DebugCommandData -> IO ()
+toolBTstopGHCiHandler mvarGUI cmdData = do+  guiData <- readMVar mvarGUI
+  let builder     = widgetStoreMVarGUIData guiData
+      --codeNoteMap = codeNoteMapMVarGUIData guiData
+      exitCmd     = stopDebugCommandData cmdData
+      quitCmd     = quitDebugCommandData cmdData
+      readWhile   = readWhileDebugCommandData cmdData
+
+  cmdStr <- quitCmd
+  IF.putStrLnConsole builder cmdStr
+
+  str <- readWhile $ const True 
+  IF.putStrConsole builder str
+  IF.putStrLnConsole builder ""
+
+  code <- exitCmd
+
+  IF.putStrLnConsole builder $ show code
+
+  IF.changeTBsOnGHCiStopped builder
+
+  --mapM_ IF.offLightBreakPoint $ Map.elems codeNoteMap
+
+  return ()+++-- |
 --
+--
 continueWithHighlightTextRangeData :: MVar MVarGUIData -> DebugCommandData -> Either ParseError HighlightTextRangeData -> IO () continueWithHighlightTextRangeData mvarGUI cmdData (Left err) = do
   warningM _LOG_NAME $ "[continueWithHighlightTextRangeData]" ++ show err
@@ -1361,6 +1441,47 @@   infoM _LOG_NAME "ctrl g called. not yet implemented."
   return True
 +codeTextKeyPressEventHandler mvarGUI cmdData "F4" _ _ _ _ = findCurrentTextEditor mvarGUI >>= \case+  Nothing -> errorM _LOG_NAME "[codeTextKeyPressEventHandler] invalid text editor." >> return True+  Just a -> withEditor a+  where+    withEditor (nodeDat, editor) = do+      key <- IF.getSelectedText editor+      withKey key $ IF.getPathFromNodeData nodeDat++    withKey key path+      | null key  = return True+      | otherwise = autoRunGHCi mvarGUI cmdData >>= \case+          False -> errorM _LOG_NAME "run ghci failed." >> return True+          True -> do+            guiData <- readMVar mvarGUI+            let builder = widgetStoreMVarGUIData guiData+            res <- IF.isDebugStart builder+            debugStarted key path res++    debugStarted key path True = fileLoaded key path True+    debugStarted key path False = loadHsFile mvarGUI cmdData path >>= fileLoaded key path++    fileLoaded _ path False = errorM _LOG_NAME ("load hs file fail." ++ path) >> return True+    fileLoaded key _ True = do+      guiData <- readMVar mvarGUI+      let builder   = widgetStoreMVarGUIData guiData
+          info      = infoDebugCommandData cmdData
+          getResult = readDebugCommandData cmdData
+      +      cmdStr <- info key
+      IF.putStrLnConsole builder cmdStr
+
+      cmdStr <- getResult
+      IF.putStrConsole builder cmdStr+      +      case getDefinedTextRangeData cmdStr of
+        Right pos -> activateTextEditor mvarGUI cmdData pos+        Left err  -> infoM _LOG_NAME $ "[codeTextKeyPressEventHandler]" ++ show err++      return True++ codeTextKeyPressEventHandler mvarGUI cmdDat "z" False True _ _ = do   guiData <- takeMVar mvarGUI
 @@ -1563,11 +1684,22 @@       _ <- manyTill anyChar (string "Stopped at ")       parseHighlightTextRange +-- |
+--+--
+getDefinedTextRangeData :: String -> Either ParseError HighlightTextRangeData
+getDefinedTextRangeData = parse parser "getDefinedTextRangeData"
+  where+    parser = do+      _ <- manyTill anyChar (try (string "Defined at "))+      parseHighlightTextRange+ -- | --  parser of
 --   A) src\Phoityne\IO\Main.hs:31:11-14
 --   B) src\Main.hs:(17,3)-(19,35)
 --   C) src\Phoityne\IO\Main.hs:31:11
+--      src\Phoityne\IO\Main.hs:31:11:
 -- parseHighlightTextRange :: forall u. ParsecT String u Identity HighlightTextRangeData parseHighlightTextRange = do@@ -1592,7 +1724,7 @@ 
     parseC = do       ln <- manyTill digit (char ':')-      sn <- manyTill digit (char ':')+      sn <- try (manyTill digit (char ':')) <|> try (manyTill digit endOfLine) <|> try (manyTill digit eof)       return ((read ln), (read sn), (read ln), (read sn))  
@@ -1909,11 +2041,11 @@ 
   where
     highLightBreakPoint _ _ Nothing = errorM _LOG_NAME $ "[highLightBreakPoint]invalid node map."
-    highLightBreakPoint mvarGUI pos (Just textEditor) = do
-      guiData <- readMVar mvarGUI
-      let codeNoteMap = codeNoteMapMVarGUIData guiData
+    highLightBreakPoint _ pos (Just textEditor) = do
+      --guiData <- readMVar mvarGUI
+      --let codeNoteMap = codeNoteMapMVarGUIData guiData
 
-      mapM_ IF.offLightBreakPoint $ Map.elems codeNoteMap
+      --mapM_ IF.offLightBreakPoint $ Map.elems codeNoteMap
 
       IF.highLightBreakPoint textEditor
         (startLineNoHighlightTextRangeData pos)
@@ -2089,20 +2221,21 @@ -- |
 -- すべての変更ファイルを保存する
 --
-saveAll :: MVar MVarGUIData -> DebugCommandData -> IO ()+saveAll :: MVar MVarGUIData -> DebugCommandData -> IO [FilePath] saveAll mvarGUI _ = do   guiData <- readMVar mvarGUI
   let noteMap = codeNoteMapMVarGUIData guiData
  -  mapM_ go $ Map.toList noteMap+  foldM go [] $ Map.toList noteMap     where-    go (nodeDat, editor) = do-      isModified <- IF.isTextEditorModified editor-      when isModified $ do+    go acc (nodeDat, editor) = IF.isTextEditorModified editor >>= \case+      False -> return acc+      True -> do         content <- IF.getCodeViewContent editor
         saveFile (IF.getPathFromNodeData nodeDat) content         IF.setTextEditorModified editor False+        return $ IF.getPathFromNodeData nodeDat : acc   -- |
app/Phoityne/IO/GUI/GTK/BreakPointTable.hs view
@@ -78,8 +78,9 @@ setupBreakPointTable :: Builder                      -> BreakPointListStore                      -> BreakPointTableDoubleClickedHandler+                     -> DeleteAllBreakBTClickedEventHandler                      -> IO ()
-setupBreakPointTable builder store evh = do
+setupBreakPointTable builder store evh deleteEvh = do
 
   treeView <- builderGetObject builder castToTreeView _WIDGET_NAME_BREAK_POINT_TREE_VIEW
   _ <- treeViewSetModel treeView store
@@ -126,6 +127,10 @@ 
   sel <- treeViewGetSelection treeView
   treeSelectionSetMode sel SelectionSingle
++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DELETE
+  onToolButtonClicked bt deleteEvh
+  widgetSetSensitive bt True 
   setFont treeView
   widgetShowAll treeView
app/Phoityne/IO/GUI/GTK/ConsoleView.hs view
@@ -16,6 +16,7 @@ ) where  -- モジュール+import Phoityne.Constant import Phoityne.IO.GUI.GTK.Constant
 import Phoityne.IO.GUI.GTK.Utility
 
@@ -23,6 +24,8 @@ import GHC.Float
 import Graphics.UI.Gtk
 import Control.Monad.IO.Class+import System.Log.Logger
+import Data.String.Utils import qualified Data.Text as T
  -- |
@@ -98,6 +101,8 @@ --
 append2Console :: Builder -> String -> IO ()
 append2Console builder msg = do
++  debugM _LOG_NAME $ strip msg    textView <- builderGetObject builder castToTextView _NAME_CONSOLE_TEXT_VIEW
   buf <- textViewGetBuffer textView
app/Phoityne/IO/GUI/GTK/Constant.hs view
@@ -100,6 +100,12 @@ _NAME_TOOL_BT_UNCOMMENT :: String
 _NAME_TOOL_BT_UNCOMMENT = "BlockUnCommentBT"
 +_NAME_TOOL_BT_START_GHCI :: String
+_NAME_TOOL_BT_START_GHCI = "StartGHCiBT"
++_NAME_TOOL_BT_STOP_GHCI :: String
+_NAME_TOOL_BT_STOP_GHCI = "StopGHCiBT"
+ _NAME_TOOL_BT_DEL_SEARCH :: String
 _NAME_TOOL_BT_DEL_SEARCH = "SearchResultDeleteBT"
 @@ -122,3 +128,11 @@ _BREAK_POINT_HIGHLIGHT_TAG = T.pack "BreakPointHighlightTag"
 
 
+_NAME_STATUS_BAR :: String+_NAME_STATUS_BAR = "StatusBar"+++_STATUS_BAR_CONTEXT_ID :: String+_STATUS_BAR_CONTEXT_ID = "PHOITYNE_STATUS_BAR"++
app/Phoityne/IO/GUI/GTK/Interface.hs view
@@ -25,6 +25,7 @@ , setupMainWindow , addCallback , delCallback+, putStrStatusBar  -- ToolButton
 , DebugStartBTClickedEventHandler
@@ -37,13 +38,17 @@ , UnIndentBTClickedEventHandler
 , CommentBTClickedEventHandler
 , UnCommentBTClickedEventHandler
-, setupToolButton
-, setupDebugButtonOn
-, setupDebugButtonOff
-, setupBuildButtonOn
-, setupBuildButtonOff
+, setupToolButton+, changeTBsOnGHCiStartting+, changeTBsOnGHCiStarted+, changeTBsOnGHCiStopped
+, changeTBsOnDebugStarted
+, changeTBsOnDebugStopped
+, changeTBsOnBuildStart
+, changeTBsOnBuildFinish
 , isDebugStart
 , isBuildStart+, isGHCiStarted 
 -- Dialog , getNameByFolderTreeDialog
@@ -98,7 +103,10 @@  type UnCommentBTClickedEventHandler = IO ()
 +type StartGHCiBTClickedEventHandler = IO () 
+type StopGHCiBTClickedEventHandler = IO ()+ -- |
 --
 --
@@ -182,6 +190,12 @@   codePaned <- builderGetObject builder castToPaned _NAME_CODE_PANED
   panedSetPosition codePaned 350
 +  note <- builderGetObject builder castToNotebook _NAME_CODE_NOTE+  -- statusBar <- builderGetObject builder castToStatusbar _NAME_STATUS_BAR+  -- contId <- statusbarGetContextId statusBar "source_file_path"+  on note switchPage $ switchPageEventHandler note builder++  return () 
 -- |
 --  Event Handler
@@ -207,7 +221,15 @@  -- |
 --
+--+isGHCiStarted :: Builder -> IO Bool+isGHCiStarted builder = do
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STOP_GHCI
+  widgetGetSensitive bt++-- |
 --
+--
 isDebugStart :: Builder -> IO Bool
 isDebugStart builder = do
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_STOP
@@ -222,6 +244,32 @@   widgetGetSensitive bt >>= return . not  +-- |
+--
+--
+switchPageEventHandler :: Notebook -> Builder -> Int -> IO ()+switchPageEventHandler note builder pageId = do+  path <- notebookGetNthPage note pageId >>= \case+    Nothing -> return "[ERROR] texit editor not found."+    Just child -> notebookGetMenuLabelText note child >>= \case+      Nothing -> return "[ERROR] texit editor not found."+      Just a  -> return a    +  +  putStrStatusBar builder path+++-- |
+--
+--
+putStrStatusBar :: Builder -> String -> IO ()+putStrStatusBar builder msg = do+  bar <- builderGetObject builder castToStatusbar _NAME_STATUS_BAR+  contId <- statusbarGetContextId bar _STATUS_BAR_CONTEXT_ID+  statusbarRemoveAll bar (fromIntegral (toInteger contId))+  statusbarPush bar contId msg+  return ()++ -- |===================================================================== --  Dialog  --@@ -341,158 +389,285 @@                 -> StepInBTClickedEventHandler
                 -> ContinueBTClickedEventHandler
                 -> BuildBTClickedEventHandler
-                -> DeleteAllBreakBTClickedEventHandler
                 -> SaveBTClickedEventHandler
                 -> IndentBTClickedEventHandler
                 -> UnIndentBTClickedEventHandler
                 -> CommentBTClickedEventHandler
                 -> UnCommentBTClickedEventHandler
+                -> StartGHCiBTClickedEventHandler
+                -> StopGHCiBTClickedEventHandler
                 -> IO ()
-setupToolButton builder debugStartEvh debugStopEvh stepOverEvh stepInEvh continueEvh buildEvh deleteEvh saveEvh indentEvh unIndentEvh commentEvh unCommentEvh = do
+setupToolButton builder debugStartEvh debugStopEvh stepOverEvh stepInEvh continueEvh buildEvh saveEvh indentEvh unIndentEvh commentEvh unCommentEvh startGHCi stopGHCi= do
 
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_SAVE
+  onToolButtonClicked bt saveEvh
+  widgetSetSensitive bt True++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
+  onToolButtonClicked bt buildEvh
+  widgetSetSensitive bt True+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_START_GHCI
+  onToolButtonClicked bt startGHCi
+  widgetSetSensitive bt True++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STOP_GHCI
+  onToolButtonClicked bt stopGHCi
+  widgetSetSensitive bt False++  ------------------------------------+
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_START
   onToolButtonClicked bt debugStartEvh
-
+  widgetSetSensitive bt False+   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_STOP
   onToolButtonClicked bt debugStopEvh
+  widgetSetSensitive bt False 
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_CONTINUE
+  onToolButtonClicked bt continueEvh
+  widgetSetSensitive bt False+   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_OVER
   onToolButtonClicked bt stepOverEvh
+  widgetSetSensitive bt False 
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_IN
   onToolButtonClicked bt stepInEvh
-
-  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_CONTINUE
-  onToolButtonClicked bt continueEvh
-
-  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
-  onToolButtonClicked bt buildEvh
+  widgetSetSensitive bt False 
-  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DELETE
-  onToolButtonClicked bt deleteEvh
--  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_SAVE
-  onToolButtonClicked bt saveEvh
+  ------------------------------------ 
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_INDENT
   onToolButtonClicked bt indentEvh
+  widgetSetSensitive bt True    bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_UNINDENT
   onToolButtonClicked bt unIndentEvh
+  widgetSetSensitive bt True    bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_COMMENT
   onToolButtonClicked bt commentEvh
+  widgetSetSensitive bt True    bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_UNCOMMENT
   onToolButtonClicked bt unCommentEvh
--  setupDebugButtonOff builder
-
-  return ()
-+  widgetSetSensitive bt True   -- |
 --
 --
-setupDebugButtonOn :: Builder -> IO ()
-setupDebugButtonOn builder = do
-
+changeTBsOnGHCiStartting :: Builder -> IO ()
+changeTBsOnGHCiStartting builder = do
++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
+  widgetSetSensitive bt False
++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_START_GHCI
+  widgetSetSensitive bt False++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STOP_GHCI
+  widgetSetSensitive bt False+   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_START
   widgetSetSensitive bt False
 
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_STOP
-  widgetSetSensitive bt True
-
-  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_OVER
-  widgetSetSensitive bt True
-
-  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_IN
-  widgetSetSensitive bt True
+  widgetSetSensitive bt False
 
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_CONTINUE
-  widgetSetSensitive bt True
-
-  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
   widgetSetSensitive bt False
++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_OVER
+  widgetSetSensitive bt False
 
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_IN
+  widgetSetSensitive bt False++ -- |
 --
 --
-setupDebugButtonOff :: Builder -> IO ()
-setupDebugButtonOff builder = do
-
+changeTBsOnGHCiStarted :: Builder -> IO ()
+changeTBsOnGHCiStarted builder = do
++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
+  widgetSetSensitive bt False
++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_START_GHCI
+  widgetSetSensitive bt False++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STOP_GHCI
+  widgetSetSensitive bt True+   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_START
   widgetSetSensitive bt True
 
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_STOP
   widgetSetSensitive bt False
 
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_CONTINUE
+  widgetSetSensitive bt False
+   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_OVER
   widgetSetSensitive bt False
 
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_IN
   widgetSetSensitive bt False
 
-  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_CONTINUE
-  widgetSetSensitive bt False
 
-  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
-  widgetSetSensitive bt True
-
-
 -- |
 --
 --
-setupBuildButtonOn :: Builder -> IO ()
-setupBuildButtonOn builder = do
+changeTBsOnGHCiStopped :: Builder -> IO ()
+changeTBsOnGHCiStopped builder = do
 
-  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_START
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
   widgetSetSensitive bt True
++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_START_GHCI
+  widgetSetSensitive bt True++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STOP_GHCI
+  widgetSetSensitive bt False++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_START
+  widgetSetSensitive bt False
 
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_STOP
   widgetSetSensitive bt False
 
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_CONTINUE
+  widgetSetSensitive bt False
+   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_OVER
   widgetSetSensitive bt False
 
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_IN
   widgetSetSensitive bt False
+ 
+-- |
+--
+--
+changeTBsOnBuildStart :: Builder -> IO ()
+changeTBsOnBuildStart builder = do
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
+  widgetSetSensitive bt False
++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_START_GHCI
+  widgetSetSensitive bt False++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STOP_GHCI
+  widgetSetSensitive bt False++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_START
+  widgetSetSensitive bt False
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_STOP
+  widgetSetSensitive bt False
+
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_CONTINUE
   widgetSetSensitive bt False
++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_OVER
+  widgetSetSensitive bt False
 
-  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
-  widgetSetSensitive bt True
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_IN
+  widgetSetSensitive bt False 
 -- |
 --
 --
-setupBuildButtonOff :: Builder -> IO ()
-setupBuildButtonOff builder = do
+changeTBsOnBuildFinish :: Builder -> IO ()
+changeTBsOnBuildFinish builder = do
 
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
+  widgetSetSensitive bt True
++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_START_GHCI
+  widgetSetSensitive bt True++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STOP_GHCI
+  widgetSetSensitive bt False+   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_START
   widgetSetSensitive bt False
 
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_STOP
   widgetSetSensitive bt False
 
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_CONTINUE
+  widgetSetSensitive bt False
+   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_OVER
   widgetSetSensitive bt False
 
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_IN
+  widgetSetSensitive bt False+++-- |
+--
+--
+changeTBsOnDebugStarted :: Builder -> IO ()
+changeTBsOnDebugStarted builder = do
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
   widgetSetSensitive bt False
++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_START_GHCI
+  widgetSetSensitive bt False++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STOP_GHCI
+  widgetSetSensitive bt True++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_START
+  widgetSetSensitive bt False
 
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_STOP
+  widgetSetSensitive bt True
+
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_CONTINUE
-  widgetSetSensitive bt False
+  widgetSetSensitive bt True
++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_OVER
+  widgetSetSensitive bt True
 
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_IN
+  widgetSetSensitive bt True
++
+-- |
+--
+--
+changeTBsOnDebugStopped :: Builder -> IO ()
+changeTBsOnDebugStopped builder = do
+
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
   widgetSetSensitive bt False
-
 --- |=====================================================================---  ---+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_START_GHCI
+  widgetSetSensitive bt False +  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STOP_GHCI
+  widgetSetSensitive bt True++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_START
+  widgetSetSensitive bt True
 
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_STOP
+  widgetSetSensitive bt False
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_CONTINUE
+  widgetSetSensitive bt False
++  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_OVER
+  widgetSetSensitive bt False
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_IN
+  widgetSetSensitive bt False
 
app/Phoityne/IO/GUI/GTK/TextEditor.hs view
@@ -17,7 +17,7 @@ , setupCodeNote
 , activateCodeNote
 , highLightBreakPoint
-, offLightBreakPoint
+--, offLightBreakPoint
 , addBreakPointTagAtLine
 , isCurrentTextEditor
 , getCodeViewContent
@@ -169,14 +169,13 @@       notebookSetTabReorderable note (boxTextEditorData textEditor) True
     
       _ <- onToolButtonClicked closeButton (codeNoteCloseEventHandler note textEditor evh)
-    
+           setFont note
            widgetShowAll note
     -      -- activateCodeNote builder textEditor lineNo
-    -      return textEditor
+      return textEditor+ 
 -- |
 --
@@ -489,18 +488,18 @@ -- | --  
 --
-offLightBreakPoint :: TextEditorData -> IO ()
-offLightBreakPoint textEditor = do
+-- offLightBreakPoint :: TextEditorData -> IO ()
+-- offLightBreakPoint textEditor = do
 
-  let codeTextView = codeTextEditorData textEditor
-  codeBuf <- textViewGetBuffer codeTextView
- 
-  startIter <- textBufferGetStartIter codeBuf
-  endIter   <- textBufferGetEndIter codeBuf
+  -- let codeTextView = codeTextEditorData textEditor
+  -- codeBuf <- textViewGetBuffer codeTextView
+ -- 
+  -- startIter <- textBufferGetStartIter codeBuf
+  -- endIter   <- textBufferGetEndIter codeBuf
 
-  textBufferRemoveTagByName codeBuf _BREAK_POINT_HIGHLIGHT_TAG startIter endIter
+  -- textBufferRemoveTagByName codeBuf _BREAK_POINT_HIGHLIGHT_TAG startIter endIter
 
-  return ()
+  -- return ()
 
 -- | --  
app/Phoityne/IO/Main.hs view
@@ -86,6 +86,7 @@   , ""   , "[PHOITYNE]"   , "target = ."+  , "ghci_auto_start = True"   ]  -- |
conf/Phoityne.glade view
@@ -1,17 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?>+<!-- Generated with glade 3.19.0 --> <interface>-  <!-- interface-requires gtk+ 3.0 -->-  <object class="GtkAction" id="TreeViewPopupCreateFileAction"/>-  <object class="GtkAction" id="TreeViewPopupCreateFolderAction"/>-  <object class="GtkAction" id="TreeViewPopupDeleteAction">-    <property name="sensitive">False</property>-  </object>-  <object class="GtkAction" id="TreeViewPopupRenameAction">-    <property name="sensitive">False</property>-  </object>-  <object class="GtkAction" id="TreeViewPopupReplaceAction"/>-  <object class="GtkAction" id="TreeViewPopupSearchAction"/>-  <object class="GtkAction" id="TreeViewPopupStartupAction"/>+  <requires lib="gtk+" version="3.0"/>   <object class="GtkLabel" id="BindingsCol1Label">     <property name="visible">True</property>     <property name="can_focus">False</property>@@ -69,6 +59,299 @@     </attributes>   </object>   <object class="GtkTextTagTable" id="CodeTextTagTable"/>+  <object class="GtkDialog" id="ReplaceDialog">+    <property name="can_focus">False</property>+    <property name="border_width">5</property>+    <property name="window_position">center-always</property>+    <property name="icon">h.ico</property>+    <property name="type_hint">dialog</property>+    <child internal-child="vbox">+      <object class="GtkBox" id="ReplaceDialogBox">+        <property name="can_focus">False</property>+        <property name="orientation">vertical</property>+        <property name="spacing">2</property>+        <child internal-child="action_area">+          <object class="GtkButtonBox" id="ReplaceDialogActionArea">+            <property name="can_focus">False</property>+            <property name="layout_style">end</property>+            <child>+              <object class="GtkButton" id="ReplaceDialogReplaceBT">+                <property name="label">gtk-find-and-replace</property>+                <property name="visible">True</property>+                <property name="can_focus">True</property>+                <property name="receives_default">True</property>+                <property name="use_stock">True</property>+              </object>+              <packing>+                <property name="expand">False</property>+                <property name="fill">True</property>+                <property name="position">0</property>+              </packing>+            </child>+            <child>+              <object class="GtkButton" id="ReplaceDialogCancelBT">+                <property name="label">gtk-cancel</property>+                <property name="visible">True</property>+                <property name="can_focus">True</property>+                <property name="receives_default">True</property>+                <property name="use_stock">True</property>+              </object>+              <packing>+                <property name="expand">False</property>+                <property name="fill">True</property>+                <property name="position">1</property>+              </packing>+            </child>+          </object>+          <packing>+            <property name="expand">False</property>+            <property name="fill">True</property>+            <property name="pack_type">end</property>+            <property name="position">1</property>+          </packing>+        </child>+        <child>+          <object class="GtkLabel" id="ReplaceDialogLabel">+            <property name="visible">True</property>+            <property name="can_focus">False</property>+            <property name="halign">start</property>+            <property name="label" translatable="yes">Input replacement</property>+            <attributes>+              <attribute name="font-desc" value="MS Gothic 10"/>+            </attributes>+          </object>+          <packing>+            <property name="expand">False</property>+            <property name="fill">True</property>+            <property name="position">0</property>+          </packing>+        </child>+        <child>+          <object class="GtkGrid" id="grid1">+            <property name="visible">True</property>+            <property name="can_focus">False</property>+            <property name="row_homogeneous">True</property>+            <child>+              <object class="GtkLabel" id="ReplaceDialogSearchKeyLabel">+                <property name="visible">True</property>+                <property name="can_focus">False</property>+                <property name="label" translatable="yes">Search</property>+                <attributes>+                  <attribute name="font-desc" value="MS Gothic 10"/>+                </attributes>+              </object>+              <packing>+                <property name="left_attach">0</property>+                <property name="top_attach">0</property>+              </packing>+            </child>+            <child>+              <object class="GtkLabel" id="ReplaceDialogReplaceLabel">+                <property name="visible">True</property>+                <property name="can_focus">False</property>+                <property name="label" translatable="yes">Replace</property>+                <attributes>+                  <attribute name="font-desc" value="MS Gothic 10"/>+                </attributes>+              </object>+              <packing>+                <property name="left_attach">0</property>+                <property name="top_attach">1</property>+              </packing>+            </child>+            <child>+              <object class="GtkEntry" id="ReplaceDialogReplaceEntry">+                <property name="visible">True</property>+                <property name="can_focus">True</property>+                <property name="invisible_char">●</property>+              </object>+              <packing>+                <property name="left_attach">1</property>+                <property name="top_attach">1</property>+              </packing>+            </child>+            <child>+              <object class="GtkEntry" id="ReplaceDialogSearchEntry">+                <property name="visible">True</property>+                <property name="can_focus">True</property>+                <property name="invisible_char">●</property>+              </object>+              <packing>+                <property name="left_attach">1</property>+                <property name="top_attach">0</property>+              </packing>+            </child>+          </object>+          <packing>+            <property name="expand">True</property>+            <property name="fill">True</property>+            <property name="padding">2</property>+            <property name="position">2</property>+          </packing>+        </child>+      </object>+    </child>+    <action-widgets>+      <action-widget response="0">ReplaceDialogReplaceBT</action-widget>+      <action-widget response="1">ReplaceDialogCancelBT</action-widget>+    </action-widgets>+  </object>+  <object class="GtkDialog" id="SearchDialog">+    <property name="can_focus">False</property>+    <property name="border_width">5</property>+    <property name="window_position">center-always</property>+    <property name="icon">h.ico</property>+    <property name="type_hint">dialog</property>+    <child internal-child="vbox">+      <object class="GtkBox" id="SearchDialogBox">+        <property name="can_focus">False</property>+        <property name="orientation">vertical</property>+        <property name="spacing">2</property>+        <child internal-child="action_area">+          <object class="GtkButtonBox" id="SearchDialogActionArea">+            <property name="can_focus">False</property>+            <property name="layout_style">end</property>+            <child>+              <object class="GtkButton" id="SearchDialogSearchBT">+                <property name="label">gtk-find</property>+                <property name="visible">True</property>+                <property name="can_focus">True</property>+                <property name="can_default">True</property>+                <property name="has_default">True</property>+                <property name="receives_default">True</property>+                <property name="use_stock">True</property>+              </object>+              <packing>+                <property name="expand">False</property>+                <property name="fill">True</property>+                <property name="position">0</property>+              </packing>+            </child>+            <child>+              <object class="GtkButton" id="SearchDialogCancelBT">+                <property name="label">gtk-cancel</property>+                <property name="visible">True</property>+                <property name="can_focus">True</property>+                <property name="receives_default">True</property>+                <property name="use_stock">True</property>+              </object>+              <packing>+                <property name="expand">False</property>+                <property name="fill">True</property>+                <property name="position">1</property>+              </packing>+            </child>+          </object>+          <packing>+            <property name="expand">False</property>+            <property name="fill">True</property>+            <property name="pack_type">end</property>+            <property name="position">0</property>+          </packing>+        </child>+        <child>+          <object class="GtkLabel" id="SearchDialogLabel">+            <property name="visible">True</property>+            <property name="can_focus">False</property>+            <property name="halign">start</property>+            <property name="label" translatable="yes">Input keyword</property>+            <attributes>+              <attribute name="font-desc" value="MS Gothic 10"/>+            </attributes>+          </object>+          <packing>+            <property name="expand">False</property>+            <property name="fill">True</property>+            <property name="position">0</property>+          </packing>+        </child>+        <child>+          <object class="GtkEntry" id="SearchDialogEntry">+            <property name="visible">True</property>+            <property name="can_focus">True</property>+            <property name="invisible_char">●</property>+            <property name="activates_default">True</property>+          </object>+          <packing>+            <property name="expand">False</property>+            <property name="fill">True</property>+            <property name="position">2</property>+          </packing>+        </child>+      </object>+    </child>+    <action-widgets>+      <action-widget response="0">SearchDialogSearchBT</action-widget>+      <action-widget response="1">SearchDialogCancelBT</action-widget>+    </action-widgets>+  </object>+  <object class="GtkLabel" id="SearchResultCol1Label">+    <property name="visible">True</property>+    <property name="can_focus">False</property>+    <property name="label" translatable="yes">FilePath</property>+    <attributes>+      <attribute name="font-desc" value="MS Gothic 8"/>+    </attributes>+  </object>+  <object class="GtkLabel" id="SearchResultCol2Label">+    <property name="visible">True</property>+    <property name="can_focus">False</property>+    <property name="tooltip_text" translatable="yes">Line No</property>+    <property name="label" translatable="yes">L</property>+    <attributes>+      <attribute name="font-desc" value="MS Gothic 8"/>+    </attributes>+  </object>+  <object class="GtkLabel" id="SearchResultCol3Label">+    <property name="visible">True</property>+    <property name="can_focus">False</property>+    <property name="tooltip_text" translatable="yes">Start Col No</property>+    <property name="label" translatable="yes">SC</property>+    <attributes>+      <attribute name="font-desc" value="MS Gothic 8"/>+    </attributes>+  </object>+  <object class="GtkLabel" id="SearchResultCol4Label">+    <property name="visible">True</property>+    <property name="can_focus">False</property>+    <property name="tooltip_text" translatable="yes">End Col No</property>+    <property name="label" translatable="yes">EC</property>+    <attributes>+      <attribute name="font-desc" value="MS Gothic 8"/>+    </attributes>+  </object>+  <object class="GtkLabel" id="SearchResultCol5Label">+    <property name="visible">True</property>+    <property name="can_focus">False</property>+    <property name="label" translatable="yes">Line</property>+    <attributes>+      <attribute name="font-desc" value="MS Gothic 8"/>+    </attributes>+  </object>+  <object class="GtkLabel" id="TraceCol1Label">+    <property name="visible">True</property>+    <property name="can_focus">False</property>+    <property name="label" translatable="yes">TraceId</property>+    <attributes>+      <attribute name="font-desc" value="MS Gothic 8"/>+    </attributes>+  </object>+  <object class="GtkLabel" id="TraceCol2Label">+    <property name="visible">True</property>+    <property name="can_focus">False</property>+    <property name="label" translatable="yes">Function</property>+    <attributes>+      <attribute name="font-desc" value="MS Gothic 8"/>+    </attributes>+  </object>+  <object class="GtkLabel" id="TraceCol3Label">+    <property name="visible">True</property>+    <property name="can_focus">False</property>+    <property name="label" translatable="yes">FilePath</property>+    <attributes>+      <attribute name="font-desc" value="MS Gothic 8"/>+    </attributes>+  </object>   <object class="GtkWindow" id="MainWindow">     <property name="can_focus">False</property>     <property name="title" translatable="yes">Phoityne</property>@@ -168,7 +451,7 @@                 <property name="can_focus">False</property>                 <property name="tooltip_text" translatable="yes">Save All(Ctrl+s)</property>                 <property name="is_important">True</property>-                <property name="label" translatable="yes">toolbutton1</property>+                <property name="label" translatable="yes">SaveLabel</property>                 <property name="use_underline">True</property>                 <property name="stock_id">gtk-save</property>               </object>@@ -204,6 +487,36 @@               </packing>             </child>             <child>+              <object class="GtkToolButton" id="StartGHCiBT">+                <property name="visible">True</property>+                <property name="can_focus">False</property>+                <property name="tooltip_text" translatable="yes">Start GHCi</property>+                <property name="is_important">True</property>+                <property name="label" translatable="yes">StartGHCiLabel</property>+                <property name="use_underline">True</property>+                <property name="stock_id">gtk-connect</property>+              </object>+              <packing>+                <property name="expand">False</property>+                <property name="homogeneous">True</property>+              </packing>+            </child>+            <child>+              <object class="GtkToolButton" id="StopGHCiBT">+                <property name="visible">True</property>+                <property name="can_focus">False</property>+                <property name="tooltip_text" translatable="yes">Stop GHCi</property>+                <property name="is_important">True</property>+                <property name="label" translatable="yes">StopGHCiLabel</property>+                <property name="use_underline">True</property>+                <property name="stock_id">gtk-disconnect</property>+              </object>+              <packing>+                <property name="expand">False</property>+                <property name="homogeneous">True</property>+              </packing>+            </child>+            <child>               <object class="GtkSeparatorToolItem" id="Separator3">                 <property name="visible">True</property>                 <property name="can_focus">False</property>@@ -894,40 +1207,24 @@       </object>     </child>   </object>-  <object class="GtkDialog" id="ReplaceDialog">+  <object class="GtkDialog" id="TreeFolderCreateFolderDialog">     <property name="can_focus">False</property>     <property name="border_width">5</property>     <property name="window_position">center-always</property>     <property name="icon">h.ico</property>     <property name="type_hint">dialog</property>     <child internal-child="vbox">-      <object class="GtkBox" id="ReplaceDialogBox">+      <object class="GtkBox" id="TreeFolderCreateFolderVBox">         <property name="can_focus">False</property>         <property name="orientation">vertical</property>         <property name="spacing">2</property>-        <child>-          <object class="GtkLabel" id="ReplaceDialogLabel">-            <property name="visible">True</property>-            <property name="can_focus">False</property>-            <property name="halign">start</property>-            <property name="label" translatable="yes">Input replacement</property>-            <attributes>-              <attribute name="font-desc" value="MS Gothic 10"/>-            </attributes>-          </object>-          <packing>-            <property name="expand">False</property>-            <property name="fill">True</property>-            <property name="position">0</property>-          </packing>-        </child>         <child internal-child="action_area">-          <object class="GtkButtonBox" id="ReplaceDialogActionArea">+          <object class="GtkButtonBox" id="TreeFolderCreateFolderActionArea">             <property name="can_focus">False</property>             <property name="layout_style">end</property>             <child>-              <object class="GtkButton" id="ReplaceDialogReplaceBT">-                <property name="label">gtk-find-and-replace</property>+              <object class="GtkButton" id="TreeFolderCreateFolderOkBT">+                <property name="label">gtk-ok</property>                 <property name="visible">True</property>                 <property name="can_focus">True</property>                 <property name="receives_default">True</property>@@ -940,7 +1237,7 @@               </packing>             </child>             <child>-              <object class="GtkButton" id="ReplaceDialogCancelBT">+              <object class="GtkButton" id="TreeFolderCreateFolderCancelBT">                 <property name="label">gtk-cancel</property>                 <property name="visible">True</property>                 <property name="can_focus">True</property>@@ -958,257 +1255,10 @@             <property name="expand">False</property>             <property name="fill">True</property>             <property name="pack_type">end</property>-            <property name="position">1</property>-          </packing>-        </child>-        <child>-          <object class="GtkGrid" id="grid1">-            <property name="visible">True</property>-            <property name="can_focus">False</property>-            <property name="row_homogeneous">True</property>-            <child>-              <object class="GtkLabel" id="ReplaceDialogSearchKeyLabel">-                <property name="visible">True</property>-                <property name="can_focus">False</property>-                <property name="label" translatable="yes">Search</property>-                <attributes>-                  <attribute name="font-desc" value="MS Gothic 10"/>-                </attributes>-              </object>-              <packing>-                <property name="left_attach">0</property>-                <property name="top_attach">0</property>-                <property name="width">1</property>-                <property name="height">1</property>-              </packing>-            </child>-            <child>-              <object class="GtkLabel" id="ReplaceDialogReplaceLabel">-                <property name="visible">True</property>-                <property name="can_focus">False</property>-                <property name="label" translatable="yes">Replace</property>-                <attributes>-                  <attribute name="font-desc" value="MS Gothic 10"/>-                </attributes>-              </object>-              <packing>-                <property name="left_attach">0</property>-                <property name="top_attach">1</property>-                <property name="width">1</property>-                <property name="height">1</property>-              </packing>-            </child>-            <child>-              <object class="GtkEntry" id="ReplaceDialogReplaceEntry">-                <property name="visible">True</property>-                <property name="can_focus">True</property>-                <property name="invisible_char">●</property>-                <property name="invisible_char_set">True</property>-              </object>-              <packing>-                <property name="left_attach">1</property>-                <property name="top_attach">1</property>-                <property name="width">1</property>-                <property name="height">1</property>-              </packing>-            </child>-            <child>-              <object class="GtkEntry" id="ReplaceDialogSearchEntry">-                <property name="visible">True</property>-                <property name="can_focus">True</property>-                <property name="invisible_char">●</property>-                <property name="invisible_char_set">True</property>-              </object>-              <packing>-                <property name="left_attach">1</property>-                <property name="top_attach">0</property>-                <property name="width">1</property>-                <property name="height">1</property>-              </packing>-            </child>-          </object>-          <packing>-            <property name="expand">True</property>-            <property name="fill">True</property>-            <property name="padding">2</property>             <property name="position">2</property>           </packing>         </child>-      </object>-    </child>-    <action-widgets>-      <action-widget response="0">ReplaceDialogReplaceBT</action-widget>-      <action-widget response="1">ReplaceDialogCancelBT</action-widget>-    </action-widgets>-  </object>-  <object class="GtkDialog" id="SearchDialog">-    <property name="can_focus">False</property>-    <property name="border_width">5</property>-    <property name="window_position">center-always</property>-    <property name="icon">h.ico</property>-    <property name="type_hint">dialog</property>-    <child internal-child="vbox">-      <object class="GtkBox" id="SearchDialogBox">-        <property name="can_focus">False</property>-        <property name="orientation">vertical</property>-        <property name="spacing">2</property>         <child>-          <object class="GtkLabel" id="SearchDialogLabel">-            <property name="visible">True</property>-            <property name="can_focus">False</property>-            <property name="halign">start</property>-            <property name="label" translatable="yes">Input keyword</property>-            <attributes>-              <attribute name="font-desc" value="MS Gothic 10"/>-            </attributes>-          </object>-          <packing>-            <property name="expand">False</property>-            <property name="fill">True</property>-            <property name="position">0</property>-          </packing>-        </child>-        <child internal-child="action_area">-          <object class="GtkButtonBox" id="SearchDialogActionArea">-            <property name="can_focus">False</property>-            <property name="layout_style">end</property>-            <child>-              <object class="GtkButton" id="SearchDialogSearchBT">-                <property name="label">gtk-find</property>-                <property name="visible">True</property>-                <property name="can_focus">True</property>-                <property name="can_default">True</property>-                <property name="has_default">True</property>-                <property name="receives_default">True</property>-                <property name="use_stock">True</property>-              </object>-              <packing>-                <property name="expand">False</property>-                <property name="fill">True</property>-                <property name="position">0</property>-              </packing>-            </child>-            <child>-              <object class="GtkButton" id="SearchDialogCancelBT">-                <property name="label">gtk-cancel</property>-                <property name="visible">True</property>-                <property name="can_focus">True</property>-                <property name="receives_default">True</property>-                <property name="use_stock">True</property>-              </object>-              <packing>-                <property name="expand">False</property>-                <property name="fill">True</property>-                <property name="position">1</property>-              </packing>-            </child>-          </object>-          <packing>-            <property name="expand">False</property>-            <property name="fill">True</property>-            <property name="pack_type">end</property>-            <property name="position">0</property>-          </packing>-        </child>-        <child>-          <object class="GtkEntry" id="SearchDialogEntry">-            <property name="visible">True</property>-            <property name="can_focus">True</property>-            <property name="invisible_char">●</property>-            <property name="activates_default">True</property>-          </object>-          <packing>-            <property name="expand">False</property>-            <property name="fill">True</property>-            <property name="position">2</property>-          </packing>-        </child>-      </object>-    </child>-    <action-widgets>-      <action-widget response="0">SearchDialogSearchBT</action-widget>-      <action-widget response="1">SearchDialogCancelBT</action-widget>-    </action-widgets>-  </object>-  <object class="GtkLabel" id="SearchResultCol1Label">-    <property name="visible">True</property>-    <property name="can_focus">False</property>-    <property name="label" translatable="yes">FilePath</property>-    <attributes>-      <attribute name="font-desc" value="MS Gothic 8"/>-    </attributes>-  </object>-  <object class="GtkLabel" id="SearchResultCol2Label">-    <property name="visible">True</property>-    <property name="can_focus">False</property>-    <property name="tooltip_text" translatable="yes">Line No</property>-    <property name="label" translatable="yes">L</property>-    <attributes>-      <attribute name="font-desc" value="MS Gothic 8"/>-    </attributes>-  </object>-  <object class="GtkLabel" id="SearchResultCol3Label">-    <property name="visible">True</property>-    <property name="can_focus">False</property>-    <property name="tooltip_text" translatable="yes">Start Col No</property>-    <property name="label" translatable="yes">SC</property>-    <attributes>-      <attribute name="font-desc" value="MS Gothic 8"/>-    </attributes>-  </object>-  <object class="GtkLabel" id="SearchResultCol4Label">-    <property name="visible">True</property>-    <property name="can_focus">False</property>-    <property name="tooltip_text" translatable="yes">End Col No</property>-    <property name="label" translatable="yes">EC</property>-    <attributes>-      <attribute name="font-desc" value="MS Gothic 8"/>-    </attributes>-  </object>-  <object class="GtkLabel" id="SearchResultCol5Label">-    <property name="visible">True</property>-    <property name="can_focus">False</property>-    <property name="label" translatable="yes">Line</property>-    <attributes>-      <attribute name="font-desc" value="MS Gothic 8"/>-    </attributes>-  </object>-  <object class="GtkLabel" id="TraceCol1Label">-    <property name="visible">True</property>-    <property name="can_focus">False</property>-    <property name="label" translatable="yes">TraceId</property>-    <attributes>-      <attribute name="font-desc" value="MS Gothic 8"/>-    </attributes>-  </object>-  <object class="GtkLabel" id="TraceCol2Label">-    <property name="visible">True</property>-    <property name="can_focus">False</property>-    <property name="label" translatable="yes">Function</property>-    <attributes>-      <attribute name="font-desc" value="MS Gothic 8"/>-    </attributes>-  </object>-  <object class="GtkLabel" id="TraceCol3Label">-    <property name="visible">True</property>-    <property name="can_focus">False</property>-    <property name="label" translatable="yes">FilePath</property>-    <attributes>-      <attribute name="font-desc" value="MS Gothic 8"/>-    </attributes>-  </object>-  <object class="GtkDialog" id="TreeFolderCreateFolderDialog">-    <property name="can_focus">False</property>-    <property name="border_width">5</property>-    <property name="window_position">center-always</property>-    <property name="icon">h.ico</property>-    <property name="type_hint">dialog</property>-    <child internal-child="vbox">-      <object class="GtkBox" id="TreeFolderCreateFolderVBox">-        <property name="can_focus">False</property>-        <property name="orientation">vertical</property>-        <property name="spacing">2</property>-        <child>           <object class="GtkLabel" id="TreeFolderCreateFolderLabel">             <property name="visible">True</property>             <property name="can_focus">False</property>@@ -1236,46 +1286,6 @@             <property name="position">1</property>           </packing>         </child>-        <child internal-child="action_area">-          <object class="GtkButtonBox" id="TreeFolderCreateFolderActionArea">-            <property name="can_focus">False</property>-            <property name="layout_style">end</property>-            <child>-              <object class="GtkButton" id="TreeFolderCreateFolderOkBT">-                <property name="label">gtk-ok</property>-                <property name="visible">True</property>-                <property name="can_focus">True</property>-                <property name="receives_default">True</property>-                <property name="use_stock">True</property>-              </object>-              <packing>-                <property name="expand">False</property>-                <property name="fill">True</property>-                <property name="position">0</property>-              </packing>-            </child>-            <child>-              <object class="GtkButton" id="TreeFolderCreateFolderCancelBT">-                <property name="label">gtk-cancel</property>-                <property name="visible">True</property>-                <property name="can_focus">True</property>-                <property name="receives_default">True</property>-                <property name="use_stock">True</property>-              </object>-              <packing>-                <property name="expand">False</property>-                <property name="fill">True</property>-                <property name="position">1</property>-              </packing>-            </child>-          </object>-          <packing>-            <property name="expand">False</property>-            <property name="fill">True</property>-            <property name="pack_type">end</property>-            <property name="position">2</property>-          </packing>-        </child>       </object>     </child>     <action-widgets>@@ -1283,6 +1293,17 @@       <action-widget response="1">TreeFolderCreateFolderCancelBT</action-widget>     </action-widgets>   </object>+  <object class="GtkAction" id="TreeViewPopupCreateFileAction"/>+  <object class="GtkAction" id="TreeViewPopupCreateFolderAction"/>+  <object class="GtkAction" id="TreeViewPopupDeleteAction">+    <property name="sensitive">False</property>+  </object>+  <object class="GtkAction" id="TreeViewPopupRenameAction">+    <property name="sensitive">False</property>+  </object>+  <object class="GtkAction" id="TreeViewPopupReplaceAction"/>+  <object class="GtkAction" id="TreeViewPopupSearchAction"/>+  <object class="GtkAction" id="TreeViewPopupStartupAction"/>   <object class="GtkMenu" id="TreeViewPopupMenu">     <property name="visible">True</property>     <property name="can_focus">False</property>
phoityne.cabal view
@@ -1,5 +1,5 @@ name:                phoityne-version:             0.0.1.1+version:             0.0.2.0 synopsis:            ghci debug viewer with simple editor. description:         Phoityne is a ghci debug viewer with simple editor.
 license:             BSD3