You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Fornjot app displays status messages, to show what's currently happening with the model.
These status message provide a high-level overview, but there's more detail going on behind the scenes. Not showing this detail can be confusing. For example, when loading a model for the first time, it can take longer than expected, as the model's dependencies need to be compiled first.
At the same time, showing all the detail would be overwhelming. So I've come up with the following idea to address this:
Add a UI element to the left of each status message that allows you to expand that status message, to see more detail.
I often see triangles to represent such UI messages, with the triangle pointing to the right while the element is not expanded, then down once it is expanded. But such details don't matter for an initial implementation. If egui already offers something like this, we can just use it.
If a status message is expanded, it shouldn't scroll out of sight because too many details are displayed. It should always stay visible, to always make it clear to which message the currently displayed details belong, and to always make it possible to un-expand the details.
I think the way to achieve that, would be to display the expanded details in a scrollable UI element that has a constant size.
We might consider to automatically expand the latest message, and automatically un-expand it, once the next message is displayed. But this is a detail that can be left for further iteration.
Initially, the only details displayed in this way could the the output from Cargo when compiling a model.
I haven't looked into implementing this, but off the top of my head, this is what would need to happen:
Status messages are stored in the StatusReport struct. This needs to be expanded, to support the new capabilities.
StatusReport is accessed from Gui to be displayed. The new UI would need to be implemented there.
StatusReport is stored in EventLoopHandler and updated by its methods, based on the events they receive.
HostThread and the APIs it calls would have to be expanded as necessary to capture the Cargo output (and later, other details). ModelEvent would have to be expanded to carry the new information into the event loop.
I hope this helps a bit. If you're interested in implementing this but have further questions, feel free to ask!
The text was updated successfully, but these errors were encountered:
The Fornjot app displays status messages, to show what's currently happening with the model.
These status message provide a high-level overview, but there's more detail going on behind the scenes. Not showing this detail can be confusing. For example, when loading a model for the first time, it can take longer than expected, as the model's dependencies need to be compiled first.
At the same time, showing all the detail would be overwhelming. So I've come up with the following idea to address this:
I haven't looked into implementing this, but off the top of my head, this is what would need to happen:
StatusReport
struct. This needs to be expanded, to support the new capabilities.StatusReport
is accessed fromGui
to be displayed. The new UI would need to be implemented there.StatusReport
is stored inEventLoopHandler
and updated by its methods, based on the events they receive.StatusReport
is mostly updated based on a custom event fed into the event loop byHostThread
. The event type isModelEvent
.HostThread
and the APIs it calls would have to be expanded as necessary to capture the Cargo output (and later, other details).ModelEvent
would have to be expanded to carry the new information into the event loop.I hope this helps a bit. If you're interested in implementing this but have further questions, feel free to ask!
The text was updated successfully, but these errors were encountered: