reapack

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

commit 329abdc368eccf29c1691f81090ac975c671f6e9
parent 61e59909d7476ced7ac0950b4bba0b2951334868
Author: cfillion <cfillion@users.noreply.github.com>
Date:   Thu,  5 Jan 2017 04:24:50 -0500

manager: remember window position, size and list state

Diffstat:
Msrc/config.cpp | 4++++
Msrc/config.hpp | 1+
Msrc/manager.cpp | 12++++++++++++
Msrc/manager.hpp | 3+++
4 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/src/config.cpp b/src/config.cpp @@ -36,6 +36,7 @@ static const auto_char *PRERELEASES_KEY = AUTO_STR("prereleases"); static const auto_char *PROMPTOBSOLETE_KEY = AUTO_STR("promptobsolete"); static const auto_char *ABOUT_GRP = AUTO_STR("about"); +static const auto_char *MANAGER_GRP = AUTO_STR("manager"); static const auto_char *BROWSER_GRP = AUTO_STR("browser"); static const auto_char *SHOWDESCS_KEY = AUTO_STR("showdescs"); @@ -151,6 +152,7 @@ void Config::read(const Path &path) windowState.about = getString(ABOUT_GRP, STATE_KEY, windowState.about); windowState.browser = getString(BROWSER_GRP, STATE_KEY, windowState.browser); + windowState.manager = getString(MANAGER_GRP, STATE_KEY, windowState.manager); readRemotes(); restoreSelfRemote(); @@ -172,6 +174,8 @@ void Config::write() setString(ABOUT_GRP, STATE_KEY, windowState.about); setString(BROWSER_GRP, STATE_KEY, windowState.browser); + setString(MANAGER_GRP, STATE_KEY, windowState.manager); + writeRemotes(); } diff --git a/src/config.hpp b/src/config.hpp @@ -28,6 +28,7 @@ class Path; struct WindowState { std::string about; std::string browser; + std::string manager; }; struct BrowserOpts { diff --git a/src/manager.cpp b/src/manager.cpp @@ -67,11 +67,23 @@ void Manager::onInit() setAnchor(getControl(IDCANCEL), AnchorAll); setAnchor(m_apply, AnchorAll); + auto data = m_serializer.read(m_reapack->config()->windowState.manager, 1); + restoreState(data); + m_list->restoreState(data); + refresh(); m_list->autoSizeHeader(); } +void Manager::onClose() +{ + Serializer::Data data; + saveState(data); + m_list->saveState(data); + m_reapack->config()->windowState.manager = m_serializer.write(data); +} + void Manager::onCommand(const int id, int) { switch(id) { diff --git a/src/manager.hpp b/src/manager.hpp @@ -45,6 +45,7 @@ protected: void onInit() override; void onCommand(int, int) override; bool onKeyDown(int, int) override; + void onClose() override; private: struct RemoteMods { @@ -91,6 +92,8 @@ private: boost::optional<bool> m_autoInstall; boost::optional<bool> m_bleedingEdge; boost::optional<bool> m_promptObsolete; + + Serializer m_serializer; }; class NetworkConfig : public Dialog {