summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCamil Staps2019-10-23 16:46:10 +0200
committerCamil Staps2019-10-23 16:46:10 +0200
commit2eae627be1d6d5c622fe41422b301800a3190778 (patch)
tree3c7de3f2e819f539bb895a7213c91b6008e015a0 /src
parentAdd get/setActiveCell for GtkSheet (diff)
Add setCSSClassForRange for GtkSheet
Diffstat (limited to 'src')
-rw-r--r--src/Gtk/Widgets/Sheet.dcl2
-rw-r--r--src/Gtk/Widgets/Sheet.icl5
-rw-r--r--src/Gtk/Widgets/Sheet/Internal.dcl2
-rw-r--r--src/Gtk/Widgets/Sheet/Internal.icl18
4 files changed, 27 insertions, 0 deletions
diff --git a/src/Gtk/Widgets/Sheet.dcl b/src/Gtk/Widgets/Sheet.dcl
index c5e1f58..781cdd9 100644
--- a/src/Gtk/Widgets/Sheet.dcl
+++ b/src/Gtk/Widgets/Sheet.dcl
@@ -8,6 +8,7 @@ definition module Gtk.Widgets.Sheet
from Gtk.State import :: GtkM
from Gtk.Tune import class tune
+from Gtk.Types import :: GtkCSSClass
from Gtk.Widgets import
class gtkWidget, :: GtkWidget,
class gtkContainer, :: GtkContainer
@@ -27,6 +28,7 @@ ensureDimensions :: !Int !Int !GtkSheet -> GtkM GtkSheet
setColumnTitle :: !Int !String !GtkSheet -> GtkM GtkSheet
setRowTitle :: !Int !String !GtkSheet -> GtkM GtkSheet
setCellText :: !Int !Int !String !GtkSheet -> GtkM GtkSheet
+setCSSClassForRange :: !GtkCSSClass !(!Int,!Int) !(!Int,!Int) !GtkSheet -> GtkM GtkSheet
getActiveCell :: !GtkSheet -> GtkM (Maybe (Int,Int))
setActiveCell :: !Int !Int !GtkSheet -> GtkM GtkSheet
diff --git a/src/Gtk/Widgets/Sheet.icl b/src/Gtk/Widgets/Sheet.icl
index 07789df..4bdf2ac 100644
--- a/src/Gtk/Widgets/Sheet.icl
+++ b/src/Gtk/Widgets/Sheet.icl
@@ -53,6 +53,11 @@ setCellText row col text sheet =
toState (gtk_sheet_set_cell_text sheet row col text) >>|
pure sheet
+setCSSClassForRange :: !GtkCSSClass !(!Int,!Int) !(!Int,!Int) !GtkSheet -> GtkM GtkSheet
+setCSSClassForRange (Class cls) top_left bottom_right sheet =
+ toState (gtk_sheet_range_set_css_class sheet top_left bottom_right cls) >>|
+ pure sheet
+
getActiveCell :: !GtkSheet -> GtkM (Maybe (Int,Int))
getActiveCell sheet =
toStateR (gtk_sheet_get_active_cell sheet) >>= \cell=:(row,col)
diff --git a/src/Gtk/Widgets/Sheet/Internal.dcl b/src/Gtk/Widgets/Sheet/Internal.dcl
index b372c54..27c7945 100644
--- a/src/Gtk/Widgets/Sheet/Internal.dcl
+++ b/src/Gtk/Widgets/Sheet/Internal.dcl
@@ -28,3 +28,5 @@ gtk_sheet_cell_delete :: !Pointer !Int !Int !.a -> .a
gtk_sheet_get_active_cell :: !Pointer !.a -> (!(!Int, !Int), !.a)
gtk_sheet_set_active_cell :: !Pointer !Int !Int !.a -> .a
gtk_sheet_set_cell_text :: !Pointer !Int !Int !String !.a -> .a
+
+gtk_sheet_range_set_css_class :: !Pointer !(!Int,!Int) !(!Int,!Int) !String !.a -> .a
diff --git a/src/Gtk/Widgets/Sheet/Internal.icl b/src/Gtk/Widgets/Sheet/Internal.icl
index 69459b6..060d6ab 100644
--- a/src/Gtk/Widgets/Sheet/Internal.icl
+++ b/src/Gtk/Widgets/Sheet/Internal.icl
@@ -1,5 +1,7 @@
implementation module Gtk.Widgets.Sheet.Internal
+import StdEnv
+
import System._Pointer
gtk_sheet_new :: !Int !Int !String !.a -> (!Pointer, !.a)
@@ -123,3 +125,19 @@ where
set _ _ _ _ _ = code {
ccall gtk_sheet_set_cell_text "pIIs:V:A"
}
+
+gtk_sheet_range_set_css_class :: !Pointer !(!Int,!Int) !(!Int,!Int) !String !.a -> .a
+gtk_sheet_range_set_css_class sheet (r1,c1) (r2,c2) cls env
+ # range = IF_INT_64_OR_32 {#c1<<32+r1,c2<<32+r2} {#r1,c1,r2,c2}
+ = set sheet (get_ptr range + IF_INT_64_OR_32 24 16) (packString cls) env
+where
+ set :: !Pointer !Pointer !String !.a -> .a
+ set _ _ _ _ = code {
+ ccall gtk_sheet_range_set_css_class "pps:V:A"
+ }
+
+ get_ptr :: !{#Int} -> Pointer
+ get_ptr _ = code {
+ push_a_b 0
+ pop_a 1
+ }