From 1421ad21982c39c85bedc56d77fe177c489d78db Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Sun, 29 Sep 2024 00:14:30 +0200 Subject: [PATCH] [resources] add some icons --- pyproject.toml | 5 +- pyrelacs/app.py | 4 +- pyrelacs/icons/connect.png | 738 ++++++++++++++++++++++++++++++++++ pyrelacs/icons/disconnect.png | 738 ++++++++++++++++++++++++++++++++++ pyrelacs/icons/exit.png | 738 ++++++++++++++++++++++++++++++++++ pyrelacs/icons/record.png | 738 ++++++++++++++++++++++++++++++++++ pyrelacs/icons/stop.png | 738 ++++++++++++++++++++++++++++++++++ pyrelacs/info.py | 1 + pyrelacs/resources.qrc | 9 + pyrelacs/ui/mainwindow.py | 120 ++++-- 10 files changed, 3803 insertions(+), 26 deletions(-) create mode 100644 pyrelacs/icons/connect.png create mode 100644 pyrelacs/icons/disconnect.png create mode 100644 pyrelacs/icons/exit.png create mode 100644 pyrelacs/icons/record.png create mode 100644 pyrelacs/icons/stop.png create mode 100644 pyrelacs/resources.qrc diff --git a/pyproject.toml b/pyproject.toml index aa7864d..b93f79d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,11 +16,12 @@ classifiers = [ "Intended Audience :: End Users/Desktop", ] include = [ - { path = "pyproject.toml" } + { path = "pyproject.toml" }, + "pyrelacs/resources.py" ] [tool.poetry.dependencies] -python = "^3.12" +python = "^3.10" uldaq = "^1.2.3" typer = "^0.12.5" matplotlib = "^3.9.2" diff --git a/pyrelacs/app.py b/pyrelacs/app.py index db65e36..5aff135 100644 --- a/pyrelacs/app.py +++ b/pyrelacs/app.py @@ -1,7 +1,7 @@ import sys import pathlib -from PyQt6.QtCore import QSettings +from PyQt6.QtCore import QSettings, Qt from PyQt6.QtWidgets import QApplication from . import info @@ -9,12 +9,14 @@ from .ui.mainwindow import PyRelacs from .util.logging import config_logging log = config_logging() +from . import resources def main(): app = QApplication(sys.argv) app.setApplicationName(info.NAME) app.setApplicationVersion(str(info.VERSION)) app.setOrganizationDomain(info.ORGANIZATION) + # app.setAttribute(Qt.ApplicationAttribute.AA_DontShowIconsInMenus, False) # read window settings settings = QSettings(info.ORGANIZATION, info.NAME) diff --git a/pyrelacs/icons/connect.png b/pyrelacs/icons/connect.png new file mode 100644 index 0000000..0ea0bc4 --- /dev/null +++ b/pyrelacs/icons/connect.png @@ -0,0 +1,738 @@ + + + + + PylonRecorder/connect.png at master - PylonRecorder - Neuroetho git repository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + + + +
+
+ +
+ + + + + + + +
+
+ + + + + 1 + +
+
+ + +
+
+ + + + + 0 + +
+
+ + + + + + +
+ +
+ + + +
+ +
+ + +
+ + + Code + + + + + + Issues + + + + + + + + + Pull Requests + + + + + + + + + + + + + + Releases + + + + + + + Wiki + + + + + + + + Activity + + + + + + + + + Settings + + +
+ +
+
+
+
+ +
+ + + + + + + + + +
+ +
+ + +
+
+ + + + + + + +
+
+ + + + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + + + + + + + + + PylonRecorder/images/connect.png + +
+
+ + + +
+
+ +
+ + +
+
+ + + + + Jan Grewe + + + + bc09438f2a + + + + + + [icons] update and new + + + + +
+ + +
+ 2020-03-13 11:58:01 +01:00 +
+ + +
+ + +

+
+ +
+ + + +
+ 6.9 KiB +
+ + + + + + + +
+ 200x200px +
+ +
+ + +
+
+ + +
+ Raw + + Permalink + + + History + +
+ + + + + + + + + + + + + + + + + +
+

