/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM nsIFileSpecWithUI.idl
 */

#ifndef __gen_nsIFileSpecWithUI_h__
#define __gen_nsIFileSpecWithUI_h__


#ifndef __gen_nsIFileSpec_h__
#include "nsIFileSpec.h"
#endif

#ifndef __gen_nsIComponentManager_h__
#include "nsIComponentManager.h"
#endif

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
class nsIDOMWindowInternal; /* forward declaration */


/* starting interface:    nsIFileSpecWithUI */
#define NS_IFILESPECWITHUI_IID_STR "8ddf7681-139a-11d3-915f-dc1f8c138b7c"

#define NS_IFILESPECWITHUI_IID \
  {0x8ddf7681, 0x139a, 0x11d3, \
    { 0x91, 0x5f, 0xdc, 0x1f, 0x8c, 0x13, 0x8b, 0x7c }}

class NS_NO_VTABLE nsIFileSpecWithUI : public nsIFileSpec {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IFILESPECWITHUI_IID)

  enum { eAllReadable = 1U };

  enum { eHTMLFiles = 2U };

  enum { eXMLFiles = 4U };

  enum { eImageFiles = 8U };

  enum { eMailFiles = 16U };

  enum { eTextFiles = 32U };

  enum { eAllFiles = 64U };

  enum { eAllStandardFilters = 127U };

  enum { eAllMailOutputFilters = 50U };

  enum { eExtraFilter = 2147483648U };

  enum { kNumStandardFilters = 7U };

  enum { kNumMailFilters = 3U };

  /* void chooseInputFile (in string title, in unsigned long filterMask, in string extraFilterTitle, in string extraFilter); */
  NS_IMETHOD ChooseInputFile(const char *title, PRUint32 filterMask, const char *extraFilterTitle, const char *extraFilter) = 0;

  /* void chooseOutputFile (in string windowTitle, in string suggestedLeafName, in unsigned long filterMask); */
  NS_IMETHOD ChooseOutputFile(const char *windowTitle, const char *suggestedLeafName, PRUint32 filterMask) = 0;

  /* string chooseFile (in string title); */
  NS_IMETHOD ChooseFile(const char *title, char **_retval) = 0;

  /* string chooseDirectory (in string title); */
  NS_IMETHOD ChooseDirectory(const char *title, char **_retval) = 0;

  /* attribute nsIDOMWindowInternal parentWindow; */
  NS_IMETHOD GetParentWindow(nsIDOMWindowInternal * *aParentWindow) = 0;
  NS_IMETHOD SetParentWindow(nsIDOMWindowInternal * aParentWindow) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIFILESPECWITHUI \
  NS_IMETHOD ChooseInputFile(const char *title, PRUint32 filterMask, const char *extraFilterTitle, const char *extraFilter); \
  NS_IMETHOD ChooseOutputFile(const char *windowTitle, const char *suggestedLeafName, PRUint32 filterMask); \
  NS_IMETHOD ChooseFile(const char *title, char **_retval); \
  NS_IMETHOD ChooseDirectory(const char *title, char **_retval); \
  NS_IMETHOD GetParentWindow(nsIDOMWindowInternal * *aParentWindow); \
  NS_IMETHOD SetParentWindow(nsIDOMWindowInternal * aParentWindow); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIFILESPECWITHUI(_to) \
  NS_IMETHOD ChooseInputFile(const char *title, PRUint32 filterMask, const char *extraFilterTitle, const char *extraFilter) { return _to ## ChooseInputFile(title, filterMask, extraFilterTitle, extraFilter); } \
  NS_IMETHOD ChooseOutputFile(const char *windowTitle, const char *suggestedLeafName, PRUint32 filterMask) { return _to ## ChooseOutputFile(windowTitle, suggestedLeafName, filterMask); } \
  NS_IMETHOD ChooseFile(const char *title, char **_retval) { return _to ## ChooseFile(title, _retval); } \
  NS_IMETHOD ChooseDirectory(const char *title, char **_retval) { return _to ## ChooseDirectory(title, _retval); } \
  NS_IMETHOD GetParentWindow(nsIDOMWindowInternal * *aParentWindow) { return _to ## GetParentWindow(aParentWindow); } \
  NS_IMETHOD SetParentWindow(nsIDOMWindowInternal * aParentWindow) { return _to ## SetParentWindow(aParentWindow); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIFILESPECWITHUI(_to) \
  NS_IMETHOD ChooseInputFile(const char *title, PRUint32 filterMask, const char *extraFilterTitle, const char *extraFilter) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ChooseInputFile(title, filterMask, extraFilterTitle, extraFilter); } \
  NS_IMETHOD ChooseOutputFile(const char *windowTitle, const char *suggestedLeafName, PRUint32 filterMask) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ChooseOutputFile(windowTitle, suggestedLeafName, filterMask); } \
  NS_IMETHOD ChooseFile(const char *title, char **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ChooseFile(title, _retval); } \
  NS_IMETHOD ChooseDirectory(const char *title, char **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ChooseDirectory(title, _retval); } \
  NS_IMETHOD GetParentWindow(nsIDOMWindowInternal * *aParentWindow) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetParentWindow(aParentWindow); } \
  NS_IMETHOD SetParentWindow(nsIDOMWindowInternal * aParentWindow) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetParentWindow(aParentWindow); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsFileSpecWithUI : public nsIFileSpecWithUI
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIFILESPECWITHUI

  nsFileSpecWithUI();
  virtual ~nsFileSpecWithUI();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsFileSpecWithUI, nsIFileSpecWithUI)

nsFileSpecWithUI::nsFileSpecWithUI()
{
  NS_INIT_ISUPPORTS();
  /* member initializers and constructor code */
}

nsFileSpecWithUI::~nsFileSpecWithUI()
{
  /* destructor code */
}

/* void chooseInputFile (in string title, in unsigned long filterMask, in string extraFilterTitle, in string extraFilter); */
NS_IMETHODIMP nsFileSpecWithUI::ChooseInputFile(const char *title, PRUint32 filterMask, const char *extraFilterTitle, const char *extraFilter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void chooseOutputFile (in string windowTitle, in string suggestedLeafName, in unsigned long filterMask); */
NS_IMETHODIMP nsFileSpecWithUI::ChooseOutputFile(const char *windowTitle, const char *suggestedLeafName, PRUint32 filterMask)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* string chooseFile (in string title); */
NS_IMETHODIMP nsFileSpecWithUI::ChooseFile(const char *title, char **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* string chooseDirectory (in string title); */
NS_IMETHODIMP nsFileSpecWithUI::ChooseDirectory(const char *title, char **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIDOMWindowInternal parentWindow; */
NS_IMETHODIMP nsFileSpecWithUI::GetParentWindow(nsIDOMWindowInternal * *aParentWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsFileSpecWithUI::SetParentWindow(nsIDOMWindowInternal * aParentWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

// Define Contractid and CID
// {e3326a80-2816-11d3-a7e5-98cb48c74f3c}
#define NS_FILESPECWITHUI_CID \
{ 0xe3326a80, 0x2816, 0x11d3, { 0xa7, 0xe5, 0x98, 0xcb, 0x48, 0xc7, 0x4f, 0x3c } }
#define NS_FILESPECWITHUI_CONTRACTID "@mozilla.org/filespecwithui;1"
#define NS_FILESPECWITHUI_CLASSNAME "nsIFileSpecWithUI"
// Factory methods
inline nsIFileSpecWithUI* NS_CreateFileSpecWithUI()
{
     nsIFileSpecWithUI* spec = nsnull;
     nsresult rv = nsComponentManager::CreateInstance(
     	(const char*)NS_FILESPECWITHUI_CONTRACTID,
     	(nsISupports*)nsnull,
     	(const nsID&)NS_GET_IID(nsIFileSpecWithUI),
     	(void**)&spec);
     NS_ASSERTION(NS_SUCCEEDED(rv), "ERROR: Could not make a file spec.");
     return spec;
}

#endif /* __gen_nsIFileSpecWithUI_h__ */
