1 #ifndef _GOFFICE_FILE_H_ 2 #define _GOFFICE_FILE_H_ 3 4 #include <glib-object.h> 5 #include <goffice/app/goffice-app.h> 6 7 G_BEGIN_DECLS 8 9 /** 10 * GOFileFormatLevel: 11 * @GO_FILE_FL_NONE: no name assigned, won't happen. 12 * @GO_FILE_FL_WRITE_ONLY: PostScript etc, won't be remembered. 13 * @GO_FILE_FL_NEW: Wb just created. 14 * @GO_FILE_FL_MANUAL: Save gets punted to save as. 15 * @GO_FILE_FL_MANUAL_REMEMBER: Ditto, but remember in history. 16 * @GO_FILE_FL_AUTO: Save will save to this filename. 17 * @GO_FILE_FL_LAST: last value, won't happen. 18 * 19 * File format levels. They are ordered. When we save a file, we 20 * remember the name, but not if we already have a name at a higher level. 21 * When created, workbooks are assigned a name at level GO_FILE_FL_NEW. 22 */ 23 typedef enum { 24 GO_FILE_FL_NONE, /* No name assigned, won't happen */ 25 GO_FILE_FL_WRITE_ONLY, /* PostScript etc, won't be remembered */ 26 GO_FILE_FL_NEW, /* Wb just created */ 27 GO_FILE_FL_MANUAL, /* Save gets punted to save as */ 28 GO_FILE_FL_MANUAL_REMEMBER, /* Ditto, but remember in history */ 29 GO_FILE_FL_AUTO, /* Save will save to this filename */ 30 GO_FILE_FL_LAST 31 } GOFileFormatLevel; 32 GType go_file_format_level_get_type (void); 33 #define GO_TYPE_FILE_FORMAT_LEVEL (go_file_format_level_get_type ()) 34 35 /** 36 * GOFileSaveScope: 37 * @GO_FILE_SAVE_WORKBOOK: save the whole file. 38 * @GO_FILE_SAVE_SHEET: save only current page. 39 * @GO_FILE_SAVE_RANGE: save only a selected range. 40 * @GO_FILE_SAVE_LAST: last value, won't happen. 41 * 42 * GOFileSaveScope specifies what information file saver can save in a file. 43 * Many savers can save the whole workbook (with all sheets), but others 44 * save only current sheet, usually because of file format limitations. 45 */ 46 typedef enum { 47 GO_FILE_SAVE_WORKBOOK, 48 GO_FILE_SAVE_SHEET, 49 GO_FILE_SAVE_RANGE, 50 GO_FILE_SAVE_LAST 51 } GOFileSaveScope; 52 GType go_file_save_scope_get_type (void); 53 #define GO_TYPE_FILE_SAVE_SCOPE (go_file_save_scope_get_type ()) 54 55 /* 56 * GOFileOpener 57 */ 58 59 typedef struct _GOFileOpenerClass GOFileOpenerClass; 60 61 #define GO_TYPE_FILE_OPENER (go_file_opener_get_type ()) 62 #define GO_FILE_OPENER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GO_TYPE_FILE_OPENER, GOFileOpener)) 63 #define GO_IS_FILE_OPENER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GO_TYPE_FILE_OPENER)) 64 65 typedef gboolean (*GOFileOpenerProbeFunc) (GOFileOpener const *fo, 66 GsfInput *input, 67 GOFileProbeLevel pl); 68 typedef void (*GOFileOpenerOpenFunc) (GOFileOpener const *fo, 69 GOIOContext *io_context, 70 GoView *view, 71 GsfInput *input); 72 typedef void (*GOFileOpenerOpenFuncWithEnc) (GOFileOpener const *fo, 73 gchar const *enc, 74 GOIOContext *io_context, 75 GoView *view, 76 GsfInput *input); 77 78 GType go_file_opener_get_type (void); 79 80 GOFileOpener *go_file_opener_new (char const *id, 81 char const *description, 82 GSList *suffixes, 83 GSList *mimes, 84 GOFileOpenerProbeFunc probe_func, 85 GOFileOpenerOpenFunc open_func); 86 87 GOFileOpener *go_file_opener_new_with_enc (char const *id, 88 char const *description, 89 GSList *suffixes, 90 GSList *mimes, 91 GOFileOpenerProbeFunc probe_func, 92 GOFileOpenerOpenFuncWithEnc open_func); 93 94 95 gboolean go_file_opener_probe (GOFileOpener const *fo, GsfInput *input, 96 GOFileProbeLevel pl); 97 void go_file_opener_open (GOFileOpener const *fo, gchar const *opt_enc, 98 GOIOContext *io_context, 99 GoView *view, 100 GsfInput *input); 101 102 char const *go_file_opener_get_id (GOFileOpener const *fo); 103 char const *go_file_opener_get_description (GOFileOpener const *fo); 104 gboolean go_file_opener_is_encoding_dependent (GOFileOpener const *fo); 105 gboolean go_file_opener_can_probe (GOFileOpener const *fo, 106 GOFileProbeLevel pl); 107 GSList const *go_file_opener_get_suffixes (GOFileOpener const *fo); 108 GSList const *go_file_opener_get_mimes (GOFileOpener const *fo); 109 110 /* 111 * GOFileSaver 112 */ 113 114 typedef struct _GOFileSaverClass GOFileSaverClass; 115 116 #define GO_TYPE_FILE_SAVER (go_file_saver_get_type ()) 117 #define GO_FILE_SAVER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GO_TYPE_FILE_SAVER, GOFileSaver)) 118 #define GO_IS_FILE_SAVER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GO_TYPE_FILE_SAVER)) 119 120 typedef void (*GOFileSaverSaveFunc) (GOFileSaver const *fs, 121 GOIOContext *io_context, 122 GoView const *view, 123 GsfOutput *output); 124 125 GType go_file_saver_get_type (void); 126 127 GOFileSaver *go_file_saver_new (char const *id, 128 char const *extension, 129 char const *description, 130 GOFileFormatLevel level, 131 GOFileSaverSaveFunc save_func); 132 133 134 void go_file_saver_set_save_scope (GOFileSaver *fs, GOFileSaveScope scope); 135 GOFileSaveScope go_file_saver_get_save_scope (GOFileSaver const *fs); 136 137 gboolean go_file_saver_set_export_options (GOFileSaver *fs, 138 GODoc *doc, 139 const char *options, 140 GError **err); 141 142 void go_file_saver_save (GOFileSaver const *fs, GOIOContext *io_context, 143 GoView *view, 144 GsfOutput *output); 145 void go_file_saver_set_overwrite_files (GOFileSaver *fs, 146 gboolean overwrite); 147 char const *go_file_saver_get_id (GOFileSaver const *fs); 148 char const *go_file_saver_get_extension (GOFileSaver const *fs); 149 char const *go_file_saver_get_mime_type (GOFileSaver const *fs); 150 char const *go_file_saver_get_description (GOFileSaver const *fs); 151 GOFileFormatLevel go_file_saver_get_format_level (GOFileSaver const *fs); 152 153 /* 154 * 155 */ 156 157 GList *go_get_file_openers (void); 158 void go_file_opener_unregister (GOFileOpener *fo); 159 void go_file_opener_register (GOFileOpener *fo, gint priority); 160 GOFileOpener *go_file_opener_for_id (char const *id); 161 162 GList *go_get_file_savers (void); 163 void go_file_saver_unregister (GOFileSaver *fs); 164 void go_file_saver_register (GOFileSaver *fs); 165 void go_file_saver_register_as_default (GOFileSaver *fs, gint priority); 166 167 GOFileSaver *go_file_saver_get_default (void); 168 GOFileSaver *go_file_saver_for_mime_type (char const *mime_type); 169 GOFileSaver *go_file_saver_for_file_name (char const *file_name); 170 GOFileSaver *go_file_saver_for_id (char const *id); 171 172 G_END_DECLS 173 174 #endif /* _GOFFICE_FILE_H_ */ 175