Jeez. I am trying to return to the objWiki development after 3 months and I really have no fucking idea how it works anymore, so lets try to document what is there in form of mindmaps and UML diagrams. Next time, this should be easier.
Let's start with high level file structure overview:
The code is roughly separated into two distinct subsystems; the backend code and the frontend code.
Backend code offers data structures for manipulation and relationship of information. It defines Nodes, and Inputs in nodes, how the Nodes are versioned and so on.
There is also transaction support on the backend code, which shall be used for the API access.
The frontend code is PyQt5 code for the manipulation of the backend structures. It consists of several elements described in the next chapter.
UI code dependencies
Root of the UI code is the main window. It is just PyQt5 wrapper over
QMainWindow, that defines what elements are there. UI files and autogenerated
main_window.py is in the
main_window_resource/ subdirectory. From there, it is possible to modify the structure of the main window.
From the first look, it is obvious that the most functionality is in the input bar. Main window draws them in the
QtWidgets.QVBoxLayout) as it iterates through the inputs from
Node selected in
NodeTree, represented on the display by the