reapack

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

commit 3abf7230a4b3cfbf41c02d1845d4fe14d22e900b
parent 5fa1a0f64992a7abd95627edeb421aa6bbba5937
Author: cfillion <cfillion@users.noreply.github.com>
Date:   Mon,  6 Jun 2016 23:59:32 -0400

import: close automatic manager if import is cancelled

Diffstat:
Msrc/dialog.cpp | 7+------
Msrc/dialog.hpp | 13+++++--------
Msrc/manager.cpp | 18++++++++++--------
Msrc/manager.hpp | 2+-
Msrc/reapack.cpp | 3++-
5 files changed, 19 insertions(+), 24 deletions(-)

diff --git a/src/dialog.cpp b/src/dialog.cpp @@ -65,11 +65,6 @@ WDL_DLGRET Dialog::Proc(HWND handle, UINT msg, WPARAM wParam, LPARAM lParam) else dlg->onHide(); break; -#ifdef WM_ENABLE - case WM_ENABLE: // not supported by SWELL - dlg->m_isEnabled = wParam == 1; - break; -#endif case WM_TIMER: dlg->onTimer((int)wParam); break; @@ -110,7 +105,7 @@ int Dialog::HandleKey(MSG *msg, accelerator_register_t *accel) } Dialog::Dialog(const int templateId) - : m_template(templateId), m_isVisible(false), m_isEnabled(true), + : m_template(templateId), m_isVisible(false), m_instance(nullptr), m_parent(nullptr), m_handle(nullptr) { m_accel.translateAccel = HandleKey; diff --git a/src/dialog.hpp b/src/dialog.hpp @@ -68,9 +68,6 @@ public: HWND parent() const { return m_parent; } HWND handle() const { return m_handle; } - bool isVisible() const { return m_isVisible; } - bool isEnabled() const { return m_isEnabled; } - void enable() { enable(m_handle); } void enable(HWND handle) { setEnabled(true, handle); } void disable() { disable(m_handle); } @@ -78,12 +75,14 @@ public: void setEnabled(bool enable) { setEnabled(enable, m_handle); } void setEnabled(bool, HWND); + bool isVisible() const { return m_isVisible; } void show() { show(m_handle); } void show(HWND handle) { setVisible(true, handle); } void hide() { hide(m_handle); } void hide(HWND handle) { setVisible(false, handle); } void setVisible(bool visible) { setVisible(visible, m_handle); } void setVisible(bool, HWND); + void close(INT_PTR = 0); void center(); bool hasFocus() const; @@ -137,7 +136,6 @@ private: const int m_template; bool m_isVisible; - bool m_isEnabled; Modality m_mode; REAPER_PLUGIN_HINSTANCE m_instance; @@ -154,21 +152,20 @@ private: class LockDialog { public: LockDialog(Dialog *dlg) - : m_dialog(dlg), m_enabled(dlg && dlg->isEnabled()) + : m_dialog(dlg) { - if(m_enabled) + if(m_dialog) m_dialog->disable(); } ~LockDialog() { - if(m_enabled) + if(m_dialog) m_dialog->enable(); } private: Dialog *m_dialog; - bool m_enabled; }; #endif diff --git a/src/manager.cpp b/src/manager.cpp @@ -66,12 +66,7 @@ void Manager::onCommand(const int id, int) { switch(id) { case IDC_IMPORT: - if(m_importing) // avoid opening the import dialog twice on windows - break; - - m_importing = true; - Dialog::Show<Import>(instance(), handle(), m_reapack); - m_importing = false; + import(); break; case IDC_BROWSE: launchBrowser(); @@ -330,9 +325,16 @@ void Manager::copyUrl(const int index) setClipboard(remote.url()); } -void Manager::triggerImport() +bool Manager::import() { - SendMessage(handle(), WM_COMMAND, IDC_IMPORT, 0); + if(m_importing) // avoid opening the import dialog twice on windows + return true; + + m_importing = true; + const auto ret = Dialog::Show<Import>(instance(), handle(), m_reapack); + m_importing = false; + + return ret != 0; } void Manager::launchBrowser() diff --git a/src/manager.hpp b/src/manager.hpp @@ -35,7 +35,7 @@ public: Manager(ReaPack *); void refresh(); - void triggerImport(); + bool import(); protected: void onInit() override; diff --git a/src/reapack.cpp b/src/reapack.cpp @@ -194,7 +194,8 @@ void ReaPack::uninstall(const Remote &remote) void ReaPack::importRemote() { manageRemotes(); - m_manager->triggerImport(); + if(!m_manager->import()) + m_manager->close(); } void ReaPack::manageRemotes()