sheet.h 2.6 KB
Newer Older
Arturo Espinosa's avatar
Arturo Espinosa committed
1
2
#ifndef SHEET_H
#define SHEET_H
3
4
5
6
7
8

typedef GList ColStyleList;

struct Workbook;

typedef struct {
Arturo Espinosa's avatar
Arturo Espinosa committed
9
10
	GtkWidget  *toplevel;
	GtkWidget  *notebook;
11
12
13
14
15
16
	GtkWidget  *table;

	/* Edit area */
	GtkWidget  *ea_status;
	GtkWidget  *ea_button_box;
	GtkWidget  *ea_input;
Arturo Espinosa's avatar
Arturo Espinosa committed
17
18
19
20
21
22
23
	
	Style      style;
	GHashTable *sheets;	/* keeps a list of the Sheets on this workbook */
} Workbook;

typedef struct {
	Workbook   *parent_workbook;
24
	GtkWidget  *toplevel, *col_canvas, *row_canvas;
Arturo Espinosa's avatar
Arturo Espinosa committed
25
	GtkWidget  *sheet_view;
26
27
28
	GnomeCanvasItem *col_item, *row_item;
	
	double     last_zoom_factor_used;
29
30
31
	char       *name;
		   
	Style      style;
32

33
	ColRowInfo default_col_style;
34
	GList      *cols_info;
35

36
	ColRowInfo default_row_style;
37
38
39
40
	GList      *rows_info;
	void       *contents;
} Sheet;

41
42
43
44
45
46
47
48
typedef  void (*sheet_col_row_callback)(Sheet *sheet, ColRowInfo *ci, void *user_data);

Sheet      *sheet_new                (Workbook *wb, char *name);
void        sheet_foreach_col        (Sheet *sheet, sheet_col_row_callback, void *user_data);
void        sheet_foreach_row        (Sheet *sheet, sheet_col_row_callback, void *user_data);
void        sheet_set_zoom_factor    (Sheet *sheet, double factor);
void        sheet_get_cell_bounds    (Sheet *sheet, ColType col, RowType row, int *x, int *y, int *w, int *h);

Arturo Espinosa's avatar
Arturo Espinosa committed
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/* Create new ColRowInfos from the default sheet style */
ColRowInfo *sheet_col_new            (Sheet *sheet);
ColRowInfo *sheet_row_new            (Sheet *sheet);

/* Duplicates the information of a col/row */
ColRowInfo *sheet_duplicate_colrow   (ColRowInfo *original);

/* Retrieve information from a col/row */
ColRowInfo *sheet_col_get_info       (Sheet *sheet, int col);
ColRowInfo *sheet_row_get_info       (Sheet *sheet, int row);

/* Add a ColRowInfo to the Sheet */
void        sheet_col_add            (Sheet *sheet, ColRowInfo *cp);
void        sheet_row_add            (Sheet *sheet, ColRowInfo *cp);

/* Measure distances in pixels from one col/row to another */
int         sheet_col_get_distance   (Sheet *sheet, int from_col, int to_col);
int         sheet_row_get_distance   (Sheet *sheet, int from_row, int to_row);

/* Sets the width/height of a column row in terms of pixels */
void        sheet_col_set_width      (Sheet *sheet, int col, int width);
void        sheet_row_set_height     (Sheet *sheet, int row, int width);

72
73
74
Workbook   *workbook_new             (void);
Workbook   *workbook_new_with_sheets (int sheet_count);
void        workbook_attach_sheet    (Workbook *, Sheet *);
Arturo Espinosa's avatar
Arturo Espinosa committed
75

76
77
78
79
80
81
/*
 * Callback routine: invoked when the first view ItemGrid
 * is realized to allocate the default styles
 */
void     workbook_realized         (Workbook *, GdkWindow *);

82
#endif