def __init__(self, file_names=None): qt.QWidget.__init__(self) self.__treeview = silx.gui.hdf5.Hdf5TreeView(self) self.__text = qt.QTextEdit(self) self.__dataViewer = DataViewerFrame(self) vSplitter = qt.QSplitter(qt.Qt.Vertical) vSplitter.addWidget(self.__dataViewer) vSplitter.addWidget(self.__text) vSplitter.setSizes([10, 0]) splitter = qt.QSplitter(self) splitter.addWidget(self.__treeview) splitter.addWidget(vSplitter) splitter.setStretchFactor(1, 1) layout = qt.QVBoxLayout() layout.addWidget(splitter) layout.setStretchFactor(splitter, 1) self.setLayout(layout) # append all files to the tree if not file_names is None: for file_name in file_names: self.__treeview.findHdf5TreeModel().appendFile(file_name) self.__treeview.activated.connect(self.displayData)
def __init__(self, filenames=None): """ :param files_: List of HDF5 or Spec files (pathes or :class:`silx.io.spech5.SpecH5` or :class:`h5py.File` instances) """ qt.QMainWindow.__init__(self) self.setWindowTitle("Silx HDF5 widget example") self.__asyncload = False self.__treeview = silx.gui.hdf5.Hdf5TreeView(self) """Silx HDF5 TreeView""" self.__text = qt.QTextEdit(self) """Widget displaying information""" self.__dataViewer = DataViewerFrame(self) vSpliter = qt.QSplitter(qt.Qt.Vertical) vSpliter.addWidget(self.__dataViewer) vSpliter.addWidget(self.__text) vSpliter.setSizes([10, 0]) spliter = qt.QSplitter(self) spliter.addWidget(self.__treeview) spliter.addWidget(vSpliter) spliter.setStretchFactor(1, 1) main_panel = qt.QWidget(self) layout = qt.QVBoxLayout() layout.addWidget(spliter) layout.addWidget( self.createTreeViewConfigurationPanel(self, self.__treeview)) layout.setStretchFactor(spliter, 1) main_panel.setLayout(layout) self.setCentralWidget(main_panel) # append all files to the tree for file_name in filenames: self.__treeview.findHdf5TreeModel().appendFile(file_name) self.__treeview.activated.connect(self.displayData) self.__treeview.activated.connect( lambda index: self.displayEvent("activated", index)) self.__treeview.clicked.connect( lambda index: self.displayEvent("clicked", index)) self.__treeview.doubleClicked.connect( lambda index: self.displayEvent("doubleClicked", index)) self.__treeview.entered.connect( lambda index: self.displayEvent("entered", index)) self.__treeview.pressed.connect( lambda index: self.displayEvent("pressed", index)) self.__treeview.addContextMenuCallback(self.customContextMenu) # lambda function will never be called cause we store it as weakref self.__treeview.addContextMenuCallback(lambda event: None) # you have to store it first self.__store_lambda = lambda event: self.closeAndSyncCustomContextMenu( event) self.__treeview.addContextMenuCallback(self.__store_lambda)
def __init__(self, filenames=None): """ :param files_: List of HDF5 or Spec files (pathes or :class:`silx.io.spech5.SpecH5` or :class:`h5py.File` instances) """ qt.QMainWindow.__init__(self) self.setWindowTitle("Silx HDF5 widget example") self.__asyncload = False self.__treeview = silx.gui.hdf5.Hdf5TreeView(self) """Silx HDF5 TreeView""" self.__sourceModel = self.__treeview.model() """Store the source model""" self.__text = qt.QTextEdit(self) """Widget displaying information""" self.__dataViewer = DataViewerFrame(self) vSpliter = qt.QSplitter(qt.Qt.Vertical) vSpliter.addWidget(self.__dataViewer) vSpliter.addWidget(self.__text) vSpliter.setSizes([10, 0]) spliter = qt.QSplitter(self) spliter.addWidget(self.__treeview) spliter.addWidget(vSpliter) spliter.setStretchFactor(1, 1) main_panel = qt.QWidget(self) layout = qt.QVBoxLayout() layout.addWidget(spliter) layout.addWidget( self.createTreeViewConfigurationPanel(self, self.__treeview)) layout.setStretchFactor(spliter, 1) main_panel.setLayout(layout) self.setCentralWidget(main_panel) # append all files to the tree for file_name in filenames: self.__treeview.findHdf5TreeModel().appendFile(file_name) self.__treeview.activated.connect(self.displayData)
def createEditor(self, parent, option, index): """ Returns the widget used to edit the item specified by index for editing. We use it not to edit the content but to show the content with a convenient scroll bar. :param qt.QWidget parent: Parent of the widget :param qt.QStyleOptionViewItem option: Control how the editor is shown :param qt.QIndex index: Index of the data to display """ if not index.isValid(): return super(_MultiLineItem, self).createEditor(parent, option, index) editor = qt.QTextEdit(parent) editor.setReadOnly(True) return editor
def fillSplitterPlot(self): node = self.node # self.backend = dict(backend='opengl') self.backend = dict(backend='matplotlib') if node.plotDimension == 3: self.plot = Plot3D(self.splitterPlot, position=Plot3D.posInfo, **self.backend) self.plot.setCustomPosInfo() elif node.plotDimension == 2: self.plot = Plot2D(self.splitterPlot, **self.backend) elif node.plotDimension == 1: xLbl = node.getPropList('qLabel', role='x')[0] yLbl = node.getPropList('qLabel', role='y')[0] self.plot = Plot1D(self.splitterPlot, position=[(xLbl, lambda x, y: x), (yLbl, lambda x, y: y)], **self.backend) self.plot.getXAxis().setLabel(xLbl) self.plot.getYAxis().setLabel(yLbl) else: raise ValueError("wrong plot dimension") self.plotSetup() self.savedPlotProps = {} self.metadata = qt.QTextEdit(self.splitterPlot) self.metadata.setStyleSheet("QTextEdit {border: none;}") self.metadata.setReadOnly(True) # self.metadata.setContentsMargins(0, 0, 0, 0) self.metadata.setMinimumHeight(80) self.metadata.setAlignment(qt.Qt.AlignLeft | qt.Qt.AlignTop) self.metadata.setText("text metadata here") self.metadata.setHorizontalScrollBarPolicy(qt.Qt.ScrollBarAlwaysOff) self.metadata.setVerticalScrollBarPolicy(qt.Qt.ScrollBarAlwaysOn) self.metadata.setSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Expanding) self.splitterPlot.setCollapsible(0, False) self.splitterPlot.setStretchFactor(0, 1) # don't remove self.splitterPlot.setStretchFactor(1, 0) self.splitterPlot.setSizes([1, 1])
def __init__(self, file_name=None): qt.QWidget.__init__(self) self.__treeview = silx.gui.hdf5.Hdf5TreeView(self) self.__text = qt.QTextEdit(self) self.__dataViewer = DataViewerFrame(self) box = oasysgui.widgetBox(self, "", orientation="vertical") box.layout().addWidget(self.__dataViewer) self.box_scale = oasysgui.widgetBox(box, "", orientation="horizontal") gui.button(self.box_scale, self, "Apply Coordinates", callback=self.rescale) vSplitter = qt.QSplitter(qt.Qt.Vertical) vSplitter.addWidget(box) vSplitter.addWidget(self.__text) vSplitter.setSizes([10, 0]) splitter = qt.QSplitter(self) splitter.addWidget(self.__treeview) splitter.addWidget(vSplitter) splitter.setStretchFactor(1, 1) layout = qt.QVBoxLayout() layout.addWidget(splitter) layout.setStretchFactor(splitter, 1) self.setLayout(layout) # append all files to the tree if not file_name is None: self.__treeview.findHdf5TreeModel().removeRow(0) self.__treeview.findHdf5TreeModel().appendFile(file_name) self.__treeview.activated.connect(self.displayData)
def createWidget(self, parent): widget = qt.QTextEdit(parent) widget.setTextInteractionFlags(qt.Qt.TextSelectableByMouse) widget.setAlignment(qt.Qt.AlignLeft | qt.Qt.AlignTop) self.__formatter = TextFormatter(parent) return widget