packages feed

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

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