1 #include "StretchType.h"
10 #include <QPushButton>
12 #include <QTableWidget>
13 #include <QTextStream>
17 #include "HistogramWidget.h"
32 const QString &name,
const QColor &color) {
44 color.lighter(110), color.darker(110));
46 p_graph->setSizePolicy(QSizePolicy(QSizePolicy::Minimum,
47 QSizePolicy::Minimum));
48 p_graph->setMinimumSize(QSize(100, 50));
58 QPushButton *saveAsButton =
new QPushButton(
"Save Stretch Pairs...");
59 connect(saveAsButton, SIGNAL(clicked(
bool)),
this, SLOT(
savePairs()));
62 QSizePolicy sizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
63 sizePolicy.setHeightForWidth(
true);
64 p_graph->setSizePolicy(sizePolicy);
104 QTableWidget *table =
new QTableWidget(0, 2);
107 labels <<
"Input" <<
"Output";
108 table->setHorizontalHeaderLabels(labels);
110 table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
111 table->setEditTriggers(QAbstractItemView::NoEditTriggers);
112 table->setSelectionMode(QAbstractItemView::NoSelection);
113 table->setMinimumSize(QSize(50, 20));
134 for(
int i = 0; i < stretch.
Pairs(); i++) {
135 QTableWidgetItem *inputItem =
new QTableWidgetItem(QString(
"%1").arg(
137 inputItem->setTextAlignment(Qt::AlignCenter);
138 QTableWidgetItem *outputItem =
new QTableWidgetItem(QString(
"%1").arg(
140 outputItem->setTextAlignment(Qt::AlignCenter);
142 p_table->setItem(i, 0, inputItem);
143 p_table->setItem(i, 1, outputItem);
153 QString filename = QFileDialog::getSaveFileName((
QWidget *)parent(),
154 "Choose filename to save under",
".",
"Text Files (*.txt)");
155 if(filename.isEmpty())
return;
157 QFile outfile(filename);
158 bool success = outfile.open(QIODevice::WriteOnly);
161 QMessageBox::critical((
QWidget *)parent(),
162 "Error",
"Cannot open file, please check permissions");
167 QTextStream stream(&outfile);
172 stream << stretch.
Text() << endl;
void savePairs()
This asks the user for a file and saves the current stretch pairs to that file.
virtual Stretch getStretch()
Returns the current stretch object.
QTableWidget * createStretchTable()
This creates the stretch pairs table.
QString Text() const
Converts stretch pair to a string.
void stretchChanged()
Emitted when a new Stretch object is available.
Stretch * p_stretch
Current stretch pairs stored here.
QTableWidget * p_table
Pairs table.
Container of a cube histogram.
double Output(const int index) const
Returns the value of the output side of the stretch pair at the specified index.
virtual void setHistogram(const Histogram &)
This should be called when the visible area changes.
virtual void setStretch(Stretch)=0
Children must re-implement this to update their stretch pairs and GUI elements appropriately.
int Pairs() const
Returns the number of stretch pairs.
StretchType(const Histogram &hist, const Stretch &stretch, const QString &name, const QColor &color)
This constructs a stretch type.
void updateGraph()
This updates the graph with the current stretch object.
HistogramWidget * p_graph
Histogram graph.
double Input(const int index) const
Returns the value of the input side of the stretch pair at the specified index.
void updateTable()
This updates the table with the current stretch pairs.
virtual ~StretchType()
Destructor.
Histogram * p_cubeHist
Visible area histogram.
QGridLayout * p_mainLayout
Main layout.