gluturtle 0.0.13 → 0.0.14
raw patch · 5 files changed
+26/−9 lines, 5 files
Files
- gluturtle.cabal +1/−1
- src/Graphics/UI/GLUT/Turtle.hs +4/−2
- src/Graphics/UI/GLUT/Turtle/Field.hs +16/−4
- src/Graphics/UI/GLUT/Turtle/Move.hs +4/−2
- tests/testGLUT.hs +1/−0
gluturtle.cabal view
@@ -2,7 +2,7 @@ cabal-version: >= 1.6 name: gluturtle-version: 0.0.13+version: 0.0.14 stability: alpha author: Yoshikuni Jujo <PAF01143@nifty.ne.jp> maintainer: Yoshikuni Jujo <PAF01143@nifty.ne.jp>
src/Graphics/UI/GLUT/Turtle.hs view
@@ -93,7 +93,9 @@ windowWidth, windowHeight, - outputString+ outputString,++ prompt ) where import Graphics.UI.GLUT.Turtle.Data(shapeTable, speedTable)@@ -101,7 +103,7 @@ TurtleState, direction, visible, undonum, drawed, polyPoints) import qualified Graphics.UI.GLUT.Turtle.State as S(position, degrees, pendown) import Graphics.UI.GLUT.Turtle.Input(TurtleInput(..), turtleSeries)-import Graphics.UI.GLUT.Turtle.Move(+import Graphics.UI.GLUT.Turtle.Move(prompt, Field, Coordinates(..), openField, closeField, waitField, topleft, center, coordinates, fieldSize, forkField, flushField, addLayer, clearLayer, addCharacter, clearCharacter, moveTurtle,
src/Graphics/UI/GLUT/Turtle/Field.hs view
@@ -48,7 +48,9 @@ ontimer, addLayer,- addCharacter+ addCharacter,++ prompt ) where import Control.Monad@@ -76,6 +78,10 @@ -------------------------------------------------------------------------------- +prompt f p = do+ writeIORef (fPrompt f) p+ atomicModifyIORef_ (fString f) (\ls -> init ls ++ [p ++ last ls])+ data Coordinates = CoordTopLeft | CoordCenter data Field = Field{@@ -95,6 +101,8 @@ fFieldWindow :: Window, fConsoleWindow :: Window, + fPrompt :: IORef String,+ fLayers :: IORef Layers } @@ -117,6 +125,8 @@ str2 <- newIORef [] inputtext <- newIORef $ const $ return True + prmpt <- newIORef ""+ initialDisplayMode $= [RGBMode, DoubleBuffered] initialWindowSize $= Size (fromIntegral w) (fromIntegral h) wt <- createWindow name@@ -150,7 +160,8 @@ fHeight = h, fInputtext = inputtext, fFieldWindow = wt,- fConsoleWindow = wc+ fConsoleWindow = wc,+ fPrompt = prmpt } G.keyboardMouseCallback $= Just (keyboardProc f) return f@@ -345,10 +356,11 @@ keyboardProc :: Field -> G.Key -> G.KeyState -> G.Modifiers -> G.Position -> IO () keyboardProc f (G.Char '\r') G.Down _ _ = do+ p <- readIORef $ fPrompt f str <- readIORef (fString f) atomicModifyIORef_ (fString2 f) (reverse str ++)- writeIORef (fString f) [""]- continue <- ($ concat str) =<< readIORef (fInputtext f)+ writeIORef (fString f) [p]+ continue <- ($ drop (length p) $ concat str) =<< readIORef (fInputtext f) unless continue G.leaveMainLoop keyboardProc f (G.Char '\b') G.Down _ _ = atomicModifyIORef_ (fString f) $ \s -> case s of
src/Graphics/UI/GLUT/Turtle/Move.hs view
@@ -30,11 +30,13 @@ addLayer, addCharacter, - outputString+ outputString,++ prompt ) where import Graphics.UI.GLUT.Turtle.State(TurtleState(..), makeShape)-import Graphics.UI.GLUT.Turtle.Field(+import Graphics.UI.GLUT.Turtle.Field(prompt, Field, Layer, Character, Coordinates(..), openField, closeField, waitField, coordinates, topleft, center, fieldSize, forkField, flushField, clearLayer,
tests/testGLUT.hs view
@@ -9,6 +9,7 @@ rawArgs <- getArgs _args <- initialize prgName rawArgs f <- openField "test" 640 480+ prompt f "> " t <- newTurtle f oninputtext f (processInput f t) -- speed t "slowest"