use qt resources for icons

This commit is contained in:
Jan Grewe 2021-03-06 17:43:04 +01:00
parent 96ec7da8da
commit da14623062
6 changed files with 38 additions and 19 deletions

View File

@ -3,8 +3,6 @@ from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QLabel, QVBoxLayout, QWidget from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QLabel, QVBoxLayout, QWidget
from PyQt5.QtCore import Qt from PyQt5.QtCore import Qt
import blipblop.constants as cnst
class AboutDialog(QDialog): class AboutDialog(QDialog):
@ -42,7 +40,7 @@ class About(QWidget):
# rtd_link.setAlignment(Qt.AlignCenter) # rtd_link.setAlignment(Qt.AlignCenter)
iconlabel = QLabel() iconlabel = QLabel()
pixmap = QPixmap(os.path.join(cnst.ICONS_FOLDER, "blipblop_logo.png")) pixmap = QPixmap(":/icons/blipblop_logo")
s = pixmap.size() s = pixmap.size()
new_height = int(s.height() * 300/s.width()) new_height = int(s.height() * 300/s.width())
pixmap = pixmap.scaled(300, new_height, Qt.KeepAspectRatio, Qt.FastTransformation) pixmap = pixmap.scaled(300, new_height, Qt.KeepAspectRatio, Qt.FastTransformation)

View File

@ -1,6 +1,6 @@
from PyQt5.QtWidgets import QAction, QComboBox, QFormLayout, QGridLayout, QLabel, QPushButton, QSizePolicy, QSlider, QSpinBox, QSplitter, QTextEdit, QVBoxLayout, QWidget from PyQt5.QtWidgets import QAction, QComboBox, QFormLayout, QGridLayout, QLabel, QPushButton, QSizePolicy, QSlider, QSpinBox, QSplitter, QTextEdit, QVBoxLayout, QWidget
from PyQt5.QtCore import QPoint, QRandomGenerator, QTimer, Qt, pyqtSignal from PyQt5.QtCore import QPoint, QRandomGenerator, QTimer, Qt, pyqtSignal
from PyQt5.QtGui import QColor, QFont, QKeySequence, QPainter, QPen, QPixmap from PyQt5.QtGui import QColor, QFont, QIcon, QKeySequence, QPainter, QPen, QPixmap
from PyQt5.QtMultimedia import QMediaPlayer from PyQt5.QtMultimedia import QMediaPlayer
import os import os
@ -117,7 +117,7 @@ class AudioBlop(QWidget):
widget.setLayout(grid) widget.setLayout(grid)
l = QLabel("Auditory reaction test") l = QLabel("Auditory reaction test")
l.setPixmap(QPixmap(os.path.join(cnst.ICONS_FOLDER, "auditory_task.png"))) l.setPixmap(QPixmap(":/icons/auditory_task"))
grid.addWidget(l, 0, 0, Qt.AlignLeft) grid.addWidget(l, 0, 0, Qt.AlignLeft)
l2 =QLabel("Measurement of auditory reaction times\npress enter to start") l2 =QLabel("Measurement of auditory reaction times\npress enter to start")
@ -128,7 +128,7 @@ class AudioBlop(QWidget):
l2.setStyleSheet("color: #2D4B9A") l2.setStyleSheet("color: #2D4B9A")
grid.addWidget(l2, 1, 0, 1, 2, Qt.AlignLeft) grid.addWidget(l2, 1, 0, 1, 2, Qt.AlignLeft)
settings_btn = QPushButton(cnst.get_icon("settings"), "") settings_btn = QPushButton(QIcon(":/icons/settings"), "")
settings_btn.setToolTip("edit task settings") settings_btn.setToolTip("edit task settings")
settings_btn.setShortcut(QKeySequence("alt+s")) settings_btn.setShortcut(QKeySequence("alt+s"))
settings_btn.clicked.connect(self.on_toggle_settings) settings_btn.clicked.connect(self.on_toggle_settings)

View File

