diff options
Diffstat (limited to 'src/Gtk/Widgets')
-rw-r--r-- | src/Gtk/Widgets/Sheet.dcl | 2 | ||||
-rw-r--r-- | src/Gtk/Widgets/Sheet.icl | 5 | ||||
-rw-r--r-- | src/Gtk/Widgets/Sheet/Internal.dcl | 2 | ||||
-rw-r--r-- | src/Gtk/Widgets/Sheet/Internal.icl | 18 |
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 + } |