{-# LINE 1 "src/Stopgap/Graphics/UI/Gtk/Window.hsc" #-}
{-# 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



enum "Type" ''Word32 [''Show, ''Read, ''Eq] [
{-# LINE 21 "src/Stopgap/Graphics/UI/Gtk/Window.hsc" #-}
	("Toplevel", 0),
{-# LINE 22 "src/Stopgap/Graphics/UI/Gtk/Window.hsc" #-}
	("Popup", 1) ]
{-# LINE 23 "src/Stopgap/Graphics/UI/Gtk/Window.hsc" #-}

data WTag

newtype W = W (Ptr WTag) deriving Int -> W -> ShowS
[W] -> ShowS
W -> String
(Int -> W -> ShowS) -> (W -> String) -> ([W] -> ShowS) -> Show W
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> W -> ShowS
showsPrec :: Int -> W -> ShowS
$cshow :: W -> String
show :: W -> String
$cshowList :: [W] -> ShowS
showList :: [W] -> ShowS
Show

instance IsPtr W where type Tag W = WTag; toPtr :: W -> Ptr (Tag W)
toPtr (W Ptr WTag
p) = Ptr (Tag W)
Ptr WTag
p; fromPtr :: Ptr (Tag W) -> W
fromPtr = Ptr (Tag W) -> W
Ptr WTag -> W
W
instance G.Object.IsO W where toO :: W -> O
toO (W Ptr WTag
p) = Ptr OTag -> O
G.Object.O (Ptr OTag -> O) -> Ptr OTag -> O
forall a b. (a -> b) -> a -> b
$ Ptr WTag -> Ptr OTag
forall a b. Ptr a -> Ptr b
castPtr Ptr WTag
p
instance Widget.IsW W where toW :: W -> W
toW (W Ptr WTag
p) = Ptr WTag -> W
Widget.W (Ptr WTag -> W) -> Ptr WTag -> W
forall a b. (a -> b) -> a -> b
$ Ptr WTag -> Ptr WTag
forall a b. Ptr a -> Ptr b
castPtr Ptr WTag
p
instance Container.IsC W where toC :: W -> C
toC (W Ptr WTag
p) = Ptr CTag -> C
Container.C (Ptr CTag -> C) -> Ptr CTag -> C
forall a b. (a -> b) -> a -> b
$ Ptr WTag -> Ptr CTag
forall a b. Ptr a -> Ptr b
castPtr Ptr WTag
p

new :: Type -> IO W
new :: Type -> IO W
new = Type -> IO W
c_gtk_window_new

foreign import ccall "gtk_window_new" c_gtk_window_new :: Type -> IO W

close :: W -> IO ()
close :: W -> IO ()
close = W -> IO ()
c_gtk_window_close

foreign import ccall "gtk_window_close" c_gtk_window_close :: W -> IO ()