Atlas-Launcher/source/main.cpp

71 lines
1.9 KiB
C++

#include <iostream>
#include "javascript/engine/AtlasJsEngine.hpp"
#include <QApplication>
#include <QMainWindow>
#include <QTextEdit>
#include <QPushButton>
#include <QLayout>
#include <QVBoxLayout>
#include <QDir>
#include <QString>
#include <QTemporaryDir>
#include <RestrictedVirtualFileSystem.hpp>
int main(int argc, char* argv[]) {
// application informations
QApplication application(argc, argv);
QApplication::setOrganizationDomain("faraphel.fr");
QApplication::setApplicationName("Atlas-Launcher");
QApplication::setApplicationVersion("1.0.0");
// create a restricted virtual file system
const auto fileSystem = std::make_shared<rvfs::RestrictedVirtualFileSystem>();
// mount the cache directory
fileSystem->mountDirectory(
QDir("/cache/"),
QDir("/home/faraphel/Documents/Projects/Atlas-Launcher/source/")
);
// mount the temporary directory
const auto temporaryDir = QTemporaryDir();
fileSystem->mountDirectory(
QDir("/tmp/"),
QDir(temporaryDir.path())
);
// create a small window
auto mainWindow = std::make_shared<QMainWindow>();
auto widget = std::make_shared<QWidget>();
mainWindow->setCentralWidget(widget.get());
auto layout = std::make_shared<QVBoxLayout>();
widget->setLayout(layout.get());
auto input = std::make_shared<QTextEdit>();
layout->addWidget(input.get());
auto submit = std::make_shared<QPushButton>();
layout->addWidget(submit.get());
submit->setText("Run");
auto output = std::make_shared<QTextEdit>();
layout->addWidget(output.get());
output->setEnabled(false);
QObject::connect(submit.get(), &QPushButton::clicked, [&]() {
auto engine = std::make_shared<atlas::js::AtlasJsEngine>(nullptr);
QJSValue value = engine->evaluate(input->toPlainText());
output->setText(value.toString());
});
mainWindow->show();
return QApplication::exec();
}