1 #pragma once
2 
3 #ifndef TSCENEHANDLE_H
4 #define TSCENEHANDLE_H
5 
6 #include <QObject>
7 
8 #include "tcommon.h"
9 
10 #undef DVAPI
11 #undef DVVAR
12 #ifdef TOONZLIB_EXPORTS
13 #define DVAPI DV_EXPORT_API
14 #define DVVAR DV_EXPORT_VAR
15 #else
16 #define DVAPI DV_IMPORT_API
17 #define DVVAR DV_IMPORT_VAR
18 #endif
19 
20 // forward declaration
21 class ToonzScene;
22 class TFilePath;
23 
24 //=============================================================================
25 // TSceneHandle
26 //-----------------------------------------------------------------------------
27 
28 class DVAPI TSceneHandle final : public QObject {
29   Q_OBJECT
30 
31   ToonzScene *m_scene;
32   bool m_dirtyFlag;
33 
34 public:
35   TSceneHandle();
36   ~TSceneHandle();
37 
38   ToonzScene *getScene() const;
39 
40   void setScene(ToonzScene *scene);
41   void notifySceneChanged(bool setDirty = true) {
42     emit sceneChanged();
43     if (setDirty) setDirtyFlag(true);
44   }
notifySceneSwitched()45   void notifySceneSwitched() {
46     emit sceneSwitched();
47     setDirtyFlag(false);
48   }
notifyCastChange()49   void notifyCastChange() { emit castChanged(); }
notifyCastFolderAdded(const TFilePath & path)50   void notifyCastFolderAdded(const TFilePath &path) {
51     emit castFolderAdded(path);
52   }
notifyNameSceneChange()53   void notifyNameSceneChange() { emit nameSceneChanged(); }
54 
notifyPreferenceChanged(const QString & prefName)55   void notifyPreferenceChanged(const QString &prefName) {
56     emit preferenceChanged(prefName);
57   }
58 
notifyPixelUnitSelected(bool on)59   void notifyPixelUnitSelected(bool on) { emit pixelUnitSelected(on); }
notifyImportPolicyChanged(int policy)60   void notifyImportPolicyChanged(int policy) {
61     emit importPolicyChanged(policy);
62   }
63 
setDirtyFlag(bool dirtyFlag)64   void setDirtyFlag(bool dirtyFlag) {
65     if (m_dirtyFlag == dirtyFlag) return;
66     m_dirtyFlag = dirtyFlag;
67     emit nameSceneChanged();
68   }
getDirtyFlag()69   bool getDirtyFlag() const { return m_dirtyFlag; }
70 
71 public slots:
setDirtyFlag()72   void setDirtyFlag() {
73     if (m_dirtyFlag == true) return;
74     m_dirtyFlag = true;
75     emit nameSceneChanged();
76   }
77 
78 signals:
79   void sceneSwitched();
80   void sceneChanged();
81   void castChanged();
82   void castFolderAdded(const TFilePath &path);
83   void nameSceneChanged();
84   void preferenceChanged(const QString &prefName);
85   void pixelUnitSelected(bool on);
86   void importPolicyChanged(int policy);
87 };
88 
89 #endif  // TSCENEHANDLE_H
90