blob: 521e3ee783bc919a9ef9dfbf1fb3348d6d37f9f2 (
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
implementation module Gtk.Widgets.Sheet
import StdEnv
import StdMaybe
import Control.Monad
import System._Pointer
import Gtk
import Gtk.Widgets.Sheet.Internal
:: GtkSheet =: GtkSheet Pointer
instance gtkWidget GtkSheet where gtkWidget (GtkSheet s) = GtkWidget s
instance gtkContainer GtkSheet where gtkContainer (GtkSheet s) = GtkContainer s
newSheet :: !Int !Int !String -> GtkM GtkSheet
newSheet nrows ncols title =
toStateR (gtk_sheet_new nrows ncols title) >>= \s ->
show (GtkSheet s)
whileFrozen :: !(GtkM a) !GtkSheet -> GtkM a
whileFrozen m (GtkSheet s) =
toState (gtk_sheet_freeze s) >>|
m >>= \r ->
toState (gtk_sheet_unfreeze s) >>|
pure r
ensureDimensions :: !Int !Int !GtkSheet -> GtkM GtkSheet
ensureDimensions nrows ncols sheet=:(GtkSheet s) =
toStateR (gtk_sheet_get_rows_count s) >>= \current_nrows ->
if (nrows < current_nrows)
(toState (gtk_sheet_delete_rows s nrows (current_nrows-nrows)))
(toState (gtk_sheet_add_rows s (nrows-current_nrows))) >>|
toStateR (gtk_sheet_get_columns_count s) >>= \current_ncols ->
if (ncols < current_ncols)
(toState (gtk_sheet_delete_columns s ncols (current_ncols-ncols)))
(toState (gtk_sheet_add_columns s (ncols-current_ncols))) >>|
pure sheet
setColumnTitle :: !Int !String !GtkSheet -> GtkM GtkSheet
setColumnTitle col title sheet=:(GtkSheet s) =
toState (gtk_sheet_set_column_title s col title) >>|
pure sheet
setColumnTitles :: ![String] !GtkSheet -> GtkM GtkSheet
setColumnTitles titles sheet =
sequence_ [setColumnTitle i t sheet \\ i <- [0..] & t <- titles] >>|
pure sheet
setRowTitle :: !Int !String !GtkSheet -> GtkM GtkSheet
setRowTitle row title sheet=:(GtkSheet s) =
toState (gtk_sheet_row_button_add_label s row title) >>|
pure sheet
setRowTitles :: ![String] !GtkSheet -> GtkM GtkSheet
setRowTitles titles sheet =
sequence_ [setRowTitle i t sheet \\ i <- [0..] & t <- titles] >>|
pure sheet
setCellText :: !Int !Int !String !GtkSheet -> GtkM GtkSheet
setCellText row col text sheet=:(GtkSheet s) =
toState (gtk_sheet_cell_clear s row col) >>|
toState (gtk_sheet_set_cell_text s row col text) >>|
pure sheet
getCellText :: !Int !Int !GtkSheet -> GtkM (Maybe String)
getCellText row col (GtkSheet s) = toStateR (gtk_sheet_cell_get_text s row col)
setColumnJustification :: !GtkJustification !Int !GtkSheet -> GtkM GtkSheet
setColumnJustification justification col sheet=:(GtkSheet s) =
toState (gtk_sheet_column_set_justification s col (toInt justification)) >>|
pure sheet
setCSSClassForRange :: !GtkCSSClass !(!Int,!Int) !(!Int,!Int) !GtkSheet -> GtkM GtkSheet
setCSSClassForRange (Class cls) top_left bottom_right sheet=:(GtkSheet s) =
toState (gtk_sheet_range_set_css_class s top_left bottom_right cls) >>|
pure sheet
setRangeEditable :: !Bool !(!Int,!Int) !(!Int,!Int) !GtkSheet -> GtkM GtkSheet
setRangeEditable setting top_left bottom_right sheet=:(GtkSheet s) =
toState (gtk_sheet_range_set_editable s top_left bottom_right setting) >>|
pure sheet
setRowVisibility :: !Bool !Int !GtkSheet -> GtkM GtkSheet
setRowVisibility setting row sheet=:(GtkSheet s) =
toState (gtk_sheet_row_set_visibility s row setting) >>|
pure sheet
isRowVisible :: !Int !GtkSheet -> GtkM Bool
isRowVisible row (GtkSheet s) = toStateR (gtk_sheet_row_visible s row)
getActiveCell :: !GtkSheet -> GtkM (Maybe (Int,Int))
getActiveCell (GtkSheet s) =
toStateR (gtk_sheet_get_active_cell s) >>= \cell=:(row,col)
| row < 0 || col < 0
-> pure Nothing
-> pure (Just cell)
setActiveCell :: !Int !Int !GtkSheet -> GtkM GtkSheet
setActiveCell row col sheet=:(GtkSheet s) =
toState (gtk_sheet_set_active_cell s row col) >>|
pure sheet
instance tune GtkSheet GtkSheetColumnResizability
where
tune setting sheet=:(GtkSheet s) =
toState (gtk_sheet_columns_set_resizable s setting=:ColumnsResizable) >>|
pure sheet
instance tune GtkSheet GtkSheetColumnSensitity
where
tune setting sheet=:(GtkSheet s) =
toState (gtk_sheet_columns_set_sensitivity s setting=:ColumnsSensitive) >>|
pure sheet
instance tune GtkSheet GtkSheetRowResizability
where
tune setting sheet=:(GtkSheet s) =
toState (gtk_sheet_rows_set_resizable s setting=:RowsResizable) >>|
pure sheet
instance tune GtkSheet GtkSheetRowSensitity
where
tune setting sheet=:(GtkSheet s) =
toState (gtk_sheet_rows_set_sensitivity s setting=:RowsSensitive) >>|
pure sheet
|