Skip to content

Manage the active UI in a better way #465

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 12, 2023
Merged

Manage the active UI in a better way #465

merged 1 commit into from
Jul 12, 2023

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 gselzer, hinerm and elevans 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
3 participants