diff options
author | Camil Staps | 2019-11-08 14:59:13 +0100 |
---|---|---|
committer | Camil Staps | 2019-11-08 16:06:43 +0100 |
commit | 8ed51dca15aca92313350a18107536aeb1d2dd51 (patch) | |
tree | 7a4ebaecac2e52fb70b11116463d90af6ce976fe /src/Gtk/Widgets.icl | |
parent | Cleanup and add documentation (diff) |
Use abstract newtypes to hide pointers
Diffstat (limited to 'src/Gtk/Widgets.icl')
-rw-r--r-- | src/Gtk/Widgets.icl | 71 |
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 |