+
+ + + + +
+ +
+ + + +
+ +
+
+
+ + +
+
+ + + + +
+ + + + + + + + + + + + diff --git a/pyrelacs/icons/disconnect.png b/pyrelacs/icons/disconnect.png new file mode 100644 index 0000000..5ffb319 --- /dev/null +++ b/pyrelacs/icons/disconnect.png @@ -0,0 +1,738 @@ + + + + + PylonRecorder/disconnect.png at master - PylonRecorder - Neuroetho git repository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + + + +
+
+ +
+ + + + + + + +
+
+ + + + + 1 + +
+
+ + +
+
+ + + + + 0 + +
+
+ + + + + + +
+ +
+ + + +
+ +
+ + +
+ + + Code + + + + + + Issues + + + + + + + + + Pull Requests + + + + + + + + + + + + + + Releases + + + + + + + Wiki + + + + + + + + Activity + + + + + + + + + Settings + + +
+ +
+
+
+
+ +
+ + + + + + + + + +
+ +
+ + +
+
+ + + + + + + +
+
+ + + + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + + + + + + + + + PylonRecorder/images/disconnect.png + +
+
+ + + +
+
+ +
+ + +
+
+ + + + + Jan Grewe + + + + bc09438f2a + + + + + + [icons] update and new + + + + +
+ + +
+ 2020-03-13 11:58:01 +01:00 +
+ + +
+ + +

+
+ +
+ + + +
+ 5.3 KiB +
+ + + + + + + +
+ 200x200px +
+ +
+ + +
+
+ + +
+ Raw + + Permalink + + + History + +
+ + + + + + + + + + + + + + + + + +
+

+
+ + + + +
+ +
+ + + +
+ +
+
+
+ + +
+
+ + + + +
+ + + + + + + + + + + + diff --git a/pyrelacs/icons/exit.png b/pyrelacs/icons/exit.png new file mode 100644 index 0000000..1be01ac --- /dev/null +++ b/pyrelacs/icons/exit.png @@ -0,0 +1,738 @@ + + + + + PylonRecorder/exit.png at master - PylonRecorder - Neuroetho git repository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + + + +
+
+ +
+ + + + + + + +
+
+ + + + + 1 + +
+
+ + +
+
+ + + + + 0 + +
+
+ + + + + + +
+ +
+ + + +
+ +
+ + +
+ + + Code + + + + + + Issues + + + + + + + + + Pull Requests + + + + + + + + + + + + + + Releases + + + + + + + Wiki + + + + + + + + Activity + + + + + + + + + Settings + + +
+ +
+
+
+
+ +
+ + + + + + + + + +
+ +
+ + +
+
+ + + + + + + +
+
+ + + + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + + + + + + + + + PylonRecorder/images/exit.png + +
+
+ + + +
+
+ +
+ + +
+ + + +
+ 2020-03-16 11:01:18 +01:00 +
+ + +
+ + +

+
+ +
+ + + +
+ 7.0 KiB +
+ + + + + + + +
+ 200x200px +
+ +
+ + +
+
+ + +
+ Raw + + Permalink + + + History + +
+ + + + + + + + + + + + + + + + + +
+

+
+ + + + +
+ +
+ + + +
+ +
+
+
+ + +
+
+ + + + +
+ + + + + + + + + + + + diff --git a/pyrelacs/icons/record.png b/pyrelacs/icons/record.png new file mode 100644 index 0000000..4ef1915 --- /dev/null +++ b/pyrelacs/icons/record.png @@ -0,0 +1,738 @@ + + + + + PylonRecorder/record.png at master - PylonRecorder - Neuroetho git repository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + + + +
+
+ +
+ + + + + + + +
+
+ + + + + 1 + +
+
+ + +
+
+ + + + + 0 + +
+
+ + + + + + +
+ +
+ + + +
+ +
+ + +
+ + + Code + + + + + + Issues + + + + + + + + + Pull Requests + + + + + + + + + + + + + + Releases + + + + + + + Wiki + + + + + + + + Activity + + + + + + + + + Settings + + +
+ +
+
+
+
+ +
+ + + + + + + + + +
+ +
+ + +
+
+ + + + + + + +
+
+ + + + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + + + + + + + + + PylonRecorder/images/record.png + +
+
+ + + +
+
+ +
+ + +
+
+ + + + + Jan Grewe + + + + bc09438f2a + + + + + + [icons] update and new + + + + +
+ + +
+ 2020-03-13 11:58:01 +01:00 +
+ + +
+ + +

+
+ +
+ + + +
+ 4.9 KiB +
+ + + + + + + +
+ 200x200px +
+ +
+ + +
+
+ + +
+ Raw + + Permalink + + + History + +
+ + + + + + + + + + + + + + + + + +
+

