diff options
Diffstat (limited to 'embed')
-rw-r--r-- | embed/mozilla/FilePicker.cpp | 67 | ||||
-rw-r--r-- | embed/mozilla/FilePicker.h | 17 | ||||
-rw-r--r-- | embed/mozilla/mozilla-embed-shell.cpp | 8 |
3 files changed, 46 insertions, 46 deletions
diff --git a/embed/mozilla/FilePicker.cpp b/embed/mozilla/FilePicker.cpp index baae069ef..6ef57d503 100644 --- a/embed/mozilla/FilePicker.cpp +++ b/embed/mozilla/FilePicker.cpp @@ -36,6 +36,7 @@ #include "ephy-gui.h" #include "eel-gconf-extensions.h" +#include <glib/gconvert.h> #include <gtk/gtkmain.h> #include <gtk/gtksignal.h> #include <gtk/gtkmenu.h> @@ -74,20 +75,17 @@ #include "FilePicker.h" #include "MozillaPrivate.h" -void filePicker_save_content_cb(GtkToggleButton *aButton, - GFilePicker *aFilePicker); - /* Implementation file */ NS_IMPL_ISUPPORTS1(GFilePicker, nsIFilePicker) -GFilePicker::GFilePicker(PRBool showContentCheck, FileFormat *fileFormats) : - mSaveContent(PR_FALSE) +GFilePicker::GFilePicker(PRBool aShowContentCheck, FileFormat *aFileFormats) : + mShowContentCheck(aShowContentCheck), + mSaveContentCheck(NULL), + mFileFormats(aFileFormats) { NS_INIT_ISUPPORTS(); - /* member initializers and constructor code */ - mShowContentCheck = showContentCheck; - mFileFormats = fileFormats; + /* member initializers and constructor code */ mFile = do_CreateInstance (NS_LOCAL_FILE_CONTRACTID); mDisplayDirectory = do_CreateInstance (NS_LOCAL_FILE_CONTRACTID); mDisplayDirectory->InitWithNativePath(nsDependentCString(g_get_home_dir())); @@ -147,13 +145,28 @@ NS_IMETHODIMP GFilePicker::SetFilterIndex(PRInt32 aFilterIndex) /* attribute wstring defaultString; */ NS_IMETHODIMP GFilePicker::GetDefaultString(PRUnichar * *aDefaultString) { - *aDefaultString = ToNewUnicode(NS_ConvertUTF8toUCS2(mDefaultString)); + guint bytesRead(0), bytesWritten(0); + gchar *utf8DefaultString = g_filename_to_utf8(mDefaultString.get(), -1, + &bytesRead, + &bytesWritten, NULL); + + *aDefaultString = ToNewUnicode(NS_ConvertUTF8toUCS2(utf8DefaultString)); + g_free(utf8DefaultString); + return NS_OK; } NS_IMETHODIMP GFilePicker::SetDefaultString(const PRUnichar *aDefaultString) { if (aDefaultString) - mDefaultString = NS_ConvertUCS2toUTF8(aDefaultString); + { + guint bytesRead(0), bytesWritten(0); + gchar *localeDefaultString = + g_filename_from_utf8(NS_ConvertUCS2toUTF8(aDefaultString).get(), + -1, &bytesRead, + &bytesWritten, NULL); + mDefaultString = localeDefaultString; + g_free(localeDefaultString); + } else mDefaultString = ""; return NS_OK; @@ -244,14 +257,10 @@ NS_IMETHODIMP GFilePicker::Show(PRInt16 *_retval) gtk_box_pack_end(GTK_BOX(GTK_FILE_SELECTION(mFileSelector)->action_area), bbox, TRUE, TRUE, 0); - GtkWidget *saveContent = + mSaveContentCheck = gtk_check_button_new_with_label(_("Save with content")); - g_signal_connect(G_OBJECT(saveContent), - "clicked", - G_CALLBACK(filePicker_save_content_cb), - (gpointer)this); - gtk_box_pack_start(GTK_BOX(bbox), saveContent, + gtk_box_pack_start(GTK_BOX(bbox), mSaveContentCheck, FALSE, FALSE, 0); gtk_widget_show_all(bbox); @@ -447,25 +456,28 @@ NS_METHOD GFilePicker::HandleFilePickerResult(PRInt16 *retval) if (mFormatChooser) { - gint i = 0; GtkWidget *menu = gtk_option_menu_get_menu (GTK_OPTION_MENU(mFormatChooser)); - GList *iterator = GTK_MENU_SHELL(menu)->children; GtkWidget *selected = gtk_menu_get_active (GTK_MENU(menu)); - while (iterator) + gint i(0); + for (GList *iterator = GTK_MENU_SHELL(menu)->children ; + iterator ; iterator = iterator->next, i++) { if (iterator->data == selected) { mSelectedFileFormat = i; break; } - iterator = iterator->next; - i++; } } - *retval = mSaveContent ? returnOKSaveContent : returnOK; + if (GTK_IS_TOGGLE_BUTTON(mSaveContentCheck)) + *retval = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mSaveContentCheck)) ? + returnOKSaveContent : returnOK; + else + *retval = returnOK; + return NS_OK; } @@ -492,14 +504,3 @@ nsresult NS_NewFilePickerFactory(nsIFactory** aFactory) return NS_OK; } - -//////////////////////////////////////////////////////////////////////////////// -// begin FileSelector callbacks. -//////////////////////////////////////////////////////////////////////////////// - -void filePicker_save_content_cb(GtkToggleButton *aButton, - GFilePicker *aFilePicker) -{ - aFilePicker->mSaveContent = gtk_toggle_button_get_active (aButton) ? - PR_TRUE : PR_FALSE; -} diff --git a/embed/mozilla/FilePicker.h b/embed/mozilla/FilePicker.h index 93c025637..7433b8b2d 100644 --- a/embed/mozilla/FilePicker.h +++ b/embed/mozilla/FilePicker.h @@ -16,8 +16,8 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#ifndef FILE_PICKER_H -#define FILE_PICKER_H +#ifndef __FilePicker_h +#define __FilePicker_h #include "nsIFilePicker.h" #include "nsError.h" @@ -47,21 +47,20 @@ extern nsresult NS_NewFilePickerFactory(nsIFactory** aFactory); /* Header file */ class GFilePicker : public nsIFilePicker { - friend void filePicker_save_content_cb(GtkToggleButton *aButton, - GFilePicker *aFilePicker); public: NS_DECL_ISUPPORTS NS_DECL_NSIFILEPICKER - enum { returnOK = nsIFilePicker::returnOK, + enum { returnOK = nsIFilePicker::returnOK, returnCancel = nsIFilePicker::returnCancel, returnReplace = nsIFilePicker::returnReplace, returnOKSaveContent = 256 }; - GFilePicker(PRBool aShowContentCheck = PR_FALSE, FileFormat *aFileFormats = NULL); + GFilePicker(PRBool aShowContentCheck = PR_FALSE, + FileFormat *aFileFormats = nsnull); virtual ~GFilePicker(); /* additional members */ - NS_METHOD InitWithGtkWidget(GtkWidget *aParentWidget, + NS_METHOD InitWithGtkWidget(GtkWidget *aParentWidget, const char *aTitle, PRInt16 aMode); NS_METHOD SanityCheck(PRBool *retIsSane); @@ -82,11 +81,11 @@ class GFilePicker : public nsIFilePicker PRInt16 mMode; PRBool mShowContentCheck; - PRBool mSaveContent; - GtkWidget *mParentWidget; + GtkWidget *mParentWidget; GtkWidget *mFileSelector; GtkWidget *mFormatChooser; + GtkWidget *mSaveContentCheck; FileFormat *mFileFormats; }; diff --git a/embed/mozilla/mozilla-embed-shell.cpp b/embed/mozilla/mozilla-embed-shell.cpp index 00b3c390d..717985d45 100644 --- a/embed/mozilla/mozilla-embed-shell.cpp +++ b/embed/mozilla/mozilla-embed-shell.cpp @@ -1064,7 +1064,7 @@ impl_show_file_picker (EphyEmbedShell *shell, nsCOMPtr<nsILocalFile> dir = do_CreateInstance (NS_LOCAL_FILE_CONTRACTID); - dir->InitWithPath (NS_ConvertUTF8toUCS2(expanded_directory)); + dir->InitWithNativePath (nsDependentCString(expanded_directory)); g_free (expanded_directory); filePicker->InitWithGtkWidget (parentWidget, title, mode); @@ -1097,9 +1097,9 @@ impl_show_file_picker (EphyEmbedShell *shell, g_free (*ret_fullpath); nsCOMPtr<nsILocalFile> file; filePicker->GetFile (getter_AddRefs(file)); - nsAutoString tempFullPathStr; - file->GetPath (tempFullPathStr); - *ret_fullpath = g_strdup (NS_ConvertUCS2toUTF8(tempFullPathStr).get()); + nsCAutoString tempFullPathStr; + file->GetNativePath (tempFullPathStr); + *ret_fullpath = g_strdup (tempFullPathStr.get()); delete filePicker; return G_OK; } |