Beispiel #1
0
class EMIsoInspector(QtGui.QWidget):
    def __init__(self, target, enable_browse=False):
        QtGui.QWidget.__init__(self, None)

        self.setWindowIcon(QtGui.QIcon(get_image_directory() + "desktop.png"))
        self.target = weakref.ref(target)
        self.rotation_sliders = EMTransformPanel(target, self)

        self.vbl = QtGui.QVBoxLayout(self)
        self.vbl.setMargin(0)
        self.vbl.setSpacing(6)
        self.vbl.setObjectName("vbl")

        self.mrcChanged = False  #added by Muthu

        if enable_browse:
            hblbrowse = QtGui.QHBoxLayout()
            self.mrc_text = QtGui.QLineEdit()
            hblbrowse.addWidget(self.mrc_text)
            self.mrc_browse = QtGui.QPushButton("Browse")
            hblbrowse.addWidget(self.mrc_browse)
            self.vbl.addLayout(hblbrowse)

            QtCore.QObject.connect(self.mrc_text,
                                   QtCore.SIGNAL("textEdited(const QString&)"),
                                   self.on_mrc_text_change)  #added by Muthu
            QtCore.QObject.connect(self.mrc_browse,
                                   QtCore.SIGNAL("clicked(bool)"),
                                   self.on_mrc_browse)  # added by Muthu

        self.hbl = QtGui.QHBoxLayout()
        self.hbl.setMargin(0)
        self.hbl.setSpacing(6)
        self.hbl.setObjectName("hbl")
        self.vbl.addLayout(self.hbl)

        self.hist = ImgHistogram(self)
        self.hist.setObjectName("hist")
        self.hbl.addWidget(self.hist)

        self.vbl2 = QtGui.QVBoxLayout()
        self.vbl2.setMargin(0)
        self.vbl2.setSpacing(6)
        self.vbl2.setObjectName("vbl2")
        self.hbl.addLayout(self.vbl2)

        self.wiretog = QtGui.QPushButton("Wire")
        self.wiretog.setCheckable(1)
        self.vbl2.addWidget(self.wiretog)

        self.lighttog = QtGui.QPushButton("Light")
        self.lighttog.setCheckable(1)
        self.vbl2.addWidget(self.lighttog)

        self.cubetog = QtGui.QPushButton("Cube")
        self.cubetog.setCheckable(1)
        self.vbl2.addWidget(self.cubetog)

        self.texturetog = QtGui.QPushButton("Texture")
        self.texturetog.setCheckable(1)
        self.vbl2.addWidget(self.texturetog)
        self.texture = False

        self.tabwidget = QtGui.QTabWidget()
        self.maintab = None
        self.tabwidget.addTab(self.get_main_tab(), "Main")
        self.texturetab = None
        self.tabwidget.addTab(self.get_GL_tab(), "GL")
        self.tabwidget.addTab(self.get_texture_tab(), "Texture")
        self.get_texture_tab().setEnabled(False)
        self.vbl.addWidget(self.tabwidget)
        self.n3_showing = False

        QtCore.QObject.connect(self.thr, QtCore.SIGNAL("valueChanged"),
                               self.on_threshold_slider)
        QtCore.QObject.connect(self.contrast, QtCore.SIGNAL("valueChanged"),
                               target.set_contrast)
        QtCore.QObject.connect(self.bright, QtCore.SIGNAL("valueChanged"),
                               target.set_brightness)
        QtCore.QObject.connect(self.cbb,
                               QtCore.SIGNAL("currentIndexChanged(QString)"),
                               self.set_material)
        QtCore.QObject.connect(self.smp, QtCore.SIGNAL("valueChanged(int)"),
                               target.set_sample)
        QtCore.QObject.connect(self.wiretog, QtCore.SIGNAL("toggled(bool)"),
                               target.toggle_wire)
        QtCore.QObject.connect(self.lighttog, QtCore.SIGNAL("toggled(bool)"),
                               target.toggle_light)
        QtCore.QObject.connect(self.texturetog, QtCore.SIGNAL("toggled(bool)"),
                               self.toggle_texture)
        QtCore.QObject.connect(self.cubetog, QtCore.SIGNAL("toggled(bool)"),
                               target.toggle_cube)
        QtCore.QObject.connect(self.glcontrast, QtCore.SIGNAL("valueChanged"),
                               target.set_GL_contrast)
        QtCore.QObject.connect(self.glbrightness,
                               QtCore.SIGNAL("valueChanged"),
                               target.set_GL_brightness)

        QtCore.QObject.connect(self.ambient_tab.r,
                               QtCore.SIGNAL("valueChanged"),
                               self.update_material)
        QtCore.QObject.connect(self.ambient_tab.g,
                               QtCore.SIGNAL("valueChanged"),
                               self.update_material)
        QtCore.QObject.connect(self.ambient_tab.b,
                               QtCore.SIGNAL("valueChanged"),
                               self.update_material)
        QtCore.QObject.connect(self.diffuse_tab.r,
                               QtCore.SIGNAL("valueChanged"),
                               self.update_material)
        QtCore.QObject.connect(self.diffuse_tab.g,
                               QtCore.SIGNAL("valueChanged"),
                               self.update_material)
        QtCore.QObject.connect(self.diffuse_tab.b,
                               QtCore.SIGNAL("valueChanged"),
                               self.update_material)
        QtCore.QObject.connect(self.specular_tab.r,
                               QtCore.SIGNAL("valueChanged"),
                               self.update_material)
        QtCore.QObject.connect(self.specular_tab.g,
                               QtCore.SIGNAL("valueChanged"),
                               self.update_material)
        QtCore.QObject.connect(self.specular_tab.b,
                               QtCore.SIGNAL("valueChanged"),
                               self.update_material)
        QtCore.QObject.connect(self.emission_tab.r,
                               QtCore.SIGNAL("valueChanged"),
                               self.update_material)
        QtCore.QObject.connect(self.emission_tab.g,
                               QtCore.SIGNAL("valueChanged"),
                               self.update_material)
        QtCore.QObject.connect(self.emission_tab.b,
                               QtCore.SIGNAL("valueChanged"),
                               self.update_material)
        QtCore.QObject.connect(self.shininess, QtCore.SIGNAL("valueChanged"),
                               self.update_material)

    def on_mrc_text_change(self, text):  #if enable_browse, added by muthu
        print "Use the Browse button to update the mrc file"

    def on_mrc_browse(self):  #if enable_browse, added by muthu
        import os
        self.mrcfileName = QtGui.QFileDialog.getOpenFileName(
            self, "open file", os.getcwd(), "Text files (*.mrc)")
        if (self.mrcfileName == ""): return
        mrcData = EMData(str(self.mrcfileName))
        self.target().set_data(mrcData)
        self.mrc_text.setText(self.mrcfileName)
        self.mrcChanged = True
        self.target().updateGL()

    def update_rotations(self, t3d):
        self.rotation_sliders.update_rotations(t3d)

    def set_scale(self, val):
        self.rotation_sliders.set_scale(val)

    def set_xy_trans(self, x, y):
        self.rotation_sliders.set_xy_trans(x, y)

    def set_xyz_trans(self, x, y, z):
        self.rotation_sliders.set_xyz_trans(x, y, z)

    def get_transform_layout(self):
        return self.maintab.vbl

    def update_material(self):
        self.target().isocolor = "custom"
        custom = {}

        custom["ambient"] = [
            self.ambient_tab.r.getValue(),
            self.ambient_tab.g.getValue(),
            self.ambient_tab.b.getValue(), 1.0
        ]
        custom["diffuse"] = [
            self.diffuse_tab.r.getValue(),
            self.diffuse_tab.g.getValue(),
            self.diffuse_tab.b.getValue(), 1.0
        ]
        custom["specular"] = [
            self.specular_tab.r.getValue(),
            self.specular_tab.g.getValue(),
            self.specular_tab.b.getValue(), 1.0
        ]
        custom["emission"] = [
            self.emission_tab.r.getValue(),
            self.emission_tab.g.getValue(),
            self.emission_tab.b.getValue(), 1.0
        ]
        custom["shininess"] = self.shininess.getValue()
        self.target().colors["custom"] = custom

        n = self.cbb.findText(QtCore.QString("custom"))
        if n < 0: return
        self.cbb.setCurrentIndex(n)
        self.target().updateGL()

    def set_material(self, color):
        self.target().set_material(color)
        material = self.target().get_material()

        self.ambient_tab.r.setValue(material["ambient"][0])
        self.ambient_tab.g.setValue(material["ambient"][1])
        self.ambient_tab.b.setValue(material["ambient"][2])

        self.diffuse_tab.r.setValue(material["diffuse"][0])
        self.diffuse_tab.g.setValue(material["diffuse"][1])
        self.diffuse_tab.b.setValue(material["diffuse"][2])

        self.specular_tab.r.setValue(material["specular"][0])
        self.specular_tab.g.setValue(material["specular"][1])
        self.specular_tab.b.setValue(material["specular"][2])

        self.emission_tab.r.setValue(material["emission"][0])
        self.emission_tab.g.setValue(material["emission"][1])
        self.emission_tab.b.setValue(material["emission"][2])

        self.shininess.setValue(material["shininess"])

    def get_RGB_tab(self, name=""):
        return get_RGB_tab(self, name)
        #rgbtab = QtGui.QWidget(self)
        #rgbtab.vbl = QtGui.QVBoxLayout(rgbtab)
        #rgbtab.vbl.setMargin(0)
        #rgbtab.vbl.setSpacing(6)
        #rgbtab.vbl.setObjectName(name)

        #rgbtab.r = ValSlider(rgbtab,(0.0,1.0),"R:")
        #rgbtab.r.setObjectName("R")
        #rgbtab.r.setValue(0.5)
        #rgbtab.vbl.addWidget(rgbtab.r)

        #rgbtab.g = ValSlider(rgbtab,(0.0,1.0),"G:")
        #rgbtab.g.setObjectName("G")
        #rgbtab.g.setValue(0.5)
        #rgbtab.vbl.addWidget(rgbtab.g)

        #rgbtab.b = ValSlider(rgbtab,(0.0,1.0),"B:")
        #rgbtab.b.setObjectName("B")
        #rgbtab.b.setValue(0.5)
        #rgbtab.vbl.addWidget(rgbtab.b)

        #return rgbtab

    def get_GL_tab(self):
        self.gltab = QtGui.QWidget()
        gltab = self.gltab

        gltab.vbl = QtGui.QVBoxLayout(self.gltab)
        gltab.vbl.setMargin(0)
        gltab.vbl.setSpacing(6)
        gltab.vbl.setObjectName("GL")

        self.glcontrast = ValSlider(gltab, (1.0, 5.0), "GLShd:")
        self.glcontrast.setObjectName("GLShade")
        self.glcontrast.setValue(1.0)
        gltab.vbl.addWidget(self.glcontrast)

        self.glbrightness = ValSlider(gltab, (-1.0, 0.0), "GLBst:")
        self.glbrightness.setObjectName("GLBoost")
        self.glbrightness.setValue(0.1)
        self.glbrightness.setValue(0.0)
        gltab.vbl.addWidget(self.glbrightness)

        self.material_tab_widget = QtGui.QTabWidget()
        self.ambient_tab = self.get_RGB_tab("ambient")
        self.material_tab_widget.addTab(self.ambient_tab, "Ambient")

        self.diffuse_tab = self.get_RGB_tab("diffuse")
        self.material_tab_widget.addTab(self.diffuse_tab, "Diffuse")

        self.specular_tab = self.get_RGB_tab("specular")
        self.material_tab_widget.addTab(self.specular_tab, "Specular")

        self.emission_tab = self.get_RGB_tab("emission")
        self.material_tab_widget.addTab(self.emission_tab, "Emission")

        gltab.vbl.addWidget(self.material_tab_widget)

        self.shininess = ValSlider(gltab, (0, 128), "Shininess:")
        self.shininess.setObjectName("Shininess")
        self.shininess.setValue(64)
        gltab.vbl.addWidget(self.shininess)

        self.hbl_color = QtGui.QHBoxLayout()
        self.hbl_color.setMargin(0)
        self.hbl_color.setSpacing(6)
        self.hbl_color.setObjectName("Material")
        gltab.vbl.addLayout(self.hbl_color)

        self.color_label = QtGui.QLabel()
        self.color_label.setText('Material')
        self.hbl_color.addWidget(self.color_label)

        self.cbb = QtGui.QComboBox(gltab)
        self.hbl_color.addWidget(self.cbb)

        return gltab

    def toggle_texture(self):
        self.texture = not self.texture
        self.target().toggle_texture()
        self.get_texture_tab().setEnabled(self.texture)

    def get_texture_tab(self):
        if (self.texturetab == None):
            self.texturetab = QtGui.QWidget()
            texturetab = self.texturetab
            texturetab.vbl = QtGui.QVBoxLayout(self.texturetab)
            texturetab.vbl.setMargin(0)
            texturetab.vbl.setSpacing(6)
            texturetab.vbl.setObjectName("Main")

            self.contrast = ValSlider(texturetab, (0.0, 20.0), "Cont:")
            self.contrast.setObjectName("contrast")
            self.contrast.setValue(10.0)
            texturetab.vbl.addWidget(self.contrast)

            self.bright = ValSlider(texturetab, (-5.0, 5.0), "Brt:")
            self.bright.setObjectName("bright")
            self.bright.setValue(0.1)
            self.bright.setValue(0.0)
            texturetab.vbl.addWidget(self.bright)

            #self.glcontrast = ValSlider(texturetab,(1.0,5.0),"GLShd:")
            #self.glcontrast.setObjectName("GLShade")
            #self.glcontrast.setValue(1.0)
            #texturetab.vbl.addWidget(self.glcontrast)

            #self.glbrightness = ValSlider(texturetab,(-1.0,0.0),"GLBst:")
            #self.glbrightness.setObjectName("GLBoost")
            #self.glbrightness.setValue(0.1)
            #self.glbrightness.setValue(0.0)
            #texturetab.vbl.addWidget(self.glbrightness)

        return self.texturetab

    def get_main_tab(self):
        if (self.maintab == None):
            self.maintab = QtGui.QWidget()
            maintab = self.maintab
            maintab.vbl = QtGui.QVBoxLayout(self.maintab)
            maintab.vbl.setMargin(0)
            maintab.vbl.setSpacing(6)
            maintab.vbl.setObjectName("Main")

            self.thr = ValSlider(maintab, (0.0, 4.0), "Thr:")
            self.thr.setObjectName("thr")
            self.thr.setValue(0.5)
            maintab.vbl.addWidget(self.thr)

            self.hbl_smp = QtGui.QHBoxLayout()
            self.hbl_smp.setMargin(0)
            self.hbl_smp.setSpacing(6)
            self.hbl_smp.setObjectName("Sample")
            maintab.vbl.addLayout(self.hbl_smp)

            self.smp_label = QtGui.QLabel()
            self.smp_label.setText('Sample Level')
            self.hbl_smp.addWidget(self.smp_label)

            self.smp = QtGui.QSpinBox(maintab)
            self.smp.setValue(1)
            self.hbl_smp.addWidget(self.smp)

            self.rotation_sliders.addWidgets(maintab.vbl)

        return self.maintab

    def set_sampling_range(self, range):
        self.smp.setMinimum(1)
        self.smp.setMaximum(1 + range - 1)

    def slider_rotate(self):
        self.target().load_rotation(self.get_current_rotation())

    def set_materials(self, colors, current_color):
        a = 0
        for i in colors:
            self.cbb.addItem(i)
            if (i == current_color):
                self.cbb.setCurrentIndex(a)
            a += 1

    def on_threshold_slider(self, val):
        self.target().set_threshold(val)
        self.bright.setValue(-val, True)

    def set_thresholds(self, low, high, val):
        self.thr.setRange(low, high)
        self.thr.setValue(val, True)
        self.bright.setValue(-val, True)

    def set_sample(self, low, high, val):
        self.smp.setRange(int(low), int(high))
        self.smp.setValue(val, True)

    def set_hist(self, hist, minden, maxden):
        self.hist.set_data(hist, minden, maxden)
