It would be very awesome if we could create an EdMode just by tweaking some parameters. Especially, if creating an EdMode like this would be possible somewhere in the code:
myEdMode = EdModeCreator.Add("My Ed Mode Tool").Icon(myTexture).OnSelected(someObject, &MyEdMode::OnSelected);
firstCategory = myEdMode.AddCategory("Some Action Category").Icon(...);
firstCategory.AddAction("Draw").Icon(...).OnExecute(someObject, &MyEdMode::OnDraw);
I think you get the idea? I just tell the extension the most important stuff and it deals with registering the EdMode and creating all the widgets by itself.
And maybe you can make use of template parameters to automate some stuff. Or you could have the user implement a certain interface/derive from a certain class… Whatever is needed for a rough setup. But I wouldn’t want to have to create a new class for every category, action and EdMode… That is something the extension should deal with.
Edit:
So basically, you would have to create some classes that store the relevant description information for every editor component required and then you would have widget classes, that can create the appropriate widgets based on these description classes. Next you would have some sort of framework that would register and instantiate everything thats needed. The user would only need to fill out these description classes…
You should also provide some general tooling that would make it easier to create advanced things like dialog windows etc. where everything you need to do is to provide the content widget and context, maybe? (I know creating dialog windows is quite easy, but there could be more complex things)
Edit2:
And I would like to have some documentation/explanations of the things that we need to be aware of during editor development as opposed to game development. At least, if there is things we need to know in order to code reliably.