diff options
-rw-r--r-- | src/Gtk/Widgets/Sheet.dcl | 6 | ||||
-rw-r--r-- | src/Gtk/Widgets/Sheet.icl | 30 | ||||
-rw-r--r-- | src/Gtk/Widgets/Sheet/Internal.dcl | 22 | ||||
-rw-r--r-- | src/Gtk/Widgets/Sheet/Internal.icl | 96 |
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" + } |