summaryrefslogtreecommitdiff
path: root/src/Gtk/Widgets.icl
diff options
context:
space:
mode:
authorCamil Staps2019-11-08 14:59:13 +0100
committerCamil Staps2019-11-08 16:06:43 +0100
commit8ed51dca15aca92313350a18107536aeb1d2dd51 (patch)
tree7a4ebaecac2e52fb70b11116463d90af6ce976fe /src/Gtk/Widgets.icl
parentCleanup and add documentation (diff)
Use abstract newtypes to hide pointers
Diffstat (limited to 'src/Gtk/Widgets.icl')
-rw-r--r--src/Gtk/Widgets.icl71
1 files changed, 70 insertions, 1 deletions
diff --git a/src/Gtk/Widgets.icl b/src/Gtk/Widgets.icl
index 702ea0e..41aadab 100644
--- a/src/Gtk/Widgets.icl
+++ b/src/Gtk/Widgets.icl
@@ -15,6 +15,8 @@ import Gtk
import Gdk.Internal
import Gtk.Internal
+:: GtkAccelGroup =: GtkAccelGroup Pointer
+
newAccelGroup :: !w -> GtkM GtkAccelGroup | gtkWindow w
newAccelGroup window =
let (GtkWindow w) = gtkWindow window in
@@ -22,6 +24,8 @@ newAccelGroup window =
toState (gtk_window_add_accel_group w ag) >>|
pure (GtkAccelGroup ag)
+:: GtkActionBar =: GtkActionBar Pointer
+
instance gtkWidget GtkActionBar where gtkWidget (GtkActionBar ab) = GtkWidget ab
newActionBar :: GtkM GtkActionBar
@@ -38,6 +42,8 @@ packActionBar (GtkActionBar b) dir widget =
w) >>|
pure widget
+:: GtkBox =: GtkBox Pointer
+
instance gtkWidget GtkBox where gtkWidget (GtkBox b) = GtkWidget b
instance gtkContainer GtkBox where gtkContainer (GtkBox b) = GtkContainer b
instance gtkOrientable GtkBox where gtkOrientable (GtkBox b) = GtkOrientable b
@@ -60,6 +66,8 @@ where
toState (gtk_box_set_spacing b s) >>|
pure box
+:: GtkButton =: GtkButton Pointer
+
instance gtkWidget GtkButton where gtkWidget (GtkButton b) = GtkWidget b
newButtonFromIconName :: !String -> GtkM GtkButton
@@ -67,9 +75,14 @@ newButtonFromIconName icon =
toStateR (gtk_button_new_from_icon_name icon (toInt ButtonIconSize)) >>= \b ->
show (GtkButton b)
+:: GtkContainer =: GtkContainer Pointer
+
instance gtkWidget GtkContainer where gtkWidget (GtkContainer c) = GtkWidget c
instance gtkContainer GtkContainer where gtkContainer c = c
+unsafeToContainer :: !Pointer -> GtkContainer
+unsafeToContainer c = GtkContainer c
+
addToContainer :: !c !w -> GtkM w | gtkWidget w & gtkContainer c
addToContainer container widget =
let
@@ -79,6 +92,8 @@ addToContainer container widget =
toState (gtk_container_add c w) >>|
pure widget
+:: GtkDialog =: GtkDialog Pointer
+
instance gtkWidget GtkDialog where gtkWidget (GtkDialog d) = GtkWidget d
instance gtkContainer GtkDialog where gtkContainer (GtkDialog d) = GtkContainer d
instance gtkWindow GtkDialog where gtkWindow (GtkDialog d) = GtkWindow d
@@ -146,9 +161,14 @@ where
destroy dialog >>|
pure Nothing
+:: GtkEntry =: GtkEntry Pointer
+
instance gtkWidget GtkEntry where gtkWidget (GtkEntry e) = GtkWidget e
instance gtkEntry GtkEntry where gtkEntry e = e
+unsafeToEntry :: !Pointer -> GtkEntry
+unsafeToEntry e = GtkEntry e
+
newEntry :: GtkM GtkEntry
newEntry =
toStateR gtk_entry_new >>= \e ->
@@ -166,6 +186,8 @@ where
toState (gtk_entry_set_text e text) >>|
pure entry
+:: GtkEntryCompletion =: GtkEntryCompletion Pointer
+
instance tune GtkEntry GtkEntryCompletion
where
tune (GtkEntryCompletion ec) entry=:(GtkEntry e) =
@@ -175,7 +197,6 @@ where
newEntryCompletion :: GtkM GtkEntryCompletion
newEntryCompletion =
toStateR gtk_entry_completion_new >>= \ec ->
- toState (gtk_entry_completion_set_inline_selection ec True) >>| // TODO
pure (GtkEntryCompletion ec)
setTextColumn :: !Int !GtkEntryCompletion -> GtkM GtkEntryCompletion
@@ -199,6 +220,8 @@ where
InlineSelection -> gtk_entry_completion_set_inline_selection ec True
NoInlineSelection -> gtk_entry_completion_set_inline_selection ec False
+:: GtkFrame =: GtkFrame Pointer
+
instance gtkWidget GtkFrame where gtkWidget (GtkFrame f) = GtkWidget f
instance gtkContainer GtkFrame where gtkContainer (GtkFrame f) = GtkContainer f
@@ -217,6 +240,8 @@ framed title widgetf =
widgetf >>= \widget ->
tuple widget <$> newFrame title widget
+:: GtkGrid =: GtkGrid Pointer
+
instance gtkWidget GtkGrid where gtkWidget (GtkGrid g) = GtkWidget g
newGrid :: GtkM GtkGrid
@@ -230,6 +255,8 @@ attachGrid (GtkGrid g) (left,top) (width,height) widget =
toState (gtk_grid_attach g w left top width height) >>|
pure widget
+:: GtkLabel =: GtkLabel Pointer
+
instance gtkWidget GtkLabel where gtkWidget (GtkLabel l) = GtkWidget l
newLabel :: GtkM GtkLabel
@@ -243,6 +270,8 @@ where
toState (gtk_label_set_markup l text) >>|
pure label
+:: GtkListStore =: GtkListStore Pointer
+
newListStore :: ![GType] -> GtkM GtkListStore
newListStore types =
toStateR (gtk_list_store_newv {toInt t \\ t <- types}) >>= \s ->
@@ -279,6 +308,8 @@ swapItems a b (GtkListStore s) =
(toState (gtk_list_store_swap s iter_a iter_b) >>| pure True)
(pure False)
+:: GtkMenu =: GtkMenu Pointer
+
instance gtkWidget GtkMenu where gtkWidget (GtkMenu m) = GtkWidget m
newMenu :: GtkM GtkMenu
@@ -286,6 +317,8 @@ newMenu =
toStateR gtk_menu_new >>= \m ->
show (GtkMenu m)
+:: GtkMenuBar =: GtkMenuBar Pointer
+
instance gtkWidget GtkMenuBar where gtkWidget (GtkMenuBar mb) = GtkWidget mb
newMenuBar :: GtkM GtkMenuBar
@@ -293,6 +326,8 @@ newMenuBar =
toStateR gtk_menu_bar_new >>= \mb ->
show (GtkMenuBar mb)
+:: GtkMenuItem =: GtkMenuItem Pointer
+
instance gtkWidget GtkMenuItem where gtkWidget (GtkMenuItem mi) = GtkWidget mi
instance gtkMenuItem GtkMenuItem where gtkMenuItem mi = mi
@@ -309,6 +344,8 @@ setSubMenu item menu=:(GtkMenu m) =
toState (gtk_menu_item_set_submenu mi m) >>|
pure menu
+:: GtkCheckMenuItem =: GtkCheckMenuItem Pointer
+
instance gtkWidget GtkCheckMenuItem where gtkWidget (GtkCheckMenuItem cmi) = GtkWidget cmi
instance gtkMenuItem GtkCheckMenuItem where gtkMenuItem (GtkCheckMenuItem cmi) = GtkMenuItem cmi
@@ -327,6 +364,8 @@ setActive active item=:(GtkCheckMenuItem cmi) =
toState (gtk_check_menu_item_set_active cmi active) >>|
pure item
+:: GtkSeparatorMenuItem =: GtkSeparatorMenuItem Pointer
+
instance gtkWidget GtkSeparatorMenuItem where gtkWidget (GtkSeparatorMenuItem smi) = GtkWidget smi
instance gtkMenuItem GtkSeparatorMenuItem where gtkMenuItem (GtkSeparatorMenuItem smi) = GtkMenuItem smi
@@ -335,6 +374,8 @@ newSeparatorMenuItem =
toStateR gtk_separator_menu_item_new >>= \smi ->
show (GtkSeparatorMenuItem smi)
+:: GtkMenuShell =: GtkMenuShell Pointer
+
instance gtkWidget GtkMenuShell where gtkWidget (GtkMenuShell ms) = GtkWidget ms
instance gtkMenuShell GtkMenu where gtkMenuShell (GtkMenu m) = GtkMenuShell m
@@ -350,6 +391,8 @@ appendToMenuShell shell item =
toState (gtk_menu_shell_append ms mi) >>|
pure item
+:: GtkOrientable =: GtkOrientable Pointer
+
instance tune o GtkOrientation | gtkOrientable o
where
tune orientation orientable =
@@ -357,6 +400,8 @@ where
toState (gtk_orientable_set_orientation o orientation=:Vertical) >>|
pure orientable
+:: GtkPaned =: GtkPaned Pointer
+
instance gtkWidget GtkPaned where gtkWidget (GtkPaned p) = GtkWidget p
instance gtkContainer GtkPaned where gtkContainer (GtkPaned p) = GtkContainer p
@@ -378,6 +423,8 @@ packPane2 (GtkPaned p) resize shrink widget =
toState (gtk_paned_pack2 p w resize=:Resize shrink=:Shrink) >>|
pure widget
+:: GtkScrolledWindow =: GtkScrolledWindow Pointer
+
instance gtkWidget GtkScrolledWindow where gtkWidget (GtkScrolledWindow sw) = GtkWidget sw
instance gtkContainer GtkScrolledWindow where gtkContainer (GtkScrolledWindow sw) = GtkContainer sw
@@ -393,6 +440,8 @@ where
toState (gtk_scrolled_window_set_policy sw (toInt hp) (toInt vp)) >>|
pure window
+:: GtkSearchEntry =: GtkSearchEntry Pointer
+
instance gtkWidget GtkSearchEntry where gtkWidget (GtkSearchEntry se) = GtkWidget se
instance gtkEntry GtkSearchEntry where gtkEntry (GtkSearchEntry se) = GtkEntry se
@@ -401,6 +450,8 @@ newSearchEntry =
toStateR gtk_search_entry_new >>= \se ->
show (GtkSearchEntry se)
+:: GtkSeparator =: GtkSeparator Pointer
+
instance gtkWidget GtkSeparator where gtkWidget (GtkSeparator s) = GtkWidget s
newSeparator :: !GtkOrientation -> GtkM GtkSeparator
@@ -408,6 +459,8 @@ newSeparator orientation =
toStateR (gtk_separator_new orientation=:Vertical) >>= \s ->
show (GtkSeparator s)
+:: GtkSpinner =: GtkSpinner Pointer
+
instance gtkWidget GtkSpinner where gtkWidget (GtkSpinner s) = GtkWidget s
newSpinner :: GtkM GtkSpinner
@@ -425,6 +478,8 @@ stopSpinner spinner=:(GtkSpinner s) =
toState (gtk_spinner_stop s) >>|
pure spinner
+:: GtkTextBuffer =: GtkTextBuffer Pointer
+
instance tune GtkTextBuffer GtkText
where
tune (Text s) buffer=:(GtkTextBuffer b) =
@@ -446,6 +501,8 @@ insertAtCursor s buffer=:(GtkTextBuffer b) =
toState (gtk_text_buffer_insert_at_cursor b s (size s)) >>|
pure buffer
+:: GtkTextView =: GtkTextView Pointer
+
instance gtkWidget GtkTextView where gtkWidget (GtkTextView tv) = GtkWidget tv
instance gtkContainer GtkTextView where gtkContainer (GtkTextView tv) = GtkContainer tv
@@ -464,6 +521,8 @@ where
toState (gtk_text_view_set_wrap_mode tv (toInt mode)) >>|
pure view
+:: GtkTreeView =: GtkTreeView Pointer
+
instance gtkWidget GtkTreeView where gtkWidget (GtkTreeView tv) = GtkWidget tv
newTreeView :: !GtkListStore -> GtkM GtkTreeView
@@ -512,8 +571,16 @@ selectPath path (GtkTreeView tv) =
(toState (gtk_tree_selection_select_iter selection iter) >>| pure True)
(pure False)
+:: GtkWidget =: GtkWidget Pointer
+
instance gtkWidget GtkWidget where gtkWidget w = w
+toPtr :: !w -> Pointer | gtkWidget w
+toPtr widget = let (GtkWidget w) = gtkWidget widget in w
+
+unsafeToWidget :: !Pointer -> GtkWidget
+unsafeToWidget w = GtkWidget w
+
show :: !w -> GtkM w | gtkWidget w
show widget =
let (GtkWidget w) = gtkWidget widget in
@@ -605,6 +672,8 @@ where
toState (gtk_widget_set_size_request w width height) >>|
pure widget
+:: GtkWindow =: GtkWindow Pointer
+
instance gtkWidget GtkWindow where gtkWidget (GtkWindow w) = GtkWidget w
instance gtkContainer GtkWindow where gtkContainer (GtkWindow w) = GtkContainer w
instance gtkWindow GtkWindow where gtkWindow w = w