moffy-samples 0.1.0.2 → 0.1.0.3
raw patch · 2 files changed
+29/−32 lines, 2 files
Files
moffy-samples.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: moffy-samples-version: 0.1.0.2+version: 0.1.0.3 synopsis: Samples of moffy description: Please see the README on GitHub at <https://github.com/YoshikuniJujo/moffy-samples#readme> category: Control
src/Control/Moffy/Samples/FollowboxOrigin.hs view
@@ -10,31 +10,27 @@ followbox ) where import Prelude hiding (break, repeat, scanl)- import Control.Arrow ((>>>)) import Control.Monad (void, forever, (<=<))-import Control.Moffy (React, adjust, emit, waitFor, break, indexBy, find, repeat, scanl)-import Control.Moffy.Event.Lock (newLockId, withLock)-import Control.Moffy.Samples.Event.Random (getRandomR)-import Control.Moffy.Samples.Event.Delete (deleteEvent)-import Control.Moffy.Samples.Viewable.Basic (Position, Color(..), LineWidth)-import Control.Moffy.Samples.Followbox.Event (- SigF, ReactF,- httpGet, getTimeZone, beginSleep, checkBeginSleep, endSleep,- Error(..), raiseError, checkTerminate )-import Control.Moffy.Samples.Followbox.Clickable (- view, click, clickableText, withTextExtents, FontName, FontSize )-import Control.Moffy.Samples.Followbox.ViewType (- View(..), white, Png(..), VText(..), Line(..), Image(..) )+import Control.Moffy+import Control.Moffy.Event.Lock+import Control.Moffy.Samples.Event.Random+import Control.Moffy.Samples.Event.Delete+import Control.Moffy.Samples.Event.Mouse qualified as Mouse+import Control.Moffy.Samples.Event.Area+import Control.Moffy.Samples.Viewable.Basic+import Control.Moffy.Samples.Followbox.Event+import Control.Moffy.Samples.Followbox.Clickable+import Control.Moffy.Samples.Followbox.ViewType import Control.Moffy.Samples.Followbox.TypeSynonym (ErrorMessage) import Data.Type.Set import Data.Type.Flip ((<$%>), (<*%>)) import Data.OneOfThem-import Data.HashMap.Strict qualified as HM import Data.Hashable+import Data.HashMap.Strict qualified as HM import Data.Bool-import Data.ByteString.Char8 qualified as BSC import Data.ByteString.Lazy qualified as LBS+import Data.ByteString.Char8 qualified as BSC import Data.Text qualified as T import Data.Time (utcToLocalTime, UTCTime) import Data.Time.Clock.POSIX (posixSecondsToUTCTime)@@ -43,9 +39,6 @@ import Text.Read (readMaybe) import Codec.Picture qualified as P -import Control.Moffy.Samples.Event.Mouse qualified as Mouse-import Control.Moffy.Samples.Event.Area- --------------------------------------------------------------------------- -- * PARAMETER LIST@@ -129,20 +122,11 @@ rfs <- waitFor $ link refreshPos "Refresh" lck <- waitFor $ adjust newLockId let frame = title <> view rfs- refresh = forever do- emit Nothing- us <- Just . Left <$%> users- emit . Just $ Right us- waitFor . adjust $ click rfs- close i = forever do- emit =<< waitFor (withLock lck- (adjust $ getRandomR (0, 29) :: ReactF s Int))- waitFor . clickArea $ crossArea i emit frame (frame <>) <$%> ((\a b c -> a <> b <> c)- <$%> (chooseUser 0 <$%> refresh <*%> close 0)- <*%> (chooseUser 1 <$%> refresh <*%> close 1)- <*%> (chooseUser 2 <$%> refresh <*%> close 2))+ <$%> (chooseUser 0 <$%> refresh rfs <*%> close lck 0)+ <*%> (chooseUser 1 <$%> refresh rfs <*%> close lck 1)+ <*%> (chooseUser 2 <$%> refresh rfs <*%> close lck 2)) where title = text white largeSize titlePos "Who to follow" link p t = clickableText p@@ -152,6 +136,19 @@ chooseUser _ (Just (Left i)) _ = bar $ fromIntegral i chooseUser n (Just (Right us)) i = userView n (us !! (i `mod` length us)) chooseUser _ Nothing _ = View []++refresh :: Clickable s -> SigF s (Maybe (Either Int [(Png, T.Text)])) ()+refresh rfs = forever do+ emit Nothing+ us <- Just . Left <$%> users+ emit . Just $ Right us+ waitFor . adjust $ click rfs++close :: LockId -> Int -> SigF s Int ()+close lck i = forever do+ emit =<< waitFor+ (withLock lck (adjust $ getRandomR (0, 29) :: ReactF s Int))+ waitFor . clickArea $ crossArea i resetTime :: SigF s View () resetTime = forever do