summaryrefslogtreecommitdiff
path: root/src/Gtk/Widgets.icl
diff options
context:
space:
mode:
Diffstat (limited to 'src/Gtk/Widgets.icl')
-rw-r--r--src/Gtk/Widgets.icl68
1 files changed, 57 insertions, 11 deletions
diff --git a/src/Gtk/Widgets.icl b/src/Gtk/Widgets.icl
index dfeb901..0438525 100644
--- a/src/Gtk/Widgets.icl
+++ b/src/Gtk/Widgets.icl
@@ -10,19 +10,65 @@ import System._Pointer
import qualified Gtk.Internal as I
import Gtk.State
+import Gtk.Types
-:: GtkWidget :== Int
-:: GtkWindow :== Int
+:: GtkWidget :== Pointer
-instance gtkWidget GtkWidget
-where
- gtkWidget w = w
- gtkPtr w = w
+instance gtkWidget GtkWidget where gtkWidget w = w
+instance ptr GtkWidget where ptr w = w
-instance gtkWidget GtkWindow
-where
- gtkWidget w = w
- gtkPtr w = w
+:: GtkContainer :== Pointer
+
+instance gtkWidget GtkContainer where gtkWidget c = c
+instance gtkContainer GtkContainer where gtkContainer c = c
+
+addToContainer :: !w !c -> State GtkState () | gtkWidget w & gtkContainer c
+addToContainer widget container =
+ toState ('I'.gtk_container_add (gtkContainer container) (gtkWidget widget))
+
+:: GtkPaned :== Pointer
+
+instance gtkWidget GtkPaned where gtkWidget p = p
+instance gtkContainer GtkPaned where gtkContainer p = p
+
+newPaned :: !GtkOrientation !GtkPanedHandleWidth -> State GtkState GtkPaned
+newPaned orientation handle_width =
+ toStateR ('I'.gtk_paned_new orientation=:Vertical) >>= \paned ->
+ toState ('I'.gtk_paned_set_wide_handle paned handle_width=:WideHandle) >>|
+ toState ('I'.gtk_widget_show paned) >>|
+ pure paned
+
+packPane1 :: !w !GtkPaned !GtkResize !GtkShrink -> State GtkState () | gtkWidget w
+packPane1 widget paned resize shrink =
+ toState ('I'.gtk_paned_pack1 paned (gtkWidget widget) resize=:Resize shrink=:Shrink)
+
+packPane2 :: !w !GtkPaned !GtkResize !GtkShrink -> State GtkState () | gtkWidget w
+packPane2 widget paned resize shrink =
+ toState ('I'.gtk_paned_pack2 paned (gtkWidget widget) resize=:Resize shrink=:Shrink)
+
+:: GtkTextBuffer :== Pointer
+
+insertAtCursor :: !String !GtkTextBuffer -> State GtkState ()
+insertAtCursor s buffer = toState ('I'.gtk_text_buffer_insert_at_cursor buffer s (size s))
+
+:: GtkTextView :== Pointer
+
+instance gtkWidget GtkTextView where gtkWidget tv = tv
+instance gtkContainer GtkTextView where gtkContainer tv = tv
+
+newTextView :: State GtkState GtkTextView
+newTextView =
+ toStateR 'I'.gtk_text_view_new >>= \text_view ->
+ toState ('I'.gtk_widget_show text_view) >>|
+ pure text_view
+
+getTextBuffer :: !GtkTextView -> GtkTextBuffer
+getTextBuffer text_view = 'I'.gtk_text_view_get_buffer text_view
+
+:: GtkWindow :== Pointer
+
+instance gtkWidget GtkWindow where gtkWidget w = w
+instance gtkContainer GtkWindow where gtkContainer w = w
newPopup :: !String !(Maybe (Int,Int)) -> State GtkState GtkWindow
newPopup title size = new_window_or_popup True title size
@@ -37,5 +83,5 @@ new_window_or_popup is_popup title size =
(case size of
Nothing -> pure ()
Just (h,v) -> toState ('I'.gtk_widget_set_size_request window h v)) >>|
- toState ('I'.gtk_widget_show_all window) >>|
+ toState ('I'.gtk_widget_show window) >>|
pure window