Backed out 2 changesets (bug 1855992) for causing talos failures @ mozilla::net:...
[gecko.git] / widget / gtk / nsFilePicker.h
blob7ec93a6694276b3622dbd2d5ba0ececa262b221c
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__
9 #include <gtk/gtk.h>
11 #include "nsBaseFilePicker.h"
12 #include "nsString.h"
13 #include "nsTArray.h"
14 #include "nsCOMArray.h"
16 class nsIWidget;
17 class nsIFile;
19 class nsFilePicker : public nsBaseFilePicker {
20 public:
21 nsFilePicker();
23 NS_DECL_ISUPPORTS
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;
42 // nsBaseFilePicker
43 virtual void InitNative(nsIWidget* aParent, const nsAString& aTitle) override;
45 static void Shutdown();
47 protected:
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,
56 gpointer user_data);
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;
66 bool mRunning;
67 bool mAllowURLs;
68 nsCString mFileURL;
69 nsString mTitle;
70 nsString mDefault;
71 nsString mDefaultExtension;
73 nsTArray<nsCString> mFilters;
74 nsTArray<nsCString> mFilterNames;
76 private:
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,
85 gboolean modal);
87 GtkFileChooserWidget* mFileChooserDelegate;
88 bool mUseNativeFileChooser;
91 #endif