diff options
| author | Peter LaFosse <peter@vector35.com> | 2021-02-09 20:39:28 -0500 |
|---|---|---|
| committer | Peter LaFosse <peter@vector35.com> | 2021-03-02 07:50:56 -0500 |
| commit | 1eafe9eeb83962071ecffaebb0bc98dc79f2f5c6 (patch) | |
| tree | f242857ceffdf76576bb87745cf096ffefc71b93 /scriptingprovider.cpp | |
| parent | c07fe0fea819f681621ff60e336f079494f6bfef (diff) | |
Add ability to install python dependencies
Refactor plugin repo loading into scripting provider.
Find python binary for given python library
Diffstat (limited to 'scriptingprovider.cpp')
| -rw-r--r-- | scriptingprovider.cpp | 50 |
1 files changed, 48 insertions, 2 deletions
diff --git a/scriptingprovider.cpp b/scriptingprovider.cpp index ed010100..4c11ccc4 100644 --- a/scriptingprovider.cpp +++ b/scriptingprovider.cpp @@ -281,7 +281,7 @@ std::string CoreScriptingInstance::CompleteInput(const std::string& text, uint64 } -ScriptingProvider::ScriptingProvider(const string& name): m_nameForRegister(name) +ScriptingProvider::ScriptingProvider(const string& name, const string& apiName): m_nameForRegister(name), m_apiNameForRegister(apiName) { } @@ -300,6 +300,20 @@ BNScriptingInstance* ScriptingProvider::CreateInstanceCallback(void* ctxt) } +bool ScriptingProvider::LoadModuleCallback(void* ctxt, const char* repository, const char* module, bool force) +{ + ScriptingProvider* provider = (ScriptingProvider*)ctxt; + return BNLoadScriptingProviderModule(provider->GetObject(), repository, module, force); +} + + +bool ScriptingProvider::InstallModulesCallback(void* ctxt, const char* modules) +{ + ScriptingProvider* provider = (ScriptingProvider*)ctxt; + return BNInstallScriptingProviderModules(provider->GetObject(), modules); +} + + string ScriptingProvider::GetName() { char* providerNameRaw = BNGetScriptingProviderName(m_object); @@ -309,6 +323,15 @@ string ScriptingProvider::GetName() } +string ScriptingProvider::GetAPIName() +{ + char* providerNameRaw = BNGetScriptingProviderAPIName(m_object); + string providerName(providerNameRaw); + BNFreeString(providerNameRaw); + return providerName; +} + + vector<Ref<ScriptingProvider>> ScriptingProvider::GetList() { size_t count; @@ -330,12 +353,23 @@ Ref<ScriptingProvider> ScriptingProvider::GetByName(const string& name) } +Ref<ScriptingProvider> ScriptingProvider::GetByAPIName(const string& name) +{ + BNScriptingProvider* result = BNGetScriptingProviderByAPIName(name.c_str()); + if (!result) + return nullptr; + return new CoreScriptingProvider(result); +} + + void ScriptingProvider::Register(ScriptingProvider* provider) { BNScriptingProviderCallbacks cb; cb.context = provider; cb.createInstance = CreateInstanceCallback; - provider->m_object = BNRegisterScriptingProvider(provider->m_nameForRegister.c_str(), &cb); + cb.loadModule = LoadModuleCallback; + cb.installModules = InstallModulesCallback; + provider->m_object = BNRegisterScriptingProvider(provider->m_nameForRegister.c_str(), provider->m_apiNameForRegister.c_str(), &cb); } @@ -351,3 +385,15 @@ Ref<ScriptingInstance> CoreScriptingProvider::CreateNewInstance() return nullptr; return new CoreScriptingInstance(result); } + + +bool CoreScriptingProvider::LoadModule(const std::string& repository, const std::string& module, bool force) +{ + return BNLoadScriptingProviderModule(m_object, repository.c_str(), module.c_str(), force); +} + + +bool CoreScriptingProvider::InstallModules(const std::string& modules) +{ + return BNInstallScriptingProviderModules(m_object, modules.c_str()); +} |
