From a2bc2c924cb2605bc8c183fba771c8ccf4319a64 Mon Sep 17 00:00:00 2001 From: Damir Porobic Date: Sun, 4 Oct 2020 16:56:39 +0200 Subject: [PATCH] Expose method for adding custom context menu items via interface #96 --- CHANGELOG.md | 1 + include/kImageAnnotator/KImageAnnotator.h | 1 + src/gui/CoreView.cpp | 5 +++++ src/gui/CoreView.h | 1 + src/gui/KImageAnnotator.cpp | 6 ++++++ src/gui/annotator/AnnotationWidget.cpp | 9 +++++++-- src/gui/annotator/AnnotationWidget.h | 5 +++-- src/gui/annotator/tabs/AnnotationTabWidget.cpp | 9 +++++++-- src/gui/annotator/tabs/AnnotationTabWidget.h | 5 +++-- 9 files changed, 34 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f4fefb8..4f250294 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## Release 0.4.0 * New: Add Pixelate image area tool. ([#140](https://github.com/ksnip/kImageAnnotator/issues/140)) * New: Zoom in and out. ([#123](https://github.com/ksnip/kImageAnnotator/issues/123)) +* New: Add interface for adding custom tab context menu actions. ([#96](https://github.com/ksnip/kImageAnnotator/issues/96)) * Changed: Draw point when clicking and releasing without moving cursor. ([#136](https://github.com/ksnip/kImageAnnotator/issues/136)) * Fixed: Blur radius not updated when changing current items settings. ([#142](https://github.com/ksnip/kImageAnnotator/issues/142)) * Fixed: Text tool opens many unix sockets. ([#144](https://github.com/ksnip/kImageAnnotator/issues/144)) diff --git a/include/kImageAnnotator/KImageAnnotator.h b/include/kImageAnnotator/KImageAnnotator.h index d57628ad..cb796bd2 100644 --- a/include/kImageAnnotator/KImageAnnotator.h +++ b/include/kImageAnnotator/KImageAnnotator.h @@ -60,6 +60,7 @@ public Q_SLOTS: void setTabBarAutoHide(bool enabled); void removeTab(int index); void setStickers(const QStringList &stickerPaths, bool keepDefault); + void addTabContextMenuActions(const QList & actions); Q_SIGNALS: void imageChanged() const; diff --git a/src/gui/CoreView.cpp b/src/gui/CoreView.cpp index c44ca06c..99431d2d 100644 --- a/src/gui/CoreView.cpp +++ b/src/gui/CoreView.cpp @@ -133,4 +133,9 @@ void CoreView::setStickers(const QStringList &stickerPaths, bool keepDefault) mAnnotationWidget->setStickers(stickerPaths, keepDefault); } +void CoreView::addTabContextMenuActions(const QList &actions) +{ + mAnnotationWidget->addTabContextMenuActions(actions); +} + } // namespace kImageAnnotator diff --git a/src/gui/CoreView.h b/src/gui/CoreView.h index d7f5d16a..f281e2ec 100644 --- a/src/gui/CoreView.h +++ b/src/gui/CoreView.h @@ -59,6 +59,7 @@ public slots: void showScaler(); void setTabBarAutoHide(bool enabled); void setStickers(const QStringList &stickerPaths, bool keepDefault); + void addTabContextMenuActions(const QList & actions); private: Config *mConfig; diff --git a/src/gui/KImageAnnotator.cpp b/src/gui/KImageAnnotator.cpp index b305aa6e..3d9fafd7 100644 --- a/src/gui/KImageAnnotator.cpp +++ b/src/gui/KImageAnnotator.cpp @@ -192,6 +192,12 @@ void KImageAnnotator::setStickers(const QStringList &stickerPaths, bool keepDefa d->mCoreView.setStickers(stickerPaths, keepDefault); } +void KImageAnnotator::addTabContextMenuActions(const QList &actions) +{ + Q_D(KImageAnnotator); + d->mCoreView.addTabContextMenuActions(actions); +} + // KImageAnnotatorPrivate KImageAnnotatorPrivate::KImageAnnotatorPrivate(KImageAnnotator *kImageAnnotator) : q_ptr(kImageAnnotator), mCoreView(&mConfig) diff --git a/src/gui/annotator/AnnotationWidget.cpp b/src/gui/annotator/AnnotationWidget.cpp index 99ff5fd5..e7152e4e 100644 --- a/src/gui/annotator/AnnotationWidget.cpp +++ b/src/gui/annotator/AnnotationWidget.cpp @@ -92,7 +92,7 @@ void AnnotationWidget::updateTabInfo(int index, const QString &title, const QStr mAnnotationTabWidget->updateTabInfo(index, title, toolTip); } -void AnnotationWidget::insertImageItem(const QPointF &position, const QPixmap &pixmap) +void AnnotationWidget::insertImageItem(const QPointF &position, const QPixmap &pixmap) const { auto currentAnnotationArea = annotationArea(); if(currentAnnotationArea != nullptr) { @@ -120,7 +120,7 @@ QAction *AnnotationWidget::redoAction() const return mAnnotationTabWidget->redoAction(); } -void AnnotationWidget::clearSelection() +void AnnotationWidget::clearSelection() const { auto currentAnnotationArea = annotationArea(); if(currentAnnotationArea != nullptr) { @@ -153,4 +153,9 @@ void AnnotationWidget::setStickers(const QStringList &stickerPaths, bool keepDef mSettings->setStickers(stickerPaths, keepDefault); } +void AnnotationWidget::addTabContextMenuActions(const QList &actions) +{ + mAnnotationTabWidget->addContextMenuActions(actions); +} + } // namespace kImageAnnotator diff --git a/src/gui/annotator/AnnotationWidget.h b/src/gui/annotator/AnnotationWidget.h index 03694212..88b9d9d0 100644 --- a/src/gui/annotator/AnnotationWidget.h +++ b/src/gui/annotator/AnnotationWidget.h @@ -39,17 +39,18 @@ Q_OBJECT void loadImage(const QPixmap &pixmap); int addTab(const QPixmap &pixmap, const QString &title, const QString &toolTip); void updateTabInfo(int index, const QString &title, const QString &toolTip); - void insertImageItem(const QPointF &position, const QPixmap &pixmap); + void insertImageItem(const QPointF &position, const QPixmap &pixmap) const; void removeTab(int index); void setUndoEnabled(bool enabled); QAction* undoAction() const; QAction* redoAction() const; - void clearSelection(); + void clearSelection() const; AnnotationArea* annotationArea() const; AnnotationArea *annotationAreaAt(int index) const; void reloadConfig(); void setTabBarAutoHide(bool enabled); void setStickers(const QStringList &stickerPaths, bool keepDefault); + void addTabContextMenuActions(const QList & actions); signals: void imageChanged() const; diff --git a/src/gui/annotator/tabs/AnnotationTabWidget.cpp b/src/gui/annotator/tabs/AnnotationTabWidget.cpp index b547d5a7..23115ac4 100644 --- a/src/gui/annotator/tabs/AnnotationTabWidget.cpp +++ b/src/gui/annotator/tabs/AnnotationTabWidget.cpp @@ -99,7 +99,7 @@ void AnnotationTabWidget::tabRemoved(int index) QTabWidget::tabRemoved(index); } -void AnnotationTabWidget::undoTriggered() +void AnnotationTabWidget::undoTriggered() const { auto annotationArea = currentAnnotationArea(); if(annotationArea != nullptr) { @@ -107,7 +107,7 @@ void AnnotationTabWidget::undoTriggered() } } -void AnnotationTabWidget::redoTriggered() +void AnnotationTabWidget::redoTriggered() const { auto annotationArea = currentAnnotationArea(); if(annotationArea != nullptr) { @@ -133,4 +133,9 @@ void AnnotationTabWidget::updateSettingsListener() mSettingsProvider->setActiveListener(currentAnnotationArea()); } +void AnnotationTabWidget::addContextMenuActions(const QList &actions) +{ + mTabContextMenu->addCustomActions(actions); +} + } // namespace kImageAnnotator \ No newline at end of file diff --git a/src/gui/annotator/tabs/AnnotationTabWidget.h b/src/gui/annotator/tabs/AnnotationTabWidget.h index b003694f..914ad915 100644 --- a/src/gui/annotator/tabs/AnnotationTabWidget.h +++ b/src/gui/annotator/tabs/AnnotationTabWidget.h @@ -42,6 +42,7 @@ class AnnotationTabWidget : public QTabWidget QAction* redoAction() const; void updateTabInfo(int index, const QString &title, const QString &toolTip); void setUndoRedoEnabled(bool enabled); + void addContextMenuActions(const QList & actions); signals: void imageChanged() const; @@ -61,8 +62,8 @@ class AnnotationTabWidget : public QTabWidget AnnotationTabCloser *mTabCloser; private slots: - void undoTriggered(); - void redoTriggered(); + void undoTriggered() const; + void redoTriggered() const; void updateCurrentWidget(int index); void showTabContextMenu(const QPoint &pos); void updateSettingsListener();