@ -1,4 +1,3 @@
import os
from PyQt5.QtGui import QIcon from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QFrame, QHBoxLayout, QPushButton, QSizePolicy, QTextBrowser, QVBoxLayout, QWidget from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QFrame, QHBoxLayout, QPushButton, QSizePolicy, QTextBrowser, QVBoxLayout, QWidget
from PyQt5.QtCore import QUrl from PyQt5.QtCore import QUrl
@ -17,12 +16,12 @@ class HelpDialog(QDialog):
self.help._edit.historyChanged.connect(self._on_history_changed) self.help._edit.historyChanged.connect(self._on_history_changed)
self.back_btn = QPushButton(QIcon(os.path.join(cnst.ICONS_FOLDER, "back_btn")), "back") self.back_btn = QPushButton(QIcon(":/icons/back_btn"), "back")
self.back_btn.setEnabled(False) self.back_btn.setEnabled(False)
self.back_btn.clicked.connect(self.help._edit.backward) self.back_btn.clicked.connect(self.help._edit.backward)
self.home_btn = QPushButton(QIcon(os.path.join(cnst.ICONS_FOLDER, "home_btn")),"home") self.home_btn = QPushButton(QIcon(":/icons/home_btn"),"home")
self.home_btn.clicked.connect(self.help._edit.home) self.home_btn.clicked.connect(self.help._edit.home)
self.fwd_btn = QPushButton(QIcon(os.path.join(cnst.ICONS_FOLDER, "fwd_btn")),"forward") self.fwd_btn = QPushButton(QIcon(":/icons/fwd_btn"),"forward")
self.fwd_btn.setEnabled(False) self.fwd_btn.setEnabled(False)
self.fwd_btn.clicked.connect(self.help._edit.forward) self.fwd_btn.clicked.connect(self.help._edit.forward)
@ -53,7 +52,7 @@ class HelpBrowser(QWidget):
def __init__(self, parent=None) -> None: def __init__(self, parent=None) -> None:
super().__init__(parent=parent) super().__init__(parent=parent)
self.setLayout(QVBoxLayout()) self.setLayout(QVBoxLayout())
# FIXME https://stackoverflow.com/a/43217828 about loading from esource files
doc_url = QUrl.fromLocalFile(cnst.DOCS_ROOT_FILE) doc_url = QUrl.fromLocalFile(cnst.DOCS_ROOT_FILE)
self._edit = QTextBrowser() self._edit = QTextBrowser()
self._edit.setOpenLinks(True) self._edit.setOpenLinks(True)

View File

@ -25,17 +25,17 @@ class BlipBlop(QMainWindow):
self.show() self.show()
def create_actions(self): def create_actions(self):
self._quit_action = QAction(cnst.get_icon("nixview_quit"), "Quit", self) self._quit_action = QAction(QIcon(":/icons/quit"), "Quit", self)
self._quit_action.setStatusTip("Quit BlipBlop") self._quit_action.setStatusTip("Quit BlipBlop")
self._quit_action.setShortcut(QKeySequence("Ctrl+q")) self._quit_action.setShortcut(QKeySequence("Ctrl+q"))
self._quit_action.triggered.connect(self.on_quit) self._quit_action.triggered.connect(self.on_quit)
self._new_action = QAction(cnst.get_icon("new_task"), "New session", self) self._new_action = QAction(QIcon(":/icons/new_session"), "New session", self)
self._new_action.setStatusTip("Start a new session discarding previous results") self._new_action.setStatusTip("Start a new session discarding previous results")
self._new_action.setShortcut(QKeySequence("Ctrl+n")) self._new_action.setShortcut(QKeySequence("Ctrl+n"))
self._new_action.triggered.connect(self.on_new) self._new_action.triggered.connect(self.on_new)
self._results_action = QAction(cnst.get_icon("nix_data_frame"), "Show results", self) self._results_action = QAction(QIcon(":/icons/results_table"), "Show results", self)
self._results_action.setStatusTip("Show results as table") self._results_action.setStatusTip("Show results as table")
self._results_action.setShortcut(QKeySequence("Ctrl+r")) self._results_action.setShortcut(QKeySequence("Ctrl+r"))
self._results_action.setEnabled(True) self._results_action.setEnabled(True)
@ -46,20 +46,19 @@ class BlipBlop(QMainWindow):
self._about_action.setEnabled(True) self._about_action.setEnabled(True)
self._about_action.triggered.connect(self.on_about) self._about_action.triggered.connect(self.on_about)
self._help_action = QAction(cnst.get_icon("nixview_help"), "help") self._help_action = QAction(QIcon(":/icons/help"), "help")
self._help_action.setStatusTip("Show help dialog") self._help_action.setStatusTip("Show help dialog")
self._help_action.setShortcut(QKeySequence("F1")) self._help_action.setShortcut(QKeySequence("F1"))
self._help_action.setEnabled(True) self._help_action.setEnabled(True)
self._help_action.triggered.connect(self.on_help) self._help_action.triggered.connect(self.on_help)
# self._visual_task_action = QAction(cnst.get_icon("visual_task"), "visual")
self._visual_task_action = QAction(QIcon(":/icons/visual_task"), "visual") self._visual_task_action = QAction(QIcon(":/icons/visual_task"), "visual")
self._visual_task_action.setStatusTip("Start measuring visual reaction times") self._visual_task_action.setStatusTip("Start measuring visual reaction times")
self._visual_task_action.setShortcut(QKeySequence("Ctrl+1")) self._visual_task_action.setShortcut(QKeySequence("Ctrl+1"))
self._visual_task_action.setEnabled(True) self._visual_task_action.setEnabled(True)
self._visual_task_action.triggered.connect(self.on_visual) self._visual_task_action.triggered.connect(self.on_visual)
self._auditory_task_action = QAction(cnst.get_icon("auditory_task"), "auditory") self._auditory_task_action = QAction(QIcon(":/icons/auditory_task"), "auditory")
self._auditory_task_action.setStatusTip("Start measuring auditory reaction times") self._auditory_task_action.setStatusTip("Start measuring auditory reaction times")
self._auditory_task_action.setShortcut(QKeySequence("Ctrl+2")) self._auditory_task_action.setShortcut(QKeySequence("Ctrl+2"))
self._auditory_task_action.setEnabled(True) self._auditory_task_action.setEnabled(True)

