diff --git a/trace/main.py b/trace/main.py index 9423089..8749998 100644 --- a/trace/main.py +++ b/trace/main.py @@ -7,7 +7,7 @@ from datetime import datetime from qtpy.QtGui import QFont, QColor, QImage, QKeySequence -from qtpy.QtCore import Qt, Slot, QSize, Signal, QBuffer, QIODevice, QSettings +from qtpy.QtCore import Qt, Slot, QSize, QTimer, Signal, QBuffer, QIODevice, QSettings from qtpy.QtWidgets import ( QMenu, QLabel, @@ -184,6 +184,30 @@ def build_plot_side(self, parent: QWidget) -> QWidget: show_all=False, ) + self._archive_status_label = QLabel("Fetching archive data...", self.plot) + self._archive_status_label.hide() + self._archive_status_label.setStyleSheet( + """ + QLabel { + background-color: rgba(0, 0, 0, 140); + color: white; + padding: 6px 10px; + border-radius: 4px; + font-weight: bold; + } + """ + ) + self._archive_status_label.adjustSize() + self._archive_status_label.move(20, 20) + self._archive_status_label.raise_() + + self._archive_status_timer = QTimer(self) + self._archive_status_timer.setSingleShot(True) + self._archive_status_timer.timeout.connect(self.show_archive_status) + + self.plot.archive_request_started.connect(self.on_archive_request_started) + self.plot.archive_request_finished.connect(self.on_archive_request_finished) + multi_axis_plot = self.plot.plotItem multi_axis_plot.vb.menu = None multi_axis_plot.sigXRangeChangedManually.connect(self.disable_auto_scroll_button.click) @@ -435,6 +459,21 @@ def on_theme_changed(self, theme: Theme) -> None: if settings_icon: self.settings_button.setIcon(settings_icon) + def on_archive_request_started(self) -> None: + self._archive_status_timer.stop() + self._archive_status_timer.start(2000) + + def on_archive_request_finished(self) -> None: + self._archive_status_timer.stop() + self._archive_status_label.hide() + + def show_archive_status(self) -> None: + if not self.plot._archive_request_queued: + return + self._archive_status_label.adjustSize() + self._archive_status_label.show() + self._archive_status_label.raise_() + def set_curve_palette(self, palette_name: str, apply: bool = False): """ Set color palette for adding new curves