summaryrefslogtreecommitdiff
path: root/src/Gtk/Signal.dcl
blob: 7830886643d9ba9f44520b54a0eb17e1bf5b5f23 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
definition module Gtk.Signal

from System._Pointer import :: Pointer

from Gdk.Events import :: GdkEvent
from Gtk.State import :: GtkM, :: GtkState
from Gtk.Tune import class tune
from Gtk.Types import :: GtkPropagate, :: GtkTimeout
from Gtk.Widgets import class gtkWidget

class signalHandler h
where
	signalName :: !h -> String
	signalHandler :: !h -> SignalHandlerInternal

:: SignalHandler = E.h: SignalHandler h & signalHandler h

:: GSignalHandler
	= ActivateHandler      !(GtkM ())
	| ChangedHandler       !(GtkM ())
	| ClickedHandler       !(GtkM ())
	| DeleteEventHandler   !(GdkEvent -> GtkM GtkPropagate)
	| DestroyHandler       !(GtkM ())
	| KeyPressHandler      !(GdkEvent -> GtkM GtkPropagate)
	| NextMatchHandler     !(GtkM ())
	| PreviousMatchHandler !(GtkM ())
	| SearchChangedHandler !(GtkM ())
	| StopSearchHandler    !(GtkM ())

instance signalHandler GSignalHandler

:: SignalHandlerInternal
	= SHI_Void !(GtkM ())
	| SHI_Pointer_Bool !(Pointer -> GtkM Bool)
	| SHI_Int_Int_Bool !(Int Int -> GtkM Bool)
	| SHI_Int_Int_Pointer_Pointer_Bool !(Int Int Pointer Pointer -> GtkM Bool)

installSignalHandler :: !h !w -> GtkM w | signalHandler h & gtkWidget w

instance tune w SignalHandler | gtkWidget w
instance tune w GSignalHandler | gtkWidget w

saveState :: GtkM ()
retrieveState :: GtkM GtkState

//* Wrap functionality in `saveState` and `retrieveState` if it can be re-entrant.
withPossibleCallback :: !(GtkM a) -> GtkM a

handleSignal :: !Int !{#Int} -> Int // only for foreign export

addTimeout :: !GtkTimeout !(GtkM Bool) -> GtkM ()
handleTimeout :: !Int -> Int // only for foreign export