| @@ -2,7 +2,7 @@ | |||
| #include "app/common.hpp" | |||
| #include "widgets/OpaqueWidget.hpp" | |||
| #include "ui/Menu.hpp" | |||
| #include "app/Port.hpp" | |||
| #include "app/PortWidget.hpp" | |||
| #include "app/ParamWidget.hpp" | |||
| #include "plugin/Model.hpp" | |||
| #include "engine/Module.hpp" | |||
| @@ -18,14 +18,14 @@ struct ModuleWidget : OpaqueWidget { | |||
| Widget *panel = NULL; | |||
| std::vector<ParamWidget*> params; | |||
| std::vector<Port*> inputs; | |||
| std::vector<Port*> outputs; | |||
| std::vector<PortWidget*> inputs; | |||
| std::vector<PortWidget*> outputs; | |||
| ModuleWidget(Module *module); | |||
| ~ModuleWidget(); | |||
| /** Convenience functions for adding special widgets (calls addChild()) */ | |||
| void addInput(Port *input); | |||
| void addOutput(Port *output); | |||
| void addInput(PortWidget *input); | |||
| void addOutput(PortWidget *output); | |||
| void addParam(ParamWidget *param); | |||
| void setPanel(std::shared_ptr<SVG> svg); | |||
| @@ -8,7 +8,7 @@ | |||
| namespace rack { | |||
| struct Port : OpaqueWidget { | |||
| struct PortWidget : OpaqueWidget { | |||
| Module *module = NULL; | |||
| int portId; | |||
| @@ -19,8 +19,8 @@ struct Port : OpaqueWidget { | |||
| PortType type = INPUT; | |||
| MultiLightWidget *plugLight; | |||
| Port(); | |||
| ~Port(); | |||
| PortWidget(); | |||
| ~PortWidget(); | |||
| void step() override; | |||
| void draw(NVGcontext *vg) override; | |||
| void onButton(event::Button &e) override; | |||
| @@ -1,6 +1,6 @@ | |||
| #pragma once | |||
| #include "app/common.hpp" | |||
| #include "app/Port.hpp" | |||
| #include "app/PortWidget.hpp" | |||
| #include "widgets/FramebufferWidget.hpp" | |||
| #include "widgets/SVGWidget.hpp" | |||
| #include "app/CircularShadow.hpp" | |||
| @@ -9,7 +9,7 @@ | |||
| namespace rack { | |||
| struct SVGPort : Port, FramebufferWidget { | |||
| struct SVGPort : PortWidget, FramebufferWidget { | |||
| SVGWidget *background; | |||
| CircularShadow *shadow; | |||
| @@ -1,6 +1,5 @@ | |||
| #pragma once | |||
| #include "common.hpp" | |||
| #include "app/Port.hpp" | |||
| #include "widgets/FramebufferWidget.hpp" | |||
| #include "widgets/SVGWidget.hpp" | |||
| @@ -2,7 +2,7 @@ | |||
| #include "app/common.hpp" | |||
| #include "widgets/TransparentWidget.hpp" | |||
| #include "app/WireWidget.hpp" | |||
| #include "app/Port.hpp" | |||
| #include "app/PortWidget.hpp" | |||
| namespace rack { | |||
| @@ -14,10 +14,10 @@ struct WireContainer : TransparentWidget { | |||
| void setActiveWire(WireWidget *w); | |||
| /** "Drops" the wire onto the port, making an engine connection if successful */ | |||
| void commitActiveWire(); | |||
| void removeTopWire(Port *port); | |||
| void removeAllWires(Port *port); | |||
| void removeTopWire(PortWidget *port); | |||
| void removeAllWires(PortWidget *port); | |||
| /** Returns the most recently added wire connected to the given Port, i.e. the top of the stack */ | |||
| WireWidget *getTopWire(Port *port); | |||
| WireWidget *getTopWire(PortWidget *port); | |||
| void draw(NVGcontext *vg) override; | |||
| }; | |||
| @@ -1,21 +1,18 @@ | |||
| #pragma once | |||
| #include "app/common.hpp" | |||
| #include "widgets/OpaqueWidget.hpp" | |||
| #include "app/Port.hpp" | |||
| #include "app/PortWidget.hpp" | |||
| #include "engine/Wire.hpp" | |||
| namespace rack { | |||
| struct Port; | |||
| struct WireWidget : OpaqueWidget { | |||
| Port *outputPort = NULL; | |||
| Port *inputPort = NULL; | |||
| Port *hoveredOutputPort = NULL; | |||
| Port *hoveredInputPort = NULL; | |||
| PortWidget *outputPort = NULL; | |||
| PortWidget *inputPort = NULL; | |||
| PortWidget *hoveredOutputPort = NULL; | |||
| PortWidget *hoveredInputPort = NULL; | |||
| Wire *wire = NULL; | |||
| NVGcolor color; | |||
| @@ -2,7 +2,7 @@ | |||
| #include "ui/MenuLabel.hpp" | |||
| #include "ui/MenuItem.hpp" | |||
| #include "ui/Menu.hpp" | |||
| #include "app/Port.hpp" | |||
| #include "app/PortWidget.hpp" | |||
| #include "app/ParamQuantity.hpp" | |||
| #include "app/ParamWidget.hpp" | |||
| #include "app/Scene.hpp" | |||
| @@ -75,42 +75,42 @@ TParamWidget *createParamCentered(math::Vec pos, Module *module, int paramId) { | |||
| return o; | |||
| } | |||
| template <class TPort> | |||
| TPort *createInput(math::Vec pos, Module *module, int inputId) { | |||
| TPort *o = new TPort; | |||
| template <class TPortWidget> | |||
| TPortWidget *createInput(math::Vec pos, Module *module, int inputId) { | |||
| TPortWidget *o = new TPortWidget; | |||
| o->box.pos = pos; | |||
| o->module = module; | |||
| o->type = Port::INPUT; | |||
| o->type = PortWidget::INPUT; | |||
| o->portId = inputId; | |||
| return o; | |||
| } | |||
| template <class TPort> | |||
| TPort *createInputCentered(math::Vec pos, Module *module, int inputId) { | |||
| TPort *o = new TPort; | |||
| template <class TPortWidget> | |||
| TPortWidget *createInputCentered(math::Vec pos, Module *module, int inputId) { | |||
| TPortWidget *o = new TPortWidget; | |||
| o->box.pos = pos.minus(o->box.size.div(2)); | |||
| o->module = module; | |||
| o->type = Port::INPUT; | |||
| o->type = PortWidget::INPUT; | |||
| o->portId = inputId; | |||
| return o; | |||
| } | |||
| template <class TPort> | |||
| TPort *createOutput(math::Vec pos, Module *module, int outputId) { | |||
| TPort *o = new TPort; | |||
| template <class TPortWidget> | |||
| TPortWidget *createOutput(math::Vec pos, Module *module, int outputId) { | |||
| TPortWidget *o = new TPortWidget; | |||
| o->box.pos = pos; | |||
| o->module = module; | |||
| o->type = Port::OUTPUT; | |||
| o->type = PortWidget::OUTPUT; | |||
| o->portId = outputId; | |||
| return o; | |||
| } | |||
| template <class TPort> | |||
| TPort *createOutputCentered(math::Vec pos, Module *module, int outputId) { | |||
| TPort *o = new TPort; | |||
| template <class TPortWidget> | |||
| TPortWidget *createOutputCentered(math::Vec pos, Module *module, int outputId) { | |||
| TPortWidget *o = new TPortWidget; | |||
| o->box.pos = pos.minus(o->box.size.div(2)); | |||
| o->module = module; | |||
| o->type = Port::OUTPUT; | |||
| o->type = PortWidget::OUTPUT; | |||
| o->portId = outputId; | |||
| return o; | |||
| } | |||
| @@ -51,7 +51,7 @@ | |||
| #include "app/MomentarySwitch.hpp" | |||
| #include "app/MultiLightWidget.hpp" | |||
| #include "app/ParamWidget.hpp" | |||
| #include "app/Port.hpp" | |||
| #include "app/PortWidget.hpp" | |||
| #include "app/RackRail.hpp" | |||
| #include "app/Scene.hpp" | |||
| #include "app/RackScrollWidget.hpp" | |||
| @@ -32,14 +32,14 @@ ModuleWidget::~ModuleWidget() { | |||
| } | |||
| } | |||
| void ModuleWidget::addInput(Port *input) { | |||
| assert(input->type == Port::INPUT); | |||
| void ModuleWidget::addInput(PortWidget *input) { | |||
| assert(input->type == PortWidget::INPUT); | |||
| inputs.push_back(input); | |||
| addChild(input); | |||
| } | |||
| void ModuleWidget::addOutput(Port *output) { | |||
| assert(output->type == Port::OUTPUT); | |||
| void ModuleWidget::addOutput(PortWidget *output) { | |||
| assert(output->type == PortWidget::OUTPUT); | |||
| outputs.push_back(output); | |||
| addChild(output); | |||
| } | |||
| @@ -251,10 +251,10 @@ void ModuleWidget::saveDialog() { | |||
| } | |||
| void ModuleWidget::disconnect() { | |||
| for (Port *input : inputs) { | |||
| for (PortWidget *input : inputs) { | |||
| context()->scene->rackWidget->wireContainer->removeAllWires(input); | |||
| } | |||
| for (Port *output : outputs) { | |||
| for (PortWidget *output : outputs) { | |||
| context()->scene->rackWidget->wireContainer->removeAllWires(output); | |||
| } | |||
| } | |||
| @@ -1,4 +1,4 @@ | |||
| #include "app/Port.hpp" | |||
| #include "app/PortWidget.hpp" | |||
| #include "app/Scene.hpp" | |||
| #include "window.hpp" | |||
| #include "context.hpp" | |||
| @@ -18,17 +18,17 @@ struct PlugLight : MultiLightWidget { | |||
| }; | |||
| Port::Port() { | |||
| PortWidget::PortWidget() { | |||
| plugLight = new PlugLight; | |||
| } | |||
| Port::~Port() { | |||
| // plugLight is not a child and is thus owned by the Port, so we need to delete it here | |||
| PortWidget::~PortWidget() { | |||
| // plugLight is not a child and is thus owned by the PortWidget, so we need to delete it here | |||
| delete plugLight; | |||
| context()->scene->rackWidget->wireContainer->removeAllWires(this); | |||
| } | |||
| void Port::step() { | |||
| void PortWidget::step() { | |||
| std::vector<float> values(2); | |||
| if (type == INPUT) { | |||
| values[0] = module->inputs[portId].plugLights[0].getBrightness(); | |||
| @@ -41,28 +41,28 @@ void Port::step() { | |||
| plugLight->setValues(values); | |||
| } | |||
| void Port::draw(NVGcontext *vg) { | |||
| void PortWidget::draw(NVGcontext *vg) { | |||
| WireWidget *activeWire = context()->scene->rackWidget->wireContainer->activeWire; | |||
| if (activeWire) { | |||
| // Dim the Port if the active wire cannot plug into this Port | |||
| // Dim the PortWidget if the active wire cannot plug into this PortWidget | |||
| if (type == INPUT ? activeWire->inputPort : activeWire->outputPort) | |||
| nvgGlobalAlpha(vg, 0.5); | |||
| } | |||
| } | |||
| void Port::onButton(event::Button &e) { | |||
| void PortWidget::onButton(event::Button &e) { | |||
| if (e.action == GLFW_PRESS && e.button == GLFW_MOUSE_BUTTON_RIGHT) { | |||
| context()->scene->rackWidget->wireContainer->removeTopWire(this); | |||
| // HACK | |||
| // Update hovered*Port of active wire if applicable | |||
| // Update hovered*PortWidget of active wire if applicable | |||
| // event::DragEnter eDragEnter; | |||
| // onDragEnter(eDragEnter); | |||
| } | |||
| e.target = this; | |||
| } | |||
| void Port::onDragStart(event::DragStart &e) { | |||
| void PortWidget::onDragStart(event::DragStart &e) { | |||
| // Try to grab wire on top of stack | |||
| WireWidget *wire = NULL; | |||
| if (type == INPUT || !context()->window->isModPressed()) { | |||
| @@ -82,14 +82,14 @@ void Port::onDragStart(event::DragStart &e) { | |||
| context()->scene->rackWidget->wireContainer->setActiveWire(wire); | |||
| } | |||
| void Port::onDragEnd(event::DragEnd &e) { | |||
| void PortWidget::onDragEnd(event::DragEnd &e) { | |||
| // FIXME | |||
| // If the source Port is deleted, this will be called, removing the cable | |||
| // If the source PortWidget is deleted, this will be called, removing the cable | |||
| context()->scene->rackWidget->wireContainer->commitActiveWire(); | |||
| } | |||
| void Port::onDragDrop(event::DragDrop &e) { | |||
| Port *originPort = dynamic_cast<Port*>(e.origin); | |||
| void PortWidget::onDragDrop(event::DragDrop &e) { | |||
| PortWidget *originPort = dynamic_cast<PortWidget*>(e.origin); | |||
| if (!originPort) | |||
| return; | |||
| @@ -99,8 +99,8 @@ void Port::onDragDrop(event::DragDrop &e) { | |||
| onDragEnter(eDragEnter); | |||
| } | |||
| void Port::onDragEnter(event::DragEnter &e) { | |||
| Port *originPort = dynamic_cast<Port*>(e.origin); | |||
| void PortWidget::onDragEnter(event::DragEnter &e) { | |||
| PortWidget *originPort = dynamic_cast<PortWidget*>(e.origin); | |||
| if (!originPort) | |||
| return; | |||
| @@ -117,8 +117,8 @@ void Port::onDragEnter(event::DragEnter &e) { | |||
| } | |||
| } | |||
| void Port::onDragLeave(event::DragLeave &e) { | |||
| Port *originPort = dynamic_cast<Port*>(e.origin); | |||
| void PortWidget::onDragLeave(event::DragLeave &e) { | |||
| PortWidget *originPort = dynamic_cast<PortWidget*>(e.origin); | |||
| if (!originPort) | |||
| return; | |||
| @@ -240,8 +240,8 @@ json_t *RackWidget::toJson() { | |||
| WireWidget *wireWidget = dynamic_cast<WireWidget*>(w); | |||
| assert(wireWidget); | |||
| Port *outputPort = wireWidget->outputPort; | |||
| Port *inputPort = wireWidget->inputPort; | |||
| PortWidget *outputPort = wireWidget->outputPort; | |||
| PortWidget *inputPort = wireWidget->inputPort; | |||
| // Only serialize WireWidgets connected on both ends | |||
| if (!(outputPort && inputPort)) | |||
| continue; | |||
| @@ -362,21 +362,21 @@ void RackWidget::fromJson(json_t *rootJ) { | |||
| if (!inputModuleWidget) continue; | |||
| // Get port widgets | |||
| Port *outputPort = NULL; | |||
| Port *inputPort = NULL; | |||
| PortWidget *outputPort = NULL; | |||
| PortWidget *inputPort = NULL; | |||
| if (legacy && legacy <= 1) { | |||
| // Before 0.6, the index of the "ports" array was the index of the Port in the `outputs` and `inputs` vector. | |||
| // Before 0.6, the index of the "ports" array was the index of the PortWidget in the `outputs` and `inputs` vector. | |||
| outputPort = outputModuleWidget->outputs[outputId]; | |||
| inputPort = inputModuleWidget->inputs[inputId]; | |||
| } | |||
| else { | |||
| for (Port *port : outputModuleWidget->outputs) { | |||
| for (PortWidget *port : outputModuleWidget->outputs) { | |||
| if (port->portId == outputId) { | |||
| outputPort = port; | |||
| break; | |||
| } | |||
| } | |||
| for (Port *port : inputModuleWidget->inputs) { | |||
| for (PortWidget *port : inputModuleWidget->inputs) { | |||
| if (port->portId == inputId) { | |||
| inputPort = port; | |||
| break; | |||
| @@ -24,7 +24,7 @@ void SVGPort::setSVG(std::shared_ptr<SVG> svg) { | |||
| } | |||
| void SVGPort::draw(NVGcontext *vg) { | |||
| Port::draw(vg); | |||
| PortWidget::draw(vg); | |||
| FramebufferWidget::draw(vg); | |||
| } | |||
| @@ -41,7 +41,7 @@ void WireContainer::commitActiveWire() { | |||
| } | |||
| } | |||
| void WireContainer::removeTopWire(Port *port) { | |||
| void WireContainer::removeTopWire(PortWidget *port) { | |||
| WireWidget *wire = getTopWire(port); | |||
| if (wire) { | |||
| removeChild(wire); | |||
| @@ -49,7 +49,7 @@ void WireContainer::removeTopWire(Port *port) { | |||
| } | |||
| } | |||
| void WireContainer::removeAllWires(Port *port) { | |||
| void WireContainer::removeAllWires(PortWidget *port) { | |||
| // As a convenience, de-hover the active wire so we don't attach them once it is dropped. | |||
| if (activeWire) { | |||
| if (activeWire->hoveredInputPort == port) | |||
| @@ -80,7 +80,7 @@ void WireContainer::removeAllWires(Port *port) { | |||
| } | |||
| } | |||
| WireWidget *WireContainer::getTopWire(Port *port) { | |||
| WireWidget *WireContainer::getTopWire(PortWidget *port) { | |||
| for (auto it = children.rbegin(); it != children.rend(); it++) { | |||
| WireWidget *wire = dynamic_cast<WireWidget*>(*it); | |||
| assert(wire); | |||
| @@ -101,8 +101,8 @@ WireWidget::~WireWidget() { | |||
| void WireWidget::updateWire() { | |||
| if (inputPort && outputPort) { | |||
| // Check correct types | |||
| assert(inputPort->type == Port::INPUT); | |||
| assert(outputPort->type == Port::OUTPUT); | |||
| assert(inputPort->type == PortWidget::INPUT); | |||
| assert(outputPort->type == PortWidget::OUTPUT); | |||
| if (!wire) { | |||
| wire = new Wire; | |||
| @@ -173,7 +173,7 @@ void WireWidget::draw(NVGcontext *vg) { | |||
| opacity = 1.0; | |||
| } | |||
| else { | |||
| Port *hoveredPort = dynamic_cast<Port*>(context()->event->hoveredWidget); | |||
| PortWidget *hoveredPort = dynamic_cast<PortWidget*>(context()->event->hoveredWidget); | |||
| if (hoveredPort && (hoveredPort == outputPort || hoveredPort == inputPort)) | |||
| opacity = 1.0; | |||
| } | |||