diff --git a/src/ksieveui/editor/autotests/sieveeditormenubartest.cpp b/src/ksieveui/editor/autotests/sieveeditormenubartest.cpp index a190c6e..1aa0c1e 100644 --- a/src/ksieveui/editor/autotests/sieveeditormenubartest.cpp +++ b/src/ksieveui/editor/autotests/sieveeditormenubartest.cpp @@ -1,228 +1,228 @@ /* Copyright (C) 2015-2019 Laurent Montel This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include "sieveeditormenubartest.h" #include #include "../sieveeditormenubar.h" #include #include SieveEditorMenuBarTest::SieveEditorMenuBarTest(QObject *parent) : QObject(parent) { } SieveEditorMenuBarTest::~SieveEditorMenuBarTest() { } void SieveEditorMenuBarTest::shouldDisableActions() { KSieveUi::SieveEditorMenuBar bar; QVERIFY(bar.goToLineAction()->isEnabled()); QVERIFY(bar.findAction()->isEnabled()); QVERIFY(bar.replaceAction()->isEnabled()); QVERIFY(bar.pasteAction()->isEnabled()); QVERIFY(bar.zoomInAction()->isEnabled()); QVERIFY(bar.zoomOutAction()->isEnabled()); QVERIFY(bar.zoomResetAction()->isEnabled()); QVERIFY(bar.editorMenu()->isEnabled()); QVERIFY(bar.toolsMenu()->isEnabled()); QVERIFY(bar.fileMenu()->isEnabled()); QVERIFY(bar.commentCodeAction()->isEnabled()); QVERIFY(bar.uncommentCodeAction()->isEnabled()); QVERIFY(bar.debugSieveScriptAction()->isEnabled()); QVERIFY(!bar.undoAction()->isEnabled()); QVERIFY(!bar.redoAction()->isEnabled()); QVERIFY(!bar.copyAction()->isEnabled()); QVERIFY(bar.pasteAction()->isEnabled()); QVERIFY(!bar.cutAction()->isEnabled()); QVERIFY(bar.selectAllAction()->isEnabled()); QVERIFY(bar.wordWrapAction()->isEnabled()); QVERIFY(bar.printAction()->isEnabled()); QVERIFY(bar.printPreviewAction()->isEnabled()); bar.setEditorMode(false); QVERIFY(!bar.goToLineAction()->isEnabled()); QVERIFY(!bar.findAction()->isEnabled()); QVERIFY(!bar.replaceAction()->isEnabled()); QVERIFY(!bar.pasteAction()->isEnabled()); QVERIFY(!bar.zoomInAction()->isEnabled()); QVERIFY(!bar.zoomOutAction()->isEnabled()); QVERIFY(!bar.zoomResetAction()->isEnabled()); QVERIFY(!bar.selectAllAction()->isEnabled()); QVERIFY(bar.editorMenu()->isEnabled()); QVERIFY(bar.toolsMenu()->isEnabled()); QVERIFY(bar.fileMenu()->isEnabled()); QVERIFY(!bar.commentCodeAction()->isEnabled()); QVERIFY(!bar.uncommentCodeAction()->isEnabled()); QVERIFY(!bar.debugSieveScriptAction()->isEnabled()); QVERIFY(!bar.undoAction()->isEnabled()); QVERIFY(!bar.redoAction()->isEnabled()); QVERIFY(!bar.copyAction()->isEnabled()); QVERIFY(!bar.pasteAction()->isEnabled()); QVERIFY(!bar.cutAction()->isEnabled()); QVERIFY(!bar.selectAllAction()->isEnabled()); QVERIFY(!bar.wordWrapAction()->isEnabled()); QVERIFY(!bar.printAction()->isEnabled()); QVERIFY(!bar.printPreviewAction()->isEnabled()); bar.setEditorMode(true); QVERIFY(bar.goToLineAction()->isEnabled()); QVERIFY(bar.findAction()->isEnabled()); QVERIFY(bar.replaceAction()->isEnabled()); QVERIFY(bar.pasteAction()->isEnabled()); QVERIFY(bar.zoomInAction()->isEnabled()); QVERIFY(bar.zoomOutAction()->isEnabled()); QVERIFY(bar.zoomResetAction()->isEnabled()); QVERIFY(bar.selectAllAction()->isEnabled()); QVERIFY(bar.editorMenu()->isEnabled()); QVERIFY(bar.toolsMenu()->isEnabled()); QVERIFY(bar.fileMenu()->isEnabled()); QVERIFY(bar.commentCodeAction()->isEnabled()); QVERIFY(bar.uncommentCodeAction()->isEnabled()); QVERIFY(bar.debugSieveScriptAction()->isEnabled()); QVERIFY(bar.undoAction()->isEnabled()); QVERIFY(bar.redoAction()->isEnabled()); QVERIFY(bar.copyAction()->isEnabled()); QVERIFY(bar.pasteAction()->isEnabled()); QVERIFY(bar.cutAction()->isEnabled()); QVERIFY(bar.selectAllAction()->isEnabled()); QVERIFY(bar.wordWrapAction()->isEnabled()); QVERIFY(bar.printAction()->isEnabled()); QVERIFY(bar.printPreviewAction()->isEnabled()); } void SieveEditorMenuBarTest::shouldHaveDefaultValue() { KSieveUi::SieveEditorMenuBar bar; QVERIFY(bar.goToLineAction()); QVERIFY(bar.findAction()); QVERIFY(bar.replaceAction()); QVERIFY(bar.undoAction()); QVERIFY(bar.redoAction()); QVERIFY(bar.copyAction()); QVERIFY(bar.pasteAction()); QVERIFY(bar.cutAction()); QVERIFY(bar.zoomInAction()); QVERIFY(bar.zoomOutAction()); QVERIFY(bar.zoomResetAction()); QVERIFY(bar.selectAllAction()); QVERIFY(bar.editorMenu()); QVERIFY(bar.toolsMenu()); QVERIFY(bar.fileMenu()); QVERIFY(bar.viewMenu()); QVERIFY(bar.commentCodeAction()); QVERIFY(bar.uncommentCodeAction()); QVERIFY(bar.debugSieveScriptAction()); QVERIFY(bar.wordWrapAction()); QVERIFY(bar.printAction()); QVERIFY(bar.printPreviewAction()); QCOMPARE(bar.actions().count(), 4); - QCOMPARE(bar.editorMenu()->actions().count(), 15); + QCOMPARE(bar.editorMenu()->actions().count(), 18); QCOMPARE(bar.fileMenu()->actions().count(), 2); - QCOMPARE(bar.toolsMenu()->actions().count(), 4); + QCOMPARE(bar.toolsMenu()->actions().count(), 1); QCOMPARE(bar.viewMenu()->actions().count(), 4); QVERIFY(bar.findAction()->isEnabled()); QVERIFY(bar.replaceAction()->isEnabled()); QVERIFY(!bar.undoAction()->isEnabled()); QVERIFY(!bar.redoAction()->isEnabled()); QVERIFY(!bar.copyAction()->isEnabled()); QVERIFY(bar.pasteAction()->isEnabled()); QVERIFY(!bar.cutAction()->isEnabled()); QVERIFY(bar.selectAllAction()->isEnabled()); } void SieveEditorMenuBarTest::shouldEmitSignals() { KSieveUi::SieveEditorMenuBar bar; QSignalSpy spyComment(&bar, &KSieveUi::SieveEditorMenuBar::comment); bar.commentCodeAction()->trigger(); QSignalSpy spyUnComment(&bar, &KSieveUi::SieveEditorMenuBar::uncomment); bar.uncommentCodeAction()->trigger(); QSignalSpy spyCut(&bar, &KSieveUi::SieveEditorMenuBar::cut); bar.cutAction()->trigger(); QSignalSpy spyGotoLine(&bar, &KSieveUi::SieveEditorMenuBar::gotoLine); bar.goToLineAction()->trigger(); QSignalSpy spyCopy(&bar, &KSieveUi::SieveEditorMenuBar::copy); bar.copyAction()->trigger(); QSignalSpy spyPaste(&bar, &KSieveUi::SieveEditorMenuBar::paste); bar.pasteAction()->trigger(); QSignalSpy spyUndo(&bar, &KSieveUi::SieveEditorMenuBar::undo); bar.undoAction()->trigger(); QSignalSpy spyRedo(&bar, &KSieveUi::SieveEditorMenuBar::redo); bar.redoAction()->trigger(); QSignalSpy spySelectAll(&bar, &KSieveUi::SieveEditorMenuBar::selectAll); bar.selectAllAction()->trigger(); QSignalSpy spyFind(&bar, &KSieveUi::SieveEditorMenuBar::find); bar.findAction()->trigger(); QSignalSpy spyReplace(&bar, &KSieveUi::SieveEditorMenuBar::replace); bar.replaceAction()->trigger(); QSignalSpy spyZoomIn(&bar, &KSieveUi::SieveEditorMenuBar::zoomIn); bar.zoomInAction()->trigger(); QSignalSpy spyZoomOut(&bar, &KSieveUi::SieveEditorMenuBar::zoomOut); bar.zoomOutAction()->trigger(); QSignalSpy spyZoomReset(&bar, &KSieveUi::SieveEditorMenuBar::zoomReset); bar.zoomResetAction()->trigger(); QSignalSpy spyDebugScript(&bar, &KSieveUi::SieveEditorMenuBar::debugSieveScript); bar.debugSieveScriptAction()->trigger(); QSignalSpy spyWordWrapScript(&bar, &KSieveUi::SieveEditorMenuBar::wordWrap); bar.wordWrapAction()->trigger(); QSignalSpy spyPrint(&bar, &KSieveUi::SieveEditorMenuBar::print); bar.printAction()->trigger(); QSignalSpy spyPrintPreview(&bar, &KSieveUi::SieveEditorMenuBar::printPreview); bar.printPreviewAction()->trigger(); QCOMPARE(spyZoomOut.count(), 1); QCOMPARE(spyZoomIn.count(), 1); QCOMPARE(spyUnComment.count(), 1); QCOMPARE(spyComment.count(), 1); QCOMPARE(spyGotoLine.count(), 1); QCOMPARE(spyCut.count(), 1); QCOMPARE(spyCopy.count(), 1); QCOMPARE(spyPaste.count(), 1); QCOMPARE(spyRedo.count(), 1); QCOMPARE(spyUndo.count(), 1); QCOMPARE(spySelectAll.count(), 1); QCOMPARE(spyFind.count(), 1); QCOMPARE(spyReplace.count(), 1); QCOMPARE(spyZoomReset.count(), 1); QCOMPARE(spyDebugScript.count(), 1); QCOMPARE(spyWordWrapScript.count(), 1); QCOMPARE(spyPrint.count(), 1); QCOMPARE(spyPrintPreview.count(), 1); } QTEST_MAIN(SieveEditorMenuBarTest) diff --git a/src/ksieveui/editor/sieveeditormenubar.cpp b/src/ksieveui/editor/sieveeditormenubar.cpp index 06e24a7..2e42d9a 100644 --- a/src/ksieveui/editor/sieveeditormenubar.cpp +++ b/src/ksieveui/editor/sieveeditormenubar.cpp @@ -1,295 +1,295 @@ /* Copyright (C) 2015-2019 Laurent Montel This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include "sieveeditormenubar.h" #include "sieveeditortextmodewidget.h" #include "sieveeditortabwidget.h" #include #include #include #include using namespace KSieveUi; SieveEditorMenuBar::SieveEditorMenuBar(QWidget *parent) : QMenuBar(parent) { initActions(); initMenus(); } SieveEditorMenuBar::~SieveEditorMenuBar() { } void SieveEditorMenuBar::setEditorMode(bool editorMode) { mGoToLine->setEnabled(editorMode); mFindAction->setEnabled(editorMode); mReplaceAction->setEnabled(editorMode); mUndoAction->setEnabled(editorMode); mRedoAction->setEnabled(editorMode); mCopyAction->setEnabled(editorMode); mPasteAction->setEnabled(editorMode); mCutAction->setEnabled(editorMode); mSelectAllAction->setEnabled(editorMode); mCommentCodeAction->setEnabled(editorMode); mUncommentCodeAction->setEnabled(editorMode); mZoomInAction->setEnabled(editorMode); mZoomOutAction->setEnabled(editorMode); mZoomResetAction->setEnabled(editorMode); mDebugSieveAction->setEnabled(editorMode); mWordWrapAction->setEnabled(editorMode); mPrintAction->setEnabled(editorMode); mPrintPreviewAction->setEnabled(editorMode); } void SieveEditorMenuBar::initActions() { mGoToLine = new QAction(i18n("Go to Line"), this); mGoToLine->setIcon(QIcon::fromTheme(QStringLiteral("go-jump"))); mGoToLine->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_G)); connect(mGoToLine, &QAction::triggered, this, &SieveEditorMenuBar::gotoLine); mCommentCodeAction = new QAction(i18n("Comment"), this); mCommentCodeAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_D)); connect(mCommentCodeAction, &QAction::triggered, this, &SieveEditorMenuBar::comment); mUncommentCodeAction = new QAction(i18n("Uncomment"), this); mUncommentCodeAction->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_D)); connect(mUncommentCodeAction, &QAction::triggered, this, &SieveEditorMenuBar::uncomment); mDebugSieveAction = new QAction(i18n("Debug Sieve Script..."), this); mDebugSieveAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_D)); connect(mDebugSieveAction, &QAction::triggered, this, &SieveEditorMenuBar::debugSieveScript); mFindAction = KStandardAction::find(this, &SieveEditorMenuBar::find, this); mReplaceAction = KStandardAction::replace(this, &SieveEditorMenuBar::replace, this); mUndoAction = KStandardAction::undo(this, &SieveEditorMenuBar::undo, this); mRedoAction = KStandardAction::redo(this, &SieveEditorMenuBar::redo, this); mCopyAction = KStandardAction::copy(this, &SieveEditorMenuBar::copy, this); mPasteAction = KStandardAction::paste(this, &SieveEditorMenuBar::paste, this); mCutAction = KStandardAction::cut(this, &SieveEditorMenuBar::cut, this); mSelectAllAction = KStandardAction::selectAll(this, &SieveEditorMenuBar::selectAll, this); mZoomInAction = KStandardAction::zoomIn(this, &SieveEditorMenuBar::zoomIn, this); mZoomOutAction = KStandardAction::zoomOut(this, &SieveEditorMenuBar::zoomOut, this); mPrintAction = KStandardAction::print(this, &SieveEditorMenuBar::print, this); mPrintPreviewAction = KStandardAction::printPreview(this, &SieveEditorMenuBar::printPreview, this); mZoomResetAction = KStandardAction::actualSize(this, &SieveEditorMenuBar::zoomReset, this); mWordWrapAction = new QAction(i18n("Wordwrap"), this); mWordWrapAction->setCheckable(true); connect(mWordWrapAction, &QAction::triggered, this, &SieveEditorMenuBar::wordWrap); mUndoAction->setEnabled(false); mRedoAction->setEnabled(false); mCopyAction->setEnabled(false); mCutAction->setEnabled(false); } QMenu *SieveEditorMenuBar::editorMenu() const { return mEditorMenu; } void SieveEditorMenuBar::initMenus() { mFileMenu = addMenu(i18nc("@title:menu", "File")); mFileMenu->addAction(mPrintAction); mFileMenu->addAction(mPrintPreviewAction); mEditorMenu = addMenu(i18nc("@title:menu", "Edit")); mEditorMenu->addAction(mUndoAction); mEditorMenu->addAction(mRedoAction); mEditorMenu->addSeparator(); mEditorMenu->addAction(mCutAction); mEditorMenu->addAction(mCopyAction); mEditorMenu->addAction(mPasteAction); mEditorMenu->addSeparator(); mEditorMenu->addAction(mSelectAllAction); mEditorMenu->addSeparator(); mEditorMenu->addAction(mFindAction); mEditorMenu->addAction(mReplaceAction); mEditorMenu->addSeparator(); mEditorMenu->addAction(mGoToLine); mEditorMenu->addSeparator(); mEditorMenu->addAction(mWordWrapAction); + mEditorMenu->addSeparator(); + mEditorMenu->addAction(mCommentCodeAction); + mEditorMenu->addAction(mUncommentCodeAction); mViewMenu = addMenu(i18nc("@title:menu", "View")); mViewMenu->addAction(mZoomInAction); mViewMenu->addAction(mZoomOutAction); mViewMenu->addSeparator(); mViewMenu->addAction(mZoomResetAction); mToolsMenu = addMenu(i18nc("@title:menu", "Tools")); - mToolsMenu->addAction(mCommentCodeAction); - mToolsMenu->addAction(mUncommentCodeAction); - mToolsMenu->addSeparator(); mToolsMenu->addAction(mDebugSieveAction); } QAction *SieveEditorMenuBar::printAction() const { return mPrintAction; } void SieveEditorMenuBar::slotUpdateActions() { const bool hasActionInHtmlModeToo = mTextModeWidget->tabWidget()->currentPageIsHtmlPage(); mGoToLine->setEnabled(!hasActionInHtmlModeToo); mFindAction->setEnabled(true); mReplaceAction->setEnabled(!hasActionInHtmlModeToo); mUndoAction->setEnabled(!hasActionInHtmlModeToo); mRedoAction->setEnabled(!hasActionInHtmlModeToo); mCopyAction->setEnabled(true); mPasteAction->setEnabled(!hasActionInHtmlModeToo); mCutAction->setEnabled(!hasActionInHtmlModeToo); mSelectAllAction->setEnabled(true); mCommentCodeAction->setEnabled(!hasActionInHtmlModeToo); mUncommentCodeAction->setEnabled(!hasActionInHtmlModeToo); mZoomInAction->setEnabled(true); mZoomOutAction->setEnabled(true); mZoomResetAction->setEnabled(true); mDebugSieveAction->setEnabled(!hasActionInHtmlModeToo); mWordWrapAction->setEnabled(!hasActionInHtmlModeToo); mPrintAction->setEnabled(!hasActionInHtmlModeToo); mPrintPreviewAction->setEnabled(!hasActionInHtmlModeToo); } QMenu *SieveEditorMenuBar::viewMenu() const { return mViewMenu; } void SieveEditorMenuBar::setTextModeWidget(SieveEditorTextModeWidget *textModeWidget) { if (!mTextModeWidget) { mTextModeWidget = textModeWidget; connect(mTextModeWidget->tabWidget(), &QTabWidget::currentChanged, this, &SieveEditorMenuBar::slotUpdateActions); } } QAction *SieveEditorMenuBar::printPreviewAction() const { return mPrintPreviewAction; } QAction *SieveEditorMenuBar::uncommentCodeAction() const { return mUncommentCodeAction; } QAction *SieveEditorMenuBar::zoomResetAction() const { return mZoomResetAction; } QAction *SieveEditorMenuBar::wordWrapAction() const { return mWordWrapAction; } QAction *SieveEditorMenuBar::zoomInAction() const { return mZoomInAction; } QAction *SieveEditorMenuBar::zoomOutAction() const { return mZoomOutAction; } QAction *SieveEditorMenuBar::debugSieveScriptAction() const { return mDebugSieveAction; } QAction *SieveEditorMenuBar::commentCodeAction() const { return mCommentCodeAction; } QMenu *SieveEditorMenuBar::fileMenu() const { return mFileMenu; } QMenu *SieveEditorMenuBar::toolsMenu() const { return mToolsMenu; } QAction *SieveEditorMenuBar::selectAllAction() const { return mSelectAllAction; } QAction *SieveEditorMenuBar::cutAction() const { return mCutAction; } QAction *SieveEditorMenuBar::pasteAction() const { return mPasteAction; } QAction *SieveEditorMenuBar::copyAction() const { return mCopyAction; } QAction *SieveEditorMenuBar::redoAction() const { return mRedoAction; } QAction *SieveEditorMenuBar::undoAction() const { return mUndoAction; } QAction *SieveEditorMenuBar::replaceAction() const { return mReplaceAction; } QAction *SieveEditorMenuBar::findAction() const { return mFindAction; } QAction *SieveEditorMenuBar::goToLineAction() const { return mGoToLine; } void SieveEditorMenuBar::slotUndoAvailable(bool b) { mUndoAction->setEnabled(b); } void SieveEditorMenuBar::slotRedoAvailable(bool b) { mRedoAction->setEnabled(b); } void SieveEditorMenuBar::slotCopyAvailable(bool b) { mCutAction->setEnabled(b); mCopyAction->setEnabled(b); }