Move plugin init code
[gnumeric.git] / src / sheet-view.h
blob35af18b8dac2ba504811c4b47d53388728dad862
1 #ifndef _GNM_SHEET_VIEW_H_
2 # define _GNM_SHEET_VIEW_H_
4 #include <gnumeric.h>
5 #include <glib-object.h>
7 G_BEGIN_DECLS
9 typedef enum {
10 GNM_SHEET_VIEW_NORMAL_MODE,
11 GNM_SHEET_VIEW_PAGE_BREAK_MODE,
12 GNM_SHEET_VIEW_LAYOUT_MODE
13 } GnmSheetViewMode;
15 struct _SheetView {
16 GObject base;
18 Sheet *sheet;
19 WorkbookView *sv_wbv;
20 GPtrArray *controls;
22 GList *ants; /* animated cursors */
24 /* an ordered list of Ranges, the first of which corresponds to the
25 * a normalized version of SheetView::{cursor.base_corner:move_corner}
27 GSList *selections;
28 GSList *selections_simplified;
29 int selection_mode; /* GnmSelectionMode */
31 GnmCellPos edit_pos; /* Cell that would be edited */
32 GnmCellPos edit_pos_real; /* Even in the middle of a merged cell */
33 int first_tab_col; /* where to jump to after an Enter */
35 struct {
36 /* Static corner to rubber band the selection range around */
37 GnmCellPos base_corner;
38 /* Corner that is moved when the selection range is extended */
39 GnmCellPos move_corner;
40 } cursor;
42 GnmCellPos initial_top_left;
43 GnmCellPos frozen_top_left;
44 GnmCellPos unfrozen_top_left;
46 /* state flags */
47 unsigned char enable_insert_rows;
48 unsigned char enable_insert_cols;
49 unsigned char enable_insert_cells;
50 unsigned char reposition_selection;
52 GnmSheetViewMode view_mode;
54 /* TODO : these should be replaced with Dependents when we support
55 * format based dependents
57 unsigned char selection_content_changed;
58 struct {
59 unsigned char location;
60 unsigned char content; /* entered content NOT value */
61 unsigned char style;
62 } edit_pos_changed;
63 guint auto_expr_timer;
66 typedef GObjectClass SheetViewClass;
68 #define GNM_SHEET_VIEW_TYPE (gnm_sheet_view_get_type ())
69 #define GNM_SHEET_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GNM_SHEET_VIEW_TYPE, SheetView))
70 #define GNM_IS_SHEET_VIEW(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNM_SHEET_VIEW_TYPE))
72 /* Lifecycle */
73 GType gnm_sheet_view_get_type (void);
74 SheetView *gnm_sheet_view_new (Sheet *sheet, WorkbookView *wbv);
75 void gnm_sheet_view_attach_control (SheetView *sv, SheetControl *sc);
76 void gnm_sheet_view_detach_control (SheetView *sv, SheetControl *sc);
77 void gnm_sheet_view_weak_ref (SheetView *sv, SheetView **ptr);
78 void gnm_sheet_view_weak_unref (SheetView **ptr);
79 void gnm_sheet_view_update (SheetView *sv);
80 void gnm_sheet_view_dispose (SheetView *sv);
82 /* Information */
83 Sheet *sv_sheet (SheetView const *sv);
84 WorkbookView *sv_wbv (SheetView const *sv);
85 gboolean gnm_sheet_view_is_frozen (SheetView const *sv);
87 GnmFilter *gnm_sheet_view_editpos_in_filter (SheetView const *sv);
88 GnmFilter *gnm_sheet_view_selection_intersects_filter_rows (SheetView const *sv);
89 GnmRange *gnm_sheet_view_selection_extends_filter (SheetView const *sv,
90 GnmFilter const *f);
91 GnmSheetSlicer *gnm_sheet_view_editpos_in_slicer (SheetView const *sv);
93 /* Manipulation */
94 void gnm_sheet_view_flag_status_update_pos (SheetView *sv, GnmCellPos const *pos);
95 void gnm_sheet_view_flag_status_update_range (SheetView *sv, GnmRange const *range);
96 void gnm_sheet_view_flag_style_update_range (SheetView *sv, GnmRange const *range);
97 void gnm_sheet_view_flag_selection_change (SheetView *sv);
99 void gnm_sheet_view_unant (SheetView *sv);
100 void gnm_sheet_view_ant (SheetView *sv, GList *ranges);
101 gboolean gnm_sheet_view_selection_copy (SheetView *sv, WorkbookControl *wbc);
102 gboolean gnm_sheet_view_selection_cut (SheetView *sv, WorkbookControl *wbc);
104 void gnm_sheet_view_make_cell_visible (SheetView *sv, int col, int row,
105 gboolean couple_panes);
106 void gnm_sheet_view_redraw_range (SheetView *sv, GnmRange const *r);
107 void gnm_sheet_view_redraw_headers (SheetView const *sheet,
108 gboolean col, gboolean row,
109 GnmRange const* r);
110 void gnm_sheet_view_resize (SheetView *sv, gboolean force_scroll);
111 void gnm_sheet_view_cursor_set (SheetView *sv,
112 GnmCellPos const *edit,
113 int base_col, int base_row,
114 int move_col, int move_row,
115 GnmRange const *bound);
116 void gnm_sheet_view_set_edit_pos (SheetView *sv, GnmCellPos const *pos);
118 void gnm_sheet_view_freeze_panes (SheetView *sv,
119 GnmCellPos const *frozen_top_left,
120 GnmCellPos const *unfrozen_top_left);
121 void gnm_sheet_view_panes_insdel_colrow (SheetView *sv, gboolean is_cols,
122 gboolean is_insert, int start, int count);
123 void gnm_sheet_view_set_initial_top_left(SheetView *sv, int col, int row);
125 #define SHEET_VIEW_FOREACH_CONTROL(sv, control, code) \
126 do { \
127 int ctrlno; \
128 GPtrArray *controls = (sv)->controls; \
129 for (ctrlno = controls->len; ctrlno-- > 0 ;) { \
130 SheetControl *control = \
131 g_ptr_array_index (controls, ctrlno); \
132 code \
134 } while (0)
136 G_END_DECLS
138 #endif /* _GNM_SHEET_VIEW_H_ */