summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Gtk/Widgets/Sheet.dcl3
-rw-r--r--src/Gtk/Widgets/Sheet.icl13
-rw-r--r--src/Gtk/Widgets/Sheet/Internal.dcl2
-rw-r--r--src/Gtk/Widgets/Sheet/Internal.icl10
4 files changed, 28 insertions, 0 deletions
diff --git a/src/Gtk/Widgets/Sheet.dcl b/src/Gtk/Widgets/Sheet.dcl
index f7298a9..c5e1f58 100644
--- a/src/Gtk/Widgets/Sheet.dcl
+++ b/src/Gtk/Widgets/Sheet.dcl
@@ -28,6 +28,9 @@ setColumnTitle :: !Int !String !GtkSheet -> GtkM GtkSheet
setRowTitle :: !Int !String !GtkSheet -> GtkM GtkSheet
setCellText :: !Int !Int !String !GtkSheet -> GtkM GtkSheet
+getActiveCell :: !GtkSheet -> GtkM (Maybe (Int,Int))
+setActiveCell :: !Int !Int !GtkSheet -> GtkM GtkSheet
+
:: GtkSheetColumnResizability
= ColumnsResizable
| ColumnsFixedSize
diff --git a/src/Gtk/Widgets/Sheet.icl b/src/Gtk/Widgets/Sheet.icl
index e34a304..07789df 100644
--- a/src/Gtk/Widgets/Sheet.icl
+++ b/src/Gtk/Widgets/Sheet.icl
@@ -1,6 +1,7 @@
implementation module Gtk.Widgets.Sheet
import StdEnv
+import StdMaybe
import Control.Monad
import System._Pointer
@@ -52,6 +53,18 @@ setCellText row col text sheet =
toState (gtk_sheet_set_cell_text sheet row col text) >>|
pure sheet
+getActiveCell :: !GtkSheet -> GtkM (Maybe (Int,Int))
+getActiveCell sheet =
+ toStateR (gtk_sheet_get_active_cell sheet) >>= \cell=:(row,col)
+ | row < 0 || col < 0
+ -> pure Nothing
+ -> pure (Just cell)
+
+setActiveCell :: !Int !Int !GtkSheet -> GtkM GtkSheet
+setActiveCell row col sheet =
+ toState (gtk_sheet_set_active_cell sheet row col) >>|
+ pure sheet
+
instance tune GtkSheet GtkSheetColumnResizability
where
tune setting sheet =
diff --git a/src/Gtk/Widgets/Sheet/Internal.dcl b/src/Gtk/Widgets/Sheet/Internal.dcl
index 4f1eec3..b372c54 100644
--- a/src/Gtk/Widgets/Sheet/Internal.dcl
+++ b/src/Gtk/Widgets/Sheet/Internal.dcl
@@ -25,4 +25,6 @@ gtk_sheet_columns_set_sensitivity :: !Pointer !Bool !.a -> .a
gtk_sheet_cell_clear :: !Pointer !Int !Int !.a -> .a
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
diff --git a/src/Gtk/Widgets/Sheet/Internal.icl b/src/Gtk/Widgets/Sheet/Internal.icl
index 5f45cfc..69459b6 100644
--- a/src/Gtk/Widgets/Sheet/Internal.icl
+++ b/src/Gtk/Widgets/Sheet/Internal.icl
@@ -106,6 +106,16 @@ gtk_sheet_cell_delete sheet row col env = code {
ccall gtk_sheet_cell_delete "pII:V:A"
}
+gtk_sheet_get_active_cell :: !Pointer !.a -> (!(!Int, !Int), !.a)
+gtk_sheet_get_active_cell sheet env = code {
+ ccall gtk_sheet_get_active_cell "p:VII:A"
+}
+
+gtk_sheet_set_active_cell :: !Pointer !Int !Int !.a -> .a
+gtk_sheet_set_active_cell sheet row col env = code {
+ ccall gtk_sheet_set_active_cell "pII:V:A"
+}
+
gtk_sheet_set_cell_text :: !Pointer !Int !Int !String !.a -> .a
gtk_sheet_set_cell_text sheet row col text env = set sheet row col (packString text) env
where