Implemented SketchMainWindow
This commit is contained in:
@@ -2,6 +2,15 @@
|
||||
#include "ui_sketchmainwindow.h"
|
||||
|
||||
#include <QFileDialog>
|
||||
#include <QStringBuilder>
|
||||
#include <QMessageBox>
|
||||
#include <QLabel>
|
||||
#include <QGraphicsView>
|
||||
|
||||
#include "sketchfile.h"
|
||||
#include "container/document.h"
|
||||
#include "container/page.h"
|
||||
#include "container/msjsonfilereference.h"
|
||||
|
||||
SketchMainWindow::SketchMainWindow(QWidget *parent) :
|
||||
QMainWindow(parent),
|
||||
@@ -22,5 +31,53 @@ SketchMainWindow::~SketchMainWindow()
|
||||
|
||||
void SketchMainWindow::openPressed()
|
||||
{
|
||||
QFileDialog::getOpenFileName(this, tr("Select a sketch file"), QString(), QStringLiteral("%0 (*.sketch)").arg(tr("Sketch file")));
|
||||
auto filename = QFileDialog::getOpenFileName(this, tr("Select a sketch file"), QString(), QStringLiteral("%0 (*.sketch)").arg(tr("Sketch file")));
|
||||
if(filename.isEmpty())
|
||||
return;
|
||||
|
||||
load(filename);
|
||||
}
|
||||
|
||||
void SketchMainWindow::load(const QString &filename)
|
||||
{
|
||||
while(ui->tabWidget->count())
|
||||
{
|
||||
auto widget = ui->tabWidget->widget(0);
|
||||
ui->tabWidget->removeTab(0);
|
||||
widget->deleteLater();
|
||||
}
|
||||
|
||||
SketchFile file;
|
||||
try
|
||||
{
|
||||
file.open(filename);
|
||||
}
|
||||
catch(const QString &msg)
|
||||
{
|
||||
QMessageBox::warning(this, tr("Could not load sketch file!"), tr("Could not load sketch file!") % "\n\n" % msg);
|
||||
return;
|
||||
}
|
||||
|
||||
for(auto pageRef : file.document()->pages())
|
||||
{
|
||||
Page *page;
|
||||
try
|
||||
{
|
||||
page = file.loadPage(pageRef->_ref());
|
||||
} catch (QString msg) {
|
||||
ui->tabWidget->addTab(new QLabel(QStringLiteral("<span style=\"color: red;\">Could not parse page: %0</span>").arg(msg), ui->tabWidget), pageRef->_ref());
|
||||
continue;
|
||||
}
|
||||
|
||||
QGraphicsScene *scene;
|
||||
try
|
||||
{
|
||||
scene = file.createScene(page);
|
||||
} catch (QString msg) {
|
||||
ui->tabWidget->addTab(new QLabel(QStringLiteral("<span style=\"color: red;\">Could not render page: %0</span>").arg(msg), ui->tabWidget), page->name());
|
||||
continue;
|
||||
}
|
||||
|
||||
ui->tabWidget->addTab(new QGraphicsView(scene, ui->tabWidget), page->name());
|
||||
}
|
||||
}
|
||||
|
@@ -19,6 +19,8 @@ private Q_SLOTS:
|
||||
void openPressed();
|
||||
|
||||
private:
|
||||
void load(const QString &filename);
|
||||
|
||||
Ui::SketchMainWindow *ui;
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user