def addProbeWidget( self, layout ): self.pointSelector = PointSelectionWidget([ 3, 5 ]) layout.addWidget( self.pointSelector ) self.pointSelector.setSelectionCallback( self.setPoint )
class SliceWidget(QtGui.QWidget): def __init__( self, parent, hcomm ): super( SliceWidget, self ).__init__( parent ) self.widgets = {} self.comm = hcomm self.point = None self.createTabLayout() self.leveling_tab_index, tab_layout = self.addTab( 'Slice Controls' ) self.sLonIndex = self.addSlider( "Longitude", tab_layout , min_value=0, max_value=360, init_value=180 ) self.sLatIndex = self.addSlider( "Latitude", tab_layout , min_value=-90, max_value=90, init_value=0 ) self.sLevIndex = self.addSlider( "Level", tab_layout , min_value=0, max_value=100, init_value=0 ) self.sTimeIndex = self.addSlider( "Time", tab_layout , min_value=0, max_value=100, init_value=0 ) self.probe_tab_index, probe_tab_layout = self.addTab( 'Probe' ) self.addProbeWidget( probe_tab_layout ) self.probe_tab_index, probe_tab_layout = self.addTab( 'ROI' ) self.addROIWidget( probe_tab_layout ) # print "Starting SliceWidget, rank = %d, nproc = %d" % ( self.comm.rank, self.comm.size ) def addProbeWidget( self, layout ): self.pointSelector = PointSelectionWidget([ 3, 5 ]) layout.addWidget( self.pointSelector ) self.pointSelector.setSelectionCallback( self.setPoint ) def addROIWidget( self, layout ): self.roiSelector = ROISelectionWidget(self) layout.addWidget( self.roiSelector ) self.connect( self.roiSelector, QtCore.SIGNAL('roiSelected'), self.setSelectedROI ) def setPoint(self, rel_point, button ): self.point = rel_point print "Relative Selection Point: ", str( self.point ) if self.comm: self.comm.post( { 'type': 'Probe', 'point' : self.point, 'button' : button } ) def setSelectedROI(self, roi ): self.roi = roi print "Set ROI: ", str( self.roi ) if self.comm: self.comm.post( { 'type': 'Subset', 'roi' : self.roi } ) def addSlider(self, label, layout, **args ): slider_index = len( self.widgets ) slider = LabeledSliderWidget( slider_index, label, **args ) self.connect( slider, QtCore.SIGNAL('ConfigCmd'), self.processSliderConfigCmd ) layout.addWidget( slider ) self.widgets[slider_index] = slider return slider_index def processSliderConfigCmd( self, cmd, slider_index, values=None ): # print "Slider[%d] Config Cmd ( %s ): %s " % ( slider_index, cmd, str(values) ) if self.comm: self.comm.post( { 'type': 'Slider', 'index' : slider_index, 'cmd' : cmd, 'values' : values } ) def processConfig( self, config_data ): if self.comm: self.comm.post( { 'type': 'Config', 'data' : config_data } ) def updateTabPanel( self, index ): pass def addTab( self, tabname ): self.tabWidget.setEnabled(True) tabContents = QtGui.QWidget( self.tabWidget ) layout = QtGui.QVBoxLayout() tabContents.setLayout(layout) tab_index = self.tabWidget.addTab( tabContents, tabname ) return tab_index, layout def getCurrentTabIndex(self): return self.tabWidget.currentIndex() def createTabLayout(self): if self.layout() == None: self.setLayout(QtGui.QVBoxLayout()) # title_label = QtGui.QLabel( self.getName() ) # self.layout().addWidget( title_label ) self.tabWidget = QtGui.QTabWidget(self) self.layout().addWidget( self.tabWidget ) self.connect( self.tabWidget, QtCore.SIGNAL('currentChanged(int)'), self.updateTabPanel ) self.addButtonLayout() self.setMinimumWidth(450) def addButtonLayout(self): self.buttonLayout = QtGui.QHBoxLayout() self.buttonLayout.setContentsMargins(-1, 3, -1, 3) self.btnOK = QtGui.QPushButton('OK') self.btnCancel = QtGui.QPushButton('Cancel') self.buttonLayout.addWidget(self.btnOK) self.buttonLayout.addWidget(self.btnCancel) self.layout().addLayout(self.buttonLayout) self.btnCancel.setShortcut('Esc') self.connect(self.btnOK, QtCore.SIGNAL('clicked(bool)'), self.ok ) self.connect(self.btnCancel, QtCore.SIGNAL('clicked(bool)'), self.cancel ) def ok(self): self.parent().close() def cancel(self): self.parent().close() def terminate(self): if self.comm: self.comm.stop() self.close()