@@ -543,7 +543,7 @@ bool ModuleWidget::pasteJsonAction(json_t* moduleJ) { | |||
// history::ModuleChange | |||
history::ModuleChange* h = new history::ModuleChange; | |||
h->name = "paste module preset"; | |||
h->name = string::translate("ModuleWidget.history.pastePreset"); | |||
h->moduleId = module->id; | |||
json_incref(oldModuleJ); | |||
h->oldModuleJ = oldModuleJ; | |||
@@ -602,7 +602,7 @@ void ModuleWidget::load(std::string filename) { | |||
void ModuleWidget::loadAction(std::string filename) { | |||
// history::ModuleChange | |||
history::ModuleChange* h = new history::ModuleChange; | |||
h->name = "load module preset"; | |||
h->name = string::translate("ModuleWidget.history.loadPreset"); | |||
h->moduleId = module->id; | |||
h->oldModuleJ = toJson(); | |||
@@ -673,7 +673,7 @@ void ModuleWidget::save(std::string filename) { | |||
FILE* file = std::fopen(filename.c_str(), "w"); | |||
if (!file) { | |||
std::string message = string::f("Could not save preset to file %s", filename); | |||
std::string message = string::f(string::translate("ModuleWidget.savePresetFailed"), filename); | |||
osdialog_message(OSDIALOG_WARNING, OSDIALOG_OK, message.c_str()); | |||
return; | |||
} | |||
@@ -691,7 +691,7 @@ void ModuleWidget::saveTemplate() { | |||
void ModuleWidget::saveTemplateDialog() { | |||
if (hasTemplate()) { | |||
std::string message = string::f("Overwrite default preset for %s?", model->getFullName()); | |||
std::string message = string::f(string::translate("ModuleWidget.overwriteTemplate"), model->getFullName()); | |||
if (!osdialog_message(OSDIALOG_INFO, OSDIALOG_OK_CANCEL, message.c_str())) | |||
return; | |||
} | |||
@@ -711,7 +711,7 @@ void ModuleWidget::clearTemplate() { | |||
} | |||
void ModuleWidget::clearTemplateDialog() { | |||
std::string message = string::f("Delete default preset for %s?", model->getFullName()); | |||
std::string message = string::f(string::translate("ModuleWidget.clearTemplate"), model->getFullName()); | |||
if (!osdialog_message(OSDIALOG_INFO, OSDIALOG_OK_CANCEL, message.c_str())) | |||
return; | |||
clearTemplate(); | |||
@@ -761,7 +761,7 @@ void ModuleWidget::resetAction() { | |||
// history::ModuleChange | |||
history::ModuleChange* h = new history::ModuleChange; | |||
h->name = "reset module"; | |||
h->name = string::translate("ModuleWidget.history.resetModule"); | |||
h->moduleId = module->id; | |||
h->oldModuleJ = toJson(); | |||
@@ -776,7 +776,7 @@ void ModuleWidget::randomizeAction() { | |||
// history::ModuleChange | |||
history::ModuleChange* h = new history::ModuleChange; | |||
h->name = "randomize module"; | |||
h->name = string::translate("ModuleWidget.history.randomizeModule"); | |||
h->moduleId = module->id; | |||
h->oldModuleJ = toJson(); | |||
@@ -802,7 +802,7 @@ void ModuleWidget::appendDisconnectActions(history::ComplexAction* complexAction | |||
void ModuleWidget::disconnectAction() { | |||
history::ComplexAction* complexAction = new history::ComplexAction; | |||
complexAction->name = "disconnect cables"; | |||
complexAction->name = string::translate("ModuleWidget.history.disconnectCables"); | |||
appendDisconnectActions(complexAction); | |||
if (!complexAction->isEmpty()) | |||
@@ -814,7 +814,7 @@ void ModuleWidget::disconnectAction() { | |||
void ModuleWidget::cloneAction(bool cloneCables) { | |||
// history::ComplexAction | |||
history::ComplexAction* h = new history::ComplexAction; | |||
h->name = "duplicate module"; | |||
h->name = string::translate("ModuleWidget.history.duplicateModule"); | |||
// Save patch store in this module so we can copy it below | |||
APP->engine->prepareSaveModule(module); | |||
@@ -914,7 +914,7 @@ void ModuleWidget::bypassAction(bool bypassed) { | |||
h->moduleId = module->id; | |||
h->bypassed = bypassed; | |||
if (!bypassed) | |||
h->name = "un-bypass module"; | |||
h->name = string::translate("ModuleWidget.history.unbypassModule"); | |||
APP->history->push(h); | |||
APP->engine->bypassModule(module, bypassed); | |||
@@ -922,7 +922,7 @@ void ModuleWidget::bypassAction(bool bypassed) { | |||
void ModuleWidget::removeAction() { | |||
history::ComplexAction* h = new history::ComplexAction; | |||
h->name = "delete module"; | |||
h->name = string::translate("ModuleWidget.history.deleteModule"); | |||
// Disconnect cables | |||
appendDisconnectActions(h); | |||
@@ -987,7 +987,7 @@ static void appendPresetItems(ui::Menu* menu, WeakPtr<ModuleWidget> moduleWidget | |||
} | |||
} | |||
if (!hasPresets) { | |||
menu->addChild(createMenuLabel("(None)")); | |||
menu->addChild(createMenuLabel(string::translate("ModuleWidget.nonePresets"))); | |||
} | |||
}; | |||
@@ -1003,49 +1003,49 @@ void ModuleWidget::createContextMenu() { | |||
menu->addChild(createMenuLabel(model->plugin->brand)); | |||
// Info | |||
menu->addChild(createSubmenuItem("Info", "", [=](ui::Menu* menu) { | |||
menu->addChild(createSubmenuItem(string::translate("ModuleWidget.info"), "", [=](ui::Menu* menu) { | |||
model->appendContextMenu(menu); | |||
if (!weakThis) | |||
return; | |||
menu->addChild(new ui::MenuSeparator); | |||
menu->addChild(createMenuLabel("Module instance ID:")); | |||
menu->addChild(createMenuLabel(string::translate("ModuleWidget.moduleId"))); | |||
menu->addChild(createMenuLabel(string::f("%lld", (long long) weakThis->module->getId()))); | |||
})); | |||
// Preset | |||
menu->addChild(createSubmenuItem("Preset", "", [=](ui::Menu* menu) { | |||
menu->addChild(createMenuItem("Copy", widget::getKeyCommandName(GLFW_KEY_C, RACK_MOD_CTRL), [=]() { | |||
menu->addChild(createSubmenuItem(string::translate("ModuleWidget.preset"), "", [=](ui::Menu* menu) { | |||
menu->addChild(createMenuItem(string::translate("ModuleWidget.copy"), widget::getKeyCommandName(GLFW_KEY_C, RACK_MOD_CTRL), [=]() { | |||
if (!weakThis) | |||
return; | |||
weakThis->copyClipboard(); | |||
})); | |||
menu->addChild(createMenuItem("Paste", widget::getKeyCommandName(GLFW_KEY_V, RACK_MOD_CTRL), [=]() { | |||
menu->addChild(createMenuItem(string::translate("ModuleWidget.paste"), widget::getKeyCommandName(GLFW_KEY_V, RACK_MOD_CTRL), [=]() { | |||
if (!weakThis) | |||
return; | |||
weakThis->pasteClipboardAction(); | |||
})); | |||
menu->addChild(createMenuItem("Open", "", [=]() { | |||
menu->addChild(createMenuItem(string::translate("ModuleWidget.load"), "", [=]() { | |||
if (!weakThis) | |||
return; | |||
weakThis->loadDialog(); | |||
})); | |||
menu->addChild(createMenuItem("Save as", "", [=]() { | |||
menu->addChild(createMenuItem(string::translate("ModuleWidget.saveAs"), "", [=]() { | |||
if (!weakThis) | |||
return; | |||
weakThis->saveDialog(); | |||
})); | |||
menu->addChild(createMenuItem("Save default", "", [=]() { | |||
menu->addChild(createMenuItem(string::translate("ModuleWidget.saveTemplate"), "", [=]() { | |||
if (!weakThis) | |||
return; | |||
weakThis->saveTemplateDialog(); | |||
})); | |||
menu->addChild(createMenuItem("Clear default", "", [=]() { | |||
menu->addChild(createMenuItem(string::translate("ModuleWidget.clearTemplate"), "", [=]() { | |||
if (!weakThis) | |||
return; | |||
weakThis->clearTemplateDialog(); | |||
@@ -1053,31 +1053,31 @@ void ModuleWidget::createContextMenu() { | |||
// Scan `<user dir>/presets/<plugin slug>/<module slug>` for presets. | |||
menu->addChild(new ui::MenuSeparator); | |||
menu->addChild(createMenuLabel("User presets")); | |||
menu->addChild(createMenuLabel(string::translate("ModuleWidget.userPresets"))); | |||
appendPresetItems(menu, weakThis, weakThis->model->getUserPresetDirectory()); | |||
// Scan `<plugin dir>/presets/<module slug>` for presets. | |||
menu->addChild(new ui::MenuSeparator); | |||
menu->addChild(createMenuLabel("Factory presets")); | |||
menu->addChild(createMenuLabel(string::translate("ModuleWidget.factoryPresets"))); | |||
appendPresetItems(menu, weakThis, weakThis->model->getFactoryPresetDirectory()); | |||
})); | |||
// Initialize | |||
menu->addChild(createMenuItem("Initialize", widget::getKeyCommandName(GLFW_KEY_I, RACK_MOD_CTRL), [=]() { | |||
menu->addChild(createMenuItem(string::translate("ModuleWidget.initialize"), widget::getKeyCommandName(GLFW_KEY_I, RACK_MOD_CTRL), [=]() { | |||
if (!weakThis) | |||
return; | |||
weakThis->resetAction(); | |||
})); | |||
// Randomize | |||
menu->addChild(createMenuItem("Randomize", widget::getKeyCommandName(GLFW_KEY_R, RACK_MOD_CTRL), [=]() { | |||
menu->addChild(createMenuItem(string::translate("ModuleWidget.randomize"), widget::getKeyCommandName(GLFW_KEY_R, RACK_MOD_CTRL), [=]() { | |||
if (!weakThis) | |||
return; | |||
weakThis->randomizeAction(); | |||
})); | |||
// Disconnect cables | |||
menu->addChild(createMenuItem("Disconnect cables", widget::getKeyCommandName(GLFW_KEY_U, RACK_MOD_CTRL), [=]() { | |||
menu->addChild(createMenuItem(string::translate("ModuleWidget.disconnectCables"), widget::getKeyCommandName(GLFW_KEY_U, RACK_MOD_CTRL), [=]() { | |||
if (!weakThis) | |||
return; | |||
weakThis->disconnectAction(); | |||
@@ -1088,35 +1088,35 @@ void ModuleWidget::createContextMenu() { | |||
bool bypassed = module && module->isBypassed(); | |||
if (bypassed) | |||
bypassText += " " CHECKMARK_STRING; | |||
menu->addChild(createMenuItem("Bypass", bypassText, [=]() { | |||
menu->addChild(createMenuItem(string::translate("ModuleWidget.bypass"), bypassText, [=]() { | |||
if (!weakThis) | |||
return; | |||
weakThis->bypassAction(!bypassed); | |||
})); | |||
// Duplicate | |||
menu->addChild(createMenuItem("Duplicate", widget::getKeyCommandName(GLFW_KEY_D, RACK_MOD_CTRL), [=]() { | |||
menu->addChild(createMenuItem(string::translate("ModuleWidget.duplicate"), widget::getKeyCommandName(GLFW_KEY_D, RACK_MOD_CTRL), [=]() { | |||
if (!weakThis) | |||
return; | |||
weakThis->cloneAction(false); | |||
})); | |||
// Duplicate with cables | |||
menu->addChild(createMenuItem("└ with cables", widget::getKeyCommandName(GLFW_KEY_D, RACK_MOD_CTRL | GLFW_MOD_SHIFT), [=]() { | |||
menu->addChild(createMenuItem("└ " + string::translate("ModuleWidget.duplicateWithCables"), widget::getKeyCommandName(GLFW_KEY_D, RACK_MOD_CTRL | GLFW_MOD_SHIFT), [=]() { | |||
if (!weakThis) | |||
return; | |||
weakThis->cloneAction(true); | |||
})); | |||
// Delete | |||
menu->addChild(createMenuItem("Delete", widget::getKeyCommandName(GLFW_KEY_BACKSPACE, 0) + "/" + widget::getKeyCommandName(GLFW_KEY_DELETE, 0), [=]() { | |||
menu->addChild(createMenuItem(string::translate("ModuleWidget.delete"), widget::getKeyCommandName(GLFW_KEY_BACKSPACE, 0) + "/" + widget::getKeyCommandName(GLFW_KEY_DELETE, 0), [=]() { | |||
if (!weakThis) | |||
return; | |||
weakThis->removeAction(); | |||
}, false, true)); | |||
// Zoom to fit | |||
menu->addChild(createMenuItem("Zoom to fit", widget::getKeyCommandName(GLFW_KEY_F4, RACK_MOD_CTRL), [=]() { | |||
menu->addChild(createMenuItem(string::translate("ModuleWidget.zoomFit"), widget::getKeyCommandName(GLFW_KEY_F4, RACK_MOD_CTRL), [=]() { | |||
if (!weakThis) | |||
return; | |||
APP->scene->rackScroll->zoomToBound(weakThis->getBox()); | |||
@@ -585,7 +585,7 @@ static PasteJsonResult RackWidget_pasteJson(RackWidget* that, json_t* rootJ, his | |||
void RackWidget::pasteJsonAction(json_t* rootJ) { | |||
history::ComplexAction* complexAction = new history::ComplexAction; | |||
complexAction->name = "paste modules"; | |||
complexAction->name = string::translate("RackWidget.history.pasteModules"); | |||
DEFER({ | |||
if (!complexAction->isEmpty()) | |||
APP->history->push(complexAction); | |||
@@ -611,7 +611,7 @@ void RackWidget::pasteModuleJsonAction(json_t* moduleJ) { | |||
assert(mw->module); | |||
history::ComplexAction* h = new history::ComplexAction; | |||
h->name = "paste module"; | |||
h->name = string::translate("RackWidget.history.pasteModule"); | |||
APP->engine->addModule(mw->module); | |||
@@ -957,7 +957,7 @@ void RackWidget::updateModuleOldPositions() { | |||
history::ComplexAction* RackWidget::getModuleDragAction() { | |||
history::ComplexAction* h = new history::ComplexAction; | |||
h->name = "move modules"; | |||
h->name = string::translate("RackWidget.history.moveModules"); | |||
for (ModuleWidget* mw : getModules()) { | |||
// Create ModuleMove action if the module was moved. | |||
@@ -1126,7 +1126,7 @@ void RackWidget::saveSelection(std::string path) { | |||
FILE* file = std::fopen(path.c_str(), "w"); | |||
if (!file) { | |||
std::string message = string::f("Could not save selection to file %s", path); | |||
std::string message = string::f(string::translate("RackWidget.saveSelectionFailed"), path); | |||
osdialog_message(OSDIALOG_WARNING, OSDIALOG_OK, message.c_str()); | |||
return; | |||
} | |||
@@ -1167,7 +1167,7 @@ void RackWidget::copyClipboardSelection() { | |||
void RackWidget::resetSelectionAction() { | |||
history::ComplexAction* complexAction = new history::ComplexAction; | |||
complexAction->name = "reset modules"; | |||
complexAction->name = string::translate("RackWidget.history.resetModules"); | |||
for (ModuleWidget* mw : getSelected()) { | |||
assert(mw->module); | |||
@@ -1188,7 +1188,7 @@ void RackWidget::resetSelectionAction() { | |||
void RackWidget::randomizeSelectionAction() { | |||
history::ComplexAction* complexAction = new history::ComplexAction; | |||
complexAction->name = "randomize modules"; | |||
complexAction->name = string::translate("RackWidget.history.randomizeModules"); | |||
for (ModuleWidget* mw : getSelected()) { | |||
assert(mw->module); | |||
@@ -1209,7 +1209,7 @@ void RackWidget::randomizeSelectionAction() { | |||
void RackWidget::disconnectSelectionAction() { | |||
history::ComplexAction* complexAction = new history::ComplexAction; | |||
complexAction->name = "disconnect cables"; | |||
complexAction->name = string::translate("RackWidget.history.disconnectCables"); | |||
for (ModuleWidget* mw : getSelected()) { | |||
mw->appendDisconnectActions(complexAction); | |||
@@ -1226,7 +1226,7 @@ void RackWidget::cloneSelectionAction(bool cloneCables) { | |||
DEFER({json_decref(rootJ);}); | |||
history::ComplexAction* complexAction = new history::ComplexAction; | |||
complexAction->name = "duplicate modules"; | |||
complexAction->name = string::translate("RackWidget.history.duplicateModules"); | |||
DEFER({ | |||
if (!complexAction->isEmpty()) | |||
APP->history->push(complexAction); | |||
@@ -1272,7 +1272,7 @@ void RackWidget::cloneSelectionAction(bool cloneCables) { | |||
void RackWidget::bypassSelectionAction(bool bypassed) { | |||
history::ComplexAction* complexAction = new history::ComplexAction; | |||
complexAction->name = bypassed ? "bypass modules" : "un-bypass modules"; | |||
complexAction->name = bypassed ? string::translate("RackWidget.history.bypassModules") : string::translate("RackWidget.history.unbypassModules"); | |||
for (ModuleWidget* mw : getSelected()) { | |||
assert(mw->module); | |||
@@ -1304,7 +1304,7 @@ bool RackWidget::isSelectionBypassed() { | |||
void RackWidget::deleteSelectionAction() { | |||
history::ComplexAction* complexAction = new history::ComplexAction; | |||
complexAction->name = "delete modules"; | |||
complexAction->name = string::translate("RackWidget.history.deleteModules"); | |||
// Copy selected set since removing ModuleWidgets modifies it. | |||
std::set<ModuleWidget*> selectedModules = getSelected(); | |||
@@ -1362,47 +1362,47 @@ void RackWidget::setSelectionPosNearest(math::Vec delta) { | |||
void RackWidget::appendSelectionContextMenu(ui::Menu* menu) { | |||
int n = getSelected().size(); | |||
menu->addChild(createMenuLabel(string::f("%d selected %s", n, n == 1 ? "module" : "modules"))); | |||
menu->addChild(createMenuLabel(n == 1 ? string::translate("RackWidget.selectedOne") : string::f(string::translate("RackWidget.selectedMany"), n))); | |||
// Enable alwaysConsume of menu items if the number of selected modules changes | |||
// Select all | |||
menu->addChild(createMenuItem("Select all", widget::getKeyCommandName(GLFW_KEY_A, RACK_MOD_CTRL), [=]() { | |||
menu->addChild(createMenuItem(string::translate("RackWidget.selectAll"), widget::getKeyCommandName(GLFW_KEY_A, RACK_MOD_CTRL), [=]() { | |||
selectAll(); | |||
}, false, true)); | |||
// Deselect | |||
menu->addChild(createMenuItem("Deselect", widget::getKeyCommandName(GLFW_KEY_A, RACK_MOD_CTRL | GLFW_MOD_SHIFT), [=]() { | |||
menu->addChild(createMenuItem(string::translate("RackWidget.deselect"), widget::getKeyCommandName(GLFW_KEY_A, RACK_MOD_CTRL | GLFW_MOD_SHIFT), [=]() { | |||
deselectAll(); | |||
}, n == 0, true)); | |||
// Copy | |||
menu->addChild(createMenuItem("Copy", widget::getKeyCommandName(GLFW_KEY_C, RACK_MOD_CTRL), [=]() { | |||
menu->addChild(createMenuItem(string::translate("RackWidget.copy"), widget::getKeyCommandName(GLFW_KEY_C, RACK_MOD_CTRL), [=]() { | |||
copyClipboardSelection(); | |||
}, n == 0)); | |||
// Paste | |||
menu->addChild(createMenuItem("Paste", widget::getKeyCommandName(GLFW_KEY_V, RACK_MOD_CTRL), [=]() { | |||
menu->addChild(createMenuItem(string::translate("RackWidget.paste"), widget::getKeyCommandName(GLFW_KEY_V, RACK_MOD_CTRL), [=]() { | |||
pasteClipboardAction(); | |||
}, false, true)); | |||
// Save | |||
menu->addChild(createMenuItem("Save selection as", "", [=]() { | |||
menu->addChild(createMenuItem(string::translate("RackWidget.saveAs"), "", [=]() { | |||
saveSelectionDialog(); | |||
}, n == 0)); | |||
// Initialize | |||
menu->addChild(createMenuItem("Initialize", widget::getKeyCommandName(GLFW_KEY_I, RACK_MOD_CTRL), [=]() { | |||
menu->addChild(createMenuItem(string::translate("RackWidget.initialize"), widget::getKeyCommandName(GLFW_KEY_I, RACK_MOD_CTRL), [=]() { | |||
resetSelectionAction(); | |||
}, n == 0)); | |||
// Randomize | |||
menu->addChild(createMenuItem("Randomize", widget::getKeyCommandName(GLFW_KEY_R, RACK_MOD_CTRL), [=]() { | |||
menu->addChild(createMenuItem(string::translate("RackWidget.randomize"), widget::getKeyCommandName(GLFW_KEY_R, RACK_MOD_CTRL), [=]() { | |||
randomizeSelectionAction(); | |||
}, n == 0)); | |||
// Disconnect cables | |||
menu->addChild(createMenuItem("Disconnect cables", widget::getKeyCommandName(GLFW_KEY_U, RACK_MOD_CTRL), [=]() { | |||
menu->addChild(createMenuItem(string::translate("RackWidget.disconnectCables"), widget::getKeyCommandName(GLFW_KEY_U, RACK_MOD_CTRL), [=]() { | |||
disconnectSelectionAction(); | |||
}, n == 0)); | |||
@@ -1411,22 +1411,22 @@ void RackWidget::appendSelectionContextMenu(ui::Menu* menu) { | |||
bool bypassed = (n > 0) && isSelectionBypassed(); | |||
if (bypassed) | |||
bypassText += " " CHECKMARK_STRING; | |||
menu->addChild(createMenuItem("Bypass", bypassText, [=]() { | |||
menu->addChild(createMenuItem(string::translate("RackWidget.bypass"), bypassText, [=]() { | |||
bypassSelectionAction(!bypassed); | |||
}, n == 0, true)); | |||
// Duplicate | |||
menu->addChild(createMenuItem("Duplicate", widget::getKeyCommandName(GLFW_KEY_D, RACK_MOD_CTRL), [=]() { | |||
menu->addChild(createMenuItem(string::translate("RackWidget.duplicate"), widget::getKeyCommandName(GLFW_KEY_D, RACK_MOD_CTRL), [=]() { | |||
cloneSelectionAction(false); | |||
}, n == 0)); | |||
// Duplicate with cables | |||
menu->addChild(createMenuItem("└ with cables", widget::getKeyCommandName(GLFW_KEY_D, RACK_MOD_CTRL | GLFW_MOD_SHIFT), [=]() { | |||
menu->addChild(createMenuItem("└ " + string::translate("RackWidget.duplicateWithCables"), widget::getKeyCommandName(GLFW_KEY_D, RACK_MOD_CTRL | GLFW_MOD_SHIFT), [=]() { | |||
cloneSelectionAction(true); | |||
}, n == 0)); | |||
// Delete | |||
menu->addChild(createMenuItem("Delete", widget::getKeyCommandName(GLFW_KEY_BACKSPACE, 0) + "/" + widget::getKeyCommandName(GLFW_KEY_DELETE, 0), [=]() { | |||
menu->addChild(createMenuItem(string::translate("RackWidget.delete"), widget::getKeyCommandName(GLFW_KEY_BACKSPACE, 0) + "/" + widget::getKeyCommandName(GLFW_KEY_DELETE, 0), [=]() { | |||
deleteSelectionAction(); | |||
}, n == 0, true)); | |||
} | |||
@@ -1439,7 +1439,7 @@ void RackWidget::clearCables() { | |||
void RackWidget::clearCablesAction() { | |||
// Add CableRemove for every cable to a ComplexAction | |||
history::ComplexAction* complexAction = new history::ComplexAction; | |||
complexAction->name = "clear cables"; | |||
complexAction->name = string::translate("RackWidget.history.clearCables"); | |||
for (CableWidget* cw : getCompleteCables()) { | |||
// history::CableRemove | |||
@@ -90,5 +90,61 @@ | |||
"MenuBar.help.userFolder": "Open user folder", | |||
"MenuBar.help.changelog": "Changelog", | |||
"MenuBar.help.update": "Update %s", | |||
"MenuBar.help.checkUpdate": "Check for %s update" | |||
"MenuBar.help.checkUpdate": "Check for %s update", | |||
"ModuleWidget.history.pastePreset": "paste module preset", | |||
"ModuleWidget.history.loadPreset": "load module preset", | |||
"ModuleWidget.savePresetFailed": "Could not save preset to file %s", | |||
"ModuleWidget.overwriteTemplate": "Overwrite default preset for %s?", | |||
"ModuleWidget.clearTemplate": "Clear default", | |||
"ModuleWidget.history.resetModule": "reset module", | |||
"ModuleWidget.history.randomizeModule": "randomize module", | |||
"ModuleWidget.history.disconnectCables": "Disconnect cables", | |||
"ModuleWidget.history.duplicateModule": "duplicate module", | |||
"ModuleWidget.history.unbypassModule": "un-bypass module", | |||
"ModuleWidget.history.deleteModule": "delete module", | |||
"ModuleWidget.nonePresets": "(None)", | |||
"ModuleWidget.info": "Info", | |||
"ModuleWidget.moduleId": "Module instance ID:", | |||
"ModuleWidget.preset": "Preset", | |||
"ModuleWidget.copy": "Copy", | |||
"ModuleWidget.paste": "Paste", | |||
"ModuleWidget.load": "Open", | |||
"ModuleWidget.saveAs": "Save as", | |||
"ModuleWidget.saveTemplate": "Save default", | |||
"ModuleWidget.userPresets": "User presets", | |||
"ModuleWidget.factoryPresets": "Factory presets", | |||
"ModuleWidget.initialize": "Initialize", | |||
"ModuleWidget.randomize": "Randomize", | |||
"ModuleWidget.disconnectCables": "Disconnect cables", | |||
"ModuleWidget.bypass": "Bypass", | |||
"ModuleWidget.duplicate": "Duplicate", | |||
"ModuleWidget.duplicateWithCables": "with cables", | |||
"ModuleWidget.delete": "Delete", | |||
"ModuleWidget.zoomFit": "Zoom to fit", | |||
"RackWidget.history.pasteModules": "paste modules", | |||
"RackWidget.history.pasteModule": "paste module", | |||
"RackWidget.history.moveModules": "move modules", | |||
"RackWidget.saveSelectionFailed": "Could not save selection to file %s", | |||
"RackWidget.history.resetModules": "reset modules", | |||
"RackWidget.history.randomizeModules": "randomize modules", | |||
"RackWidget.history.disconnectCables": "disconnect cables", | |||
"RackWidget.history.duplicateModules": "duplicate modules", | |||
"RackWidget.history.bypassModules": "bypass modules", | |||
"RackWidget.history.unbypassModules": "un-bypass modules", | |||
"RackWidget.history.deleteModules": "delete modules", | |||
"RackWidget.selectedOne": "1 selected module", | |||
"RackWidget.selectedMany": "%d selected modules", | |||
"RackWidget.selectAll": "Select all", | |||
"RackWidget.deselect": "Deselect", | |||
"RackWidget.copy": "Copy", | |||
"RackWidget.paste": "Paste", | |||
"RackWidget.saveAs": "Save selection as", | |||
"RackWidget.initialize": "Initialize", | |||
"RackWidget.randomize": "Randomize", | |||
"RackWidget.disconnectCables": "Disconnect cables", | |||
"RackWidget.bypass": "Bypass", | |||
"RackWidget.duplicate": "Duplicate", | |||
"RackWidget.duplicateWithCables": "with cables", | |||
"RackWidget.delete": "Delete", | |||
"RackWidget.history.clearCables": "clear cables" | |||
} |