Beispiel #2
0
class EM3DSliceInspector(QtGui.QWidget):
	def __init__(self,target) :
		self.busy = False
		QtGui.QWidget.__init__(self,None)
		self.setWindowIcon(QtGui.QIcon(get_image_directory() +"desktop.png"))
		self.transform_panel = EMTransformPanel(target,self)
		self.target=weakref.ref(target)
		
		self.vbl = QtGui.QVBoxLayout(self)
		self.vbl.setMargin(0)
		self.vbl.setSpacing(6)
		self.vbl.setObjectName("vbl")
		
		self.hbl = QtGui.QHBoxLayout()
		self.hbl.setMargin(0)
		self.hbl.setSpacing(6)
		self.hbl.setObjectName("hbl")
		self.vbl.addLayout(self.hbl)
		
		self.hist = ImgHistogram(self)
		self.hist.setObjectName("hist")
		self.hbl.addWidget(self.hist)
		
		self.vbl2 = QtGui.QVBoxLayout()
		self.vbl2.setMargin(0)
		self.vbl2.setSpacing(6)
		self.vbl2.setObjectName("vbl2")
		self.hbl.addLayout(self.vbl2)
	
		self.cubetog = QtGui.QPushButton("Cube")
		self.cubetog.setCheckable(1)
		self.vbl2.addWidget(self.cubetog)
		
		self.defaults = QtGui.QPushButton("Defaults")
		self.vbl2.addWidget(self.defaults)
		
		self.vbl.addWidget(self.get_main_tab())
		
		self.n3_showing = False
		
