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:
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();
};