[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.QtWidgets import QFrame, QGroupBox, QLabel, QListWidget, QListWidgetItem, QSplitter, QStackedLayout, QAbstractItemView, QVBoxLayout, QWidget, QGridLayout, QSpacerItem, QSizePolicy, QTreeView, QHeaderView
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 plot_screen import PlotScreen
@ -122,7 +122,8 @@ class FileView(QWidget):
pass
class SplashScreen(QWidget):
keyPressed = pyqtSignal(int)
def __init__(self, parent=None) -> None:
super().__init__(parent=parent)
layout = QGridLayout()
@ -148,13 +149,18 @@ class SplashScreen(QWidget):
self._file_list = QListWidget(self)
self._file_list.setSelectionMode(QAbstractItemView.SingleSelection)
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)
frame.setLayout(l)
layout.addWidget(frame, 3, 1)
self._file_map = {}
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):
short = original
parts = original.split(os.sep)
@ -187,7 +193,9 @@ class SplashScreen(QWidget):
def _on_file_clicked(self, item):
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()
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()])