{-# LANGUAGE ImportQualifiedPost #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE PatternSynonyms #-} {-# OPTIONS_GHC -Wall -fno-warn-tabs #-} module Stopgap.Graphics.UI.Gtk.Window where import Foreign.Ptr import Foreign.C.Enum import Data.Word import Stopgap.Data.Ptr import Stopgap.System.GLib.Object qualified as G.Object import Stopgap.Graphics.UI.Gtk.Widget qualified as Widget import Stopgap.Graphics.UI.Gtk.Container qualified as Container import Stopgap.Graphics.UI.Gdk.Window qualified as Gdk.Window #include enum "Type" ''#{type GtkWindowType} [''Show, ''Read, ''Eq] [ ("Toplevel", #{const GTK_WINDOW_TOPLEVEL}), ("Popup", #{const GTK_WINDOW_POPUP}) ] data WTag newtype W = W (Ptr WTag) deriving Show instance IsPtr W where type Tag W = WTag; toPtr (W p) = p; fromPtr = W instance G.Object.IsO W where toO (W p) = G.Object.O $ castPtr p instance Widget.IsW W where toW (W p) = Widget.W $ castPtr p instance Container.IsC W where toC (W p) = Container.C $ castPtr p new :: Type -> IO W new = c_gtk_window_new foreign import ccall "gtk_window_new" c_gtk_window_new :: Type -> IO W close :: W -> IO () close = c_gtk_window_close foreign import ccall "gtk_window_close" c_gtk_window_close :: W -> IO ()