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_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 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 get_widget(self): if self.widget == None: from PyQt4 import QtCore, QtGui, Qt self.widget = QtGui.QWidget() vbl = QtGui.QVBoxLayout(self.widget) vbl.setMargin(0) vbl.setSpacing(6) vbl.setObjectName("vbl") hbl = QtGui.QHBoxLayout() hbl.addWidget(QtGui.QLabel("Erase Radius:")) from valslider import ValSlider self.erase_rad_edit = ValSlider(None, (0.0, 1000.0), "") self.erase_rad_edit.setValue(int(self.erase_radius)) self.erase_rad_edit.setEnabled(True) hbl.addWidget(self.erase_rad_edit) self.unerase = QtGui.QCheckBox("Unerase") self.unerase.setChecked(False) vbl.addLayout(hbl) vbl.addWidget(self.unerase) QtCore.QObject.connect(self.erase_rad_edit, QtCore.SIGNAL("sliderReleased"), self.new_erase_radius) QtCore.QObject.connect(self.unerase, QtCore.SIGNAL("clicked(bool)"), self.unerase_checked) return self.widget
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 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 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_bgRGB_tab(self): self.bgRGBtab = QtGui.QWidget() bgRGBtab = self.bgRGBtab bgRGBtab.vbl2 = QtGui.QVBoxLayout(self.bgRGBtab) bgRGBtab.vbl2.setMargin(0) bgRGBtab.vbl2.setSpacing(6) bgRGBtab.vbl2.setObjectName("BG RGB") self.hbl2 = QtGui.QHBoxLayout() self.bgR = ValSlider(self, (0, 1), "R:") self.bgR.setObjectName("R") self.bgR.setValue(0.5) self.hbl2.addWidget(self.bgR) bgRGBtab.vbl2.addLayout(self.hbl2) self.hbl2 = QtGui.QHBoxLayout() self.bgG = ValSlider(self, (0, 1), "G:") self.bgG.setObjectName("G") self.bgG.setValue(0.5) self.hbl2.addWidget(self.bgG) bgRGBtab.vbl2.addLayout(self.hbl2) self.hbl2 = QtGui.QHBoxLayout() self.bgB = ValSlider(self, (0, 1), "B:") self.bgB.setObjectName("B") self.bgB.setValue(0.5) self.hbl2.addWidget(self.bgB) bgRGBtab.vbl2.addLayout(self.hbl2) self.hbl2 = QtGui.QHBoxLayout() self.bg_a = ValSlider(self, (0, 1), "Alpha:") self.bg_a.setObjectName("Alpha") self.bg_a.setValue(1.0) self.hbl2.addWidget(self.bg_a) bgRGBtab.vbl2.addLayout(self.hbl2) return bgRGBtab
def set_src(self, val): t3d = self.get_current_rotation() if (self.n3_showing): self.parent().get_transform_layout().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)] == "spider"): self.az.setLabel('phi') self.alt.setLabel('theta') self.phi.setLabel('psi') elif (self.src_map[str(val)] == "eman"): self.az.setLabel('az') self.alt.setLabel('alt') self.phi.setLabel('phi') elif (self.src_map[str(val)] == "imagic"): self.az.setLabel('alpha') self.alt.setLabel('beta') self.phi.setLabel('gamma') elif (self.src_map[str(val)] == "xyz"): self.az.setLabel('xtilt') self.alt.setLabel('ytilt') self.phi.setLabel('ztilt') elif (self.src_map[str(val)] == "mrc"): self.az.setLabel('phi') self.alt.setLabel('theta') self.phi.setLabel('omega') elif (self.src_map[str(val)] == "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.parent(), (-360.0, 360.0), "n3", -1) self.n3.setRange(-1, 1) self.n3.setObjectName("n3") self.parent().get_transform_layout().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 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 __init__(self, application, apix=1.0, voltage=300.0, cs=4.1, ac=10.0, samples=256): """CTF simulation dialog """ try: from emimage2d import EMImage2DWidget except: print "Cannot import EMAN image GUI objects (EMImage2DWidget)" sys.exit(1) try: from emplot2d import EMPlot2DWidget except: print "Cannot import EMAN plot GUI objects (is matplotlib installed?)" sys.exit(1) self.app = weakref.ref(application) self.df_voltage = voltage self.df_apix = apix self.df_cs = cs self.df_ac = ac self.df_samples = samples self.img = None QtGui.QWidget.__init__(self, None) self.setWindowIcon(QtGui.QIcon(get_image_directory() + "ctf.png")) self.data = [] self.curset = 0 self.plotmode = 0 self.guiim = EMImage2DWidget(application=self.app()) self.guiiminit = True # a flag that's used to auto resize the first time the gui's set_data function is called self.guiplot = EMPlot2DWidget(application=self.app()) # self.guirealim=EMImage2DWidget(application=self.app()) # This will show the original particle images # self.guirealim.connect(self.guirealim,QtCore.SIGNAL("keypress"),self.realimgkey) self.guiim.connect(self.guiim, QtCore.SIGNAL("mousedown"), self.imgmousedown) self.guiim.connect(self.guiim, QtCore.SIGNAL("mousedrag"), self.imgmousedrag) self.guiim.connect(self.guiim, QtCore.SIGNAL("mouseup"), self.imgmouseup) self.guiplot.connect(self.guiplot, QtCore.SIGNAL("mousedown"), self.plotmousedown) self.guiim.mmode = "app" # This object is itself a widget we need to set up self.hbl = QtGui.QHBoxLayout(self) self.hbl.setMargin(0) self.hbl.setSpacing(6) self.hbl.setObjectName("hbl") # plot list and plot mode combobox self.vbl2 = QtGui.QVBoxLayout() self.setlist = MyListWidget(self) self.setlist.setSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding) self.vbl2.addWidget(self.setlist) self.splotmode = QtGui.QComboBox(self) self.splotmode.addItem("Amplitude") self.splotmode.addItem("Intensity") self.splotmode.addItem("Int w sum") self.splotmode.addItem("Amp w sum") self.vbl2.addWidget(self.splotmode) self.hbl.addLayout(self.vbl2) # ValSliders for CTF parameters self.vbl = QtGui.QVBoxLayout() self.vbl.setMargin(0) self.vbl.setSpacing(6) self.vbl.setObjectName("vbl") self.hbl.addLayout(self.vbl) #self.samp = ValSlider(self,(0,5.0),"Amp:",0) #self.vbl.addWidget(self.samp) self.imginfo = QtGui.QLabel("Info", self) self.vbl.addWidget(self.imginfo) self.sdefocus = ValSlider(self, (0, 5), "Defocus:", 0, 90) self.vbl.addWidget(self.sdefocus) self.sbfactor = ValSlider(self, (0, 1600), "B factor:", 0, 90) self.vbl.addWidget(self.sbfactor) self.sdfdiff = ValSlider(self, (0, 1), "DF Diff:", 0, 90) self.vbl.addWidget(self.sdfdiff) self.sdfang = ValSlider(self, (0, 180), "Df Angle:", 0, 90) self.vbl.addWidget(self.sdfang) self.sampcont = ValSlider(self, (0, 100), "% AC", 0, 90) self.vbl.addWidget(self.sampcont) self.sapix = ValSlider(self, (.2, 10), "A/Pix:", 2, 90) self.vbl.addWidget(self.sapix) self.svoltage = ValSlider(self, (0, 1000), "Voltage (kV):", 0, 90) self.vbl.addWidget(self.svoltage) self.scs = ValSlider(self, (0, 5), "Cs (mm):", 0, 90) self.vbl.addWidget(self.scs) self.ssamples = ValSlider(self, (32, 1024), "# Samples:", 0, 90) self.ssamples.setIntonly(True) self.vbl.addWidget(self.ssamples) self.hbl_buttons = QtGui.QHBoxLayout() self.newbut = QtGui.QPushButton("New") self.hbl_buttons.addWidget(self.newbut) self.vbl.addLayout(self.hbl_buttons) self.on_new_but() QtCore.QObject.connect(self.sdefocus, QtCore.SIGNAL("valueChanged"), self.newCTF) QtCore.QObject.connect(self.sbfactor, QtCore.SIGNAL("valueChanged"), self.newCTF) QtCore.QObject.connect(self.sdfdiff, QtCore.SIGNAL("valueChanged"), self.newCTF) QtCore.QObject.connect(self.sdfang, QtCore.SIGNAL("valueChanged"), self.newCTF) QtCore.QObject.connect(self.sapix, QtCore.SIGNAL("valueChanged"), self.newCTF) QtCore.QObject.connect(self.sampcont, QtCore.SIGNAL("valueChanged"), self.newCTF) QtCore.QObject.connect(self.svoltage, QtCore.SIGNAL("valueChanged"), self.newCTF) QtCore.QObject.connect(self.scs, QtCore.SIGNAL("valueChanged"), self.newCTF) QtCore.QObject.connect(self.ssamples, QtCore.SIGNAL("valueChanged"), self.newCTF) QtCore.QObject.connect(self.setlist, QtCore.SIGNAL("currentRowChanged(int)"), self.newSet) QtCore.QObject.connect(self.setlist, QtCore.SIGNAL("keypress"), self.listkey) QtCore.QObject.connect(self.splotmode, QtCore.SIGNAL("currentIndexChanged(int)"), self.newPlotMode) QtCore.QObject.connect(self.newbut, QtCore.SIGNAL("clicked(bool)"), self.on_new_but) self.resize( 720, 380 ) # figured these values out by printing the width and height in resize event E2loadappwin("e2ctfsim", "main", self) E2loadappwin("e2ctfsim", "image", self.guiim.qt_parent) # E2loadappwin("e2ctf","realimage",self.guirealim.qt_parent) E2loadappwin("e2ctfsim", "plot", self.guiplot.qt_parent) self.setWindowTitle("CTF")
def __init__(self, application, data): """Implements the CTF fitting dialog using various EMImage and EMPlot2D widgets 'data' is a list of (filename,ctf,im_1d,bg_1d,im_2d,bg_2d) """ try: from emimage2d import EMImage2DWidget except: print "Cannot import EMAN image GUI objects (EMImage2DWidget)" sys.exit(1) try: from emplot2d import EMPlot2DWidget except: print "Cannot import EMAN plot GUI objects (is matplotlib installed?)" sys.exit(1) self.app = weakref.ref(application) QtGui.QWidget.__init__(self, None) self.setWindowIcon(QtGui.QIcon(get_image_directory() + "ctf.png")) self.data = data self.curset = 0 self.plotmode = 0 self.guiim = EMImage2DWidget(application=self.app()) self.guiplot = EMPlot2DWidget(application=self.app()) self.guiim.connect(self.guiim, QtCore.SIGNAL("mousedown"), self.imgmousedown) self.guiim.connect(self.guiim, QtCore.SIGNAL("mousedrag"), self.imgmousedrag) self.guiim.connect(self.guiim, QtCore.SIGNAL("mouseup"), self.imgmouseup) self.guiplot.connect(self.guiplot, QtCore.SIGNAL("mousedown"), self.plotmousedown) self.guiim.mmode = "app" # This object is itself a widget we need to set up self.hbl = QtGui.QHBoxLayout(self) self.hbl.setMargin(0) self.hbl.setSpacing(6) self.hbl.setObjectName("hbl") # plot list and plot mode combobox self.vbl2 = QtGui.QVBoxLayout() self.setlist = QtGui.QListWidget(self) self.setlist.setSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding) self.vbl2.addWidget(self.setlist) self.splotmode = QtGui.QComboBox(self) self.splotmode.addItem("Bgsub & fit") self.splotmode.addItem("Ptcl & BG power") self.splotmode.addItem("SNR") self.splotmode.addItem("Smoothed SNR") self.splotmode.addItem("Integrated SNR") self.splotmode.addItem("Total CTF") self.vbl2.addWidget(self.splotmode) self.hbl.addLayout(self.vbl2) # ValSliders for CTF parameters self.vbl = QtGui.QVBoxLayout() self.vbl.setMargin(0) self.vbl.setSpacing(6) self.vbl.setObjectName("vbl") self.hbl.addLayout(self.vbl) #self.samp = ValSlider(self,(0,5.0),"Amp:",0) #self.vbl.addWidget(self.samp) self.sdefocus = ValSlider(self, (0, 5), "Defocus:", 0, 90) self.vbl.addWidget(self.sdefocus) self.sbfactor = ValSlider(self, (0, 1600), "B factor:", 0, 90) self.vbl.addWidget(self.sbfactor) self.sampcont = ValSlider(self, (0, 100), "% AC", 0, 90) self.vbl.addWidget(self.sampcont) # self.sapix=ValSlider(self,(.2,10),"A/Pix:",2,90) # self.vbl.addWidget(self.sapix) self.svoltage = ValSlider(self, (0, 500), "Voltage (kV):", 0, 90) self.vbl.addWidget(self.svoltage) self.scs = ValSlider(self, (0, 5), "Cs (mm):", 0, 90) self.vbl.addWidget(self.scs) self.hbl_buttons = QtGui.QHBoxLayout() self.saveparms = QtGui.QPushButton("Save parms") self.recallparms = QtGui.QPushButton("Recall") self.output = QtGui.QPushButton("Output") self.hbl_buttons.addWidget(self.saveparms) self.hbl_buttons.addWidget(self.recallparms) self.hbl_buttons2 = QtGui.QHBoxLayout() self.hbl_buttons2.addWidget(self.output) self.vbl.addLayout(self.hbl_buttons) self.vbl.addLayout(self.hbl_buttons2) QtCore.QObject.connect(self.sdefocus, QtCore.SIGNAL("valueChanged"), self.newCTF) QtCore.QObject.connect(self.sbfactor, QtCore.SIGNAL("valueChanged"), self.newCTF) # QtCore.QObject.connect(self.sapix, QtCore.SIGNAL("valueChanged"), self.newCTF) QtCore.QObject.connect(self.sampcont, QtCore.SIGNAL("valueChanged"), self.newCTF) QtCore.QObject.connect(self.svoltage, QtCore.SIGNAL("valueChanged"), self.newCTF) QtCore.QObject.connect(self.scs, QtCore.SIGNAL("valueChanged"), self.newCTF) QtCore.QObject.connect(self.setlist, QtCore.SIGNAL("currentRowChanged(int)"), self.newSet) QtCore.QObject.connect(self.splotmode, QtCore.SIGNAL("currentIndexChanged(int)"), self.newPlotMode) QtCore.QObject.connect(self.saveparms, QtCore.SIGNAL("clicked(bool)"), self.on_save_params) QtCore.QObject.connect(self.recallparms, QtCore.SIGNAL("clicked(bool)"), self.on_recall_params) QtCore.QObject.connect(self.output, QtCore.SIGNAL("clicked(bool)"), self.on_output) self.update_data() self.update_data() self.resize( 460, 380 ) # figured these values out by printing the width and height in resize event self.setWindowTitle("CTF")
def __init__(self, app): self.app = app QtGui.QWidget.__init__(self, None) self.synthplot = EMPlot2DWidget(self.app) self.synthplot.show() # overall layout self.vbl1 = QtGui.QVBoxLayout() self.setLayout(self.vbl1) # First row contains general purpose controls self.hbl1 = QtGui.QHBoxLayout() self.vbl1.addLayout(self.hbl1) self.vcell = ValBox(self, (0, 128.0), "Cell:", 64) self.hbl1.addWidget(self.vcell) self.vncells = ValBox(self, (0, 128.0), "n Cells:", 1) self.hbl1.addWidget(self.vncells) self.voversamp = ValBox(self, (0, 128.0), "Oversample:", 1) self.hbl1.addWidget(self.voversamp) self.targfn = None self.vnsin = ValBox(self, (1, 64), "# Sin:", 16) self.vnsin.intonly = 1 self.hbl1.addWidget(self.vnsin) self.cbshowall = QtGui.QCheckBox("Show All") self.hbl1.addWidget(self.cbshowall) self.cbshifted = QtGui.QCheckBox("Shifted") self.hbl1.addWidget(self.cbshifted) self.cbtargfn = QtGui.QComboBox(self) self.cbtargfn.addItem("None") self.cbtargfn.addItem("triangle") self.cbtargfn.addItem("square") self.cbtargfn.addItem("square imp") self.cbtargfn.addItem("delta") self.cbtargfn.addItem("noise") self.cbtargfn.addItem("saw") self.cbtargfn.addItem("sin") self.cbtargfn.addItem("modsin") self.cbtargfn.addItem("modsin2") self.cbtargfn.addItem("modsin3") self.cbtargfn.addItem("sin low") self.cbtargfn.addItem("doubledelta") self.cbtargfn.addItem("sin bad f") self.cbtargfn.addItem("sin bad f2") self.hbl1.addWidget(self.cbtargfn) # Widget containing valsliders self.wapsliders = QtGui.QWidget(self) # self.wapsliders.setMinimumSize(800,640) self.gblap = QtGui.QGridLayout() self.gblap.setSizeConstraint(QtGui.QLayout.SetMinAndMaxSize) self.gblap.setColumnMinimumWidth(0, 250) self.gblap.setColumnMinimumWidth(1, 250) self.wapsliders.setLayout(self.gblap) # ScrollArea providing view on slider container widget self.wapsarea = QtGui.QScrollArea(self) self.wapsarea.setWidgetResizable(True) self.wapsarea.setWidget(self.wapsliders) self.vbl1.addWidget(self.wapsarea) QtCore.QObject.connect(self.vcell, QtCore.SIGNAL("valueChanged"), self.recompute) QtCore.QObject.connect(self.vncells, QtCore.SIGNAL("valueChanged"), self.recompute) QtCore.QObject.connect(self.voversamp, QtCore.SIGNAL("valueChanged"), self.recompute) QtCore.QObject.connect(self.vnsin, QtCore.SIGNAL("valueChanged"), self.nsinchange) QtCore.QObject.connect(self.cbshowall, QtCore.SIGNAL("stateChanged(int)"), self.recompute) QtCore.QObject.connect(self.cbshifted, QtCore.SIGNAL("stateChanged(int)"), self.recompute) QtCore.QObject.connect(self.cbtargfn, QtCore.SIGNAL("activated(int)"), self.newtargfn) self.wamp = [] self.wpha = [] self.curves = [] self.xvals = [] for i in range(65): self.wamp.append(ValSlider(self, (0.0, 1.0), "%2d:" % i, 0.0)) self.gblap.addWidget(self.wamp[-1], i, 0) QtCore.QObject.connect(self.wamp[-1], QtCore.SIGNAL("valueChanged"), self.recompute) self.wpha.append(ValSlider(self, (-180.0, 180.0), "%2d:" % i, 0.0)) self.gblap.addWidget(self.wpha[-1], i, 1) QtCore.QObject.connect(self.wpha[-1], QtCore.SIGNAL("valueChanged"), self.recompute) self.curves.append(EMData(64, 1)) if self.cbshowall.isChecked(): self.synthplot self.total = EMData(64, 1) self.nsinchange()
def get_format_tab(self): self.formattab = QtGui.QWidget() formattab = self.formattab formattab.vbl = QtGui.QVBoxLayout(self.formattab) formattab.vbl.setMargin(0) formattab.vbl.setSpacing(6) formattab.vbl.setObjectName("Format") self.hbl1 = QtGui.QHBoxLayout() self.text = QtGui.QLineEdit() self.text.setText("hello world") text_label = QtGui.QLabel("Enter Text:", self) text_label.setToolTip( "Enters quotes to evaluate new line e.g. \"hello\\nworld\". Evaluates numerical expressions e.g. 9*9 (with out quotes)" ) self.hbl1.addWidget(text_label) self.hbl1.addWidget(self.text) formattab.vbl.addLayout(self.hbl1) self.hbl1 = QtGui.QHBoxLayout() self.Dfont = QtGui.QComboBox() for k in self.l: self.Dfont.addItem(k) self.hbl1.addWidget(QtGui.QLabel("Fonts:", self)) self.hbl1.addWidget(self.Dfont) formattab.vbl.addLayout(self.hbl1) self.hbl1 = QtGui.QHBoxLayout() self.tsize = QtGui.QSpinBox() self.tsize.setRange(0, 500) self.tsize.setValue(32) self.hbl1.addWidget(QtGui.QLabel("Size:", self), Qt.AlignLeft) self.hbl1.addWidget(self.tsize, Qt.AlignRight) self.combo = QtGui.QComboBox() self.items = [ "Extrude", "Pixmap", "Bitmap", "Polygon", "Outline", "Texture" ] for k in self.items: self.combo.addItem(k) self.hbl1.addWidget(QtGui.QLabel("Style:", self), Qt.AlignLeft) self.hbl1.addWidget(self.combo, Qt.AlignRight) formattab.vbl.addLayout(self.hbl1) self.hbl1 = QtGui.QHBoxLayout() self.lspacing = ValSlider(self, (-100.0, 100.0), "Line Spacing:") self.lspacing.setObjectName("Length") self.lspacing.setValue(75.0) self.lspacing.setEnabled(False) self.hbl1.addWidget(self.lspacing) formattab.vbl.addLayout(self.hbl1) self.hbl1 = QtGui.QHBoxLayout() self.length = ValSlider(self, (0.0, 500.0), "Length:") self.length.setObjectName("Length") self.length.setValue(75.0) self.hbl1.addWidget(self.length) formattab.vbl.addLayout(self.hbl1) self.hbl1 = QtGui.QHBoxLayout() self.cbb = QtGui.QComboBox() self.hbl1.addWidget(QtGui.QLabel("Material:", self)) self.hbl1.addWidget(self.cbb) formattab.vbl.addLayout(self.hbl1) self.hbl1 = QtGui.QHBoxLayout() self.bgtabwidget = QtGui.QTabWidget() self.maintab = None self.bgtabwidget.addTab(self.get_bgRGB_tab(), "BG RGB") self.hbl1.addWidget(self.bgtabwidget) self.n3_showing = False formattab.vbl.addLayout(self.hbl1) return formattab
def __init__(self, app, maxshift, invert=False, seqali=False, tiltstep=2.0): self.app = app self.maxshift = maxshift self.seqali = seqali self.invert = invert self.tiltstep = tiltstep # the control panel QtGui.QWidget.__init__(self, None) self.gbl = QtGui.QGridLayout(self) self.gbl.setMargin(0) self.gbl.setSpacing(6) self.gbl.setObjectName("hbl") # action buttons self.bcenalign = QtGui.QPushButton("Center Align") self.bprojalign = QtGui.QPushButton("Proj. Realign") self.btiltaxis = QtGui.QPushButton("Tilt Axis") self.btiltaxisval = QtGui.QLineEdit("90.0") self.bsavedata = QtGui.QPushButton("Save Data") self.breconst = QtGui.QPushButton("3D Normal") self.sbmode = QtGui.QSpinBox(self) self.sbmode.setRange(0, 2) self.sbmode.setValue(0) self.bmagict = QtGui.QPushButton("3D Tomofill") self.bmagics = QtGui.QPushButton("3D Sph") self.bmagicc = QtGui.QPushButton("3D Cyl") self.vslpfilt = ValSlider(self, (0, .5), "Filter", 0.5, 50) self.gbl.addWidget(self.bcenalign, 0, 0) self.gbl.addWidget(self.bprojalign, 0, 1) self.gbl.addWidget(self.btiltaxis, 0, 2) self.gbl.addWidget(self.btiltaxisval, 0, 3) # self.gbl.addWidget(self.bsavedata,0,3) self.gbl.addWidget(self.breconst, 1, 0) self.gbl.addWidget(self.sbmode, 2, 0, 1, 1) self.gbl.addWidget(self.vslpfilt, 3, 0, 1, 4) self.gbl.addWidget(self.bmagict, 1, 1) self.gbl.addWidget(self.bmagics, 1, 2) self.gbl.addWidget(self.bmagicc, 1, 3) QtCore.QObject.connect(self.bcenalign, QtCore.SIGNAL("clicked(bool)"), self.do_cenalign) QtCore.QObject.connect(self.bprojalign, QtCore.SIGNAL("clicked(bool)"), self.do_projalign) QtCore.QObject.connect(self.btiltaxis, QtCore.SIGNAL("clicked(bool)"), self.do_tiltaxis) QtCore.QObject.connect(self.bsavedata, QtCore.SIGNAL("clicked(bool)"), self.do_savedata) QtCore.QObject.connect(self.breconst, QtCore.SIGNAL("clicked(bool)"), self.do_reconst) QtCore.QObject.connect(self.bmagict, QtCore.SIGNAL("clicked(bool)"), self.do_magict) QtCore.QObject.connect(self.bmagics, QtCore.SIGNAL("clicked(bool)"), self.do_magics) QtCore.QObject.connect(self.bmagicc, QtCore.SIGNAL("clicked(bool)"), self.do_magicc) QtCore.QObject.connect(self.vslpfilt, QtCore.SIGNAL("valueChanged"), self.do_filter) # the single image display widget self.im2d = EMImage2DWidget(application=app, winid="tomotrackbox.big") self.imboxed = EMImage2DWidget(application=app, winid="tomotrackbox.small") self.improj = EMImage2DWidget(application=app, winid="tomotrackbox.proj") self.imslice = EMImage2DWidget(application=app, winid="tomotrackbox.3dslice") self.imvol = EMImage3DModule(application=app, winid="tomotrackbox.3d") # get some signals from the window. QtCore.QObject.connect(self.im2d, QtCore.SIGNAL("mousedown"), self.down) QtCore.QObject.connect(self.im2d, QtCore.SIGNAL("mousedrag"), self.drag) QtCore.QObject.connect(self.im2d, QtCore.SIGNAL("mouseup"), self.up) QtCore.QObject.connect(self.im2d, QtCore.SIGNAL("increment_list_data"), self.change_tilt) self.imagefile = None self.imageparm = None self.tiltshapes = None self.curtilt = 0 self.oldtilt = self.curtilt self.map3d = None self.downloc = None self.downadjloc = None self.show() self.im2d.show()
def __init__(self, target, parent): self.target = weakref.ref(target) self.parent = weakref.ref(parent) self.label_src = QtGui.QLabel(parent) self.label_src.setText('Rotation Convention') self.src = QtGui.QComboBox(parent) self.load_src_options(self.src) self.x_label = QtGui.QLabel() self.x_label.setText('x') self.x_trans = QtGui.QDoubleSpinBox(parent) self.x_trans.setMinimum(-10000) self.x_trans.setMaximum(10000) self.x_trans.setValue(0.0) self.y_label = QtGui.QLabel() self.y_label.setText('y') self.y_trans = QtGui.QDoubleSpinBox(parent) self.y_trans.setMinimum(-10000) self.y_trans.setMaximum(10000) self.y_trans.setValue(0.0) self.z_label = QtGui.QLabel() self.z_label.setText('z') self.z_trans = QtGui.QDoubleSpinBox(parent) self.z_trans.setMinimum(-10000) self.z_trans.setMaximum(10000) self.z_trans.setValue(0.0) self.az = ValSlider(parent, (-360.0, 360.0), "az", -1) self.az.setObjectName("az") self.az.setValue(0.0) self.alt = ValSlider(parent, (-180.0, 180.0), "alt", -1) self.alt.setObjectName("alt") self.alt.setValue(0.0) self.phi = ValSlider(parent, (-360.0, 360.0), "phi", -1) self.phi.setObjectName("phi") self.phi.setValue(0.0) self.scale = ValSlider(parent, (0.01, 30.0), "Zoom:") self.scale.setObjectName("scale") self.scale.setValue(1.0) self.n3_showing = False self.current_src = "eman" 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.src, QtCore.SIGNAL("currentIndexChanged(QString)"), self.set_src) QtCore.QObject.connect(self.scale, QtCore.SIGNAL("valueChanged"), self.target().set_scale) QtCore.QObject.connect(self.x_trans, QtCore.SIGNAL("valueChanged(double)"), self.target().set_cam_x) QtCore.QObject.connect(self.y_trans, QtCore.SIGNAL("valueChanged(double)"), self.target().set_cam_y) QtCore.QObject.connect(self.z_trans, QtCore.SIGNAL("valueChanged(double)"), self.target().set_cam_z)
def addRotationWidgets(self): """ Add alll the widgets for the various EMAN2 rotation conventions """ EMANwidget = QtGui.QWidget() Imagicwidget = QtGui.QWidget() Spiderwidget = QtGui.QWidget() MRCwidget = QtGui.QWidget() XYZwidget = QtGui.QWidget() spinwidget = QtGui.QWidget() sgirotwidget = QtGui.QWidget() quaternionwidget = QtGui.QWidget() # EMAN emanbox = QtGui.QVBoxLayout() self.emanazslider = ValSlider(EMANwidget, (0.0, 360.0), " Az", rounding=1) self.emanaltslider = ValSlider(EMANwidget, (0.0, 180.0), "Alt", rounding=1) self.emanphislider = ValSlider(EMANwidget, (0.0, 360.0), "Phi", rounding=1) emanbox.addWidget(self.emanazslider) emanbox.addWidget(self.emanaltslider) emanbox.addWidget(self.emanphislider) EMANwidget.setLayout(emanbox) # Imagic imagicbox = QtGui.QVBoxLayout() self.imagicgammaslider = ValSlider(Imagicwidget, (0.0, 360.0), "Gamma", rounding=1) self.imagicbetaslider = ValSlider(Imagicwidget, (0.0, 180.0), " Beta", rounding=1) self.imagicalphaslider = ValSlider(Imagicwidget, (0.0, 360.0), " Alpha", rounding=1) imagicbox.addWidget(self.imagicgammaslider) imagicbox.addWidget(self.imagicbetaslider) imagicbox.addWidget(self.imagicalphaslider) Imagicwidget.setLayout(imagicbox) # Spider spiderbox = QtGui.QVBoxLayout() self.spiderpsislider = ValSlider(Spiderwidget, (0.0, 360.0), " Psi", rounding=1) self.spiderthetaslider = ValSlider(Spiderwidget, (0.0, 180.0), "Theta", rounding=1) self.spiderphislider = ValSlider(Spiderwidget, (0.0, 360.0), " Phi", rounding=1) spiderbox.addWidget(self.spiderpsislider) spiderbox.addWidget(self.spiderthetaslider) spiderbox.addWidget(self.spiderphislider) Spiderwidget.setLayout(spiderbox) # MRC mrcbox = QtGui.QVBoxLayout() self.mrcpsislider = ValSlider(MRCwidget, (0.0, 360.0), " Psi", rounding=1) self.mrcthetaslider = ValSlider(MRCwidget, (0.0, 180.0), " Theta", rounding=1) self.mrcomegaslider = ValSlider(MRCwidget, (0.0, 360.0), "Omega", rounding=1) mrcbox.addWidget(self.mrcpsislider) mrcbox.addWidget(self.mrcthetaslider) mrcbox.addWidget(self.mrcomegaslider) MRCwidget.setLayout(mrcbox) # XYZ xyzbox = QtGui.QVBoxLayout() self.xyzzslider = ValSlider(XYZwidget, (0.0, 360.0), "Z", rounding=1) self.xyzyslider = ValSlider(XYZwidget, (0.0, 180.0), "Y", rounding=1) self.xyzxslider = ValSlider(XYZwidget, (0.0, 360.0), "X", rounding=1) xyzbox.addWidget(self.xyzzslider) xyzbox.addWidget(self.xyzyslider) xyzbox.addWidget(self.xyzxslider) XYZwidget.setLayout(xyzbox) # spin spinbox = QtGui.QVBoxLayout() self.spinomegaslider = ValSlider(spinwidget, (0.0, 180.0), "Omega", rounding=1) self.spinn1slider = ValSlider(spinwidget, (0.0, 1.0), " N1", rounding=4) self.spinn2slider = ValSlider(spinwidget, (0.0, 1.0), " N2", rounding=4) self.spinn3slider = ValSlider(spinwidget, (0.0, 1.0), " N3", rounding=4) spinbox.addWidget(self.spinomegaslider) spinbox.addWidget(self.spinn1slider) spinbox.addWidget(self.spinn2slider) spinbox.addWidget(self.spinn3slider) spinwidget.setLayout(spinbox) # sgirot sgirotbox = QtGui.QVBoxLayout() self.sgirotqslider = ValSlider(sgirotwidget, (0.0, 180.0), " Q", rounding=1) self.sgirotn1slider = ValSlider(sgirotwidget, (0.0, 1.0), "N1", rounding=4) self.sgirotn2slider = ValSlider(sgirotwidget, (0.0, 1.0), "N2", rounding=4) self.sgirotn3slider = ValSlider(sgirotwidget, (0.0, 1.0), "N3", rounding=4) sgirotbox.addWidget(self.sgirotqslider) sgirotbox.addWidget(self.sgirotn1slider) sgirotbox.addWidget(self.sgirotn2slider) sgirotbox.addWidget(self.sgirotn3slider) sgirotwidget.setLayout(sgirotbox) # quaternion quaternionbox = QtGui.QVBoxLayout() self.quaternione0slider = ValSlider(quaternionwidget, (0.0, 1.0), "E0", rounding=4) self.quaternione1slider = ValSlider(quaternionwidget, (0.0, 1.0), "E1", rounding=4) self.quaternione2slider = ValSlider(quaternionwidget, (0.0, 1.0), "E2", rounding=4) self.quaternione3slider = ValSlider(quaternionwidget, (0.0, 1.0), "E3", rounding=4) quaternionbox.addWidget(self.quaternione0slider) quaternionbox.addWidget(self.quaternione1slider) quaternionbox.addWidget(self.quaternione2slider) quaternionbox.addWidget(self.quaternione3slider) quaternionwidget.setLayout(quaternionbox) # Add widgets to the stack self.rotstackedwidget.addWidget(EMANwidget) self.rotstackedwidget.addWidget(Imagicwidget) self.rotstackedwidget.addWidget(Spiderwidget) self.rotstackedwidget.addWidget(MRCwidget) self.rotstackedwidget.addWidget(XYZwidget) self.rotstackedwidget.addWidget(spinwidget) self.rotstackedwidget.addWidget(sgirotwidget) self.rotstackedwidget.addWidget(quaternionwidget) # add choices to combobox self.rotcombobox.addItem("EMAN") self.rotcombobox.addItem("Imagic") self.rotcombobox.addItem("Spider") self.rotcombobox.addItem("MRC") self.rotcombobox.addItem("XYZ") self.rotcombobox.addItem("spin") self.rotcombobox.addItem("sgirot") self.rotcombobox.addItem("quaternion") # Signal for all sliders QtCore.QObject.connect(self.rotcombobox, QtCore.SIGNAL("activated(int)"), self._rotcombobox_changed) QtCore.QObject.connect(self.emanazslider, QtCore.SIGNAL("valueChanged"), self._on_EMAN_rotation) QtCore.QObject.connect(self.emanaltslider, QtCore.SIGNAL("valueChanged"), self._on_EMAN_rotation) QtCore.QObject.connect(self.emanphislider, QtCore.SIGNAL("valueChanged"), self._on_EMAN_rotation) QtCore.QObject.connect(self.imagicgammaslider, QtCore.SIGNAL("valueChanged"), self._on_Imagic_rotation) QtCore.QObject.connect(self.imagicbetaslider, QtCore.SIGNAL("valueChanged"), self._on_Imagic_rotation) QtCore.QObject.connect(self.imagicalphaslider, QtCore.SIGNAL("valueChanged"), self._on_Imagic_rotation) QtCore.QObject.connect(self.spiderpsislider, QtCore.SIGNAL("valueChanged"), self._on_Spider_rotation) QtCore.QObject.connect(self.spiderthetaslider, QtCore.SIGNAL("valueChanged"), self._on_Spider_rotation) QtCore.QObject.connect(self.spiderphislider, QtCore.SIGNAL("valueChanged"), self._on_Spider_rotation) QtCore.QObject.connect(self.mrcpsislider, QtCore.SIGNAL("valueChanged"), self._on_MRC_rotation) QtCore.QObject.connect(self.mrcthetaslider, QtCore.SIGNAL("valueChanged"), self._on_MRC_rotation) QtCore.QObject.connect(self.mrcomegaslider, QtCore.SIGNAL("valueChanged"), self._on_MRC_rotation) QtCore.QObject.connect(self.xyzzslider, QtCore.SIGNAL("valueChanged"), self._on_XYZ_rotation) QtCore.QObject.connect(self.xyzyslider, QtCore.SIGNAL("valueChanged"), self._on_XYZ_rotation) QtCore.QObject.connect(self.xyzxslider, QtCore.SIGNAL("valueChanged"), self._on_XYZ_rotation) QtCore.QObject.connect(self.spinomegaslider, QtCore.SIGNAL("valueChanged"), self._on_spin_rotation) QtCore.QObject.connect(self.spinn1slider, QtCore.SIGNAL("valueChanged"), self._on_spin_rotation) QtCore.QObject.connect(self.spinn2slider, QtCore.SIGNAL("valueChanged"), self._on_spin_rotation) QtCore.QObject.connect(self.spinn3slider, QtCore.SIGNAL("valueChanged"), self._on_spin_rotation) QtCore.QObject.connect(self.sgirotqslider, QtCore.SIGNAL("valueChanged"), self._on_sgirot_rotation) QtCore.QObject.connect(self.sgirotn1slider, QtCore.SIGNAL("valueChanged"), self._on_sgirot_rotation) QtCore.QObject.connect(self.sgirotn2slider, QtCore.SIGNAL("valueChanged"), self._on_sgirot_rotation) QtCore.QObject.connect(self.sgirotn3slider, QtCore.SIGNAL("valueChanged"), self._on_sgirot_rotation) QtCore.QObject.connect(self.quaternione0slider, QtCore.SIGNAL("valueChanged"), self._on_quaternion_rotation) QtCore.QObject.connect(self.quaternione1slider, QtCore.SIGNAL("valueChanged"), self._on_quaternion_rotation) QtCore.QObject.connect(self.quaternione2slider, QtCore.SIGNAL("valueChanged"), self._on_quaternion_rotation) QtCore.QObject.connect(self.quaternione3slider, QtCore.SIGNAL("valueChanged"), self._on_quaternion_rotation)
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