commit 16ca408b8647d8acf103685a8abb1a9dcbfa9ba7
parent 8b5a6ce87fdebce9a3d0552ff91a433df12c4cdb
Author: Matt Demanett <matt@demanett.net>
Date: Wed, 22 May 2019 22:51:33 -0400
v1: update generator script.
Diffstat:
1 file changed, 41 insertions(+), 21 deletions(-)
diff --git a/scripts/svg_widgets.rb b/scripts/svg_widgets.rb
@@ -20,12 +20,15 @@ namespace %HEADER% {
struct %MODULE% : Module {
%ENUMS%
- %MODULE%() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {
+ %MODULE%() {
+ config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS);
+%PARAMCONFIGS%
onReset();
}
void onReset() override;
- void step() override;
+ void onSampleRateChange() override;
+ void process(const ProcessArgs& args) override;
};
} // namespace %HEADER%
@@ -38,19 +41,24 @@ cpp_template = <<CPP_TEMPLATE
void %MODULE%::onReset() {
}
-void %MODULE%::step() {
+void %MODULE%::onSampleRateChange() {
+ // float sampleRate = APP->engine->getSampleRate();
+}
+
+void %MODULE%::process(const ProcessArgs& args) {
}
struct %MODULE%Widget : ModuleWidget {
static constexpr int hp = %HP%;
- %MODULE%Widget(%MODULE%* module) : ModuleWidget(module) {
+ %MODULE%Widget(%MODULE%* module) {
+ setModule(module);
box.size = Vec(RACK_GRID_WIDTH * hp, RACK_GRID_HEIGHT);
{
- SVGPanel *panel = new SVGPanel();
+ SvgPanel *panel = new SvgPanel();
panel->box.size = box.size;
- panel->setBackground(SVG::load(assetPlugin(plugin, "res/%MODULE%.svg")));
+ panel->setBackground(APP->window->loadSvg(asset::plugin(pluginInstance, "res/%MODULE%.svg")));
addChild(panel);
}
@@ -92,7 +100,7 @@ option_parser = OptionParser.new do |opts|
options[:output] = 'variables'
options[:variable_style] = v if v
end
- opts.on('--creates', 'Output ParamWidget::create, etc, lines for each widget') do
+ opts.on('--creates', 'Output ParamcreateWidget, etc, lines for each widget') do
options[:output] = 'creates'
end
opts.on('--enums', 'Output param/input/output/light ID enums') do
@@ -241,22 +249,32 @@ def make_creates(widgets_by_type, comments, indent, options)
i1 = indent ? "\t\t" : ''
groups = []
groups << (widgets_by_type['params'] || []).map do |w|
- "#{i1}addParam(ParamWidget::create<#{options[:param_class]}>(#{titleize(w.id)}Position, module, #{options[:module]}::#{w.id}, 0.0, 1.0, 0.0));"
+ "#{i1}addParam(createParam<#{options[:param_class]}>(#{titleize(w.id)}Position, module, #{options[:module]}::#{w.id}));"
end.join("\n")
groups << (widgets_by_type['inputs'] || []).map do |w|
- "#{i1}addInput(Port::create<#{options[:input_class]}>(#{titleize(w.id)}Position, Port::INPUT, module, #{options[:module]}::#{w.id}));"
+ "#{i1}addInput(createInput<#{options[:input_class]}>(#{titleize(w.id)}Position, module, #{options[:module]}::#{w.id}));"
end.join("\n")
groups << (widgets_by_type['outputs'] || []).map do |w|
- "#{i1}addOutput(Port::create<#{options[:output_class]}>(#{titleize(w.id)}Position, Port::OUTPUT, module, #{options[:module]}::#{w.id}));"
+ "#{i1}addOutput(createOutput<#{options[:output_class]}>(#{titleize(w.id)}Position, module, #{options[:module]}::#{w.id}));"
end.join("\n")
groups << (widgets_by_type['lights'] || []).map do |w|
- "#{i1}addChild(ModuleLightWidget::create<#{options[:light_class]}>(#{titleize(w.id)}Position, module, #{options[:module]}::#{w.id}));"
+ "#{i1}addChild(createLight<#{options[:light_class]}>(#{titleize(w.id)}Position, module, #{options[:module]}::#{w.id}));"
end.join("\n")
s = groups.reject(&:empty?).join("\n\n")
s = [make_comment(true, indent), s, make_comment(false, indent)].join("\n") if comments
s
end
+def make_param_configs(widgets_by_type, comments, indent, options)
+ i1 = indent ? "\t\t" : ''
+ s = (widgets_by_type['params'] || []).map do |w|
+ w.id =~ /^(.*)_PARAM$/
+ %(#{i1}configParam(#{w.id}, 0.0f, 1.0f, 0.0f, "#{$1.downcase}");)
+ end.join("\n")
+ s = [make_comment(true, indent), s, make_comment(false, indent)].join("\n") if comments
+ s
+end
+
def make_enums(widgets_by_type, comments, indent)
i1 = indent ? "\t" : ''
i2 = indent ? "\t\t" : "\t"
@@ -274,18 +292,18 @@ def make_screws(hp, comments, indent)
i1 = indent ? "\t\t" : ''
ss = []
if hp <= 6
- ss << 'addChild(Widget::create<ScrewSilver>(Vec(0, 0)));'
- ss << 'addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 15, 365)));'
+ ss << 'addChild(createWidget<ScrewSilver>(Vec(0, 0)));'
+ ss << 'addChild(createWidget<ScrewSilver>(Vec(box.size.x - 15, 365)));'
elsif hp <= 13
- ss << 'addChild(Widget::create<ScrewSilver>(Vec(0, 0)));'
- ss << 'addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 15, 0)));'
- ss << 'addChild(Widget::create<ScrewSilver>(Vec(0, 365)));'
- ss << 'addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 15, 365)));'
+ ss << 'addChild(createWidget<ScrewSilver>(Vec(0, 0)));'
+ ss << 'addChild(createWidget<ScrewSilver>(Vec(box.size.x - 15, 0)));'
+ ss << 'addChild(createWidget<ScrewSilver>(Vec(0, 365)));'
+ ss << 'addChild(createWidget<ScrewSilver>(Vec(box.size.x - 15, 365)));'
else
- ss << 'addChild(Widget::create<ScrewSilver>(Vec(15, 0)));'
- ss << 'addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 30, 0)));'
- ss << 'addChild(Widget::create<ScrewSilver>(Vec(15, 365)));'
- ss << 'addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 30, 365)));'
+ ss << 'addChild(createWidget<ScrewSilver>(Vec(15, 0)));'
+ ss << 'addChild(createWidget<ScrewSilver>(Vec(box.size.x - 30, 0)));'
+ ss << 'addChild(createWidget<ScrewSilver>(Vec(15, 365)));'
+ ss << 'addChild(createWidget<ScrewSilver>(Vec(box.size.x - 30, 365)));'
end
ss = ss.map { |s| "#{i1}#{s}" }
s = ss.join("\n")
@@ -306,9 +324,11 @@ def make_stub(widgets_by_type, template, options)
if widgets_by_type.empty?
s.gsub!(/%POSITIONS%/, '')
s.gsub!(/%CREATES%/, '')
+ s.gsub!(/%PARAMCONFIGS%/, '')
else
s.gsub!(/%POSITIONS%/, make_variables(widgets_by_type, 'positions', !comments, true))
s.gsub!(/%CREATES%/, make_creates(widgets_by_type, false, true, options))
+ s.gsub!(/%PARAMCONFIGS%/, make_param_configs(widgets_by_type, false, true, options))
end
s.sub!(/\s*\}\s*(Model\*.*)\Z/, "\n}\n\n\n\\1")
s = [make_comment(true, false), s, make_comment(false, false)].join("\n") if comments