コード例 #1
0
    def __init__(self,
                 parent,
                 label='',
                 command=None,
                 open_button=None,
                 show_on_open=False):

        import Tkinter
        f = Tkinter.Frame(parent)
        self.frame = f

        from chimera.widgets import ModelOptionMenu
        m = ModelOptionMenu(f,
                            labelpos='w',
                            label_text=label,
                            listFunc=volume_models,
                            command=command)
        m.grid(row=0, column=0, sticky='w')
        self.menu = m

        if open_button:
            if not type(open_button) is str:
                open_button = 'Browse...'
            bb = Tkinter.Button(f,
                                text=open_button,
                                command=self.open_volume_cb)
            bb.grid(row=0, column=1, sticky='w')

        self.show_on_open = show_on_open
コード例 #2
0
    def fillInUI(self, parent):
        import Pmw, Tkinter
        SaveModeless.fillInUI(self, parent)
        self.clientArea.columnconfigure(0, weight=1)

        row = 0

        from chimera.widgets import ModelOptionMenu
        self.surfList = ModelOptionMenu(
            self.clientArea,
            labelpos='w',
            label_text="Save surface:",
            filtFunc=lambda m: isinstance(m, MSMSModel))
        self.surfList.grid(row=row, column=0)
        row += 1

        self.saveNormalsVar = Tkinter.IntVar(self.clientArea)
        self.saveNormalsVar.set(True)
        Tkinter.Checkbutton(self.clientArea,
                            text="Save normals",
                            variable=self.saveNormalsVar).grid(row=row)
        row += 1

        self.displayedOnlyVar = Tkinter.IntVar(self.clientArea)
        self.displayedOnlyVar.set(True)
        Tkinter.Checkbutton(self.clientArea,
                            text="Limit output to"
                            " displayed surface sections",
                            variable=self.displayedOnlyVar).grid(row=row)
        row += 1
コード例 #3
0
  def fillInUI(self, parent):
    self.toplevel_widget = parent.winfo_toplevel()
    self.toplevel_widget.withdraw()
	
    parent.columnconfigure(0, weight = 1)

    from CGLtk import Hybrid
    import Pmw, Tkinter
	
    from chimera.widgets import MoleculeOptionMenu
    self.molMenu = MoleculeOptionMenu(parent, labelpos="w",
						label_text="Select PDB:")
    self.molMenu.grid(row = 1, column = 0, sticky = 'w')

    from chimera.widgets import MoleculeChainOptionMenu 
    self.chainMenu = MoleculeChainOptionMenu(parent, labelpos="w",
	                    label_text="Select Chain:")
    self.chainMenu.grid(row = 2, column = 0, sticky = 'w')
	
	
    from chimera.widgets import ModelOptionMenu 
    self.modelMenu = ModelOptionMenu(parent, labelpos="w",
	                    label_text="Select MRC:")
    self.modelMenu.grid(row = 3, column = 0, sticky = 'w')
	
    import Pmw
    self.radius = Pmw.EntryField(parent, labelpos="w",
                        label_text="Radius:")
    self.radius.grid(row = 4, column = 0, sticky = 'w')
	
    self.resolution = Pmw.EntryField(parent, labelpos="w",
                        label_text="Resolution:")
    self.resolution.grid(row = 5, column = 0, sticky = 'w')
