Skip to content
Mikhail Milikhin edited this page Apr 10, 2023 · 8 revisions

Design decisions

Architecture

The key principles principles results in the following decisions.
The application consists of two components:

  • Platform-specific GUI The platform-specific application provides native UI.
    For the current target platforms it is a pure QML application with pyotherside being used when QML is not enough.
  • Platform-agnostic editor engine
    HTML5 application for a WebView (the editor itself).

Hence all the core functionality is contained in a platform-independend web application.

UI and Editor interact using message-based (Pub/Sub-like) API. Message flow implementations may vary across supported platforms:

  • runJavaScript and framescript:action for Sailfish OS
  • websockets for Ubuntu Touch

The message-based API is the only way of interaction between the UI and the editor.

The only critical requirement for a target platform is a WebView component that could handle HTML5 code editor.

Directory structure

  • editor - HTML5 Editor
  • generic - platform-independent components that can be used within native applications across different platforms
    • py-backend - pytotherside code, used to interact with the OS when QML is not enough.
    • qml - common QML components, contains Editor API implementation
  • harbour-seabass - Sailfish OS application
  • ubports-seabass - UBports application

/harbour-seabass/qml/generic and ubports-seabass/qml/generic are links to generic/qml directory.

Clone this wiki locally