Simple Help class for Tabbed help from JSON?

@kku created a very flexible Help system for SuperTool, It seems like it would be a good “Simple Help” expansion for the Simple class

An example might be to hotlink Filter gramplet elements. e.g., a hotlink of the “Regular Expressions” could open the “RegEx” tab of a Simple Help. That would have rows with: typical RegEx strings ( (.|\s)*\S(.|\s) linked to where that string is described in the Wiki or Discourse); or a Custom Filters link with rows that include sample Custom Filters, the builtin Filter Rules and addon Filter Rules all linked to wiki sections.

Another example usage might be @kmikkels Historical Context. Where it could have tabbed lists for each CSV event list and a tab with a collated list. Or an adaptation of the Distinct Branches example SuperTool Subsets script by @kku to make a worklist.

It parses a helptext.json to create a (dynamically expandable) multi-tabbed 2 column table viewer with rows of hotlinked items plus description. (It might good if this could leverage the (JSON, CSV, XML) Importer plugins instead of being fixated on JSON. Also, in addition to URLs, it would be good if to be able to link the display object display names with an Object Editor. Like the Simple Table does.) The JSON could be a file generated through a report to a temporary file location. Or a pre-set file location in the addon folder.


{
    "Hints": [
        [
            "diagram: SuperTool classes",
            "attributes and relationships between SuperTool objects",
            "https://github.com/Taapeli/isotammi-addons/blob/master/source/SuperTool/supertool.svg"
        ],
        [   "example scripts",
            "a list of SuperTool scripts published in various forums",
            "https://www.gramps-project.org/wiki/index.php/Addon:Isotammi_addons#SuperTool_Scripts"
        ],
⋮
        [
            "function: str(obj)",
            "convert an object to its string representation",
            "https://docs.python.org/3/library/stdtypes.html#str",
            "type(object).__str__(object)"
        ]
    ],
    "global": [
        [
            "active_person",
            "Active person"
        ],
⋮
    ]
}