BUG: Catch improper class names in ExtensionWizard
Created by: AndrewBeers
Hello!
This is another small bug. When using the ExtensionWizard, one can click the "Add Module to Extension" to generate a module template under a provided module "name." For example, if a module name is provided as "TestModule" in the menu below..
Then a file, TestModule.py will be created. That file will contain some pre-built classes, like
class TestModule(ScriptedLoadableModule):
class TestModuleWidget(ScriptedLoadableModuleWidget):
The problem is that one can provide ANY string to that menu. Based on the prompt, I would initially assume that I was providing the final module name -- for example, "Extension Wizard". However, this generates bad class names that won't compile, e.g.:
class Extension WizardWidget(ScriptedLoadableModuleWidget):
Pressing "OK" with such a name will immediately lead to an error box for hard-to-decipher reasons at a first pass, e.g.
While most coders might be able to spot the problem in the console, some probably won't be able to. I know I missed it the first time I tried Extension Wizard, leading me to believe that it was just broken that time around and then I should download a new version later (read: 6 months). There's a bunch of different solutions to this. For example, one could make the prompt box more explicit about what 'Name' means, or automatically convert invalid class names into valid class names. In the interest of simplicity, however, I've just added an error-checker that detects invalid class names and gives users a relevant error message.
It might be something to think about more in-depth for the templating interface in general, but in the meantime this fix will likely work and perhaps not scare off new potential Slicer developers.
All the best, Andrew