Voxel Calibration Wizard

Source code for views.DataViewContainer

#
# TI Voxel Viewer component.
#
# Copyright (c) 2014 Texas Instruments Inc.
#

from PySide import QtGui, QtCore

from DataView import DataView

from models.DataEngine import DataFormat

from CustomAction import CustomAction

[docs]class DataViewContainer(QtGui.QGroupBox): def __init__(self, dataEngine, dataFormatName, shouldLinkViewBox = False, showFormatMenu = True, parent = None): super(DataViewContainer, self).__init__(parent) self.dataEngine = dataEngine self.statusBar = None self.shouldLinkViewBox = shouldLinkViewBox self.setDataFormat(dataFormatName) if showFormatMenu: self.menuActions = [] self.setContextMenu() self.dataEngine.statisticsChanged.connect(self.setContextMenu) self.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
[docs] def removeAllActions(self): if hasattr(self, 'menuActions'): for a in self.menuActions: self.removeAction(a) self.menuActions = []
[docs] def setContextMenu(self): self.removeAllActions() df = self.dataEngine.getDataFormats() for d in df: a = CustomAction(self.dataEngine.dataFormats[d].title, d, self) a.triggeredObject.connect(self.setDataFormat) self.addAction(a) self.menuActions.append(a)
[docs] def setStatusBar(self, statusBar): self.statusBar = statusBar if hasattr(self, 'dataView'): self.dataView.setStatusBar(self.statusBar)
[docs] def setDataFormat(self, dataFormatName): if not self.dataEngine.dataFormats.has_key(dataFormatName): QtGui.QMessageBox('DataView failed', 'Failed to show data of format "' + dataFormatName + '"') self.dataFormat = self.dataEngine.dataFormats[dataFormatName] self.setTitle(self.dataFormat.title) if hasattr(self, 'dataView') and self.dataView.dataFormat.dataType == self.dataFormat.dataType: #self.dataView.unlink() #QtGui.QWidget().setLayout(self.layout) #print 'Linking new data...' self.dataView.setDataFormat(self.dataFormat) else: if hasattr(self, 'dataView'): self.dataView.cleanup() QtGui.QWidget().setLayout(self.layout) self.layout = QtGui.QVBoxLayout() self.dataView = DataView.getDataView(self.dataFormat, self.dataEngine) if self.statusBar: self.dataView.setStatusBar(self.statusBar) self.layout.addWidget(self.dataView) self.setLayout(self.layout) if self.dataFormat.dataType == DataFormat.DATA_2D and self.shouldLinkViewBox: self.dataView.linkViewBox()