コード例 #4
0
	def fillInUI(self, parent):
		import Pmw, Tkinter
		SaveModeless.fillInUI(self, parent)
		row = 0

		from chimera.widgets import MoleculeScrolledListBox, \
							ModelOptionMenu
		self.modelList = MoleculeScrolledListBox(self.clientArea,
			labelpos='w', label_text="Save models:",
			listbox_selectmode='extended',
			selectioncommand=lambda: self.configure(
			self.modelList.getvalue(), refreshList=False))
		self.modelList.grid(row=row, column=0, sticky='nsew')
		self.clientArea.rowconfigure(row, weight=1)
		self.clientArea.columnconfigure(0, weight=1)
		row += 1

		from chimera import dialogs
		self.labelMap = {
			"individual":
				"a single file [individual @MOLECULE sections]",
			"combined":
				"a single file [combined @MOLECULE section]",
			"multiple":
				"multiple files [appending model number]"
		}
		preferred = self.labelMap[self.prefs["multiSaveMol2"]]
		self.multiSaveMenu = Pmw.OptionMenu(self.clientArea,
			labelpos='w', label_text="Save multiple models in",
			initialitem=preferred, items=self.labelMap.values())
		# not always shown; remember row number
		self._msmRow = row
		row += 1

		self.saveRelativeVar = Tkinter.IntVar(self.clientArea)
		self.saveRelativeVar.set(False)
		self.relativeFrame = f = Tkinter.Frame(self.clientArea)
		Tkinter.Checkbutton(f, variable=self.saveRelativeVar,
			text="Save relative to model:").grid(row=0,
			column=0, sticky='e')
		self.relModelMenu = ModelOptionMenu(f)
		self.relModelMenu.grid(row=0, column=1, sticky='w')
		self.saveUntransformedVar = Tkinter.IntVar(parent)
		self.saveUntransformedVar.set(True)
		self.untransformedButton = Tkinter.Checkbutton(self.clientArea,
					variable=self.saveUntransformedVar,
					text="Use untransformed coordinates")
		self._rfRow = row
		row += 1

		self.sybylHydNamesVar = Tkinter.IntVar(self.clientArea)
		self.sybylHydNamesVar.set(
				self.prefs["hydrogen naming"] == "sybyl")
		Tkinter.Checkbutton(self.clientArea,
			variable=self.sybylHydNamesVar,
			text="Use Sybyl-style hydrogen naming (e.g. HE12"
			" rather than 2HE1)").grid(row=row, column=0,
			sticky="w")
		row += 1

		self.resNumsVar = Tkinter.IntVar(self.clientArea)
		self.resNumsVar.set(self.prefs["residue numbers"])
		Tkinter.Checkbutton(self.clientArea, variable=self.resNumsVar,
			text="Include residue sequence numbers in substructure"
			" names").grid(row=row, column=0, sticky='w')
		row += 1

		self.writeGaffVar = Tkinter.IntVar(self.clientArea)
		self.resNumsVar.set(False)
		Tkinter.Checkbutton(self.clientArea, variable=self.writeGaffVar,
			text="Write Amber/GAFF atom types instead of Sybyl atom types"
			).grid(row=row, column=0, sticky='w')
		row += 1

		self.rigidVar = Tkinter.IntVar(self.clientArea)
		self.rigidVar.set(False)
		Tkinter.Checkbutton(self.clientArea, variable=self.rigidVar,
			text="Write current selection to @SETS section of file"
			).grid(row=row, column=0, sticky="w")
		row += 1
