module MultiWidgetContainerView where import Graphics.UI.Gtk data ViewState = V { mainWidget :: Widget , notebook :: Notebook , nameE :: Entry , addB :: Button } new :: IO ViewState new = do vbox <- vBoxNew False 4 nb <- notebookNew set nb [ notebookScrollable := True , notebookEnablePopup := True , notebookTabPos := PosRight ] hbox <- hBoxNew False 4 nameE <- entryNew addB <- buttonNewFromStock stockAdd boxPackEnd hbox addB PackNatural 2 boxPackEnd hbox nameE PackNatural 2 boxPackStart vbox nb PackGrow 2 sep <- hSeparatorNew boxPackStart vbox sep PackNatural 2 boxPackStart vbox hbox PackNatural 2 return (V (toWidget vbox) nb nameE addB) add :: ViewState -> String -> Widget -> IO () add vs name w = do putStrLn $ "appending notebook page " ++ name notebookAppendPage (notebook vs) w name widgetShowAll (notebook vs) return ()