diff options
Diffstat (limited to 'src/Gtk/Widgets.icl')
-rw-r--r-- | src/Gtk/Widgets.icl | 59 |
1 files changed, 52 insertions, 7 deletions
diff --git a/src/Gtk/Widgets.icl b/src/Gtk/Widgets.icl index 0549c88..1ea63df 100644 --- a/src/Gtk/Widgets.icl +++ b/src/Gtk/Widgets.icl @@ -55,9 +55,10 @@ where toPtr c = c fromPtr c = c -addToContainer :: !w !c -> GtkM () | gtkWidget w & gtkContainer c -addToContainer widget container = - toState ('I'.gtk_container_add (gtkContainer container) (gtkWidget widget)) +addToContainer :: !c !w -> GtkM w | gtkWidget w & gtkContainer c +addToContainer container widget = + toState ('I'.gtk_container_add (gtkContainer container) (gtkWidget widget)) >>| + pure widget :: GtkBox :== Pointer @@ -69,10 +70,11 @@ newBox orientation spacing = toStateR ('I'.gtk_box_new orientation=:Vertical spacing) >>= show -packBox :: !w !GtkBox !GtkDirection !GtkExpand -> GtkM () | gtkWidget w -packBox widget box direction expand = +packBox :: !GtkBox !GtkDirection !GtkExpand !w -> GtkM w | gtkWidget w +packBox box direction expand widget = toState (if direction=:StartToEnd 'I'.gtk_box_pack_start 'I'.gtk_box_pack_end - box (gtkWidget widget) expand=:Expand True 0) + box (gtkWidget widget) expand=:Expand True 0) >>| + pure widget :: GtkFrame :== Pointer @@ -85,7 +87,7 @@ newFrame label widget = (case label of Label _ -> toState ('I'.gtk_frame_set_label_align frame 0.02 0.5) NoLabel -> pure ()) >>| - addToContainer widget frame >>| + addToContainer frame widget >>| show frame framed :: !GtkLabel !(GtkM w) -> GtkM (w, GtkFrame) | gtkWidget w @@ -93,6 +95,49 @@ framed label widgetf = widgetf >>= \widget -> tuple widget <$> newFrame label widget +:: GtkMenu :== Pointer + +instance gtkWidget GtkMenu where gtkWidget m = m + +newMenu :: GtkM GtkMenu +newMenu = toStateR 'I'.gtk_menu_new >>= show + +:: GtkMenuBar :== Pointer + +instance gtkWidget GtkMenuBar where gtkWidget mb = mb + +newMenuBar :: GtkM GtkMenuBar +newMenuBar = toStateR 'I'.gtk_menu_bar_new >>= show + +:: GtkMenuItem :== Pointer + +instance gtkWidget GtkMenuItem where gtkWidget mi = mi + +newMenuItem :: !String -> GtkM GtkMenuItem +newMenuItem label = + toStateR 'I'.gtk_menu_item_new >>= \item -> + toState ('I'.gtk_menu_item_set_label item label) >>| + toState ('I'.gtk_menu_item_set_use_underline item True) >>| + show item + +setSubMenu :: !GtkMenuItem !GtkMenu -> GtkM GtkMenu +setSubMenu item menu = + toState ('I'.gtk_menu_item_set_submenu item menu) >>| + pure menu + +:: GtkMenuShell :== Pointer + +instance gtkWidget GtkMenuShell where gtkWidget ms = ms + +instance gtkMenuShell GtkMenu where gtkMenuShell m = m +instance gtkMenuShell GtkMenuBar where gtkMenuShell mb = mb +instance gtkMenuShell GtkMenuShell where gtkMenuShell ms = ms + +appendToMenuShell :: !s !GtkMenuItem -> GtkM GtkMenuItem | gtkMenuShell s +appendToMenuShell shell item = + toState ('I'.gtk_menu_shell_append (gtkMenuShell shell) item) >>| + pure item + :: GtkPaned :== Pointer instance gtkWidget GtkPaned where gtkWidget p = p |