{-# LINE 1 "lib/UI/NCurses/Panel.chs" #-}
{-# LANGUAGE ForeignFunctionInterface #-}
module UI.NCurses.Panel
( Panel
, newPanel
, deletePanel
, refreshPanels
, panelAbove
, panelBelow
, panelTop
, panelBottom
, showPanel
, hidePanel
, panelHidden
, movePanel
, raisePanel
, lowerPanel
, getPanelWindow
, replacePanelWindow
) where
import qualified Foreign.C.Types as C2HSImp
import qualified Foreign.Ptr as C2HSImp
import Control.Exception (throwIO)
import Foreign
import Foreign.C
import UI.NCurses (render)
import UI.NCurses.Types
{-# LINE 52 "lib/UI/NCurses/Panel.chs" #-}
{-# LINE 53 "lib/UI/NCurses/Panel.chs" #-}
newtype Panel = Panel { panelPtr :: Ptr Panel }
newPanel :: Window -> Curses Panel
newPanel :: Window -> Curses Panel
newPanel win :: Window
win = IO Panel -> Curses Panel
forall a. IO a -> Curses a
Curses (IO Panel -> Curses Panel) -> IO Panel -> Curses Panel
forall a b. (a -> b) -> a -> b
$ do
Panel
p <- Window -> IO Panel
new_panel Window
win
if Panel -> Ptr Panel
panelPtr Panel
p Ptr Panel -> Ptr Panel -> Bool
forall a. Eq a => a -> a -> Bool
== Ptr Panel
forall a. Ptr a
nullPtr
then CursesException -> IO Panel
forall e a. Exception e => e -> IO a
throwIO (String -> CursesException
CursesException "newPanel: new_panel() returned NULL")
else Panel -> IO Panel
forall (m :: * -> *) a. Monad m => a -> m a
return Panel
p
deletePanel :: Panel -> Curses ()
deletePanel :: Panel -> Curses ()
deletePanel p :: Panel
p = IO () -> Curses ()
forall a. IO a -> Curses a
Curses (Panel -> IO CInt
del_panel Panel
p IO CInt -> (CInt -> IO ()) -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= String -> CInt -> IO ()
checkRC "deletePanel")
refreshPanels :: Curses ()
refreshPanels :: Curses ()
refreshPanels = IO () -> Curses ()
forall a. IO a -> Curses a
Curses IO ()
update_panels
{-# LINE 71 "lib/UI/NCurses/Panel.chs" #-}
panelAbove :: Panel -> Curses (Maybe Panel)
panelAbove :: Panel -> Curses (Maybe Panel)
panelAbove p :: Panel
p = IO (Maybe Panel) -> Curses (Maybe Panel)
forall a. IO a -> Curses a
Curses (IO (Maybe Panel) -> Curses (Maybe Panel))
-> IO (Maybe Panel) -> Curses (Maybe Panel)
forall a b. (a -> b) -> a -> b
$ do
Panel
ptr <- Panel -> IO Panel
panel_above Panel
p
Maybe Panel -> IO (Maybe Panel)
forall (m :: * -> *) a. Monad m => a -> m a
return (Maybe Panel -> IO (Maybe Panel))
-> Maybe Panel -> IO (Maybe Panel)
forall a b. (a -> b) -> a -> b
$ if Panel -> Ptr Panel
panelPtr Panel
ptr Ptr Panel -> Ptr Panel -> Bool
forall a. Eq a => a -> a -> Bool
== Ptr Panel
forall a. Ptr a
nullPtr
then Maybe Panel
forall a. Maybe a
Nothing
else Panel -> Maybe Panel
forall a. a -> Maybe a
Just Panel
ptr
panelBelow :: Panel -> Curses (Maybe Panel)
panelBelow :: Panel -> Curses (Maybe Panel)
panelBelow p :: Panel
p = IO (Maybe Panel) -> Curses (Maybe Panel)
forall a. IO a -> Curses a
Curses (IO (Maybe Panel) -> Curses (Maybe Panel))
-> IO (Maybe Panel) -> Curses (Maybe Panel)
forall a b. (a -> b) -> a -> b
$ do
Panel
ptr <- Panel -> IO Panel
panel_below Panel
p
Maybe Panel -> IO (Maybe Panel)
forall (m :: * -> *) a. Monad m => a -> m a
return (Maybe Panel -> IO (Maybe Panel))
-> Maybe Panel -> IO (Maybe Panel)
forall a b. (a -> b) -> a -> b
$ if Panel -> Ptr Panel
panelPtr Panel
ptr Ptr Panel -> Ptr Panel -> Bool
forall a. Eq a => a -> a -> Bool
== Ptr Panel
forall a. Ptr a
nullPtr
then Maybe Panel
forall a. Maybe a
Nothing
else Panel -> Maybe Panel
forall a. a -> Maybe a
Just Panel
ptr
panelTop :: Curses (Maybe Panel)
panelTop :: Curses (Maybe Panel)
panelTop = IO (Maybe Panel) -> Curses (Maybe Panel)
forall a. IO a -> Curses a
Curses (IO (Maybe Panel) -> Curses (Maybe Panel))
-> IO (Maybe Panel) -> Curses (Maybe Panel)
forall a b. (a -> b) -> a -> b
$ do
Panel
ptr <- Panel -> IO Panel
panel_below (Ptr Panel -> Panel
Panel Ptr Panel
forall a. Ptr a
nullPtr)
Maybe Panel -> IO (Maybe Panel)
forall (m :: * -> *) a. Monad m => a -> m a
return (Maybe Panel -> IO (Maybe Panel))
-> Maybe Panel -> IO (Maybe Panel)
forall a b. (a -> b) -> a -> b
$ if Panel -> Ptr Panel
panelPtr Panel
ptr Ptr Panel -> Ptr Panel -> Bool
forall a. Eq a => a -> a -> Bool
== Ptr Panel
forall a. Ptr a
nullPtr
then Maybe Panel
forall a. Maybe a
Nothing
else Panel -> Maybe Panel
forall a. a -> Maybe a
Just Panel
ptr
panelBottom :: Curses (Maybe Panel)
panelBottom :: Curses (Maybe Panel)
panelBottom = IO (Maybe Panel) -> Curses (Maybe Panel)
forall a. IO a -> Curses a
Curses (IO (Maybe Panel) -> Curses (Maybe Panel))
-> IO (Maybe Panel) -> Curses (Maybe Panel)
forall a b. (a -> b) -> a -> b
$ do
Panel
ptr <- Panel -> IO Panel
panel_above (Ptr Panel -> Panel
Panel Ptr Panel
forall a. Ptr a
nullPtr)
Maybe Panel -> IO (Maybe Panel)
forall (m :: * -> *) a. Monad m => a -> m a
return (Maybe Panel -> IO (Maybe Panel))
-> Maybe Panel -> IO (Maybe Panel)
forall a b. (a -> b) -> a -> b
$ if Panel -> Ptr Panel
panelPtr Panel
ptr Ptr Panel -> Ptr Panel -> Bool
forall a. Eq a => a -> a -> Bool
== Ptr Panel
forall a. Ptr a
nullPtr
then Maybe Panel
forall a. Maybe a
Nothing
else Panel -> Maybe Panel
forall a. a -> Maybe a
Just Panel
ptr
showPanel :: Panel -> Curses ()
showPanel :: Panel -> Curses ()
showPanel p :: Panel
p = IO () -> Curses ()
forall a. IO a -> Curses a
Curses (Panel -> IO CInt
show_panel Panel
p IO CInt -> (CInt -> IO ()) -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= String -> CInt -> IO ()
checkRC "showPanel")
hidePanel :: Panel -> Curses ()
hidePanel :: Panel -> Curses ()
hidePanel p :: Panel
p = IO () -> Curses ()
forall a. IO a -> Curses a
Curses (Panel -> IO CInt
hide_panel Panel
p IO CInt -> (CInt -> IO ()) -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= String -> CInt -> IO ()
checkRC "hidePanel")
panelHidden :: Panel -> Curses Bool
panelHidden :: Panel -> Curses Bool
panelHidden p :: Panel
p = IO Bool -> Curses Bool
forall a. IO a -> Curses a
Curses (CInt -> Bool
forall a. Integral a => a -> Bool
cToBool (CInt -> Bool) -> IO CInt -> IO Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
`fmap` Panel -> IO CInt
panel_hidden Panel
p)
movePanel :: Panel
-> Integer
-> Integer
-> Curses ()
movePanel :: Panel -> Integer -> Integer -> Curses ()
movePanel p :: Panel
p row :: Integer
row col :: Integer
col = IO () -> Curses ()
forall a. IO a -> Curses a
Curses (IO () -> Curses ()) -> IO () -> Curses ()
forall a b. (a -> b) -> a -> b
$
String -> CInt -> IO ()
checkRC "movePanel" (CInt -> IO ()) -> IO CInt -> IO ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Panel -> CInt -> CInt -> IO CInt
move_panel Panel
p
(Integer -> CInt
forall a. Num a => Integer -> a
fromInteger Integer
row)
(Integer -> CInt
forall a. Num a => Integer -> a
fromInteger Integer
col)
raisePanel :: Panel -> Curses ()
raisePanel :: Panel -> Curses ()
raisePanel p :: Panel
p = IO () -> Curses ()
forall a. IO a -> Curses a
Curses (Panel -> IO CInt
top_panel Panel
p IO CInt -> (CInt -> IO ()) -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= String -> CInt -> IO ()
checkRC "raisePanel")
lowerPanel :: Panel -> Curses ()
lowerPanel :: Panel -> Curses ()
lowerPanel p :: Panel
p = IO () -> Curses ()
forall a. IO a -> Curses a
Curses (Panel -> IO CInt
bottom_panel Panel
p IO CInt -> (CInt -> IO ()) -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= String -> CInt -> IO ()
checkRC "lowerPanel")
getPanelWindow :: Panel -> Curses Window
getPanelWindow :: Panel -> Curses Window
getPanelWindow p :: Panel
p = IO Window -> Curses Window
forall a. IO a -> Curses a
Curses (Panel -> IO Window
panel_window Panel
p)
replacePanelWindow :: Panel -> Window -> Curses ()
replacePanelWindow :: Panel -> Window -> Curses ()
replacePanelWindow p :: Panel
p win :: Window
win = IO () -> Curses ()
forall a. IO a -> Curses a
Curses (IO () -> Curses ()) -> IO () -> Curses ()
forall a b. (a -> b) -> a -> b
$
Panel -> Window -> IO CInt
replace_panel Panel
p Window
win IO CInt -> (CInt -> IO ()) -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= String -> CInt -> IO ()
checkRC "replacePanelWindow"
foreign import ccall safe "UI/NCurses/Panel.chs.h new_panel"
new_panel :: ((Window) -> (IO (Panel)))
foreign import ccall safe "UI/NCurses/Panel.chs.h del_panel"
del_panel :: ((Panel) -> (IO C2HSImp.CInt))
foreign import ccall safe "UI/NCurses/Panel.chs.h update_panels"
update_panels :: (IO ())
foreign import ccall safe "UI/NCurses/Panel.chs.h panel_above"
panel_above :: ((Panel) -> (IO (Panel)))
foreign import ccall safe "UI/NCurses/Panel.chs.h panel_below"
panel_below :: ((Panel) -> (IO (Panel)))
foreign import ccall safe "UI/NCurses/Panel.chs.h show_panel"
show_panel :: ((Panel) -> (IO C2HSImp.CInt))
foreign import ccall safe "UI/NCurses/Panel.chs.h hide_panel"
hide_panel :: ((Panel) -> (IO C2HSImp.CInt))
foreign import ccall safe "UI/NCurses/Panel.chs.h panel_hidden"
panel_hidden :: ((Panel) -> (IO C2HSImp.CInt))
foreign import ccall safe "UI/NCurses/Panel.chs.h move_panel"
move_panel :: ((Panel) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CInt))))
foreign import ccall safe "UI/NCurses/Panel.chs.h top_panel"
top_panel :: ((Panel) -> (IO C2HSImp.CInt))
foreign import ccall safe "UI/NCurses/Panel.chs.h bottom_panel"
bottom_panel :: ((Panel) -> (IO C2HSImp.CInt))
foreign import ccall safe "UI/NCurses/Panel.chs.h panel_window"
panel_window :: ((Panel) -> (IO (Window)))
foreign import ccall safe "UI/NCurses/Panel.chs.h replace_panel"
replace_panel :: ((Panel) -> ((Window) -> (IO C2HSImp.CInt)))