From c7cb3ca4875b7db9f15c8f79013c393e9ae67c8f Mon Sep 17 00:00:00 2001 From: Stephen Nneji Date: Wed, 18 Mar 2026 10:57:47 +0000 Subject: [PATCH 01/10] dark mode --- rascal2/app.py | 22 ++--- rascal2/settings.py | 1 + .../images/{banner.png => banner-dark.png} | Bin rascal2/static/images/banner-light.png | Bin 0 -> 8689 bytes rascal2/static/images/delete-light.png | Bin 0 -> 2366 bytes .../static/images/{edit.png => edit-dark.png} | Bin rascal2/static/images/edit-light.png | Bin 0 -> 4293 bytes .../images/{footer.png => footer-dark.png} | Bin rascal2/static/images/footer-light.png | Bin 0 -> 4247 bytes .../static/images/{help.png => help-dark.png} | Bin rascal2/static/images/help-light.png | Bin 0 -> 2723 bytes ...de-settings.png => hide-settings-dark.png} | Bin rascal2/static/images/hide-settings-light.png | Bin 0 -> 4284 bytes .../{new-project.png => new-project-dark.png} | Bin rascal2/static/images/new-project-light.png | Bin 0 -> 1614 bytes rascal2/static/images/play-dark.png | Bin 1520 -> 0 bytes .../static/images/{redo.png => redo-dark.png} | Bin rascal2/static/images/redo-light.png | Bin 0 -> 4095 bytes .../images/{refresh.png => refresh-dark.png} | Bin rascal2/static/images/refresh-light.png | Bin 0 -> 4550 bytes ...save-project.png => save-project-dark.png} | Bin rascal2/static/images/save-project-light.png | Bin 0 -> 1533 bytes .../{settings.png => settings-dark.png} | Bin rascal2/static/images/settings-light.png | Bin 0 -> 3622 bytes .../static/images/{tile.png => tile-dark.png} | Bin rascal2/static/images/tile-light.png | Bin 0 -> 620 bytes .../static/images/{undo.png => undo-dark.png} | Bin rascal2/static/images/undo-light.png | Bin 0 -> 4062 bytes rascal2/static/style.css | 6 +- rascal2/theme.py | 87 ++++++++++++++++++ rascal2/ui/view.py | 19 ++-- rascal2/widgets/startup.py | 17 +++- 32 files changed, 122 insertions(+), 30 deletions(-) rename rascal2/static/images/{banner.png => banner-dark.png} (100%) create mode 100644 rascal2/static/images/banner-light.png create mode 100644 rascal2/static/images/delete-light.png rename rascal2/static/images/{edit.png => edit-dark.png} (100%) create mode 100644 rascal2/static/images/edit-light.png rename rascal2/static/images/{footer.png => footer-dark.png} (100%) create mode 100644 rascal2/static/images/footer-light.png rename rascal2/static/images/{help.png => help-dark.png} (100%) create mode 100644 rascal2/static/images/help-light.png rename rascal2/static/images/{hide-settings.png => hide-settings-dark.png} (100%) create mode 100644 rascal2/static/images/hide-settings-light.png rename rascal2/static/images/{new-project.png => new-project-dark.png} (100%) create mode 100644 rascal2/static/images/new-project-light.png delete mode 100644 rascal2/static/images/play-dark.png rename rascal2/static/images/{redo.png => redo-dark.png} (100%) create mode 100644 rascal2/static/images/redo-light.png rename rascal2/static/images/{refresh.png => refresh-dark.png} (100%) create mode 100644 rascal2/static/images/refresh-light.png rename rascal2/static/images/{save-project.png => save-project-dark.png} (100%) create mode 100644 rascal2/static/images/save-project-light.png rename rascal2/static/images/{settings.png => settings-dark.png} (100%) create mode 100644 rascal2/static/images/settings-light.png rename rascal2/static/images/{tile.png => tile-dark.png} (100%) create mode 100644 rascal2/static/images/tile-light.png rename rascal2/static/images/{undo.png => undo-dark.png} (100%) create mode 100644 rascal2/static/images/undo-light.png create mode 100644 rascal2/theme.py diff --git a/rascal2/app.py b/rascal2/app.py index 7fddba1e..375d9fd1 100644 --- a/rascal2/app.py +++ b/rascal2/app.py @@ -1,12 +1,10 @@ import logging import multiprocessing -import re -from contextlib import suppress -from PyQt6 import QtWidgets +from PyQt6 import QtWidgets, QtCore from rascal2.config import MatlabHelper, handle_scaling, setup_logging -from rascal2.paths import IMAGES_PATH, STATIC_PATH +from rascal2.theme import THEMES, set_stylesheet from rascal2.ui.view import MainWindowView @@ -19,19 +17,11 @@ def ui_execute(splash): QApplication exit code """ handle_scaling() - QtWidgets.QApplication.setStyle("Fusion") app = QtWidgets.QApplication.instance() - with suppress(FileNotFoundError), open(STATIC_PATH / "style.css") as stylesheet: - palette = app.palette() - replacements = { - "@Path": IMAGES_PATH.as_posix(), - "@Window": palette.window().color().name(), - "@Highlight": palette.highlight().color().name(), - "@Midlight": palette.midlight().color().name(), - "@Text": palette.text().color().name(), - } - style = re.sub("|".join(replacements), lambda x: replacements[x.group(0)], stylesheet.read()) - app.setStyleSheet(style) + app.setStyle("Fusion") + app.installEventFilter(THEMES) + app.styleHints().setColorScheme(QtCore.Qt.ColorScheme.Unknown) + set_stylesheet(app) window = MainWindowView() window.show() diff --git a/rascal2/settings.py b/rascal2/settings.py index 37619b2b..3157f4c7 100644 --- a/rascal2/settings.py +++ b/rascal2/settings.py @@ -53,6 +53,7 @@ class Styles(StrEnum): """Visual styles for RasCAL-2.""" Light = "light" + Dark = "dark" class BackgroundColour(StrEnum): diff --git a/rascal2/static/images/banner.png b/rascal2/static/images/banner-dark.png similarity index 100% rename from rascal2/static/images/banner.png rename to rascal2/static/images/banner-dark.png diff --git a/rascal2/static/images/banner-light.png b/rascal2/static/images/banner-light.png new file mode 100644 index 0000000000000000000000000000000000000000..772a16f961e07eb3095c5871cba089fffa87f7fc GIT binary patch literal 8689 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 F{{W%5tiAvM literal 0 HcmV?d00001 diff --git a/rascal2/static/images/delete-light.png b/rascal2/static/images/delete-light.png new file mode 100644 index 0000000000000000000000000000000000000000..17c58783ea0108c1d384ee20e4087b8efe8ec9df GIT binary patch literal 2366 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 literal 0 HcmV?d00001 diff --git a/rascal2/static/images/edit.png b/rascal2/static/images/edit-dark.png similarity index 100% rename from rascal2/static/images/edit.png rename to rascal2/static/images/edit-dark.png diff --git a/rascal2/static/images/edit-light.png b/rascal2/static/images/edit-light.png new file mode 100644 index 0000000000000000000000000000000000000000..6be929cf0d1620af940c9eca3024de8195ec000d GIT binary patch literal 4293 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 literal 0 HcmV?d00001 diff --git a/rascal2/static/images/footer.png b/rascal2/static/images/footer-dark.png similarity index 100% rename from rascal2/static/images/footer.png rename to rascal2/static/images/footer-dark.png diff --git a/rascal2/static/images/footer-light.png b/rascal2/static/images/footer-light.png new file mode 100644 index 0000000000000000000000000000000000000000..d6cbaafeb594d7bfbd54cf32bd89e7e192938173 GIT binary patch literal 4247 zcmeHKYitx%6rR%bK^vgutu!(W)X>1}%T`qubHc!#5fp8$mW)&uR^AxcP4G(miK(gzCm-uB`EVeD&tf zo%FPA<)$~K`?Cu!9(;fIjz&JKF=y(pNZp*>_T0wf+0-L*D+}>h?zIDvi>}$TCT+jE z_J~4U$@;U49Y2Pxo3UvZ`^nMNZ<9u^_~vV@>-C4)b_cbh%g=}zn@cU1zO6a^=}Y@3 zKAM6}nJi=m&Mq|hCvSQO+rD*O)28(I-d&_|iP!8ekLyfv^*m77f@}K`B;iS^pdjEY zDCo-xX0q+E#nli0%Y}@AX3)*9mFIPsp?}%PPnjR8g`#dwD;zRTL zJ+Evz)!gvl8^7?#&B;erwU@Y`TTpUTUGmk@6K7k=kABPTzVO4n%AJWzu$m`2pYk5g zceP5L+qze;*fle!{X+YOKz*{x94+v&Ky^!?0d0k>_-_Z z$KShs$+Yu(kJPW(x1f3N_wH-yiOx{=vD&TtDt2Ve40KN6gzSy%w33~L4XbB#6}kV| zzBVu4^lW7|smy+1#Dw+dQ+if>{ngfMojLZLj3nma;0-?OhjU4{(_j3V`&QTSksV8u zn_D)um8E>2>wDwPmNS`W_K&Kp+;6QPbKuK_r=HhNt;;%fPx;9U%epPsUz$zE(y#0~ z_%_{La~;|7>dx<`baZ5FnHjix=tOJl7mwcPF4@;Mb>ktWC1XbHEe}MPT(Ih$}A^VfjTsLpe|-h27Yt);0{41UGg+?I-<_0#Gd#FIGVL;?fF! z@gm+SV0pP|t{4LeLO^5DSST1)nV1_hco{g>%>;%T5N(kgo9_>x1+oHAtI292ac@kj zGh?}Fs7nzig@sB*2s18*G&Ytsi(2z$G<;`ZRgR>b_0?!o6N{EHqDTUZ7Kt#e-#)K|7lOOQ8F|&!hWeEgXO@t2c z3`k)?j;gn&Dx?r7*H~Ro%5JyVZB{!)S}4-tj7M!S-Uk#F)}qczktRz#2z_H1m=2Vd z)hiVe7_=}Ora%F#CMy-P9CTwk1*&`YPy6A45?GD(uo{4*q}j%h7KXA{P&UR)Go)=6 zNiyUByevp!{lB60R^<%FN2`Ip4^T3kwBY@cL2-%RWC^`v^kwTJ{-%e^01Rj` z&@XO-tqXQSqQ4dP>ZLcG|MAni5C7u|ka~ELA?Z6T*RWheQea5n;p!TeYe)(V2|Qd~ z|CwBAw=Pp44F3T|;Z^B$$>~|}nw8AWEAk+t5D7W_#E8goXc-wPen3T#)KdMM@HB<| z42>z8&+kq7F)=gawzPdW@0tuvZl5Q=B6hCpER~6nsmPwPo;j@(6FZhKn>XW+tBpOM xCLqZCi*q4x%T)NdoQNO`ABTev#vsT$Ey*=_;%DQ!mz{?e#OE#bG|ySM{4Z~%@$&!x literal 0 HcmV?d00001 diff --git a/rascal2/static/images/help.png b/rascal2/static/images/help-dark.png similarity index 100% rename from rascal2/static/images/help.png rename to rascal2/static/images/help-dark.png diff --git a/rascal2/static/images/help-light.png b/rascal2/static/images/help-light.png new file mode 100644 index 0000000000000000000000000000000000000000..d512a035f9011e02829e455e3688fa51a5ae1218 GIT binary patch literal 2723 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 DiISG3 diff --git a/rascal2/static/images/redo.png b/rascal2/static/images/redo-dark.png similarity index 100% rename from rascal2/static/images/redo.png rename to rascal2/static/images/redo-dark.png diff --git a/rascal2/static/images/redo-light.png b/rascal2/static/images/redo-light.png new file mode 100644 index 0000000000000000000000000000000000000000..858121862d23e7a3269c42d79a910ac39ef9cac5 GIT binary patch literal 4095 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 a!&tjGrD8>q literal 0 HcmV?d00001 diff --git a/rascal2/static/images/save-project.png b/rascal2/static/images/save-project-dark.png similarity index 100% rename from rascal2/static/images/save-project.png rename to rascal2/static/images/save-project-dark.png diff --git a/rascal2/static/images/save-project-light.png b/rascal2/static/images/save-project-light.png new file mode 100644 index 0000000000000000000000000000000000000000..8ec24818ffa80bb9111218d4c07e4dbd8a001767 GIT binary patch literal 1533 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 literal 0 HcmV?d00001 diff --git a/rascal2/static/images/undo.png b/rascal2/static/images/undo-dark.png similarity index 100% rename from rascal2/static/images/undo.png rename to rascal2/static/images/undo-dark.png diff --git a/rascal2/static/images/undo-light.png b/rascal2/static/images/undo-light.png new file mode 100644 index 0000000000000000000000000000000000000000..50172f76b3eaad0d0be8b7b55b792c6057593bdb GIT binary patch literal 4062 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 literal 0 HcmV?d00001 diff --git a/rascal2/static/style.css b/rascal2/static/style.css index ed6d7259..c6aab037 100644 --- a/rascal2/static/style.css +++ b/rascal2/static/style.css @@ -357,12 +357,12 @@ QTabBar::tab:selected { QTableView { - background-color: white; + background-color: @Window; } QTableView::disabled { - background-color: @Window; + background-color: @Midlight; } QTableView item @@ -389,7 +389,7 @@ QTableView QPushButton { *****************************/ QMenuBar { - background-color: white; + background-color: @Window; } QMenuBar:disabled, diff --git a/rascal2/theme.py b/rascal2/theme.py new file mode 100644 index 00000000..9144d8f8 --- /dev/null +++ b/rascal2/theme.py @@ -0,0 +1,87 @@ +from contextlib import suppress +import re +from PyQt6 import QtCore, QtGui, QtWidgets +from rascal2.paths import path_for, IMAGES_PATH, STATIC_PATH + + +def set_stylesheet(app): + + with suppress(FileNotFoundError), open(STATIC_PATH / "style.css") as stylesheet: + palette = app.palette() + replacements = { + "@Path": IMAGES_PATH.as_posix(), + "@Window": palette.window().color().name(), + "@Highlight": palette.highlight().color().name(), + "@Midlight": palette.midlight().color().name(), + "@Text": palette.text().color().name(), + } + style = re.sub("|".join(replacements), lambda x: replacements[x.group(0)], stylesheet.read()) + app.setStyleSheet(style) + + +class ThemeManager(QtCore.QObject): + def __init__(self): + super().__init__() + scheme = QtWidgets.QApplication.styleHints().colorScheme() + self.cur_style = 'light' if scheme == QtCore.Qt.ColorScheme.Light else 'dark' + + def eventFilter(self, obj, event): + """Catch close event for overlay widget""" + if isinstance(obj, QtWidgets.QApplication) and event.type() == QtCore.QEvent.Type.ApplicationPaletteChange: + + scheme = QtWidgets.QApplication.styleHints().colorScheme() + style = 'light' if scheme == QtCore.Qt.ColorScheme.Light else 'dark' + if style != self.cur_style: + set_stylesheet(obj) + print(type(obj)) + self.cur_style = style + return True + return False + + +THEMES = ThemeManager() + + +class IconEngine(QtGui.QIconEngine): + """Creates the icons for the application""" + def __init__(self, filename): + super().__init__() + self.name = re.split(r"-dark.png|-light.png", filename)[0] + self.update_icon() + + def update_icon(self): + """Updates the Icon""" + scheme = QtWidgets.QApplication.styleHints().colorScheme() + style = 'light' if scheme == QtCore.Qt.ColorScheme.Light else 'dark' + + filename = f"{self.name}-dark.png" if style == "light" else f"{self.name}-light.png" + path = path_for(filename) + self.icon = QtGui.QIcon(path) + + def pixmap(self, size, mode, state): + """Creates the pixmap + + :param size: size + :type size: QSize + :param mode: mode + :type mode: QIcon.Mode + :param state: state + :type state: QIcon.State + """ + self.update_icon() + return self.icon.pixmap(size, mode, state) + + def paint(self, painter, rect, mode, state): + """Paints the icon + + :param painter: painter + :type painter: QPainter + :param rect: rect + :type rect: QRect + :param mode: mode + :type mode: QIcon.Mode + :param state: state + :type state: QIcon.State + """ + self.update_icon() + return self.icon.pixmap.paint(painter, rect, mode, state) diff --git a/rascal2/ui/view.py b/rascal2/ui/view.py index 54ec00a3..e0fbb1dd 100644 --- a/rascal2/ui/view.py +++ b/rascal2/ui/view.py @@ -3,6 +3,7 @@ from PyQt6 import QtCore, QtGui, QtWidgets from rascal2.config import SETTINGS +from rascal2.theme import IconEngine from rascal2.core.enums import UnsavedReply from rascal2.dialogs.about_dialog import AboutDialog from rascal2.dialogs.settings_dialog import SettingsDialog @@ -98,13 +99,13 @@ def create_actions(self): """Create the menu and toolbar actions.""" self.new_project_action = QtGui.QAction("&New Project", self) self.new_project_action.setStatusTip("Create a new project") - self.new_project_action.setIcon(QtGui.QIcon(path_for("new-project.png"))) + self.new_project_action.setIcon(QtGui.QIcon(IconEngine("new-project-dark.png"))) self.new_project_action.triggered.connect(lambda: self.show_project_dialog(NewProjectDialog)) self.new_project_action.setShortcut(QtGui.QKeySequence.StandardKey.New) self.open_project_action = QtGui.QAction("&Open Project", self) self.open_project_action.setStatusTip("Open an existing project") - self.open_project_action.setIcon(QtGui.QIcon(path_for("browse-dark.png"))) + self.open_project_action.setIcon(QtGui.QIcon(IconEngine("browse-dark.png"))) self.open_project_action.triggered.connect(lambda: self.show_project_dialog(LoadDialog)) self.open_project_action.setShortcut(QtGui.QKeySequence.StandardKey.Open) @@ -114,7 +115,7 @@ def create_actions(self): self.save_project_action = QtGui.QAction("&Save", self) self.save_project_action.setStatusTip("Save project") - self.save_project_action.setIcon(QtGui.QIcon(path_for("save-project.png"))) + self.save_project_action.setIcon(QtGui.QIcon(IconEngine("save-project-dark.png"))) self.save_project_action.triggered.connect(lambda: self.presenter.save_project()) self.save_project_action.setShortcut(QtGui.QKeySequence.StandardKey.Save) self.save_project_action.setEnabled(False) @@ -122,7 +123,7 @@ def create_actions(self): self.save_as_action = QtGui.QAction("Save To &Folder...", self) self.save_as_action.setStatusTip("Save project to a specified folder.") - self.save_as_action.setIcon(QtGui.QIcon(path_for("save-project.png"))) + self.save_as_action.setIcon(QtGui.QIcon(IconEngine("save-project-dark.png"))) self.save_as_action.triggered.connect(lambda: self.presenter.save_project(save_as=True)) self.save_as_action.setShortcut(QtGui.QKeySequence.StandardKey.SaveAs) self.save_as_action.setEnabled(False) @@ -137,12 +138,12 @@ def create_actions(self): self.undo_action = self.undo_stack.createUndoAction(self, "&Undo") self.undo_action.setStatusTip("Undo the last action") - self.undo_action.setIcon(QtGui.QIcon(path_for("undo.png"))) + self.undo_action.setIcon(QtGui.QIcon(IconEngine("undo-dark.png"))) self.undo_action.setShortcut(QtGui.QKeySequence.StandardKey.Undo) self.redo_action = self.undo_stack.createRedoAction(self, "&Redo") self.redo_action.setStatusTip("Redo the last undone action") - self.redo_action.setIcon(QtGui.QIcon(path_for("redo.png"))) + self.redo_action.setIcon(QtGui.QIcon(IconEngine("redo-dark.png"))) self.redo_action.setShortcut(QtGui.QKeySequence.StandardKey.Redo) self.undo_view_action = QtGui.QAction("Undo &History", self) @@ -159,13 +160,13 @@ def create_actions(self): self.settings_action = QtGui.QAction("Settings", self) self.settings_action.setStatusTip("Settings") - self.settings_action.setIcon(QtGui.QIcon(path_for("settings.png"))) + self.settings_action.setIcon(QtGui.QIcon(IconEngine("settings-dark.png"))) self.settings_action.setMenuRole(QtGui.QAction.MenuRole.PreferencesRole) self.settings_action.triggered.connect(lambda: self.show_settings_dialog()) self.open_help_action = QtGui.QAction("&Help", self) self.open_help_action.setStatusTip("Open Documentation") - self.open_help_action.setIcon(QtGui.QIcon(path_for("help.png"))) + self.open_help_action.setIcon(QtGui.QIcon(IconEngine("help-dark.png"))) self.open_help_action.triggered.connect(self.open_docs) self.toggle_slider_action = QtGui.QAction("Show &Sliders", self) @@ -191,7 +192,7 @@ def create_actions(self): # Window menu actions self.tile_windows_action = QtGui.QAction("Tile Windows", self) self.tile_windows_action.setStatusTip("Arrange windows in the default grid.") - self.tile_windows_action.setIcon(QtGui.QIcon(path_for("tile.png"))) + self.tile_windows_action.setIcon(QtGui.QIcon(IconEngine("tile-dark.png"))) self.tile_windows_action.triggered.connect(self.custom_tile_layout) self.tile_windows_action.setEnabled(False) self.disabled_elements.append(self.tile_windows_action) diff --git a/rascal2/widgets/startup.py b/rascal2/widgets/startup.py index 5185edd6..441d31aa 100644 --- a/rascal2/widgets/startup.py +++ b/rascal2/widgets/startup.py @@ -50,11 +50,11 @@ def add_widgets_to_layout(self) -> None: def create_banner_and_footer(self) -> None: """Create banner and footer.""" self.banner_label = QtWidgets.QLabel() - self.banner_label.setPixmap(QtGui.QPixmap(path_for("banner.png"))) + self.banner_label.setPixmap(QtGui.QPixmap(path_for("banner-dark.png"))) self.banner_label.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) self.footer_label = QtWidgets.QLabel() - self.footer_label.setPixmap(QtGui.QPixmap(path_for("footer.png"))) + self.footer_label.setPixmap(QtGui.QPixmap(path_for("footer-dark.png"))) self.footer_label.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) def create_buttons(self) -> None: @@ -78,3 +78,16 @@ def create_labels(self) -> None: self.import_r1_label = QtWidgets.QLabel("Import RasCAL-1\nProject") self.import_r1_label.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) + + def changeEvent(self, event): + if event.type() == QtCore.QEvent.Type.PaletteChange: + scheme = QtWidgets.QApplication.styleHints().colorScheme() + style = 'light' if scheme == QtCore.Qt.ColorScheme.Light else 'dark' + if style == 'dark': + self.banner_label.setPixmap(QtGui.QPixmap(path_for("banner-light.png"))) + self.footer_label.setPixmap(QtGui.QPixmap(path_for("footer-light.png"))) + else: + self.banner_label.setPixmap(QtGui.QPixmap(path_for("banner-dark.png"))) + self.footer_label.setPixmap(QtGui.QPixmap(path_for("footer-dark.png"))) + + super().changeEvent(event) \ No newline at end of file From e060e1388c7b8aeb2110043ee9a9f71bf63414de Mon Sep 17 00:00:00 2001 From: Stephen Nneji Date: Thu, 19 Mar 2026 15:58:15 +0000 Subject: [PATCH 02/10] more style --- rascal2/static/style.css | 30 +++++++++++++++--------------- rascal2/widgets/plot.py | 19 +++++++++++++++---- rascal2/widgets/project/project.py | 8 ++++---- rascal2/widgets/startup.py | 3 +-- requirements.txt | 4 ++-- 5 files changed, 37 insertions(+), 27 deletions(-) diff --git a/rascal2/static/style.css b/rascal2/static/style.css index c6aab037..7c64ef74 100644 --- a/rascal2/static/style.css +++ b/rascal2/static/style.css @@ -5,7 +5,7 @@ } QDialog{ - border: 1px solid #ddd; + border: 1px solid @Midlight; } QToolBar { @@ -23,11 +23,11 @@ QSpinBox, QDoubleSpinBox, QAbstractSpinBox, QLineEdit, QComboBox { QStatusBar { min-height: 20px; - border-top: 1px solid #ddd; + border-top: 1px solid @Midlight; } QPushButton { - background-color: white; + background-color: @Button; text-align: center; border: 1px solid #828282; padding: 5px 12px 5px 12px; @@ -39,8 +39,8 @@ QPushButton { QPushButton:hover, QPushButton:focus { - color: black; - border-color: #3874f2; + color: @Text; + border-color: @Highlight; } QPushButton:hover{ @@ -64,16 +64,16 @@ QPushButton:checked { } QLineEdit { - color: black; - background-color: white; - selection-color: black; + color: @Text; + background-color: @Base; + selection-color: @Text; selection-background-color: @Highlight; - border: 1px solid #aaa; + border: 1px solid @Midlight; border-radius: 3px; } QLineEdit:read-only { - selection-color: black; + selection-color: @Text; selection-background-color: @Highlight; background-color: transparent; } @@ -255,12 +255,12 @@ ProjectWidget QPushButton{ *****************************/ TerminalWidget QPlainTextEdit{ - background-color: white; + background-color: @Base; } TerminalWidget QProgressBar{ border-radius: 0px; - border: 1px solid grey; + border: 1px solid @Midlight; text-align: center; } @@ -269,7 +269,7 @@ TerminalWidget QProgressBar{ *****************************/ ControlsWidget #FitSettings{ - background-color: white; + background-color: @Base; } ControlsWidget QPushButton { @@ -357,7 +357,7 @@ QTabBar::tab:selected { QTableView { - background-color: @Window; + background-color: @Base; } QTableView::disabled @@ -425,7 +425,7 @@ AbstractProjectListWidget QPushButton { AbstractProjectListWidget QTableView { border: 1px solid @Midlight; - background-color: white; + background-color: @Window; } #CountHeader::section { diff --git a/rascal2/widgets/plot.py b/rascal2/widgets/plot.py index 21948913..564900d9 100644 --- a/rascal2/widgets/plot.py +++ b/rascal2/widgets/plot.py @@ -8,8 +8,9 @@ from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg, NavigationToolbar2QT from PyQt6 import QtCore, QtGui, QtWidgets + from rascal2.config import SETTINGS -from rascal2.paths import path_for +from rascal2.theme import IconEngine from rascal2.widgets.inputs import MultiSelectComboBox, ProgressButton @@ -311,7 +312,7 @@ def make_interaction_layout(self): self.toolbar.hide() reset_button = QtWidgets.QToolButton(objectName="InteractButton") reset_button.setToolTip("Reset plot") - reset_button.setIcon(QtGui.QIcon(path_for("refresh.png"))) + reset_button.setIcon(QtGui.QIcon(IconEngine("refresh-dark.png"))) reset_button.clicked.connect(lambda: self.toolbar.home()) pan_button = QtWidgets.QToolButton(objectName="InteractButton") pan_button.setDefaultAction(self.toolbar._actions["pan"]) @@ -330,9 +331,9 @@ def toggle_settings(self, toggled_on: bool): """Toggles the visibility of the plot controls.""" self.plot_controls.setVisible(toggled_on) if toggled_on: - self.toggle_button.setIcon(QtGui.QIcon(path_for("hide-settings.png"))) + self.toggle_button.setIcon(QtGui.QIcon(IconEngine("hide-settings-dark.png"))) else: - self.toggle_button.setIcon(QtGui.QIcon(path_for("settings.png"))) + self.toggle_button.setIcon(QtGui.QIcon(IconEngine("settings-dark.png"))) @abstractmethod def make_control_layout(self) -> QtWidgets.QLayout: @@ -390,6 +391,16 @@ def export(self): dpi = self.figure.dpi if sx > 1920 else 1920 // self.figure.get_figwidth() self.figure.savefig(filepath, facecolor=SETTINGS.export_background_colour, dpi=dpi) + def changeEvent(self, event): + if event.type() == QtCore.QEvent.Type.PaletteChange: + scheme = QtWidgets.QApplication.styleHints().colorScheme() + if scheme == QtCore.Qt.ColorScheme.Light: + matplotlib.style.use("default") + else: + matplotlib.style.use("dark_background") + + super().changeEvent(event) + class RefSLDWidget(AbstractPlotWidget): """Creates a UI for displaying the path lengths from the simulation result.""" diff --git a/rascal2/widgets/project/project.py b/rascal2/widgets/project/project.py index bdd2743a..b14caf0d 100644 --- a/rascal2/widgets/project/project.py +++ b/rascal2/widgets/project/project.py @@ -11,7 +11,7 @@ from ratapi.utils.custom_errors import custom_pydantic_validation_error from ratapi.utils.enums import Calculations, Geometries, LayerModels -from rascal2.paths import path_for +from rascal2.theme import IconEngine from rascal2.widgets.project.lists import ContrastWidget, DataWidget from rascal2.widgets.project.slider_view import SliderViewWidget from rascal2.widgets.project.tables import ( @@ -119,7 +119,7 @@ def create_project_view(self) -> QtWidgets.QWidget: show_sliders_button = QtWidgets.QPushButton("Show sliders") show_sliders_button.clicked.connect(self.parent.toggle_sliders) - self.edit_project_button = QtWidgets.QPushButton("Edit Project", icon=QtGui.QIcon(path_for("edit.png"))) + self.edit_project_button = QtWidgets.QPushButton("Edit Project", icon=QtGui.QIcon(IconEngine("edit-dark.png"))) self.edit_project_button.clicked.connect(self.show_edit_view) button_layout = QtWidgets.QHBoxLayout() button_layout.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight) @@ -169,11 +169,11 @@ def create_edit_view(self) -> QtWidgets.QWidget: main_layout.setSpacing(20) self.save_project_button = QtWidgets.QPushButton( - "Accept Changes", icon=QtGui.QIcon(path_for("save-project.png")) + "Accept Changes", icon=QtGui.QIcon(IconEngine("save-project-dark.png")) ) self.save_project_button.clicked.connect(self.save_changes) - self.cancel_button = QtWidgets.QPushButton("Cancel", icon=QtGui.QIcon(path_for("cancel-dark.png"))) + self.cancel_button = QtWidgets.QPushButton("Cancel", icon=QtGui.QIcon(IconEngine("cancel-dark.png"))) self.cancel_button.clicked.connect(self.show_project_view) buttons_layout = QtWidgets.QHBoxLayout() diff --git a/rascal2/widgets/startup.py b/rascal2/widgets/startup.py index 441d31aa..e6e5f269 100644 --- a/rascal2/widgets/startup.py +++ b/rascal2/widgets/startup.py @@ -82,8 +82,7 @@ def create_labels(self) -> None: def changeEvent(self, event): if event.type() == QtCore.QEvent.Type.PaletteChange: scheme = QtWidgets.QApplication.styleHints().colorScheme() - style = 'light' if scheme == QtCore.Qt.ColorScheme.Light else 'dark' - if style == 'dark': + if scheme == QtCore.Qt.ColorScheme.Dark: self.banner_label.setPixmap(QtGui.QPixmap(path_for("banner-light.png"))) self.footer_label.setPixmap(QtGui.QPixmap(path_for("footer-light.png"))) else: diff --git a/requirements.txt b/requirements.txt index 652a092c..b3017b86 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ PyInstaller==6.9.0 -PyQt6==6.7.1 -PyQt6-Qt6==6.7.3 +PyQt6==6.8.1 +PyQt6-Qt6==6.8.2 ratapi==0.0.0.dev14 pydantic==2.8.2 PyQt6-QScintilla==2.14.1 From 45497f6dfb7599e1ce0dacb90ad06594e1d58c49 Mon Sep 17 00:00:00 2001 From: Stephen Nneji Date: Fri, 20 Mar 2026 17:58:16 +0000 Subject: [PATCH 03/10] rename images --- rascal2/static/images/banner-dark.png | Bin 13832 -> 8689 bytes rascal2/static/images/banner-light.png | Bin 8689 -> 13832 bytes rascal2/static/images/browse-dark.png | Bin 5895 -> 5948 bytes rascal2/static/images/browse-light.png | Bin 5948 -> 5895 bytes rascal2/static/images/cancel-dark.png | Bin 3858 -> 4601 bytes rascal2/static/images/cancel-light.png | Bin 4601 -> 3858 bytes rascal2/static/images/create-dark.png | Bin 1539 -> 1797 bytes rascal2/static/images/create-light.png | Bin 1797 -> 1539 bytes rascal2/static/images/delete-dark.png | Bin 1995 -> 2366 bytes rascal2/static/images/delete-light.png | Bin 2366 -> 1995 bytes rascal2/static/images/edit-dark.png | Bin 4255 -> 4293 bytes rascal2/static/images/edit-light.png | Bin 4293 -> 4255 bytes rascal2/static/images/footer-dark.png | Bin 164 -> 4247 bytes rascal2/static/images/footer-light.png | Bin 4247 -> 164 bytes rascal2/static/images/help-dark.png | Bin 2301 -> 2723 bytes rascal2/static/images/help-light.png | Bin 2723 -> 2301 bytes rascal2/static/images/hide-settings-dark.png | Bin 3580 -> 4284 bytes rascal2/static/images/hide-settings-light.png | Bin 4284 -> 3580 bytes .../{import-r1-light.png => import-r1.png} | Bin rascal2/static/images/load-dark.png | Bin 5168 -> 0 bytes rascal2/static/images/new-project-dark.png | Bin 1416 -> 1614 bytes rascal2/static/images/new-project-light.png | Bin 1614 -> 1416 bytes rascal2/static/images/redo-dark.png | Bin 3436 -> 4095 bytes rascal2/static/images/redo-light.png | Bin 4095 -> 3436 bytes rascal2/static/images/refresh-dark.png | Bin 3718 -> 4550 bytes rascal2/static/images/refresh-light.png | Bin 4550 -> 3718 bytes rascal2/static/images/save-project-dark.png | Bin 1382 -> 1533 bytes rascal2/static/images/save-project-light.png | Bin 1533 -> 1382 bytes rascal2/static/images/settings-dark.png | Bin 3070 -> 3622 bytes rascal2/static/images/settings-light.png | Bin 3622 -> 3070 bytes rascal2/static/images/stop-dark.png | Bin 601 -> 0 bytes rascal2/static/images/tile-dark.png | Bin 610 -> 620 bytes rascal2/static/images/tile-light.png | Bin 620 -> 610 bytes rascal2/static/images/undo-dark.png | Bin 3429 -> 4062 bytes rascal2/static/images/undo-light.png | Bin 4062 -> 3429 bytes rascal2/static/style.css | 12 ++++++------ rascal2/ui/view.py | 18 +++++++++--------- rascal2/widgets/inputs.py | 4 ++-- rascal2/widgets/plot.py | 6 +++--- rascal2/widgets/project/lists.py | 10 +++++----- rascal2/widgets/project/project.py | 6 +++--- rascal2/widgets/project/tables.py | 4 ++-- rascal2/widgets/startup.py | 10 +++++----- 43 files changed, 35 insertions(+), 35 deletions(-) rename rascal2/static/images/{import-r1-light.png => import-r1.png} (100%) delete mode 100644 rascal2/static/images/load-dark.png delete mode 100644 rascal2/static/images/stop-dark.png diff --git a/rascal2/static/images/banner-dark.png b/rascal2/static/images/banner-dark.png index ffe1a3cd74ce015b46ddbb586f87e73c416d2842..772a16f961e07eb3095c5871cba089fffa87f7fc 100644 GIT binary patch literal 8689 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 F{{W%5tiAvM literal 13832 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 diff --git a/rascal2/static/images/banner-light.png b/rascal2/static/images/banner-light.png index 772a16f961e07eb3095c5871cba089fffa87f7fc..ffe1a3cd74ce015b46ddbb586f87e73c416d2842 100644 GIT binary patch literal 13832 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 literal 8689 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 F{{W%5tiAvM diff --git a/rascal2/static/images/browse-dark.png b/rascal2/static/images/browse-dark.png index a89ceba0f1f0c3e6aa719df3b4b7ac11958f1a97..4cf6e694fa896ff90cbbc2c4110a580de5c43ea3 100644 GIT binary patch delta 5864 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 delta 5806 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 lZ#6E7QT|^N9&jk@wkVqy{|6w$R9*l8 diff --git a/rascal2/static/images/browse-light.png b/rascal2/static/images/browse-light.png index 4cf6e694fa896ff90cbbc2c4110a580de5c43ea3..a89ceba0f1f0c3e6aa719df3b4b7ac11958f1a97 100644 GIT binary patch delta 5806 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 lZ#6E7QT|^N9&jk@wkVqy{|6w$R9*l8 delta 5864 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 diff --git a/rascal2/static/images/cancel-dark.png b/rascal2/static/images/cancel-dark.png index 71041a0376cc9bc40dc7c14291600fc9fdffcd63..71a9b88c37f2a64208ac1da3b7b936837edbf344 100644 GIT binary patch delta 4558 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 delta 3809 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 diff --git a/rascal2/static/images/create-dark.png b/rascal2/static/images/create-dark.png index 99544ce8a90f409148fa5ef2625f6074c18be66d..4dd1a10ac1852289866a5dd959b0f3c83a2878f3 100644 GIT binary patch literal 1797 zcmaJ?4K&kh7~iz%?_<7`k2U|;EGs2(Mn0F>NBR)DwYp3#A6+G^S|+hk3fJ zfj|&c3Nc{T-<>l+b9R<&tuCE)S}_zF69UmOo--)qbcxw42xSJ4*FdVfkuPT#un59> z0t8aa)A_Ok4uNQ%rVySaM$an`A)uXE=`3Zt(;dK5j{7m-U zBkE426;~0wVxXOS6y(EyyX`VQqw-I2|KzplZ~^oBBk?7lB@;G$_^B>i8-#+U9z55& z()5B`RMe~M+<`-cSK;+n2M-`uU_y{_pSF#cI@j1oB5Wv~-Oqd4`>f^C7ybR)-MC{w zxo=upzGO5o#B_1$=cu-t1nxzk9HWeLbbsH=s$BK}_xrwuC3-m-41OWh6dlqQ#V&#!HHQi3;Mgrvsu?@A=m9@nH!66Q;13Gr{ zJUlNr;$E325KLf3G@$Fs<_f8qwgBXhIeomqqT@(>3V?1thZfyX4f$*_pe)>6`k*P- zfHL1z3udInfoN(#bzvH20L;Mv2n7vVyuoCSH)P&F0i#n)g{W*5fc9MOJZbPe}=pK@HryIN5DTX0Ngb%f_xU73+sjQ5u;zmh5riSgwy9S>IH zgJ~b*>4mBJn7%L1c)T#x%Pv;;jBSyq>zKh_#>JtYbI%4#n#4nm@;RpRYG2PgRg^zW z9rEe{dENN%{hfcrU%h^f9YuCLu@~Hi(#`qw=<5C3Eejl)P4_F=;Y=5rrepDXlEoLR zEVC`$59i-(3>aZ%hAFHEDMlTkuvmTApW5;#!PF&*;CP*@JX;qNLbBTp zl4V1d>wxE$$MXF9ye|*g=zcbL-N`~x$MP?5td0|nCsX_{qqp|)U6@vjbxv< zhUJgD#9nr#+EeuIiP1~fsHPvv&t_X&={Lj}A{LmZl@+_X%h8$f{0AxTz?(YNP3)(P z(|*Y8J+|79GPWmJICaXfwPq1EX`Qw?q+eFO#Am*1C&oGV$G$$Bjf|IkDV6mJ(`38+ zZVZN>S1F|y!KXFb8efO`6&@*POpq;XKrs(M-`4kSBJ$r zjCJxXam}8KkjvdMzs{uHiKD6~4`=7Ii~Iv?3{Kt4I}=VnFjC%o`NnpWx zS8^|xnfo@)Ohu?i^}?Xzy^NbE4+S7#z;+W>Wu%rBXP(TDJSZ8jIY95x*4RzmRK-h- zk&xn0?cvHRFbT*vm6&)<;&YuW>xd*|CIPgMvUZh9aBhu?$# e^iTL2OiqI88!KO#L7&^tVN~A@#OgJn+`j;F7TF^J literal 1539 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 diff --git a/rascal2/static/images/delete-dark.png b/rascal2/static/images/delete-dark.png index eaef9b00bc38f82e7dc312c2f613781a56a96249..17c58783ea0108c1d384ee20e4087b8efe8ec9df 100644 GIT binary patch delta 2253 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 J)LQ%8{6A?5$}Wqh$uy*3sQqz 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 diff --git a/rascal2/static/images/edit-light.png b/rascal2/static/images/edit-light.png index 6be929cf0d1620af940c9eca3024de8195ec000d..f0a6294bf8dac08e0a06e98ac3f7b6f020577a1c 100644 GIT binary patch delta 4208 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 delta 4225 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 delta 136 zcmbQPxP)&U>cv7h@- zA}f$@>FMGaQo;E4IwK>40SEJfzkjW>`Pp?VJk@}b$NvHekqPn)3=5k60GXms*cljB gDA+SFIJB}JvSj35_vYMgpg4o4tDnm{rv%0(0GZAt{Qv*} diff --git a/rascal2/static/images/footer-light.png b/rascal2/static/images/footer-light.png index d6cbaafeb594d7bfbd54cf32bd89e7e192938173..fd7681f26e2edf4c186c136c02bce9938f76751a 100644 GIT binary patch delta 136 zcmbQPxP)&U>cv7h@- zA}f$@>FMGaQo;E4IwK>40SEJfzkjW>`Pp?VJk@}b$NvHekqPn)3=5k60GXms*cljB gDA+SFIJB}JvSj35_vYMgpg4o4tDnm{rv%0(0GZAt{Qv*} literal 4247 zcmeHKYitx%6rR%bK^vgutu!(W)X>1}%T`qubHc!#5fp8$mW)&uR^AxcP4G(miK(gzCm-uB`EVeD&tf zo%FPA<)$~K`?Cu!9(;fIjz&JKF=y(pNZp*>_T0wf+0-L*D+}>h?zIDvi>}$TCT+jE z_J~4U$@;U49Y2Pxo3UvZ`^nMNZ<9u^_~vV@>-C4)b_cbh%g=}zn@cU1zO6a^=}Y@3 zKAM6}nJi=m&Mq|hCvSQO+rD*O)28(I-d&_|iP!8ekLyfv^*m77f@}K`B;iS^pdjEY zDCo-xX0q+E#nli0%Y}@AX3)*9mFIPsp?}%PPnjR8g`#dwD;zRTL zJ+Evz)!gvl8^7?#&B;erwU@Y`TTpUTUGmk@6K7k=kABPTzVO4n%AJWzu$m`2pYk5g zceP5L+qze;*fle!{X+YOKz*{x94+v&Ky^!?0d0k>_-_Z z$KShs$+Yu(kJPW(x1f3N_wH-yiOx{=vD&TtDt2Ve40KN6gzSy%w33~L4XbB#6}kV| zzBVu4^lW7|smy+1#Dw+dQ+if>{ngfMojLZLj3nma;0-?OhjU4{(_j3V`&QTSksV8u zn_D)um8E>2>wDwPmNS`W_K&Kp+;6QPbKuK_r=HhNt;;%fPx;9U%epPsUz$zE(y#0~ z_%_{La~;|7>dx<`baZ5FnHjix=tOJl7mwcPF4@;Mb>ktWC1XbHEe}MPT(Ih$}A^VfjTsLpe|-h27Yt);0{41UGg+?I-<_0#Gd#FIGVL;?fF! z@gm+SV0pP|t{4LeLO^5DSST1)nV1_hco{g>%>;%T5N(kgo9_>x1+oHAtI292ac@kj zGh?}Fs7nzig@sB*2s18*G&Ytsi(2z$G<;`ZRgR>b_0?!o6N{EHqDTUZ7Kt#e-#)K|7lOOQ8F|&!hWeEgXO@t2c z3`k)?j;gn&Dx?r7*H~Ro%5JyVZB{!)S}4-tj7M!S-Uk#F)}qczktRz#2z_H1m=2Vd z)hiVe7_=}Ora%F#CMy-P9CTwk1*&`YPy6A45?GD(uo{4*q}j%h7KXA{P&UR)Go)=6 zNiyUByevp!{lB60R^<%FN2`Ip4^T3kwBY@cL2-%RWC^`v^kwTJ{-%e^01Rj` z&@XO-tqXQSqQ4dP>ZLcG|MAni5C7u|ka~ELA?Z6T*RWheQea5n;p!TeYe)(V2|Qd~ z|CwBAw=Pp44F3T|;Z^B$$>~|}nw8AWEAk+t5D7W_#E8goXc-wPen3T#)KdMM@HB<| z42>z8&+kq7F)=gawzPdW@0tuvZl5Q=B6hCpER~6nsmPwPo;j@(6FZhKn>XW+tBpOM xCLqZCi*q4x%T)NdoQNO`ABTev#vsT$Ey*=_;%DQ!mz{?e#OE#bG|ySM{4Z~%@$&!x diff --git a/rascal2/static/images/help-dark.png b/rascal2/static/images/help-dark.png index 4377a962773075078b1c82a781013144633341ef..d512a035f9011e02829e455e3688fa51a5ae1218 100644 GIT binary patch literal 2723 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 AfdBvi diff --git a/rascal2/static/images/help-light.png b/rascal2/static/images/help-light.png index d512a035f9011e02829e455e3688fa51a5ae1218..4377a962773075078b1c82a781013144633341ef 100644 GIT binary patch literal 2301 zcmb_ddpHve7vH?oyU8-QH>5VVluMsmO$nR1ZOG+yzhy3Y%O%%(iCI%jxy(J8Te;2J z+)|;@MxiuvNhT4?kVN=iCi?XK(I4O6-+7*Me&_N$zw?-k%EIw`Upd%+fu8L|A)70|5J_e<~1gmnyfH1V%eqnE{ww#f7~96pXe*0|1R# z`@iEw0RV6g)*S8pH}K0O+vmNdOwTG3D~6CYcZMarf|!f4WkGI4+Oy4q;>iE{u zU&y+*ezI0T6{$nvmm4IPE>#vKu5A-c+DXZH=(gZ>dL>eMuh0L;yQAkC$ZgE4>(lW3 zr0)nHx0_j4U60ViIrqPqMlbVBe|&+*KMlV-XQ^W(q9+X}zl3KdzzBH*Y%)z2dOP~- z&Kp71MbS5s6mr6`ORX&9mCL+Pgf$6UKMGex!99X9Su zPWja0;Biz1aYzhPD{Xq?Ou@ed5~o`S8(?{_VU&|M{ho@k-yH=7{RZNvaU2%&lX6*k zUo0Kot}vz@H+FZ^OudCjSM3RV0oH1CdAT!eLa!(ZBpYaMN?mN53Use-sa>r|LZ6I# zha}Z6(k;glVeKCsT6W<(a8dx<%@Mtirh{EE;3&3WF_lH6G+-uR%K1CT~z=I$ydZpuj!J;53;dFwSc248|!G z#i3#fBOyJ8(7t9TfvQF6?;b@I>CB!l^8*^*$*xpAdzmKB7A9fK=)J5*-i*l10Hsrs z)0oEE1zp15YIE21c3P$T>2r5vPDFjT5p(QUEy2baSlIDi$@@dyK1pRRT;U8ffi1)v zIfHc%Zc7MU^7TgaOuJ_k=;QMaA!G4LOsN$2wr@@l|B2&xmsc^OkkQ#(KNF1X#plO9 z%T_*#-F_ZhvQXAIE@rmjPWhlDrG_suZBD;A%P z8fgVo==DM75-(K9W{7j1Ur&T3O06}LxjMibZODeM zPtICoCb|={zk4Iy+y=VkqJfaB5CY}tyvdQ8;(fCnD@h~En)&>|C)*8@7_Dnj=&W+;fgAYc zVQbG8IW)>Ya=C=Byt9>!OK*^&;D#~6&k^+jGI=GCXUJXnhHsXLD=p3N}Z3Be&Hlo0Z`H5;sv{E@L( z8p#ILAZv?^^&%B{g%{H`PpMkOIK%uvz(%dfm!(A&hk?3voqjq#69^H~QdRpYZ9zWk zq$I4}c5=K>4A`g0HK%A-y@64TTxp+tk@!|&ac2CY9Ky-CV zLFMtFxYfC8Fj;A1mmu7cE78|SyMemF@J#6+b7yncqn^fv27tPWgwdC+&x=Qm%Ox@3 z-h#FK*}_oaw*zZguHs4vum058jC#d`Ik(RiyV?53?msnbhWrPa)8X+U@u0srQa&sj zChkM4Q!@?gq-E(kQ_>lsGh59PFC5>tf0%nb;j(uW_HD4y>bfzJ9sOnsx@7Db|0fNP z;$u^ZerN7?X8z*& zAw7kE@rcC{LE$GDHqB-z+?@Ap*?EVPM=Vh<%}4)M7I9K22_aKGc>D|JK$VIItKN&s zNdp`0Qk}kjU#0qmrV!ov)KdO11I(4j*u8V{AtiIH%O9Fv{~o4g&(;r ztmv*npRT;Cl}zk^mWmO`CH1b?t-_#v(R1o+Dv0c@2*s_4?Q6=9Z+FnJp%AFvZ zn}Y)Dm=n1P{B=)T1Y+1FCkqFY1r~+Vn&<4ZheLF){~UU6%xP_UQ}-cxU=cGv;UTFO z-0RFu%u9%%VFN*dZI)5G2JxsprZ$_t;H4?>J!ORS#+b?Je|(49r%g6C!PbfkMj7Ia z>#*_1q(0uGof_Wc&WEJU+{(x|-aag8b1Ts_f$fl1^P=|S8j=T$V$Jd9w`v*TJ41NS zAe)O{HjcwH~zX7d$_FQy-i$`w;1>wpKnlU{;IJ2j}x0=I-Pgjt!RMPdihJ zwl00sGjOgARA4C7U-V^Zi8K*A8k0Y?e~9JnRC<1f8;uEreK^L!dL3s)ni>cMJ%jkc z?Vc7DoErVmykU*f;Ky8Fw^+NcKEIaZmovSv``e=7BqJj~wB~0LYjMt;Y34`z4?uGk AfdBvi literal 2723 zcmb_ddpHvc8{afF(=z1J<}x;Sp;(TC7{jJq!VII8TTI2lam~mzLUY*(=^&S^ZN}-K zxtv2u=BHKuJd>%L+-4Rh+`K>+4*;%SCk*`(j#(ygX;wIDzJ%ePD zF0=?ONXc@a^g!6mB1raQJW}&fW^iPairnQxI`}4CyQw{{CKHXuf)(sbXwAy|7yl<7 z+2@xYjaaEMrS3co;w%LmH*?pL-%I=ENKU6V$CvLe#+RkKE;wq;-P*G!^viCQ3^z2c zZ235-oUz1CgYnqxTN}nDrGDiJGl2|$sH+xQ+37ssT z;nO~ZIdjP6!`~;(Kse@I1oO4B`a>n8^D6(Bz>jL)i$$JlAU{>mY=){OlkC9Gq0Ih@ zQg>EDl0w4QE>2WL=zlC54DT@QnP}dK1Qmkusof#ArZQSy={dQr2xi<_46i`C_&F&{ zk~3wEIMN??Ma`qt)MT6@S$q?+dN&{@OGAUxxIE5lRN6cU-0F#%cV&5LN%X{6zuq>? z^t#yfdul>4d;{Up`o}8iiKQj}9}Dy1a(I(cCrKX-4GS%cl^8U~P;f!6=?1n@~(;mq%sr3Jn zFN8M%m;S!TMvib|+~T3Ps>__#xyO{^zce?U&J%sv7l2W*P=huKE~>cYnHP}8s&ALP z_gTKDsQuWeR>N?&kU=CZ>>)xfjCoA05q+JNCH;hrOrn-qHZ~UJz7CZUpX@{99sKp+ z3z1oWU{vNWiDbswwHkBcP3c`Y8G1Q?Zz6bHKo+^dk~O`u(81yS8TfCr11j`y|HCT^|tYzT8Ib|fPs^S&9o_UbbW;scmC^aCZ=p@C*v+%v;| zr?RA^sVUbTcH8%fjHx6OD`)J%r0ZtKM{^*UOd48hV90RsZoyTvbXDZPf=+6%FNvy_ zi~x7;-XPQSA(+_+lCrp+dFDCBL0qLE1@x3Vd?tn6AfJxI*)`4Kt*$MLzk;mJ1xOoRSINUFdL{4u z{kR0H@I5!26pr}SZZ0j#QJo;MSG4T}6_WTfgBHZpyfb~-)`iGdL4r$m=fS%ElKaRMo%|b&ugI)BcXxpW0j9e! zZj;=CXbe1z4$iXv=EV$uR=RWs4aO(4hZyG{muEq*29L49c;D>o)7s6+Y(k2~c#Dyi zki@aPA}=N#8vaGFKgC&>PaTL-@G*fl*_bO&r@DR`9<^f@Kvq^pO~8224x54SV9?wr zqMexQ){GW$dQcxRyM!Y$bAFPrCqD8JBGQF91#gX?*X+y&p<14638dbmM!gNsgAL}H z7^g+Q=&2J`JXFp!{UzpI(nU_pyN;7yB4@!H5;E5z5_-l_Bd4j8p6iXn2o$TvI~?t( zS$p5>eM-X7w<~Ysboxi-x6BH=DQV~DeeSewCnj8=*)F2Hy(!9V+R}nQs#JTX88*WF zYsxhW3R0l3bY4u93#?aXb$(hL*4xI7E$CvUb;3mTKYvoFTWtPS49H*0U)bujKLdrq z&bDX3tC(@x7_7OTlwYs4e5xx22J1b~+|Qj7(~sbqcrW$(8C^GguHv^uEfi85Ay$cwo0i^f@OkW6rVc_|&`h6w zmE~s21$VBsJkf;F@taa1G8r;8%(V~g8z3GMIZ}-I>$6y$Ztw{r8Ek)4y0lj^C6ave znwV&tfiC@e0^k@J{C|g^&WUN8X|_EDUyRH;_uRJIGRV(8oqBV0eYTt$(7ry=xxM5Q z42QNh)`oD^st*G-uFJOsDPn@T2%nL0#AMFgn$>F#g1PXyv~N|Mo+vLL=Vr*9FkwmP zeG|AR#zJekpkFH|$kH1S95 z;Z3VkZ>uhj2=mGldo_~hf1?%@%~Yb@;gC>E;lcp|Y9r-|dp#oS4lB`9oX(p|lgOl> zKO?tq@c9fsk!0w{`nJS`-fma@`dA&622__6u<#BvFeh91S+O__d0<~b0zDWSlf~k6 zBaQfXx-eH43SCR+q#8;<5=nM?>YDds!c*)q6|tgDfh;O--0>D8O*uk^Oh6+)ZI8?ta8(k};`#aBcdS&| z<{{fhElp=Z6`&+O?Y`2hdJogWQ|dFCz6+u##m2yn=QifHrW7xUfQJ5+NBkN}R3KK0Tx z=@^qPSxY^o^e@)hB}J;2eSost?tgdPul+|U+TkBJPLH=$_wFvufbDIq;SEr|cz39&9^9lh0G9?@YCnwegfbMBczi@vbxE~w@9rp-!sHFT2o(GM4v;U#B zbw5vbZ``=KO&(;yq37Sbzh`Npk9VJsF-I$P4H5*12SlGlC!4R&lr8qa9vpme zQ^fL9Lq+-l)er)tqJF>Mv1H{12vMis|2om<#cQad>y8n6R6_`mijw5-WfDqjvpmVi z4L2AFet-a}$l7$7gmSxCW2Zg&27_ItiY$LAFWb!0AV4Z|hkS(>!!t9<+Q_Qs+oGvn2)rI+4X=+|j4Iw}($a9rsGkSCY=L>VYPCh8L(XDA-76POK zW0b_*t8?6W$jCDqw=jQ69=HR^ow|-53;|Msn|F&lApC(_hxGd&&+SkR7Uo_K_S}C7 z`ir`b9t;6eg;mQWUuTZ4|9_<8sgg#al@WP;)qlH_OJwd#=vbzgs&pN0D%C2)dbqQCd4i4<+NT8odUA)+2Z4iCSs z?eBg5$lI3L?#ztL%^gQIdia#4cI?eTzP8J!^m}_>KJ4v%_Oj*)WsV}n-vE=E_3S5B zy*|;rzyEpD{p4M%HQlX8w|nzYHE{5?W2RQaDkuj=t&*{w!B=R>eXrUJ3%7rwJWP!8 zyUf8cCQV|;ZQX25t2B)Z#P`B;u)O1idAq%M_lIA1qs6|SU(GUyulSlMt=3} z7E6$b50Em2%&N-*hKsOmTi%gDU`#~}1?NNu$o~G9*FNq`gJ5UYHxhq|4G;uJg9r{1 zaRHK@!gAgaf}>enkfiCiXVQvbiwcmUmBpc6Bvy(Sm5X(l%)do&G?#l@FD337AVI{8 zAXy6mtv(VoUTTiIQbrLmBgje8tlTEJoYwQJB!r+Tma1iSa42q)lBu&IW{TCw1VFgV zuA64vl`zc`F@m@=k6M2=UxCujl`0BJ$`lLJD>z3=$0`{CV(l^koS{fRCINy6NM3-g zp52L{k}E6I&r0wBN%h<^0gP~2W%^kP9w3so^gx!&D$~#ObD)55dJf}+K2;Aog5dNV z#z~UvL3gtPPqA=%4&#KafgCnK;^?mdAz9nZ5hSm|hr8Y|R?vU#-e3X3l2^JvSp@% zyCAW(yo=6N(aC?%Z-$OGCOz=N0ctLEa4<0!ruO#!eC6hvYg7}%5yQ~&tD+~t+!Tl! zp1{e|&vth)cppSD4RqS=J5TrepLUh@)5ANYtjVQYTXeg(#}>uDh`VLEKcGiVX6%!; zkpAo93dhC1F5v~G8#SJm$sZa_t+=&9kDBU2ACl0-^(cS5(Y?9N4eGPGdt?T4=GC&v zbtj4D(X&Sllut=z1qTydygH_JN!11A;o;XMlbR3Y0aqwg5f$L$;BZsYm2UTD;VJ2~ ziSBaC>k@wONIIo9tM0bA;P6sWaL`NeUfz06KFPts#J7Rw2Tuu}a`EStrlwMl3vLiZ zo~Bl6@Irq{)1MwmpQcI=4i-%dw*0(Ay_dFl=ir^>;O{c|!d!pwlDK)HjQ}V4SuL}l zV!qR7SGrT^LhO_H5oCzJkjDIU&yt`N756|^2@aMo%&P|nzm45Uc5XV#pPQv{X&RS_ zB{*0#0m8c7?ryd&5fUU9AIPHeGY?OFP~4&9s0V+}7+RN<(-l*2u;}`vvwpwdN%Z$V zh2)_tlCKl16pX19 zoNj+%{*pWxY%x!?4zkw%PNBFUjxjh`v;h)wn&qY}TU63uVeaJ$DW7>v`ruXhoU5w3 znGsU70g?-|g?UQHrKVRrwIb^$TbW0XB6&-vbUn;rT*RXXi#kBk^!jFiEzF&=$%v@vu*6dLUC!SJ1vh7k*WpCQe{J?OK!XGUJNI^;^g%2pRg}KLM#IkdGx06*WxGS-C zHCuZ{3IS4(wQ0A=$NOBEyD8FUl?z2msb467lSI9yNFhK9QcAare7w(Ff@x|irPY52 zV`*7Jx2Q6r4iKN|8WSr}P=Rj=`btK$6{c4I{2}443RtaP$2irBGFj2~KXwk1pI>^* zge_>&rY^HeMx2C*1W&g~;QlQy+`lDwIiE>IH-hk6=upqU4;372k{;gExFuM{+}yE* zJL(<7 z5I3KHY_t_oGiqFO$!XpaEK5tPrtcQ+{IZiCBvAwi56LDq8ziOS&K0{dv$!Q#6!)UH zGHV}mp}Y@+b0U#M2M905_xHcN_I7u|qf48*cuYq0Rk+zC*Cf{#>$tDkYpH+h60y5j zJoKJw^)~c+;|jaijJ-F1<_*u^WM9FojlOroLphwND#g2l&};6jXI@bDugDQZ%3^$s z&e=SpS>F608MVwir*%t88M?a20O}=6`?2Ac4~b$12r~ zGHR0o2^JtOIQ--))qtv)%Ff&32iowOqenHAQn->u;ig!M#P)=ksS39Qvr&W7aD?Qj zO+#MAGTgyouo1*s`rU1z)ng%9L77{ESqhGxUp*jNbKAl_sH7zUo+^JSiJMcV1Fk<ASANsjD+L@pKCs25VIKF

n?Lq)m-M^~fy>DCjHP*OgSLDGxnZstS4zV#x-bUxILHxE2>f zfltyEcCz47DSg|bz=8${FVqQO6h&L1@~_Sc8X&<+@`HFGJBWXs6*NG&I=jL&3q~-; z2HoBr3ZBht0w$t?Og8JmBIDX^@BmRJY;#GF$cUI;vETv1c}SK_rIyN2FQHG*&k~XA z!F6M`{`S-S~lYq!;2EYxCRnnVKmHmHdb#HB250%UzK78faS0zcGMCO}w9Zaeo`*HeM+X^P@fxC@eX z1c@KxrZxTk$4)}mA5x+oPivzj-_Dh{V>L=NRTB^-)$wkTF-I$t-m~cUKlKu#Wvlg? zuPldrJNHgBHPNCfE8-(axbL4*cH5@(P9^GoZEDy~K)I1)p=1#R4i>Fx-Tf)|RoOZM zN^Q1Ux5R($Sd9`@ms=i|%N!(fQ1A^kZY^NUx4W&@;)+V_Zj*w8ol;Udm4~Nf?e^_e zu0GF!X5AXb7Dx@s`<{G@E>j}P!c>!tB>6}|n<_PLPU(32;8tb7VA}8`$=jUCC!h#hjG|hkSCuua_p~q{v@F=7NLXwBASkRc0g|;Awtmi01~p?h z20wq@p$I6WQ9Y)F#stXeoLVDKyH@9V393i}gbZ$Lme7a*;nBky@^X56v6rB=Hj1eW zZ*>zC)`$Q(@wAX0-Am9$@n)7##xq8>50GqO?rCZ@s+XWr@+(7HRIelY}7FKq_q)ppjU_WNHRT5TRqy_}~~ zn_N-{yH)-*=1%%Qh0pY_!x1H~QET2!TJQmpu`Cz>8ti|HMfc1PoLi>=0000sr&uAwV*)*WJv1xv-B*;tS81 zrw{+_@kO|{7vX37Rfor&y&%^#0Q>qbXtVjj{{EYzPc-J1o;-O!)a%Lt0dgiG2(}mf zQ+qLO|NkO9VsY?jd+}=f^*;Rn+Fqo0lz*{%$Qco41s1VE&Ru4gnHR{`g}n zOhqSJG53`EX$lEb2#|Osj6b%jMxI9s+CFY+0uUgvWNuJA%+FfQD20in+cIPnMhJJ~ zKYwV7lv>%~cuf;gbVi|F34ZJP)P5em9`LSKR_l@0$;`o!)6SpGwS9cBpG&dbv0?+n zZIjrp1RL|S``*>n%6{+T08@{nOb$BfMAxcO1!ZoZ>u30ESJZx1-_*bUTI6D4kzK4u z!LgsVkNRAFWgCb**sW+XTQT2kUM2gt7k?Ba zMFdFV;Mj*-mpTN@U9*LmaA2HQAweQOKx}aQm~4AQdmJ!#t^k`)M@3+qgE6-@NJJN$ z6CEISFwE1pbAmB@7~e?r6$ypln2gJrrSI=Ql0f2Gkg$z|_YKVnretZmwC|)9!4?%D z5tYSZT*Ot1m$jSM*M>!KOxI=4`hUR5iD^MXD(LS7pwzcgS`kStNJRkNoP>}RAfv1f z4iN-ZikA~0{-8(z_C=|pTtozjeKQao&?M$a2`McIx>vAE#7$F1fRs^y4TfaQ8xkOU zfP?~UGXi+*Xl44LNN7PS0@$yj%<>1wNDqI61P)cEA5hknbgZ7kNtsvGbAPuW6#*QV zbv7$^fS`K?$7Swjo^3 zU-4?CeoA=KYH7F_+sc0ZOxq%M_Iu6g%uvCQv+K|e^`&F;{A$X`Z8Px~!HmXl?QROb zl4E`9$(ibb$>R% zT;d0mH!=H%Lf4Axg3V~E1O*2Zcgn51>-q!gHI>Hqnddz=*KzAPqkm~yOA8JryLfd; zrhd#bC>koM4yvx->~fow$iP7&$gtiD9C3Cz92sDqzqz% zgNY6h<}N(hT`nGw_d4Uk9T1eNYqh;}RJ`(sO(i);#8vf_+a8TyP8WN6JZ2OmMKG0;FL<`7L{Y$mteE^`S|E(DF(- zy{V|+U_}Nb-9H?3!{Z zW3hLyl3S3RnPySltFY#ga$vsf@cdkhamBVCtn2_G;Ps` zl-SiOCLg59ouTblqvw=E%R^lfmha&#!DrM%c+WbIpAuV#K+j&zr>){zkVfLvoboxD z?|qgm!G0vcY9q<`F=KK1BqS%T5zRnvFrz|w=HhyZa-vQkTuQ|bKRtjs`Jf}Mo3=p~i`a{2gS zok%3n0m1`I+Z6wtFn1!Q{X238$P$boxwhDao8b~VE)hG6RY28u?*6=J-r++_x1bdK z&+fegx3Eg_t5CFBlMo_X5J7|SV=kJl#n4%T9er8g^@x{g_b zhkt|_p)mvpyG~g3zO$?W68gxcj5p3J)tX1jnKUVs`b?Q*I|e!o#*5jsc4nGlvjl_e z8#vEvMVaI~C;iEj8~cG0Q17km#UERDT1}bc3lLw1W=2!jBTLY=8eA#G7@k2Zaki?B zyPOM$IRk{J@5VBa?4xs*pbHG{O7Zb@Ie(L&hLE=+WcC(h+B$Zv+@!{4b2ai7V^_BE z2Sb45wGJ!s`q7>)-$L+%x7zSD_;d2pofkH!XhL*~MbkdAzT5Uf_8Q?I|PCR_Q^WEyML8G zVJhQBG!RQmNxPMhQCJf|lbmC#^9P9Aht%^(Wf&b1-76*~Cw)N}i-5Pzy?WjxB0$1X zYOiVd^9Dg0VP_hOscPZ|WlCk;Rsfj^to$yjs)^S6w@@LZBA6DRa{O-+M&#B|uKZ01 zk}0{XKYe;Z0?Dk+>&GLSUt4lYj8THhkS6<6d?r5BD`lainFrQxngIm_9^O=Th}bdZAIXqsNG7vQqSzq zc}ad-%hc*}MQ`QdE}4DIUG;e`vhBw(U4CAXJ0*&&A=9!Y;h^AMq5MJK?RG2dVk93+ zHlqo#7kBc{I~>6I%6=ZlZhto7r*jV}w#d?fAX$ey+v-?XVw4roPfK?8$Ucqn%I@I) zi?bX{QgjtE`=Q*pAZZa4jlYxfP)i=mq#3-Pn=gWpDF4o^6k3l+V{bt?IA)Z_ zp|b=v$%pc;kwzOJp?~$5Qwqn=64WH0CWtcT79{1G$Kuc*hQY7&E{rCKGTs15m*Dfh z#d8oKBQ@q0Bt?KM4-CwANuMRs1W_in7ptRnhvck3Nv<{4K;n%zK>F^H+Fda}uI=-3 z&;-%O+=BEughh9(x}iy;ZJIGe`Jv2lK58J^%m! s00000000000F#Xn7?IEk7{G-61>G-=A`r7#cmMzZ07*qoM6N<$g0eif?f?J) diff --git a/rascal2/static/images/hide-settings-light.png b/rascal2/static/images/hide-settings-light.png index eeeba442101bd34a37fa9b0302cea3aacfaafe1c..20f784bb2f42d2414d2c2274ef6cebb29df975ce 100644 GIT binary patch delta 3466 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 delta 4156 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 diff --git a/rascal2/static/images/new-project-dark.png b/rascal2/static/images/new-project-dark.png index 9f2f5dbef54b4ffc67971aaae2986902fa255d64..2d98164fd9309244e9e4308f89035ea588edad40 100644 GIT binary patch delta 1429 zcmV;G1#0?;3(gFXR)6D3L_t(|0qxyga@*D!fZ=m!^&&HoWZt+|u9OutT|t}`Bs-{g zPk-I+h-7sF85ohQMj!(ulI00x zphU79fee^P78A(8i6kZvL=q4P*F5atqz zKv-btkqCr^e&a~~IhmXuryaGI=$)2_U$1ODJ~~M|${qv)0+R{_B@y6$kR5bz_%Npq z>Dv7#tFQ-?3I!v7t9e^eCg0t^7`^v6=k#$Y>3WTf+2fPhpBH;SmuK(o@Wk^W*_q3# zH@#%KOP7dWUYuFn26i{slA#8E3% zd3t&Izt0n`5=evoKRG?Frqx%=KEICS;^OpiqBR0(&`+a(>pjP6O12kikw6-9HTida zAby-ycYHZHeUxa0KpHX~?LA6ssz$jJYl`=gKpImWr?r*)iB<@tG1*4mK>~q*Ksq6x zCt4wp4#>F(q$L7@fIu3Ob3ROTjzF5@Q>+dW2m}NI0f9h3ARUmW=_Jt#fj~eY5D-X1 za&fU@7YU?)A;l%@og@$l2m}HK$8|utmyYXMT64c%>bGz6k8#TE_@}-ixE@Tmzkl>R zu{41MZZ^vNX?b;kU5@8Hx0LH^t)kU+LJUFm3V;$>IXTe>6UY`A7fB(T>5+TPRZ@HdkSVn(O zoBYP_fKpXYOm19EAg{T)I{R}y%`go_{aWj3kBPYia_eR+=y2kA>Bmudl9)>%w|*Su z&xSdF>fXnRxdd`+_7Ui(X@GL@$s7XtRWaU^cL`+Za(a=NOCYZdboSJ=e4Us}Ah$}Y z{*eZMW_J4XWSY|R#9RWoRaNr{qEo9^LVIre&gSi zGW~v3l10!oHOiyqw}1qxf|);?S}pHEVQ!D0-iU{XRmFX zc37X+Nw)_HygzR*Z02&4hi>H33z z5ptD{U($kcRA!kDixQJzMtq zrK+BpI?_IYH0bc~gD1;OO}QD#^MPdvc7Q+{R!>ctR^`Kz%Ga+?E2$sXdzkubM)K?q zLmOIfJI(NMV&~a|KtLc65C{YW0s(=OTm=b|0u&2+b3e$YE3Lv^>_L+a1tld21ONa4 j0000000000pj&OFc delta 1231 zcmYL}Yfuvh5Xa4N=!KwO5~Pkuj9idXtx=$21>|H-ffwWZJXX*Cvn%Atxp|U*t{sWXlz`m0U*r#!}+amCAxTSxnoz;nA@} zuS7!cvWp25&GDy(7(Pr~7qB&}Cm8hG>h-k~5mkusIb9jM z%M%o>k~Ze|P>3oe_7uFk%!>!i7sxrl_A|dAbO`_O`7#C(wINo+?~N02fc&53)4SJj zdgqf$hF%7V?uJWN5K%=KA0dIP9x33PiJd^mjI5p{!1p*d!%meV9PrJ7C|n0>w%$$~Uu9^P1UCy%|IlQx} zBiAmpxiC(hP-*VC8RF-zE;sc4uAMG>CF2#XIzV<`>NvF2{5JB3ci*iPo6e7qq^_K( z;Bs-kh0peEpiLf4i!Z(Ivg2lXEuA+Bww4(AYh$hAA?_|jZHiMGpbL=|{`Doo?nSK# zks{J;HZJnqdqdt7#syn{T7i2ex*a^WPKDO`N7moOEMe>yS9K8>8-{hu<&LnMO%_8S z0Q5BnDj(6YxPk}5t7{y22(*ty9KYxFh(@5O9bo&%^7m(gt*6TwI*4j-A=2;c>#j1@ zShC%;4-!J38R)mp#w#^cPSv-0TvlhqSF{NkehVuU|9GM;Kzq?&eWkL!FXu|KPa-3T zDpGXbZ!kW&x6$32)YSg6zo8+qcgQfF2g#w+ekub)5j%yyc{`hG(qd@Af7S4&+(Qi(g;9A>2kIIui;$Q%5;UYT|GC;6fPd z69j#8^)NaZ6RWPiIDt7D@KW<4^U`$=S6kK^bGj*PKdft)l*F`|VveJ``I?!nvM1Deojt%|!tOM%io_ih3<0-}jgElEfd+ h-x~xzeU&Lo7SE$t>a^|2f%kVgFmE+KyfSQC#=ml|EQ|mE diff --git a/rascal2/static/images/new-project-light.png b/rascal2/static/images/new-project-light.png index 2d98164fd9309244e9e4308f89035ea588edad40..9f2f5dbef54b4ffc67971aaae2986902fa255d64 100644 GIT binary patch delta 1231 zcmYL}Yfuvh5Xa4N=!KwO5~Pkuj9idXtx=$21>|H-ffwWZJXX*Cvn%Atxp|U*t{sWXlz`m0U*r#!}+amCAxTSxnoz;nA@} zuS7!cvWp25&GDy(7(Pr~7qB&}Cm8hG>h-k~5mkusIb9jM z%M%o>k~Ze|P>3oe_7uFk%!>!i7sxrl_A|dAbO`_O`7#C(wINo+?~N02fc&53)4SJj zdgqf$hF%7V?uJWN5K%=KA0dIP9x33PiJd^mjI5p{!1p*d!%meV9PrJ7C|n0>w%$$~Uu9^P1UCy%|IlQx} zBiAmpxiC(hP-*VC8RF-zE;sc4uAMG>CF2#XIzV<`>NvF2{5JB3ci*iPo6e7qq^_K( z;Bs-kh0peEpiLf4i!Z(Ivg2lXEuA+Bww4(AYh$hAA?_|jZHiMGpbL=|{`Doo?nSK# zks{J;HZJnqdqdt7#syn{T7i2ex*a^WPKDO`N7moOEMe>yS9K8>8-{hu<&LnMO%_8S z0Q5BnDj(6YxPk}5t7{y22(*ty9KYxFh(@5O9bo&%^7m(gt*6TwI*4j-A=2;c>#j1@ zShC%;4-!J38R)mp#w#^cPSv-0TvlhqSF{NkehVuU|9GM;Kzq?&eWkL!FXu|KPa-3T zDpGXbZ!kW&x6$32)YSg6zo8+qcgQfF2g#w+ekub)5j%yyc{`hG(qd@Af7S4&+(Qi(g;9A>2kIIui;$Q%5;UYT|GC;6fPd z69j#8^)NaZ6RWPiIDt7D@KW<4^U`$=S6kK^bGj*PKdft)l*F`|VveJ``I?!nvM1Deojt%|!tOM%io_ih3<0-}jgElEfd+ h-x~xzeU&Lo7SE$t>a^|2f%kVgFmE+KyfSQC#=ml|EQ|mE delta 1429 zcmV;G1#0?;3(gFXR)6D3L_t(|0qxyga@*D!fZ=m!^&&HoWZt+|u9OutT|t}`Bs-{g zPk-I+h-7sF85ohQMj!(ulI00x zphU79fee^P78A(8i6kZvL=q4P*F5atqz zKv-btkqCr^e&a~~IhmXuryaGI=$)2_U$1ODJ~~M|${qv)0+R{_B@y6$kR5bz_%Npq z>Dv7#tFQ-?3I!v7t9e^eCg0t^7`^v6=k#$Y>3WTf+2fPhpBH;SmuK(o@Wk^W*_q3# zH@#%KOP7dWUYuFn26i{slA#8E3% zd3t&Izt0n`5=evoKRG?Frqx%=KEICS;^OpiqBR0(&`+a(>pjP6O12kikw6-9HTida zAby-ycYHZHeUxa0KpHX~?LA6ssz$jJYl`=gKpImWr?r*)iB<@tG1*4mK>~q*Ksq6x zCt4wp4#>F(q$L7@fIu3Ob3ROTjzF5@Q>+dW2m}NI0f9h3ARUmW=_Jt#fj~eY5D-X1 za&fU@7YU?)A;l%@og@$l2m}HK$8|utmyYXMT64c%>bGz6k8#TE_@}-ixE@Tmzkl>R zu{41MZZ^vNX?b;kU5@8Hx0LH^t)kU+LJUFm3V;$>IXTe>6UY`A7fB(T>5+TPRZ@HdkSVn(O zoBYP_fKpXYOm19EAg{T)I{R}y%`go_{aWj3kBPYia_eR+=y2kA>Bmudl9)>%w|*Su z&xSdF>fXnRxdd`+_7Ui(X@GL@$s7XtRWaU^cL`+Za(a=NOCYZdboSJ=e4Us}Ah$}Y z{*eZMW_J4XWSY|R#9RWoRaNr{qEo9^LVIre&gSi zGW~v3l10!oHOiyqw}1qxf|);?S}pHEVQ!D0-iU{XRmFX zc37X+Nw)_HygzR*Z02&4hi>H33z z5ptD{U($kcRA!kDixQJzMtq zrK+BpI?_IYH0bc~gD1;OO}QD#^MPdvc7Q+{R!>ctR^`Kz%Ga+?E2$sXdzkubM)K?q zLmOIfJI(NMV&~a|KtLc65C{YW0s(=OTm=b|0u&2+b3e$YE3Lv^>_L+a1tld21ONa4 j0000000000pj&OFc diff --git a/rascal2/static/images/redo-dark.png b/rascal2/static/images/redo-dark.png index 80d9a6adbb93e68e3992ac3aa6491e19d672c48d..858121862d23e7a3269c42d79a910ac39ef9cac5 100644 GIT binary patch delta 4003 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 b05I+U)k-_;-A%3V00000NkvXXu0mjf4UUVe diff --git a/rascal2/static/images/redo-light.png b/rascal2/static/images/redo-light.png index 858121862d23e7a3269c42d79a910ac39ef9cac5..80d9a6adbb93e68e3992ac3aa6491e19d672c48d 100644 GIT binary patch delta 3345 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 b05I+U)k-_;-A%3V00000NkvXXu0mjf4UUVe delta 4003 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 a!&tjGrD8>q delta 3668 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 diff --git a/rascal2/static/images/refresh-light.png b/rascal2/static/images/refresh-light.png index 24c5d1aeff66d38e7b86cbc966a3f1dfc89ada16..f2bd4fb9884555b92e046dcc5fbee84256c817d0 100644 GIT binary patch delta 3668 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 literal 4550 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 a!&tjGrD8>q diff --git a/rascal2/static/images/save-project-dark.png b/rascal2/static/images/save-project-dark.png index b86f515ecfbd76a5d1df429c8f6aa76dfcace9ff..8ec24818ffa80bb9111218d4c07e4dbd8a001767 100644 GIT binary patch delta 1312 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 Ur7l#le`5dwPgg&ebxsLQ0HW4t@Bjb+ literal 610 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5k4M?tyST_$yaTa()7Bet#3xhBt!>l*8o|0J>k<-U8mIEGX(zP)uY^RR<}!^OgYct7)Xo_CK- z)qGH0$HF;H;Qie1CU4UDb{hkAV*`KQndN_~+@H_<|Hkx1&sgo5anvveyQ`PidG0@J^X$>L zeG}p<#nS(&CNw(;aIiEE7!mR8$hMiK6^7l(HxvX|m>h8t*y0N)_UEE`1(R^YLMvZj QVqswLboFyt=akR{0GkYxl*8o|0J>k<-U8mIEGX(zP)uY^RR<}!^OgYct7)Xo_CK- z)qGH0$HF;H;Qie1CU4UDb{hkAV*`KQndN_~+@H_<|Hkx1&sgo5anvveyQ`PidG0@J^X$>L zeG}p<#nS(&CNw(;aIiEE7!mR8$hMiK6^7l(HxvX|m>h8t*y0N)_UEE`1(R^YLMvZj QVqswLboFyt=akR{0GkYx@VR8*`Z)1spEMo;F-k;^AB3!Nt2q`@?rnH+HMN;{GPH z)=M%^Y!nk|*nf88*5ARz?-j^Z~@e(qS$s9$6iU$!$=eljDYsMw+JKN5=1zP8w5dOi2_ zor&ceOWEH)Xr8>0F?#X^MrHmP$?E5i*YZ|Oy!><1>9@ZoD>4aB)@Nb`Vp*}v{L&v~ Ur7l#le`5dwPgg&ebxsLQ0HW4t@Bjb+ diff --git a/rascal2/static/images/undo-dark.png b/rascal2/static/images/undo-dark.png index 89fd5064c80707fdf4f5b23346316552b3c9b0fd..50172f76b3eaad0d0be8b7b55b792c6057593bdb 100644 GIT binary patch delta 4015 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 Iw4CDp1M=9z&j0`b delta 3377 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 diff --git a/rascal2/static/images/undo-light.png b/rascal2/static/images/undo-light.png index 50172f76b3eaad0d0be8b7b55b792c6057593bdb..89fd5064c80707fdf4f5b23346316552b3c9b0fd 100644 GIT binary patch delta 3377 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 delta 4015 zcmai%cRUmhAICc#`O$G^W=7_ftTM~YIAo8U5n0)@Y$xJM#yPS_a^|7@gtNy*NA}1j zoQz9%k$H}%=ild_=lkF1^?7~%eZODd4W4BIq!pYw82UidG7PZ0 zZmXtTL|!iroZ@CVIjXX-a?k-@`aj18w;%w1MO9JnhIaMv%@9`JCbb@oo_k?V*Kc!7 z4GcKnNG;7f%gwD4Qdc|K-MR!}!S!>nO2iSZEJLU4?<8vQz4S}7{x@f+;o=poXslb;WaGt(2`m^+>^bqo z;F+^(+^!?nM~*nyazhU>@Moxtkr?!FOU~mHKK6e;3+6q}km1tC9A>m>ojhF_wK3FU z(`h~V-s3M7SLMosTwf>giYY9FTrt25_w}tbxvn_nxYx77n)>-Ii7XB}DY-)-I?!q-eRQ!w=V+oRydK9{FWKHBPDi zkqUg?cMPB7t!mYxjJea10ye*VXGoYpdF#l4H9AQKn2=pM(7#M zZTJ5m{1%z)EVY${EBsNxSIxK2+Df-MQOa-OZi{n>IEdpdYqj=WOgaX?D2_1}PtM(a z=^||8?E#BUpMydG;((Tz$wF1WrSnKJ#;o|#P+V@K9sIt%|DB&GAqdB#K$@VhB+1C` ziE1HjNKU%$IOa7@Y)N3?y3BATPpZf?`eIj`1p_U)EXM;kFXI&%_g3m__rnZmj%%$+ z2tp8`0QD;x=kHSwdI5=+xhSETO-E9tOmVO{0J;+MHOqW_Vv922kDpB5j}#~!@_N4e z-NEb>)eEXWrGD_{tmxJIePCa&E=)fNBdxN86B@qSUNM+UaN#EhNZB@uzKkm)SJ@BAdwHod#}?1 z0WW-HYX_@UX=wm2e$H7PnSO&7010OW^T2@1w&MRd_wjQ8gEDHcp>puhr^58~grvs3 zh-)%5G~wO_I)e-4{D2o{bGcHFk9;{c#^@w2*}xH(mT4jMVcMrGE7tQYU^2ASyoEG< zN>4-Mm@c)a_K@0o&z6Ok(;1=$YJ?Ds_U5IU-le_RII|ONW45Fe3#?<0*6%*?L#vlt zTPimlD1Iu+wmN(`nETbX=9ckuW~K};mcHUlvs&f%KhSz%gBe!F>33XltmAKJ5ap^K z$8gVOy#irDThl2*jv9~3TwtJYLGoNm`7;XdeG8q_0*|OSv(o}`H{6)%4Vm4CBDE_P zY?sSsNqlt{Xh+Ts^lAHyZUL?9809dRF*tkW7!}h?wl=Du9Pmlwe}*vaDitYk%zb=$ zYZJ0YrYS5nUusUbzPb#nR&SrYJJXOw2iGAbME!nRWCbJ&%6H3U%3VbNv{QPpq|jn$ z*rndM8ZA1VLKBkBi2B6xb~Y!YqSLpo4GMdhHRIbC9PzA)G2Dv91K|AQItM#%i^v>dY#tq+L38x(-0miSPy!okX?TiUVyscGLaUm>+9XQIhKJR5>8Mzk zDo4BzqsL=2=X3Kb#5jz2Q1Ap+RNgm6Vy2J>QLtlq#y9^M1mT-*l-C^ip|#*atzvJ^ zG+*lL3&=abpoyY8-IQ7gw=^GIgyrI=^^Z$l2jgnA5}8OmF#eBe zCg5tld!l#HRM(=3Fl8)CowN;+TbyVb6&~$V8L6?=(^!1^F`5+-2Fk4=9(Nj}HqPaM zpG#JM=M`(K?mhknb*(Wu_X<&2k)N~saZ7NUHwe6zej%LdR=Gj)o>YOCI&(twIq#`) z?W#V zNqFzibri4%plXIFrvslA!`6KJecYQvJcj8Il4XMMp3J?jYOH6%!u*Q>hVA@}^V&CD zwY{KM3K0Cm$PpbedbCOJ!rCq-Bb>B-KAiBzrh%j~$gEIYq9SHD$Ic%7o}2xGG$fpaR15 zR(BJJtD_9z##2al!#d6ewqGEMWms>Gmyp211)FkRIsNpFk_7@ss6|H$9pQb5PrfDU z$40U0uc*hehZ)`THRz4081;8;Cups_*^5c7{xbH^*M)^#cV)wos2j^bf*4L7Nmwws z*;2|Vl^f#ARU{sCmTIyJ?R7?=4hp183(EeC-P?mFe(myxU%xDWc;j9Wka>ap;38`- z)d=D9{E;X^fL)SLD-oA&{TMH>yEB3NLeKznxbomI|K!1zRVD3oq`fT z_=mUo?B?3ff-nB49_A;xR%{(pjpcYf!e+(>o>zt? zX(W6kQHo?pay|qjWgU3_UA>=;>aG%#saIa;GJ^^V%E;C|aHM_7{|lt8;q>IT;uYf? zw%Cxr7=C@i3C;$Cb8?9BtYQ`OgulF;BxA0uV)au0u9VBI_LAC``snG6TxG~4vag%W zXBrc(^+OSyC-$Bw-QT^0jx=6=GX%c#Q|v{rUnpXZ7^2dsf3YOg74p}$L;^j8K3OWs zcm}VSRIscaAKMMg48`4a-xpVY8QcBHm=IV4#%c7n2DC=b+Sq}{m4oZCSni9u_xkNj-ch&XyD0yZz5>`2LKP8}stLyY(i2wt^ro#w88p@3?R1rJLXJ z@4=1j%eZDmI_Uv2Pn$WN$gU!%+Cs^cF9rvyy~b22lA6}#zew&T>l#($7W&w>#-2_1 zFZMDuTD!WxVHinVFMFMGQ89kAF=M0Wdl>`%8MVLGXVQ^?6cLBde{o09ynB+dE!9)@ zNFp=F1-wL&=|}FkA8uRKo;y}}>`*%?WK_RA@{SFbS zroBRYSW)a4AotS>*PFuC*FN7-jd8IcIz3X{mU1FG!nN@*(9HR=+_Ns(>vN@l!m*%x z60AN|aXu2238wHeOZl|6>x?t;Lp3X0*}H~6o-}au?wW5S4ax&?ST)M~S+Wa|kQ%fY zJulX0H@&mR6fSYnj^DwO7-MG!0)x;pfb^JnrBmeoWPR( z>#YwvLJTb6ZN+vNzV~5= z4DB%cCwjDYh6fuD2hEUx-{=+W<>|(^Wo7J*Im6ndSulpCaJx(;N8eM>fweg~6!DVRIai@}I ziD*iTLzt*ZSl9G}y0g5K7zjDbN53ZW)6E`AEV%_(`lvxZ0K^Ro9}Bf7L~9V(`dydV z*kS+L&6Ji*>w_P*+EdF8E|}N@B~7>`FRQ{oMRYzoa(OeNqv;d+VTS17G9)l?3SdvY zMSsf0#4@F#-xZ8ChH;!UL?lLy;D6RrU<>GT@aHvoCVumMD+VKX2fF zkeyO=%Ob~$4622=#BV$A@OE8qdJ#veVpgwg{8(5o61bSma?6GLbKUwJIG8{IlTa_6))!PP$D{!+&brL|VyAMAQNQ>QzS{m^H*tW57iy_D#c zq&%H}5E5rp!T6EY>hYb+r>sY_IY)5A1HFV+ek>WlGSRLlRQ!;rysen|+E@NuqM_|_ zgLzVH@*fpMz5ylrA~fJ95|Zjh)R#@P%zg_Iq_OB}5VDF#9i$+7?0e-?CTLxO(*!04 z$Gf*7z8Vi;51+D;vXaGj?+)c7ubqoo?ZhVIG3`E>e-a&R3=tMTI!Y#YZ^20tM*x~2 zKwJ=Q*>i$Yk=)gay0}<-fM&_W6&E0&MRP80&qYE<)s4BIo<@$&Hf2-apZ&l!T+C}u zav{y_r>tLmtdXE?x;RWq%L-ae+t)T9~G zmCy6h?N13_fvP}PI^DMk!f2z9IVVL zuY9HpZ)8cF)7H2*u^m-4Jb5OKYoIl1q4}SOSmJ;3B@O*^=E==C=)Z>&M*r=gI>ry` Iw4CDp1M=9z&j0`b diff --git a/rascal2/static/style.css b/rascal2/static/style.css index 7c64ef74..e78482a5 100644 --- a/rascal2/static/style.css +++ b/rascal2/static/style.css @@ -133,15 +133,15 @@ StartUpWidget QLabel { } StartUpWidget QToolButton#NewProjectButton{ - image: url(@Path/create-light.png); + image: url(@Path/create-dark.png); } StartUpWidget QToolButton#ImportProjectButton{ - image: url(@Path/browse-light.png); + image: url(@Path/browse-dark.png); } StartUpWidget QToolButton#ImportR1Button{ - image: url(@Path/import-r1-light.png); + image: url(@Path/import-r1.png); } /***************************** @@ -153,15 +153,15 @@ StartupDialog #CancelButton { } StartupDialog #BrowseButton { - icon: url(@Path/browse-dark.png); + icon: url(@Path/browse-light.png); } StartupDialog #CreateButton { - icon: url(@Path/create-dark.png); + icon: url(@Path/create-light.png); } StartupDialog #LoadButton { - icon: url(@Path/load-dark.png); + icon: url(@Path/load-light.png); } StartupDialog > QLabel { diff --git a/rascal2/ui/view.py b/rascal2/ui/view.py index e0fbb1dd..bbd20d99 100644 --- a/rascal2/ui/view.py +++ b/rascal2/ui/view.py @@ -99,13 +99,13 @@ def create_actions(self): """Create the menu and toolbar actions.""" self.new_project_action = QtGui.QAction("&New Project", self) self.new_project_action.setStatusTip("Create a new project") - self.new_project_action.setIcon(QtGui.QIcon(IconEngine("new-project-dark.png"))) + self.new_project_action.setIcon(QtGui.QIcon(IconEngine("new-project-light.png"))) self.new_project_action.triggered.connect(lambda: self.show_project_dialog(NewProjectDialog)) self.new_project_action.setShortcut(QtGui.QKeySequence.StandardKey.New) self.open_project_action = QtGui.QAction("&Open Project", self) self.open_project_action.setStatusTip("Open an existing project") - self.open_project_action.setIcon(QtGui.QIcon(IconEngine("browse-dark.png"))) + self.open_project_action.setIcon(QtGui.QIcon(IconEngine("browse-light.png"))) self.open_project_action.triggered.connect(lambda: self.show_project_dialog(LoadDialog)) self.open_project_action.setShortcut(QtGui.QKeySequence.StandardKey.Open) @@ -115,7 +115,7 @@ def create_actions(self): self.save_project_action = QtGui.QAction("&Save", self) self.save_project_action.setStatusTip("Save project") - self.save_project_action.setIcon(QtGui.QIcon(IconEngine("save-project-dark.png"))) + self.save_project_action.setIcon(QtGui.QIcon(IconEngine("save-project-light.png"))) self.save_project_action.triggered.connect(lambda: self.presenter.save_project()) self.save_project_action.setShortcut(QtGui.QKeySequence.StandardKey.Save) self.save_project_action.setEnabled(False) @@ -123,7 +123,7 @@ def create_actions(self): self.save_as_action = QtGui.QAction("Save To &Folder...", self) self.save_as_action.setStatusTip("Save project to a specified folder.") - self.save_as_action.setIcon(QtGui.QIcon(IconEngine("save-project-dark.png"))) + self.save_as_action.setIcon(QtGui.QIcon(IconEngine("save-project-light.png"))) self.save_as_action.triggered.connect(lambda: self.presenter.save_project(save_as=True)) self.save_as_action.setShortcut(QtGui.QKeySequence.StandardKey.SaveAs) self.save_as_action.setEnabled(False) @@ -138,12 +138,12 @@ def create_actions(self): self.undo_action = self.undo_stack.createUndoAction(self, "&Undo") self.undo_action.setStatusTip("Undo the last action") - self.undo_action.setIcon(QtGui.QIcon(IconEngine("undo-dark.png"))) + self.undo_action.setIcon(QtGui.QIcon(IconEngine("undo-light.png"))) self.undo_action.setShortcut(QtGui.QKeySequence.StandardKey.Undo) self.redo_action = self.undo_stack.createRedoAction(self, "&Redo") self.redo_action.setStatusTip("Redo the last undone action") - self.redo_action.setIcon(QtGui.QIcon(IconEngine("redo-dark.png"))) + self.redo_action.setIcon(QtGui.QIcon(IconEngine("redo-light.png"))) self.redo_action.setShortcut(QtGui.QKeySequence.StandardKey.Redo) self.undo_view_action = QtGui.QAction("Undo &History", self) @@ -160,13 +160,13 @@ def create_actions(self): self.settings_action = QtGui.QAction("Settings", self) self.settings_action.setStatusTip("Settings") - self.settings_action.setIcon(QtGui.QIcon(IconEngine("settings-dark.png"))) + self.settings_action.setIcon(QtGui.QIcon(IconEngine("settings-light.png"))) self.settings_action.setMenuRole(QtGui.QAction.MenuRole.PreferencesRole) self.settings_action.triggered.connect(lambda: self.show_settings_dialog()) self.open_help_action = QtGui.QAction("&Help", self) self.open_help_action.setStatusTip("Open Documentation") - self.open_help_action.setIcon(QtGui.QIcon(IconEngine("help-dark.png"))) + self.open_help_action.setIcon(QtGui.QIcon(IconEngine("help-light.png"))) self.open_help_action.triggered.connect(self.open_docs) self.toggle_slider_action = QtGui.QAction("Show &Sliders", self) @@ -192,7 +192,7 @@ def create_actions(self): # Window menu actions self.tile_windows_action = QtGui.QAction("Tile Windows", self) self.tile_windows_action.setStatusTip("Arrange windows in the default grid.") - self.tile_windows_action.setIcon(QtGui.QIcon(IconEngine("tile-dark.png"))) + self.tile_windows_action.setIcon(QtGui.QIcon(IconEngine("tile-light.png"))) self.tile_windows_action.triggered.connect(self.custom_tile_layout) self.tile_windows_action.setEnabled(False) self.disabled_elements.append(self.tile_windows_action) diff --git a/rascal2/widgets/inputs.py b/rascal2/widgets/inputs.py index 6a7eb969..9a5ee3df 100644 --- a/rascal2/widgets/inputs.py +++ b/rascal2/widgets/inputs.py @@ -674,13 +674,13 @@ def __init__(self, parent=None): self.setLayout(layout) self.select_menu = QtWidgets.QMenu() - add_button = QtWidgets.QToolButton(icon=QtGui.QIcon(path_for("create-dark.png"))) + add_button = QtWidgets.QToolButton(icon=QtGui.QIcon(path_for("create-light.png"))) add_button.setMinimumWidth(40) add_button.setSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.MinimumExpanding) add_button.setPopupMode(QtWidgets.QToolButton.ToolButtonPopupMode.InstantPopup) add_button.setMenu(self.select_menu) - delete_button = QtWidgets.QToolButton(icon=QtGui.QIcon(path_for("delete-dark.png"))) + delete_button = QtWidgets.QToolButton(icon=QtGui.QIcon(path_for("delete-light.png"))) delete_button.setMinimumWidth(40) delete_button.clicked.connect(self.delete_items) delete_button.setSizePolicy( diff --git a/rascal2/widgets/plot.py b/rascal2/widgets/plot.py index 564900d9..eb4845fd 100644 --- a/rascal2/widgets/plot.py +++ b/rascal2/widgets/plot.py @@ -312,7 +312,7 @@ def make_interaction_layout(self): self.toolbar.hide() reset_button = QtWidgets.QToolButton(objectName="InteractButton") reset_button.setToolTip("Reset plot") - reset_button.setIcon(QtGui.QIcon(IconEngine("refresh-dark.png"))) + reset_button.setIcon(QtGui.QIcon(IconEngine("refresh-light.png"))) reset_button.clicked.connect(lambda: self.toolbar.home()) pan_button = QtWidgets.QToolButton(objectName="InteractButton") pan_button.setDefaultAction(self.toolbar._actions["pan"]) @@ -331,9 +331,9 @@ def toggle_settings(self, toggled_on: bool): """Toggles the visibility of the plot controls.""" self.plot_controls.setVisible(toggled_on) if toggled_on: - self.toggle_button.setIcon(QtGui.QIcon(IconEngine("hide-settings-dark.png"))) + self.toggle_button.setIcon(QtGui.QIcon(IconEngine("hide-settings-light.png"))) else: - self.toggle_button.setIcon(QtGui.QIcon(IconEngine("settings-dark.png"))) + self.toggle_button.setIcon(QtGui.QIcon(IconEngine("settings-light.png"))) @abstractmethod def make_control_layout(self) -> QtWidgets.QLayout: diff --git a/rascal2/widgets/project/lists.py b/rascal2/widgets/project/lists.py index a39b3914..f6181e61 100644 --- a/rascal2/widgets/project/lists.py +++ b/rascal2/widgets/project/lists.py @@ -11,7 +11,7 @@ from rascal2.config import SETTINGS from rascal2.core.readers import readers -from rascal2.paths import path_for +from rascal2.theme import IconEngine from rascal2.widgets.delegates import ProjectFieldDelegate from rascal2.widgets.inputs import RangeWidget @@ -135,12 +135,12 @@ def __init__(self, field: str, parent): button_layout = QtWidgets.QHBoxLayout() button_layout.setContentsMargins(0, 0, 0, 0) button_layout.addStretch(1) - self.add_button = QtWidgets.QToolButton(icon=QtGui.QIcon(path_for("create-dark.png"))) + self.add_button = QtWidgets.QToolButton(icon=QtGui.QIcon(IconEngine("create-light.png"))) self.add_button.setHidden(True) self.add_button.pressed.connect(self.append_item) button_layout.addWidget(self.add_button) - self.delete_button = QtWidgets.QToolButton(icon=QtGui.QIcon(path_for("delete-dark.png"))) + self.delete_button = QtWidgets.QToolButton(icon=QtGui.QIcon(IconEngine("delete-light.png"))) self.delete_button.setHidden(True) self.delete_button.pressed.connect(self.delete_item) button_layout.addWidget(self.delete_button) @@ -379,14 +379,14 @@ def setup_buttons(self): model_type = "domain contrast" if self.domains else "layer" self.add_button = QtWidgets.QPushButton( - f"Add {model_type.title()}", icon=QtGui.QIcon(path_for("create-dark.png")) + f"Add {model_type.title()}", icon=QtGui.QIcon(IconEngine("create-light.png")) ) self.add_button.setToolTip( f"Add a {model_type.title()} after the currently selected {model_type.title()} (Shift+Enter)" ) self.delete_button = QtWidgets.QPushButton( - f"Delete {model_type.title()}", icon=QtGui.QIcon(path_for("delete-dark.png")) + f"Delete {model_type.title()}", icon=QtGui.QIcon(IconEngine("delete-light.png")) ) self.delete_button.setToolTip(f"Delete the currently selected {model_type.title()} (Del)") diff --git a/rascal2/widgets/project/project.py b/rascal2/widgets/project/project.py index b14caf0d..5600b260 100644 --- a/rascal2/widgets/project/project.py +++ b/rascal2/widgets/project/project.py @@ -119,7 +119,7 @@ def create_project_view(self) -> QtWidgets.QWidget: show_sliders_button = QtWidgets.QPushButton("Show sliders") show_sliders_button.clicked.connect(self.parent.toggle_sliders) - self.edit_project_button = QtWidgets.QPushButton("Edit Project", icon=QtGui.QIcon(IconEngine("edit-dark.png"))) + self.edit_project_button = QtWidgets.QPushButton("Edit Project", icon=QtGui.QIcon(IconEngine("edit-light.png"))) self.edit_project_button.clicked.connect(self.show_edit_view) button_layout = QtWidgets.QHBoxLayout() button_layout.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight) @@ -169,11 +169,11 @@ def create_edit_view(self) -> QtWidgets.QWidget: main_layout.setSpacing(20) self.save_project_button = QtWidgets.QPushButton( - "Accept Changes", icon=QtGui.QIcon(IconEngine("save-project-dark.png")) + "Accept Changes", icon=QtGui.QIcon(IconEngine("save-project-light.png")) ) self.save_project_button.clicked.connect(self.save_changes) - self.cancel_button = QtWidgets.QPushButton("Cancel", icon=QtGui.QIcon(IconEngine("cancel-dark.png"))) + self.cancel_button = QtWidgets.QPushButton("Cancel", icon=QtGui.QIcon(IconEngine("cancel-light.png"))) self.cancel_button.clicked.connect(self.show_project_view) buttons_layout = QtWidgets.QHBoxLayout() diff --git a/rascal2/widgets/project/tables.py b/rascal2/widgets/project/tables.py index 45eb7fd2..3a5b193a 100644 --- a/rascal2/widgets/project/tables.py +++ b/rascal2/widgets/project/tables.py @@ -14,9 +14,9 @@ import rascal2.widgets.delegates as delegates from rascal2.config import LOGGER, SETTINGS +from rascal2.theme import IconEngine from rascal2.core.enums import CustomFileType from rascal2.dialogs.custom_file_editor import create_new_file, edit_file -from rascal2.paths import path_for class ClassListTableModel(QtCore.QAbstractTableModel): @@ -363,7 +363,7 @@ def make_delete_button(self, index): The row to be deleted. """ - button = QtWidgets.QPushButton(icon=QtGui.QIcon(path_for("delete-dark.png"))) + button = QtWidgets.QPushButton(icon=QtGui.QIcon(IconEngine("delete-light.png"))) button.resize(button.sizeHint().width(), button.sizeHint().width()) button.pressed.connect(lambda: self.delete_item(index)) diff --git a/rascal2/widgets/startup.py b/rascal2/widgets/startup.py index e6e5f269..ba0b43c2 100644 --- a/rascal2/widgets/startup.py +++ b/rascal2/widgets/startup.py @@ -50,11 +50,11 @@ def add_widgets_to_layout(self) -> None: def create_banner_and_footer(self) -> None: """Create banner and footer.""" self.banner_label = QtWidgets.QLabel() - self.banner_label.setPixmap(QtGui.QPixmap(path_for("banner-dark.png"))) + self.banner_label.setPixmap(QtGui.QPixmap(path_for("banner-light.png"))) self.banner_label.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) self.footer_label = QtWidgets.QLabel() - self.footer_label.setPixmap(QtGui.QPixmap(path_for("footer-dark.png"))) + self.footer_label.setPixmap(QtGui.QPixmap(path_for("footer-light.png"))) self.footer_label.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) def create_buttons(self) -> None: @@ -83,10 +83,10 @@ def changeEvent(self, event): if event.type() == QtCore.QEvent.Type.PaletteChange: scheme = QtWidgets.QApplication.styleHints().colorScheme() if scheme == QtCore.Qt.ColorScheme.Dark: - self.banner_label.setPixmap(QtGui.QPixmap(path_for("banner-light.png"))) - self.footer_label.setPixmap(QtGui.QPixmap(path_for("footer-light.png"))) - else: self.banner_label.setPixmap(QtGui.QPixmap(path_for("banner-dark.png"))) self.footer_label.setPixmap(QtGui.QPixmap(path_for("footer-dark.png"))) + else: + self.banner_label.setPixmap(QtGui.QPixmap(path_for("banner-light.png"))) + self.footer_label.setPixmap(QtGui.QPixmap(path_for("footer-light.png"))) super().changeEvent(event) \ No newline at end of file From a63892653546e183d05acc48e51f730c658a573c Mon Sep 17 00:00:00 2001 From: Stephen Nneji Date: Thu, 9 Apr 2026 14:26:54 +0100 Subject: [PATCH 04/10] more --- rascal2/static/images/banner-dark.png | Bin 8689 -> 21724 bytes rascal2/static/images/footer-dark.png | Bin 4247 -> 4450 bytes rascal2/static/style.css | 36 ++++++++++++-------------- rascal2/ui/view.py | 23 ++++++++++++++++ rascal2/widgets/plot.py | 2 +- 5 files changed, 41 insertions(+), 20 deletions(-) diff --git a/rascal2/static/images/banner-dark.png b/rascal2/static/images/banner-dark.png index 772a16f961e07eb3095c5871cba089fffa87f7fc..08e4379b985e106a87ce4e0e6cea3d951a152de3 100644 GIT binary patch delta 18426 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 z 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 delta 5452 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 diff --git a/rascal2/static/images/footer-dark.png b/rascal2/static/images/footer-dark.png index d6cbaafeb594d7bfbd54cf32bd89e7e192938173..f1debb61f7a0563fba9a6d612e84cd057994eef0 100644 GIT binary patch delta 769 zcmV+c1OEJ%A>tyCBmu^eB_DrL4#OY_{r40*0s>Mwj$LiC8|?T)!K7{W5}ydqCzAU2 zbEek-W=>qTDk=g7R#t2lRB*J(8F=ypoj{Sj1-|G$bi5j)H5!!5@oN2N!2u9b5%L@CS&0fH*0-NQvJ| z3N2zhIPSx{dyl(!fY7Wm)eOV{RkMtAA};3gt77jf0_Z~!WAIDN)RURTEIh~8J$!t< zi}Eb*bAOHjrC>6^ClY_hm~L3a8^p7lmd<&fILykDLVQj-cL;VD6LjMn{Vr0fXDX#dSxM_khbCVE9Rw49SuFG=*Xj zct4|W$^%2UK>wQCTYDd;4?vc>TD}1e4uOdhWv_d@JJ{XZzh~P0{QybYa+Xo$W*Yzi z4pnJXSaeuTOggiY0)hf0H8e6YHa9dfEoEdeW-T-@GC3_`VKF!@VqrOCIAl3CGGQ=c zlQ;#b4K+71H8nFdH#9LcG&7U#1#S>DIxsm@F)%tXH99jiD=;yWYz7_>G&(RjR536* zFf}?eG%GMMvzi790h7fBTqI>SWHLB0V`42ZGch$SG&wb4En#LdG%aK>F*h-0V>M)E zIb)MW2TBbzEigG$F)%tXH99jivz!NL2n0H&59yN{5FZHy2?+%vR7Le5lR^+x>`pwq delta 751 zcmV@c?#0us1%D#w9UoN?b-Qcs}{KaPB-TD;J~o zj>2*;^c?=}VH6Kxb|jXpVbsG2;sp+a;olVTn2R#2-T(m88w*UYEg=s@WP)S2W zAaHVTW@&6?004NLeUZOQ!$2IxUsFYqii!n);EocD=?tSBkO=fsl+U6A;Z>$1yloC^*MJTqvdlk>zuVzGbF#&R38qM;Jc5Qh|1 zqkJLbvch?bvs$jQ<~{if137Ia#dVrvh+zqFBp^aY6(y8mAxx`AiisrcM?L(bjz2*z znOr3>ax9<%6_Voz|AXJ%n)&G|Hz^PWI$v!2V;tz(1sXNm{yw(t#tGnm2ClT0zfuS0 zK1r{&w9paIw+%{MT(>lN54hX`hM#oFkQ~WRQ^@Cm_cQvYEHHQr^sKqPHTQA)0Hmp_ zmc9Gcz%hHU+5-GdDIgH!(0XF)%neF_Y{CZV)p%F*j5( zHaapjIxsdXFffy91|ASIIx#m?F*Z6fH99ahD=;v#m<9>~vw;X;2o}yv&MN=_00v@9 hM??S(0BHccgaUBJljRT}2?G%j849!gI~bD<5mgG5L9+k= diff --git a/rascal2/static/style.css b/rascal2/static/style.css index e78482a5..37f492b9 100644 --- a/rascal2/static/style.css +++ b/rascal2/static/style.css @@ -5,7 +5,7 @@ } QDialog{ - border: 1px solid @Midlight; + border: 1px solid darkgray; } QToolBar { @@ -37,14 +37,16 @@ QPushButton { min-height: 14px; } +QPushButton:focus, QPushButton:hover, -QPushButton:focus { +QPushButton:pressed { color: @Text; border-color: @Highlight; } -QPushButton:hover{ - background-color: #e0eef9; +QPushButton:hover, +QPushButton:pressed { + background-color: @Highlight; } QPushButton:disabled, @@ -54,10 +56,6 @@ QPushButton:disabled:checked { border-color: #b6b6b6; } -QPushButton:pressed { - background-color: #3874f2; -} - QPushButton:checked { background-color: #5e90fa; border-color: #3874f2; @@ -68,7 +66,7 @@ QLineEdit { background-color: @Base; selection-color: @Text; selection-background-color: @Highlight; - border: 1px solid @Midlight; + border: 1px solid darkgray; border-radius: 3px; } @@ -204,7 +202,7 @@ DisplayWidget #title{ } DisplayWidget #desc{ - color: #555 + color: @text } /***************************** @@ -228,17 +226,17 @@ ProjectWidget QPushButton{ } #InteractButton { - background-color: #dadbde; + background-color: @Button; } #InteractButton:hover, #InteractButton:focus { - color: black; - border-color: #3874f2; + color: @Text; + border-color: darkgray; } #InteractButton:hover{ - background-color: #e0eef9; + background-color: @Button; } #InteractButton:pressed { @@ -247,7 +245,7 @@ ProjectWidget QPushButton{ #InteractButton:checked { background-color: @Highlight; - border-color: #3874f2; + border-color: darkgray; } /***************************** @@ -331,14 +329,14 @@ QTabWidget:focus { } QTabWidget::pane { - border: 1px solid lightgray; + border: 1px solid darkgray; top:-1px; - background: #f5f5f5;; + background: @Window;; } QTabBar::tab { - background: #e6e6e6; - border: 1px solid lightgray; + background: @Base; + border: 1px solid darkgray; padding: 10px; } diff --git a/rascal2/ui/view.py b/rascal2/ui/view.py index bbd20d99..6199de50 100644 --- a/rascal2/ui/view.py +++ b/rascal2/ui/view.py @@ -19,6 +19,27 @@ MAIN_WINDOW_TITLE = "RasCAL-2" +# class TitleProxyStyle(QtWidgets.QProxyStyle): +# def drawComplexControl(self, control, option, painter, widget=None): +# if control == QtWidgets.QStyle.ComplexControl.CC_TitleBar: +# option.palette.setBrush( +# QtGui.QPalette.ColorRole.Highlight, QtGui.QColor.fromString('red') +# ) +# option.palette.setBrush( +# QtGui.QPalette.ColorRole.Window, option.palette.button().color() +# ) +# super(TitleProxyStyle, self).drawComplexControl( +# control, option, painter, widget +# ) +# +# +# class MdiSubWindow(QtWidgets.QMdiSubWindow): +# def __init__(self, parent=None, flags=QtCore.Qt.WindowType.Widget): +# super().__init__(parent, flags) +# style = TitleProxyStyle(self.style()) +# self.setStyle(style) + + class MainWindowView(QtWidgets.QMainWindow): """Creates the main view for the RasCAL application.""" @@ -322,6 +343,8 @@ def setup_mdi(self): window = self.mdi.addSubWindow( widget, QtCore.Qt.WindowType.WindowMinMaxButtonsHint | QtCore.Qt.WindowType.WindowTitleHint ) + # window = MdiSubWindow(self.mdi) + # window.setWidget(widget) window.setWindowTitle(title) self.reset_mdi_layout() self.startup_dlg = self.takeCentralWidget() diff --git a/rascal2/widgets/plot.py b/rascal2/widgets/plot.py index eb4845fd..05d12905 100644 --- a/rascal2/widgets/plot.py +++ b/rascal2/widgets/plot.py @@ -312,7 +312,7 @@ def make_interaction_layout(self): self.toolbar.hide() reset_button = QtWidgets.QToolButton(objectName="InteractButton") reset_button.setToolTip("Reset plot") - reset_button.setIcon(QtGui.QIcon(IconEngine("refresh-light.png"))) + reset_button.setIcon(QtGui.QIcon(IconEngine("refresh-dark.png"))) reset_button.clicked.connect(lambda: self.toolbar.home()) pan_button = QtWidgets.QToolButton(objectName="InteractButton") pan_button.setDefaultAction(self.toolbar._actions["pan"]) From e976230ac0fcb16f2b0e826c6728ab2ea06f1cf2 Mon Sep 17 00:00:00 2001 From: Stephen Nneji Date: Fri, 10 Apr 2026 12:04:05 +0100 Subject: [PATCH 05/10] mdi style --- rascal2/ui/view.py | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/rascal2/ui/view.py b/rascal2/ui/view.py index 6199de50..c4ff4c05 100644 --- a/rascal2/ui/view.py +++ b/rascal2/ui/view.py @@ -19,25 +19,22 @@ MAIN_WINDOW_TITLE = "RasCAL-2" -# class TitleProxyStyle(QtWidgets.QProxyStyle): -# def drawComplexControl(self, control, option, painter, widget=None): -# if control == QtWidgets.QStyle.ComplexControl.CC_TitleBar: -# option.palette.setBrush( -# QtGui.QPalette.ColorRole.Highlight, QtGui.QColor.fromString('red') -# ) -# option.palette.setBrush( -# QtGui.QPalette.ColorRole.Window, option.palette.button().color() -# ) -# super(TitleProxyStyle, self).drawComplexControl( -# control, option, painter, widget -# ) -# -# -# class MdiSubWindow(QtWidgets.QMdiSubWindow): -# def __init__(self, parent=None, flags=QtCore.Qt.WindowType.Widget): -# super().__init__(parent, flags) -# style = TitleProxyStyle(self.style()) -# self.setStyle(style) +class TitleProxyStyle(QtWidgets.QProxyStyle): + def drawComplexControl(self, control, option, painter, widget=None): + if control == QtWidgets.QStyle.ComplexControl.CC_TitleBar: + option.palette.setBrush( + QtGui.QPalette.ColorRole.Window, option.palette.button().color() + ) + super(TitleProxyStyle, self).drawComplexControl( + control, option, painter, widget + ) + + +class MdiSubWindow(QtWidgets.QMdiSubWindow): + def __init__(self, parent=None, flags=QtCore.Qt.WindowType.Widget): + super().__init__(parent, flags) + style = TitleProxyStyle(self.style()) + self.setStyle(style) class MainWindowView(QtWidgets.QMainWindow): From 62b14145363316678abfd440d0d605542280f401 Mon Sep 17 00:00:00 2001 From: Stephen Nneji Date: Wed, 6 May 2026 14:36:33 +0100 Subject: [PATCH 06/10] fix bug --- rascal2/app.py | 4 +++- rascal2/theme.py | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/rascal2/app.py b/rascal2/app.py index 375d9fd1..f95823db 100644 --- a/rascal2/app.py +++ b/rascal2/app.py @@ -27,7 +27,9 @@ def ui_execute(splash): window.show() splash.finish(window) - return app.exec() + exit_code = app.exec() + app.removeEventFilter(THEMES) + return exit_code def start_app(splash): diff --git a/rascal2/theme.py b/rascal2/theme.py index 9144d8f8..1169d5ca 100644 --- a/rascal2/theme.py +++ b/rascal2/theme.py @@ -54,7 +54,7 @@ def update_icon(self): scheme = QtWidgets.QApplication.styleHints().colorScheme() style = 'light' if scheme == QtCore.Qt.ColorScheme.Light else 'dark' - filename = f"{self.name}-dark.png" if style == "light" else f"{self.name}-light.png" + filename = f"{self.name}-light.png" if style == "light" else f"{self.name}-dark.png" path = path_for(filename) self.icon = QtGui.QIcon(path) From 995463126c958121cd60425fe36227112c8366b7 Mon Sep 17 00:00:00 2001 From: Mike Sullivan Date: Wed, 6 May 2026 18:00:30 +0100 Subject: [PATCH 07/10] set Toolbar Style Sheet to stop icon clipping --- rascal2/ui/view.py | 1 + 1 file changed, 1 insertion(+) diff --git a/rascal2/ui/view.py b/rascal2/ui/view.py index c4ff4c05..6c33f6f1 100644 --- a/rascal2/ui/view.py +++ b/rascal2/ui/view.py @@ -303,6 +303,7 @@ def open_docs(self): def create_toolbar(self): """Create the toolbar.""" self.toolbar = self.addToolBar("ToolBar") + self.toolbar.setStyleSheet("QToolButton { padding-left: 5px; padding-right: 5px; padding-top: 10px }") self.toolbar.setContextMenuPolicy(QtCore.Qt.ContextMenuPolicy.PreventContextMenu) self.toolbar.setMovable(False) From 757385493ceff37680d3b23b2bff75c3fdbc080a Mon Sep 17 00:00:00 2001 From: Mike Sullivan Date: Thu, 7 May 2026 15:16:08 +0100 Subject: [PATCH 08/10] Settings GUI to select app theme and colour scheme --- rascal2/dialogs/settings_dialog.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/rascal2/dialogs/settings_dialog.py b/rascal2/dialogs/settings_dialog.py index b946e8e4..87b0c079 100644 --- a/rascal2/dialogs/settings_dialog.py +++ b/rascal2/dialogs/settings_dialog.py @@ -29,6 +29,7 @@ def __init__(self, parent): self.settings = SETTINGS.copy() self.matlab_tab = MatlabSetupTab() + self.appearance_tab = AppearanceSetupTab() self.reset_dialog = None self.setAttribute(QtCore.Qt.WidgetAttribute.WA_DeleteOnClose) @@ -37,6 +38,7 @@ def __init__(self, parent): self.tab_widget.addTab(SettingsTab(self, SettingsGroups.General), SettingsGroups.General) self.tab_widget.addTab(SettingsTab(self, SettingsGroups.Plotting), SettingsGroups.Plotting) self.tab_widget.addTab(self.matlab_tab, "Matlab") + self.tab_widget.addTab(self.appearance_tab, "Appearance") self.tab_widget.setTabVisible(0, parent.presenter.model.save_path != "") self.tab_widget.setTabVisible(1, parent.presenter.model.save_path != "") @@ -207,3 +209,31 @@ def set_matlab_paths(self): LOGGER.error("exception occurred", exc_info=ex) MatlabHelper().async_start() + + +class AppearanceSetupTab(QtWidgets.QWidget): + """Dialog to adjust Matlab location settings.""" + + def __init__(self): + super().__init__() + + form_layout = QtWidgets.QGridLayout() + form_layout.setVerticalSpacing(10) + form_layout.setHorizontalSpacing(0) + + self.theme_select = QtWidgets.QComboBox(self) + self.theme_select.addItems(QtWidgets.QStyleFactory.keys()) + + self.colour_select = QtWidgets.QComboBox(self) + self.colour_select.addItems(["System", "Light", "Dark"]) + + form_layout.addWidget(QtWidgets.QLabel("Theme:"), 0, 0) + form_layout.addWidget(self.theme_select, 0, 1) + form_layout.addWidget(QtWidgets.QLabel("Colour:"), 2, 0) + form_layout.addWidget(self.colour_select, 2, 1) + + main_layout = QtWidgets.QVBoxLayout() + main_layout.addLayout(form_layout) + main_layout.addStretch(1) + + self.setLayout(main_layout) From 3a944ce3ef627833cd5ee0b82c9252ba900bbf63 Mon Sep 17 00:00:00 2001 From: Mike Sullivan Date: Fri, 8 May 2026 17:21:26 +0100 Subject: [PATCH 09/10] changing the Theme in the Settings Dialog updates the UI and stores current theme in QSettings --- rascal2/app.py | 5 ++-- rascal2/dialogs/settings_dialog.py | 37 +++++------------------------- rascal2/settings.py | 29 ++++++++++++++++++++--- 3 files changed, 35 insertions(+), 36 deletions(-) diff --git a/rascal2/app.py b/rascal2/app.py index f95823db..68836ae7 100644 --- a/rascal2/app.py +++ b/rascal2/app.py @@ -1,9 +1,10 @@ import logging import multiprocessing -from PyQt6 import QtWidgets, QtCore +from PyQt6 import QtWidgets from rascal2.config import MatlabHelper, handle_scaling, setup_logging +from rascal2.settings import get_colour_scheme from rascal2.theme import THEMES, set_stylesheet from rascal2.ui.view import MainWindowView @@ -20,7 +21,7 @@ def ui_execute(splash): app = QtWidgets.QApplication.instance() app.setStyle("Fusion") app.installEventFilter(THEMES) - app.styleHints().setColorScheme(QtCore.Qt.ColorScheme.Unknown) + app.styleHints().setColorScheme(get_colour_scheme()) set_stylesheet(app) window = MainWindowView() diff --git a/rascal2/dialogs/settings_dialog.py b/rascal2/dialogs/settings_dialog.py index 87b0c079..ddd3ac7a 100644 --- a/rascal2/dialogs/settings_dialog.py +++ b/rascal2/dialogs/settings_dialog.py @@ -7,7 +7,7 @@ from rascal2.config import LOGGER, SETTINGS, MatlabHelper from rascal2.paths import MATLAB_ARCH_FILE -from rascal2.settings import SettingsGroups +from rascal2.settings import SettingsGroups, change_ui_style from rascal2.widgets.inputs import get_validated_input @@ -29,7 +29,6 @@ def __init__(self, parent): self.settings = SETTINGS.copy() self.matlab_tab = MatlabSetupTab() - self.appearance_tab = AppearanceSetupTab() self.reset_dialog = None self.setAttribute(QtCore.Qt.WidgetAttribute.WA_DeleteOnClose) @@ -38,7 +37,6 @@ def __init__(self, parent): self.tab_widget.addTab(SettingsTab(self, SettingsGroups.General), SettingsGroups.General) self.tab_widget.addTab(SettingsTab(self, SettingsGroups.Plotting), SettingsGroups.Plotting) self.tab_widget.addTab(self.matlab_tab, "Matlab") - self.tab_widget.addTab(self.appearance_tab, "Appearance") self.tab_widget.setTabVisible(0, parent.presenter.model.save_path != "") self.tab_widget.setTabVisible(1, parent.presenter.model.save_path != "") @@ -71,6 +69,7 @@ def update_settings(self) -> None: def reset_default_settings(self) -> None: """Reset the settings to the global defaults.""" SETTINGS.reset_global_settings() + change_ui_style() self.accept() @@ -124,6 +123,10 @@ def modify_setting(self, setting: str): """ setattr(self.settings, setting, self.widgets[setting].get_data()) + match setting: + case "style": + change_ui_style(self.widgets[setting].get_data()) + class MatlabSetupTab(QtWidgets.QWidget): """Dialog to adjust Matlab location settings.""" @@ -209,31 +212,3 @@ def set_matlab_paths(self): LOGGER.error("exception occurred", exc_info=ex) MatlabHelper().async_start() - - -class AppearanceSetupTab(QtWidgets.QWidget): - """Dialog to adjust Matlab location settings.""" - - def __init__(self): - super().__init__() - - form_layout = QtWidgets.QGridLayout() - form_layout.setVerticalSpacing(10) - form_layout.setHorizontalSpacing(0) - - self.theme_select = QtWidgets.QComboBox(self) - self.theme_select.addItems(QtWidgets.QStyleFactory.keys()) - - self.colour_select = QtWidgets.QComboBox(self) - self.colour_select.addItems(["System", "Light", "Dark"]) - - form_layout.addWidget(QtWidgets.QLabel("Theme:"), 0, 0) - form_layout.addWidget(self.theme_select, 0, 1) - form_layout.addWidget(QtWidgets.QLabel("Colour:"), 2, 0) - form_layout.addWidget(self.colour_select, 2, 1) - - main_layout = QtWidgets.QVBoxLayout() - main_layout.addLayout(form_layout) - main_layout.addStretch(1) - - self.setLayout(main_layout) diff --git a/rascal2/settings.py b/rascal2/settings.py index 3157f4c7..ca1ed8de 100644 --- a/rascal2/settings.py +++ b/rascal2/settings.py @@ -13,7 +13,7 @@ from typing import Any, TypeAlias from pydantic import BaseModel, Field -from PyQt6 import QtCore +from PyQt6 import QtCore, QtWidgets # we do this statically rather than making it an attribute of Settings because all fields in a Pydantic model @@ -52,6 +52,7 @@ class SettingsGroups(StrEnum): class Styles(StrEnum): """Visual styles for RasCAL-2.""" + System = 'system' Light = "light" Dark = "dark" @@ -118,7 +119,7 @@ class Settings(BaseModel, validate_assignment=True, arbitrary_types_allowed=True # The Settings object's own model fields contain the within-project settings. # The global settings are read and written via this object using `set_global_settings`. - style: Styles = Field(default=Styles.Light, title=SettingsGroups.General, description="Style") + style: Styles = Field(default=Styles.System, title=SettingsGroups.General, description="Style") editor_fontsize: int = Field(default=12, title=SettingsGroups.General, description="Editor Font Size", gt=0) matlab_as_default_editor: bool = Field( default=False, @@ -160,7 +161,7 @@ def save(self, path: str | PathLike): def set_global_settings(self): """Set manually-set local settings as global settings.""" global_settings = get_global_settings() - for setting in self.model_fields_set: + for setting in self.model_fields.keys(): global_settings.setValue(global_name(setting), getattr(self, setting)) global_settings.sync() @@ -226,3 +227,25 @@ def update_recent_projects(path: str | None = None) -> list[str]: settings.setValue("recent_projects", new_recent_projects) settings.sync() return new_recent_projects + +def get_colour_scheme(): + colour_scheme = get_global_settings().value("General/style", 'system') + match colour_scheme: + case 'system': + colour_scheme_default = QtCore.Qt.ColorScheme.Unknown + case 'light': + colour_scheme_default = QtCore.Qt.ColorScheme.Light + case 'dark': + colour_scheme_default = QtCore.Qt.ColorScheme.Dark + return colour_scheme_default + +def change_ui_style(style: Styles = Styles.System) -> None: + app = QtWidgets.QApplication.instance() + match style: + case "system": + colour_scheme = QtCore.Qt.ColorScheme.Unknown + case "light": + colour_scheme = QtCore.Qt.ColorScheme.Light + case "dark": + colour_scheme = QtCore.Qt.ColorScheme.Dark + app.styleHints().setColorScheme(colour_scheme) From c19658041223a2416d9832f60795dad1fcabf398 Mon Sep 17 00:00:00 2001 From: Mike Sullivan Date: Fri, 8 May 2026 17:40:25 +0100 Subject: [PATCH 10/10] ruff fixes --- pyproject.toml | 2 ++ rascal2/settings.py | 16 ++++++++++------ rascal2/theme.py | 28 ++++++++++++++++------------ rascal2/ui/view.py | 14 +++++++------- rascal2/widgets/plot.py | 1 - rascal2/widgets/project/tables.py | 2 +- rascal2/widgets/startup.py | 2 +- 7 files changed, 37 insertions(+), 28 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 4a2b7ffa..cd993b79 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,9 +48,11 @@ mark-parentheses = false extend-ignore-names = ['allKeys', 'addItem', 'addItems', + 'changeEvent', 'closeEvent', 'columnCount', 'createEditor', + 'drawComplexControl', 'expandingDirections', 'eventFilter', 'hasHeightForWidth', diff --git a/rascal2/settings.py b/rascal2/settings.py index ca1ed8de..5456a581 100644 --- a/rascal2/settings.py +++ b/rascal2/settings.py @@ -52,7 +52,7 @@ class SettingsGroups(StrEnum): class Styles(StrEnum): """Visual styles for RasCAL-2.""" - System = 'system' + System = "system" Light = "light" Dark = "dark" @@ -161,7 +161,7 @@ def save(self, path: str | PathLike): def set_global_settings(self): """Set manually-set local settings as global settings.""" global_settings = get_global_settings() - for setting in self.model_fields.keys(): + for setting in self.model_fields: global_settings.setValue(global_name(setting), getattr(self, setting)) global_settings.sync() @@ -228,18 +228,22 @@ def update_recent_projects(path: str | None = None) -> list[str]: settings.sync() return new_recent_projects + def get_colour_scheme(): - colour_scheme = get_global_settings().value("General/style", 'system') + """Get the currently selected colour scheme and converts it to relevant Qt colour scheme flag.""" + colour_scheme = get_global_settings().value("General/style", "system") match colour_scheme: - case 'system': + case "system": colour_scheme_default = QtCore.Qt.ColorScheme.Unknown - case 'light': + case "light": colour_scheme_default = QtCore.Qt.ColorScheme.Light - case 'dark': + case "dark": colour_scheme_default = QtCore.Qt.ColorScheme.Dark return colour_scheme_default + def change_ui_style(style: Styles = Styles.System) -> None: + """Change the style of the app GUI to the given style.""" app = QtWidgets.QApplication.instance() match style: case "system": diff --git a/rascal2/theme.py b/rascal2/theme.py index 1169d5ca..8d803497 100644 --- a/rascal2/theme.py +++ b/rascal2/theme.py @@ -1,11 +1,13 @@ -from contextlib import suppress import re +from contextlib import suppress + from PyQt6 import QtCore, QtGui, QtWidgets -from rascal2.paths import path_for, IMAGES_PATH, STATIC_PATH +from rascal2.paths import IMAGES_PATH, STATIC_PATH, path_for -def set_stylesheet(app): +def set_stylesheet(app): + """Set the stylesheet of the app according to the given style.css file if available.""" with suppress(FileNotFoundError), open(STATIC_PATH / "style.css") as stylesheet: palette = app.palette() replacements = { @@ -20,17 +22,18 @@ def set_stylesheet(app): class ThemeManager(QtCore.QObject): + """Class to manage the Theme of the UI.""" + def __init__(self): super().__init__() scheme = QtWidgets.QApplication.styleHints().colorScheme() - self.cur_style = 'light' if scheme == QtCore.Qt.ColorScheme.Light else 'dark' + self.cur_style = "light" if scheme == QtCore.Qt.ColorScheme.Light else "dark" def eventFilter(self, obj, event): - """Catch close event for overlay widget""" + """Catch close event for overlay widget.""" if isinstance(obj, QtWidgets.QApplication) and event.type() == QtCore.QEvent.Type.ApplicationPaletteChange: - scheme = QtWidgets.QApplication.styleHints().colorScheme() - style = 'light' if scheme == QtCore.Qt.ColorScheme.Light else 'dark' + style = "light" if scheme == QtCore.Qt.ColorScheme.Light else "dark" if style != self.cur_style: set_stylesheet(obj) print(type(obj)) @@ -43,23 +46,24 @@ def eventFilter(self, obj, event): class IconEngine(QtGui.QIconEngine): - """Creates the icons for the application""" + """Create the icons for the application.""" + def __init__(self, filename): super().__init__() self.name = re.split(r"-dark.png|-light.png", filename)[0] self.update_icon() def update_icon(self): - """Updates the Icon""" + """Update the Icon.""" scheme = QtWidgets.QApplication.styleHints().colorScheme() - style = 'light' if scheme == QtCore.Qt.ColorScheme.Light else 'dark' + style = "light" if scheme == QtCore.Qt.ColorScheme.Light else "dark" filename = f"{self.name}-light.png" if style == "light" else f"{self.name}-dark.png" path = path_for(filename) self.icon = QtGui.QIcon(path) def pixmap(self, size, mode, state): - """Creates the pixmap + """Create the pixmap. :param size: size :type size: QSize @@ -72,7 +76,7 @@ def pixmap(self, size, mode, state): return self.icon.pixmap(size, mode, state) def paint(self, painter, rect, mode, state): - """Paints the icon + """Paint the icon. :param painter: painter :type painter: QPainter diff --git a/rascal2/ui/view.py b/rascal2/ui/view.py index 6c33f6f1..6325910b 100644 --- a/rascal2/ui/view.py +++ b/rascal2/ui/view.py @@ -3,13 +3,13 @@ from PyQt6 import QtCore, QtGui, QtWidgets from rascal2.config import SETTINGS -from rascal2.theme import IconEngine from rascal2.core.enums import UnsavedReply from rascal2.dialogs.about_dialog import AboutDialog from rascal2.dialogs.settings_dialog import SettingsDialog from rascal2.dialogs.startup_dialog import PROJECT_FILES, LoadDialog, LoadR1Dialog, NewProjectDialog, StartupDialog from rascal2.paths import EXAMPLES_PATH, EXAMPLES_TEMP_PATH, path_for from rascal2.settings import MDIGeometries, get_global_settings +from rascal2.theme import IconEngine from rascal2.widgets import ControlsWidget, PlotWidget, TerminalWidget from rascal2.widgets.project import ProjectWidget from rascal2.widgets.startup import StartUpWidget @@ -20,17 +20,17 @@ class TitleProxyStyle(QtWidgets.QProxyStyle): + """Set style of Title bar.""" + def drawComplexControl(self, control, option, painter, widget=None): if control == QtWidgets.QStyle.ComplexControl.CC_TitleBar: - option.palette.setBrush( - QtGui.QPalette.ColorRole.Window, option.palette.button().color() - ) - super(TitleProxyStyle, self).drawComplexControl( - control, option, painter, widget - ) + option.palette.setBrush(QtGui.QPalette.ColorRole.Window, option.palette.button().color()) + super().drawComplexControl(control, option, painter, widget) class MdiSubWindow(QtWidgets.QMdiSubWindow): + """Class to handle MDI sub-windows.""" + def __init__(self, parent=None, flags=QtCore.Qt.WindowType.Widget): super().__init__(parent, flags) style = TitleProxyStyle(self.style()) diff --git a/rascal2/widgets/plot.py b/rascal2/widgets/plot.py index 05d12905..65ba9de2 100644 --- a/rascal2/widgets/plot.py +++ b/rascal2/widgets/plot.py @@ -8,7 +8,6 @@ from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg, NavigationToolbar2QT from PyQt6 import QtCore, QtGui, QtWidgets - from rascal2.config import SETTINGS from rascal2.theme import IconEngine from rascal2.widgets.inputs import MultiSelectComboBox, ProgressButton diff --git a/rascal2/widgets/project/tables.py b/rascal2/widgets/project/tables.py index 3a5b193a..b765af7c 100644 --- a/rascal2/widgets/project/tables.py +++ b/rascal2/widgets/project/tables.py @@ -14,9 +14,9 @@ import rascal2.widgets.delegates as delegates from rascal2.config import LOGGER, SETTINGS -from rascal2.theme import IconEngine from rascal2.core.enums import CustomFileType from rascal2.dialogs.custom_file_editor import create_new_file, edit_file +from rascal2.theme import IconEngine class ClassListTableModel(QtCore.QAbstractTableModel): diff --git a/rascal2/widgets/startup.py b/rascal2/widgets/startup.py index ba0b43c2..2845d4ef 100644 --- a/rascal2/widgets/startup.py +++ b/rascal2/widgets/startup.py @@ -89,4 +89,4 @@ def changeEvent(self, event): self.banner_label.setPixmap(QtGui.QPixmap(path_for("banner-light.png"))) self.footer_label.setPixmap(QtGui.QPixmap(path_for("footer-light.png"))) - super().changeEvent(event) \ No newline at end of file + super().changeEvent(event)