implementation module Gtk.Widgets.Sheet.Internal import StdEnv import StdMaybe import System._Pointer import code from library "-lgtksheet-4.0" gtk_sheet_new :: !Int !Int !String !.a -> (!Pointer, !.a) gtk_sheet_new rows cols title env = new rows cols (packString title) env where new :: !Int !Int !String !.a -> (!Pointer, !.a) new _ _ _ _ = code { ccall gtk_sheet_new "IIs:p:A" } gtk_sheet_get_entry :: !Pointer !.a -> (!Pointer, !.a) gtk_sheet_get_entry sheet env = code { ccall gtk_sheet_get_entry "p: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 "Gp: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_row_button_add_label :: !Pointer !Int !String !.a -> .a gtk_sheet_row_button_add_label sheet col title env = set sheet col (packString title) env where set :: !Pointer !Int !String !.a -> .a set _ _ _ _ = code { ccall gtk_sheet_row_button_add_label "pIs:V:A" } gtk_sheet_row_set_visibility :: !Pointer !Int !Bool !.a -> .a gtk_sheet_row_set_visibility sheet row setting env = code { ccall gtk_sheet_row_set_visibility "GpII:V: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" } 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_row_visible :: !Pointer !Int !.a -> (!Bool, !.a) gtk_sheet_row_visible sheet row env = code { ccall gtk_sheet_row_visible "pI:I: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_column_set_justification :: !Pointer !Int !Int !.a -> .a gtk_sheet_column_set_justification sheet col setting env = code { ccall gtk_sheet_column_set_justification "pII: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 "GpII: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 "GpII:V:A" } gtk_sheet_cell_get_text :: !Pointer !Int !Int !.a -> (!Maybe String, !.a) gtk_sheet_cell_get_text sheet row col env # (content,env) = get sheet row col env | content == 0 = (Nothing, env) # (content_string,content) = readP derefString content = (Just content_string, env) where get :: !Pointer !Int !Int !.a -> (!Pointer, !.a) get _ _ _ _ = code { ccall gtk_sheet_cell_get_text "pII:p:A" } gtk_sheet_get_active_cell :: !Pointer !.a -> (!(!Int, !Int), !.a) 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" } 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 "GpIIs:V:A" } gtk_sheet_range_set_css_class :: !Pointer !(!Int,!Int) !(!Int,!Int) !String !.a -> .a gtk_sheet_range_set_css_class sheet (r1,c1) (r2,c2) cls env # range = IF_INT_64_OR_32 {#c1<<32+r1,c2<<32+r2} {#r1,c1,r2,c2} = set sheet (get_array_ptr range + IF_INT_64_OR_32 24 16) (packString cls) env where set :: !Pointer !Pointer !String !.a -> .a set _ _ _ _ = code { ccall gtk_sheet_range_set_css_class "pps:V:A" } gtk_sheet_range_set_editable :: !Pointer !(!Int,!Int) !(!Int,!Int) !Bool !.a -> .a gtk_sheet_range_set_editable sheet (r1,c1) (r2,c2) setting env # range = IF_INT_64_OR_32 {#c1<<32+r1,c2<<32+r2} {#r1,c1,r2,c2} = set sheet (get_array_ptr range + IF_INT_64_OR_32 24 16) setting env where set :: !Pointer !Pointer !Bool !.a -> .a set _ _ _ _ = code { ccall gtk_sheet_range_set_editable "ppI:V:A" } get_array_ptr :: !{#Int} -> Pointer get_array_ptr _ = code { push_a_b 0 pop_a 1 }