#		self.current_src = EULER_EMAN
		
		QtCore.QObject.connect(self.slice, QtCore.SIGNAL("valueChanged"), target.set_slice)
		QtCore.QObject.connect(self.glcontrast, QtCore.SIGNAL("valueChanged"), target.set_GL_contrast)
		QtCore.QObject.connect(self.glbrightness, QtCore.SIGNAL("valueChanged"), target.set_GL_brightness)
		QtCore.QObject.connect(self.axisCombo, QtCore.SIGNAL("currentIndexChanged(QString)"), target.setAxis)
		QtCore.QObject.connect(self.cubetog, QtCore.SIGNAL("toggled(bool)"), target.toggle_cube)
		QtCore.QObject.connect(self.defaults, QtCore.SIGNAL("clicked(bool)"), self.set_defaults)
		QtCore.QObject.connect(self.contrast, QtCore.SIGNAL("valueChanged"), self.on_contrast_changed)
		QtCore.QObject.connect(self.bright, QtCore.SIGNAL("valueChanged"), self.on_brightness_changed)
	
	def on_contrast_changed(self,val):
		if self.busy: return
		self.target().set_contrast(val)
	
	def on_brightness_changed(self,val):
		if self.busy: return
		self.target().set_brightness(val)
	
	def set_contrast_bright(self,c,b):
		self.busy = True
		self.contrast.setValue(c)
		self.bright.setValue(b)
		self.busy = False
	def update_rotations(self,t3d):
		self.transform_panel.update_rotations(t3d)
	
	def set_scale(self,val):
		self.transform_panel.set_scale(val)
	
	def set_xy_trans(self, x, y):
		self.transform_panel.set_xy_trans(x,y)
		
	def set_xyz_trans(self,x,y,z):
		self.transform_panel.set_xyz_trans(x,y,z)	
	
	def get_transform_layout(self):
		return self.maintab.vbl
	
	def set_defaults(self):
		self.target().set_default_contrast_settings()
		self.set_contrast_bright(self.target().contrast,self.target().bright)
		self.glcontrast.setValue(1.0)
		self.glbrightness.setValue(0.0)
		self.transform_panel.set_defaults()
		
		self.target().generate_current_display_list()
		self.target().updateGL()

	def get_main_tab(self):
	
		self.maintab = QtGui.QWidget()
		maintab = self.maintab
		maintab.vbl = QtGui.QVBoxLayout(self.maintab)
		maintab.vbl.setMargin(0)
		maintab.vbl.setSpacing(6)
		maintab.vbl.setObjectName("Main")
		
		self.hbl_slice = QtGui.QHBoxLayout()
		self.hbl_slice.setMargin(0)
		self.hbl_slice.setSpacing(6)
		self.hbl_slice.setObjectName("Axis")
		maintab.vbl.addLayout(self.hbl_slice)
		
		self.slice = ValSlider(maintab,(0.0,10.0),"Slice:")
		self.slice.setObjectName("slice")
		self.slice.setValue(1.0)
		self.hbl_slice.addWidget(self.slice)
		
		self.axisCombo = QtGui.QComboBox(maintab)
		self.axisCombo.addItem(' z ')
		self.axisCombo.addItem(' y ')
		self.axisCombo.addItem(' x ')
		self.axisCombo.addItem(' track ')
		self.hbl_slice.addWidget(self.axisCombo)
		
		
		self.contrast = ValSlider(maintab,(0.0,20.0),"Cont:")
		self.contrast.setObjectName("contrast")
		self.contrast.setValue(1.0)
		maintab.vbl.addWidget(self.contrast)

		self.bright = ValSlider(maintab,(-5.0,5.0),"Brt:")
		self.bright.setObjectName("bright")
		self.bright.setValue(0.1)
		self.bright.setValue(0.0)
		maintab.vbl.addWidget(self.bright)
		
		self.glcontrast = ValSlider(maintab,(1.0,5.0),"GLShd:")
		self.glcontrast.setObjectName("GLShade")
		self.glcontrast.setValue(1.0)
		maintab.vbl.addWidget(self.glcontrast)
		
		self.glbrightness = ValSlider(maintab,(-1.0,0.0),"GLBst:")
		self.glbrightness.setObjectName("GLBoost")
		self.glbrightness.setValue(0.1)
		self.glbrightness.setValue(0.0)
		maintab.vbl.addWidget(self.glbrightness)
	
		self.transform_panel.addWidgets(maintab.vbl)
		
		return maintab
	
	def slider_rotate(self):
		self.target().load_rotation(self.get_current_rotation())

	def set_hist(self,hist,minden,maxden):
		self.hist.set_data(hist,minden,maxden)
		
	def set_slice(self,val):
		self.slice.setValue(val)
	
	def set_sliceRange(self,min,max):
		self.slice.setRange(min,max)
