Skip to content

Conversation

@ctrueden
Copy link
Member

@ctrueden ctrueden commented Jul 12, 2023

Thanks to the HeadlessUI, we now always have at least one UI available to SciJava Common. This commit introduces the concept internally of an active UI: the one that will be used when UI-centric operations are performed via the UIService (rather than directly on a UserInterface).

The logic is as follows:

  • If an active UI already exists and is currently visible, use it again.
  • Otherwise, make the first visible UI the active one, and use it.
  • If none, make the default UI the active one, and use it.

This PR also fixes a regression, introduced in #461, where calling uiService.show(thing) would also cause the default UI to become visible. Previously, it would only show that thing using the default UI, but the main window would not appear, and the UI as a whole would still be considered not visible. (To be fair: the "regression" here was explicitly stated as an intended change in that PR—but after discussion and reflection, we decided we don't want to change this behavior after all.)

Might also fix #460? Edit: Nope, doesn't.

Thanks to the HeadlessUI, we now always have at least one UI available
to SciJava Common. This commit introduces the concept internally of an
*active* UI: the one that will be used when UI-centric operations are
performed via the UIService (rather than directly on a UserInterface).

The logic is as follows:
* If an active UI already exists and is currently visible, use it again.
* Otherwise, make the first visible UI the active one, and use it.
* If none, make the default UI the active one, and use it.
@ctrueden ctrueden requested review from elevans, gselzer and hinerm July 12, 2023 18:03
Copy link
Member

@gselzer gselzer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have no concerns, this seems like a good change to me!

@ctrueden ctrueden merged commit 8b56cb2 into master Jul 12, 2023
@ctrueden ctrueden deleted the active-ui branch July 12, 2023 19:38
@elevans
Copy link
Member

elevans commented Jul 12, 2023

This works great. I can display net.imagej.Dataset images without displaying the ImageJ UI in PyImageJ.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

UIService.showUI() shows multiple instances of the same UI

4 participants