Bystroushaak's blog / English section / Programming / objWiki / 2020-08 Internal architecture overview notes

2020-08 Internal architecture overview notes

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.

👉
It would be nice to change this documentation when you change stuff around.

File structure

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 layout_full_content (QtWidgets.QVBoxLayout) as it iterates through the inputs from Node selected in NodeTree, represented on the display by the TreeWidgetWithContextMenu (QTreeWidget).

Become a Patron