reapack

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

commit dfcdbecf6fc82e13a1119052b006b8752f7c6e2a
parent 3ee5f701e7d7d90c16ade346d854af1120423532
Author: cfillion <cfillion@users.noreply.github.com>
Date:   Mon, 18 Jan 2016 16:34:26 -0500

synchronize newly-enabled remotes

Diffstat:
Msrc/manager.cpp | 14+++++++++++++-
Msrc/reapack.cpp | 11+++++++++++
Msrc/reapack.hpp | 2++
3 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/src/manager.cpp b/src/manager.cpp @@ -129,7 +129,15 @@ void Manager::setRemoteEnabled(const bool enabled) if(remote.isNull()) return; - m_enableOverrides[remote.name()] = enabled; + auto it = m_enableOverrides.find(remote.name()); + + if(it == m_enableOverrides.end()) + m_enableOverrides.insert({remote.name(), enabled}); + else if(remote.isEnabled() == enabled) + m_enableOverrides.erase(it); + else + it->second = enabled; + m_list->replaceRow(m_list->currentIndex(), makeRow(remote)); } @@ -153,7 +161,11 @@ void Manager::apply() Remote remote = list->get(name); remote.setEnabled(enable); + list->add(remote); + + if(enable) + m_reapack->synchronize(remote); } m_reapack->config()->write(); diff --git a/src/reapack.cpp b/src/reapack.cpp @@ -113,6 +113,17 @@ void ReaPack::synchronizeAll() t->synchronize(remote); } +void ReaPack::synchronize(const Remote &remote) +{ + if(!m_transaction) { + if(!createTransaction()) + return; + } + + // hitchhike currently running transactions + m_transaction->synchronize(remote); +} + void ReaPack::importRemote() { static const char *title = "ReaPack: Import remote repository"; diff --git a/src/reapack.hpp b/src/reapack.hpp @@ -30,6 +30,7 @@ typedef std::function<void()> ActionCallback; class Config; class Manager; class Progress; +class Remote; class Transaction; class ReaPack { @@ -47,6 +48,7 @@ public: bool execActions(const int id, const int); void synchronizeAll(); + void synchronize(const Remote &); void importRemote(); void manageRemotes();