]> Shamusworld >> Repos - ttedit/blobdiff - src/previewfiledialog.cpp
Added preview window to file loading dialog. :-)
[ttedit] / src / previewfiledialog.cpp
diff --git a/src/previewfiledialog.cpp b/src/previewfiledialog.cpp
new file mode 100644 (file)
index 0000000..b354247
--- /dev/null
@@ -0,0 +1,68 @@
+#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));
+}
+