BogaudioModules

BogaudioModules for VCV Rack
Log | Files | Refs | README | LICENSE

commit 20f8bbf31a5220f78a6bee9bdb5c486f6245772b
parent 945cd695a9382774a170b0166011eb52dfae99fd
Author: Matt Demanett <matt@demanett.net>
Date:   Thu,  6 Aug 2020 05:31:15 -0400

Fix for modules with no skin (AnalyzerXL).

Diffstat:
Msrc/AnalyzerXL.cpp | 2+-
Msrc/module.cpp | 23++++++++++++-----------
Msrc/module.hpp | 3++-
3 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/src/AnalyzerXL.cpp b/src/AnalyzerXL.cpp @@ -130,7 +130,7 @@ struct AnalyzerXLWidget : BGModuleWidget { AnalyzerXLWidget(AnalyzerXL* module) { setModule(module); box.size = Vec(RACK_GRID_WIDTH * hp, RACK_GRID_HEIGHT); - setPanel(box.size, "AnalyzerXL"); + setPanel(box.size, "AnalyzerXL", false); { auto inset = Vec(30, 1); diff --git a/src/module.cpp b/src/module.cpp @@ -2,7 +2,6 @@ #include "module.hpp" #include "bogaudio.hpp" #include "skins.hpp" -#include <cstdio> using namespace bogaudio; @@ -162,10 +161,11 @@ void BGModuleWidget::skinChanged(const std::string& skin) { updatePanel(); } -void BGModuleWidget::setPanel(Vec size, std::string slug) { +void BGModuleWidget::setPanel(Vec size, std::string slug, bool skinnable) { _size = size; _slug = slug; - if (module) { + _skinnable = skinnable; + if (module && _skinnable) { auto m = dynamic_cast<BGModule*>(module); assert(m); m->addSkinChangeListener(this); @@ -182,7 +182,10 @@ void BGModuleWidget::updatePanel() { const Skins& skins = Skins::skins(); std::string skin = skins.defaultKey(); - if (module) { + if (!_skinnable) { + skin = "light"; + } + else if (module) { auto m = dynamic_cast<BGModule*>(module); assert(m); skin = m->_skin; @@ -191,14 +194,12 @@ void BGModuleWidget::updatePanel() { } } - const int n = 100; - char svg[n]; - if (skin == "light") { - snprintf(svg, n, "res/%s.svg", _slug.c_str()); - } - else { - snprintf(svg, n, "res/%s-%s.svg", _slug.c_str(), skin.c_str()); + std::string svg = "res/" + _slug; + if (skin != "light") { + svg += "-"; + svg += skin; } + svg += ".svg"; _panel = new SvgPanel(); _panel->box.size = _size; addChildBottom(_panel); diff --git a/src/module.hpp b/src/module.hpp @@ -61,6 +61,7 @@ struct BGModule : Module { }; struct BGModuleWidget : ModuleWidget, SkinChangeListener { + bool _skinnable = true; SvgPanel* _panel = NULL; Vec _size; std::string _slug; @@ -73,7 +74,7 @@ struct BGModuleWidget : ModuleWidget, SkinChangeListener { virtual void contextMenu(Menu* menu) {} void skinChanged(const std::string& skin) override; - void setPanel(Vec size, const std::string slug); + void setPanel(Vec size, const std::string slug, bool skinnable = true); void updatePanel(); };