/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "nsISupports.idl"
#include "nsIWebProgressListener.idl"

interface nsIDOMWindow;
interface nsIObserver;
interface nsIPrompt;

[scriptable, uuid(594fd36d-5b1b-412f-a74e-ab72099a5bb2)]
interface nsIPrintProgress: nsIWebProgressListener {

  /* Open the progress dialog
     you can specify parameters through an xpcom object
  */
  void openProgressDialog(in nsIDOMWindow parent, 
                          in string dialogURL, 
                          in nsISupports parameters, 
                          in nsIObserver openDialogObserver,
                          out boolean notifyOnOpen);
  
  /* Close the progress dialog */
  void closeProgressDialog(in boolean forceClose);
  
  /* Register a Web Progress Listener */
  void registerListener(in nsIWebProgressListener listener);

  /* Unregister a Web Progress Listener */
  void unregisterListener(in nsIWebProgressListener listener);
  
  /* This method is called after the dialog that shows the progress has been shown 
  */
  void doneIniting();
  
  /* Retrieve the prompter, needed to display modal dialog on top of progress dialog */
  nsIPrompt getPrompter();

  /* Indicated if the user asked to cancel the current process */
  attribute boolean processCanceledByUser;
};


