ticket:96
one of the problems is that when people try saving an image they
couldn't find where the image was saved too. This is probably because
they didn't set a file name and no errors were thrown.
this patch ties the "save as" prompt to the save button, so once someone
gets the pixel size right they have to chose a filename.
I also fixed the problem where it wasn't loading the "lock aspect ratio"
icon out of the resource file, and made a few other aesthetics updates.
#include <QDialog>
#include <QFileDialog>
#include <QDialog>
#include <QFileDialog>
+#include <QVBoxLayout>
+#include <QHBoxLayout>
#include <QLabel>
#include <QPixmap>
#include <QPushButton>
#include <QLabel>
#include <QPixmap>
#include <QPushButton>
-//#include <QVBoxLayout>
#include <QGLWidget>
#include "ImageSaveDialog.hpp"
#include <QGLWidget>
#include "ImageSaveDialog.hpp"
ImageSaveDialog::ImageSaveDialog(QGLWidget *newglwidget, QWidget *parent)
: QDialog(parent)
{
ImageSaveDialog::ImageSaveDialog(QGLWidget *newglwidget, QWidget *parent)
: QDialog(parent)
{
- setWindowTitle(tr("Save Mussa Image"));
+ setWindowTitle(tr("Mussa Save Image"));
// Init
glwidget = newglwidget;
// Init
glwidget = newglwidget;
imageScaler->setHeight(tmpSize.height());
}
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);
// Save Button
saveButton = new QPushButton(tr("Save"));
saveButton->setDefault(true);
this, SLOT(reject()));
// Layout
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);
void ImageSaveDialog::accept()
{
void ImageSaveDialog::accept()
{
- std::cout << "Accepted!\n";
- savePixmap();
- done(1);
+ bool endDialog = true;
+ savePixmap(endDialog);
+ if (endDialog) {
+ done(1);
+ }
}
void ImageSaveDialog::reject()
{
}
void ImageSaveDialog::reject()
{
- std::cout << "Rejected!\n";
imageScaler->setHeight(height);
}
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();
QSize ImageSaveDialog::getOpenGlPixmapSize()
{
int width = imageScaler->getWidth();
-void ImageSaveDialog::savePixmap()
+void ImageSaveDialog::savePixmap(bool &endDialog)
- 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");
+ }
+ }
public slots:
void accept();
void reject();
public slots:
void accept();
void reject();
- // int exec();
- void promptFileDialog();
void setSize(int width, int height);
void setSize(int width, int height);
+ //! prompt user for file name and save image, if (endDialog) close dialog
+ /** if endDialog is true, we should close the dialog box,
+ * otherwise, keep the dialog box. (In case the user canceled out
+ * of save as.
+ */
+ void savePixmap(bool &endDialog);
QSize getOpenGlPixmapSize();
QPixmap renderOpenGlPixmap();
ImageScaler *imageScaler;
QSize getOpenGlPixmapSize();
QPixmap renderOpenGlPixmap();
ImageScaler *imageScaler;
- //QPixmap *pixmap;
- QLabel *filePathLabel;
- QPushButton *browseButton;
QPushButton *saveButton;
QPushButton *cancelButton;
QPushButton *saveButton;
QPushButton *cancelButton;
#include "ImageScaler.hpp"
ImageScaler::ImageScaler(QWidget *parent)
#include "ImageScaler.hpp"
ImageScaler::ImageScaler(QWidget *parent)
{
lockAspectRatio = false;
aspectRatio = 1.0;
{
lockAspectRatio = false;
aspectRatio = 1.0;
curWidth = 1;
curHeight = 1;
curWidth = 1;
curHeight = 1;
- //lockAspectAction = new QAction(
- //lockAspectAction->setCheckable(true);
-
+ setFrameStyle(QFrame::StyledPanel);
+
lockButton = new QCheckBox();
lockButton = new QCheckBox();
- lockButton->setIcon(QIcon(tr("icons/lock.png")));
+ lockButton->setIcon(QIcon(":icons/lock.png"));
lockButton->setToolTip(tr("Lock aspect ratio"));
lockButton->setWhatsThis(tr("Lock aspect ratio"));
connect(lockButton, SIGNAL(stateChanged(int)),
lockButton->setToolTip(tr("Lock aspect ratio"));
lockButton->setWhatsThis(tr("Lock aspect ratio"));
connect(lockButton, SIGNAL(stateChanged(int)),
#ifndef _IMAGESCALER_H_
#define _IMAGESCALER_H_
#ifndef _IMAGESCALER_H_
#define _IMAGESCALER_H_
class QSpinBox;
class QLabel;
class QAction;
class QCheckBox;
class QSpinBox;
class QLabel;
class QAction;
class QCheckBox;
-class ImageScaler : public QWidget
+class ImageScaler : public QFrame