Introduction to Nathive plugins
As I told you before, (slide-5a) the Nathive plugin system is a critical part of the application, the aim is to keep the Nathive core as clean as we can, so in fact, without the default plugins you cannot perform usual actions like brush, open a document, or enable fullscreen, basically you can do nothing, you could manipulate everything through the console, but the console is a plugin too!
So, what's the point of this, are you crazy?, well, let me list it.
(slide-5b) A lot of code in the project is organized and styled through a defined specification, this result in code uniformity.
(slide-5c) The application is clearly splited into libraries and code that use those libraries, this results in a hard isolation.
(slide-5d) If there are new requirements and the specification is updated, is easy to update automatically the plugins with decorators or regex, modifying nothing of the core. This result is a less maintenance.
(slide-5e) There are a lot of real examples of plugins, from easy ones to complex, this works as a knowledge base for people how wants to create their own plugins. This results in more collaboration.
(slide-5f) The code uniformity allow us to load and save the plugins state and some other cool stuff like the preset loader, both are setting and getting plugin variables from config files, so with the same technology we can save the last used folder, document templates, brushes.
At this moment there are four types of plugins in Nathive: (slide-5g)
- Tool, are plugins that modify the canvas directly by the mouse input.
- Dialog, are plugins that needs to popup a window.
- Launcher, are plugins that simply perform an action when are called.
- Toggle, are like launcher plugins but with enabled or disabled state.