diff options
author | Christian Persch <chpe@src.gnome.org> | 2008-04-04 05:09:48 +0800 |
---|---|---|
committer | Christian Persch <chpe@src.gnome.org> | 2008-04-04 05:09:48 +0800 |
commit | 39e984581c9ff4531e527456facf30f74574a64f (patch) | |
tree | 230720b87280b53b96058205a39f9d12b448e408 /embed/mozilla/FilePicker.cpp | |
parent | 18325ac0850ff053477580b448fc6d1b7f21afa8 (diff) | |
download | gsoc2013-epiphany-39e984581c9ff4531e527456facf30f74574a64f.tar gsoc2013-epiphany-39e984581c9ff4531e527456facf30f74574a64f.tar.gz gsoc2013-epiphany-39e984581c9ff4531e527456facf30f74574a64f.tar.bz2 gsoc2013-epiphany-39e984581c9ff4531e527456facf30f74574a64f.tar.lz gsoc2013-epiphany-39e984581c9ff4531e527456facf30f74574a64f.tar.xz gsoc2013-epiphany-39e984581c9ff4531e527456facf30f74574a64f.tar.zst gsoc2013-epiphany-39e984581c9ff4531e527456facf30f74574a64f.zip |
Remove this too
svn path=/trunk/; revision=8184
Diffstat (limited to 'embed/mozilla/FilePicker.cpp')
-rw-r--r-- | embed/mozilla/FilePicker.cpp | 457 |
1 files changed, 0 insertions, 457 deletions
diff --git a/embed/mozilla/FilePicker.cpp b/embed/mozilla/FilePicker.cpp deleted file mode 100644 index a35912809..000000000 --- a/embed/mozilla/FilePicker.cpp +++ /dev/null @@ -1,457 +0,0 @@ -/* - * Copyright © 2001 Philip Langdale - * Copyright © 2003, 2004 Christian Persch - * - * This program 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; either version 2, or (at your option) - * any later version. - * - * This program 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * $Id$ - */ - -#include "mozilla-config.h" -#include "config.h" - -#include <glib/gconvert.h> -#include <glib/gi18n.h> -#include <gtk/gtkfilefilter.h> -#include <gtk/gtkmessagedialog.h> -#include <gtk/gtkstock.h> - -#include <nsStringAPI.h> - -#include <nsCOMPtr.h> -#include <nsIDOMWindow.h> -#include <nsIFileURL.h> -#include <nsILocalFile.h> -#include <nsIPromptService.h> -#include <nsIServiceManager.h> -#include <nsIURI.h> -#include <nsNetCID.h> -#include <nsComponentManagerUtils.h> -#include <nsServiceManagerUtils.h> -#include <nsXPCOMCID.h> - -#include "ephy-debug.h" -#include "ephy-gui.h" -#include "ephy-prefs.h" - -#include "AutoModalDialog.h" -#include "EphyUtils.h" - -#include "FilePicker.h" - -NS_IMPL_ISUPPORTS1(GFilePicker, nsIFilePicker) - -GFilePicker::GFilePicker() -: mDialog(nsnull) -, mMode(nsIFilePicker::modeOpen) -{ - LOG ("GFilePicker ctor (%p)", this); -} - -GFilePicker::~GFilePicker() -{ - LOG ("GFilePicker dtor (%p)", this); - - if (mDialog) - { - g_object_remove_weak_pointer (G_OBJECT (mDialog), (gpointer *) &mDialog); - gtk_widget_destroy (GTK_WIDGET (mDialog)); - } -} - -/* void init (in nsIDOMWindow parent, in AString title, in short mode); */ -NS_IMETHODIMP GFilePicker::Init(nsIDOMWindow *parent, const nsAString& title, PRInt16 mode) -{ - LOG ("GFilePicker::Init"); - - mParent = do_QueryInterface (parent); - - GtkWidget *gtkparent = EphyUtils::FindGtkParent (parent); - - NS_ENSURE_TRUE (gtkparent, NS_ERROR_FAILURE); - - - nsCString cTitle; - - NS_UTF16ToCString (title, NS_CSTRING_ENCODING_UTF8, cTitle); - - mMode = mode; - - GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN; - switch (mode) - { - case nsIFilePicker::modeGetFolder: - action = GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER; - break; - case nsIFilePicker::modeOpenMultiple: - case nsIFilePicker::modeOpen: - action = GTK_FILE_CHOOSER_ACTION_OPEN; - break; - case nsIFilePicker::modeSave: - action = GTK_FILE_CHOOSER_ACTION_SAVE; - break; - default: - g_assert_not_reached (); - break; - } - - mDialog = ephy_file_chooser_new (cTitle.get(), gtkparent, action, - CONF_STATE_UPLOAD_DIR, - EPHY_FILE_FILTER_NONE); - - if (parent) - { - gtk_window_group_add_window (ephy_gui_ensure_window_group (GTK_WINDOW (gtkparent)), - GTK_WINDOW (mDialog)); - } - - if (mode == nsIFilePicker::modeOpenMultiple) - { - gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (mDialog), TRUE); - } - if (mMode == nsIFilePicker::modeSave) - { - gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (mDialog), TRUE); - } - - g_object_add_weak_pointer (G_OBJECT (mDialog), (gpointer *) &mDialog); - - return NS_OK; -} - -/* void appendFilters (in long filterMask); */ -NS_IMETHODIMP GFilePicker::AppendFilters(PRInt32 filterMask) -{ - NS_ENSURE_TRUE (mDialog, NS_ERROR_FAILURE); - - LOG ("GFilePicker::AppendFilters mask=%d", filterMask); - - // http://lxr.mozilla.org/seamonkey/source/xpfe/components/filepicker/res/locale/en-US/filepicker.properties - // http://lxr.mozilla.org/seamonkey/source/xpfe/components/filepicker/src/nsFilePicker.js line 131 ff - - if (filterMask & nsIFilePicker::filterAll) - { - ephy_file_chooser_add_pattern_filter (mDialog, _("All files"), - "*", (char*) NULL); - } - if (filterMask & nsIFilePicker::filterHTML) - { - ephy_file_chooser_add_mime_filter (mDialog, _("Web pages"), - "text/html", - "application/xhtml+xml", - "text/xml", - (char *) NULL); - } - if (filterMask & nsIFilePicker::filterText) - { - ephy_file_chooser_add_pattern_filter (mDialog, _("Text files"), - "*.txt", "*.text", NULL); - } - if (filterMask & nsIFilePicker::filterImages) - { - ephy_file_chooser_add_mime_filter (mDialog, _("Images"), - "image/png", - "image/jpeg", - "image/gif", - (char *) NULL); - } - if (filterMask & nsIFilePicker::filterXML) - { - ephy_file_chooser_add_pattern_filter (mDialog, _("XML files"), - "*.xml", (char *) NULL); - } - if (filterMask & nsIFilePicker::filterXUL) - { - ephy_file_chooser_add_pattern_filter (mDialog, _("XUL files"), - "*.xul", (char *) NULL); - } - - return NS_OK; -} - -/* void appendFilter (in AString title, in AString filter); */ - -NS_IMETHODIMP GFilePicker::AppendFilter(const nsAString& title, const nsAString& filter) -{ - NS_ENSURE_TRUE (mDialog, NS_ERROR_FAILURE); - - LOG ("GFilePicker::AppendFilter"); - - if (!filter.Length()) return NS_ERROR_FAILURE; - - nsCString pattern; - NS_UTF16ToCString (filter, NS_CSTRING_ENCODING_UTF8, pattern); - - char **patterns; - patterns = g_strsplit (pattern.get(), ";", -1); - if (!patterns) return NS_ERROR_FAILURE; - - GtkFileFilter *filth; - filth = gtk_file_filter_new (); - - for (int i = 0; patterns[i] != NULL; i++) - { - gtk_file_filter_add_pattern (filth, g_strstrip (patterns[i])); - } - - nsCString cTitle; - NS_UTF16ToCString (title, NS_CSTRING_ENCODING_UTF8, cTitle); - - gtk_file_filter_set_name (filth, cTitle.get()); - - gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (mDialog), filth); - - g_strfreev (patterns); - - return NS_OK; -} - -/* attribute AString defaultString; */ -NS_IMETHODIMP GFilePicker::GetDefaultString(nsAString& aDefaultString) -{ - NS_ENSURE_TRUE (mDialog, NS_ERROR_FAILURE); - - LOG ("GFilePicker::GetDefaultString"); - - aDefaultString = mDefaultString; - - return NS_OK; -} - -NS_IMETHODIMP GFilePicker::SetDefaultString(const nsAString& aDefaultString) -{ - NS_ENSURE_TRUE (mDialog, NS_ERROR_FAILURE); - - mDefaultString.Assign (aDefaultString); - - if (mMode == nsIFilePicker::modeSave) - { - nsCString defaultString; - NS_UTF16ToCString (mDefaultString, NS_CSTRING_ENCODING_UTF8, - defaultString); - - LOG ("GFilePicker::SetDefaultString %s", defaultString.get()); - - if (!defaultString.Length()) return NS_ERROR_FAILURE; - - /* set_current_name takes UTF-8, not a filename */ - gtk_file_chooser_set_current_name - (GTK_FILE_CHOOSER (mDialog), defaultString.get()); - } - - return NS_OK; -} - -/* attribute AString defaultExtension; */ -NS_IMETHODIMP GFilePicker::GetDefaultExtension(nsAString& aDefaultExtension) -{ - LOG ("GFilePicker::GetDefaultExtension"); - - return NS_ERROR_NOT_IMPLEMENTED; -} - -NS_IMETHODIMP GFilePicker::SetDefaultExtension(const nsAString& aDefaultExtension) -{ - LOG ("GFilePicker::SetDefaultExtension"); - - return NS_ERROR_NOT_IMPLEMENTED; -} - -/* attribute long filterIndex; */ -NS_IMETHODIMP GFilePicker::GetFilterIndex(PRInt32 *aFilterIndex) -{ - LOG ("GFilePicker::GetFilterIndex"); - - return NS_ERROR_NOT_IMPLEMENTED; -} - -NS_IMETHODIMP GFilePicker::SetFilterIndex(PRInt32 aFilterIndex) -{ - LOG ("GFilePicker::SetFilterIndex index=%d", aFilterIndex); - - return NS_ERROR_NOT_IMPLEMENTED; -} - -/* attribute nsILocalFile displayDirectory; */ -NS_IMETHODIMP GFilePicker::GetDisplayDirectory(nsILocalFile **aDisplayDirectory) -{ - NS_ENSURE_TRUE (mDialog, NS_ERROR_FAILURE); - - LOG ("GFilePicker::GetDisplayDirectory"); - - char *dir = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (mDialog)); - - if (dir != NULL) - { - nsCOMPtr<nsILocalFile> file = do_CreateInstance (NS_LOCAL_FILE_CONTRACTID); - file->InitWithNativePath (nsCString (dir)); - NS_IF_ADDREF (*aDisplayDirectory = file); - - g_free (dir); - } - - return NS_OK; -} - -NS_IMETHODIMP GFilePicker::SetDisplayDirectory(nsILocalFile *aDisplayDirectory) -{ - NS_ENSURE_TRUE (mDialog, NS_ERROR_FAILURE); - - nsCString dir; - aDisplayDirectory->GetNativePath (dir); - - LOG ("GFilePicker::SetDisplayDirectory to %s", dir.get()); - - if (mDefaultString.Length() && mMode != nsIFilePicker::modeSave) - { - nsCString defaultString; - NS_UTF16ToCString (mDefaultString, NS_CSTRING_ENCODING_NATIVE_FILESYSTEM, - defaultString); - - char *filename = g_build_filename (dir.get(), defaultString.get(), (char *) NULL); - LOG ("Setting filename to %s", filename); - gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (mDialog), filename); - g_free (filename); - } - else - { - gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (mDialog), - dir.get()); - } - - return NS_OK; -} - -/* readonly attribute nsILocalFile file; */ -NS_IMETHODIMP GFilePicker::GetFile(nsILocalFile **aFile) -{ - NS_ENSURE_TRUE (mDialog, NS_ERROR_FAILURE); - - char *filename; - - LOG ("GFilePicker::GetFile"); - - filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (mDialog)); - - if (filename != NULL) - { - nsCOMPtr<nsILocalFile> file = do_CreateInstance (NS_LOCAL_FILE_CONTRACTID); - file->InitWithNativePath (nsCString (filename)); - NS_IF_ADDREF (*aFile = file); - - g_free (filename); - } - - return NS_OK; -} - -#ifdef HAVE_GECKO_1_9 -/* readonly attribute nsIURI fileURL; */ -NS_IMETHODIMP GFilePicker::GetFileURL(nsIURI **aFileURL) -#else -/* readonly attribute nsIFileURL fileURL; */ -NS_IMETHODIMP GFilePicker::GetFileURL(nsIFileURL **aFileURL) -#endif -{ - NS_ENSURE_TRUE (mDialog, NS_ERROR_FAILURE); - - LOG ("GFilePicker::GetFileURL"); - - nsCOMPtr<nsILocalFile> file; - GetFile (getter_AddRefs(file)); - NS_ENSURE_TRUE (file, NS_ERROR_FAILURE); - - nsCOMPtr<nsIFileURL> fileURL = do_CreateInstance (NS_STANDARDURL_CONTRACTID); - fileURL->SetFile(file); - NS_IF_ADDREF(*aFileURL = fileURL); - - return NS_OK; -} - -/* readonly attribute nsISimpleEnumerator files; */ -NS_IMETHODIMP GFilePicker::GetFiles(nsISimpleEnumerator * *aFiles) -{ - // Not sure if we need to implement it at all, it's used nowhere - // in mozilla, but I guess a javascript might call it? - - LOG ("GFilePicker::GetFiles"); - - return NS_ERROR_NOT_IMPLEMENTED; -} - -/* short show (); */ -NS_IMETHODIMP GFilePicker::Show(PRInt16 *_retval) -{ - AutoModalDialog modalDialog (mParent, PR_FALSE); - if (!modalDialog.ShouldShow ()) { - *_retval = nsIFilePicker::returnCancel; - return NS_OK; - } - - mParent = nsnull; - - LOG ("GFilePicker::Show"); - - gtk_window_set_modal (GTK_WINDOW (mDialog), TRUE); - gtk_window_set_destroy_with_parent (GTK_WINDOW (mDialog), FALSE); - - /* If there's just the "ALL" filter, it's no use showing the filters! */ - GSList *filters = gtk_file_chooser_list_filters (GTK_FILE_CHOOSER (mDialog)); - if (g_slist_length (filters) == 1) - { - GtkFileFilter *filter = GTK_FILE_FILTER (filters->data); - const char *name = gtk_file_filter_get_name (filter); - - if (!name || strcmp (name, _("All files")) == 0) - { - gtk_file_chooser_remove_filter (GTK_FILE_CHOOSER (mDialog), - filter); - } - } - g_slist_free (filters); - - gtk_widget_show (GTK_WIDGET (mDialog)); - - int response; - char *filename = NULL; - - do - { - response = modalDialog.Run (GTK_DIALOG (mDialog)); - - g_free (filename); - filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (mDialog)); - - LOG ("GFilePicker::Show response=%d, filename=%s", response, filename); - } - while (response == GTK_RESPONSE_ACCEPT && - mMode == nsIFilePicker::modeSave && - !ephy_gui_check_location_writable (GTK_WIDGET (mDialog), filename)); - - gtk_widget_hide (GTK_WIDGET (mDialog)); - - if (response == GTK_RESPONSE_ACCEPT && filename != NULL) - { - *_retval = nsIFilePicker::returnOK; - } - else - { - *_retval = nsIFilePicker::returnCancel; - } - - g_free (filename); - - return NS_OK; -} |