moffy-samples-gtk4-run-0.1.0.0: src/Stopgap/Graphics/UI/Gtk/Button.hsc
{-# LANGUAGE ImportQualifiedPost #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}
module Stopgap.Graphics.UI.Gtk.Button where
import Foreign.Ptr
import Foreign.C.String
import Stopgap.Data.Ptr
import Stopgap.Graphics.UI.Gtk.Widget qualified as Gtk.Widget
import Stopgap.System.GLib.Object qualified as G.Object
data BTag
newtype B = B (Ptr BTag) deriving Show
instance IsPtr B where type Tag B = BTag; fromPtr = B; toPtr (B p) = p
instance G.Object.IsO B where toO (B p) = G.Object.O $ castPtr p
instance Gtk.Widget.IsW B where toW (B p) = Gtk.Widget.W $ castPtr p
newWithLabel :: String -> IO B
newWithLabel lbl = B <$> withCString lbl c_gtk_button_new_with_label
foreign import ccall "gtk_button_new_with_label" c_gtk_button_new_with_label ::
CString -> IO (Ptr BTag)
getLabel :: B -> IO String
getLabel (B b) = peekCString =<< c_gtk_button_get_label b
foreign import ccall "gtk_button_get_label" c_gtk_button_get_label ::
Ptr BTag -> IO CString
setLabel :: B -> String -> IO ()
setLabel (B b) txt = withCString txt $ c_gtk_button_set_label b
foreign import ccall "gtk_button_set_label" c_gtk_button_set_label ::
Ptr BTag -> CString -> IO ()