digiKam
Loading...
Searching...
No Matches
batchtool.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2008-11-24
7 * Description : Batch Tool Container.
8 *
9 * SPDX-FileCopyrightText: 2008-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 *
11 * SPDX-License-Identifier: GPL-2.0-or-later
12 *
13 * ============================================================ */
14
15#pragma once
16
17// Qt includes
18
19#include <QObject>
20#include <QIcon>
21
22// Local includes
23
24#include "digikam_export.h"
25#include "drawdecodersettings.h"
26#include "dimg.h"
27#include "iteminfo.h"
28#include "queuesettings.h"
29#include "iofilesettings.h"
30
31class QWidget;
32
33namespace Digikam
34{
35
36class DImgBuiltinFilter;
37class DImgThreadedFilter;
38class DPluginBqm;
39
43typedef QMap<QString, QVariant> BatchToolSettings;
44
45class DIGIKAM_GUI_EXPORT BatchTool : public QObject
46{
47 Q_OBJECT
48
49public:
50
64 Q_ENUM(BatchToolGroup)
65
66
69public:
70
71 explicit BatchTool(const QString& name, BatchToolGroup group, QObject* const parent = nullptr);
72 ~BatchTool() override;
73
74 void setPlugin(DPluginBqm* const plugin);
75 DPluginBqm* plugin() const;
76
80 QString errorDescription() const;
81
85 BatchToolGroup toolGroup() const;
86
90 QString toolGroupToString() const;
91
95 void setToolTitle(const QString& toolTitle);
96 QString toolTitle() const;
97
101 void setToolDescription(const QString& toolDescription);
102 QString toolDescription() const;
103
107 void setToolIconName(const QString& iconName);
108 void setToolIcon(const QIcon& icon);
109 QIcon toolIcon() const;
110
114 void setSettings(const BatchToolSettings& settings);
115 BatchToolSettings settings() const;
116
120 void setInputUrl(const QUrl& inputUrl);
121 QUrl inputUrl() const;
122
126 void setOutputUrl(const QUrl& outputUrl);
127 QUrl outputUrl() const;
128
132 void setWorkingUrl(const QUrl& workingUrl);
133 QUrl workingUrl() const;
134
138 void setImageData(const DImg& img);
139 DImg imageData() const;
140
144 void setItemInfo(const ItemInfo& info);
145 ItemInfo imageInfo() const;
146
150 void setLastChainedTool(bool last);
151 bool isLastChainedTool() const;
152
158 void setOutputUrlFromInputUrl();
159
164 bool loadToDImg() const;
165
172 bool savefromDImg() const;
173
177 void setResetExifOrientationAllowed(bool reset);
178
182 bool getResetExifOrientationAllowed() const;
183
187 void setNeedResetExifOrientation(bool reset);
188
192 bool getNeedResetExifOrientation() const;
193
197 void setRawLoadingRules(QueueSettings::RawLoadingRule rule);
198
202 void setSaveAsNewVersion(bool fork = true);
203
208 void setBranchHistory(bool branch = true);
209 bool getBranchHistory() const;
210
214 void setDRawDecoderSettings(const DRawDecoderSettings& settings);
215
219 DRawDecoderSettings rawDecodingSettings() const;
220
224 void setIOFileSettings(const IOFileSettings& settings);
225
229 IOFileSettings ioFileSettings() const;
230
234 bool apply();
235
239 virtual int toolVersion() const
240 {
241 return 1;
242 };
243
249 virtual void cancel();
250
256 virtual QString outputSuffix() const;
257
262
267 virtual BatchTool* clone(QObject* const parent = nullptr) const = 0;
268
269Q_SIGNALS:
270
272 void signalVisible(bool);
273
274public Q_SLOTS:
275
276 void slotResetSettingsToDefault();
277 void slotSettingsChanged(const BatchToolSettings& settings);
278
279protected:
280
284 bool isRawFile(const QUrl& url) const;
285
289 void setErrorDescription(const QString& errmsg);
290
294 DImg& image() const;
295
299 bool isCancelled() const;
300
305 void applyFilter(DImgThreadedFilter* const filter);
306 void applyFilterChangedProperties(DImgThreadedFilter* const filter);
307 void applyFilter(DImgBuiltinFilter* const filter);
308
313 virtual bool toolOperations() = 0;
314
315protected Q_SLOTS:
316
317 virtual void slotSettingsChanged() = 0;
318
320
321public:
322
326 QWidget* settingsWidget() const;
327
331 void deleteSettingsWidget();
332
338 virtual void registerSettingsWidget();
339
340Q_SIGNALS:
341
346
347protected:
348
352 QWidget* m_settingsWidget = nullptr;
353
354protected Q_SLOTS:
355
360 virtual void slotAssignSettings2Widget() = 0;
361
363
364public:
365
366 // Declared as public due to BatchToolObserver class.
367 class Private;
368
369private:
370
371 Private* const d = nullptr;
372};
373
374} // namespace Digikam
Definition batchtool.h:46
virtual bool toolOperations()=0
virtual void slotSettingsChanged()=0
virtual BatchToolSettings defaultSettings()=0
void signalSettingsChanged(const BatchToolSettings &)
virtual void slotAssignSettings2Widget()=0
virtual BatchTool * clone(QObject *const parent=nullptr) const =0
virtual int toolVersion() const
Definition batchtool.h:239
void signalVisible(bool)
void signalAssignSettings2Widget()
BatchToolGroup
Definition batchtool.h:52
@ CustomTool
List of tools grouped and customized by users.
Definition batchtool.h:54
@ FiltersTool
Tools to apply filters and special effects (film grain, BlurFx, etc...)
Definition batchtool.h:60
@ TransformTool
Tools to transform images geometry (resize, rotate, flip, etc...)
Definition batchtool.h:58
@ ColorTool
Tools to manage image colors (Curves, BCG, etc...)
Definition batchtool.h:56
@ ConvertTool
Tools to convert images format (PNG, JPEG, TIFF, etc...)
Definition batchtool.h:61
@ DecorateTool
Tools to decorate images (Border, watermark, etc...)
Definition batchtool.h:59
@ EnhanceTool
Tools to enhance images (NR, sharp, etc...)
Definition batchtool.h:57
Definition dimgbuiltinfilter.h:34
Definition dimgthreadedfilter.h:31
Definition dimg.h:52
Definition dpluginbqm.h:33
Definition drawdecodersettings.h:33
Definition iofilesettings.h:26
Definition iteminfo.h:68
RawLoadingRule
Definition queuesettings.h:45
Definition datefolderview.cpp:34
QMap< QString, QVariant > BatchToolSettings
Definition batchtool.h:43