module Hob.Context.StyleContext ( StyleContext, defaultStyleContext, uiFile, uiTheme, sourceStyleScheme, sourceStyleFont ) where import Control.Monad (liftM) import Graphics.Rendering.Pango.Font (FontDescription, fontDescriptionFromString) import Graphics.UI.Gtk.SourceView (SourceStyleScheme, SourceStyleSchemeManager, sourceStyleSchemeManagerGetDefault, sourceStyleSchemeManagerGetScheme, sourceStyleSchemeManagerSetSearchPath) import System.FilePath (()) data StyleContext = StyleContext { contextDataPath :: FilePath, contextStyleManager :: SourceStyleSchemeManager } defaultStyleContext :: FilePath -> IO StyleContext defaultStyleContext dataDir = do styleManager <- sourceStyleSchemeManagerGetDefault sourceStyleSchemeManagerSetSearchPath styleManager (Just [dataDir "themes" "gtksourceview"]) return $ StyleContext dataDir styleManager uiFile :: StyleContext -> FilePath uiFile ctx = contextDataPath ctx "ui.glade" uiTheme :: StyleContext -> FilePath uiTheme ctx = contextDataPath ctx "themes" "gtk" "default" "gtk-dark.css" sourceStyleScheme :: StyleContext -> Maybe FilePath -> IO (Maybe SourceStyleScheme) sourceStyleScheme ctx _ = do style <- sourceStyleSchemeManagerGetScheme (contextStyleManager ctx) "molokai" return $ Just style sourceStyleFont :: StyleContext -> Maybe FilePath -> IO (Maybe FontDescription) sourceStyleFont _ _ = liftM Just $ fontDescriptionFromString "monospace 12"