diff options
author | Camil Staps | 2019-11-25 15:00:48 +0100 |
---|---|---|
committer | Camil Staps | 2019-11-25 15:00:48 +0100 |
commit | 43cd5030ab55966f71154551406b3edf08d1fb5e (patch) | |
tree | 88a3b1737352276983339b70c66121417c8a755d | |
parent | Add PixelsAboveLines, PixelsBelowLines, and PixelsInsideWrap to control line ... (diff) |
Add scrollToCell for GtkSheet
-rw-r--r-- | src/Gtk/Widgets/Sheet.dcl | 7 | ||||
-rw-r--r-- | src/Gtk/Widgets/Sheet.icl | 11 | ||||
-rw-r--r-- | src/Gtk/Widgets/Sheet/Internal.dcl | 1 | ||||
-rw-r--r-- | src/Gtk/Widgets/Sheet/Internal.icl | 5 |
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" |