Browse Source

Merge branch 'master' of https://github.com/VCVRack/Rack into 2017-10-bontric-midi-interface-revamp

tags/v0.4.0
ben 7 years ago
parent
commit
0fbf48d9eb
7 changed files with 57 additions and 26 deletions
  1. +3
    -1
      include/app.hpp
  2. +1
    -0
      src/app.cpp
  3. +4
    -4
      src/app/RackScene.cpp
  4. +2
    -2
      src/app/RackWidget.cpp
  5. +13
    -2
      src/app/Toolbar.cpp
  6. +21
    -13
      src/app/WireWidget.cpp
  7. +13
    -4
      src/settings.cpp

+ 3
- 1
include/app.hpp View File

@@ -313,6 +313,7 @@ struct Toolbar : OpaqueWidget {
Slider *wireOpacitySlider;
Slider *wireTensionSlider;
RadioButton *cpuUsageButton;
RadioButton *plugLightButton;

Toolbar();
void draw(NVGcontext *vg);
@@ -327,7 +328,6 @@ struct PluginManagerWidget : Widget {
};

struct RackScene : Scene {
Toolbar *toolbar;
ScrollWidget *scrollWidget;
ZoomWidget *zoomWidget;

@@ -345,7 +345,9 @@ extern std::string gApplicationName;
extern std::string gApplicationVersion;
extern std::string gApiHost;

// Easy access to "singleton" widgets
extern RackWidget *gRackWidget;
extern Toolbar *gToolbar;

void sceneInit();
void sceneDestroy();


+ 1
- 0
src/app.cpp View File

@@ -8,6 +8,7 @@ std::string gApplicationVersion = TOSTRING(VERSION);
std::string gApiHost = "http://api.vcvrack.com";

RackWidget *gRackWidget = NULL;
Toolbar *gToolbar = NULL;


void sceneInit() {


+ 4
- 4
src/app/RackScene.cpp View File

@@ -40,9 +40,9 @@ RackScene::RackScene() {
}
addChild(scrollWidget);

toolbar = new Toolbar();
addChild(toolbar);
scrollWidget->box.pos.y = toolbar->box.size.y;
gToolbar = new Toolbar();
addChild(gToolbar);
scrollWidget->box.pos.y = gToolbar->box.size.y;

// Check for new version
if (gApplicationVersion != "dev") {
@@ -53,7 +53,7 @@ RackScene::RackScene() {

void RackScene::step() {
// Resize owned descendants
toolbar->box.size.x = box.size.x;
gToolbar->box.size.x = box.size.x;
scrollWidget->box.size = box.size.minus(scrollWidget->box.pos);

// Resize to be a bit larger than the ScrollWidget viewport


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

@@ -395,7 +395,7 @@ struct AddPluginMenuItem : MenuItem {

if (!plugin->path.empty()) {
UrlItem *item = new UrlItem();
item->text = "Browse Directory";
item->text = "Browse directory";
item->url = plugin->path;
menu->pushChild(item);
}
@@ -410,7 +410,7 @@ void RackWidget::onMouseDownOpaque(int button) {
Menu *menu = gScene->createMenu();

MenuLabel *menuLabel = new MenuLabel();
menuLabel->text = "Add Module";
menuLabel->text = "Add module";
menu->pushChild(menuLabel);
for (Plugin *plugin : gPlugins) {
AddPluginMenuItem *item = new AddPluginMenuItem();


+ 13
- 2
src/app/Toolbar.cpp View File

@@ -53,7 +53,7 @@ struct FileChoice : ChoiceButton {
menu->pushChild(saveItem);

MenuItem *saveAsItem = new SaveAsItem();
saveAsItem->text = "Save As";
saveAsItem->text = "Save as";
saveAsItem->rightText = GUI_MOD_KEY_NAME "+Shift+S";
menu->pushChild(saveAsItem);
}
@@ -82,7 +82,7 @@ struct SampleRateChoice : ChoiceButton {
menu->box.size.x = box.size.x;

PauseItem *pauseItem = new PauseItem();
pauseItem->text = gPaused ? "Resume Engine" : "Pause Engine";
pauseItem->text = gPaused ? "Resume engine" : "Pause engine";
menu->pushChild(pauseItem);

float sampleRates[] = {44100, 48000, 88200, 96000, 176400, 192000};
@@ -154,6 +154,17 @@ Toolbar::Toolbar() {
xPos += wireTensionSlider->box.size.x;
}

xPos += margin;
{
plugLightButton = new RadioButton();
plugLightButton->box.pos = Vec(xPos, margin);
plugLightButton->box.size.x = 100;
plugLightButton->label = "Plug lights";
plugLightButton->setValue(1.0);
addChild(plugLightButton);
xPos += plugLightButton->box.size.x;
}

/*
xPos += margin;
{


+ 21
- 13
src/app/WireWidget.cpp View File

@@ -151,8 +151,8 @@ Vec WireWidget::getInputPos() {
}

void WireWidget::draw(NVGcontext *vg) {
float opacity = dynamic_cast<RackScene*>(gScene)->toolbar->wireOpacitySlider->value / 100.0;
float tension = dynamic_cast<RackScene*>(gScene)->toolbar->wireTensionSlider->value;
float opacity = gToolbar->wireOpacitySlider->value / 100.0;
float tension = gToolbar->wireTensionSlider->value;

// Draw as opaque if an "incomplete" wire
if (!(inputPort && outputPort))
@@ -169,19 +169,27 @@ void WireWidget::drawPlugs(NVGcontext *vg) {
drawPlug(vg, inputPos, color);

// Draw plug light
if (wire) {
Output &output = wire->outputModule->outputs[wire->outputId];
float value = output.value / 8.0;
outputLight->box.size = Vec(10, 10);
inputLight->box.size = Vec(10, 10);
outputLight->box.pos = outputPos.minus(Vec(5, 5));
inputLight->box.pos = inputPos.minus(Vec(5, 5));
outputLight->setValue(value);
inputLight->setValue(value);
if (gToolbar->plugLightButton->value > 0.0) {
if (wire) {
Output &output = wire->outputModule->outputs[wire->outputId];
float value = output.value / 8.0;
outputLight->box.size = Vec(10, 10);
inputLight->box.size = Vec(10, 10);
outputLight->box.pos = outputPos.minus(Vec(5, 5));
inputLight->box.pos = inputPos.minus(Vec(5, 5));
outputLight->setValue(value);
inputLight->setValue(value);
}
else {
outputLight->setValue(0.0);
inputLight->setValue(0.0);
}
outputLight->visible = true;
inputLight->visible = true;
}
else {
outputLight->setValue(0.0);
inputLight->setValue(0.0);
outputLight->visible = false;
inputLight->visible = false;
}
Widget::draw(vg);
}


+ 13
- 4
src/settings.cpp View File

@@ -18,12 +18,12 @@ static json_t *settingsToJson() {
json_object_set_new(rootJ, "token", tokenJ);

// opacity
float opacity = dynamic_cast<RackScene*>(gScene)->toolbar->wireOpacitySlider->value;
float opacity = gToolbar->wireOpacitySlider->value;
json_t *opacityJ = json_real(opacity);
json_object_set_new(rootJ, "wireOpacity", opacityJ);

// tension
float tension = dynamic_cast<RackScene*>(gScene)->toolbar->wireTensionSlider->value;
float tension = gToolbar->wireTensionSlider->value;
json_t *tensionJ = json_real(tension);
json_object_set_new(rootJ, "wireTension", tensionJ);

@@ -36,6 +36,10 @@ static json_t *settingsToJson() {
json_t *sampleRateJ = json_real(sampleRate);
json_object_set_new(rootJ, "sampleRate", sampleRateJ);

// plugLight
json_t *plugLightJ = json_boolean(gToolbar->plugLightButton->value > 0.0);
json_object_set_new(rootJ, "plugLight", plugLightJ);

return rootJ;
}

@@ -48,12 +52,12 @@ static void settingsFromJson(json_t *rootJ) {
// opacity
json_t *opacityJ = json_object_get(rootJ, "wireOpacity");
if (opacityJ)
dynamic_cast<RackScene*>(gScene)->toolbar->wireOpacitySlider->value = json_number_value(opacityJ);
gToolbar->wireOpacitySlider->value = json_number_value(opacityJ);

// tension
json_t *tensionJ = json_object_get(rootJ, "wireTension");
if (tensionJ)
dynamic_cast<RackScene*>(gScene)->toolbar->wireTensionSlider->value = json_number_value(tensionJ);
gToolbar->wireTensionSlider->value = json_number_value(tensionJ);

// allowCursorLock
json_t *allowCursorLockJ = json_object_get(rootJ, "allowCursorLock");
@@ -66,6 +70,11 @@ static void settingsFromJson(json_t *rootJ) {
float sampleRate = json_number_value(sampleRateJ);
engineSetSampleRate(sampleRate);
}

// plugLight
json_t *plugLightJ = json_object_get(rootJ, "plugLight");
if (plugLightJ)
gToolbar->plugLightButton->setValue(json_is_true(plugLightJ) ? 1.0 : 0.0);
}




Loading…
Cancel
Save