module Manatee.Toolkit.Widget.NotebookTab where
import Data.Maybe
import Graphics.UI.Gtk
import Manatee.Toolkit.Gtk.Box
import Manatee.Toolkit.Gtk.Container
import Manatee.Toolkit.Gtk.Gtk
data NotebookTab =
NotebookTab {ntBox :: HBox
,ntSpinner :: Spinner
,ntLabel :: Label
,ntCloseButton :: ToolButton
,ntSize :: Int
}
notebookTabDefaultSize :: Int
notebookTabDefaultSize = 8
notebookTabNew :: Maybe String -> Maybe Int -> IO NotebookTab
notebookTabNew name size = do
let iconSize = fromMaybe notebookTabDefaultSize size
box <- hBoxNew False 0
spinner <- spinnerNew
label <- labelNew name
image <- imageNewFromIcon "gtk-close" iconSize
closeButton <- toolButtonNew (Just image) Nothing
boxPackStart box label PackRepel 0
boxPackStart box closeButton PackRepel 0
widgetShowAll box
return $ NotebookTab box spinner label closeButton iconSize
notebookTabSetName :: NotebookTab -> String -> IO ()
notebookTabSetName tab =
labelSetText (ntLabel tab)
notebookTabStart :: NotebookTab -> IO ()
notebookTabStart NotebookTab {ntBox = box
,ntSpinner = spinner
,ntSize = size} = do
boxTryPack box spinner PackNatural (Just 0) (Just (size `div` 2))
spinnerStart spinner
widgetShow spinner
notebookTabStop :: NotebookTab -> IO ()
notebookTabStop NotebookTab {ntBox = box
,ntSpinner = spinner} = do
containerTryRemove box spinner
spinnerStop spinner