void gui_download_window_done(struct gui_download_window *dw) { os_error *error; if (dw->ctx != NULL) download_context_destroy(dw->ctx); dw->ctx = NULL; ro_gui_download_update_status(dw); error = xosfind_closew(dw->file); if (error) { LOG(("xosfind_closew: 0x%x: %s", error->errnum, error->errmess)); warn_user("SaveError", error->errmess); } dw->file = 0; if (dw->saved) { error = xosfile_set_type(dw->path, dw->file_type); if (error) { LOG(("xosfile_set_type: 0x%x: %s", error->errnum, error->errmess)); warn_user("SaveError", error->errmess); } if (dw->send_dataload) ro_gui_download_send_dataload(dw); schedule(200, ro_gui_download_window_destroy_wrapper, dw); } }
/** * Export a content as a PDF file. * * \param h content to export * \param path path to save PDF as * \return true on success, false on error and error reported */ bool save_as_pdf(hlcache_handle *h, const char *path) { struct print_settings *psettings; psettings = print_make_settings(PRINT_DEFAULT, path, &haru_nsfont); if (psettings == NULL) return false; if (!print_basic_run(h, &pdf_printer, psettings)) return false; xosfile_set_type(path, 0xadf); return true; }
os_error *ro_gui_download_move(struct gui_download_window *dw, const char *dest_file, const char *src_file) { os_error *error; /* close temporary file */ if (dw->file) { error = xosfind_closew(dw->file); dw->file = 0; if (error) { LOG(("xosfind_closew: 0x%x: %s", error->errnum, error->errmess)); return error; } } /* move or copy temporary file to destination file */ error = xosfscontrol_rename(src_file, dest_file); /* Errors from a filing system have number 0x1XXnn, where XX is the FS * number, and nn the error number. 0x9F is "Not same disc". */ if (error && (error->errnum == error_BAD_RENAME || (error->errnum & 0xFF00FFu) == 0x1009Fu)) { /* rename failed: copy with delete */ error = xosfscontrol_copy(src_file, dest_file, osfscontrol_COPY_FORCE | osfscontrol_COPY_DELETE | osfscontrol_COPY_LOOK, 0, 0, 0, 0, 0); if (error) { LOG(("xosfscontrol_copy: 0x%x: %s", error->errnum, error->errmess)); return error; } } else if (error) { LOG(("xosfscontrol_rename: 0x%x: %s", error->errnum, error->errmess)); return error; } if (dw->ctx) { /* open new destination file if still fetching */ error = xosfile_write(dest_file, 0xdeaddead, 0xdeaddead, fileswitch_ATTR_OWNER_READ | fileswitch_ATTR_OWNER_WRITE); if (error) { LOG(("xosfile_write: 0x%x: %s", error->errnum, error->errmess)); warn_user("SaveError", error->errmess); } error = xosfind_openupw(osfind_NO_PATH | osfind_ERROR_IF_DIR, dest_file, 0, &dw->file); if (error) { LOG(("xosfind_openupw: 0x%x: %s", error->errnum, error->errmess)); return error; } error = xosargs_set_ptrw(dw->file, dw->received); if (error) { LOG(("xosargs_set_ptrw: 0x%x: %s", error->errnum, error->errmess)); return error; } } else { /* otherwise just set the file type */ error = xosfile_set_type(dest_file, dw->file_type); if (error) { LOG(("xosfile_set_type: 0x%x: %s", error->errnum, error->errmess)); warn_user("SaveError", error->errmess); } } /* success */ return NULL; }
void ro_gui_dialog_main_report(void) { char name[16]; char name2[16]; const char *lookup_name; const char *pushed_name; unsigned int i; int j, n; unsigned int err; int warn_count = 0; bool found; int throb_frames = -1; FILE *fp; fp = fopen("<Wimp$Scrap>", "w"); if (!fp) { warn_user("ReportError", 0); LOG(("failed to open file '<Wimp$Scrap>' for writing")); return; } fprintf(fp, messages_get("Title")); fprintf(fp, "\n"); for (i = 0; i < strlen(messages_get("Title")); i++) { fprintf(fp, "="); } fprintf(fp, "\n"); if (theme_sprites) { i = 0; while (theme_sprite_name[i]) { err = ro_gui_dialog_test_sprite(theme_sprite_name[i]); if (err & 1) { warn_count++; lookup_name = messages_get(theme_sprite_name[i & ~1]); if (i & 1) { pushed_name = messages_get("pushed"); } else { pushed_name = ""; } fprintf(fp, messages_get("WarnNoSpr"), theme_sprite_name[i], lookup_name, pushed_name); fprintf(fp, "\n"); } if (err & 2) { warn_count++; fprintf(fp, messages_get("WarnHighSpr"), theme_sprite_name[i]); fprintf(fp, "\n"); } if (err & 4) { warn_count++; fprintf(fp, messages_get("WarnAlphaSpr"), theme_sprite_name[i]); fprintf(fp, "\n"); } i++; } for (j = 1; j <= theme_sprites->sprite_count; j++) { found = false; osspriteop_return_name(osspriteop_USER_AREA, theme_sprites, name, 16, j); if (strncmp(name, "throbber", 8) == 0) { n = atoi(name + 8); sprintf(name2, "throbber%i", n); if (strcmp(name, name2) == 0) { found = true; throb_frames = n; } } else { i = 0; while (!found && theme_sprite_name[i]) { if (strcmp(name, theme_sprite_name[i]) == 0) { found = true; } i++; } } if (!found) { warn_count++; fprintf(fp, messages_get("WarnExtraSpr"), name); fprintf(fp, "\n"); err = ro_gui_dialog_test_sprite(name); if (err & 2) { warn_count++; fprintf(fp, messages_get("WarnHighSpr"), name); fprintf(fp, "\n"); } if (err & 4) { warn_count++; fprintf(fp, messages_get("WarnAlphaSpr"), name); fprintf(fp, "\n"); } } } if (throb_frames == -1) { fprintf(fp, messages_get("WarnNoThrob")); fprintf(fp, "\n"); } else { for (j = 0; j < throb_frames; j++) { sprintf(name, "throbber%i", j); err = ro_gui_dialog_test_sprite(name); if (err & 1) { warn_count++; fprintf(fp, messages_get("WarnMissThrob"), name); fprintf(fp, "\n"); } if (err & 2) { warn_count++; fprintf(fp, messages_get("WarnHighSpr"), name); fprintf(fp, "\n"); } if (err & 4) { warn_count++; fprintf(fp, messages_get("WarnAlphaSpr"), name); fprintf(fp, "\n"); } } } } else { warn_count++; fprintf(fp, messages_get("WarnNoFile")); fprintf(fp, "\n"); } if (warn_count > 0) { fprintf(fp, "\n"); fprintf(fp, messages_get("CompleteErr"), warn_count); fprintf(fp, "\n"); } else { fprintf(fp, messages_get("CompleteOK")); fprintf(fp, "\n"); } fclose(fp); xosfile_set_type("<Wimp$Scrap>", 0xfff); xos_cli("Filer_Run <Wimp$Scrap>"); }