7 //#include <QVBoxLayout>
10 #include "ImageSaveDialog.h"
11 #include "ImageScaler.h"
15 ImageSaveDialog::ImageSaveDialog(QGLWidget *newglwidget, QWidget *parent)
19 glwidget = newglwidget;
21 imageScaler = new ImageScaler();
26 tmpSize = glwidget->size();
27 imageScaler->setWidth(tmpSize.width());
28 imageScaler->setHeight(tmpSize.height());
32 filePathLabel = new QLabel();
33 filePathLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken);
34 filePathLabel->setMinimumWidth(30);
37 browseButton = new QPushButton(tr("Browse..."));
38 connect(browseButton, SIGNAL(clicked()),
39 this, SLOT(promptFileDialog()));
42 saveButton = new QPushButton(tr("Save"));
43 saveButton->setDefault(true);
44 connect(saveButton, SIGNAL(clicked()),
45 this, SLOT(accept()));
48 cancelButton = new QPushButton(tr("Cancel"));
49 connect(cancelButton, SIGNAL(clicked()),
50 this, SLOT(reject()));
53 QGridLayout *layout = new QGridLayout;
54 layout->addWidget(imageScaler, 0, 0, 1, 0, Qt::AlignCenter);
55 layout->addWidget(filePathLabel, 1, 0);
56 layout->addWidget(browseButton, 1, 1);
57 layout->addWidget(saveButton, 2, 0);
58 layout->addWidget(cancelButton, 2, 1);
63 void ImageSaveDialog::accept()
65 std::cout << "Accepted!\n";
70 void ImageSaveDialog::reject()
72 std::cout << "Rejected!\n";
76 void ImageSaveDialog::setSize(int width, int height)
78 imageScaler->setWidth(width);
79 imageScaler->setHeight(height);
82 //int ImageSaveDialog::exec()
87 // tmpSize = glwidget->size();
88 // imageScaler->setWidth(tmpSize.width());
89 // imageScaler->setHeight(tmpSize.height());
91 // return QDialog::exec();
95 void ImageSaveDialog::promptFileDialog()
98 filePath = QFileDialog::getSaveFileName(this,
99 "Choose a filename to save image",
101 "Images (*.png *.jpg)");
102 if (filePath.isEmpty())
105 filePathLabel->setText(filePath);
108 QSize ImageSaveDialog::getOpenGlPixmapSize()
110 int width = imageScaler->getWidth();
111 int height = imageScaler->getHeight();
113 if (height > 0 && width > 0)
115 return QSize(width, height);
121 QPixmap ImageSaveDialog::renderOpenGlPixmap()
127 QSize size = getOpenGlPixmapSize();
130 QPixmap pixmap = glwidget->renderPixmap(size.width(), size.height());
136 void ImageSaveDialog::savePixmap()
139 filePath = filePathLabel->text();
141 if (filePath.isEmpty())
142 //FIXME: Include prompt telling user of failure
146 pixmap = renderOpenGlPixmap();
148 //Save pixelmap to file!
149 if (filePath.endsWith(".png"))
150 pixmap.save(filePath, "PNG");
151 else if (filePath.endsWith(".jpg"))
152 pixmap.save(filePath, "JPG");
154 //FIXME: Include prompt telling user of failure