diff options
author | Camil Staps | 2019-10-20 13:37:53 +0200 |
---|---|---|
committer | Camil Staps | 2019-10-20 13:37:53 +0200 |
commit | 354322c0023e470b5b0830916fb7ae868ad8760d (patch) | |
tree | e7c24f16329036b4685b994363ad2612bc98ac10 | |
parent | Move position of GtkFrame label; add framed helper combinator (diff) |
Add setMargins
-rw-r--r-- | src/Gtk/Internal.dcl | 4 | ||||
-rw-r--r-- | src/Gtk/Internal.icl | 20 | ||||
-rw-r--r-- | src/Gtk/Types.dcl | 9 | ||||
-rw-r--r-- | src/Gtk/Types.icl | 8 | ||||
-rw-r--r-- | src/Gtk/Widgets.dcl | 5 | ||||
-rw-r--r-- | src/Gtk/Widgets.icl | 8 | ||||
-rw-r--r-- | test/test.icl | 11 |
7 files changed, 60 insertions, 5 deletions
diff --git a/src/Gtk/Internal.dcl b/src/Gtk/Internal.dcl index ba30123..c07b71a 100644 --- a/src/Gtk/Internal.dcl +++ b/src/Gtk/Internal.dcl @@ -38,6 +38,10 @@ gtk_text_view_new :: !.a -> (!Pointer, !.a) gtk_text_view_get_buffer :: !Pointer -> Pointer gtk_text_view_set_editable :: !Pointer !Bool !.a -> .a +gtk_widget_set_margin_bottom :: !Pointer !Int !.a -> .a +gtk_widget_set_margin_left :: !Pointer !Int !.a -> .a +gtk_widget_set_margin_right :: !Pointer !Int !.a -> .a +gtk_widget_set_margin_top :: !Pointer !Int !.a -> .a gtk_widget_set_size_request :: !Pointer !Int !Int !.a -> .a gtk_widget_show :: !Pointer !.a -> .a diff --git a/src/Gtk/Internal.icl b/src/Gtk/Internal.icl index 5b49160..24e22cb 100644 --- a/src/Gtk/Internal.icl +++ b/src/Gtk/Internal.icl @@ -143,6 +143,26 @@ gtk_text_view_set_editable text_view setting env = code { ccall gtk_text_view_set_editable "pI:V:A" } +gtk_widget_set_margin_bottom :: !Pointer !Int !.a -> .a +gtk_widget_set_margin_bottom widget padding env = code { + ccall gtk_widget_set_margin_bottom "pI:V:A" +} + +gtk_widget_set_margin_left :: !Pointer !Int !.a -> .a +gtk_widget_set_margin_left widget padding env = code { + ccall gtk_widget_set_margin_left "pI:V:A" +} + +gtk_widget_set_margin_right :: !Pointer !Int !.a -> .a +gtk_widget_set_margin_right widget padding env = code { + ccall gtk_widget_set_margin_right "pI:V:A" +} + +gtk_widget_set_margin_top :: !Pointer !Int !.a -> .a +gtk_widget_set_margin_top widget padding env = code { + ccall gtk_widget_set_margin_top "pI:V:A" +} + gtk_widget_set_size_request :: !Pointer !Int !Int !.a -> .a gtk_widget_set_size_request widget hsize vsize env = code { ccall gtk_widget_set_size_request "pII:V:A" diff --git a/src/Gtk/Types.dcl b/src/Gtk/Types.dcl index 5339bc3..b51f80e 100644 --- a/src/Gtk/Types.dcl +++ b/src/Gtk/Types.dcl @@ -12,6 +12,15 @@ definition module Gtk.Types = Label !String | NoLabel +:: GtkMargins = + { left :: !Int + , top :: !Int + , right :: !Int + , bottom :: !Int + } + +margin :: !Int -> GtkMargins + :: GtkOrientation = Horizontal | Vertical diff --git a/src/Gtk/Types.icl b/src/Gtk/Types.icl index 55b6e28..aa03391 100644 --- a/src/Gtk/Types.icl +++ b/src/Gtk/Types.icl @@ -1 +1,9 @@ implementation module Gtk.Types + +margin :: !Int -> GtkMargins +margin n = + { left = n + , top = n + , right = n + , bottom = n + } diff --git a/src/Gtk/Widgets.dcl b/src/Gtk/Widgets.dcl index 03b56b7..791796e 100644 --- a/src/Gtk/Widgets.dcl +++ b/src/Gtk/Widgets.dcl @@ -6,7 +6,8 @@ from System._Pointer import :: Pointer from Gtk.State import :: State, :: StateT, :: Identity, :: GtkState from Gtk.Types import :: GtkDirection, :: GtkExpand, :: GtkLabel, - :: GtkOrientation, :: GtkPanedHandleWidth, :: GtkResize, :: GtkShrink + :: GtkMargins, :: GtkOrientation, :: GtkPanedHandleWidth, :: GtkResize, + :: GtkShrink class ptr a :: !a -> Pointer @@ -17,6 +18,8 @@ class gtkWidget a :: !a -> GtkWidget instance gtkWidget GtkWidget instance ptr GtkWidget +setMargins :: !GtkMargins !w -> State GtkState () | gtkWidget w + :: GtkContainer class gtkContainer a :: !a -> GtkContainer diff --git a/src/Gtk/Widgets.icl b/src/Gtk/Widgets.icl index d9f7a59..1a56764 100644 --- a/src/Gtk/Widgets.icl +++ b/src/Gtk/Widgets.icl @@ -19,6 +19,14 @@ import Gtk.Types instance gtkWidget GtkWidget where gtkWidget w = w instance ptr GtkWidget where ptr w = w +setMargins :: !GtkMargins !w -> State GtkState () | gtkWidget w +setMargins {left,top,right,bottom} widget` = + let widget = gtkWidget widget` in + toState ('I'.gtk_widget_set_margin_left widget left) >>| + toState ('I'.gtk_widget_set_margin_top widget top) >>| + toState ('I'.gtk_widget_set_margin_right widget right) >>| + toState ('I'.gtk_widget_set_margin_bottom widget bottom) + show :: !w -> State GtkState w | gtkWidget w show widget = toState ('I'.gtk_widget_show (gtkWidget widget)) >>| pure widget diff --git a/test/test.icl b/test/test.icl index 635f8ff..5341e9f 100644 --- a/test/test.icl +++ b/test/test.icl @@ -14,11 +14,14 @@ where app = newWindow "Hello!" Nothing >>= \window -> installSignalHandler window (DestroyHandler quit) >>| - newPaned Horizontal WideHandle >>= \paned -> - addToContainer paned window >>| + framed (Label "label") (newPaned Horizontal WideHandle) >>= \(paned,frame) -> + setMargins (margin 8) frame >>| + addToContainer frame window >>| newTextView >>= \text_view_a -> newTextView >>= \text_view_b -> - packPane1 text_view_a paned Resize Shrink >>| - packPane2 text_view_b paned Resize Shrink >>| + setMargins (margin 3) text_view_a >>| + setMargins (margin 3) text_view_b >>| + packPane1 text_view_a paned Resize NoShrink >>| + packPane2 text_view_b paned Resize NoShrink >>| insertAtCursor "Hello" (getTextBuffer text_view_a) >>| insertAtCursor "world!" (getTextBuffer text_view_b) |