/**
 * \class QgsGenericProjectionSelector 
 * \brief A generic dialog to prompt the user for a Coordinate Reference System
 */
class QgsGenericProjectionSelector : QDialog //, private Ui::QgsGenericProjectionSelectorBase
{
%TypeHeaderCode
#include <qgsgenericprojectionselector.h>
%End

  public:
    /**
     * Constructor
     */
    QgsGenericProjectionSelector(QWidget *parent = 0, 
                               Qt::WFlags fl = QgisGui::ModalDialogFlags);

    //! Destructor
    ~QgsGenericProjectionSelector();

 public slots:
      /** If no paramter is passed, the message will be a generic
       * 'define the CRS for this layer'.
       */
      void setMessage(QString theMessage="");
      
      QString selectedProj4String();
      long selectedCrsId();
      long selectedEpsg();

      void setSelectedCrsName(QString theName);
      void setSelectedCrsId(long theID);
      void setSelectedEpsg(long theID);

      /**
       * \brief filters this dialog by the given CRSs
       *
       * Sets this dialog to filter the available projections to those listed
       * by the given Coordinate Reference Systems.
       *
       * \param crsFilter a list of OGC Coordinate Reference Systems to filter the 
       *                  list of projections by.  This is useful in (e.g.) WMS situations
       *                  where you just want to offer what the WMS server can support.
       *
       * \note This function only deals with EpsgCrsId labels only at this time.
       *
       * \warning This function's behaviour is undefined if it is called after the dialog is shown.
       */
      void setOgcWmsCrsFilter(QSet<QString> crsFilter);


};