aboutsummaryrefslogtreecommitdiffstats
path: root/embed
diff options
context:
space:
mode:
Diffstat (limited to 'embed')
-rw-r--r--embed/mozilla/FilePicker.cpp67
-rw-r--r--embed/mozilla/FilePicker.h17
-rw-r--r--embed/mozilla/mozilla-embed-shell.cpp8
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;
}