Skip to content

[#889] Port FixProfileAssociationsDialog to Qt - #895

Merged
eoyilmaz merged 1 commit into
developfrom
889-qt-fix-profile-associations-dialog-port
Jul 20, 2026
Merged

[#889] Port FixProfileAssociationsDialog to Qt#895
eoyilmaz merged 1 commit into
developfrom
889-qt-fix-profile-associations-dialog-port

Conversation

@eoyilmaz

Copy link
Copy Markdown
Owner

Summary

  • Ports FixProfileAssociationsDialog to Qt (DisplayCAL/ui/tools/fix_profile_associations.py): shows the display -> profile association table before enabling "Automatically fix profile associations", refreshed off a 1s QTimer the same way the sibling ProfileAssociationsDialog ([Qt] Port ProfileAssociationsDialog and wire up the apply-profiles tray's "Profile associations" menu item #888) does.
  • Adds QtProfileLoader._toggle_fix_profile_associations(), overriding the wx version to show the new Qt dialog instead of constructing a wx one from the Qt process; the confirm/apply logic (setcfg, _set_display_profiles()/_reset_display_profile_associations(), writecfg()) is otherwise identical to the inherited wx behavior.
  • Wires this up to both the apply-profiles tray's "Fix profile associations" menu item and the matching checkbox in ProfileAssociationsDialog, both gated on ProfileLoader._can_fix_profile_associations() (Windows-only in practice, same as the wx original).
  • Bumps version to 3.10.0.dev55.

Closes #889

Test plan

  • pytest tests/test_ui_fix_profile_associations.py tests/test_ui_profile_associations.py tests/test_qt_toggle_fix_profile_associations.py tests/test_profile_loader.py -- 37 passed
  • ruff check on the three modified/added source files -- clean
  • Manually launched python -m DisplayCAL.ui.tools.apply_profiles on macOS and confirmed the tray menu item shows up correctly disabled (no _can_fix_profile_associations() support off Windows)
  • Manually forced the dialog open (stubbed _can_fix_profile_associations/_set_display_profiles) and drove the full tray-click -> dialog -> accept/cancel flow headless, confirming cfg + _set_display_profiles/_reset_display_profile_associations/writecfg calls happen as expected

…0.dev55

Adds `FixProfileAssociationsDialog` in `DisplayCAL/ui/tools/fix_profile_associations.py`,
porting the wx dialog shown before enabling "Automatically fix profile
associations": a table of display -> profile associations that
`ProfileLoader` would take over (a workaround for a Windows `GetICMProfile`
bug that always returns the first child device's profile regardless of which
one is active), refreshed off a 1s `QTimer` the same way the sibling
`ProfileAssociationsDialog` does.

Adds `QtProfileLoader._toggle_fix_profile_associations()`, overriding the wx
version to show the new Qt dialog instead of constructing a wx one from the
Qt process; the confirm/apply logic (setcfg, `_set_display_profiles()`/
`_reset_display_profile_associations()`, `writecfg()`) is otherwise identical
to the inherited wx behavior. Wires this up to both the apply-profiles tray's
"Fix profile associations" menu item and the matching checkbox in
`ProfileAssociationsDialog`, both Windows-only (gated on
`ProfileLoader._can_fix_profile_associations()`, itself only ever true when
child display devices have been enumerated, which only happens on
`sys.platform == "win32"`), matching how the wx tray/dialog gate the same
feature.
@eoyilmaz
eoyilmaz merged commit 27f672b into develop Jul 20, 2026
28 of 30 checks passed
@eoyilmaz
eoyilmaz deleted the 889-qt-fix-profile-associations-dialog-port branch July 20, 2026 13:40
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.

[Qt] Port FixProfileAssociationsDialog and wire up the apply-profiles tray's "Fix profile associations" menu item

1 participant