reapack

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

commit 106f80e73cb15f169797f64b5a93b717d1285b80
parent 0f28c121462444658376f9d105f486dcbdc74ba0
Author: cfillion <cfillion@users.noreply.github.com>
Date:   Thu, 17 Mar 2016 17:43:20 -0400

more refactoring of the same

Diffstat:
Msrc/browser.cpp | 50++++++++++++++++++++++++++------------------------
Msrc/browser.hpp | 2++
2 files changed, 28 insertions(+), 24 deletions(-)

diff --git a/src/browser.cpp b/src/browser.cpp @@ -119,63 +119,65 @@ void Browser::onContextMenu(HWND target, const int x, const int y) SetFocus(m_list->handle()); - const Entry *entry = entryAt(m_list->itemUnderMouse()); - m_currentEntry = entry; + Menu menu; - if(!entry) - return; + if(const Entry *entry = entryAt(m_list->itemUnderMouse())) + entryMenu(menu, *entry); - Menu menu; + menu.show(x, y, handle()); +} - if(entry->test(InstalledFlag)) { - if(entry->test(OutOfDateFlag)) { +void Browser::entryMenu(Menu &menu, const Entry &entry) +{ + m_currentEntry = &entry; + + if(entry.test(InstalledFlag)) { + if(entry.test(OutOfDateFlag)) { auto_char installLabel[255] = {}; - auto_snprintf(installLabel, sizeof(installLabel), - AUTO_STR("&Update to v%s"), make_autostring(entry->latest->name()).c_str()); + auto_snprintf(installLabel, sizeof(installLabel), AUTO_STR("&Update to v%s"), + make_autostring(entry.latest->name()).c_str()); menu.addAction(installLabel, 0); } auto_char reinstallLabel[255] = {}; - auto_snprintf(reinstallLabel, sizeof(reinstallLabel), - AUTO_STR("&Reinstall v%s"), - make_autostring(entry->regEntry.versionName).c_str()); + auto_snprintf(reinstallLabel, sizeof(reinstallLabel), AUTO_STR("&Reinstall v%s"), + make_autostring(entry.regEntry.versionName).c_str()); - menu.setEnabled(!entry->test(ObsoleteFlag), + menu.setEnabled(!entry.test(ObsoleteFlag), menu.addAction(reinstallLabel, 0)); } else { auto_char installLabel[255] = {}; - auto_snprintf(installLabel, sizeof(installLabel), - AUTO_STR("&Install v%s"), make_autostring(entry->latest->name()).c_str()); + auto_snprintf(installLabel, sizeof(installLabel), AUTO_STR("&Install v%s"), + make_autostring(entry.latest->name()).c_str()); menu.addAction(installLabel, 0); } - Menu versions = menu.addMenu(AUTO_STR("Versions")); + Menu versionMenu = menu.addMenu(AUTO_STR("Versions")); const UINT versionIndex = menu.size() - 1; - if(entry->test(ObsoleteFlag)) + if(entry.test(ObsoleteFlag)) menu.disable(versionIndex); else { - for(const Version *ver : entry->package->versions() | boost::adaptors::reversed) - versions.addAction(make_autostring(ver->name()).c_str(), 0); + const auto &versions = entry.package->versions(); + for(const Version *ver : versions | boost::adaptors::reversed) + versionMenu.addAction(make_autostring(ver->name()).c_str(), 0); } - menu.setEnabled(entry->test(InstalledFlag), + menu.setEnabled(entry.test(InstalledFlag), menu.addAction(AUTO_STR("&Uninstall"), 0)); menu.addSeparator(); - menu.setEnabled(!entry->test(ObsoleteFlag), + menu.setEnabled(!entry.test(ObsoleteFlag), menu.addAction(AUTO_STR("Package &History"), ACTION_HISTORY)); auto_char aboutLabel[255] = {}; - const auto_string &name = make_autostring(getValue(RemoteColumn, *entry)); + const auto_string &name = make_autostring(getValue(RemoteColumn, entry)); auto_snprintf(aboutLabel, sizeof(aboutLabel), AUTO_STR("&About %s..."), name.c_str()); menu.addAction(aboutLabel, ACTION_ABOUT); - - menu.show(x, y, handle()); } void Browser::onTimer(const int id) diff --git a/src/browser.hpp b/src/browser.hpp @@ -30,6 +30,7 @@ class Index; class ListView; +class Menu; class ReaPack; class Version; @@ -79,6 +80,7 @@ private: std::string getValue(Column, const Entry &entry) const; ListView::Row makeRow(const Entry &) const; const Entry *entryAt(int) const; + void entryMenu(Menu &, const Entry &); void history(const Entry *) const; void about(const Entry *) const;