2 #include "ScatterPlotConfigDialog.h" 4 #include <qwt_interval.h> 12 #include <QPushButton> 32 setWindowTitle(
"Configure Scatter Plot");
37 QGridLayout *mainLayout =
new QGridLayout;
68 QLabel *titleLabel =
new QLabel(
"<h2>Create Scatter Plot</h2>");
69 mainLayout->addWidget(titleLabel, curRow, 0, 1, 3);
72 QLabel *headerLabel =
new QLabel(
"Choose where to gather the scatter plot " 73 "data from. The X and Y axes are a single band of a cube and must have " 74 "the same dimensions");
75 headerLabel->setWordWrap(
true);
76 mainLayout->addWidget(headerLabel, curRow, 0, 1, 3);
79 int spacerRow = curRow;
82 QLabel *configXLabel =
new QLabel(
"Choose X Input Data");
83 mainLayout->addWidget(configXLabel, curRow, 0, 1, 3);
86 QLabel *xAxisCubeLabel =
new QLabel(
"Cube");
87 mainLayout->addWidget(xAxisCubeLabel, curRow, 1, 1, 1);
96 QLabel *xAxisCubeBandLabel =
new QLabel(
"Cube Band");
97 mainLayout->addWidget(xAxisCubeBandLabel, curRow, 1, 1, 1);
105 QLabel *xAxisBinCountLabel =
new QLabel(
"Bin Count (resolution)");
106 mainLayout->addWidget(xAxisBinCountLabel, curRow, 1, 1, 1);
117 QLabel *useViewportRangesLabel =
new QLabel(
"Use Viewport Visible Range");
118 mainLayout->addWidget(useViewportRangesLabel, curRow, 1, 1, 1);
126 QLabel *configYLabel =
new QLabel(
"Choose Y Input Data");
127 mainLayout->addWidget(configYLabel, curRow, 0, 1, 3);
130 QLabel *yAxisCubeLabel =
new QLabel(
"Cube");
131 mainLayout->addWidget(yAxisCubeLabel, curRow, 1, 1, 1);
140 QLabel *yAxisCubeBandLabel =
new QLabel(
"Cube Band");
141 mainLayout->addWidget(yAxisCubeBandLabel, curRow, 1, 1, 1);
149 QLabel *yAxisBinCountLabel =
new QLabel(
"Bin Count (resolution)");
150 mainLayout->addWidget(yAxisBinCountLabel, curRow, 1, 1, 1);
161 QHBoxLayout *buttonsLayout =
new QHBoxLayout;
162 buttonsLayout->addStretch();
167 this, SLOT(accept()));
170 QPushButton *cancelButton =
new QPushButton(
"Cancel");
171 cancelButton->setIcon(QIcon::fromTheme(
"window-close"));
172 connect(cancelButton, SIGNAL(clicked()),
173 this, SLOT(reject()));
174 buttonsLayout->addWidget(cancelButton);
177 buttonsWrapper->setLayout(buttonsLayout);
178 mainLayout->addWidget(buttonsWrapper, curRow, 0, 1, 3);
180 mainLayout->setColumnMinimumWidth(0, 20);
181 mainLayout->setRowMinimumHeight(spacerRow, 20);
182 setLayout(mainLayout);
194 if (activeViewport) {
211 return QSize(qRound(QDialog::sizeHint().width() * 1.3),
212 QDialog::sizeHint().height());
316 container = viewport;
333 container = viewport;
353 allXCubes.append(viewport->
cube());
358 foreach (
Cube *cubeToRemove, extraXCubes) {
365 foreach (
Cube *cubeToAdd, missingXCubes) {
367 QString cubeName = QFileInfo(cubeToAdd->
fileName()).baseName();
393 allYCubes.append(cube);
399 foreach (
Cube *cubeToRemove, extraYCubes) {
406 foreach (
Cube *cubeToAdd, missingYCubes) {
408 QString cubeName = QFileInfo(cubeToAdd->
fileName()).baseName();
444 bool allowCreation =
true;
447 allowCreation =
false;
452 allowCreation =
false;
472 foreach (
Cube *toRemove, itemsToRemove) {
473 list.removeAll(toRemove);
503 double startSample =
Null;
504 double startLine =
Null;
505 double endSample =
Null;
506 double endLine =
Null;
510 container->viewport()->height() - 1,
512 sampleRange.setInterval(qRound(startSample), qRound(endSample));
513 lineRange.setInterval(qRound(startLine), qRound(endLine));
Cube display widget for certain Isis MDI applications.
const double Null
Value for an Isis Null pixel.
Cube * yAxisCube() const
The current user selection for a cube for the x-axis data for a scatter plot.
int yAxisBinCount() const
The current user selection for the resolution of the scatter plot's y data.
RangeType
This is used internally to differentiate range accessors.
QPointer< QSpinBox > m_yAxisCubeBandSpinBox
A user-selection for the y axis cube's band to plot.
QwtInterval sampleRange() const
This is the sample range from which the scatter plot should be created.
QPointer< QPushButton > m_createButton
This button triggers an accepted() signal.
QPointer< QSpinBox > m_yAxisBinCountSpinBox
A user-selection for the y axis cube's resolution.
int yAxisCubeBand() const
The current user selection for the band in the y-axis cube to get data from.
QVector< MdiCubeViewport *> * cubeViewportList()
This method returns a Vector of MdiCubeViewports.
void refreshWidgetStates()
Update the enabled/disabled states of the various widgets based on the current user inputs' states...
MdiCubeViewport * xAxisCubeViewport() const
This returns a viewport which contains the x-axis cube.
Cube * m_oldXAxisCube
This is used to detect when a user changes the x-axis cube.
QList< Cube * > removeFromList(QList< Cube *> list, QList< Cube *> itemsToRemove)
This is a helper method.
QwtInterval range(RangeType) const
This returns the sample/line ranges indicated by the user for the scatter plot to be created on...
QPointer< QSpinBox > m_xAxisBinCountSpinBox
A user-selection for the x axis cube's resolution.
QPointer< QCheckBox > m_useViewportRangesCheckBox
A user-selection for using only the visible range of the viewport.
QPointer< QComboBox > m_xAxisCubeCombo
A user-selection for the x axis cube.
QwtInterval lineRange() const
This is the line range from which the scatter plot should be created.
Cube * xAxisCube() const
The current user selection for a cube for the x-axis data for a scatter plot.
MdiCubeViewport * yAxisCubeViewport() const
This returns a viewport which contains the y-axis cube.
This is used to get the line range in a generic way.
int xAxisBinCount() const
The current user selection for the resolution of the scatter plot's x data.
Workspace * m_workspace
This is the workspace containing all of the viewports.
virtual QString fileName() const
Returns the opened cube's filename.
Namespace for ISIS/Bullet specific routines.
This is used to get the sample range in a generic way.
virtual QSize sizeHint() const
This is overridden to give a better default size than what Qt calculates by default.
QPointer< QSpinBox > m_xAxisCubeBandSpinBox
A user-selection for the x axis cube's band to plot.
void viewportToCube(int x, int y, double &sample, double &line) const
Turns a viewport into a cube.
ScatterPlotConfigDialog(MdiCubeViewport *activeViewport, Workspace *workspace, QWidget *parent=NULL)
This method creates all the dialog boxes required for the scatter plot window.
QPointer< QComboBox > m_yAxisCubeCombo
A user-selection for the y axis cube.
int xAxisCubeBand() const
The current user selection for the band in the x-axis cube to get data from.
IO Handler for Isis Cubes.