Пример #1
0
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);
	}
}
Пример #2
0
/**
 * 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;
}
Пример #3
0
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;
}
Пример #4
0
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>");
}