packages feed

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