7 //#include <QVBoxLayout>
10 #include "ImageSaveDialog.hpp"
11 #include "ImageScaler.hpp"
15 ImageSaveDialog::ImageSaveDialog(QGLWidget *newglwidget, QWidget *parent)
18 setWindowTitle(tr("Save Mussa Image"));
21 glwidget = newglwidget;
23 imageScaler = new ImageScaler();
28 tmpSize = glwidget->size();
29 imageScaler->setWidth(tmpSize.width());
30 imageScaler->setHeight(tmpSize.height());
34 filePathLabel = new QLabel();
35 filePathLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken);
36 filePathLabel->setMinimumWidth(30);
39 browseButton = new QPushButton(tr("Browse..."));
40 connect(browseButton, SIGNAL(clicked()),
41 this, SLOT(promptFileDialog()));
44 saveButton = new QPushButton(tr("Save"));
45 saveButton->setDefault(true);
46 connect(saveButton, SIGNAL(clicked()),
47 this, SLOT(accept()));
50 cancelButton = new QPushButton(tr("Cancel"));
51 connect(cancelButton, SIGNAL(clicked()),
52 this, SLOT(reject()));
55 QGridLayout *layout = new QGridLayout;
56 layout->addWidget(imageScaler, 0, 0, 1, 0, Qt::AlignCenter);
57 layout->addWidget(filePathLabel, 1, 0);
58 layout->addWidget(browseButton, 1, 1);
59 layout->addWidget(saveButton, 2, 0);
60 layout->addWidget(cancelButton, 2, 1);
65 void ImageSaveDialog::accept()
67 std::cout << "Accepted!\n";
72 void ImageSaveDialog::reject()
74 std::cout << "Rejected!\n";
78 void ImageSaveDialog::setSize(int width, int height)
80 imageScaler->setWidth(width);
81 imageScaler->setHeight(height);
84 //int ImageSaveDialog::exec()
89 // tmpSize = glwidget->size();
90 // imageScaler->setWidth(tmpSize.width());
91 // imageScaler->setHeight(tmpSize.height());
93 // return QDialog::exec();
97 void ImageSaveDialog::promptFileDialog()
100 filePath = QFileDialog::getSaveFileName(this,
101 "Choose a filename to save image",
103 "Images (*.png *.jpg)");
104 if (filePath.isEmpty())
107 filePathLabel->setText(filePath);
110 QSize ImageSaveDialog::getOpenGlPixmapSize()
112 int width = imageScaler->getWidth();
113 int height = imageScaler->getHeight();
115 if (height > 0 && width > 0)
117 return QSize(width, height);
123 QPixmap ImageSaveDialog::renderOpenGlPixmap()
129 QSize size = getOpenGlPixmapSize();
132 QPixmap pixmap = glwidget->renderPixmap(size.width(), size.height());
138 void ImageSaveDialog::savePixmap()
141 filePath = filePathLabel->text();
143 if (filePath.isEmpty())
144 //FIXME: Include prompt telling user of failure
148 pixmap = renderOpenGlPixmap();
150 //Save pixelmap to file!
151 if (filePath.endsWith(".png"))
152 pixmap.save(filePath, "PNG");
153 else if (filePath.endsWith(".jpg"))
154 pixmap.save(filePath, "JPG");
156 //FIXME: Include prompt telling user of failure