Beispiel #3
0
class EMVolumeInspector(QtGui.QWidget):
	def __init__(self,target) :
		QtGui.QWidget.__init__(self,None)
		self.target=weakref.ref(target)
		self.setWindowIcon(QtGui.QIcon(get_image_directory() +"desktop.png"))
		self.rotation_sliders = EMTransformPanel(target,self)
		
		self.vbl = QtGui.QVBoxLayout(self)
		self.vbl.setMargin(0)
		self.vbl.setSpacing(6)
		self.vbl.setObjectName("vbl")
		
		self.hbl = QtGui.QHBoxLayout()
		self.hbl.setMargin(0)
		self.hbl.setSpacing(6)
		self.hbl.setObjectName("hbl")
		self.vbl.addLayout(self.hbl)
		
		self.hist = ImgHistogram(self)
		self.hist.setObjectName("hist")
		self.hbl.addWidget(self.hist)
		
		self.vbl2 = QtGui.QVBoxLayout()
		self.vbl2.setMargin(0)
		self.vbl2.setSpacing(6)
		self.vbl2.setObjectName("vbl2")
		self.hbl.addLayout(self.vbl2)
	
		self.cubetog = QtGui.QPushButton("Cube")
		self.cubetog.setCheckable(1)
		self.vbl2.addWidget(self.cubetog)
		
		self.defaults = QtGui.QPushButton("Defaults")
		self.vbl2.addWidget(self.defaults)
		
		self.tabwidget = QtGui.QTabWidget()
		
		self.tabwidget.addTab(self.get_main_tab(), "Main")
		self.tabwidget.addTab(self.get_GL_tab(),"GL")
		
		self.vbl.addWidget(self.tabwidget)
		
		self.n3_showing = False
		
		QtCore.QObject.connect(self.contrast, QtCore.SIGNAL("valueChanged"), target.set_contrast)
		QtCore.QObject.connect(self.glcontrast, QtCore.SIGNAL("valueChanged"), target.set_GL_contrast)
		QtCore.QObject.connect(self.glbrightness, QtCore.SIGNAL("valueChanged"), target.set_GL_brightness)
		QtCore.QObject.connect(self.bright, QtCore.SIGNAL("valueChanged"), target.set_brightness)
		QtCore.QObject.connect(self.cubetog, QtCore.SIGNAL("toggled(bool)"), target.toggle_cube)
		QtCore.QObject.connect(self.defaults, QtCore.SIGNAL("clicked(bool)"), self.set_defaults)
		QtCore.QObject.connect(self.smp, QtCore.SIGNAL("valueChanged(int)"), target.set_texture_sample)
	
	def update_rotations(self,t3d):
		self.rotation_sliders.update_rotations(t3d)
	
	def set_scale(self,val):
		self.rotation_sliders.set_scale(val)
	
	def set_xy_trans(self, x, y):
		self.rotation_sliders.set_xy_trans(x,y)
	
	def set_xyz_trans(self,x,y,z):
		self.rotation_sliders.set_xyz_trans(x,y,z)	
		
	def get_transform_layout(self):
		return self.maintab.vbl
	
	def get_GL_tab(self):
		self.gltab = QtGui.QWidget()
		gltab = self.gltab
		
		gltab.vbl = QtGui.QVBoxLayout(self.gltab )
		gltab.vbl.setMargin(0)
		gltab.vbl.setSpacing(6)
		gltab.vbl.setObjectName("Main")
		
		self.glcontrast = ValSlider(gltab,(1.0,5.0),"GLShd:")
		self.glcontrast.setObjectName("GLShade")
		self.glcontrast.setValue(1.0)
		gltab.vbl.addWidget(self.glcontrast)
		
		self.glbrightness = ValSlider(gltab,(-1.0,0.0),"GLBst:")
		self.glbrightness.setObjectName("GLBoost")
		self.glbrightness.setValue(0.1)
		self.glbrightness.setValue(0.0)
		gltab.vbl.addWidget(self.glbrightness)
	
		return gltab
	
	def get_main_tab(self):
	
		self.maintab = QtGui.QWidget()
		maintab = self.maintab
		maintab.vbl = QtGui.QVBoxLayout(self.maintab)
		maintab.vbl.setMargin(0)
		maintab.vbl.setSpacing(6)
		maintab.vbl.setObjectName("Main")
			
		self.contrast = ValSlider(maintab,(0.0,20.0),"Cont:")
		self.contrast.setObjectName("contrast")
		self.contrast.setValue(1.0)
		maintab.vbl.addWidget(self.contrast)

		self.bright = ValSlider(maintab,(-5.0,5.0),"Brt:")
		self.bright.setObjectName("bright")
		self.bright.setValue(0.1)
		self.bright.setValue(0.0)
		maintab.vbl.addWidget(self.bright)

		self.hbl_smp = QtGui.QHBoxLayout()
		self.hbl_smp.setMargin(0)
		self.hbl_smp.setSpacing(6)
		self.hbl_smp.setObjectName("Texture Oversampling")
		maintab.vbl.addLayout(self.hbl_smp)
		
		self.smp_label = QtGui.QLabel()
		self.smp_label.setText('Texture Oversampling')
		self.hbl_smp.addWidget(self.smp_label)
		
		self.smp = QtGui.QSpinBox(maintab)
		self.smp.setMaximum(10)
		self.smp.setMinimum(1)
		self.smp.setValue(1)
		self.hbl_smp.addWidget(self.smp)

		self.lowlim=0
		self.highlim=1.0
		self.busy=0

		self.rotation_sliders.addWidgets(maintab.vbl)

		return maintab
	
	def set_defaults(self):
		self.contrast.setValue(1.0)
		self.bright.setValue(0.0)
		self.glcontrast.setValue(1.0)
		self.glbrightness.setValue(0.0)
		self.rotation_sliders.set_defaults()
	
	def slider_rotate(self):
		self.target().load_rotation(self.get_current_rotation())
	
	def set_hist(self,hist,minden,maxden):
		self.hist.set_data(hist,minden,maxden)
