summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Gtk/Widgets/Sheet.dcl6
-rw-r--r--src/Gtk/Widgets/Sheet.icl30
-rw-r--r--src/Gtk/Widgets/Sheet/Internal.dcl22
-rw-r--r--src/Gtk/Widgets/Sheet/Internal.icl96
4 files changed, 142 insertions, 12 deletions
diff --git a/src/Gtk/Widgets/Sheet.dcl b/src/Gtk/Widgets/Sheet.dcl
index 9bec404..37523f7 100644
--- a/src/Gtk/Widgets/Sheet.dcl
+++ b/src/Gtk/Widgets/Sheet.dcl
@@ -18,6 +18,12 @@ instance gtkWidget GtkSheet
instance gtkContainer GtkSheet
newSheet :: !Int !Int !String -> GtkM GtkSheet
+whileFrozen :: !(GtkM a) !GtkSheet -> GtkM a
+
+ensureDimensions :: !Int !Int !GtkSheet -> GtkM GtkSheet
+
+setColumnTitle :: !Int !String !GtkSheet -> GtkM GtkSheet
+setCellText :: !Int !Int !String !GtkSheet -> GtkM GtkSheet
:: GtkSheetColumnResizability
= ColumnsResizable
diff --git a/src/Gtk/Widgets/Sheet.icl b/src/Gtk/Widgets/Sheet.icl
index f27d964..dcafa26 100644
--- a/src/Gtk/Widgets/Sheet.icl
+++ b/src/Gtk/Widgets/Sheet.icl
@@ -17,6 +17,36 @@ newSheet :: !Int !Int !String -> GtkM GtkSheet
newSheet nrows ncols title =
toStateR (gtk_sheet_new nrows ncols title) >>= show
+whileFrozen :: !(GtkM a) !GtkSheet -> GtkM a
+whileFrozen m sheet =
+ toState (gtk_sheet_freeze sheet) >>|
+ m >>= \r ->
+ toState (gtk_sheet_unfreeze sheet) >>|
+ pure r
+
+ensureDimensions :: !Int !Int !GtkSheet -> GtkM GtkSheet
+ensureDimensions nrows ncols sheet =
+ toStateR (gtk_sheet_get_rows_count sheet) >>= \current_nrows ->
+ if (nrows < current_nrows)
+ (toState (gtk_sheet_delete_rows sheet nrows (current_nrows-nrows)))
+ (toState (gtk_sheet_add_rows sheet (nrows-current_nrows))) >>|
+ toStateR (gtk_sheet_get_columns_count sheet) >>= \current_ncols ->
+ if (ncols < current_ncols)
+ (toState (gtk_sheet_delete_columns sheet ncols (current_ncols-ncols)))
+ (toState (gtk_sheet_add_columns sheet (ncols-current_ncols))) >>|
+ pure sheet
+
+setColumnTitle :: !Int !String !GtkSheet -> GtkM GtkSheet
+setColumnTitle col title sheet =
+ toState (gtk_sheet_set_column_title sheet col title) >>|
+ pure sheet
+
+setCellText :: !Int !Int !String !GtkSheet -> GtkM GtkSheet
+setCellText row col text sheet =
+ toState (gtk_sheet_cell_delete sheet row col) >>|
+ toState (gtk_sheet_set_cell_text sheet row col text) >>|
+ 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 05f798c..ec8f340 100644
--- a/src/Gtk/Widgets/Sheet/Internal.dcl
+++ b/src/Gtk/Widgets/Sheet/Internal.dcl
@@ -2,8 +2,26 @@ definition module Gtk.Widgets.Sheet.Internal
from System._Pointer import :: Pointer
-gtk_sheet_columns_set_resizable :: !Pointer !Bool !.a -> .a
-gtk_sheet_columns_set_sensitivity :: !Pointer !Bool !.a -> .a
gtk_sheet_new :: !Int !Int !String !.a -> (!Pointer, !.a)
+
+gtk_sheet_freeze :: !Pointer !.a -> .a
+gtk_sheet_unfreeze :: !Pointer !.a -> .a
+
+gtk_sheet_add_rows :: !Pointer !Int !.a -> .a
+gtk_sheet_insert_rows :: !Pointer !Int !Int !.a -> .a
+gtk_sheet_delete_rows :: !Pointer !Int !Int !.a -> .a
+gtk_sheet_get_rows_count :: !Pointer !.a -> (!Int, !.a)
gtk_sheet_rows_set_resizable :: !Pointer !Bool !.a -> .a
gtk_sheet_rows_set_sensitivity :: !Pointer !Bool !.a -> .a
+
+gtk_sheet_add_columns :: !Pointer !Int !.a -> .a
+gtk_sheet_insert_columns :: !Pointer !Int !Int !.a -> .a
+gtk_sheet_delete_columns :: !Pointer !Int !Int !.a -> .a
+gtk_sheet_get_columns_count :: !Pointer !.a -> (!Int, !.a)
+gtk_sheet_set_column_title :: !Pointer !Int !String !.a -> .a
+gtk_sheet_columns_set_resizable :: !Pointer !Bool !.a -> .a
+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_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 4fcb3d9..67c7f37 100644
--- a/src/Gtk/Widgets/Sheet/Internal.icl
+++ b/src/Gtk/Widgets/Sheet/Internal.icl
@@ -2,16 +2,6 @@ implementation module Gtk.Widgets.Sheet.Internal
import System._Pointer
-gtk_sheet_columns_set_resizable :: !Pointer !Bool !.a -> .a
-gtk_sheet_columns_set_resizable sheet setting env = code {
- ccall gtk_sheet_columns_set_resizable "pI:V:A"
-}
-
-gtk_sheet_columns_set_sensitivity :: !Pointer !Bool !.a -> .a
-gtk_sheet_columns_set_sensitivity sheet setting env = code {
- ccall gtk_sheet_columns_set_sensitivity "pI:V:A"
-}
-
gtk_sheet_new :: !Int !Int !String !.a -> (!Pointer, !.a)
gtk_sheet_new rows cols title env = new rows cols (packString title) env
where
@@ -20,6 +10,36 @@ where
ccall gtk_sheet_new "IIs:p:A"
}
+gtk_sheet_freeze :: !Pointer !.a -> .a
+gtk_sheet_freeze sheet env = code {
+ ccall gtk_sheet_freeze "p:V:A"
+}
+
+gtk_sheet_unfreeze :: !Pointer !.a -> .a
+gtk_sheet_unfreeze sheet env = code {
+ ccall gtk_sheet_thaw "p:V:A"
+}
+
+gtk_sheet_add_rows :: !Pointer !Int !.a -> .a
+gtk_sheet_add_rows sheet nrows env = code {
+ ccall gtk_sheet_add_row "pI:V:A"
+}
+
+gtk_sheet_insert_rows :: !Pointer !Int !Int !.a -> .a
+gtk_sheet_insert_rows sheet before nrows env = code {
+ ccall gtk_sheet_insert_row "pII:V:A"
+}
+
+gtk_sheet_delete_rows :: !Pointer !Int !Int !.a -> .a
+gtk_sheet_delete_rows sheet start nrows env = code {
+ ccall gtk_sheet_delete_rows "pII:V:A"
+}
+
+gtk_sheet_get_rows_count :: !Pointer !.a -> (!Int, !.a)
+gtk_sheet_get_rows_count sheet env = code {
+ ccall gtk_sheet_get_rows_count "p:I:A"
+}
+
gtk_sheet_rows_set_resizable :: !Pointer !Bool !.a -> .a
gtk_sheet_rows_set_resizable sheet setting env = code {
ccall gtk_sheet_rows_set_resizable "pI:V:A"
@@ -29,3 +49,59 @@ gtk_sheet_rows_set_sensitivity :: !Pointer !Bool !.a -> .a
gtk_sheet_rows_set_sensitivity sheet setting env = code {
ccall gtk_sheet_rows_set_sensitivity "pI:V:A"
}
+
+gtk_sheet_add_columns :: !Pointer !Int !.a -> .a
+gtk_sheet_add_columns sheet ncolumns env = code {
+ ccall gtk_sheet_add_column "pI:V:A"
+}
+
+gtk_sheet_insert_columns :: !Pointer !Int !Int !.a -> .a
+gtk_sheet_insert_columns sheet before ncolumns env = code {
+ ccall gtk_sheet_insert_column "pII:V:A"
+}
+
+gtk_sheet_delete_columns :: !Pointer !Int !Int !.a -> .a
+gtk_sheet_delete_columns sheet start ncolumns env = code {
+ ccall gtk_sheet_delete_columns "pII:V:A"
+}
+
+gtk_sheet_get_columns_count :: !Pointer !.a -> (!Int, !.a)
+gtk_sheet_get_columns_count sheet env = code {
+ ccall gtk_sheet_get_columns_count "p:I:A"
+}
+
+gtk_sheet_set_column_title :: !Pointer !Int !String !.a -> .a
+gtk_sheet_set_column_title sheet col title env = set sheet col (packString title) env
+where
+ set :: !Pointer !Int !String !.a -> .a
+ set _ _ _ _ = code {
+ ccall gtk_sheet_set_column_title "pIs:V:A"
+ }
+
+gtk_sheet_columns_set_resizable :: !Pointer !Bool !.a -> .a
+gtk_sheet_columns_set_resizable sheet setting env = code {
+ ccall gtk_sheet_columns_set_resizable "pI:V:A"
+}
+
+gtk_sheet_columns_set_sensitivity :: !Pointer !Bool !.a -> .a
+gtk_sheet_columns_set_sensitivity sheet setting env = code {
+ ccall gtk_sheet_columns_set_sensitivity "pI:V:A"
+}
+
+gtk_sheet_cell_clear :: !Pointer !Int !Int !.a -> .a
+gtk_sheet_cell_clear sheet row col env = code {
+ ccall gtk_sheet_cell_clear "pII:V:A"
+}
+
+gtk_sheet_cell_delete :: !Pointer !Int !Int !.a -> .a
+gtk_sheet_cell_delete sheet row col env = code {
+ ccall gtk_sheet_cell_delete "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
+ set :: !Pointer !Int !Int !String !.a -> .a
+ set _ _ _ _ _ = code {
+ ccall gtk_sheet_set_cell_text "pIIs:V:A"
+ }