flake8
This commit is contained in:
parent
a19df544d7
commit
6524c6afde
@ -12,7 +12,7 @@ while it.hasNext():
|
|||||||
name = it.next()
|
name = it.next()
|
||||||
if "sounds/" in name:
|
if "sounds/" in name:
|
||||||
SNDS_DICT[name.split("/")[-1]] = "qrc" + name
|
SNDS_DICT[name.split("/")[-1]] = "qrc" + name
|
||||||
|
print(SNDS_DICT)
|
||||||
organization_name = "de.uni-tuebingen.neuroetho"
|
organization_name = "de.uni-tuebingen.neuroetho"
|
||||||
application_name = "BlipBlop"
|
application_name = "BlipBlop"
|
||||||
application_version = 0.1
|
application_version = 0.1
|
||||||
@ -32,7 +32,8 @@ for icon in ICONS_PATHS:
|
|||||||
|
|
||||||
def get_sound(name):
|
def get_sound(name):
|
||||||
if name in SNDS_DICT.keys():
|
if name in SNDS_DICT.keys():
|
||||||
return QMediaContent(QUrl(SNDS_DICT[name]))
|
url = QUrl(SNDS_DICT[name])
|
||||||
|
return QMediaContent(url)
|
||||||
else:
|
else:
|
||||||
print("Sound %s not found!" % name)
|
print("Sound %s not found!" % name)
|
||||||
return None
|
return None
|
||||||
@ -43,4 +44,3 @@ def get_icon(name):
|
|||||||
return QIcon(ICON_DICT[name])
|
return QIcon(ICON_DICT[name])
|
||||||
else:
|
else:
|
||||||
return QIcon("blipblop_logo.png")
|
return QIcon("blipblop_logo.png")
|
||||||
|
|
||||||
|
@ -1,142 +0,0 @@
|
|||||||
from PyQt5.QtWidgets import QComboBox, QFrame, QGroupBox, QHBoxLayout, QLabel, QSplitter, QTextEdit, QVBoxLayout, QWidget
|
|
||||||
from PyQt5.QtCore import QItemSelectionModel, Qt
|
|
||||||
|
|
||||||
from nixview.util.file_handler import FileHandler
|
|
||||||
from nixview.util.descriptors import ItemDescriptor
|
|
||||||
import nixview.communicator as comm
|
|
||||||
import nixview.constants as cnst
|
|
||||||
from nixview.data_models.tree_model import NixTreeView, TreeModel, TreeType
|
|
||||||
|
|
||||||
|
|
||||||
class FileScreen(QWidget):
|
|
||||||
def __init__(self, parent=None) -> None:
|
|
||||||
super().__init__(parent=parent)
|
|
||||||
self._file_handler = FileHandler()
|
|
||||||
|
|
||||||
vbox = QVBoxLayout()
|
|
||||||
self.setLayout(vbox)
|
|
||||||
|
|
||||||
main_splitter = QSplitter(Qt.Vertical)
|
|
||||||
self.layout().addWidget(main_splitter)
|
|
||||||
|
|
||||||
self._info = EntityInfo(self)
|
|
||||||
main_splitter.addWidget(self._info)
|
|
||||||
|
|
||||||
self._data_tree = NixTreeView(self)
|
|
||||||
|
|
||||||
self._tree_type_combo = QComboBox()
|
|
||||||
self._tree_type_combo.adjustSize()
|
|
||||||
self._tree_type_combo.addItems([TreeType.Data.value, TreeType.Full.value, TreeType.Metadata.value])
|
|
||||||
self._tree_type_combo.currentTextChanged.connect(self.update)
|
|
||||||
|
|
||||||
hbox = QHBoxLayout()
|
|
||||||
hbox.addWidget(QLabel("Tree type:"))
|
|
||||||
hbox.addWidget(self._tree_type_combo)
|
|
||||||
hbox.addStretch()
|
|
||||||
data_group = QGroupBox("Data")
|
|
||||||
data_vbox = QVBoxLayout()
|
|
||||||
data_vbox.setContentsMargins(1, 10, 1, 1)
|
|
||||||
|
|
||||||
data_vbox.addLayout(hbox)
|
|
||||||
data_vbox.addWidget(self._data_tree)
|
|
||||||
data_group.setLayout(data_vbox)
|
|
||||||
|
|
||||||
main_splitter.addWidget(data_group)
|
|
||||||
main_splitter.setSizes([200, 600])
|
|
||||||
vbox.addWidget(main_splitter)
|
|
||||||
|
|
||||||
def dataTreeSelection(self, current_index, last_index):
|
|
||||||
if not current_index.isValid():
|
|
||||||
return
|
|
||||||
item = current_index.internalPointer()
|
|
||||||
comm.communicator.item_selected.emit(item)
|
|
||||||
self._info.setEntityInfo(item.node_descriptor)
|
|
||||||
|
|
||||||
def update(self):
|
|
||||||
tt = TreeType.Data
|
|
||||||
if self._tree_type_combo.currentText() == TreeType.Data.value:
|
|
||||||
tt = TreeType.Data
|
|
||||||
elif self._tree_type_combo.currentText() == TreeType.Full.value:
|
|
||||||
tt = TreeType.Full
|
|
||||||
elif self._tree_type_combo.currentText() == TreeType.Metadata.value:
|
|
||||||
tt = TreeType.Metadata
|
|
||||||
self._info.setEntityInfo(None)
|
|
||||||
data_model = TreeModel(self._file_handler, tt)
|
|
||||||
self._data_tree.setModel(data_model)
|
|
||||||
selection_model = QItemSelectionModel(data_model)
|
|
||||||
self._data_tree.setSelectionModel(selection_model)
|
|
||||||
selection_model.currentChanged.connect(self.dataTreeSelection)
|
|
||||||
for i in range(data_model.columnCount(None)):
|
|
||||||
self._data_tree.resizeColumnToContents(i)
|
|
||||||
self._info.setFileInfo(self._file_handler.file_descriptor)
|
|
||||||
|
|
||||||
def reset(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class EntityInfo(QWidget):
|
|
||||||
|
|
||||||
def __init__(self, parent):
|
|
||||||
super().__init__(parent=parent)
|
|
||||||
self._file_handler = FileHandler()
|
|
||||||
self.setLayout(QHBoxLayout())
|
|
||||||
|
|
||||||
self._metadata_tree = NixTreeView()
|
|
||||||
|
|
||||||
mdata_grp = QGroupBox("Metadata")
|
|
||||||
mdata_grp.setLayout(QVBoxLayout())
|
|
||||||
mdata_grp.layout().setContentsMargins(1, 10, 1, 1)
|
|
||||||
mdata_grp.layout().addWidget(self._metadata_tree)
|
|
||||||
|
|
||||||
file_info_grp = QGroupBox("File info")
|
|
||||||
file_info_grp.setLayout(QVBoxLayout())
|
|
||||||
file_info_grp.layout().setContentsMargins(1, 10, 1, 1)
|
|
||||||
self._file_info = QTextEdit("File information")
|
|
||||||
self._file_info.setEnabled(True)
|
|
||||||
self._file_info.setTextInteractionFlags(Qt.TextSelectableByKeyboard | Qt.TextSelectableByMouse)
|
|
||||||
self._file_info.setFrameShape(QFrame.NoFrame)
|
|
||||||
self._file_info.setLineWrapMode(QTextEdit.WidgetWidth)
|
|
||||||
file_info_grp.layout().addWidget(self._file_info)
|
|
||||||
|
|
||||||
entity_info_grp = QGroupBox("Entity info")
|
|
||||||
entity_info_grp.setLayout(QVBoxLayout())
|
|
||||||
entity_info_grp.layout().setContentsMargins(1, 10, 1, 1)
|
|
||||||
self._entity_info = QTextEdit("Entity information")
|
|
||||||
self._file_info.setEnabled(True)
|
|
||||||
self._file_info.setTextInteractionFlags(Qt.TextSelectableByKeyboard | Qt.TextSelectableByMouse)
|
|
||||||
self._file_info.setFrameShape(QFrame.NoFrame)
|
|
||||||
self._file_info.setLineWrapMode(QTextEdit.WidgetWidth)
|
|
||||||
entity_info_grp.layout().addWidget(self._entity_info)
|
|
||||||
|
|
||||||
self._splitter = QSplitter(Qt.Horizontal)
|
|
||||||
self._splitter.addWidget(file_info_grp)
|
|
||||||
self._splitter.addWidget(entity_info_grp)
|
|
||||||
self._splitter.addWidget(mdata_grp)
|
|
||||||
self._splitter.setSizes([200, 400, 0])
|
|
||||||
self._splitter.setStretchFactor(0, 0)
|
|
||||||
self._splitter.setStretchFactor(1, 1)
|
|
||||||
self._splitter.setStretchFactor(2, 1)
|
|
||||||
|
|
||||||
self.layout().addWidget(self._splitter)
|
|
||||||
|
|
||||||
|
|
||||||
def setFileInfo(self, file_info):
|
|
||||||
if file_info is not None:
|
|
||||||
self._file_info.setText(file_info.toHtml())
|
|
||||||
|
|
||||||
def setEntityInfo(self, entity_info):
|
|
||||||
if entity_info is None or not isinstance(entity_info, ItemDescriptor):
|
|
||||||
self._splitter.setSizes([200, 400, 0])
|
|
||||||
self._entity_info.setText("")
|
|
||||||
self._metadata_tree.setModel(None)
|
|
||||||
return
|
|
||||||
|
|
||||||
if entity_info.metadata_id is not None:
|
|
||||||
self._splitter.setSizes([200, 400, 400])
|
|
||||||
else:
|
|
||||||
self._splitter.setSizes([200, 400, 0])
|
|
||||||
self._entity_info.setText(entity_info.to_html())
|
|
||||||
metadata_model = TreeModel(self._file_handler, TreeType.Metadata, root_section_id=entity_info.metadata_id)
|
|
||||||
self._metadata_tree.setModel(metadata_model)
|
|
||||||
for i in range(metadata_model.columnCount(None)):
|
|
||||||
self._metadata_tree.resizeColumnToContents(i)
|
|
@ -11,10 +11,10 @@ from blipblop.util.results import MeasurementResults
|
|||||||
|
|
||||||
class ResultsScreen(QWidget):
|
class ResultsScreen(QWidget):
|
||||||
back_signal = pyqtSignal()
|
back_signal = pyqtSignal()
|
||||||
|
|
||||||
def __init__(self, parent=None) -> None:
|
def __init__(self, parent=None) -> None:
|
||||||
super().__init__(parent=parent)
|
super().__init__(parent=parent)
|
||||||
|
|
||||||
self.table = QTableWidget()
|
self.table = QTableWidget()
|
||||||
self._stack = QStackedLayout(self)
|
self._stack = QStackedLayout(self)
|
||||||
label = QLabel("There are no results to show\n(press ESC to go back)")
|
label = QLabel("There are no results to show\n(press ESC to go back)")
|
||||||
@ -27,27 +27,27 @@ class ResultsScreen(QWidget):
|
|||||||
self._stack.addWidget(label) # 0
|
self._stack.addWidget(label) # 0
|
||||||
self._stack.addWidget(self.table) # 1
|
self._stack.addWidget(self.table) # 1
|
||||||
self.setLayout(self._stack)
|
self.setLayout(self._stack)
|
||||||
|
|
||||||
self._back_action = QAction("back")
|
self._back_action = QAction("back")
|
||||||
self._back_action.setShortcut(QKeySequence("escape"))
|
self._back_action.setShortcut(QKeySequence("escape"))
|
||||||
self._back_action.triggered.connect(self.on_back)
|
self._back_action.triggered.connect(self.on_back)
|
||||||
|
|
||||||
self._copy_action = QAction("copy")
|
self._copy_action = QAction("copy")
|
||||||
self._copy_action.setShortcut(QKeySequence("ctrl+c"))
|
self._copy_action.setShortcut(QKeySequence("ctrl+c"))
|
||||||
self._copy_action.triggered.connect(self.copy_selection)
|
self._copy_action.triggered.connect(self.copy_selection)
|
||||||
|
|
||||||
self.addAction(self._back_action)
|
self.addAction(self._back_action)
|
||||||
self.addAction(self._copy_action)
|
self.addAction(self._copy_action)
|
||||||
|
|
||||||
def set_results(self, measurement_results):
|
def set_results(self, measurement_results):
|
||||||
if len(measurement_results) == 0:
|
if len(measurement_results) == 0:
|
||||||
return
|
return
|
||||||
|
|
||||||
for mr in measurement_results:
|
for mr in measurement_results:
|
||||||
if not isinstance(mr, MeasurementResults):
|
if not isinstance(mr, MeasurementResults):
|
||||||
print("Some result entries are no MeasurementResults!")
|
print("Some result entries are no MeasurementResults!")
|
||||||
return
|
return
|
||||||
|
|
||||||
row_count = max([len(r.results) for r in measurement_results])
|
row_count = max([len(r.results) for r in measurement_results])
|
||||||
col_count = len(measurement_results)
|
col_count = len(measurement_results)
|
||||||
self.table.setRowCount(row_count)
|
self.table.setRowCount(row_count)
|
||||||
@ -89,4 +89,3 @@ class ResultsScreen(QWidget):
|
|||||||
def reset(self):
|
def reset(self):
|
||||||
self.table.clear()
|
self.table.clear()
|
||||||
self._stack.setCurrentIndex(0)
|
self._stack.setCurrentIndex(0)
|
||||||
|
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
import os
|
|
||||||
from PyQt5.QtWidgets import QWidget, QGridLayout, QLabel
|
from PyQt5.QtWidgets import QWidget, QGridLayout, QLabel
|
||||||
from PyQt5.QtGui import QFont, QPixmap
|
from PyQt5.QtGui import QFont, QPixmap
|
||||||
from PyQt5.QtCore import Qt, pyqtSignal
|
from PyQt5.QtCore import Qt, pyqtSignal
|
||||||
@ -6,6 +5,7 @@ from PyQt5.QtCore import Qt, pyqtSignal
|
|||||||
|
|
||||||
class MyLabel(QLabel):
|
class MyLabel(QLabel):
|
||||||
clicked = pyqtSignal()
|
clicked = pyqtSignal()
|
||||||
|
|
||||||
def mouseReleaseEvent(self, QMouseEvent):
|
def mouseReleaseEvent(self, QMouseEvent):
|
||||||
if QMouseEvent.button() == Qt.LeftButton:
|
if QMouseEvent.button() == Qt.LeftButton:
|
||||||
self.clicked.emit()
|
self.clicked.emit()
|
||||||
@ -21,11 +21,11 @@ class StartScreen(QWidget):
|
|||||||
layout = QGridLayout()
|
layout = QGridLayout()
|
||||||
layout.setColumnStretch(0, 1)
|
layout.setColumnStretch(0, 1)
|
||||||
layout.setColumnStretch(6, 1)
|
layout.setColumnStretch(6, 1)
|
||||||
|
|
||||||
layout.setRowStretch(0, 1)
|
layout.setRowStretch(0, 1)
|
||||||
layout.setRowStretch(4, 1)
|
layout.setRowStretch(4, 1)
|
||||||
self.setLayout(layout)
|
self.setLayout(layout)
|
||||||
|
|
||||||
label = QLabel("Measure your reaction times!\nselect a task")
|
label = QLabel("Measure your reaction times!\nselect a task")
|
||||||
font = QFont()
|
font = QFont()
|
||||||
font.setBold(True)
|
font.setBold(True)
|
||||||
@ -34,26 +34,26 @@ class StartScreen(QWidget):
|
|||||||
label.setFont(font)
|
label.setFont(font)
|
||||||
label.setAlignment(Qt.AlignCenter)
|
label.setAlignment(Qt.AlignCenter)
|
||||||
layout.addWidget(label, 1, 2, 1, 3, Qt.AlignCenter)
|
layout.addWidget(label, 1, 2, 1, 3, Qt.AlignCenter)
|
||||||
|
|
||||||
visual_task_label = MyLabel()
|
visual_task_label = MyLabel()
|
||||||
visual_task_label.setStatusTip("Start a new visual measurement (Ctrl+1)")
|
visual_task_label.setStatusTip("Start a new visual measurement (Ctrl+1)")
|
||||||
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(":/icons/visual_task_large"))
|
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.setStatusTip("Start a new auditory measurement (Ctrl+2)")
|
auditory_task_label.setStatusTip("Start a new auditory measurement (Ctrl+2)")
|
||||||
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(":/icons/auditory_task_large"))
|
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)
|
||||||
|
|
||||||
layout.addWidget(visual_task_label, 2, 1, 2, 2, Qt.AlignCenter )
|
layout.addWidget(visual_task_label, 2, 1, 2, 2, Qt.AlignCenter)
|
||||||
layout.addWidget(auditory_task_label, 2, 4, 2, 2, Qt.AlignCenter )
|
layout.addWidget(auditory_task_label, 2, 4, 2, 2, Qt.AlignCenter)
|
||||||
|
|
||||||
def new_auditory_task(self):
|
def new_auditory_task(self):
|
||||||
self.auditory_task_signal.emit()
|
self.auditory_task_signal.emit()
|
||||||
|
|
||||||
def new_visual_task(self):
|
def new_visual_task(self):
|
||||||
self.visual_task_signal.emit()
|
self.visual_task_signal.emit()
|
||||||
|
Loading…
Reference in New Issue
Block a user