summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCamil Staps2019-11-25 15:00:48 +0100
committerCamil Staps2019-11-25 15:00:48 +0100
commit43cd5030ab55966f71154551406b3edf08d1fb5e (patch)
tree88a3b1737352276983339b70c66121417c8a755d
parentAdd PixelsAboveLines, PixelsBelowLines, and PixelsInsideWrap to control line ... (diff)
Add scrollToCell for GtkSheet
-rw-r--r--src/Gtk/Widgets/Sheet.dcl7
-rw-r--r--src/Gtk/Widgets/Sheet.icl11
-rw-r--r--src/Gtk/Widgets/Sheet/Internal.dcl1
-rw-r--r--src/Gtk/Widgets/Sheet/Internal.icl5
4 files changed, 24 insertions, 0 deletions
diff --git a/src/Gtk/Widgets/Sheet.dcl b/src/Gtk/Widgets/Sheet.dcl
index 5a4191d..ed9c335 100644
--- a/src/Gtk/Widgets/Sheet.dcl
+++ b/src/Gtk/Widgets/Sheet.dcl
@@ -59,6 +59,7 @@ isRowVisible :: !Int !GtkSheet -> GtkM Bool
getActiveCell :: !GtkSheet -> GtkM (Maybe (Int,Int))
setActiveCell :: !Int !Int !GtkSheet -> GtkM GtkSheet
+scrollToCell :: !GtkSheetScrollMode !Int !Int !GtkSheet -> GtkM GtkSheet
getEntry :: !GtkSheet -> GtkM GtkEntry
@@ -78,6 +79,12 @@ getEntry :: !GtkSheet -> GtkM GtkEntry
= RowsSensitive
| RowsInsensitive
+:: GtkSheetScrollMode
+ = CellInTopLeft
+ | CellInTopRight
+ | CellInBottomLeft
+ | CellInBottomRight
+
instance tune
GtkSheet GtkSheetColumnResizability,
GtkSheet GtkSheetColumnSensitity,
diff --git a/src/Gtk/Widgets/Sheet.icl b/src/Gtk/Widgets/Sheet.icl
index c28816f..a1a8c1f 100644
--- a/src/Gtk/Widgets/Sheet.icl
+++ b/src/Gtk/Widgets/Sheet.icl
@@ -102,6 +102,17 @@ setActiveCell row col sheet=:(GtkSheet s) =
toState (gtk_sheet_set_active_cell s row col) >>|
pure sheet
+scrollToCell :: !GtkSheetScrollMode !Int !Int !GtkSheet -> GtkM GtkSheet
+scrollToCell scroll_mode row col sheet=:(GtkSheet s) =
+ toState (gtk_sheet_moveto s row col row_align col_align) >>|
+ pure sheet
+where
+ (row_align,col_align) = case scroll_mode of
+ CellInTopLeft -> (0,0)
+ CellInTopRight -> (0,1)
+ CellInBottomLeft -> (1,0)
+ CellInBottomRight -> (1,1)
+
getEntry :: !GtkSheet -> GtkM GtkEntry
getEntry (GtkSheet s) =
toStateR (gtk_sheet_get_entry s) >>= \e ->
diff --git a/src/Gtk/Widgets/Sheet/Internal.dcl b/src/Gtk/Widgets/Sheet/Internal.dcl
index f799d00..02c6c4a 100644
--- a/src/Gtk/Widgets/Sheet/Internal.dcl
+++ b/src/Gtk/Widgets/Sheet/Internal.dcl
@@ -37,6 +37,7 @@ gtk_sheet_cell_clear :: !Pointer !Int !Int !.a -> .a
gtk_sheet_cell_delete :: !Pointer !Int !Int !.a -> .a
gtk_sheet_cell_get_text :: !Pointer !Int !Int !.a -> (!Maybe String, !.a)
gtk_sheet_get_active_cell :: !Pointer !.a -> (!(!Int, !Int), !.a)
+gtk_sheet_moveto :: !Pointer !Int !Int !Int !Int !.a -> .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 d465984..9da7850 100644
--- a/src/Gtk/Widgets/Sheet/Internal.icl
+++ b/src/Gtk/Widgets/Sheet/Internal.icl
@@ -148,6 +148,11 @@ gtk_sheet_get_active_cell sheet env = code {
ccall gtk_sheet_get_active_cell "p:VII:A"
}
+gtk_sheet_moveto :: !Pointer !Int !Int !Int !Int !.a -> .a
+gtk_sheet_moveto sheet row col row_align col_align env = code {
+ ccall gtk_sheet_moveto "pIIII:V: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 "GpII:V:A"