コード例 #5
0
    def fillInUI(self, parent):

        self.requested_halt = False
        self.xform_handler = None
        self.last_relative_xform = None

        t = parent.winfo_toplevel()
        self.toplevel_widget = t
        t.withdraw()

        parent.columnconfigure(0, weight=1)
        row = 0

        import Tkinter
        from CGLtk import Hybrid
        from VolumeViewer import Volume_Menu

        ff = Tkinter.Frame(parent)
        ff.grid(row=row, column=0, sticky='w')
        row = row + 1

        from chimera.widgets import ModelOptionMenu
        om = ModelOptionMenu(ff,
                             labelpos='w',
                             label_text='Fit ',
                             listFunc=fit_object_models,
                             sortFunc=compare_fit_objects,
                             command=self.object_chosen_cb)
        om.grid(row=0, column=0, sticky='w')
        self.object_menu = om

        fm = Volume_Menu(ff, ' in map ')
        fm.frame.grid(row=0, column=1, sticky='w')
        self.map_menu = fm

        gf = Tkinter.Frame(parent)
        gf.grid(row=row, column=0, sticky='w')
        row += 1

        cl = Tkinter.Label(gf, text='Correlation')
        cl.grid(row=0, column=0, sticky='w')
        cv = Tkinter.Label(gf,
                           width=6,
                           anchor='w',
                           relief=Tkinter.SUNKEN,
                           borderwidth=2)
        cv.grid(row=0, column=1, padx=5, sticky='w')
        self.corr_label = cv
        al = Tkinter.Label(gf, text='Average map value')
        al.grid(row=0, column=2, sticky='w')
        av = Tkinter.Label(gf,
                           width=6,
                           anchor='w',
                           relief=Tkinter.SUNKEN,
                           borderwidth=2)
        av.grid(row=0, column=3, padx=5, sticky='w')
        self.ave_label = av
        ub = Tkinter.Button(gf, text='Update', command=self.update_metric_cb)
        ub.grid(row=0, column=4, sticky='w')

        op = Hybrid.Popup_Panel(parent)
        opf = op.frame
        opf.grid(row=row, column=0, sticky='news')
        opf.grid_remove()
        opf.columnconfigure(0, weight=1)
        self.options_panel = op.panel_shown_variable
        row += 1
        orow = 0

        cb = op.make_close_button(opf)
        cb.grid(row=orow, column=1, sticky='e')

        ru = Hybrid.Checkbutton(opf, 'Real-time correlation / average update',
                                False)
        ru.button.grid(row=orow, column=0, sticky='w')
        orow += 1
        self.realtime_update = ru.variable
        ru.callback(self.realtime_cb)

        sm = Hybrid.Checkbutton_Entries(
            opf, False, 'Use map simulated from atoms, resolution ', (4, ''))
        sm.frame.grid(row=orow, column=0, sticky='nw')
        orow += 1
        self.simulate_map, self.map_resolution = sm.variables
        self.simulate_map.add_callback(self.simulate_map_cb)
        sm.entries[0].bind('<KeyPress-Return>', self.simulate_resolution_cb)

        dt = Hybrid.Checkbutton(
            opf, 'Use only data above contour level from first map', True)
        dt.button.grid(row=orow, column=0, sticky='w')
        orow += 1
        dt.button['state'] = 'disabled'
        self.limit_data = dt
        self.above_threshold = dt.variable

        opt = Hybrid.Radiobutton_Row(opf, 'Optimize ',
                                     ('overlap', 'correlation'))
        opt.frame.grid(row=orow, column=0, sticky='w')
        orow += 1
        self.optimize = opt.variable
        self.opt_widget = opt

        cam = Hybrid.Checkbutton(
            opf, 'Correlation calculated about mean data value', False)
        cam.button.grid(row=orow, column=0, sticky='w')
        orow += 1
        cam.button['state'] = 'disabled'
        self.cam_widget = cam
        self.corr_about_mean = cam.variable

        al = Hybrid.Checkbutton_Row(opf, 'Allow ', ('rotation', 'shift'))
        al.frame.grid(row=orow, column=0, sticky='w')
        orow += 1
        ar, ash = [c.variable for c in al.checkbuttons]
        ar.set(True)
        ash.set(True)
        self.allow_rotation = ar
        self.allow_shift = ash

        mm = Hybrid.Checkbutton(opf, 'Move whole molecules', True)
        mm.button.grid(row=orow, column=0, sticky='w')
        orow += 1
        self.move_whole_molecules = mm.variable
        self.mwm_button = mm.button

        #
        # Specify a label width so dialog is not resized for long messages.
        #
        msg = Tkinter.Label(parent, width=40, anchor='w', justify='left')
        msg.grid(row=row, column=0, sticky='ew')
        row = row + 1
        self.message_label = msg

        self.halt_button = self.buttonWidgets['Halt']
        self.allow_halt(False)

        self.update_gray_out()
        self.activate_undo_redo()