Beispiel #4
0
class EMIsoInspector(QtGui.QWidget):
	def __init__(self,target,enable_browse=False) :
		QtGui.QWidget.__init__(self,None)

		self.setWindowIcon(QtGui.QIcon(get_image_directory() +"desktop.png"))
		self.target=weakref.ref(target)
		self.rotation_sliders = EMTransformPanel(target,self)
		
		self.vbl = QtGui.QVBoxLayout(self)
		self.vbl.setMargin(0)
		self.vbl.setSpacing(6)
		self.vbl.setObjectName("vbl")
		
		self.mrcChanged = False #added by Muthu
		
		if enable_browse:
			hblbrowse = QtGui.QHBoxLayout()
			self.mrc_text = QtGui.QLineEdit()
			hblbrowse.addWidget(self.mrc_text)
			self.mrc_browse = QtGui.QPushButton("Browse")
			hblbrowse.addWidget(self.mrc_browse)
			self.vbl.addLayout(hblbrowse)

			QtCore.QObject.connect(self.mrc_text, QtCore.SIGNAL("textEdited(const QString&)"), self.on_mrc_text_change) #added by Muthu
			QtCore.QObject.connect(self.mrc_browse, QtCore.SIGNAL("clicked(bool)"), self.on_mrc_browse) # added by Muthu

		self.hbl = QtGui.QHBoxLayout()
		self.hbl.setMargin(0)
		self.hbl.setSpacing(6)
		self.hbl.setObjectName("hbl")
		self.vbl.addLayout(self.hbl)
		
		self.hist = ImgHistogram(self)
		self.hist.setObjectName("hist")
		self.hbl.addWidget(self.hist)
		
		self.vbl2 = QtGui.QVBoxLayout()
		self.vbl2.setMargin(0)
		self.vbl2.setSpacing(6)
		self.vbl2.setObjectName("vbl2")
		self.hbl.addLayout(self.vbl2)
		
		self.wiretog = QtGui.QPushButton("Wire")
		self.wiretog.setCheckable(1)
		self.vbl2.addWidget(self.wiretog)
		
		self.lighttog = QtGui.QPushButton("Light")
		self.lighttog.setCheckable(1)
		self.vbl2.addWidget(self.lighttog)
		
		self.cubetog = QtGui.QPushButton("Cube")
		self.cubetog.setCheckable(1)
		self.vbl2.addWidget(self.cubetog)
		
		self.texturetog = QtGui.QPushButton("Texture")
		self.texturetog.setCheckable(1)
		self.vbl2.addWidget(self.texturetog)
		self.texture = False
		
		self.tabwidget = QtGui.QTabWidget()
		self.maintab = None
		self.tabwidget.addTab(self.get_main_tab(), "Main")
		self.texturetab = None
		self.tabwidget.addTab(self.get_GL_tab(),"GL")
		self.tabwidget.addTab(self.get_texture_tab(),"Texture")
		self.get_texture_tab().setEnabled(False)
		self.vbl.addWidget(self.tabwidget)
		self.n3_showing = False
		
		QtCore.QObject.connect(self.thr, QtCore.SIGNAL("valueChanged"), self.on_threshold_slider)
		QtCore.QObject.connect(self.contrast, QtCore.SIGNAL("valueChanged"), target.set_contrast)
		QtCore.QObject.connect(self.bright, QtCore.SIGNAL("valueChanged"), target.set_brightness)
		QtCore.QObject.connect(self.cbb, QtCore.SIGNAL("currentIndexChanged(QString)"), self.set_material)
		QtCore.QObject.connect(self.smp, QtCore.SIGNAL("valueChanged(int)"), target.set_sample)
		QtCore.QObject.connect(self.wiretog, QtCore.SIGNAL("toggled(bool)"), target.toggle_wire)
		QtCore.QObject.connect(self.lighttog, QtCore.SIGNAL("toggled(bool)"), target.toggle_light)
		QtCore.QObject.connect(self.texturetog, QtCore.SIGNAL("toggled(bool)"), self.toggle_texture)
		QtCore.QObject.connect(self.cubetog, QtCore.SIGNAL("toggled(bool)"), target.toggle_cube)
		QtCore.QObject.connect(self.glcontrast, QtCore.SIGNAL("valueChanged"), target.set_GL_contrast)
		QtCore.QObject.connect(self.glbrightness, QtCore.SIGNAL("valueChanged"), target.set_GL_brightness)
		
		QtCore.QObject.connect(self.ambient_tab.r, QtCore.SIGNAL("valueChanged"), self.update_material)
		QtCore.QObject.connect(self.ambient_tab.g, QtCore.SIGNAL("valueChanged"), self.update_material)
		QtCore.QObject.connect(self.ambient_tab.b, QtCore.SIGNAL("valueChanged"), self.update_material)
		QtCore.QObject.connect(self.diffuse_tab.r, QtCore.SIGNAL("valueChanged"), self.update_material)
		QtCore.QObject.connect(self.diffuse_tab.g, QtCore.SIGNAL("valueChanged"), self.update_material)
		QtCore.QObject.connect(self.diffuse_tab.b, QtCore.SIGNAL("valueChanged"), self.update_material)
		QtCore.QObject.connect(self.specular_tab.r, QtCore.SIGNAL("valueChanged"), self.update_material)
		QtCore.QObject.connect(self.specular_tab.g, QtCore.SIGNAL("valueChanged"), self.update_material)
		QtCore.QObject.connect(self.specular_tab.b, QtCore.SIGNAL("valueChanged"), self.update_material)
		QtCore.QObject.connect(self.emission_tab.r, QtCore.SIGNAL("valueChanged"), self.update_material)
		QtCore.QObject.connect(self.emission_tab.g, QtCore.SIGNAL("valueChanged"), self.update_material)
		QtCore.QObject.connect(self.emission_tab.b, QtCore.SIGNAL("valueChanged"), self.update_material)
		QtCore.QObject.connect(self.shininess, QtCore.SIGNAL("valueChanged"), self.update_material)



	def on_mrc_text_change(self,text): #if enable_browse, added by muthu
		print "Use the Browse button to update the mrc file"

	def on_mrc_browse(self): #if enable_browse, added by muthu
		import os
		self.mrcfileName = QtGui.QFileDialog.getOpenFileName(self, "open file", os.getcwd(), "Text files (*.mrc)")
		if (self.mrcfileName == ""): return
		mrcData = EMData(str(self.mrcfileName))
		self.target().set_data(mrcData)
		self.mrc_text.setText(self.mrcfileName) 
		self.mrcChanged = True
		self.target().updateGL()
	
	def update_rotations(self,t3d):
		self.rotation_sliders.update_rotations(t3d)
	
	def set_scale(self,val):
		self.rotation_sliders.set_scale(val)
	
	def set_xy_trans(self, x, y):
		self.rotation_sliders.set_xy_trans(x,y)
	
	def set_xyz_trans(self,x,y,z):
		self.rotation_sliders.set_xyz_trans(x,y,z)
	
	def get_transform_layout(self):
		return self.maintab.vbl
	
	
	def update_material(self):
		self.target().isocolor = "custom"
		custom = {}
		
		custom["ambient"] = [self.ambient_tab.r.getValue(), self.ambient_tab.g.getValue(), self.ambient_tab.b.getValue(),1.0]
		custom["diffuse"] = [self.diffuse_tab.r.getValue(), self.diffuse_tab.g.getValue(), self.diffuse_tab.b.getValue(),1.0]
		custom["specular"] = [self.specular_tab.r.getValue(), self.specular_tab.g.getValue(), self.specular_tab.b.getValue(),1.0]
		custom["emission"] = [self.emission_tab.r.getValue(), self.emission_tab.g.getValue(), self.emission_tab.b.getValue(),1.0]
		custom["shininess"] = self.shininess.getValue()
		self.target().colors["custom"] = custom

		n = self.cbb.findText(QtCore.QString("custom"))
		if n < 0: return
		self.cbb.setCurrentIndex(n)
		self.target().updateGL()
	
	def set_material(self,color):
		self.target().set_material(color)
		material = self.target().get_material()
		
		self.ambient_tab.r.setValue(material["ambient"][0])
		self.ambient_tab.g.setValue(material["ambient"][1])
		self.ambient_tab.b.setValue(material["ambient"][2])
		
		self.diffuse_tab.r.setValue(material["diffuse"][0])
		self.diffuse_tab.g.setValue(material["diffuse"][1])
		self.diffuse_tab.b.setValue(material["diffuse"][2])
		
		self.specular_tab.r.setValue(material["specular"][0])
		self.specular_tab.g.setValue(material["specular"][1])
		self.specular_tab.b.setValue(material["specular"][2])
		
		self.emission_tab.r.setValue(material["emission"][0])
		self.emission_tab.g.setValue(material["emission"][1])
		self.emission_tab.b.setValue(material["emission"][2])
		
		self.shininess.setValue(material["shininess"])
	
	def get_RGB_tab(self, name=""):
		return get_RGB_tab(self,name)
		#rgbtab = QtGui.QWidget(self)
		#rgbtab.vbl = QtGui.QVBoxLayout(rgbtab)
		#rgbtab.vbl.setMargin(0)
		#rgbtab.vbl.setSpacing(6)
		#rgbtab.vbl.setObjectName(name)
		
		#rgbtab.r = ValSlider(rgbtab,(0.0,1.0),"R:")
		#rgbtab.r.setObjectName("R")
		#rgbtab.r.setValue(0.5)
		#rgbtab.vbl.addWidget(rgbtab.r)
		
		#rgbtab.g = ValSlider(rgbtab,(0.0,1.0),"G:")
		#rgbtab.g.setObjectName("G")
		#rgbtab.g.setValue(0.5)
		#rgbtab.vbl.addWidget(rgbtab.g)
		
		#rgbtab.b = ValSlider(rgbtab,(0.0,1.0),"B:")
		#rgbtab.b.setObjectName("B")
		#rgbtab.b.setValue(0.5)
		#rgbtab.vbl.addWidget(rgbtab.b)
		
		#return rgbtab
	
	def get_GL_tab(self):
		self.gltab = QtGui.QWidget()
		gltab = self.gltab
		
		gltab.vbl = QtGui.QVBoxLayout(self.gltab )
		gltab.vbl.setMargin(0)
		gltab.vbl.setSpacing(6)
		gltab.vbl.setObjectName("GL")
		
		
		self.glcontrast = ValSlider(gltab,(1.0,5.0),"GLShd:")
		self.glcontrast.setObjectName("GLShade")
		self.glcontrast.setValue(1.0)
		gltab.vbl.addWidget(self.glcontrast)
		
		self.glbrightness = ValSlider(gltab,(-1.0,0.0),"GLBst:")
		self.glbrightness.setObjectName("GLBoost")
		self.glbrightness.setValue(0.1)
		self.glbrightness.setValue(0.0)
		gltab.vbl.addWidget(self.glbrightness)
	
		self.material_tab_widget = QtGui.QTabWidget()
		self.ambient_tab = self.get_RGB_tab("ambient")
		self.material_tab_widget.addTab(self.ambient_tab, "Ambient")
		
		self.diffuse_tab = self.get_RGB_tab("diffuse")
		self.material_tab_widget.addTab(self.diffuse_tab, "Diffuse")
		
		self.specular_tab = self.get_RGB_tab("specular")
		self.material_tab_widget.addTab(self.specular_tab, "Specular")
		
		self.emission_tab = self.get_RGB_tab("emission")
		self.material_tab_widget.addTab(self.emission_tab, "Emission")
		
		gltab.vbl.addWidget(self.material_tab_widget)

		self.shininess = ValSlider(gltab,(0,128),"Shininess:")
		self.shininess.setObjectName("Shininess")
		self.shininess.setValue(64)
		gltab.vbl.addWidget(self.shininess)

		self.hbl_color = QtGui.QHBoxLayout()
		self.hbl_color.setMargin(0)
		self.hbl_color.setSpacing(6)
		self.hbl_color.setObjectName("Material")
		gltab.vbl.addLayout(self.hbl_color)
		
		self.color_label = QtGui.QLabel()
		self.color_label.setText('Material')
		self.hbl_color.addWidget(self.color_label)
		
		self.cbb = QtGui.QComboBox(gltab)
		self.hbl_color.addWidget(self.cbb)
		
		return gltab
	
	def toggle_texture(self):
		self.texture = not self.texture
		self.target().toggle_texture()
		self.get_texture_tab().setEnabled(self.texture)
	
	def get_texture_tab(self):
		if ( self.texturetab == None ):
			self.texturetab = QtGui.QWidget()
			texturetab = self.texturetab
			texturetab.vbl = QtGui.QVBoxLayout(self.texturetab)
			texturetab.vbl.setMargin(0)
			texturetab.vbl.setSpacing(6)
			texturetab.vbl.setObjectName("Main")
		
			self.contrast = ValSlider(texturetab,(0.0,20.0),"Cont:")
			self.contrast.setObjectName("contrast")
			self.contrast.setValue(10.0)
			texturetab.vbl.addWidget(self.contrast)
	
			self.bright = ValSlider(texturetab,(-5.0,5.0),"Brt:")
			self.bright.setObjectName("bright")
			self.bright.setValue(0.1)
			self.bright.setValue(0.0)
			texturetab.vbl.addWidget(self.bright)
			
			#self.glcontrast = ValSlider(texturetab,(1.0,5.0),"GLShd:")
			#self.glcontrast.setObjectName("GLShade")
			#self.glcontrast.setValue(1.0)
			#texturetab.vbl.addWidget(self.glcontrast)
			
			#self.glbrightness = ValSlider(texturetab,(-1.0,0.0),"GLBst:")
			#self.glbrightness.setObjectName("GLBoost")
			#self.glbrightness.setValue(0.1)
			#self.glbrightness.setValue(0.0)
			#texturetab.vbl.addWidget(self.glbrightness)
			
		return self.texturetab
	
	def get_main_tab(self):
		if ( self.maintab == None ):
			self.maintab = QtGui.QWidget()
			maintab = self.maintab
			maintab.vbl = QtGui.QVBoxLayout(self.maintab)
			maintab.vbl.setMargin(0)
			maintab.vbl.setSpacing(6)
			maintab.vbl.setObjectName("Main")
			
			self.thr = ValSlider(maintab,(0.0,4.0),"Thr:")
			self.thr.setObjectName("thr")
			self.thr.setValue(0.5)
			maintab.vbl.addWidget(self.thr)
			
			self.hbl_smp = QtGui.QHBoxLayout()
			self.hbl_smp.setMargin(0)
			self.hbl_smp.setSpacing(6)
			self.hbl_smp.setObjectName("Sample")
			maintab.vbl.addLayout(self.hbl_smp)
			
			self.smp_label = QtGui.QLabel()
			self.smp_label.setText('Sample Level')
			self.hbl_smp.addWidget(self.smp_label)
			
			self.smp = QtGui.QSpinBox(maintab)
			self.smp.setValue(1)
			self.hbl_smp.addWidget(self.smp)
	
			self.rotation_sliders.addWidgets(maintab.vbl)
			
		return self.maintab
	
	def set_sampling_range(self,range):
		self.smp.setMinimum(1)
		self.smp.setMaximum(1+range-1)
	
	def slider_rotate(self):
		self.target().load_rotation(self.get_current_rotation())
	
	
	def set_materials(self,colors,current_color):
		a = 0
		for i in colors:
			self.cbb.addItem(i)
			if ( i == current_color):
				self.cbb.setCurrentIndex(a)
			a += 1

	def on_threshold_slider(self,val):
		self.target().set_threshold(val)
		self.bright.setValue(-val,True)
		
	def set_thresholds(self,low,high,val):
		self.thr.setRange(low,high)
		self.thr.setValue(val, True)
		self.bright.setValue(-val,True)
	
	def set_sample(self,low,high,val):
		self.smp.setRange(int(low),int(high))
		self.smp.setValue(val, True)
		
	def set_hist(self,hist,minden,maxden):
		self.hist.set_data(hist,minden,maxden)