+
+ + + + +
+ +
+ + + +
+ +
+
+
+ + +
+
+ + + + +
+ + + + + + + + + + + + diff --git a/pyrelacs/icons/stop.png b/pyrelacs/icons/stop.png new file mode 100644 index 0000000..9b2ab09 --- /dev/null +++ b/pyrelacs/icons/stop.png @@ -0,0 +1,738 @@ + + + + + PylonRecorder/stop.png at master - PylonRecorder - Neuroetho git repository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + + + +
+
+ +
+ + + + + + + +
+
+ + + + + 1 + +
+
+ + +
+
+ + + + + 0 + +
+
+ + + + + + +
+ +
+ + + +
+ +
+ + +
+ + + Code + + + + + + Issues + + + + + + + + + Pull Requests + + + + + + + + + + + + + + Releases + + + + + + + Wiki + + + + + + + + Activity + + + + + + + + + Settings + + +
+ +
+
+
+
+ +
+ + + + + + + + + +
+ +
+ + +
+
+ + + + + + + +
+
+ + + + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + + + + + + + + + PylonRecorder/images/stop.png + +
+
+ + + +
+
+ +
+ + +
+
+ + + + + Jan Grewe + + + + bc09438f2a + + + + + + [icons] update and new + + + + +
+ + +
+ 2020-03-13 11:58:01 +01:00 +
+ + +
+ + +

+
+ +
+ + + +
+ 2.2 KiB +
+ + + + + + + +
+ 200x200px +
+ +
+ + +
+
+ + +
+ Raw + + Permalink + + + History + +
+ + + + + + + + + + + + + + + + + +
+

