#1150 closed todo (done)
GUI content connector
| Reported by: | Ichthyostega | Owned by: | Ichthyostega |
|---|---|---|---|
| Priority: | normal | Milestone: | 0integration |
| Component: | lumieraGui | Keywords: | gui session architecture interfaces integration |
| Sub Tickets: | #1043, #1145, #1151, #1153 | Parent Tickets: | #1014, #1039, #1147, #1251, #1253, #1327 |
Description
Define and draft the mechanism for the UI to be populated with actual content.
The UI-Layer must not perform this on its own behalf -- rather, the UI top-level need to issue some kind of request and/or install a listener somehow into the session. Which in turn then causes the session to cast a population diff upwards into the UI. The task for this ticket is to establish the framework and mechanisms to make establishing such a connection possible.
Change history (12)
comment:1 by , at 2018-07-28T13:17:04Z
| Owner: | set to |
|---|---|
| Status: | new → accepted |
comment:2 by , at 2018-07-28T16:30:01Z
The general plan to trigger content population boils down to
- have someone(TM) inject the population trigger into the GTK event loop
- the trigger itself issues a command towards the session
- execution of aforementioned command activates sending of population / diff messages
- on shutdown of the top-level, send the corresponding deactivation command
comment:3 by , at 2018-08-02T15:08:26Z
| blockedby: | 1145 → 1145, 1151 |
|---|
comment:4 by , at 2018-08-04T15:20:09Z
| blocking: | 1147 → 1147, 1014 |
|---|
comment:5 by , at 2018-08-04T15:29:12Z
| blockedby: | 1145, 1151 → 1145, 1151, 1153 |
|---|
comment:6 by , at 2020-02-23T07:43:10Z
| blockedby: | 1145, 1151, 1153 → 1043, 1145, 1151, 1153 |
|---|
comment:7 by , at 2022-10-17T01:02:31Z
| blocking: | 1147, 1014 → 1014, 1147, 1251 |
|---|
comment:8 by , at 2022-10-21T19:36:21Z
| blocking: | 1014, 1147, 1251 → 1014, 1147, 1251, 1253 |
|---|
comment:9 by , at 2023-02-02T02:06:39Z
| blocking: | 1014, 1147, 1251, 1253 → 1014, 1039, 1147, 1251, 1253 |
|---|
comment:10 by , at 2023-03-17T22:37:05Z
| Resolution: | → done |
|---|---|
| Status: | accepted → closed |
Over the course of the last years, while reworking the backbone of the UI-Layer, the envisioned new solution to this tricky problem has been clarified, implemented and validated to great extent
- after starting the GTK Event-Loop, an action is scheduled into this event loop, which in turn queries the Steam-Layer for the actual model contents
- the response arrives asynchronously, and is dispatched into the GTK-Thread over the UI-Bus
- the model content is described in the form of a »Population Diff« — thereby avoiding the use of a common shared model implementation.
- all relevant entities in the GUI (which represent some part of the model) do implement a Diff Mutator and can thus be addressed through the UI-Bus to bring up the necessary widgets and structures in conformance to the diff description of the model.
- based alone on this setup, it was possible to establish all the wiring and scaffolding to build a fully functional UI, including the handling of dragging-gestures
comment:11 by , at 2023-09-13T18:58:35Z
| blocking: | 1014, 1039, 1147, 1251, 1253 → 1014, 1039, 1147, 1251, 1253, 1327 |
|---|
comment:12 by , at 2025-12-25T00:00:00Z
| blockedby: | 1043, 1145, 1151, 1153 |
|---|---|
| blocking: | 1014, 1039, 1147, 1251, 1253, 1327 |
| Parent Tickets: | → 1014, 1039, 1147, 1251, 1253, 1327 |
| Sub Tickets: | → 1043, 1145, 1151, 1153 |
Migration MasterTickets ⟼ Subtickets-plugin

from #1145 it is clear that -- while our start-up sequence for the UI is basically sane -- we're lacking a proper trigger point. The reason is, content population has to start after the event loop is running and the UI frame is shown. Incidentally, at that poin we also know that the session subsystem is already completely booted and ready (command processing is open and running). The ordering of subsystem dependencies ensures this ordering. Yet this doesn't mean that actual session (content) is already loaded. It could be present (if the session to load was given as commandline argument), or alternatively, a placeholder session is constructed and populated with some default content.