1 /* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 #ifndef _GNM_SHEET_VIEW_H_
3 # define _GNM_SHEET_VIEW_H_
6 #include <glib-object.h>
11 GNM_SHEET_VIEW_NORMAL_MODE
,
12 GNM_SHEET_VIEW_PAGE_BREAK_MODE
,
13 GNM_SHEET_VIEW_LAYOUT_MODE
23 GList
*ants
; /* animated cursors */
25 /* an ordered list of Ranges, the first of which corresponds to the
26 * a normalized version of SheetView::{cursor.base_corner:move_corner}
29 GSList
*selections_simplified
;
30 int selection_mode
; /* GnmSelectionMode */
32 GnmCellPos edit_pos
; /* Cell that would be edited */
33 GnmCellPos edit_pos_real
; /* Even in the middle of a merged cell */
34 int first_tab_col
; /* where to jump to after an Enter */
37 /* Static corner to rubber band the selection range around */
38 GnmCellPos base_corner
;
39 /* Corner that is moved when the selection range is extended */
40 GnmCellPos move_corner
;
43 GnmCellPos initial_top_left
;
44 GnmCellPos frozen_top_left
;
45 GnmCellPos unfrozen_top_left
;
48 unsigned char enable_insert_rows
;
49 unsigned char enable_insert_cols
;
50 unsigned char enable_insert_cells
;
51 unsigned char reposition_selection
;
53 GnmSheetViewMode view_mode
;
55 /* TODO : these should be replaced with Dependents when we support
56 * format based dependents
58 unsigned char selection_content_changed
;
60 unsigned char location
;
61 unsigned char content
; /* entered content NOT value */
64 guint auto_expr_timer
;
67 typedef GObjectClass SheetViewClass
;
69 #define GNM_SHEET_VIEW_TYPE (gnm_sheet_view_get_type ())
70 #define GNM_SHEET_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GNM_SHEET_VIEW_TYPE, SheetView))
71 #define GNM_IS_SHEET_VIEW(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNM_SHEET_VIEW_TYPE))
74 GType
gnm_sheet_view_get_type (void);
75 SheetView
*gnm_sheet_view_new (Sheet
*sheet
, WorkbookView
*wbv
);
76 void gnm_sheet_view_attach_control (SheetView
*sv
, SheetControl
*sc
);
77 void gnm_sheet_view_detach_control (SheetView
*sv
, SheetControl
*sc
);
78 void gnm_sheet_view_weak_ref (SheetView
*sv
, SheetView
**ptr
);
79 void gnm_sheet_view_weak_unref (SheetView
**ptr
);
80 void gnm_sheet_view_update (SheetView
*sv
);
81 void gnm_sheet_view_dispose (SheetView
*sv
);
84 Sheet
*sv_sheet (SheetView
const *sv
);
85 WorkbookView
*sv_wbv (SheetView
const *sv
);
86 gboolean
gnm_sheet_view_is_frozen (SheetView
const *sv
);
88 GnmFilter
*gnm_sheet_view_editpos_in_filter (SheetView
const *sv
);
89 GnmFilter
*gnm_sheet_view_selection_intersects_filter_rows (SheetView
const *sv
);
90 GnmRange
*gnm_sheet_view_selection_extends_filter (SheetView
const *sv
,
92 GnmSheetSlicer
*gnm_sheet_view_editpos_in_slicer (SheetView
const *sv
);
95 void gnm_sheet_view_flag_status_update_pos (SheetView
*sv
, GnmCellPos
const *pos
);
96 void gnm_sheet_view_flag_status_update_range (SheetView
*sv
, GnmRange
const *range
);
97 void gnm_sheet_view_flag_style_update_range (SheetView
*sv
, GnmRange
const *range
);
98 void gnm_sheet_view_flag_selection_change (SheetView
*sv
);
100 void gnm_sheet_view_unant (SheetView
*sv
);
101 void gnm_sheet_view_ant (SheetView
*sv
, GList
*ranges
);
102 gboolean
gnm_sheet_view_selection_copy (SheetView
*sv
, WorkbookControl
*wbc
);
103 gboolean
gnm_sheet_view_selection_cut (SheetView
*sv
, WorkbookControl
*wbc
);
105 void gnm_sheet_view_make_cell_visible (SheetView
*sv
, int col
, int row
,
106 gboolean couple_panes
);
107 void gnm_sheet_view_redraw_range (SheetView
*sv
, GnmRange
const *r
);
108 void gnm_sheet_view_redraw_headers (SheetView
const *sheet
,
109 gboolean col
, gboolean row
,
111 void gnm_sheet_view_resize (SheetView
*sv
, gboolean force_scroll
);
112 void gnm_sheet_view_cursor_set (SheetView
*sv
,
113 GnmCellPos
const *edit
,
114 int base_col
, int base_row
,
115 int move_col
, int move_row
,
116 GnmRange
const *bound
);
117 void gnm_sheet_view_set_edit_pos (SheetView
*sv
, GnmCellPos
const *pos
);
119 void gnm_sheet_view_freeze_panes (SheetView
*sv
,
120 GnmCellPos
const *frozen_top_left
,
121 GnmCellPos
const *unfrozen_top_left
);
122 void gnm_sheet_view_panes_insdel_colrow (SheetView
*sv
, gboolean is_cols
,
123 gboolean is_insert
, int start
, int count
);
124 void gnm_sheet_view_set_initial_top_left(SheetView
*sv
, int col
, int row
);
126 #define SHEET_VIEW_FOREACH_CONTROL(sv, control, code) \
129 GPtrArray *controls = (sv)->controls; \
130 for (ctrlno = controls->len; ctrlno-- > 0 ;) { \
131 SheetControl *control = \
132 g_ptr_array_index (controls, ctrlno); \
139 #endif /* _GNM_SHEET_VIEW_H_ */