summaryrefslogtreecommitdiff
path: root/amiga/file.c
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2016-05-05 22:28:51 +0100
committerVincent Sanders <vince@kyllikki.org>2016-05-15 13:44:34 +0100
commitd21447d096a320a08b3efb2b8768fad0dcdcfd64 (patch)
tree1a83814b7c9e94b2f13c473261f23dd3a17dee64 /amiga/file.c
parent2cbb337756d9af5bda4d594964d446439f602551 (diff)
downloadnetsurf-d21447d096a320a08b3efb2b8768fad0dcdcfd64.tar.gz
netsurf-d21447d096a320a08b3efb2b8768fad0dcdcfd64.tar.bz2
move frontends into sub directory
Diffstat (limited to 'amiga/file.c')
-rw-r--r--amiga/file.c293
1 files changed, 0 insertions, 293 deletions
diff --git a/amiga/file.c b/amiga/file.c
deleted file mode 100644
index 8957ecfe6..000000000
--- a/amiga/file.c
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
- * Copyright 2011 Chris Young <chris@unsatisfactorysoftware.co.uk>
- *
- * This file is part of NetSurf, http://www.netsurf-browser.org/
- *
- * NetSurf is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * NetSurf is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <proto/asl.h>
-#include <proto/dos.h>
-#include <proto/exec.h>
-#include <proto/icon.h>
-#include <workbench/icon.h>
-
-#include "utils/utils.h"
-#include "utils/nsoption.h"
-#include "utils/file.h"
-#include "utils/messages.h"
-#include "content/hlcache.h"
-#include "content/content.h"
-#include "content/fetch.h"
-#include "desktop/browser.h"
-#include "desktop/save_complete.h"
-#include "desktop/save_pdf.h"
-#include "desktop/save_text.h"
-#include "desktop/gui_window.h"
-
-#include "amiga/gui.h"
-#include "amiga/bitmap.h"
-#include "amiga/download.h"
-#include "amiga/file.h"
-#include "amiga/filetype.h"
-#include "amiga/icon.h"
-#include "amiga/iff_dr2d.h"
-#include "amiga/misc.h"
-#include "amiga/save_pdf.h"
-#include "amiga/theme.h"
-
-static struct Hook aslhookfunc;
-
-HOOKF(ULONG, ami_file_asl_mime_hook, struct FileRequester *, fr, struct AnchorPathOld *)
-{
- char fname[1024];
- BOOL ret = FALSE;
- char *mt = NULL;
- lwc_string *lwc_mt = NULL;
- lwc_error lerror;
- content_type ct;
-
- if(msg->ap_Info.fib_DirEntryType > 0) return(TRUE);
-
- strcpy(fname,fr->fr_Drawer);
- AddPart(fname, msg->ap_Info.fib_FileName,1024);
-
- mt = strdup(fetch_filetype(fname));
- lerror = lwc_intern_string(mt, strlen(mt), &lwc_mt);
- if (lerror != lwc_error_ok)
- return FALSE;
-
- ct = content_factory_type_from_mime_type(lwc_mt);
- lwc_string_unref(lwc_mt);
-
- if(ct != CONTENT_NONE) ret = TRUE;
-
- free(mt);
- return ret;
-}
-
-void ami_file_open(struct gui_window_2 *gwin)
-{
- char *temp;
- nsurl *url;
-
- if(AslRequestTags(filereq,
- ASLFR_TitleText, messages_get("NetSurf"),
- ASLFR_Window, gwin->win,
- ASLFR_SleepWindow, TRUE,
- ASLFR_Screen, scrn,
- ASLFR_DoSaveMode, FALSE,
- ASLFR_RejectIcons, TRUE,
- ASLFR_FilterFunc, &aslhookfunc,
- TAG_DONE))
- {
- if((temp = AllocVecTagList(1024, NULL)))
- {
- strlcpy(temp, filereq->fr_Drawer, 1024);
- AddPart(temp, filereq->fr_File, 1024);
-
- if (netsurf_path_to_nsurl(temp, &url) != NSERROR_OK) {
- amiga_warn_user("NoMemory", 0);
- } else {
- browser_window_navigate(gwin->gw->bw,
- url,
- NULL,
- BW_NAVIGATE_HISTORY,
- NULL,
- NULL,
- NULL);
- nsurl_unref(url);
- }
-
- FreeVec(temp);
- }
- }
-}
-
-static void ami_file_set_type(const char *path, lwc_string *mime_type)
-{
- content_type type = content_factory_type_from_mime_type(mime_type);
- const char *default_type;
-
- switch(type) {
- case CONTENT_HTML:
- default_type = "html";
- break;
- default:
- default_type = NULL;
- break;
- }
-
- if (default_type != NULL) {
- struct DiskObject *dobj = NULL;
-
- dobj = GetIconTags(NULL,ICONGETA_GetDefaultName,default_type,
- ICONGETA_GetDefaultType,WBPROJECT,
- TAG_DONE);
-
- PutIconTags(path, dobj,
- ICONPUTA_NotifyWorkbench, TRUE, TAG_DONE);
- }
-}
-
-void ami_file_save(int type, char *fname, struct Window *win,
- struct hlcache_handle *object, struct hlcache_handle *favicon,
- struct browser_window *bw)
-{
- BPTR lock, fh;
- const char *source_data;
- ULONG source_size;
- struct bitmap *bm;
-
- ami_update_pointer(win, GUI_POINTER_WAIT);
-
- if(ami_download_check_overwrite(fname, win, 0)) {
- switch(type) {
- case AMINS_SAVE_SOURCE:
- if((source_data = content_get_source_data(object, &source_size))) {
- BPTR fh;
- if((fh = FOpen(fname, MODE_NEWFILE,0))) {
- FWrite(fh, source_data, 1, source_size);
- FClose(fh);
- }
- }
- break;
-
- case AMINS_SAVE_TEXT:
- save_as_text(object, fname);
- break;
-
- case AMINS_SAVE_COMPLETE:
- if((lock = CreateDir(fname))) {
- UnLock(lock);
- save_complete(object, fname, ami_file_set_type);
- amiga_icon_superimpose_favicon(fname, favicon, NULL);
- }
- break;
-
- case AMINS_SAVE_PDF:
-#ifdef WITH_PDF_EXPORT
- if(save_as_pdf(object, fname))
- amiga_icon_superimpose_favicon(fname, favicon, "pdf");
-#endif
- break;
-
- case AMINS_SAVE_IFF:
- if((bm = content_get_bitmap(object))) {
- ami_bitmap_set_url(bm, hlcache_handle_get_url(object));
- ami_bitmap_set_title(bm, content_get_title(object));
- amiga_bitmap_save(bm, fname, 0);
- }
-#ifdef WITH_NS_SVG
- else if(ami_mime_compare(object, "svg") == true) {
- ami_save_svg(object, fname);
- }
-#endif
- break;
-
- case AMINS_SAVE_SELECTION:
- if((source_data = browser_window_get_selection(bw))) {
- if((fh = FOpen(fname, MODE_NEWFILE,0))) {
- FWrite(fh, source_data, 1, strlen(source_data));
- FClose(fh);
- }
- free((void *)source_data);
- }
- break;
- }
- if(object) SetComment(fname, nsurl_access(hlcache_handle_get_url(object)));
- }
-
- ami_update_pointer(win, GUI_POINTER_DEFAULT);
-}
-
-void ami_file_save_req(int type, struct gui_window_2 *gwin,
- struct hlcache_handle *object)
-{
- char *fname = AllocVecTagList(1024, NULL);
- char *initial_fname = NULL;
- char *fname_with_ext = NULL;
- bool strip_ext = true;
-
- if(object) {
- if(type == AMINS_SAVE_SOURCE) strip_ext = false;
- nsurl_nice(hlcache_handle_get_url(object), &initial_fname, strip_ext);
- }
-
- if(initial_fname != NULL) {
- fname_with_ext = AllocVecTagList(strlen(initial_fname) + 5, NULL); /* 5 = .ext\0 */
-
- strcpy(fname_with_ext, initial_fname);
-
- switch(type)
- {
- case AMINS_SAVE_TEXT:
- case AMINS_SAVE_SELECTION:
- strcat(fname_with_ext, ".txt");
- break;
- case AMINS_SAVE_IFF:
- strcat(fname_with_ext, ".iff");
- break;
- case AMINS_SAVE_PDF:
- strcat(fname_with_ext, ".pdf");
- break;
- default:
- break;
- }
-
- if(initial_fname) free(initial_fname);
- }
-
- if(AslRequestTags(savereq,
- ASLFR_Window, gwin->win,
- ASLFR_SleepWindow, TRUE,
- ASLFR_TitleText, messages_get("NetSurf"),
- ASLFR_Screen, scrn,
- ASLFR_InitialFile, fname_with_ext ? fname_with_ext : "",
- TAG_DONE))
- {
- strlcpy(fname, savereq->fr_Drawer, 1024);
- AddPart(fname, savereq->fr_File, 1024);
-
- ami_file_save(type, fname, gwin->win, object, gwin->gw->favicon, gwin->gw->bw);
- }
-
- if(fname) FreeVec(fname);
- if(fname_with_ext) FreeVec(fname_with_ext);
-}
-
-void ami_file_req_init(void)
-{
- const char *initial_dir = nsoption_charp(download_dir);
- Tag initial_dir_tag = ASLFR_InitialDrawer;
-
- if(initial_dir == NULL) initial_dir_tag = TAG_IGNORE;
-
- filereq = (struct FileRequester *)AllocAslRequest(ASL_FileRequest, NULL);
- savereq = (struct FileRequester *)AllocAslRequestTags(ASL_FileRequest,
- ASLFR_DoSaveMode, TRUE,
- ASLFR_RejectIcons, TRUE,
- initial_dir_tag, initial_dir,
- TAG_DONE);
-
- aslhookfunc.h_Entry = (void *)&ami_file_asl_mime_hook;
- aslhookfunc.h_SubEntry = NULL;
- aslhookfunc.h_Data = NULL;
-}
-
-void ami_file_req_free(void)
-{
- FreeAslRequest(filereq);
- FreeAslRequest(savereq);
-}
-