gi-gtk-declarative-0.1.0: src/GI/Gtk/Declarative/CSS.hs
-- | Helpers for modifying CSS classes in 'Gtk.StyleContext'
-- objects.
module GI.Gtk.Declarative.CSS where
import Data.HashSet (HashSet)
import qualified Data.HashSet as HashSet
import Data.Text (Text)
import qualified GI.Gtk as Gtk
-- | A set of CSS classes.
type ClassSet = HashSet Text
-- | Add the classes to the widget's style context.
addClasses
:: Gtk.IsWidget w
=> w -- ^ The widget to add classes to.
-> ClassSet -- ^ New classes to add.
-> IO ()
addClasses widget cs = do
sc <- Gtk.widgetGetStyleContext widget
mapM_ (Gtk.styleContextAddClass sc) cs
-- | Replace all classes in 'old' with the ones in 'old' in the widget's style
-- context.
replaceClasses
:: Gtk.IsWidget w
=> w -- ^ The widget to replace classes in.
-> ClassSet -- ^ Old classes to replace.
-> ClassSet -- ^ New classes to replace with.
-> IO ()
replaceClasses widget old new = do
sc <- Gtk.widgetGetStyleContext widget
mapM_ (Gtk.styleContextRemoveClass sc) (HashSet.difference old new)
mapM_ (Gtk.styleContextAddClass sc) (HashSet.difference new old)