--- /dev/null
+#include "previewfiledialog.h"
+#include <QLabel>
+#include <QGridLayout>
+#include <QPainterPath>
+#include <QPainter>
+#include "charwindow.h"
+#include "global.h"
+#include "glyphpoints.h"
+
+
+PreviewFileDialog::PreviewFileDialog(
+ QWidget * parent,
+ const QString & caption,
+ const QString & directory,
+ const QString & filter):
+ QFileDialog(parent, caption, directory, filter)
+{
+ setObjectName("PreviewFileDialog");
+ QVBoxLayout * box = new QVBoxLayout;
+
+ mpPreview = new QLabel(tr("Preview"), this);
+ mpPreview->setAlignment(Qt::AlignCenter);
+ mpPreview->setObjectName("labelPreview");
+ box->addWidget(mpPreview);
+
+ box->addStretch();
+
+ // add to QFileDialog layout
+ {
+ QGridLayout * layout = (QGridLayout *)this->layout();
+ layout->addLayout(box, 1, 3, 3, 1);
+ }
+
+ connect(this, SIGNAL(currentChanged(const QString &)), this, SLOT(HandleCurrentChanged(const QString &)));
+}
+
+
+void PreviewFileDialog::HandleCurrentChanged(const QString & path)
+{
+ if (path.endsWith(".glyph") == false)
+ return;
+
+ GlyphPoints gp;
+ QPainterPath * glyphPath = NULL;
+ FILE * fp = fopen(path.toUtf8().data(), "r");
+
+ if (fp != NULL)
+ {
+ if (gp.LoadGlyphFromFile(fp) == true)
+ glyphPath = Global::charWnd->MakePathFromPoints(&gp);
+
+ fclose(fp);
+ }
+
+ QImage glyphImg(160, 160, QImage::Format_RGBA8888);
+ glyphImg.fill(Qt::transparent);
+ Global::charWnd->RenderPathInImage(glyphPath, &glyphImg);
+ QPixmap pixmap = QPixmap::fromImage(glyphImg);
+
+ if (pixmap.isNull() == false)
+ {
+ mpPreview->setPixmap(pixmap);//.scaled(mpPreview->width(), mpPreview->height(), Qt::KeepAspectRatio, Qt::SmoothTransformation));
+// return;
+ }
+
+// mpPreview->setText(QString("not an image"));//<br>%1").arg(path));
+}
+