module TitleShellF where
import AllFudgets

titleShellF :: [Char] -> F c d -> F (Either [Char] c) d
titleShellF = (ShellF -> ShellF) -> [Char] -> F c d -> F (Either [Char] c) d
forall c d.
(ShellF -> ShellF) -> [Char] -> F c d -> F (Either [Char] c) d
titleShellF' ShellF -> ShellF
forall a. Customiser a
standard

--titleShellF' :: Customiser ShellF -> String -> F (Either () i) (Either String o) -> F i o

titleShellF' :: (ShellF -> ShellF) -> [Char] -> F c d -> F (Either [Char] c) d
titleShellF' ShellF -> ShellF
pm [Char]
title F c d
fud =
    SP (Either () d) d
forall a1 b. SP (Either a1 b) b
filterRightSP SP (Either () d) d
-> F (Either (Either [Char] Bool) c) (Either () d)
-> F (Either (Either [Char] Bool) c) d
forall a b e. SP a b -> F e a -> F e b
>^^=< (ShellF -> ShellF)
-> [Char]
-> F c d
-> F (Either (Either [Char] Bool) c) (Either () d)
forall c d.
(ShellF -> ShellF)
-> [Char]
-> F c d
-> F (Either (Either [Char] Bool) c) (Either () d)
wmShellF' ShellF -> ShellF
pm' [Char]
title F c d
fud F (Either (Either [Char] Bool) c) d
-> (Either [Char] c -> Either (Either [Char] Bool) c)
-> F (Either [Char] c) d
forall c d e. F c d -> (e -> c) -> F e d
>=^< ([Char] -> Either [Char] Bool)
-> (c -> c) -> Either [Char] c -> Either (Either [Char] Bool) c
forall t1 a t2 b.
(t1 -> a) -> (t2 -> b) -> Either t1 t2 -> Either a b
mapEither [Char] -> Either [Char] Bool
forall a b. a -> Either a b
Left c -> c
forall a. Customiser a
id
  where
    pm' :: ShellF -> ShellF
pm' = ShellF -> ShellF
pm (ShellF -> ShellF) -> (ShellF -> ShellF) -> ShellF -> ShellF
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Maybe DeleteWindowAction -> ShellF -> ShellF
setDeleteWindowAction (DeleteWindowAction -> Maybe DeleteWindowAction
forall a. a -> Maybe a
Just DeleteWindowAction
DeleteQuit)

wmShellF :: [Char] -> F c d -> F (Either (Either [Char] Bool) c) (Either () d)
wmShellF = (ShellF -> ShellF)
-> [Char]
-> F c d
-> F (Either (Either [Char] Bool) c) (Either () d)
forall c d.
(ShellF -> ShellF)
-> [Char]
-> F c d
-> F (Either (Either [Char] Bool) c) (Either () d)
wmShellF' ShellF -> ShellF
forall a. Customiser a
standard

wmShellF' :: (ShellF -> ShellF)
-> [Char]
-> F c d
-> F (Either (Either [Char] Bool) c) (Either () d)
wmShellF' ShellF -> ShellF
pm0 [Char]
title F c d
fud =
    (ShellF -> ShellF)
-> K (Either [Char] Bool) ()
-> F c d
-> F (Either (Either [Char] Bool) c) (Either () d)
forall a b c d.
(ShellF -> ShellF) -> K a b -> F c d -> F (Either a c) (Either b d)
shellKF' ShellF -> ShellF
pm K (Either [Char] Bool) ()
titleK0 F c d
fud
  where pm :: ShellF -> ShellF
pm = Maybe DeleteWindowAction -> ShellF -> ShellF
setDeleteWindowAction Maybe DeleteWindowAction
forall a. Maybe a
Nothing (ShellF -> ShellF) -> (ShellF -> ShellF) -> ShellF -> ShellF
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShellF -> ShellF
pm0
	action :: Maybe (K hi () -> K hi ())
action = Maybe (K hi () -> K hi ())
-> (Maybe DeleteWindowAction -> Maybe (K hi () -> K hi ()))
-> Maybe (Maybe DeleteWindowAction)
-> Maybe (K hi () -> K hi ())
forall b a. b -> (a -> b) -> Maybe a -> b
maybe ((K hi () -> K hi ()) -> Maybe (K hi () -> K hi ())
forall a. a -> Maybe a
Just K hi () -> K hi ()
forall hi. K hi () -> K hi ()
reportK)
	               ((DeleteWindowAction -> K hi () -> K hi ())
-> Maybe DeleteWindowAction -> Maybe (K hi () -> K hi ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DeleteWindowAction -> K hi () -> K hi ()
forall b ho. DeleteWindowAction -> K b ho -> K b ho
action')
		       ((ShellF -> ShellF) -> Maybe (Maybe DeleteWindowAction)
getDeleteWindowActionMaybe' ShellF -> ShellF
pm0)
	  where
	    action' :: DeleteWindowAction -> K b ho -> K b ho
action' DeleteWindowAction
DeleteQuit = K b ho -> K b ho
forall p b ho. p -> K b ho
exitK
	    action' DeleteWindowAction
DeleteUnmap = K b ho -> K b ho
forall i o. K i o -> K i o
unmapWindowK

        titleK0 :: K (Either [Char] Bool) ()
titleK0 = [KEvent (Either [Char] Bool)]
-> K (Either [Char] Bool) () -> K (Either [Char] Bool) ()
forall hi ho. [KEvent hi] -> K hi ho -> K hi ho
startupK [Either [Char] Bool -> KEvent (Either [Char] Bool)
forall a b. b -> Message a b
High ([Char] -> Either [Char] Bool
forall a b. a -> Either a b
Left [Char]
title)] K (Either [Char] Bool) ()
titleK
        titleK :: K (Either [Char] Bool) ()
titleK = Maybe (K (Either [Char] Bool) () -> K (Either [Char] Bool) ())
-> K (Either [Char] Bool) ()
forall c.
Maybe (K (Either [Char] Bool) c -> K (Either [Char] Bool) c)
-> K (Either [Char] Bool) c
wmK Maybe (K (Either [Char] Bool) () -> K (Either [Char] Bool) ())
forall hi. Maybe (K hi () -> K hi ())
action