// #include <QDialog>
// // #include <QLayout>
// #include <QMainWindow>
// #include <QSlider>
// #include <QLabel>
// #include <QLineEdit>
// #include <QDoubleValidator>
// #include <QComboBox>
// #include <QPushButton>
#include "qdutil.h"
#include "qrtn.h"
#include "QtPLWidget.h"
#if QT_VERSION < 0x040000
#include "qslider.h"
#include "qcombobox.h"
#include "qlabel.h"
#include "qwidget.h"
#include "qlayout.h"
#include "qlineedit.h"
#include "qpushbutton.h"
#include "qmainwindow.h"
#include "qfiledialog.h"
#include "qmenubar.h"
#include "qvalidator.h"
#include "qprintdialog.h"
#else
#include <QSlider>
#include <QComboBox>
#include <QLabel>
#include <QLayout>
#include <QLineEdit>
#include <QPushButton>
#include <QMainWindow>
#include <QFileDialog>
#include <QValidator>
#include <QAction>
#include <QMenuBar>
#include <QPrintDialog>
#if QT_VERSION >= 0x040300
#include <QSvgGenerator>
#endif
#endif

// QClusterConfig Window

class QCCWindow : public QMainWindow
{
	Q_OBJECT

	public:
		
		QCCWindow();
		
		void setParameters(QrVector& v1, QrVector& v2, QrVector& v3, QrVector& v4, const QString& title, const QString& frame);
	
	public slots:
		
		void altChanged(int);
		void azChanged(int);
		
		void projXChanged(int);
		void projYChanged(int);
		void projZChanged(int);
		
		void newX1(const QString&);
		void newY1(const QString&);
		void newZ1(const QString&);
		
		void newX2(const QString&);
		void newY2(const QString&);
		void newZ2(const QString&);
		
		void newX3(const QString&);
		void newY3(const QString&);
		void newZ3(const QString&);
		
		void newX4(const QString&);
		void newY4(const QString&);
		void newZ4(const QString&);
		
		void newTitle(const QString&);
		void newFrame(const QString&);
		
		void changeColour1();
		void changeColour2();
		void changeColour3();
		void changeColour4();
		void changeColourBg();
		
// 		void savePlot();
		void savePlotPNG();
		void savePlotJPG();
		void savePlotSVG();
		void savePlotPS();
		void savePlotPDF();
		void printPlot();
		
	protected:
		
		int getColourIndex(const QColor& c);
		
		void resetColourIndex();
		
		void replot();
		
		QtPLWidget * plot;
		
		struct
		{
			double position[3];
			QColor colour;
		}
		clusterParameters[4];
		
		bool projection[3];
		
		double alt, az;
		
		QColor bgColour;
		
		//TODO add time

		PLINT strm;
		
		QSlider * sliderAlt;
		QSlider * sliderAz;
		
		QPushButton * buttonCol1, *buttonCol2, *buttonCol3, *buttonCol4, *buttonBgColour;
		QCheckBox* projX, *projY, *projZ;
		QLineEdit* editTitle;
		QLineEdit* editAxis;
		QLineEdit* editX1, *editY1, *editZ1,
  				*editX2, *editY2, *editZ2,
      				*editX3, *editY3, *editZ3,
	  			*editX4, *editY4, *editZ4;
				
		vector <int> userR;
		vector <int> userG;
		vector <int> userB;
		
		QString title;
		QString frame;
};
