michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #ifndef nsFilePicker_h__ michael@0: #define nsFilePicker_h__ michael@0: michael@0: #include michael@0: michael@0: #include "nsBaseFilePicker.h" michael@0: #include "nsString.h" michael@0: #include "nsTArray.h" michael@0: #include "nsCOMArray.h" michael@0: michael@0: class nsIWidget; michael@0: class nsIFile; michael@0: michael@0: class nsFilePicker : public nsBaseFilePicker michael@0: { michael@0: public: michael@0: nsFilePicker(); michael@0: virtual ~nsFilePicker(); michael@0: michael@0: NS_DECL_ISUPPORTS michael@0: michael@0: // nsIFilePicker (less what's in nsBaseFilePicker) michael@0: NS_IMETHOD Open(nsIFilePickerShownCallback *aCallback); michael@0: NS_IMETHODIMP AppendFilters(int32_t aFilterMask); michael@0: NS_IMETHODIMP AppendFilter(const nsAString& aTitle, const nsAString& aFilter); michael@0: NS_IMETHODIMP SetDefaultString(const nsAString& aString); michael@0: NS_IMETHODIMP GetDefaultString(nsAString& aString); michael@0: NS_IMETHODIMP SetDefaultExtension(const nsAString& aExtension); michael@0: NS_IMETHODIMP GetDefaultExtension(nsAString& aExtension); michael@0: NS_IMETHODIMP GetFilterIndex(int32_t *aFilterIndex); michael@0: NS_IMETHODIMP SetFilterIndex(int32_t aFilterIndex); michael@0: NS_IMETHODIMP GetFile(nsIFile **aFile); michael@0: NS_IMETHODIMP GetFileURL(nsIURI **aFileURL); michael@0: NS_IMETHODIMP GetFiles(nsISimpleEnumerator **aFiles); michael@0: NS_IMETHODIMP Show(int16_t *aReturn); michael@0: michael@0: // nsBaseFilePicker michael@0: virtual void InitNative(nsIWidget *aParent, const nsAString& aTitle); michael@0: michael@0: static void Shutdown(); michael@0: michael@0: protected: michael@0: michael@0: void ReadValuesFromFileChooser(GtkWidget *file_chooser); michael@0: michael@0: static void OnResponse(GtkWidget* dialog, gint response_id, michael@0: gpointer user_data); michael@0: static void OnDestroy(GtkWidget* dialog, gpointer user_data); michael@0: void Done(GtkWidget* dialog, gint response_id); michael@0: michael@0: nsCOMPtr mParentWidget; michael@0: nsCOMPtr mCallback; michael@0: nsCOMArray mFiles; michael@0: michael@0: int16_t mSelectedType; michael@0: int16_t mResult; michael@0: bool mRunning; michael@0: bool mAllowURLs; michael@0: nsCString mFileURL; michael@0: nsString mTitle; michael@0: nsString mDefault; michael@0: nsString mDefaultExtension; michael@0: michael@0: nsTArray mFilters; michael@0: nsTArray mFilterNames; michael@0: michael@0: private: michael@0: static nsIFile *mPrevDisplayDirectory; michael@0: }; michael@0: michael@0: #endif