コード例 #6
0
	def fillInUI(self, parent):
		SaveModeless.fillInUI(self, parent)
		row = 0

		from chimera.widgets import MoleculeScrolledListBox, \
							ModelOptionMenu
		self.modelList = MoleculeScrolledListBox(self.clientArea,
			labelpos='w', label_text="Save models:",
			listbox_selectmode='extended',
			selectioncommand=lambda: self.configure(
			self.modelList.getvalue(), refreshList=False))
		self.modelList.grid(row=row, column=0, sticky='nsew')
		self.clientArea.rowconfigure(row, weight=1)
		self.clientArea.columnconfigure(0, weight=1)
		row += 1

		import Tkinter, Pmw
		self.dispOnlyVar = Tkinter.IntVar(parent)
		self.dispOnlyVar.set(False)
		Tkinter.Checkbutton(self.clientArea, variable=self.dispOnlyVar,
			text="Save displayed atoms only").grid(row=row,
			column=0, sticky='w')
		row += 1

		self.selOnlyVar = Tkinter.IntVar(parent)
		self.selOnlyVar.set(False)
		Tkinter.Checkbutton(self.clientArea, variable=self.selOnlyVar,
			text="Save selected atoms only").grid(row=row,
			column=0, sticky='w')
		row += 1

		self.saveRelativeVar = Tkinter.IntVar(parent)
		self.saveRelativeVar.set(False)
		self.relativeFrame = f = Tkinter.Frame(self.clientArea)
		Tkinter.Checkbutton(f, variable=self.saveRelativeVar,
			text="Save relative to model:"
			).grid(row=0, column=0, sticky='e')
		self.relModelMenu = ModelOptionMenu(f)
		self.relModelMenu.grid(row=0, column=1, sticky='w')
		self.saveUntransformedVar = Tkinter.IntVar(parent)
		self.saveUntransformedVar.set(True)
		self.untransformedButton = Tkinter.Checkbutton(self.clientArea,
					variable=self.saveUntransformedVar,
					text="Use untransformed coordinates")
		self._rfRow = row
		row += 1

		self.frameSave = Pmw.OptionMenu(self.clientArea,
			labelpos='w', label_text="Save",
			initialitem="current frame",
			items=["current frame", "all frames"])
		# not always shown; remember row number
		self._fsRow = row
		row += 1
			
		from chimera import dialogs
		self.labelMap = {
			"single": "a single file",
			"multiple":
				"multiple files [appending model number]"
		}
		preferred = self.labelMap[self.prefs["multiSavePDB"]]
		self.multiSaveMenu = Pmw.OptionMenu(self.clientArea,
			labelpos='w', label_text="Save multiple models in",
			initialitem=preferred, items=self.labelMap.values())
		# not always shown; remember row number
		self._msmRow = row
		row += 1
コード例 #7
0
    def __init__(self, clipDialog, model):
        from chimera.widgets import ModelOptionMenu
        self.clipDialog = clipDialog
        self.model = model
        self.clipDependentWidgets = []
        Tkinter.Frame.__init__(self, clipDialog.uiMaster())
        interior = self  # used to be a Pmw.Group instead of a Frame!
        self.clipVar = Tkinter.IntVar(interior)
        self.clipVar.set(self.model.useClipPlane)
        Tkinter.Checkbutton(interior,
                            command=self._toggleClip,
                            text="Enable clipping",
                            variable=self.clipVar).grid(row=0, sticky='w')
        slabFrame = Tkinter.Frame(interior)
        slabFrame.grid(row=1, sticky='w')
        self.slabVar = Tkinter.IntVar(interior)
        self.slabVar.set(self.model.useClipThickness)
        cbutton = Tkinter.Checkbutton(slabFrame,
                                      command=self._changeSlab,
                                      text="Use slab mode with thickness",
                                      variable=self.slabVar)
        cbutton.grid(row=0, column=0, sticky='w')
        self.clipDependentWidgets.append(cbutton)
        self.slabThicknessVar = Tkinter.DoubleVar(slabFrame)
        self.slabThicknessVar.set(self.model.clipThickness)
        entry = Tkinter.Entry(slabFrame,
                              width=4,
                              textvariable=self.slabThicknessVar)
        entry.grid(row=0, column=1, sticky='w')
        entry.bind('<KeyPress-Return>', self._changeSlab)
        self.clipDependentWidgets.append(entry)
        butFrame = Tkinter.Frame(interior)
        butFrame.grid(row=2, sticky='w')
        button = Tkinter.Button(
            butFrame,
            pady=0,
            command=lambda: chimera.tkgui.normalizeClipFacing(self.model),
            text="Orient plane")
        button.grid(row=0, column=0, sticky='e')
        self.clipDependentWidgets.append(button)
        label = Tkinter.Label(butFrame, text="perpendicular to line of sight")
        label.grid(row=0, column=1, sticky='w')
        self.clipDependentWidgets.append(label)
        label = Tkinter.Label(butFrame,
                              text="with center of rotation at center of view")
        label.grid(row=1, column=0, columnspan=2)
        self.clipDependentWidgets.append(label)

        butFrame = Tkinter.Frame(interior)
        butFrame.grid(row=3, sticky='w')
        button = Tkinter.Button(butFrame,
                                pady=0,
                                command=clipDialog._flipPlane,
                                text="Flip plane")
        button.grid(row=0, column=0, sticky='e')
        self.clipDependentWidgets.append(button)
        label = Tkinter.Label(butFrame, text="180 degrees")
        label.grid(row=0, column=1, sticky='w')
        self.clipDependentWidgets.append(label)

        butFrame = Tkinter.Frame(interior)
        butFrame.grid(row=4, sticky='w')
        button = Tkinter.Button(
            butFrame,
            pady=0,
            command=lambda: self.clipDialog._align(self.menu.getvalue()),
            text="Align plane")
        button.grid(row=0, column=0, sticky='e')
        self.clipDependentWidgets.append(button)
        self.menu = ModelOptionMenu(butFrame, labelpos='w', label_text="with")

        def kludge(self=self.menu, **kw):
            newKw = {}
            for k, v in kw.items():
                newKw["menubutton_" + k] = v
                newKw["label_" + k] = v
            self.configure(**newKw)

        self.menu.config = kludge
        self.menu.grid(row=0, column=1, sticky='w')
        self.clipDependentWidgets.append(self.menu)
        label = Tkinter.Label(butFrame, text="clip plane")
        label.grid(row=0, column=2, sticky='w')
        self.clipDependentWidgets.append(label)

        self.mouseVar = Tkinter.IntVar(interior)
        self.mouseVar.set(getClipModel() == model)
        self.mouseActiveButton = Tkinter.Checkbutton(
            interior,
            command=self._toggleMouse,
            variable=self.mouseVar,
            text="Adjust clipping with mouse as below")
        self.mouseActiveButton.grid(row=5, sticky='w')
        self.clipDependentWidgets.append(self.mouseActiveButton)

        if not self.clipVar.get():
            for w in self.clipDependentWidgets:
                w.config(state='disabled')
