reapack

Package manager for REAPER
Log | Files | Refs | Submodules | README | LICENSE

commit c93d5796206421d80a53b8c8eb8f318963941eac
parent 05943a82ffd38775cb41f435806e2e56db1ebdf0
Author: cfillion <cfillion@users.noreply.github.com>
Date:   Mon, 25 Jan 2016 14:59:21 -0500

refactor remote enabling/disabling, preparing for script registration

Diffstat:
Msrc/manager.cpp | 22++++++++--------------
Msrc/manager.hpp | 2+-
Msrc/reapack.cpp | 15+++++++++++++++
Msrc/reapack.hpp | 2++
4 files changed, 26 insertions(+), 15 deletions(-)

diff --git a/src/manager.cpp b/src/manager.cpp @@ -144,10 +144,10 @@ void Manager::setRemoteEnabled(const bool enabled) if(remote.isNull()) return; - auto it = m_enableOverrides.find(remote.name()); + auto it = m_enableOverrides.find(remote); if(it == m_enableOverrides.end()) - m_enableOverrides.insert({remote.name(), enabled}); + m_enableOverrides.insert({remote, enabled}); else if(remote.isEnabled() == enabled) m_enableOverrides.erase(it); else @@ -158,7 +158,7 @@ void Manager::setRemoteEnabled(const bool enabled) bool Manager::isRemoteEnabled(const Remote &remote) const { - const auto it = m_enableOverrides.find(remote.name()); + const auto it = m_enableOverrides.find(remote); if(it == m_enableOverrides.end()) return remote.isEnabled(); @@ -171,7 +171,7 @@ void Manager::uninstall() const Remote &remote = currentRemote(); m_uninstall.insert(remote); - const auto it = m_enableOverrides.find(remote.name()); + const auto it = m_enableOverrides.find(remote); if(it != m_enableOverrides.end()) m_enableOverrides.erase(it); @@ -200,25 +200,19 @@ bool Manager::confirm() const void Manager::apply() { - RemoteList *list = m_reapack->config()->remotes(); - for(const auto &pair : m_enableOverrides) { - const string &name = pair.first; + const Remote &remote = pair.first; const bool enable = pair.second; - Remote remote = list->get(name); - remote.setEnabled(enable); - - list->add(remote); - if(enable) - m_reapack->synchronize(remote); + m_reapack->enable(remote); + else + m_reapack->disable(remote); } for(auto it = m_uninstall.begin(); it != m_uninstall.end(); it++) { const Remote &remote = *it; m_reapack->uninstall(remote, next(it) == m_uninstall.end()); - list->remove(remote); } m_reapack->config()->write(); diff --git a/src/manager.hpp b/src/manager.hpp @@ -56,7 +56,7 @@ private: ReaPack *m_reapack; ListView *m_list; - std::map<std::string, bool> m_enableOverrides; + std::map<Remote, bool> m_enableOverrides; std::set<Remote> m_uninstall; }; diff --git a/src/reapack.cpp b/src/reapack.cpp @@ -119,6 +119,20 @@ void ReaPack::synchronize(const Remote &remote) m_transaction->synchronize(remote); } +void ReaPack::enable(Remote remote) +{ + remote.setEnabled(true); + m_config->remotes()->add(remote); + + synchronize(remote); +} + +void ReaPack::disable(Remote remote) +{ + remote.setEnabled(false); + m_config->remotes()->add(remote); +} + void ReaPack::uninstall(const Remote &remote, const bool start) { if(remote.isProtected()) @@ -130,6 +144,7 @@ void ReaPack::uninstall(const Remote &remote, const bool start) } m_transaction->uninstall(remote); + m_config->remotes()->remove(remote); if(start) m_transaction->runTasks(); diff --git a/src/reapack.hpp b/src/reapack.hpp @@ -47,6 +47,8 @@ public: void synchronizeAll(); void synchronize(const Remote &); + void enable(Remote); + void disable(Remote); void uninstall(const Remote &, const bool start = true); void importRemote(); void manageRemotes();