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