1 #pragma once
2 
3 #ifndef TOONZFOLDERS_INCLUDED
4 #define TOONZFOLDERS_INCLUDED
5 
6 #include "tfilepath.h"
7 
8 #undef DVAPI
9 #undef DVVAR
10 #ifdef TOONZLIB_EXPORTS
11 #define DVAPI DV_EXPORT_API
12 #define DVVAR DV_EXPORT_VAR
13 #else
14 #define DVAPI DV_IMPORT_API
15 #define DVVAR DV_IMPORT_VAR
16 #endif
17 
18 #include <set>
19 
20 namespace ToonzFolder {
21 
22 DVAPI TFilePath getModulesDir();
23 DVAPI TFilePath getTemplateModuleDir();
24 DVAPI TFilePath getMyModuleDir();
25 
26 DVAPI TFilePath getRoomsDir();
27 DVAPI TFilePath getTemplateRoomsDir();
28 DVAPI TFilePath getMyRoomsDir();
29 DVAPI TFilePath getRoomsFile(TFilePath filename);
30 DVAPI TFilePath getRoomsFile(std::string fn);
31 
32 // restituisce getMyModuleDir() + filename
33 // o getTemplateModuleDir() + filename
34 DVAPI TFilePath getModuleFile(TFilePath filename);
35 DVAPI TFilePath getModuleFile(std::string fn);
36 
37 DVAPI TFilePathSet getProjectsFolders();
38 DVAPI TFilePath getFirstProjectsFolder();
39 DVAPI TFilePath getStudioPaletteFolder();
40 DVAPI TFilePath getFxPresetFolder();
41 DVAPI TFilePath getLibraryFolder();
42 DVAPI TFilePath getReslistPath(bool forCleanup);
43 DVAPI TFilePath getCacheRootFolder();
44 DVAPI TFilePath getProfileFolder();
45 };
46 
47 class DVAPI FolderListenerManager {  // singleton
48 
49 public:
50   class Listener {
51   public:
52     virtual void onFolderChanged(const TFilePath &path) = 0;
~Listener()53     virtual ~Listener() {}
54   };
55 
56 private:
57   std::set<Listener *> m_listeners;
58 
59   FolderListenerManager();
60 
61 public:
62   static FolderListenerManager *instance();
63 
64   ~FolderListenerManager();
65 
66   void notifyFolderChanged(const TFilePath &path);
67 
68   void addListener(Listener *listener);
69   void removeListener(Listener *listener);
70 };
71 
72 #endif
73