-
Notifications
You must be signed in to change notification settings - Fork 428
feat(themes): windows dark mode support #2714
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
base: master
Are you sure you want to change the base?
feat(themes): windows dark mode support #2714
Conversation
Add ThemeSettings class with THEME_SYSTEM, THEME_DARK, THEME_LIGHT modes. Fix SettingsProvider.BASE_PATH lazy initialization for early settings access. Add dark mode detection: usePyfaDark(), useSystemColors(), isDark(). Add setWindowsDarkMode() and setDarkTitleBar() for Windows dark mode APIs. Add Colors class with theme-aware color methods for all UI elements. Add ThemedPanel, ThemedDialog, ThemedFrame base classes for auto-theming.
Set background/foreground colors via Colors class on MainFrame. Apply dark title bar on Windows via setDarkTitleBar(). Update AuxiliaryMixin to use Colors.buttonFace() and Colors.text().
Convert PreferenceDialog, CopySelectDialog, UpdateDialog, SsoLogin, FitBrowserLiteDialog, SecStatusDialog, WaitDialog, and context menu dialogs to use ThemedDialog base class for dark mode support.
Convert MarketBrowser, ShipBrowser, StatsPane, CharacterSelection to ThemedPanel. Apply Colors to ship browser items, item stats views, chrome tabs, display. Update toggle panel, fitting view, implant editor with theme colors.
Apply Colors.styleInput() to TextCtrl, Choice, ComboBox controls. On Windows, native controls ignore SetBackgroundColour due to visual styles. styleInput() calls SetWindowTheme() via ctypes to disable native theming, allowing custom dark backgrounds to render correctly. Apply theme colors to MarketTree, preference views, ESI fittings.
Add _styleAxes() for matplotlib dark/light mode styling. Apply Colors to graph canvas, control panel, vector picker. Update style pickers and line style icons for theme awareness.
Add theme dropdown to General preferences (System Default, Pyfa Dark, Light). Prompt user to restart when theme changes. Apply Colors.gaugeBackground() to PyGauge and AttributeGauge.
d5e7227 to
50f349d
Compare
|
can't seem to see exactly what the macos build failure logs are, would appreciate some help with retrieving those since it builds on my end. Also I'm continuing to look into whether there are non-insane ways to get the menu bar and friends to actually go dark mode. happy to hold until then but figured it could also come as a fast-follow. |
|
converting to draft as I'm finding some improperly themed text |
|
When you are done, pls poke me on discord |
#1206
Changes Include:
Known Issues: