Access your own prefabs by tag, or the modules they use
Third-party prefab support (include prefabs in your own plugins, similar to presets)
Search
Additionally, I added the ability to access your normal module library:
Quickly access your favorite modules
Hold ctrl to access all modules
Right-click a module to toggle it as a favorite
Module previews
Search
I am hoping to get some early feedback before I publish to the library. I’m sure some decisions I made could be improved with such feedback.
Some possible feedback could be:
Suggestions on how to improve the organization of the widget menu
Documentation changes
Changes to how selections are expected to be organized on disk
Visual changes to the widget
Finally, I picked up C++ in order to make this so I am sure there are many bugs, memory leaks, segfaults, etc. I would appreciate any help understanding where those are and how to fix them.
If you’d like to contribute, I’m on the VCV Discord.
Thanks for taking a look!
Huge thanks to baconpaul, Surgo, Squinky Labs, JTB, alefnull, pgatt and more for answering all my questions and helping me with it all.
2.0.5 updates: 2/3/2023
New module look!
Shows total prefabs/patches/modules
Indicator light shows when data is being loaded
Unified prefab/patch handling should be much more performant
2.0.4 updates: 2/2/2023
Refreshing is now in a background thread which should keep the UI responsive
Added a browser replacement mode
Added extraPrefabSources and extraPatchSources to prefab.json settings.
Patches are now searched
Search results cleaned up
2.0.3 updates: 2/1/2023
Multiple Prefab modules are no longer a problem, they all share the single global widget.
All Prefab modules share a single set of settings. So changing it here changes it everywhere.
Once loaded the Prefabs Widget is now permanent and persists across patch loads.
Prefabs and patches with missing modules can’t be clicked and show tooltip with missing modules.
V1 patches now supported.
Some reliability fixes.
2.0.2 updates: 1/31/2023
Unorganized prefabs (those not in a sub-directory) now show in the “untagged” menu.
Toggling module favorites is less finicky.
Ctrl must be held when opening the widget to see the full module library. The previous behavior of being able to
toggle it while the menu was open was janky and uncomfortable to maintain.
Module library and search results now sorted.
Select how modules are sorted in module library using settings context-menu.
Toggle which tags are shown in module library using settings context-menu.
Hi looks good VCV - Google Drive for a lin-arm64 build. Note the README-... for how to. And a notification of a “core dump” (no dump?) segmentation fault on the closing rack, only the first time though.
This looks great. One awesome thing that Stoermelder Strip and S++ (which works with and imports Rack selections) do though is preserve parameter mappings which Rack itself does not do for some reason (all mappings are lost on selection import).
Might be tricky to implement but would be great if Prefabs could maintain the mappings too like S++.
Looks very cool! Is it compatible with the standard VCV Rack “selections”? You get a big wet kiss if you implement scrollbars on those long lists, and the ability to scroll down them using only the keyboard.
Ah, just tried it. Works fine on macOS 10.12.6. And yes, it’s compatible with standard selections. Like others I did get a crash on close the first time, but not subsequent times:
Thread 1 received signal SIGSEGV, Segmentation fault.
0x00007fff27133070 in libRack!_ZN4rack6widget6Widget13requestDeleteEv () from C:\Program Files\VCV\Rack2 Pro\libRack.dll
(gdb) bt
#0 0x00007fff27133070 in libRack!_ZN4rack6widget6Widget13requestDeleteEv () from C:\Program Files\VCV\Rack2 Pro\libRack.dll
#1 0x00007ffefc27d356 in PrefabsWidget::~PrefabsWidget (this=0x1ed53766bd0, __in_chrg=<optimized out>)
at C:/_Projects/VCVRack/Rack-SDK-2/plugins/vcv-prefabs/src/widgets/PrefabsWidget.cpp:41
#2 PrefabsWidget::~PrefabsWidget (this=0x1ed53766bd0, __in_chrg=<optimized out>)
at C:/_Projects/VCVRack/Rack-SDK-2/plugins/vcv-prefabs/src/widgets/PrefabsWidget.cpp:43
#3 0x00007fff27133765 in libRack!_ZN4rack6widget6Widget13clearChildrenEv () from C:\Program Files\VCV\Rack2 Pro\libRack.dll
#4 0x00007fff271337b7 in libRack!_ZN4rack6widget6WidgetD2Ev () from C:\Program Files\VCV\Rack2 Pro\libRack.dll
#5 0x00007fff27131486 in libRack!_ZN4rack6widget17FramebufferWidgetD0Ev () from C:\Program Files\VCV\Rack2 Pro\libRack.dll
#6 0x00007fff27133765 in libRack!_ZN4rack6widget6Widget13clearChildrenEv () from C:\Program Files\VCV\Rack2 Pro\libRack.dll
[snipped]
Makes the unused variable equals mixed with an accidental stack jump sound like a panic? Likely not but one does wonder why warnings are ignored when appearing in other builds. Have you thought about just leaving the object destruction to process exit? OK, wouldn’t work for insert delete. Have you thought of using a non-pointer encapsulated object for IconWidget?
EDIT: It doesn’t appear that listy, and “->” to “.” with no “new” is less typing. Plus it disappears on the capsule destructor.
EDIT2: When I say I’ve done C/C++, I mean I’ve done C with function pointers with the pre-processor and lots of Java to reading thick books on oolang. Forgot more than half of it unless I’d revise it in a few days, but then I’d have to have reason to remember the pertinent for purpose.
Unorganized prefabs (those not in a sub-directory) now show in the “untagged” menu.
Toggling module favorites is less finicky.
Ctrl must be held when opening the widget to see the full module library. The previous behavior of being able to
toggle it while the menu was open was janky and uncomfortable to maintain.
Module library and search results now sorted.
Select how modules are sorted in module library using settings context-menu.
Toggle which tags are shown in module library using settings context-menu.
Thank you for the feedback and bug information. I will begin looking into this.
type name(params); has always worked in a local context. But yes a missing //system.gc(-O3); comment on line 40.5. I leave all the best sarcasm to my own code.
EDIT: the origin starts here APP->scene->addChildBelow(iconWidget, APP->scene->browser); and removing it before deletion of iconWidget?