1 #ifndef _GNM_WORKBOOK_H_ 2 # define _GNM_WORKBOOK_H_ 3 4 #include <gnumeric.h> 5 #include <goffice/goffice.h> 6 #include <glib-object.h> 7 #include <gui-file.h> 8 9 G_BEGIN_DECLS 10 11 #define GNM_WORKBOOK_TYPE (workbook_get_type ()) 12 #define WORKBOOK(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GNM_WORKBOOK_TYPE, Workbook)) 13 #define GNM_IS_WORKBOOK(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNM_WORKBOOK_TYPE)) 14 15 GType workbook_get_type (void); 16 Workbook *workbook_new (void); 17 Workbook *workbook_new_with_sheets (int sheet_count); 18 19 void workbook_mark_dirty (Workbook *wb); 20 21 /* Sheet support routines */ 22 GPtrArray *workbook_sheets (Workbook const *wb); 23 int workbook_sheet_count (Workbook const *wb); 24 Sheet *workbook_sheet_by_index (Workbook const *wb, int i); 25 Sheet *workbook_sheet_by_name (Workbook const *wb, char const *sheet_name); 26 void workbook_sheet_attach (Workbook *wb, Sheet *new_sheet); 27 void workbook_sheet_attach_at_pos (Workbook *wb, Sheet *new_sheet, int pos); 28 Sheet *workbook_sheet_add (Workbook *wb, int pos, int columns, int rows); 29 Sheet *workbook_sheet_add_with_type (Workbook *wb, GnmSheetType sheet_type, int pos, int columns, int rows); 30 void workbook_sheet_delete (Sheet *sheet); 31 void workbook_sheet_move (Sheet *sheet, int direction); 32 char *workbook_sheet_get_free_name (Workbook *wb, 33 char const *base, 34 gboolean always_suffix, 35 gboolean handle_counter); 36 gboolean workbook_sheet_reorder (Workbook *wb, 37 GSList *new_order); 38 gboolean workbook_sheet_rename (Workbook *wb, 39 GSList *sheet_indices, 40 GSList *new_names, 41 GOCmdContext *cc); 42 43 unsigned workbook_find_command (Workbook *wb, 44 gboolean is_undo, gpointer cmd); 45 46 GnmExprSharer *workbook_share_expressions (Workbook *wb, gboolean freeit); 47 void workbook_optimize_style (Workbook *wb); 48 49 void workbook_update_graphs (Workbook *wb); 50 51 /* IO Routines */ 52 gboolean workbook_set_saveinfo (Workbook *wb, GOFileFormatLevel lev, 53 GOFileSaver *saver); 54 void workbook_update_history (Workbook *wb, GnmFileSaveAsStyle type); 55 GOFileSaver *workbook_get_file_saver (Workbook *wb); 56 GOFileSaver *workbook_get_file_exporter (Workbook *wb); 57 gchar const *workbook_get_last_export_uri (Workbook *wb); 58 void workbook_set_file_exporter (Workbook *wb, GOFileSaver *fs); 59 void workbook_set_last_export_uri (Workbook *wb, const gchar *uri); 60 61 /* See also sheet_foreach_cell_in_region */ 62 GnmValue *workbook_foreach_cell_in_range (GnmEvalPos const *pos, 63 GnmValue const *cell_range, 64 CellIterFlags flags, 65 CellIterFunc handler, 66 gpointer closure); 67 GPtrArray *workbook_cells (Workbook *wb, gboolean comments, 68 GnmSheetVisibility vis); 69 70 void workbook_foreach_name (Workbook const *wb, gboolean globals_only, 71 GHFunc func, gpointer data); 72 73 74 /* Calculation */ 75 void workbook_recalc (Workbook *wb); /* in dependent.c */ 76 void workbook_recalc_all (Workbook *wb); /* in dependent.c */ 77 gboolean workbook_enable_recursive_dirty (Workbook *wb, gboolean enable); 78 void workbook_set_recalcmode (Workbook *wb, gboolean enable); 79 gboolean workbook_get_recalcmode (Workbook const *wb); 80 void workbook_iteration_enabled (Workbook *wb, gboolean enable); 81 void workbook_iteration_max_number (Workbook *wb, int max_number); 82 void workbook_iteration_tolerance (Workbook *wb, double tolerance); 83 84 GODateConventions const *workbook_date_conv (Workbook const *wb); 85 void workbook_set_date_conv (Workbook *wb, GODateConventions const *date_conv); 86 void workbook_set_1904 (Workbook *wb, gboolean base1904); 87 88 GnmSheetSize const *workbook_get_sheet_size (Workbook const *wb); 89 90 void workbook_attach_view (WorkbookView *wbv); 91 void workbook_detach_view (WorkbookView *wbv); 92 93 GType workbook_sheet_state_get_type (void); 94 WorkbookSheetState *workbook_sheet_state_new (Workbook const *wb); 95 void workbook_sheet_state_unref (WorkbookSheetState *wss); 96 void workbook_sheet_state_restore (Workbook *wb, WorkbookSheetState const *wss); 97 int workbook_sheet_state_size (WorkbookSheetState const *wss); 98 char *workbook_sheet_state_diff (WorkbookSheetState const *wss_a, 99 WorkbookSheetState const *wss_b); 100 101 // For bindings only! 102 GSList *gnm_workbook_sheets0 (Workbook const *wb); 103 104 #define WORKBOOK_FOREACH_SHEET(wb, sheet, code) \ 105 do { \ 106 const Workbook *wb_ = (wb); \ 107 unsigned sheetno_; \ 108 unsigned sheetcount_ = workbook_sheet_count (wb_); \ 109 for (sheetno_ = 0; sheetno_ < sheetcount_; sheetno_++) { \ 110 Sheet *sheet = workbook_sheet_by_index (wb_, sheetno_); \ 111 code; \ 112 } \ 113 } while (0) 114 115 116 G_END_DECLS 117 118 #endif /* _GNM_WORKBOOK_H_ */ 119