void dif_file_open (GOFileOpener const *fo, GOIOContext *io_context, WorkbookView *wbv, GsfInput *input) { Workbook *wb = wb_view_get_workbook (wbv); DifInputContext *ctxt = dif_input_context_new (io_context, wb, input); workbook_set_saveinfo (wb, GO_FILE_FL_MANUAL_REMEMBER, go_file_saver_for_id ("Gnumeric_dif:dif")); if (ctxt != NULL) { dif_parse_sheet (ctxt); if (go_io_error_occurred (io_context)) go_io_error_push (io_context, go_error_info_new_str (_("Error while reading DIF file."))); dif_input_context_destroy (ctxt); } else if (!go_io_error_occurred (io_context)) go_io_error_unknown (io_context); }
static void go_plugin_file_saver_save (GOFileSaver const *fs, GOIOContext *io_context, GoView const *view, GsfOutput *output) { GOPluginFileSaver *pfs = GO_PLUGIN_FILE_SAVER (fs); GOPluginServiceFileSaver *service_file_saver = GO_PLUGIN_SERVICE_FILE_SAVER (pfs->service); GOErrorInfo *error = NULL; g_return_if_fail (GSF_IS_OUTPUT (output)); go_plugin_service_load (pfs->service, &error); if (error != NULL) { go_io_error_info_set (io_context, error); go_io_error_push (io_context, go_error_info_new_str ( _("Error while loading plugin for saving."))); if (!gsf_output_error (output)) gsf_output_set_error (output, 0, _("Failed to load plugin for saving")); return; } g_return_if_fail (service_file_saver->cbs.plugin_func_file_save != NULL); service_file_saver->cbs.plugin_func_file_save (fs, pfs->service, io_context, view, output); }
static void go_plugin_file_opener_open (GOFileOpener const *fo, gchar const *enc, GOIOContext *io_context, GoView *view, GsfInput *input) { GOPluginFileOpener *pfo = GO_PLUGIN_FILE_OPENER (fo); GOPluginServiceFileOpener *service_file_opener = GO_PLUGIN_SERVICE_FILE_OPENER (pfo->service); GOErrorInfo *error = NULL; g_return_if_fail (GSF_IS_INPUT (input)); go_plugin_service_load (pfo->service, &error); if (error != NULL) { go_io_error_info_set (io_context, error); go_io_error_push (io_context, go_error_info_new_str ( _("Error while reading file."))); return; } g_return_if_fail (service_file_opener->cbs.plugin_func_file_open != NULL); service_file_opener->cbs.plugin_func_file_open (fo, pfo->service, io_context, view, input, enc); }