implementation module Gtk.Widgets.Sheet import StdEnv import Control.Monad import System._Pointer import Gtk import Gtk.Widgets.Sheet.Internal :: GtkSheet :== Pointer instance gtkWidget GtkSheet where gtkWidget s = fromPtr s instance gtkContainer GtkSheet where gtkContainer s = fromPtr s 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 = toState (gtk_sheet_columns_set_resizable sheet setting=:ColumnsResizable) >>| pure sheet instance tune GtkSheet GtkSheetColumnSensitity where tune setting sheet = toState (gtk_sheet_columns_set_sensitivity sheet setting=:ColumnsSensitive) >>| pure sheet instance tune GtkSheet GtkSheetRowResizability where tune setting sheet = toState (gtk_sheet_rows_set_resizable sheet setting=:RowsResizable) >>| pure sheet instance tune GtkSheet GtkSheetRowSensitity where tune setting sheet = toState (gtk_sheet_rows_set_sensitivity sheet setting=:RowsSensitive) >>| pure sheet