From 92146c697c5e37d9bc63bf00287e7433e2c5ea63 Mon Sep 17 00:00:00 2001 From: Herwig Birke Date: Fri, 4 May 2018 08:43:45 +0200 Subject: [PATCH] . --- cmainwindow.cpp | 109 +++++++++++++++++++++++++++++++++++------------- cmainwindow.h | 7 +++- 2 files changed, 84 insertions(+), 32 deletions(-) diff --git a/cmainwindow.cpp b/cmainwindow.cpp index c16c8cd..9f80708 100644 --- a/cmainwindow.cpp +++ b/cmainwindow.cpp @@ -42,12 +42,13 @@ cMainWindow::cMainWindow(QWidget *parent) : m_lpFileToolBar(0), m_lpEditToolBar(0), m_lpTextToolBar(0), - m_lpFormatToolBar(0) + m_lpFormatToolBar(0), + m_lpOldTextEdit(0) { initUI(); createActions(); - //disableTextEdit(); + disableTextEdit(); QString szPath = QDir::homePath() + QDir::separator() + "OneDrive - WINDESIGN" + QDir::separator() + "__BOOKS__" + QDir::separator() + "qtStoryWriter" + QDir::separator() + "rückwärts.storyWriter" ; m_lpStoryBook = new cStoryBook(szPath); @@ -334,10 +335,10 @@ void cMainWindow::createTextActions() m_lpTextMenu->addSeparator(); -// QPixmap pix(16, 16); -// pix.fill(Qt::black); -// m_lpActionTextColor = m_lpTextMenu->addAction(pix, tr("&Color...")); -// m_lpTextToolBar->addAction(m_lpActionTextColor); + QPixmap pix(16, 16); + pix.fill(Qt::black); + m_lpActionTextColor = m_lpTextMenu->addAction(pix, tr("&Color...")); + m_lpTextToolBar->addAction(m_lpActionTextColor); m_lpFormatToolBar = addToolBar(tr("Format Actions")); m_lpFormatToolBar->setAllowedAreas(Qt::TopToolBarArea | Qt::BottomToolBarArea); @@ -367,6 +368,11 @@ void cMainWindow::disableTextEdit() m_lpTextMenu->setEnabled(false); m_lpTextToolBar->setEnabled(false); m_lpFormatToolBar->setEnabled(false); + + if(m_lpOldTextEdit) + disconnectTextEdit(); + + m_lpOldTextEdit = 0; } void cMainWindow::prepareTextEdit(cTextEdit* lpTextEdit) @@ -377,39 +383,82 @@ void cMainWindow::prepareTextEdit(cTextEdit* lpTextEdit) m_lpTextToolBar->setEnabled(true); m_lpFormatToolBar->setEnabled(true); - connect(m_lpActionTextBold, &QAction::triggered, lpTextEdit, &cTextEdit::onTextBold); - connect(m_lpActionTextItalic, &QAction::triggered, lpTextEdit, &cTextEdit::onTextItalic); - connect(m_lpActionTextUnderline, &QAction::triggered, lpTextEdit, &cTextEdit::onTextUnderline); + if(m_lpOldTextEdit == lpTextEdit) + return; -// connect(m_lpActionTextColor, &QAction::triggered, lpTextEdit, &cTextEdit::onTextColor); + if(m_lpOldTextEdit) + disconnectTextEdit(); - connect(lpTextEdit->document(), &cTextDocument::undoAvailable, m_lpActionUndo, &QAction::setEnabled); - connect(lpTextEdit->document(), &cTextDocument::redoAvailable, m_lpActionRedo, &QAction::setEnabled); + connect(m_lpActionTextBold, &QAction::triggered, lpTextEdit, &cTextEdit::onTextBold); + connect(m_lpActionTextItalic, &QAction::triggered, lpTextEdit, &cTextEdit::onTextItalic); + connect(m_lpActionTextUnderline, &QAction::triggered, lpTextEdit, &cTextEdit::onTextUnderline); + + connect(m_lpActionTextColor, &QAction::triggered, lpTextEdit, &cTextEdit::onTextColor); + + connect(lpTextEdit->document(), &cTextDocument::undoAvailable, m_lpActionUndo, &QAction::setEnabled); + connect(lpTextEdit->document(), &cTextDocument::redoAvailable, m_lpActionRedo, &QAction::setEnabled); m_lpActionUndo->setEnabled(lpTextEdit->document()->isUndoAvailable()); m_lpActionRedo->setEnabled(lpTextEdit->document()->isRedoAvailable()); - connect(m_lpActionUndo, &QAction::triggered, lpTextEdit, &cTextEdit::undo); - connect(m_lpActionRedo, &QAction::triggered, lpTextEdit, &cTextEdit::redo); + connect(m_lpActionUndo, &QAction::triggered, lpTextEdit, &cTextEdit::undo); + connect(m_lpActionRedo, &QAction::triggered, lpTextEdit, &cTextEdit::redo); #ifndef QT_NO_CLIPBOARD m_lpActionCut->setEnabled(false); m_lpActionCopy->setEnabled(false); - connect(QApplication::clipboard(), &QClipboard::dataChanged, this, &cMainWindow::onClipboardDataChanged); + connect(QApplication::clipboard(), &QClipboard::dataChanged, this, &cMainWindow::onClipboardDataChanged); - connect(m_lpActionCut, &QAction::triggered, lpTextEdit, &cTextEdit::cut); - connect(m_lpActionCopy, &QAction::triggered, lpTextEdit, &cTextEdit::copy); - connect(m_lpActionPaste, &QAction::triggered, lpTextEdit, &cTextEdit::paste); + connect(m_lpActionCut, &QAction::triggered, lpTextEdit, &cTextEdit::cut); + connect(m_lpActionCopy, &QAction::triggered, lpTextEdit, &cTextEdit::copy); + connect(m_lpActionPaste, &QAction::triggered, lpTextEdit, &cTextEdit::paste); #endif - connect(m_lpAlignGroup, &QActionGroup::triggered, lpTextEdit, &cTextEdit::onTextAlign); + connect(m_lpAlignGroup, &QActionGroup::triggered, lpTextEdit, &cTextEdit::onTextAlign); - connect(m_lpComboFont, QOverload::of(&QComboBox::activated), lpTextEdit, &cTextEdit::onTextFamily); - connect(m_lpComboSize, QOverload::of(&QComboBox::activated), lpTextEdit, &cTextEdit::onTextSize); + connect(m_lpComboFont, QOverload::of(&QComboBox::activated), lpTextEdit, &cTextEdit::onTextFamily); + connect(m_lpComboSize, QOverload::of(&QComboBox::activated), lpTextEdit, &cTextEdit::onTextSize); - connect(lpTextEdit, &cTextEdit::fontChanged, this, &cMainWindow::onFontChanged); -// connect(lpTextEdit, &cTextEdit::colorChanged, this, &cMainWindow::onColorChanged); - connect(lpTextEdit, &cTextEdit::alignmentChanged, this, &cMainWindow::onAlignmentChanged); + connect(lpTextEdit, &cTextEdit::fontChanged, this, &cMainWindow::onFontChanged); + connect(lpTextEdit, &cTextEdit::colorChanged, this, &cMainWindow::onColorChanged); + connect(lpTextEdit, &cTextEdit::alignmentChanged, this, &cMainWindow::onAlignmentChanged); + + m_lpOldTextEdit = lpTextEdit; +} + +void cMainWindow::disconnectTextEdit() +{ + if(m_lpOldTextEdit) + { + disconnect(m_lpActionTextBold, &QAction::triggered, m_lpOldTextEdit, &cTextEdit::onTextBold); + disconnect(m_lpActionTextItalic, &QAction::triggered, m_lpOldTextEdit, &cTextEdit::onTextItalic); + disconnect(m_lpActionTextUnderline, &QAction::triggered, m_lpOldTextEdit, &cTextEdit::onTextUnderline); + + disconnect(m_lpActionTextColor, &QAction::triggered, m_lpOldTextEdit, &cTextEdit::onTextColor); + + disconnect(m_lpOldTextEdit->document(), &cTextDocument::undoAvailable, m_lpActionUndo, &QAction::setEnabled); + disconnect(m_lpOldTextEdit->document(), &cTextDocument::redoAvailable, m_lpActionRedo, &QAction::setEnabled); + + disconnect(m_lpActionUndo, &QAction::triggered, m_lpOldTextEdit, &cTextEdit::undo); + disconnect(m_lpActionRedo, &QAction::triggered, m_lpOldTextEdit, &cTextEdit::redo); + +#ifndef QT_NO_CLIPBOARD + disconnect(QApplication::clipboard(), &QClipboard::dataChanged, this, &cMainWindow::onClipboardDataChanged); + + disconnect(m_lpActionCut, &QAction::triggered, m_lpOldTextEdit, &cTextEdit::cut); + disconnect(m_lpActionCopy, &QAction::triggered, m_lpOldTextEdit, &cTextEdit::copy); + disconnect(m_lpActionPaste, &QAction::triggered, m_lpOldTextEdit, &cTextEdit::paste); +#endif + + disconnect(m_lpAlignGroup, &QActionGroup::triggered, m_lpOldTextEdit, &cTextEdit::onTextAlign); + + disconnect(m_lpComboFont, QOverload::of(&QComboBox::activated), m_lpOldTextEdit, &cTextEdit::onTextFamily); + disconnect(m_lpComboSize, QOverload::of(&QComboBox::activated), m_lpOldTextEdit, &cTextEdit::onTextSize); + + disconnect(m_lpOldTextEdit, &cTextEdit::fontChanged, this, &cMainWindow::onFontChanged); + disconnect(m_lpOldTextEdit, &cTextEdit::colorChanged, this, &cMainWindow::onColorChanged); + disconnect(m_lpOldTextEdit, &cTextEdit::alignmentChanged, this, &cMainWindow::onAlignmentChanged); + } } void cMainWindow::updateWindowTitle() @@ -883,12 +932,12 @@ void cMainWindow::onFontChanged(const QFont& font) m_lpActionTextUnderline->setChecked(font.underline()); } -//void cMainWindow::onColorChanged(const QColor& color) -//{ -// QPixmap pix(16, 16); -// pix.fill(color); -// m_lpActionTextColor->setIcon(pix); -//} +void cMainWindow::onColorChanged(const QColor& color) +{ + QPixmap pix(16, 16); + pix.fill(color); + m_lpActionTextColor->setIcon(pix); +} void cMainWindow::onAlignmentChanged(const Qt::Alignment &alignment) { diff --git a/cmainwindow.h b/cmainwindow.h index 6351e73..c8dc27e 100644 --- a/cmainwindow.h +++ b/cmainwindow.h @@ -96,7 +96,7 @@ private slots: void onClipboardDataChanged(); void onFontChanged(const QFont& font); -// void onColorChanged(const QColor& color); + void onColorChanged(const QColor& color); void onAlignmentChanged(const Qt::Alignment& alignment); private: @@ -132,7 +132,7 @@ private: QAction* m_lpActionAlignRight; QAction* m_lpActionAlignJustify; -// QAction* m_lpActionTextColor; + QAction* m_lpActionTextColor; QAction* m_lpActionCut; QAction* m_lpActionCopy; @@ -143,6 +143,8 @@ private: QFontComboBox* m_lpComboFont; QComboBox* m_lpComboSize; + cTextEdit* m_lpOldTextEdit; + void initUI(); void createActions(); @@ -152,6 +154,7 @@ private: void disableTextEdit(); void prepareTextEdit(cTextEdit* lpTextEdit); + void disconnectTextEdit(); protected: void closeEvent(QCloseEvent *event);