#include "brainywindow.h" #include "ui_brainywindow.h" #include #include #include #include #include #include #include #include BrainyWindow::BrainyWindow(QWidget *parent) : QMainWindow{ parent }, ui{ std::make_unique() } { ui->setupUi(this); ui->textEdit->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont)); ui->runConsole->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont)); sh = std::make_unique(ui->textEdit->document()); ui->actionOpen->connect(ui->actionOpen, &QAction::triggered, this, &BrainyWindow::openFile); ui->actionSave->connect(ui->actionSave, &QAction::triggered, this, &BrainyWindow::saveFile); ui->actionSave_As->connect(ui->actionSave_As, &QAction::triggered, this, &BrainyWindow::saveFileAs); ui->run->connect(ui->run, &QPushButton::clicked, this, &BrainyWindow::startRun); ui->actionEditor_Font->connect(ui->actionEditor_Font, &QAction::triggered, this, [this] () { bool ok; QFont font = QFontDialog::getFont(&ok, ui->textEdit->font(), this); if (ok) { ui->textEdit->setFont(font); ui->runConsole->setFont(font); } }); } BrainyWindow::~BrainyWindow() { } void BrainyWindow::openFile() { /*auto dialog = std::make_unique(this, tr("Open File"), "", tr("Brainfuck File (*.bf);; Any File (*.*)")); dialog->show();*/ auto filename = QFileDialog::getOpenFileName(this, tr("Open File"), "", tr("Brainfuck File (*.bf);; Any File (*.*)")); if (filename == "") return; QFileInfo fileInfo(filename); if (!fileInfo.exists()) { QMessageBox::critical(this, "Error opening file", "File does not exist"); } openedFile = std::make_unique(filename); if (!openedFile->open(QIODevice::ReadOnly | QFile::Text)) { QMessageBox::critical(this, "Error opening file", "Could not open file"); return; } QTextStream in(openedFile.get()); ui->textEdit->setText(in.readAll()); } void BrainyWindow::saveFile() { if (!openedFile) { auto filename = QFileDialog::getSaveFileName(this, tr("Save File"), "", tr("Brainfuck File (*.bf);; Any File (*.*)")); if (filename == "") return; openedFile = std::make_unique(filename); } if (openedFile) { if (openedFile->isOpen() && !openedFile->isWritable()) { openedFile->close(); } if (!openedFile->isOpen()) { openedFile->open(QIODevice::WriteOnly | QFile::Text | QFile::Truncate); } if (openedFile->isOpen()) { openedFile->write(ui->textEdit->document()->toPlainText().toUtf8().data()); openedFile->close(); } else { QMessageBox::critical(this, "Error saving file", "Could not open file to save"); } } } void BrainyWindow::saveFileAs() { if (openedFile) { openedFile->close(); openedFile.reset(nullptr); } saveFile(); } void BrainyWindow::startRun() { this->ui->runConsole->append("output goes here"); } bool BrainyWindow::changesToSave() const { return changedAnything; }