Source code for pyporegui.widgets.event_analysis_tab

from PySide import QtGui
from pyporegui._thread_manager import _ThreadManager
from pyporegui.file_items import FilterListItem, FileListItem
from pyporegui.widgets.event_analysis_plot_widget import EventAnalysisPlotWidget

__all__ = ['EventAnalysisTab']


[docs]class EventAnalysisTab(_ThreadManager, QtGui.QSplitter): """ """
[docs] def __init__(self, parent=None): """ :param PySide.QtGui.QMainWindow parent: Parent window of this tab (optional). """ super(EventAnalysisTab, self).__init__(parent) self._parent = parent options = self._create_event_analysis_options() self.event_analysis_plot_widget = EventAnalysisPlotWidget() # Put everything in baseline_filter_parameter scroll area scroll_options = QtGui.QScrollArea() scroll_plots = QtGui.QScrollArea() scroll_options.setWidgetResizable(True) scroll_plots.setWidgetResizable(True) scroll_options.setWidget(options) scroll_plots.setWidget(self.event_analysis_plot_widget) self.addWidget(scroll_options) self.addWidget(scroll_plots)
[docs] def color_picker_btn_clicked(self): col = QtGui.QColorDialog.getColor(initial=self.event_color) if col.isValid(): self.event_color = col self.frm.setStyleSheet("QWidget { background-color: %s }" % col.name())
[docs] def add_filter_clicked(self): items = self.list_event_widget.selectedItems() if items is None or len(items) < 1: return params = self._get_current_event_analysis_params() file_names = [] for item in items: file_names.append(item.get_file_name()) item = FilterListItem(file_names, **params) self.list_filter_widget.addItem(item) self.event_analysis_plot_widget.add_selections(file_names, params)
def _get_current_event_analysis_params(self): params = {'color': self.event_color} return params
[docs] def open_event_databases(self, file_names=None): """ Adds the files to the list widget. :param ListType<StringType> file_names: (Optional) List of file names to be added to the list widget. If not included, then a QtGui.QFileDialog will be opened to select files. """ if file_names is None: file_names = QtGui.QFileDialog.getOpenFileNames(self, 'Open event database', '.', '*.h5')[0] if len(file_names) > 0: self.list_event_widget.clear() else: return for w in file_names: item = FileListItem(w) self.list_event_widget.addItem(item)
[docs] def remove_filter_clicked(self): items = self.list_filter_widget.selectedItems() for item in items: index = self.list_filter_widget.indexFromItem(item).row() self.event_analysis_plot_widget.remove_filter(index) self.list_filter_widget.takeItem(index)
def _on_event_file_selection_changed(self): """ Called when the user clicks a new file in the file list. """ self.btn_add_filter.setEnabled(True) def _create_event_analysis_options(self): """ Initializes the analysis options on the left side of the tab. """ scroll_area = QtGui.QScrollArea() scroll_area.setWidgetResizable(True) # Create baseline_filter_parameter list for files want to analyze self.list_event_widget = QtGui.QListWidget() self.list_event_widget.setMaximumHeight(100) self.list_event_widget.itemSelectionChanged.connect(self._on_event_file_selection_changed) self.list_event_widget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) files_options = QtGui.QFormLayout() files_options.addRow('Event Databases:', self.list_event_widget) # # Color Picker self.event_color = QtGui.QColor('blue') pick_color_btn = QtGui.QPushButton() pick_color_btn.setText('Choose a Color') pick_color_btn.clicked.connect(self.color_picker_btn_clicked) self.frm = QtGui.QFrame() self.frm.setStyleSheet("QWidget { background-color: %s }" % self.event_color.name()) self.frm.setMinimumSize(15, 15) self.frm.setMaximumSize(30, 30) files_options.addRow(pick_color_btn, self.frm) # # List of filters created self.btn_add_filter = QtGui.QPushButton('Add selections as filter') self.btn_add_filter.clicked.connect(self.add_filter_clicked) self.btn_add_filter.setEnabled(False) form_filter = QtGui.QFormLayout() form_filter.addRow('Filters:', self.btn_add_filter) self.list_filter_widget = QtGui.QListWidget() vbox = QtGui.QVBoxLayout() vbox.addLayout(form_filter) vbox.addWidget(self.list_filter_widget) btn_remove_filter = QtGui.QPushButton('Remove selected filters') btn_remove_filter.clicked.connect(self.remove_filter_clicked) vbox.addWidget(btn_remove_filter) vbox_left = QtGui.QVBoxLayout() vbox_left.addLayout(files_options) vbox_left.addLayout(vbox) vbox_left_widget = QtGui.QWidget() vbox_left_widget.setLayout(vbox_left) scroll_area.setWidget(vbox_left_widget) return scroll_area