Example #1
0
    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)
Example #2
0
	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)
Example #3
0
	def __init__(self,target) :
		QtGui.QWidget.__init__(self,None)
		self.target=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.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.tabwidget = QtGui.QTabWidget()
		self.maintab = None
		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.scale, QtCore.SIGNAL("valueChanged"), target.set_scale)
		QtCore.QObject.connect(self.az, QtCore.SIGNAL("valueChanged"), self.slider_rotate)
		QtCore.QObject.connect(self.alt, QtCore.SIGNAL("valueChanged"), self.slider_rotate)
		QtCore.QObject.connect(self.phi, QtCore.SIGNAL("valueChanged"), self.slider_rotate)
		QtCore.QObject.connect(self.cbb, QtCore.SIGNAL("currentIndexChanged(QString)"), target.setColor)
		QtCore.QObject.connect(self.src, QtCore.SIGNAL("currentIndexChanged(QString)"), self.set_src)
		QtCore.QObject.connect(self.x_trans, QtCore.SIGNAL("valueChanged(double)"), target.set_cam_x)
		QtCore.QObject.connect(self.y_trans, QtCore.SIGNAL("valueChanged(double)"), target.set_cam_y)
		QtCore.QObject.connect(self.z_trans, QtCore.SIGNAL("valueChanged(double)"), target.set_cam_z)
		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.glcontrast, QtCore.SIGNAL("valueChanged"), target.set_GL_contrast)
		QtCore.QObject.connect(self.glbrightness, QtCore.SIGNAL("valueChanged"), target.set_GL_brightness)
Example #4
0
	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)
