Helper - updating instead of creating a module faceplate

Since front panel design has been an iterative process, is there a functionality in helper.py to just pull new data from the faceplate .svg file and update the widget?

3 Likes

I was wondering about this also!

I needed to move some ports around and ended up just moving them around in the code through trial and error. If there is a way to simply update from the svg via the the Python script that would save me a bit of a headache not having to get the panel perfect before I even start with the DSP.

This is one of several most devs never use helper.py. If you are making a “real” module the up-front saving in time doesn’t seem worth the downsides.

It sounds like a great idea. In this case, instead of generating code from scratch, the helper would have to read in the existing C++ code and patch just the right parts, without damaging any other part of the code. It sounds like a great project for somebody who might want to take that on.

In practice, I use graph paper diagrams to plan, and spreadsheets to help calculate, the ideal coordinates of things. Then I hand-edit the coordinates in both the SVG and C++ code. I find I don’t trust my imprecise hand movements and imperfect eyes to line things up in Inkscape. I use Inkscape just for my first rough draft and for doing stuff I can’t feasibly do without it, like converting text objects to path objects.

1 Like

I use Adobe XD, and the various alignment options, and showing numerical values makes alignment pretty easy (for me, anyway). Once I like the final result I hide all the layers for buttons, knobs, and jacks, and output the final panel. Then I manually copy the numeric values for the hidden objects into the code. I expect you can do the same thing with whatever your favorite SVG creator is.

Oh - I don’t trust my hands either. I do the fine nudging with the keyboard, or just type in numerical values. Again, I would be surprised if most tools don’t allows this. Although I confess I have never used Inkscape.

And, of course, creating a grid and snapping to it can make lining some of this stuff easier.

I wrote a simple grid utility within my module that uses nvg. During development, I enable this function call and use that to help hand enter positions and nudge them until they work. I do not use Inkscape as it was driving me nuts. But, I do not use any other SVG editor either. My panel is created at runtime via nvg. I do capture a panel PNG file but that is just so I my module will render correctly in the library browser.