+
+ + + + +
+ +
+ + + +
+ +
+
+
+ + +
+
+ + + + +
+ + + + + + + + + + + + diff --git a/pyrelacs/info.py b/pyrelacs/info.py index 46ee0a1..cd2e46e 100644 --- a/pyrelacs/info.py +++ b/pyrelacs/info.py @@ -3,6 +3,7 @@ import pathlib def load_project_settings(project_root): + print(project_root) # Read the pyproject.toml file with open(pathlib.Path.joinpath(project_root, "pyproject.toml"), "r") as f: pyproject_content = f.read() diff --git a/pyrelacs/resources.qrc b/pyrelacs/resources.qrc new file mode 100644 index 0000000..da26e63 --- /dev/null +++ b/pyrelacs/resources.qrc @@ -0,0 +1,9 @@ + + + icons/exit.png + icons/connect.png + icons/disconnect.png + icons/record.png + icons/stop.png + + \ No newline at end of file diff --git a/pyrelacs/ui/mainwindow.py b/pyrelacs/ui/mainwindow.py index 6f1d2d0..f19a619 100644 --- a/pyrelacs/ui/mainwindow.py +++ b/pyrelacs/ui/mainwindow.py @@ -1,13 +1,14 @@ -from PyQt6.QtGui import QAction -from PyQt6.QtCore import QSize, QThreadPool +from PyQt6.QtGui import QAction, QIcon, QKeySequence +from PyQt6.QtCore import Qt, QSize, QThreadPool from PyQt6.QtWidgets import ( - QApplication, QGridLayout, QPushButton, QToolBar, QWidget, QMainWindow, QPlainTextEdit, + QMenuBar, + QStatusBar ) import uldaq import pathlib @@ -15,9 +16,10 @@ import numpy as np import nixio as nix import pyqtgraph as pg +from importlib.resources import files as rsrc_files from scipy.signal import welch, find_peaks -from ..worker import Worker +from pyrelacs.worker import Worker from ..repros.repros import Repro from ..util.logging import config_logging log = config_logging() @@ -27,6 +29,7 @@ from IPython import embed class PyRelacs(QMainWindow): def __init__(self): super().__init__() + # self.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonTextBesideIcon) # Ensure icons are displayed with text self.setWindowTitle("PyRelacs") self.setMinimumSize(1000, 1000) self.plot_graph = pg.PlotWidget() @@ -34,32 +37,20 @@ class PyRelacs(QMainWindow): self.threadpool = QThreadPool() self.repros = Repro() - self.daq_connect_button = QPushButton("Connect Daq") - self.daq_connect_button.setCheckable(True) - self.daq_connect_button.clicked.connect(self.connect_dac) - - self.daq_disconnect_button = QPushButton("Disconnect Daq") - self.daq_disconnect_button.setCheckable(True) - self.daq_disconnect_button.clicked.connect(self.disconnect_dac) - - self.plot_calibration_button = QPushButton("Plot Calibration") - self.plot_calibration_button.setCheckable(True) - self.plot_calibration_button.clicked.connect(self.plot_calibration) - self.text = QPlainTextEdit() self.text.setReadOnly(True) + self.setMenuBar(QMenuBar(self)) + self.setStatusBar(QStatusBar(self)) + self.create_actions() + self.create_buttons() + self.create_toolbars() + layout = QGridLayout() layout.addWidget(self.plot_calibration_button, 0, 0) layout.addWidget(self.daq_disconnect_button, 0, 1) layout.addWidget(self.text, 3, 0, 1, 2) layout.addWidget(self.plot_graph, 2, 0, 1, 2) - - self.toolbar = QToolBar("Repros") - self.addToolBar(self.toolbar) - self.repros_to_toolbar() - - # self.setFixedSize(QSize(400, 300)) widget = QWidget() widget.setLayout(layout) self.setCentralWidget(widget) @@ -69,6 +60,85 @@ class PyRelacs(QMainWindow): str(filename), nix.FileMode.Overwrite ) + def create_actions(self): + icon_path = str(rsrc_files("pyrelacs.icons").joinpath("exit.png")) + self._rlx_exitaction = QAction(QIcon(":icons/exit.png"), "Exit", self) + self._rlx_exitaction.setStatusTip("Close relacs") + self._rlx_exitaction.setShortcut(QKeySequence("Alt+q")) + self._rlx_exitaction.triggered.connect(self.on_exit) + + # icon_path = str(rsrc_files("pyrelacs.icons").joinpath("connect.png")) + self._daq_connectaction = QAction(QIcon(":/icons/connect.png"), "Connect DAQ", self) + self._daq_connectaction.setStatusTip("Connect to daq device") + # self._daq_connectaction.setShortcut(QKeySequence("Alt+d")) + self._daq_connectaction.triggered.connect(self.connect_dac) + + icon_path = str(rsrc_files("pyrelacs.icons").joinpath("disconnect.png")) + self._daq_disconnectaction = QAction(QIcon(icon_path), "Disconnect DAQ", self) + self._daq_disconnectaction.setStatusTip("Disconnect the DAQ device") + # self._daq_connectaction.setShortcut(QKeySequence("Alt+d")) + self._daq_disconnectaction.triggered.connect(self.disconnect_dac) + + # icon_path = str(rsrc_files("pyrelacs.icons").joinpath("calibration.png")) + self._daq_calibaction = QAction(QIcon(icon_path), "Plot calibration", self) + self._daq_calibaction.setStatusTip("Calibrate the attenuator device") + # self._daq_calibaction.setShortcut(QKeySequence("Alt+d")) + self._daq_calibaction.triggered.connect(self.plot_calibration) + self.create_menu() + + def create_menu(self): + menu = self.menuBar() + file_menu = menu.addMenu("&File") + file_menu.addAction(self._rlx_exitaction) + + device_menu = menu.addMenu("&DAQ") + device_menu.addAction(self._daq_connectaction) + device_menu.addAction(self._daq_disconnectaction) + device_menu.addSeparator() + device_menu.addAction(self._daq_calibaction) + + help_menu = menu.addMenu("&Help") + help_menu.addSeparator() + # help_menu.addAction(self._about_action) + # help_menu.addAction(self._help_action) + self.setMenuBar(menu) + + def create_toolbars(self): + rlx_toolbar = QToolBar("Relacs") + rlx_toolbar.addAction(self._rlx_exitaction) + rlx_toolbar.setIconSize(QSize(24, 24)) + + self.addToolBar(Qt.ToolBarArea.TopToolBarArea, rlx_toolbar) + daq_toolbar = QToolBar("DAQ") + daq_toolbar.addAction(self._daq_connectaction) + daq_toolbar.addAction(self._daq_disconnectaction) + daq_toolbar.addAction(self._daq_calibaction) + self.addToolBar(Qt.ToolBarArea.TopToolBarArea, daq_toolbar) + + repro_toolbar = QToolBar("Repros") + repro_names, file_names = self.repros.names_of_repros() + for rep, fn in zip(repro_names, file_names): + individual_repro_button = QAction(rep, self) + individual_repro_button.setStatusTip(rep) + individual_repro_button.triggered.connect( + lambda checked, n=rep, f=fn: self.run_repro(n, f) + ) + repro_toolbar.addAction(individual_repro_button) + self.addToolBar(Qt.ToolBarArea.TopToolBarArea, repro_toolbar) + + def create_buttons(self): + self.daq_connect_button = QPushButton("Connect Daq") + self.daq_connect_button.setCheckable(True) + self.daq_connect_button.clicked.connect(self.connect_dac) + + self.daq_disconnect_button = QPushButton("Disconnect Daq") + self.daq_disconnect_button.setCheckable(True) + self.daq_disconnect_button.clicked.connect(self.disconnect_dac) + + self.plot_calibration_button = QPushButton("Plot Calibration") + self.plot_calibration_button.setCheckable(True) + self.plot_calibration_button.clicked.connect(self.plot_calibration) + def plot_calibration(self): def decibel(power, ref_power=1.0, min_power=1e-20): """Transform power to decibel relative to ref_power. @@ -135,7 +205,7 @@ class PyRelacs(QMainWindow): log.debug("Connected") except IndexError: log.debug("DAQ is not connected, closing") - QApplication.quit() + self.on_exit() self.daq_connect_button.setDisabled(True) def disconnect_dac(self): @@ -168,6 +238,10 @@ class PyRelacs(QMainWindow): self.threadpool.start(worker) + def on_exit(self): + print("exit button!") + self.close() + def print_output(self, s): print(s)