コード例 #8
0
    def fillInUI(self, parent):
        import Pmw
        from chimera.widgets import ModelOptionMenu
        self.menu = ModelOptionMenu(parent,
                                    command=self._menuCB,
                                    labelpos='w',
                                    label_text="Model:")
        self.menu.grid(row=0, sticky='w')

        self.infoArea = None
        self.normMouse = None
        self.clipMouse = [None, None]
        if self.menu.getvalue() is not None:
            self.menu.invoke()  # cause callback

        group = Pmw.Group(parent, tag_text="Clip Motion Assignments")
        group.grid(row=2, sticky="nsew")

        self.buttonLabels = []
        self.labelValues = {}
        for mod in ("", ) + mousemodes.usedMods:
            for but in mousemodes.usedButtons:
                if mod:
                    self.buttonLabels.append(mod.lower() + " button " + but)
                    self.labelValues[self.buttonLabels[-1]]\
                     = (but, (mod,))
                else:
                    self.buttonLabels.append("button " + but)
                    self.labelValues[self.buttonLabels[-1]]\
                     = (but, ())
        self.transMenu = Pmw.OptionMenu(
            group.interior(),
            command=lambda bname: self._assignmentChange(0, bname),
            initialitem="button 2",
            items=self.buttonLabels,
            labelpos='n',
            label_text="Translation")
        self.transMenu.grid(row=0, column=0)
        self.pivotMenu = Pmw.OptionMenu(
            group.interior(),
            command=lambda bname: self._assignmentChange(1, bname),
            initialitem="button 3",
            items=self.buttonLabels,
            labelpos='n',
            label_text="Rotation")
        self.pivotMenu.grid(row=0, column=1)

        mousemodes.addFunction("plane rotate",
                               (lambda v, e: self._planeStart(v, e, "rotate"),
                                self._planeRot, self._planeStop))
        mousemodes.addFunction(
            "plane translate",
            (lambda v, e: self._planeStart(v, e, "translate z"),
             self._planeTrans, self._planeStop))

        def showCapDialog():
            from SurfaceCap.gui import Capper_Dialog
            from chimera import dialogs
            d = dialogs.display(Capper_Dialog.name)
            d.show_caps.set(True)

        Tkinter.Button(parent,
                       text="Cap clipped surfaces...",
                       pady=0,
                       command=showCapDialog).grid(row=3)