diff --git a/src/QBar/Core.hs b/src/QBar/Core.hs index fd0ae51f2dca4f837320c5432be3789d8522693f..db2155d95de1aa978e10c8f559669e08a4a6edff 100644 --- a/src/QBar/Core.hs +++ b/src/QBar/Core.hs @@ -85,7 +85,38 @@ data Bar = Bar { data BarUpdateChannel = BarUpdateChannel (IO ()) type BarUpdateEvent = Event.Event +newtype BlockText = BlockText [BlockTextSegment] +instance Semigroup BlockText where + (BlockText a) <> (BlockText b) = BlockText (a <> b) +instance Monoid BlockText where + mempty = BlockText [] +data BlockTextSegment = BlockTextSegment { + active :: Bool, + importance :: Importance, + text :: T.Text + } + | PangoTextSegment T.Text + +type Importance = Float + +mkText :: Bool -> Importance -> T.Text -> BlockText +mkText active importance text = BlockText [BlockTextSegment { text, active, importance }] + +activeImportantText :: Importance -> T.Text -> BlockText +activeImportantText = mkText True + +importantText :: Importance -> T.Text -> BlockText +importantText = mkText False + +activeText :: T.Text -> BlockText +activeText = mkText True 0 + +normalText :: T.Text -> BlockText +normalText = mkText False 0 + +pangoText :: T.Text -> BlockText +pangoText pango = BlockText [PangoTextSegment pango] defaultColor :: T.Text defaultColor = "#969896"