brainywindow.cpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include "brainywindow.h"
  2. #include "ui_brainywindow.h"
  3. #include <QFileDialog>
  4. #include <QFontDialog>
  5. #include <QFile>
  6. #include <QTextStream>
  7. #include <QFontMetrics>
  8. #include <iostream>
  9. BrainyWindow::BrainyWindow(QWidget *parent) :
  10. QMainWindow(parent),
  11. ui(new Ui::BrainyWindow)
  12. {
  13. ui->setupUi(this);
  14. sh = new SyntaxHighlighter(ui->textEdit->document());
  15. ui->actionOpen_2->connect(ui->actionOpen_2, &QAction::triggered, this, &BrainyWindow::openFile);
  16. ui->actionSave_2->connect(ui->actionSave_2, &QAction::triggered, this, &BrainyWindow::saveFile);
  17. ui->actionEditor_Font->connect(ui->actionEditor_Font, &QAction::triggered, this, [this] () {
  18. bool ok;
  19. QFont font = QFontDialog::getFont(&ok, ui->textEdit->font(), this);
  20. if (ok)
  21. ui->textEdit->setFont(font);
  22. });
  23. }
  24. BrainyWindow::~BrainyWindow()
  25. {
  26. delete ui;
  27. }
  28. void BrainyWindow::openFile()
  29. {
  30. auto filename = QFileDialog::getOpenFileName(this,
  31. tr("Open File"), "", tr("Brainfuck File (*.bf);; Any File (*.*)"));
  32. openedFile = new QFile(filename);
  33. if (!openedFile->open(QIODevice::ReadWrite | QFile::Text)) return;
  34. QTextStream in(openedFile);
  35. ui->textEdit->setText(in.readAll());
  36. }
  37. void BrainyWindow::saveFile()
  38. {
  39. if (!openedFile->isOpen()) {
  40. openedFile->open(QIODevice::WriteOnly | QFile::Text | QFile::Truncate);
  41. }
  42. if (openedFile->isOpen()) {
  43. openedFile->write(ui->textEdit->document()->toPlainText().toUtf8().data());
  44. openedFile->close();
  45. }
  46. }
  47. bool BrainyWindow::changesToSave() const
  48. {
  49. return changedAnything;
  50. }