Beispiel #5
0
class EM3DSliceInspector(QtGui.QWidget):
    def __init__(self, target):
        self.busy = False
        QtGui.QWidget.__init__(self, None)
        self.setWindowIcon(QtGui.QIcon(get_image_directory() + "desktop.png"))
        self.transform_panel = EMTransformPanel(target, self)
        self.target = weakref.ref(target)

        self.vbl = QtGui.QVBoxLayout(self)
        self.vbl.setMargin(0)
        self.vbl.setSpacing(6)
        self.vbl.setObjectName("vbl")

        self.hbl = QtGui.QHBoxLayout()
        self.hbl.setMargin(0)
        self.hbl.setSpacing(6)
        self.hbl.setObjectName("hbl")
        self.vbl.addLayout(self.hbl)

        self.hist = ImgHistogram(self)
        self.hist.setObjectName("hist")
        self.hbl.addWidget(self.hist)

        self.vbl2 = QtGui.QVBoxLayout()
        self.vbl2.setMargin(0)
        self.vbl2.setSpacing(6)
        self.vbl2.setObjectName("vbl2")
        self.hbl.addLayout(self.vbl2)

        self.cubetog = QtGui.QPushButton("Cube")
        self.cubetog.setCheckable(1)
        self.vbl2.addWidget(self.cubetog)

        self.defaults = QtGui.QPushButton("Defaults")
        self.vbl2.addWidget(self.defaults)

        self.vbl.addWidget(self.get_main_tab())

        self.n3_showing = False

        #		self.current_src = EULER_EMAN

        QtCore.QObject.connect(self.slice, QtCore.SIGNAL("valueChanged"),
                               target.set_slice)
        QtCore.QObject.connect(self.glcontrast, QtCore.SIGNAL("valueChanged"),
                               target.set_GL_contrast)
        QtCore.QObject.connect(self.glbrightness,
                               QtCore.SIGNAL("valueChanged"),
                               target.set_GL_brightness)
        QtCore.QObject.connect(self.axisCombo,
                               QtCore.SIGNAL("currentIndexChanged(QString)"),
                               target.setAxis)
        QtCore.QObject.connect(self.cubetog, QtCore.SIGNAL("toggled(bool)"),
                               target.toggle_cube)
        QtCore.QObject.connect(self.defaults, QtCore.SIGNAL("clicked(bool)"),
                               self.set_defaults)
        QtCore.QObject.connect(self.contrast, QtCore.SIGNAL("valueChanged"),
                               self.on_contrast_changed)
        QtCore.QObject.connect(self.bright, QtCore.SIGNAL("valueChanged"),
                               self.on_brightness_changed)

    def on_contrast_changed(self, val):
        if self.busy: return
        self.target().set_contrast(val)

    def on_brightness_changed(self, val):
        if self.busy: return
        self.target().set_brightness(val)

    def set_contrast_bright(self, c, b):
        self.busy = True
        self.contrast.setValue(c)
        self.bright.setValue(b)
        self.busy = False

    def update_rotations(self, t3d):
        self.transform_panel.update_rotations(t3d)

    def set_scale(self, val):
        self.transform_panel.set_scale(val)

    def set_xy_trans(self, x, y):
        self.transform_panel.set_xy_trans(x, y)

    def set_xyz_trans(self, x, y, z):
        self.transform_panel.set_xyz_trans(x, y, z)

    def get_transform_layout(self):
        return self.maintab.vbl

    def set_defaults(self):
        self.target().set_default_contrast_settings()
        self.set_contrast_bright(self.target().contrast, self.target().bright)
        self.glcontrast.setValue(1.0)
        self.glbrightness.setValue(0.0)
        self.transform_panel.set_defaults()

        self.target().generate_current_display_list()
        self.target().updateGL()

    def get_main_tab(self):

        self.maintab = QtGui.QWidget()
        maintab = self.maintab
        maintab.vbl = QtGui.QVBoxLayout(self.maintab)
        maintab.vbl.setMargin(0)
        maintab.vbl.setSpacing(6)
        maintab.vbl.setObjectName("Main")

        self.hbl_slice = QtGui.QHBoxLayout()
        self.hbl_slice.setMargin(0)
        self.hbl_slice.setSpacing(6)
        self.hbl_slice.setObjectName("Axis")
        maintab.vbl.addLayout(self.hbl_slice)

        self.slice = ValSlider(maintab, (0.0, 10.0), "Slice:")
        self.slice.setObjectName("slice")
        self.slice.setValue(1.0)
        self.hbl_slice.addWidget(self.slice)

        self.axisCombo = QtGui.QComboBox(maintab)
        self.axisCombo.addItem(' z ')
        self.axisCombo.addItem(' y ')
        self.axisCombo.addItem(' x ')
        self.axisCombo.addItem(' track ')
        self.hbl_slice.addWidget(self.axisCombo)

        self.contrast = ValSlider(maintab, (0.0, 20.0), "Cont:")
        self.contrast.setObjectName("contrast")
        self.contrast.setValue(1.0)
        maintab.vbl.addWidget(self.contrast)

        self.bright = ValSlider(maintab, (-5.0, 5.0), "Brt:")
        self.bright.setObjectName("bright")
        self.bright.setValue(0.1)
        self.bright.setValue(0.0)
        maintab.vbl.addWidget(self.bright)

        self.glcontrast = ValSlider(maintab, (1.0, 5.0), "GLShd:")
        self.glcontrast.setObjectName("GLShade")
        self.glcontrast.setValue(1.0)
        maintab.vbl.addWidget(self.glcontrast)

        self.glbrightness = ValSlider(maintab, (-1.0, 0.0), "GLBst:")
        self.glbrightness.setObjectName("GLBoost")
        self.glbrightness.setValue(0.1)
        self.glbrightness.setValue(0.0)
        maintab.vbl.addWidget(self.glbrightness)

        self.transform_panel.addWidgets(maintab.vbl)

        return maintab

    def slider_rotate(self):
        self.target().load_rotation(self.get_current_rotation())

    def set_hist(self, hist, minden, maxden):
        self.hist.set_data(hist, minden, maxden)

    def set_slice(self, val):
        self.slice.setValue(val)

    def set_sliceRange(self, min, max):
        self.slice.setRange(min, max)