[splash] replace selection listener with key listener ...

items are only loaded upon activation (return) or clicking them, not
because the list changes
This commit is contained in:
Jan Grewe 2021-01-04 13:01:23 +01:00
parent a93a02d9ac
commit ebca5c4b0b

View File

@ -2,7 +2,7 @@ import os
from PyQt5 import QtWidgets from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QFrame, QGroupBox, QLabel, QListWidget, QListWidgetItem, QSplitter, QStackedLayout, QAbstractItemView, QVBoxLayout, QWidget, QGridLayout, QSpacerItem, QSizePolicy, QTreeView, QHeaderView from PyQt5.QtWidgets import QFrame, QGroupBox, QLabel, QListWidget, QListWidgetItem, QSplitter, QStackedLayout, QAbstractItemView, QVBoxLayout, QWidget, QGridLayout, QSpacerItem, QSizePolicy, QTreeView, QHeaderView
from PyQt5.QtGui import QPixmap from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import QItemSelectionModel, Qt, QSettings, QSize from PyQt5.QtCore import QItemSelectionModel, Qt, QSettings, QSize, pyqtSignal
from file_handler import FileHandler from file_handler import FileHandler
from plot_screen import PlotScreen from plot_screen import PlotScreen
@ -122,7 +122,8 @@ class FileView(QWidget):
pass pass
class SplashScreen(QWidget): class SplashScreen(QWidget):
keyPressed = pyqtSignal(int)
def __init__(self, parent=None) -> None: def __init__(self, parent=None) -> None:
super().__init__(parent=parent) super().__init__(parent=parent)
layout = QGridLayout() layout = QGridLayout()
@ -148,13 +149,18 @@ class SplashScreen(QWidget):
self._file_list = QListWidget(self) self._file_list = QListWidget(self)
self._file_list.setSelectionMode(QAbstractItemView.SingleSelection) self._file_list.setSelectionMode(QAbstractItemView.SingleSelection)
self._file_list.itemClicked.connect(self._on_file_clicked) self._file_list.itemClicked.connect(self._on_file_clicked)
self._file_list.itemSelectionChanged.connect(self._on_selection_changed) self.keyPressed.connect(self._on_key_pressed)
l.addWidget(self._file_list) l.addWidget(self._file_list)
frame.setLayout(l) frame.setLayout(l)
layout.addWidget(frame, 3, 1) layout.addWidget(frame, 3, 1)
self._file_map = {} self._file_map = {}
self._read_recent_files() self._read_recent_files()
def keyPressEvent(self, event):
super(SplashScreen, self).keyPressEvent(event)
if event.key() == Qt.Key_Return:
self.keyPressed.emit(event.key())
def _create_short_filename(self, original, index, max_len=40): def _create_short_filename(self, original, index, max_len=40):
short = original short = original
parts = original.split(os.sep) parts = original.split(os.sep)
@ -187,7 +193,9 @@ class SplashScreen(QWidget):
def _on_file_clicked(self, item): def _on_file_clicked(self, item):
comm.communicator.open_recent.emit(self._file_map[item.text()]) comm.communicator.open_recent.emit(self._file_map[item.text()])
def _on_selection_changed(self): def _on_key_pressed(self, key):
item = self._file_list.currentItem() item = self._file_list.currentItem()
comm.communicator.open_recent.emit(self._file_map[item.text()]) print(item)
if item is not None and key == Qt.Key_Return:
comm.communicator.open_recent.emit(self._file_map[item.text()])