blob: a1a8c1f4a35a871c1864de3937ef2b0250fd6e5d (
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
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) = unsafeToWidget s
instance gtkContainer GtkSheet where gtkContainer (GtkSheet s) = unsafeToContainer 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
scrollToCell :: !GtkSheetScrollMode !Int !Int !GtkSheet -> GtkM GtkSheet
scrollToCell scroll_mode row col sheet=:(GtkSheet s) =
toState (gtk_sheet_moveto s row col row_align col_align) >>|
pure sheet
where
(row_align,col_align) = case scroll_mode of
CellInTopLeft -> (0,0)
CellInTopRight -> (0,1)
CellInBottomLeft -> (1,0)
CellInBottomRight -> (1,1)
getEntry :: !GtkSheet -> GtkM GtkEntry
getEntry (GtkSheet s) =
toStateR (gtk_sheet_get_entry s) >>= \e ->
pure (unsafeToEntry e)
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
|