| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #ifndef MATERIAL_EXTERNALMANAGER_H |
| | #define MATERIAL_EXTERNALMANAGER_H |
| |
|
| | #include <Base/Parameter.h> |
| | #include <CXX/Objects.hxx> |
| |
|
| | #include <Mod/Material/MaterialGlobal.h> |
| |
|
| | class QMutex; |
| | class QString; |
| | class QByteArray; |
| |
|
| | namespace Materials |
| | { |
| |
|
| | class Library; |
| | class LibraryObject; |
| | class Material; |
| | class Model; |
| | class MaterialFilter; |
| | class MaterialFilterOptions; |
| |
|
| | class MaterialsExport ExternalManager: public ParameterGrp::ObserverType |
| | { |
| | public: |
| |
|
| | static ExternalManager* getManager(); |
| |
|
| | |
| | void OnChange(ParameterGrp::SubjectType& rCaller, ParameterGrp::MessageType Reason) override; |
| |
|
| | |
| | std::shared_ptr<std::vector<std::shared_ptr<Library>>> libraries(); |
| | std::shared_ptr<std::vector<std::shared_ptr<Library>>> modelLibraries(); |
| | std::shared_ptr<std::vector<std::shared_ptr<Library>>> materialLibraries(); |
| | std::shared_ptr<Library> getLibrary(const QString& name); |
| | void createLibrary(const QString& libraryName, |
| | const QByteArray& icon, |
| | bool readOnly = true); |
| | void renameLibrary(const QString& libraryName, const QString& newName); |
| | void changeIcon(const QString& libraryName, const QByteArray& icon); |
| | void removeLibrary(const QString& libraryName); |
| | std::shared_ptr<std::vector<LibraryObject>> libraryModels(const QString& libraryName); |
| | std::shared_ptr<std::vector<LibraryObject>> libraryMaterials(const QString& libraryName); |
| | std::shared_ptr<std::vector<LibraryObject>> |
| | libraryMaterials(const QString& libraryName, |
| | const MaterialFilter& filter, |
| | const MaterialFilterOptions& options); |
| | std::shared_ptr<std::vector<QString>> libraryFolders(const QString& libraryName); |
| |
|
| | |
| | void createFolder(const QString& libraryName, const QString& path); |
| | void renameFolder(const QString& libraryName, |
| | const QString& oldPath, |
| | const QString& newPath); |
| | void deleteRecursive(const QString& libraryName, const QString& path); |
| |
|
| | |
| | std::shared_ptr<Model> getModel(const QString& uuid); |
| | void |
| | addModel(const QString& libraryName, const QString& path, const Model& model); |
| | void |
| | migrateModel(const QString& libraryName, const QString& path, const Model& model); |
| | void updateModel(const QString& libraryName, |
| | const QString& path, |
| | const Model& model); |
| | void setModelPath(const QString& libraryName, const QString& path, const QString& uuid); |
| | void renameModel(const QString& libraryName, const QString& name, const QString& uuid); |
| | void moveModel(const QString& libraryName, const QString& path, const QString& uuid); |
| | void removeModel(const QString& uuid); |
| |
|
| | |
| | std::shared_ptr<Material> getMaterial(const QString& uuid); |
| | void addMaterial(const QString& libraryName, |
| | const QString& path, |
| | const Material& material); |
| | void migrateMaterial(const QString& libraryName, |
| | const QString& path, |
| | const Material& material); |
| | void updateMaterial(const QString& libraryName, |
| | const QString& path, |
| | const Material& material); |
| | void setMaterialPath(const QString& libraryName, const QString& path, const QString& uuid); |
| | void renameMaterial(const QString& libraryName, const QString& name, const QString& uuid); |
| | void moveMaterial(const QString& libraryName, const QString& path, const QString& uuid); |
| | void removeMaterial(const QString& uuid); |
| |
|
| | private: |
| | ExternalManager(); |
| | ~ExternalManager() override; |
| |
|
| | static void initManager(); |
| | void getConfiguration(); |
| | void instantiate(); |
| | void connect(); |
| | bool checkMaterialLibraryType(const Py::Object& entry); |
| | std::shared_ptr<Library> libraryFromObject(const Py::Object& entry); |
| | bool checkMaterialLibraryObjectType(const Py::Object& entry); |
| | LibraryObject materialLibraryObjectTypeFromObject(const Py::Object& entry); |
| | bool checkModelObjectType(const Py::Object& entry); |
| | std::shared_ptr<Model> modelFromObject(const Py::Object& entry, const QString& uuid); |
| | bool checkMaterialObjectType(const Py::Object& entry); |
| | std::shared_ptr<Material> materialFromObject(const Py::Object& entry, const QString& uuid); |
| |
|
| | static ExternalManager* _manager; |
| | static QMutex _mutex; |
| |
|
| | |
| | ParameterGrp::handle _hGrp; |
| | std::string _moduleName; |
| | std::string _className; |
| | bool _instantiated; |
| |
|
| | Py::Object _managerObject; |
| | }; |
| |
|
| | } |
| |
|
| | #endif |