From 2127c52b94937d7878343b299e933d932480bd18 Mon Sep 17 00:00:00 2001 From: jorenchik Date: Fri, 18 Oct 2024 19:48:25 +0300 Subject: [PATCH] settings --- memorybase/all_types.mdem | 66 +++++++++-------------------- memorybase/faulty.mdem | 25 ----------- memorybase/generated.mdem | 23 ++++++++++ src/qtapp/main.cpp | 88 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 131 insertions(+), 71 deletions(-) create mode 100644 memorybase/generated.mdem diff --git a/memorybase/all_types.mdem b/memorybase/all_types.mdem index f5df5dd..bc2ad16 100644 --- a/memorybase/all_types.mdem +++ b/memorybase/all_types.mdem @@ -1,47 +1,21 @@ -12.08.2024 12\:05 - -- [2.52] Arrange these events in the order they occurred > - -^ The Fall of the Roman Empire - -^ The Renaissance - -^ The Industrial Revolution - -- [3.22] Match Planets to Their Characteristics > - - Earth: - - Contains Life - - Mars: - - Red Planet - - Jupiter: - - Largest Planet - - Has Rings - - Venus: - - Hottest Planet - - Mercury: - - Smallest Planet - - Saturn: - - Has Rings - - Neptune: - - Farthest from the Sun - - Has Rings - -- What countries reside in Europe? > - + Latvia - - Peru - + Poland - - China - - - -- What is the capital of Latvia? > - - Rīga - -- What is the capital of Estonia? > - - Tallin - - - -- Place the following steps of the scientific method in the correct order > - - Ask a Question - - Form a Hypothesis - -^ Conduct an Experiment - - Analyze Data +12.08.2024 15\:05 +- [69.00] Arrange these events in the order they + occurred > + -^ The Fall of the Roman Empire + -^ The Renaissance + -^ The Industrial Revolution + +- What is the capital of Latvia? > + - Rīga + +- What is the capital of Estonia? > + - Tallin + +- Place the following steps of the scientific + method in the correct order > + -^ Ask a Question + -^ Form a Hypothesis + -^ Conduct an Experiment + -^ Analyze Data + diff --git a/memorybase/faulty.mdem b/memorybase/faulty.mdem index 831fb21..e69de29 100644 --- a/memorybase/faulty.mdem +++ b/memorybase/faulty.mdem @@ -1,25 +0,0 @@ - - - -- Another question? > - - Answer - - Answer - - Answer - - Answer - - Answer - - - oejcoewjic - -- Question? > - - Answer - - - - fwefew - - dwedew - dwe - - - dee diff --git a/memorybase/generated.mdem b/memorybase/generated.mdem new file mode 100644 index 0000000..8816cc9 --- /dev/null +++ b/memorybase/generated.mdem @@ -0,0 +1,23 @@ +- fewfew ew > + - fewfeww + - fewfewfew + +- fewfew ew > + - fewfeww + - fewfewfew + +- fewfew ew > + - fewfeww + - fewfewfew + +- fewfew ew > + - fewfeww + - fewfewfew + +- fewfew ew > + - fewfeww + - fewfewfew + +- ifjiewfew > + - fewfewfe + diff --git a/src/qtapp/main.cpp b/src/qtapp/main.cpp index 81cf5f3..b62ecff 100644 --- a/src/qtapp/main.cpp +++ b/src/qtapp/main.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -10,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -45,9 +47,18 @@ #include #include #include +#include +#include +#include +#include +#include +#include +#include +#include #include "api.h" #include "parser.h" +#include "qscilexer.h" #include "trainWindow.h" #define TEXT_LG = 20 @@ -125,6 +136,8 @@ QToolButton *practice; QsciScintilla *editor; QMainWindow* editorWindow; +QSettings *settings; + const std::regex lastPathElementExp = std::regex("(.+\\/)*(.+)"); void showBacklabels(Mdem *mdem) { @@ -719,6 +732,81 @@ int main(int argc, char *argv[]) { pickDirectory ); }); + + auto* settingsWindow = new QWidget; + QString configDir = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation); + QDir().mkpath(configDir); // Ensure the directory exists + QString settingsFile = configDir + "/mdem.ini"; + settings = new QSettings(settingsFile, QSettings::IniFormat); + { // Settings window. + settingsWindow->setWindowTitle("Settings"); + + auto formLayout = new QFormLayout; + + /*auto notificationsCheckBox = new QCheckBox("Enable notifications");*/ + /*formLayout->addRow(notificationsCheckBox);*/ + + auto characterWrap = new QSpinBox; + characterWrap->setRange(50, 150); + formLayout->addRow("Character wrap in code gen:", characterWrap); + + auto* timezone = new QSpinBox; + timezone->setRange(-12, 12); + formLayout->addRow("Timezone as number (e.g. +2 as 2):", timezone); + + auto* notRemembered = new QSpinBox; + notRemembered->setRange(0, 100); + formLayout->addRow("Not remembered:", notRemembered); + + auto* hard = new QSpinBox; + hard->setRange(0, 100); + formLayout->addRow("Hard:", hard); + + auto* medium = new QSpinBox; + medium->setRange(0, 100); + formLayout->addRow("Medium:", medium); + + auto* easy = new QSpinBox; + easy->setRange(0, 100); + formLayout->addRow("Easy:", easy); + + auto* saveButton = new QPushButton("Save"); + auto* mainLayout = new QVBoxLayout; + + // TODO: make defaults and validate settings values + characterWrap->setValue(settings->value("characterWrap").toInt()); + timezone->setValue(settings->value("timezone").toInt()); + notRemembered->setValue(settings->value("notRemembered").toInt()); + hard->setValue(settings->value("hard").toInt()); + medium->setValue(settings->value("medium").toInt()); + easy->setValue(settings->value("easy").toInt()); + + QObject::connect( + saveButton, + &QPushButton::clicked, + [characterWrap, timezone, notRemembered, hard, medium, easy]() { + settings->setValue("characterWrap", characterWrap->value()); + settings->setValue("timezone", timezone->value()); + settings->setValue("notRemembered", notRemembered->value()); + settings->setValue("hard", hard->value()); + settings->setValue("medium", medium->value()); + settings->setValue("easy", easy->value()); + }); + + mainLayout->addLayout(formLayout); + mainLayout->addWidget(saveButton); + + settingsWindow->setLayout(mainLayout); + } + + QAction *openSettings = menu->addAction("Settings"); + QObject::connect( + openSettings, + &QAction::triggered, + [settingsWindow]() { + settingsWindow->show(); + }); + menuBar->addMenu(menu); window.setMenuBar(menuBar);