1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #ifndef nsFilePicker_h__
7 #define nsFilePicker_h__
11 #include "nsBaseFilePicker.h"
14 #include "nsCOMArray.h"
19 class nsFilePicker
: public nsBaseFilePicker
{
25 // nsIFilePicker (less what's in nsBaseFilePicker)
26 NS_IMETHOD
Open(nsIFilePickerShownCallback
* aCallback
) override
;
27 NS_IMETHOD
IsModeSupported(nsIFilePicker::Mode
, JSContext
*,
28 mozilla::dom::Promise
**) override
;
29 NS_IMETHOD
AppendFilters(int32_t aFilterMask
) override
;
30 NS_IMETHOD
AppendFilter(const nsAString
& aTitle
,
31 const nsAString
& aFilter
) override
;
32 NS_IMETHOD
SetDefaultString(const nsAString
& aString
) override
;
33 NS_IMETHOD
GetDefaultString(nsAString
& aString
) override
;
34 NS_IMETHOD
SetDefaultExtension(const nsAString
& aExtension
) override
;
35 NS_IMETHOD
GetDefaultExtension(nsAString
& aExtension
) override
;
36 NS_IMETHOD
GetFilterIndex(int32_t* aFilterIndex
) override
;
37 NS_IMETHOD
SetFilterIndex(int32_t aFilterIndex
) override
;
38 NS_IMETHOD
GetFile(nsIFile
** aFile
) override
;
39 NS_IMETHOD
GetFileURL(nsIURI
** aFileURL
) override
;
40 NS_IMETHOD
GetFiles(nsISimpleEnumerator
** aFiles
) override
;
43 virtual void InitNative(nsIWidget
* aParent
, const nsAString
& aTitle
) override
;
45 static void Shutdown();
48 virtual ~nsFilePicker();
50 nsresult
Show(nsIFilePicker::ResultCode
* aReturn
) override
;
51 void ReadValuesFromFileChooser(void* file_chooser
);
53 bool WarnForNonReadableFile(void* file_chooser
);
55 static void OnResponse(void* file_chooser
, gint response_id
,
57 static void OnDestroy(GtkWidget
* file_chooser
, gpointer user_data
);
58 void Done(void* file_chooser
, gint response_id
);
60 nsCOMPtr
<nsIWidget
> mParentWidget
;
61 nsCOMPtr
<nsIFilePickerShownCallback
> mCallback
;
62 nsCOMArray
<nsIFile
> mFiles
;
64 int16_t mSelectedType
;
65 nsIFilePicker::ResultCode mResult
;
71 nsString mDefaultExtension
;
73 nsTArray
<nsCString
> mFilters
;
74 nsTArray
<nsCString
> mFilterNames
;
77 static nsIFile
* mPrevDisplayDirectory
;
79 void* GtkFileChooserNew(const gchar
* title
, GtkWindow
* parent
,
80 GtkFileChooserAction action
,
81 const gchar
* accept_label
);
82 void GtkFileChooserShow(void* file_chooser
);
83 void GtkFileChooserDestroy(void* file_chooser
);
84 void GtkFileChooserSetModal(void* file_chooser
, GtkWindow
* parent_widget
,
87 GtkFileChooserWidget
* mFileChooserDelegate
;
88 bool mUseNativeFileChooser
;