diff options
author | Aleks Kissinger <aleks0@gmail.com> | 2018-12-24 23:35:08 +0100 |
---|---|---|
committer | Aleks Kissinger <aleks0@gmail.com> | 2018-12-24 23:35:08 +0100 |
commit | 2f0d6d4a7df7c8508a4f831818e41c11cffdd513 (patch) | |
tree | 046586adc620f2e5ca4fdf46c01b10c58bf11408 /src/gui | |
parent | 52147f458485df3a28453ca217e94f4e2e142d61 (diff) |
added Open Recent (closes #40)
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/mainmenu.cpp | 37 | ||||
-rw-r--r-- | src/gui/mainmenu.h | 3 | ||||
-rw-r--r-- | src/gui/mainmenu.ui | 11 |
3 files changed, 51 insertions, 0 deletions
diff --git a/src/gui/mainmenu.cpp b/src/gui/mainmenu.cpp index 6f6ab00..d4372ed 100644 --- a/src/gui/mainmenu.cpp +++ b/src/gui/mainmenu.cpp @@ -33,6 +33,8 @@ MainMenu::MainMenu() ui.actionCheck_for_updates_automatically->setChecked(settings.value("check-for-updates").toBool()); ui.actionCheck_for_updates_automatically->blockSignals(false); } + + updateRecentFiles(); } void MainMenu::addDocks(QMenu *m) @@ -48,6 +50,32 @@ QAction *MainMenu::updatesAction() return ui.actionCheck_for_updates_automatically; } +void MainMenu::updateRecentFiles() +{ + QSettings settings("tikzit", "tikzit"); + ui.menuOpen_Recent->clear(); + + QStringList recentFiles = settings.value("recent-files").toStringList(); + //qDebug() << "update:" << recentFiles; + + QAction *action; + foreach (QString f, recentFiles) { + QFileInfo fi(f); + action = new QAction(fi.fileName(), ui.menuOpen_Recent); + action->setData(f); + ui.menuOpen_Recent->addAction(action); + connect(action, SIGNAL(triggered()), + this, SLOT(openRecent())); + } + + ui.menuOpen_Recent->addSeparator(); + action = new QAction("Clear List", ui.menuOpen_Recent); + connect(action, SIGNAL(triggered()), + tikzit, SLOT(clearRecentFiles())); + ui.menuOpen_Recent->addAction(action); + ui.menuOpen_Recent->repaint(); +} + // File void MainMenu::on_actionNew_triggered() { @@ -82,6 +110,15 @@ void MainMenu::on_actionExit_triggered() tikzit->quit(); } +void MainMenu::openRecent() +{ + if (sender() != nullptr) { + if (QAction *action = dynamic_cast<QAction*>(sender())) { + tikzit->open(action->data().toString()); + } + } +} + // Edit void MainMenu::on_actionUndo_triggered() diff --git a/src/gui/mainmenu.h b/src/gui/mainmenu.h index e1477b4..8acef49 100644 --- a/src/gui/mainmenu.h +++ b/src/gui/mainmenu.h @@ -30,6 +30,7 @@ public: MainMenu(); void addDocks(QMenu *m); QAction *updatesAction(); + void updateRecentFiles(); private: Ui::MainMenu ui; @@ -43,6 +44,8 @@ public slots: void on_actionSave_As_triggered(); void on_actionExit_triggered(); + void openRecent(); + // Edit void on_actionUndo_triggered(); void on_actionRedo_triggered(); diff --git a/src/gui/mainmenu.ui b/src/gui/mainmenu.ui index 58a2ff0..097430c 100644 --- a/src/gui/mainmenu.ui +++ b/src/gui/mainmenu.ui @@ -14,8 +14,14 @@ <property name="title"> <string>File</string> </property> + <widget class="QMenu" name="menuOpen_Recent"> + <property name="title"> + <string>Open Recent</string> + </property> + </widget> <addaction name="actionNew"/> <addaction name="actionOpen"/> + <addaction name="menuOpen_Recent"/> <addaction name="separator"/> <addaction name="actionClose"/> <addaction name="actionSave"/> @@ -344,6 +350,11 @@ <string>Ctrl+R</string> </property> </action> + <action name="actionClear_Menu"> + <property name="text"> + <string>Clear Menu</string> + </property> + </action> <addaction name="menuFile"/> <addaction name="menuEdit"/> <addaction name="menuView"/> |