packages feed

moffy-samples-gtk3-run-0.1.0.6: 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

#include <gtk/gtk.h>

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 ()