Browse Source

Add shadows to SvgButton and SvgSwitch. Rearrange ModuleWidget context menu items.

tags/v1.0.0
Andrew Belt 6 years ago
parent
commit
f3181efc1b
8 changed files with 64 additions and 43 deletions
  1. +2
    -0
      include/app/SvgButton.hpp
  2. +1
    -1
      include/app/SvgKnob.hpp
  3. +1
    -1
      include/app/SvgPort.hpp
  4. +2
    -0
      include/app/SvgSwitch.hpp
  5. +42
    -39
      src/app/ModuleWidget.cpp
  6. +7
    -0
      src/app/SvgButton.cpp
  7. +2
    -2
      src/app/SvgPort.cpp
  8. +7
    -0
      src/app/SvgSwitch.cpp

+ 2
- 0
include/app/SvgButton.hpp View File

@@ -2,6 +2,7 @@
#include "app/common.hpp"
#include "widget/OpaqueWidget.hpp"
#include "widget/FramebufferWidget.hpp"
#include "app/CircularShadow.hpp"
#include "widget/SvgWidget.hpp"


@@ -11,6 +12,7 @@ namespace app {

struct SvgButton : widget::OpaqueWidget {
widget::FramebufferWidget *fb;
CircularShadow *shadow;
widget::SvgWidget *sw;
std::vector<std::shared_ptr<Svg>> frames;



+ 1
- 1
include/app/SvgKnob.hpp View File

@@ -14,9 +14,9 @@ namespace app {
/** A knob which rotates an SVG and caches it in a framebuffer */
struct SvgKnob : Knob {
widget::FramebufferWidget *fb;
CircularShadow *shadow;
widget::TransformWidget *tw;
widget::SvgWidget *sw;
CircularShadow *shadow;
/** Angles in radians */
float minAngle, maxAngle;



+ 1
- 1
include/app/SvgPort.hpp View File

@@ -12,8 +12,8 @@ namespace app {

struct SvgPort : PortWidget {
widget::FramebufferWidget *fb;
widget::SvgWidget *sw;
CircularShadow *shadow;
widget::SvgWidget *sw;

SvgPort();
void setSvg(std::shared_ptr<Svg> svg);


+ 2
- 0
include/app/SvgSwitch.hpp View File

@@ -2,6 +2,7 @@
#include "app/common.hpp"
#include "widget/FramebufferWidget.hpp"
#include "widget/SvgWidget.hpp"
#include "app/CircularShadow.hpp"
#include "app/Switch.hpp"


@@ -12,6 +13,7 @@ namespace app {
/** A ParamWidget with multiple frames corresponding to its value */
struct SvgSwitch : Switch {
widget::FramebufferWidget *fb;
CircularShadow *shadow;
widget::SvgWidget *sw;
std::vector<std::shared_ptr<Svg>> frames;



+ 42
- 39
src/app/ModuleWidget.cpp View File

@@ -162,7 +162,7 @@ struct ModuleLoadItem : ui::MenuItem {
};


struct ModulePresetItem : ui::MenuItem {
struct ModulePresetPathItem : ui::MenuItem {
ModuleWidget *moduleWidget;
std::string presetPath;
void onAction(const widget::ActionEvent &e) override {
@@ -171,18 +171,45 @@ struct ModulePresetItem : ui::MenuItem {
};


struct ModuleListPresetsItem : ui::MenuItem {
struct ModulePresetItem : ui::MenuItem {
ModuleWidget *moduleWidget;
ui::Menu *createChildMenu() override {
ui::Menu *menu = new ui::Menu;

for (const std::string &presetPath : moduleWidget->model->presetPaths) {
ModulePresetItem *presetItem = new ModulePresetItem;
std::string presetName = string::basename(string::filename(presetPath));
presetItem->text = presetName;
presetItem->presetPath = presetPath;
presetItem->moduleWidget = moduleWidget;
menu->addChild(presetItem);
ModuleCopyItem *copyItem = new ModuleCopyItem;
copyItem->text = "Copy";
copyItem->rightText = WINDOW_MOD_CTRL_NAME "+C";
copyItem->moduleWidget = moduleWidget;
menu->addChild(copyItem);

ModulePasteItem *pasteItem = new ModulePasteItem;
pasteItem->text = "Paste";
pasteItem->rightText = WINDOW_MOD_CTRL_NAME "+V";
pasteItem->moduleWidget = moduleWidget;
menu->addChild(pasteItem);

ModuleLoadItem *loadItem = new ModuleLoadItem;
loadItem->text = "Open";
loadItem->moduleWidget = moduleWidget;
menu->addChild(loadItem);

ModuleSaveItem *saveItem = new ModuleSaveItem;
saveItem->text = "Save as";
saveItem->moduleWidget = moduleWidget;
menu->addChild(saveItem);

if (!moduleWidget->model->presetPaths.empty()) {
menu->addChild(new MenuEntry);
menu->addChild(createMenuLabel("Factory presets"));

for (const std::string &presetPath : moduleWidget->model->presetPaths) {
ModulePresetPathItem *presetItem = new ModulePresetPathItem;
std::string presetName = string::basename(string::filename(presetPath));
presetItem->text = presetName;
presetItem->presetPath = presetPath;
presetItem->moduleWidget = moduleWidget;
menu->addChild(presetItem);
}
}

return menu;
@@ -783,6 +810,12 @@ void ModuleWidget::createContextMenu() {
pluginItem->plugin = model->plugin;
menu->addChild(pluginItem);

ModulePresetItem *presetsItem = new ModulePresetItem;
presetsItem->text = "Presets";
presetsItem->rightText = RIGHT_ARROW;
presetsItem->moduleWidget = this;
menu->addChild(presetsItem);

ModuleResetItem *resetItem = new ModuleResetItem;
resetItem->text = "Initialize";
resetItem->rightText = WINDOW_MOD_CTRL_NAME "+I";
@@ -807,36 +840,6 @@ void ModuleWidget::createContextMenu() {
cloneItem->moduleWidget = this;
menu->addChild(cloneItem);

if (!model->presetPaths.empty()) {
ModuleListPresetsItem *presetsItem = new ModuleListPresetsItem;
presetsItem->text = "Factory presets";
presetsItem->rightText = RIGHT_ARROW;
presetsItem->moduleWidget = this;
menu->addChild(presetsItem);
}

ModuleCopyItem *copyItem = new ModuleCopyItem;
copyItem->text = "Copy preset";
copyItem->rightText = WINDOW_MOD_CTRL_NAME "+C";
copyItem->moduleWidget = this;
menu->addChild(copyItem);

ModulePasteItem *pasteItem = new ModulePasteItem;
pasteItem->text = "Paste preset";
pasteItem->rightText = WINDOW_MOD_CTRL_NAME "+V";
pasteItem->moduleWidget = this;
menu->addChild(pasteItem);

ModuleLoadItem *loadItem = new ModuleLoadItem;
loadItem->text = "Open preset";
loadItem->moduleWidget = this;
menu->addChild(loadItem);

ModuleSaveItem *saveItem = new ModuleSaveItem;
saveItem->text = "Save preset as";
saveItem->moduleWidget = this;
menu->addChild(saveItem);

ModuleBypassItem *bypassItem = new ModuleBypassItem;
bypassItem->text = "Disable";
bypassItem->rightText = WINDOW_MOD_CTRL_NAME "+E";


+ 7
- 0
src/app/SvgButton.cpp View File

@@ -9,6 +9,10 @@ SvgButton::SvgButton() {
fb = new widget::FramebufferWidget;
addChild(fb);

shadow = new CircularShadow;
fb->addChild(shadow);
shadow->box.size = math::Vec();

sw = new widget::SvgWidget;
fb->addChild(sw);
}
@@ -20,6 +24,9 @@ void SvgButton::addFrame(std::shared_ptr<Svg> svg) {
sw->setSvg(svg);
box.size = sw->box.size;
fb->box.size = sw->box.size;
// Move shadow downward by 10%
shadow->box.size = sw->box.size;
shadow->box.pos = math::Vec(0, sw->box.size.y * 0.10);
}
}



+ 2
- 2
src/app/SvgPort.cpp View File

@@ -23,10 +23,10 @@ void SvgPort::setSvg(std::shared_ptr<Svg> svg) {
sw->setSvg(svg);
fb->box.size = sw->box.size;
box.size = sw->box.size;
shadow->box.size = sw->box.size;
// Move shadow downward by 10%
shadow->box.size = sw->box.size;
shadow->box.pos = math::Vec(0, sw->box.size.y * 0.10);
// shadow->box = shadow->box.grow(math::Vec(2, 2));
fb->dirty = true;
}



+ 7
- 0
src/app/SvgSwitch.cpp View File

@@ -9,6 +9,10 @@ SvgSwitch::SvgSwitch() {
fb = new widget::FramebufferWidget;
addChild(fb);

shadow = new CircularShadow;
fb->addChild(shadow);
shadow->box.size = math::Vec();

sw = new widget::SvgWidget;
fb->addChild(sw);
}
@@ -20,6 +24,9 @@ void SvgSwitch::addFrame(std::shared_ptr<Svg> svg) {
sw->setSvg(svg);
box.size = sw->box.size;
fb->box.size = sw->box.size;
// Move shadow downward by 10%
shadow->box.size = sw->box.size;
shadow->box.pos = math::Vec(0, sw->box.size.y * 0.10);
}
}



Loading…
Cancel
Save