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
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
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')
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
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()
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
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')
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)