systranything-0.1.3.0: lib/Model/SubMenu.hs
{-# LANGUAGE TemplateHaskell #-}
module Model.SubMenu (SubMenu (..), newItem) where
import Data.Aeson.TH (deriveJSON)
import Data.List.NonEmpty (NonEmpty)
import Data.Text (Text)
import GHC.Generics (Generic)
import GI.Gtk qualified as Gtk
import Model.Internal (options)
import Model.Item (Item, populate)
data SubMenu = MkSubMenu
{ suLabel :: Text,
suItems :: NonEmpty Item
}
deriving stock (Eq, Generic, Show)
$(deriveJSON options ''SubMenu)
newItem :: Bool -> SubMenu -> IO Gtk.MenuItem
newItem verbose (MkSubMenu {..}) = do
subMenu <- populate verbose suItems
item <- Gtk.menuItemNewWithLabel suLabel
Gtk.menuItemSetSubmenu item $ Just subMenu
pure item