#include <QDialog>
#include <QFileDialog>
-#include <QGridLayout>
+#include <QVBoxLayout>
+#include <QHBoxLayout>
#include <QLabel>
#include <QPixmap>
#include <QPushButton>
-//#include <QVBoxLayout>
#include <QGLWidget>
#include "ImageSaveDialog.hpp"
ImageSaveDialog::ImageSaveDialog(QGLWidget *newglwidget, QWidget *parent)
: QDialog(parent)
{
- setWindowTitle(tr("Save Mussa Image"));
+ setWindowTitle(tr("Mussa Save Image"));
// Init
glwidget = newglwidget;
imageScaler->setHeight(tmpSize.height());
}
- // File Path Label
- filePathLabel = new QLabel();
- filePathLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken);
- filePathLabel->setMinimumWidth(30);
-
- // Browse Button
- browseButton = new QPushButton(tr("Browse..."));
- connect(browseButton, SIGNAL(clicked()),
- this, SLOT(promptFileDialog()));
-
// Save Button
saveButton = new QPushButton(tr("Save"));
saveButton->setDefault(true);
this, SLOT(reject()));
// Layout
- QGridLayout *layout = new QGridLayout;
- layout->addWidget(imageScaler, 0, 0, 1, 0, Qt::AlignCenter);
- layout->addWidget(filePathLabel, 1, 0);
- layout->addWidget(browseButton, 1, 1);
- layout->addWidget(saveButton, 2, 0);
- layout->addWidget(cancelButton, 2, 1);
+ QHBoxLayout *button_layout = new QHBoxLayout;
+ button_layout->addStretch(1);
+ button_layout->addWidget(saveButton);
+ button_layout->addWidget(cancelButton);
+
+ QHBoxLayout *image_centerer = new QHBoxLayout;
+ image_centerer->addStretch(1);
+ image_centerer->addWidget(imageScaler);
+ image_centerer->addStretch(1);
+ QVBoxLayout *layout = new QVBoxLayout;
+
+ layout->addStretch(1);
+ layout->addLayout(image_centerer);
+ layout->addStretch(1);
+ layout->addLayout(button_layout);
setLayout(layout);
}
-
void ImageSaveDialog::accept()
{
- std::cout << "Accepted!\n";
- savePixmap();
- done(1);
+ bool endDialog = true;
+ savePixmap(endDialog);
+ if (endDialog) {
+ done(1);
+ }
}
void ImageSaveDialog::reject()
{
- std::cout << "Rejected!\n";
done(0);
}
imageScaler->setHeight(height);
}
-//int ImageSaveDialog::exec()
-//{
-// if (glwidget)
-// {
-// QSize tmpSize;
-// tmpSize = glwidget->size();
-// imageScaler->setWidth(tmpSize.width());
-// imageScaler->setHeight(tmpSize.height());
-// }
-// return QDialog::exec();
-//}
-
-
-void ImageSaveDialog::promptFileDialog()
-{
- QString filePath;
- filePath = QFileDialog::getSaveFileName(this,
- "Choose a filename to save image",
- ".",
- "Images (*.png *.jpg)");
- if (filePath.isEmpty())
- return;
-
- filePathLabel->setText(filePath);
-}
-
QSize ImageSaveDialog::getOpenGlPixmapSize()
{
int width = imageScaler->getWidth();
return QPixmap();
}
-void ImageSaveDialog::savePixmap()
+void ImageSaveDialog::savePixmap(bool &endDialog)
{
QString filePath;
- filePath = filePathLabel->text();
-
- if (filePath.isEmpty())
- //FIXME: Include prompt telling user of failure
- return;
-
- QPixmap pixmap;
- pixmap = renderOpenGlPixmap();
+ filePath = QFileDialog::getSaveFileName(this,
+ "Choose a filename to save image",
+ ".",
+ "Images (*.png *.jpg)");
+
+ if (filePath.isNull()) {
+ // user canceled
+ endDialog = false;;
+ } else if (filePath.isEmpty()) {
+ // somethings wrong
+ endDialog = false;
+ } else {
+ QPixmap pixmap;
+ pixmap = renderOpenGlPixmap();
- //Save pixelmap to file!
- if (filePath.endsWith(".png"))
- pixmap.save(filePath, "PNG");
- else if (filePath.endsWith(".jpg"))
- pixmap.save(filePath, "JPG");
- else
- //FIXME: Include prompt telling user of failure
- return;
- return;
+ endDialog = true;
+ //Save pixelmap to file!
+ if (filePath.endsWith(".png"))
+ pixmap.save(filePath, "PNG");
+ else if (filePath.endsWith(".jpg"))
+ pixmap.save(filePath, "JPG");
+ else {
+ filePath.append(".png");
+ pixmap.save(filePath, "PNG");
+ }
+ }
}