Example #5
0
class EMGLPlotInspector(QtGui.QWidget):
	def __init__(self,target) :
		QtGui.QWidget.__init__(self,None)
		self.target=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.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.tabwidget = QtGui.QTabWidget()
		self.maintab = None
		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.scale, QtCore.SIGNAL("valueChanged"), target.set_scale)
		QtCore.QObject.connect(self.az, QtCore.SIGNAL("valueChanged"), self.slider_rotate)
		QtCore.QObject.connect(self.alt, QtCore.SIGNAL("valueChanged"), self.slider_rotate)
		QtCore.QObject.connect(self.phi, QtCore.SIGNAL("valueChanged"), self.slider_rotate)
		QtCore.QObject.connect(self.cbb, QtCore.SIGNAL("currentIndexChanged(QString)"), target.setColor)
		QtCore.QObject.connect(self.src, QtCore.SIGNAL("currentIndexChanged(QString)"), self.set_src)
		QtCore.QObject.connect(self.x_trans, QtCore.SIGNAL("valueChanged(double)"), target.set_cam_x)
		QtCore.QObject.connect(self.y_trans, QtCore.SIGNAL("valueChanged(double)"), target.set_cam_y)
		QtCore.QObject.connect(self.z_trans, QtCore.SIGNAL("valueChanged(double)"), target.set_cam_z)
		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.glcontrast, QtCore.SIGNAL("valueChanged"), target.set_GL_contrast)
		QtCore.QObject.connect(self.glbrightness, QtCore.SIGNAL("valueChanged"), target.set_GL_brightness)
	
	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):
		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.scale = ValSlider(maintab,(0.01,30.0),"Zoom:")
			self.scale.setObjectName("scale")
			self.scale.setValue(1.0)
			maintab.vbl.addWidget(self.scale)
			
			self.hbl_color = QtGui.QHBoxLayout()
			self.hbl_color.setMargin(0)
			self.hbl_color.setSpacing(6)
			self.hbl_color.setObjectName("Material")
			maintab.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(maintab)
			self.hbl_color.addWidget(self.cbb)
	
			self.hbl_trans = QtGui.QHBoxLayout()
			self.hbl_trans.setMargin(0)
			self.hbl_trans.setSpacing(6)
			self.hbl_trans.setObjectName("Trans")
			maintab.vbl.addLayout(self.hbl_trans)
			
			self.x_label = QtGui.QLabel()
			self.x_label.setText('x')
			self.hbl_trans.addWidget(self.x_label)
			
			self.x_trans = QtGui.QDoubleSpinBox(self)
			self.x_trans.setMinimum(-10000)
			self.x_trans.setMaximum(10000)
			self.x_trans.setValue(0.0)
			self.hbl_trans.addWidget(self.x_trans)
			
			self.y_label = QtGui.QLabel()
			self.y_label.setText('y')
			self.hbl_trans.addWidget(self.y_label)
			
			self.y_trans = QtGui.QDoubleSpinBox(maintab)
			self.y_trans.setMinimum(-10000)
			self.y_trans.setMaximum(10000)
			self.y_trans.setValue(0.0)
			self.hbl_trans.addWidget(self.y_trans)
			
			
			self.z_label = QtGui.QLabel()
			self.z_label.setText('z')
			self.hbl_trans.addWidget(self.z_label)
			
			self.z_trans = QtGui.QDoubleSpinBox(maintab)
			self.z_trans.setMinimum(-10000)
			self.z_trans.setMaximum(10000)
			self.z_trans.setValue(0.0)
			self.hbl_trans.addWidget(self.z_trans)
			
			self.hbl_src = QtGui.QHBoxLayout()
			self.hbl_src.setMargin(0)
			self.hbl_src.setSpacing(6)
			self.hbl_src.setObjectName("hbl")
			maintab.vbl.addLayout(self.hbl_src)
			
			self.label_src = QtGui.QLabel()
			self.label_src.setText('Rotation Convention')
			self.hbl_src.addWidget(self.label_src)
			
			self.src = QtGui.QComboBox(maintab)
			self.load_src_options(self.src)
			self.hbl_src.addWidget(self.src)
			
			# set default value -1 ensures that the val slider is updated the first time it is created
			self.az = ValSlider(self,(-360.0,360.0),"az",-1)
			self.az.setObjectName("az")
			maintab.vbl.addWidget(self.az)
			
			self.alt = ValSlider(self,(-180.0,180.0),"alt",-1)
			self.alt.setObjectName("alt")
			maintab.vbl.addWidget(self.alt)
			
			self.phi = ValSlider(self,(-360.0,360.0),"phi",-1)
			self.phi.setObjectName("phi")
			maintab.vbl.addWidget(self.phi)
		
			self.current_src = EULER_EMAN
		
		return self.maintab

	def set_xy_trans(self, x, y):
		self.x_trans.setValue(x)
		self.y_trans.setValue(y)
	
	def set_translate_scale(self, xscale,yscale,zscale):
		self.x_trans.setSingleStep(xscale)
		self.y_trans.setSingleStep(yscale)
		self.z_trans.setSingleStep(zscale)

	def update_rotations(self,t3d):
		rot = t3d.get_rotation(self.src_map[str(self.src.itemText(self.src.currentIndex()))])
		
		convention = self.src.currentText()
		if ( self.src_map[str(convention)] == EULER_SPIN ):
			self.n3.setValue(rot[self.n3.getLabel()],True)
		
		self.az.setValue(rot[self.az.getLabel()],True)
		self.alt.setValue(rot[self.alt.getLabel()],True)
		self.phi.setValue(rot[self.phi.getLabel()],True)
	
	def slider_rotate(self):
		self.target.load_rotation(self.get_current_rotation())
	
	def get_current_rotation(self):
		convention = self.src.currentText()
		rot = {}
		if ( self.current_src == EULER_SPIN ):
			rot[self.az.getLabel()] = self.az.getValue()
			
			n1 = self.alt.getValue()
			n2 = self.phi.getValue()
			n3 = self.n3.getValue()
			
			norm = sqrt(n1*n1 + n2*n2 + n3*n3)
			
			n1 /= norm
			n2 /= norm
			n3 /= norm
			
			rot[self.alt.getLabel()] = n1
			rot[self.phi.getLabel()] = n2
			rot[self.n3.getLabel()] = n3
			
		else:
			rot[self.az.getLabel()] = self.az.getValue()
			rot[self.alt.getLabel()] = self.alt.getValue()
			rot[self.phi.getLabel()] = self.phi.getValue()
		
		return Transform3D(self.current_src, rot)
	
	def set_src(self, val):
		t3d = self.get_current_rotation()
		
		if (self.n3_showing) :
			self.vbl.removeWidget(self.n3)
			self.n3.deleteLater()
			self.n3_showing = False
			self.az.setRange(-360,360)
			self.alt.setRange(-180,180)
			self.phi.setRange(-360,660)
		
		if ( self.src_map[str(val)] == EULER_SPIDER ):
			self.az.setLabel('phi')
			self.alt.setLabel('theta')
			self.phi.setLabel('psi')
		elif ( self.src_map[str(val)] == EULER_EMAN ):
			self.az.setLabel('az')
			self.alt.setLabel('alt')
			self.phi.setLabel('phi')
		elif ( self.src_map[str(val)] == EULER_IMAGIC ):
			self.az.setLabel('alpha')
			self.alt.setLabel('beta')
			self.phi.setLabel('gamma')
		elif ( self.src_map[str(val)] == EULER_XYZ ):
			self.az.setLabel('xtilt')
			self.alt.setLabel('ytilt')
			self.phi.setLabel('ztilt')
		elif ( self.src_map[str(val)] == EULER_MRC ):
			self.az.setLabel('phi')
			self.alt.setLabel('theta')
			self.phi.setLabel('omega')
		elif ( self.src_map[str(val)] == EULER_SPIN ):
			self.az.setLabel('Omega')
			self.alt.setRange(-1,1)
			self.phi.setRange(-1,1)
			
			self.alt.setLabel('n1')
			self.phi.setLabel('n2')
			
			self.n3 = ValSlider(self,(-360.0,360.0),"n3",-1)
			self.n3.setRange(-1,1)
			self.n3.setObjectName("n3")
			self.vbl.addWidget(self.n3)
			QtCore.QObject.connect(self.n3, QtCore.SIGNAL("valueChanged"), self.slider_rotate)
			self.n3_showing = True
		
		self.current_src = self.src_map[str(val)]
		self.update_rotations(t3d)
	
	def load_src_options(self,widgit):
		self.load_src()
		for i in self.src_strings:
			widgit.addItem(i)
	
	# read src as 'supported rotation conventions'
	def load_src(self):
		# supported_rot_conventions
		src_flags = []
		src_flags.append(EULER_EMAN)
		src_flags.append(EULER_SPIDER)
		src_flags.append(EULER_IMAGIC)
		src_flags.append(EULER_MRC)
		src_flags.append(EULER_SPIN)
		src_flags.append(EULER_XYZ)
		
		self.src_strings = []
		self.src_map = {}
		for i in src_flags:
			self.src_strings.append(str(i))
			self.src_map[str(i)] = i
		
	
	def setColors(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 set_scale(self,newscale):
		self.scale.setValue(newscale)
Example #6
0
    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)
Example #7
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)
Example #8
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)
Example #9
0
	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)
Example #10
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)
Example #11
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)
Example #12
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)