Skip to content

Feature/dark mode issue 705#1268

Open
anaya33 wants to merge 5 commits intoOpenBCI:developmentfrom
anaya33:feature/dark-mode-issue-705
Open

Feature/dark mode issue 705#1268
anaya33 wants to merge 5 commits intoOpenBCI:developmentfrom
anaya33:feature/dark-mode-issue-705

Conversation

@anaya33
Copy link

@anaya33 anaya33 commented Mar 17, 2026

Open BCI GUI light mode, dark mode & legacy mode based off of Issue #705 and building from PR #1063 @Andrey1994 and PR #1248 of @retiutut .

…updates

## Core Theme System
- Style.pde: Added theme change notification system via notifyThemeChange()
- Style.pde: Added updateDropdownColors() to dynamically update global dropdown colors
- Style.pde: Added graph-specific color getters

## Widget Infrastructure
- Widget.pde: Added base updateColors() method
- WidgetManager.pde: Added updateAllWidgetColors() to propagate theme changes

## Graph/Plot Dark Mode Support
- TimeSeriesWidgetHelperClasses.pde: Added updatePlotColors() to ChannelBar
- W_TimeSeries.pde: Added updateColors() override
- W_FFT.pde: Added updatePlotColors() and updateColors()
- W_Accelerometer.pde: Added updatePlotColors(), theme-aware circular display
- W_BandPower.pde: Added updatePlotColors() and updateColors()
- W_AnalogRead.pde: Added updatePlotColors() to AnalogReadBar
- W_Marker.pde: Added updatePlotColors(), button and textfield theming

## Widget-Specific Fixes
- Grid.pde: Added updateDefaultTextColor() for theme-aware tables
- W_PacketLoss.pde: Fixed unreadable text
- W_Focus.pde: Fixed status circle text, grid and audio buttons
- AuditoryNeurofeedback.pde: Added updateColors() for buttons
- FilterUI.pde: Added dark mode popup support

## TopNav Updates
- TopNav.pde: Updated ConfigSelector for theme-aware Settings menu
## Widget Dropdown Labels (Widget.pde)
- Fixed dropdown title labels (Vert Scale, Window, Labels, Max Hz, Max uV, Log/Lin, Smooth, Filter)
- Now uses style.getTextColor() in dark mode instead of hardcoded OPENBCI_DARKBLUE

## Channel Select (ChannelSelect.pde)
- Fixed 'Channels' label text color for dark mode readability

## Time Series Playback (TimeSeriesWidgetHelperClasses.pde)
- Fixed playback scrollbar indicator color
- Fixed timestamp text above scrollbar
- Fixed TimeDisplay class timestamp text at bottom of widget

## EMG Widget (W_EMG.pde)
- Fixed channel number labels in EMG grid cells

## EMG Joystick Widget (W_EMGJoystick.pde)
- Fixed channel labels text color

All text now uses theme-aware colors: style.isDarkMode() ? style.getTextColor() : OPENBCI_DARKBLUE
Style.pde: Added ThemeType enum (DEFAULT/LIGHT/DARK) with next() cycling
Style.pde: Added Light mode color palette, all getters use 3-way switch
GuiSettings.pde: Added themeType to GuiSettingsValues for JSON persistence
GuiSettings.pde: Added setThemeType/getThemeType/applyThemeFromSettings
Widget.pde: Nav bar colors handle all 3 themes properly
ChannelSelect.pde: Channels background uses style.getBoxColor()
Architecture aligned with PR OpenBCI#1063 ThemeType pattern, no FrontendTheme.pde needed
- W_FFT.pde: Use theme-aware color for button bar instead of hardcoded grey
- W_BandPower.pde: Use theme-aware colors for button bar and histogram lines
- W_DigitalRead.pde: Add theme-aware colors for dots, strokes, and text labels
- W_EMG.pde: Use theme-aware colors for threshold circles and bar containers
- W_EMGJoystick.pde: Use theme-aware colors for graph background and axis lines
- W_PulseSensor.pde: Use theme-aware colors for graph background and text
- W_Spectrogram.pde: Use theme-aware background color for spectrogram display
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.

1 participant