packages feed

systranything-0.1.3.0: lib/Model/Label.hs

{-# LANGUAGE TemplateHaskell #-}

module Model.Label (Label (..), newItem) where

import Control.Monad (void)
import Data.Aeson.TH (deriveJSON)
import Data.Text (Text)
import GHC.Generics (Generic)
import GI.Gtk qualified as Gtk
import Model.Common (runCommand)
import Model.Internal (options)

data Label = MkLabel
  { laLabel :: Text,
    laOnClick :: Text
  }
  deriving stock (Eq, Generic, Show)

$(deriveJSON options ''Label)

newItem :: Bool -> Label -> IO Gtk.MenuItem
newItem verbose MkLabel {..} = do
  item <- Gtk.menuItemNewWithLabel laLabel
  void $ Gtk.on item #activate $ void $ runCommand verbose laOnClick
  pure item