svoid stefansOS_addDynamicModuleDialog() { selectDynModuleID(voidfunc(fS snippetID) { temp tempBusyAnimation("Loading Module"); final Class c = hotwireModule(snippetID); L names = (L) callOpt(c, 'myInnerClasses); if (names == null) names = map getClassDeclarationName(innerClassesOfMain(getServerTranspiledWithoutLibs(snippetID))); // only show the usable ones try { names = shortClassNames(nonAbstractClassesInRealmImplementing(c, _getClass(c, "main$DynModule"), names)); } catch print e { names = null; } if (empty(names)) stefansOS_showNewDynamicModule(snippetID, null, c); else if (l(names) == 1) stefansOS_showNewDynamicModule(snippetID, "main$" + first(names), c); else selectFromList("Class to use", concatLists(ll("None"), names), voidfunc(S className) { stefansOS_showNewDynamicModule(snippetID, eq(className, "None") ? null : "main$" + className, c); }); }); }