Following the great idea by Greg Zaal in D791 this differential adds additional functionality.
Now there is grouping of the files based upon the Add-on name.
Added almost all errors parsing, UTF-8 etc. from the add-on register function grouping them under the file path.
Moved the missing files to the same block.
The errors are now closed by default and can be expanded with a button the right corner.
Uses a BoolVectorProperty for the Expanding/Collapsing of the UI elements
The data is stored in two defaultdict(set) - error_duplicates and error_encoding
Added a tag_redraw call in the Refresh operator in the Header.
Grouped all the console/terminal prints in a similar fashion were possible
Adressed the case when a Script path is defined in the System preferences would show up twice in the output
Added two new helper functions
Some examples:
| Encoding/parsing errors: | Console output: | Duplicate Files: | Errors UI Collapsed: |
Open Questions:
- What errors should be exposed in the UI: error_encoding dictionary allows to add all of information related to a specific file - however what is useful to have? What format?
- Separate helper functions are introduced: Are they useful enough for code deduplication or they need more changes or even removed/replaced?
- Data storage of errors: Is defaultdict the best solution? Does it add some overhead?
- Additional information: strings needed explaining what is expected from the user?
In general, I think this is relatively good way of organizing and exposing add-ons' non runtime errors to the user, but it does need some scope, size and format evaluation. :)



