From c5138b2090e50cf76a51af1c561a31b5e01485db Mon Sep 17 00:00:00 2001 From: Grace Karanja Date: Mon, 9 Feb 2015 09:24:32 +0100 Subject: Add menu entries for undo/redo Add an edit menu with undo and redo submenus, and connect them to the UndoBuffer class. The submenus are only enabled when needed. Signed-off-by: Grace Karanja Signed-off-by: Dirk Hohndel --- qt-ui/mainwindow.cpp | 19 +++++++++++++++++++ qt-ui/mainwindow.h | 5 +++++ qt-ui/mainwindow.ui | 26 +++++++++++++++++++++++++- 3 files changed, 49 insertions(+), 1 deletion(-) diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp index 3142f5a82..57af5e091 100644 --- a/qt-ui/mainwindow.cpp +++ b/qt-ui/mainwindow.cpp @@ -31,6 +31,7 @@ #include "usermanual.h" #endif #include +#include "undobuffer.h" MainWindow *MainWindow::m_Instance = NULL; @@ -77,6 +78,7 @@ MainWindow::MainWindow() : QMainWindow(), connect(DivePlannerPointsModel::instance(), SIGNAL(planCreated()), this, SLOT(planCreated())); connect(DivePlannerPointsModel::instance(), SIGNAL(planCanceled()), this, SLOT(planCanceled())); connect(ui.printPlan, SIGNAL(pressed()), ui.divePlannerWidget, SLOT(printDecoPlan())); + connect(ui.menu_Edit, SIGNAL(aboutToShow()), this, SLOT(checkForUndoAndRedo())); #ifdef NO_PRINTING ui.printPlan->hide(); #endif @@ -152,6 +154,7 @@ MainWindow::MainWindow() : QMainWindow(), toolBar->setContentsMargins(zeroMargins); updateManager = new UpdateManager(this); + undoBuffer = new UndoBuffer(this); } MainWindow::~MainWindow() @@ -1466,3 +1469,19 @@ void MainWindow::on_actionFilterTags_triggered() else ui.multiFilter->setVisible(true); } + +void MainWindow::on_action_Undo_triggered() +{ + undoBuffer->undo(); +} + +void MainWindow::on_action_Redo_triggered() +{ + undoBuffer->redo(); +} + +void MainWindow::checkForUndoAndRedo() +{ + ui.action_Undo->setEnabled(undoBuffer->canUndo()); + ui.action_Redo->setEnabled(undoBuffer->canRedo()); +} diff --git a/qt-ui/mainwindow.h b/qt-ui/mainwindow.h index 2364caadc..641c9ec9b 100644 --- a/qt-ui/mainwindow.h +++ b/qt-ui/mainwindow.h @@ -30,6 +30,7 @@ class QWebView; class QSettings; class UpdateManager; class UserManual; +class UndoBuffer; enum MainWindowTitleFormat { MWTF_DEFAULT, @@ -82,6 +83,7 @@ public: void setPlanNotes(const char *notes); void printPlan(); void checkSurvey(QSettings *s); + UndoBuffer *undoBuffer; private slots: /* file menu action */ @@ -151,6 +153,9 @@ slots: void on_paste_triggered(); void on_actionFilterTags_triggered(); void on_actionConfigure_Dive_Computer_triggered(); + void on_action_Undo_triggered(); + void on_action_Redo_triggered(); + void checkForUndoAndRedo(); protected: void closeEvent(QCloseEvent *); diff --git a/qt-ui/mainwindow.ui b/qt-ui/mainwindow.ui index 8ffb8bbd8..9507b5fc8 100644 --- a/qt-ui/mainwindow.ui +++ b/qt-ui/mainwindow.ui @@ -195,7 +195,7 @@ p, li { white-space: pre-wrap; } 0 0 1682 - 27 + 25 @@ -271,7 +271,15 @@ p, li { white-space: pre-wrap; } + + + &Edit + + + + + @@ -813,6 +821,22 @@ p, li { white-space: pre-wrap; } User &survey + + + &Undo + + + Ctrl+Z + + + + + &Redo + + + Ctrl+Shift+Z + + -- cgit v1.2.3-70-g09d2