blob: d4625a3abc387fb10f63aca60c81f9c123cb21f5 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
implementation module Gtk.Widgets.Sheet
import StdEnv
import StdMaybe
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
setRowTitle :: !Int !String !GtkSheet -> GtkM GtkSheet
setRowTitle row title sheet =
toState (gtk_sheet_row_button_add_label sheet row title) >>|
pure sheet
setCellText :: !Int !Int !String !GtkSheet -> GtkM GtkSheet
setCellText row col text sheet =
toState (gtk_sheet_cell_clear sheet row col) >>|
toState (gtk_sheet_set_cell_text sheet row col text) >>|
pure sheet
setCSSClassForRange :: !GtkCSSClass !(!Int,!Int) !(!Int,!Int) !GtkSheet -> GtkM GtkSheet
setCSSClassForRange (Class cls) top_left bottom_right sheet =
toState (gtk_sheet_range_set_css_class sheet top_left bottom_right cls) >>|
pure sheet
setRangeEditable :: !Bool !(!Int,!Int) !(!Int,!Int) !GtkSheet -> GtkM GtkSheet
setRangeEditable setting top_left bottom_right sheet =
toState (gtk_sheet_range_set_editable sheet top_left bottom_right setting) >>|
pure sheet
getActiveCell :: !GtkSheet -> GtkM (Maybe (Int,Int))
getActiveCell sheet =
toStateR (gtk_sheet_get_active_cell sheet) >>= \cell=:(row,col)
| row < 0 || col < 0
-> pure Nothing
-> pure (Just cell)
setActiveCell :: !Int !Int !GtkSheet -> GtkM GtkSheet
setActiveCell row col sheet =
toState (gtk_sheet_set_active_cell sheet row col) >>|
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
|