File indexing completed on 2024-05-12 16:01:31

0001 /*
0002  *  SPDX-FileCopyrightText: 2005 Boudewijn Rempt <boud@valdyas.org>
0003  *  SPDX-FileCopyrightText: 2007 Cyrille Berger <cberger@cberger.net>
0004  *
0005  *  SPDX-License-Identifier: GPL-2.0-or-later
0006  */
0007 
0008 #ifndef _KIS_FILTER_MANAGER_
0009 #define _KIS_FILTER_MANAGER_
0010 
0011 #include <QObject>
0012 #include <kritaui_export.h>
0013 #include <kis_types.h>
0014 
0015 class KisViewManager;
0016 class KisKActionCollection;
0017 class KisActionManager;
0018 class KisView;
0019 
0020 /**
0021  * Create all the filter actions for the specified view and implement re-apply filter
0022  */
0023 class KRITAUI_EXPORT KisFilterManager : public QObject
0024 {
0025 
0026     Q_OBJECT
0027 
0028 public:
0029 
0030     KisFilterManager(KisViewManager * parent);
0031     ~KisFilterManager() override;
0032     void setView(QPointer<KisView>imageView);
0033 
0034     void setup(KisKActionCollection * ac, KisActionManager *actionManager);
0035     void updateGUI();
0036 
0037     void apply(KisFilterConfigurationSP filterConfig);
0038     void finish();
0039     //! Cancel current running stroke
0040     void cancelRunningStroke();
0041     //! Call `cancelRunningStroke()` and then delete dialog `d`
0042     void cancelDialog();
0043     bool isStrokeRunning() const;
0044 
0045     bool isIdle() const;
0046 
0047     void setFilterAllSelectedFrames(bool filterAllSelectedFrames);
0048     bool filterAllSelectedFrames();
0049 
0050 private Q_SLOTS:
0051 
0052     void insertFilter(const QString &name);
0053     void showFilterDialog(const QString &filterId, KisFilterConfigurationSP overrideDefaultConfig = nullptr);
0054     void reapplyLastFilter();
0055     void reapplyLastFilterReprompt();
0056 
0057     void slotStrokeEndRequested();
0058     void slotStrokeCancelRequested();
0059 
0060     //! Clean up after filter dialog has been accepted / rejected / closed
0061     void filterDialogHasFinished(int);
0062 
0063 private:
0064     struct Private;
0065     QScopedPointer<Private> d;
0066 };
0067 
0068 #endif