diff --git a/src/Mod/PartDesign/Gui/TaskChamferParameters.cpp b/src/Mod/PartDesign/Gui/TaskChamferParameters.cpp index 5fcc8c3d7d..cdb66f1005 100644 --- a/src/Mod/PartDesign/Gui/TaskChamferParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskChamferParameters.cpp @@ -87,22 +87,8 @@ TaskChamferParameters::TaskChamferParameters(ViewProviderDressUp *DressUpView, Q this, SLOT(onButtonRefRemove(bool))); // Create context menu - deleteAction = new QAction(tr("Remove"), this); - deleteAction->setShortcut(QKeySequence::Delete); -#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) - // display shortcut behind the context menu entry - deleteAction->setShortcutVisibleInContextMenu(true); -#endif - ui->listWidgetReferences->addAction(deleteAction); - // if there is only one item, it cannot be deleted - if (ui->listWidgetReferences->count() == 1) { - deleteAction->setEnabled(false); - deleteAction->setStatusTip(tr("There must be at least one item")); - ui->buttonRefRemove->setEnabled(false); - ui->buttonRefRemove->setToolTip(tr("There must be at least one item")); - } + createDeleteAction(ui->listWidgetReferences, ui->buttonRefRemove); connect(deleteAction, SIGNAL(triggered()), this, SLOT(onRefDeleted())); - ui->listWidgetReferences->setContextMenuPolicy(Qt::ActionsContextMenu); connect(ui->listWidgetReferences, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(setSelection(QListWidgetItem*))); @@ -225,27 +211,7 @@ TaskChamferParameters::~TaskChamferParameters() bool TaskChamferParameters::event(QEvent *e) { - // in case another instance takes key events, accept the overridden key event - if (e && e->type() == QEvent::ShortcutOverride) { - QKeyEvent * kevent = static_cast(e); - if (kevent->modifiers() == Qt::NoModifier) { - if (kevent->key() == Qt::Key_Delete) { - kevent->accept(); - return true; - } - } - } - // if we have a Del key, trigger the deleteAction - else if (e && e->type() == QEvent::KeyPress) { - QKeyEvent * kevent = static_cast(e); - if (kevent->key() == Qt::Key_Delete) { - if (deleteAction->isEnabled()) - deleteAction->trigger(); - return true; - } - } - - return TaskDressUpParameters::event(e); + return TaskDressUpParameters::KeyEvent(e); } void TaskChamferParameters::changeEvent(QEvent *e) diff --git a/src/Mod/PartDesign/Gui/TaskChamferParameters.h b/src/Mod/PartDesign/Gui/TaskChamferParameters.h index ad8b8345e8..7a3590b36e 100644 --- a/src/Mod/PartDesign/Gui/TaskChamferParameters.h +++ b/src/Mod/PartDesign/Gui/TaskChamferParameters.h @@ -53,7 +53,6 @@ protected: double getLength(void) const; private: - QAction* deleteAction; Ui_TaskChamferParameters* ui; }; diff --git a/src/Mod/PartDesign/Gui/TaskDraftParameters.cpp b/src/Mod/PartDesign/Gui/TaskDraftParameters.cpp index 353b8425f5..cf9c3ae794 100644 --- a/src/Mod/PartDesign/Gui/TaskDraftParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskDraftParameters.cpp @@ -101,22 +101,8 @@ TaskDraftParameters::TaskDraftParameters(ViewProviderDressUp *DressUpView, QWidg this, SLOT(onButtonLine(bool))); // Create context menu - deleteAction = new QAction(tr("Remove"), this); - deleteAction->setShortcut(QKeySequence::Delete); -#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) - // display shortcut behind the context menu entry - deleteAction->setShortcutVisibleInContextMenu(true); -#endif - ui->listWidgetReferences->addAction(deleteAction); - // if there is only one item, it cannot be deleted - if (ui->listWidgetReferences->count() == 1) { - deleteAction->setEnabled(false); - deleteAction->setStatusTip(tr("There must be at least one item")); - ui->buttonRefRemove->setEnabled(false); - ui->buttonRefRemove->setToolTip(tr("There must be at least one item")); - } + createDeleteAction(ui->listWidgetReferences, ui->buttonRefRemove); connect(deleteAction, SIGNAL(triggered()), this, SLOT(onRefDeleted())); - ui->listWidgetReferences->setContextMenuPolicy(Qt::ActionsContextMenu); connect(ui->listWidgetReferences, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(setSelection(QListWidgetItem*))); @@ -331,27 +317,7 @@ TaskDraftParameters::~TaskDraftParameters() bool TaskDraftParameters::event(QEvent *e) { - // in case another instance takes key events, accept the overridden key event - if (e && e->type() == QEvent::ShortcutOverride) { - QKeyEvent * kevent = static_cast(e); - if (kevent->modifiers() == Qt::NoModifier) { - if (kevent->key() == Qt::Key_Delete) { - kevent->accept(); - return true; - } - } - } - // if we have a Del key, trigger the deleteAction - else if (e && e->type() == QEvent::KeyPress) { - QKeyEvent * kevent = static_cast(e); - if (kevent->key() == Qt::Key_Delete) { - if (deleteAction->isEnabled()) - deleteAction->trigger(); - return true; - } - } - - return TaskDressUpParameters::event(e); + return TaskDressUpParameters::KeyEvent(e); } void TaskDraftParameters::changeEvent(QEvent *e) diff --git a/src/Mod/PartDesign/Gui/TaskDraftParameters.h b/src/Mod/PartDesign/Gui/TaskDraftParameters.h index e2b139deb9..dcff0bbdaf 100644 --- a/src/Mod/PartDesign/Gui/TaskDraftParameters.h +++ b/src/Mod/PartDesign/Gui/TaskDraftParameters.h @@ -60,7 +60,6 @@ protected: virtual void onSelectionChanged(const Gui::SelectionChanges& msg); private: - QAction* deleteAction; Ui_TaskDraftParameters* ui; }; diff --git a/src/Mod/PartDesign/Gui/TaskDressUpParameters.cpp b/src/Mod/PartDesign/Gui/TaskDressUpParameters.cpp index c821edea85..beb33d7c4e 100644 --- a/src/Mod/PartDesign/Gui/TaskDressUpParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskDressUpParameters.cpp @@ -25,6 +25,7 @@ #include "PreCompiled.h" #ifndef _PreComp_ +# include # include # include # include @@ -211,6 +212,52 @@ void TaskDressUpParameters::itemClickedTimeout() { wasDoubleClicked = false; } +void TaskDressUpParameters::createDeleteAction(QListWidget* parentList, QWidget* parentButton) +{ + // creates a context menu, a shortcutt for it and connects it to e slot function + + deleteAction = new QAction(tr("Remove"), this); + deleteAction->setShortcut(QKeySequence::Delete); +#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) + // display shortcut behind the context menu entry + deleteAction->setShortcutVisibleInContextMenu(true); +#endif + parentList->addAction(deleteAction); + // if there is only one item, it cannot be deleted + if (parentList->count() == 1) { + deleteAction->setEnabled(false); + deleteAction->setStatusTip(tr("There must be at least one item")); + parentButton->setEnabled(false); + parentButton->setToolTip(tr("There must be at least one item")); + } + parentList->setContextMenuPolicy(Qt::ActionsContextMenu); +} + +bool TaskDressUpParameters::KeyEvent(QEvent *e) +{ + // in case another instance takes key events, accept the overridden key event + if (e && e->type() == QEvent::ShortcutOverride) { + QKeyEvent * kevent = static_cast(e); + if (kevent->modifiers() == Qt::NoModifier) { + if (kevent->key() == Qt::Key_Delete) { + kevent->accept(); + return true; + } + } + } + // if we have a Del key, trigger the deleteAction + else if (e && e->type() == QEvent::KeyPress) { + QKeyEvent * kevent = static_cast(e); + if (kevent->key() == Qt::Key_Delete) { + if (deleteAction->isEnabled()) + deleteAction->trigger(); + return true; + } + } + + return TaskDressUpParameters::event(e); +} + const std::vector TaskDressUpParameters::getReferences() const { PartDesign::DressUp* pcDressUp = static_cast(DressUpView->getObject()); diff --git a/src/Mod/PartDesign/Gui/TaskDressUpParameters.h b/src/Mod/PartDesign/Gui/TaskDressUpParameters.h index 0f8696218b..beb92e3ca6 100644 --- a/src/Mod/PartDesign/Gui/TaskDressUpParameters.h +++ b/src/Mod/PartDesign/Gui/TaskDressUpParameters.h @@ -31,6 +31,7 @@ #include "TaskFeatureParameters.h" #include "ViewProviderDressUp.h" +class QAction; class QListWidget; class QListWidgetItem; @@ -65,16 +66,18 @@ protected Q_SLOTS: void setSelection(QListWidgetItem* current); void itemClickedTimeout(); virtual void onRefDeleted(void) = 0; + void createDeleteAction(QListWidget* parentList, QWidget* parentButton); protected: + QAction* deleteAction; void exitSelectionMode(); bool referenceSelected(const Gui::SelectionChanges& msg); bool wasDoubleClicked = false; + bool KeyEvent(QEvent *e); protected: enum selectionModes { none, refAdd, refRemove, plane, line }; virtual void clearButtons(const selectionModes notThis) = 0; - virtual void changeEvent(QEvent *e) = 0; static void removeItemFromListWidget(QListWidget* widget, const char* itemstr); ViewProviderDressUp* getDressUpView() const diff --git a/src/Mod/PartDesign/Gui/TaskFilletParameters.cpp b/src/Mod/PartDesign/Gui/TaskFilletParameters.cpp index 4583885410..951692e95e 100644 --- a/src/Mod/PartDesign/Gui/TaskFilletParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskFilletParameters.cpp @@ -87,22 +87,8 @@ TaskFilletParameters::TaskFilletParameters(ViewProviderDressUp *DressUpView, QWi this, SLOT(onButtonRefRemove(bool))); // Create context menu - deleteAction = new QAction(tr("Remove"), this); - deleteAction->setShortcut(QKeySequence::Delete); -#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) - // display shortcut behind the context menu entry - deleteAction->setShortcutVisibleInContextMenu(true); -#endif - ui->listWidgetReferences->addAction(deleteAction); - // if there is only one item, it cannot be deleted - if (ui->listWidgetReferences->count() == 1) { - deleteAction->setEnabled(false); - deleteAction->setStatusTip(tr("There must be at least one item")); - ui->buttonRefRemove->setEnabled(false); - ui->buttonRefRemove->setToolTip(tr("There must be at least one item")); - } + createDeleteAction(ui->listWidgetReferences, ui->buttonRefRemove); connect(deleteAction, SIGNAL(triggered()), this, SLOT(onRefDeleted())); - ui->listWidgetReferences->setContextMenuPolicy(Qt::ActionsContextMenu); connect(ui->listWidgetReferences, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(setSelection(QListWidgetItem*))); @@ -226,27 +212,7 @@ TaskFilletParameters::~TaskFilletParameters() bool TaskFilletParameters::event(QEvent *e) { - // in case another instance takes key events, accept the overridden key event - if (e && e->type() == QEvent::ShortcutOverride) { - QKeyEvent * kevent = static_cast(e); - if (kevent->modifiers() == Qt::NoModifier) { - if (kevent->key() == Qt::Key_Delete) { - kevent->accept(); - return true; - } - } - } - // if we have a Del key, trigger the deleteAction - else if (e && e->type() == QEvent::KeyPress) { - QKeyEvent * kevent = static_cast(e); - if (kevent->key() == Qt::Key_Delete) { - if (deleteAction->isEnabled()) - deleteAction->trigger(); - return true; - } - } - - return TaskDressUpParameters::event(e); + return TaskDressUpParameters::KeyEvent(e); } void TaskFilletParameters::changeEvent(QEvent *e) diff --git a/src/Mod/PartDesign/Gui/TaskFilletParameters.h b/src/Mod/PartDesign/Gui/TaskFilletParameters.h index 0865bb6dd2..ea4fb684e6 100644 --- a/src/Mod/PartDesign/Gui/TaskFilletParameters.h +++ b/src/Mod/PartDesign/Gui/TaskFilletParameters.h @@ -53,7 +53,6 @@ protected: virtual void onSelectionChanged(const Gui::SelectionChanges& msg); private: - QAction* deleteAction; Ui_TaskFilletParameters* ui; }; diff --git a/src/Mod/PartDesign/Gui/TaskThicknessParameters.cpp b/src/Mod/PartDesign/Gui/TaskThicknessParameters.cpp index edd4e98e87..5df0625c35 100644 --- a/src/Mod/PartDesign/Gui/TaskThicknessParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskThicknessParameters.cpp @@ -103,22 +103,8 @@ TaskThicknessParameters::TaskThicknessParameters(ViewProviderDressUp *DressUpVie this, SLOT(onJoinTypeChanged(int))); // Create context menu - deleteAction = new QAction(tr("Remove"), this); - deleteAction->setShortcut(QKeySequence::Delete); -#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) - // display shortcut behind the context menu entry - deleteAction->setShortcutVisibleInContextMenu(true); -#endif - ui->listWidgetReferences->addAction(deleteAction); - // if there is only one item, it cannot be deleted - if (ui->listWidgetReferences->count() == 1) { - deleteAction->setEnabled(false); - deleteAction->setStatusTip(tr("There must be at least one item")); - ui->buttonRefRemove->setEnabled(false); - ui->buttonRefRemove->setToolTip(tr("There must be at least one item")); - } + createDeleteAction(ui->listWidgetReferences, ui->buttonRefRemove); connect(deleteAction, SIGNAL(triggered()), this, SLOT(onRefDeleted())); - ui->listWidgetReferences->setContextMenuPolicy(Qt::ActionsContextMenu); connect(ui->listWidgetReferences, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(setSelection(QListWidgetItem*))); @@ -302,27 +288,7 @@ TaskThicknessParameters::~TaskThicknessParameters() bool TaskThicknessParameters::event(QEvent *e) { - // in case another instance takes key events, accept the overridden key event - if (e && e->type() == QEvent::ShortcutOverride) { - QKeyEvent * kevent = static_cast(e); - if (kevent->modifiers() == Qt::NoModifier) { - if (kevent->key() == Qt::Key_Delete) { - kevent->accept(); - return true; - } - } - } - // if we have a Del key, trigger the deleteAction - else if (e && e->type() == QEvent::KeyPress) { - QKeyEvent * kevent = static_cast(e); - if (kevent->key() == Qt::Key_Delete) { - if (deleteAction->isEnabled()) - deleteAction->trigger(); - return true; - } - } - - return TaskDressUpParameters::event(e); + return TaskDressUpParameters::KeyEvent(e); } void TaskThicknessParameters::changeEvent(QEvent *e) diff --git a/src/Mod/PartDesign/Gui/TaskThicknessParameters.h b/src/Mod/PartDesign/Gui/TaskThicknessParameters.h index fb6c490e32..bf5aed26e7 100644 --- a/src/Mod/PartDesign/Gui/TaskThicknessParameters.h +++ b/src/Mod/PartDesign/Gui/TaskThicknessParameters.h @@ -60,7 +60,6 @@ protected: virtual void onSelectionChanged(const Gui::SelectionChanges& msg); private: - QAction* deleteAction; Ui_TaskThicknessParameters* ui; };