View File

@ -39,13 +39,13 @@ class StartScreen(QWidget):
visual_task_label = MyLabel() visual_task_label = MyLabel()
visual_task_label.setToolTip("Click to start a new visual task (Ctrl+1)") visual_task_label.setToolTip("Click to start a new visual task (Ctrl+1)")
visual_task_label.setPixmap(QPixmap(os.path.join(cnst.ICONS_FOLDER, "visual_task_large.png"))) visual_task_label.setPixmap(QPixmap(":/icons/visual_task_large"))
visual_task_label.setMaximumWidth(256) visual_task_label.setMaximumWidth(256)
visual_task_label.clicked.connect(self.new_visual_task) visual_task_label.clicked.connect(self.new_visual_task)
auditory_task_label = MyLabel() auditory_task_label = MyLabel()
auditory_task_label.setToolTip("Click to start a new auditory task (Ctrl+2)") auditory_task_label.setToolTip("Click to start a new auditory task (Ctrl+2)")
auditory_task_label.setPixmap(QPixmap(os.path.join(cnst.ICONS_FOLDER, "auditory_task_large.png"))) auditory_task_label.setPixmap(QPixmap(":/icons/auditory_task_large"))
auditory_task_label.setMaximumWidth(256) auditory_task_label.setMaximumWidth(256)
auditory_task_label.clicked.connect(self.new_auditory_task) auditory_task_label.clicked.connect(self.new_auditory_task)

23
resources.qrc Normal file
View File

@ -0,0 +1,23 @@
<!DOCTYPE RCC>
<RCC version="1.0">
<qresource prefix="icons">
<file alias="app_icon">icons/blipblop_logo.icns</file>
<file alias="blipblop_logo">icons/blipblop_logo.png</file>
<file alias="visual_task">icons/visual_task.png</file>
<file alias="visual_task_large">icons/visual_task_large.png</file>
<file alias="auditory_task">icons/auditory_task.png</file>
<file alias="auditory_task_large">icons/auditory_task_large.png</file>
<file alias="docs_home">icons/home_btn.png</file>
<file alias="docs_back">icons/back_btn.png</file>
<file alias="docs_forward">icons/fwd_btn.png</file>
<file alias="help">icons/help.png</file>
<file alias="new_session">icons/new_session.png</file>
<file alias="new_session_larg">icons/new_session_large.png</file>
<file alias="results_table">icons/blipblop_table.png</file>
<file alias="settings">icons/settings.png</file>
</qresource>
<qresource prefix="docs">
<file alias="index">docs/index.md</file>
</qresource>
</RCC>