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): SaveModeless.fillInUI(self, parent) self.clientArea.columnconfigure(0, weight=1) self.clientArea.columnconfigure(1, weight=1) self.amount = Pmw.RadioSelect(self.clientArea, orient='vertical', buttontype='radiobutton', labelpos='w', pady=0, label_text="Record") self.amount.add("selected commands") self.amount.add("all commands") self.amount.invoke(1) self.amount.grid(row=0, column=0) self.commandStyle = Pmw.RadioSelect(self.clientArea, orient='vertical', command=self._adjustFileName, buttontype='radiobutton', labelpos='w', pady=0, label_text="Record as") self.commandStyle.add("Chimera commands") self.commandStyle.add("Python commands") self.commandStyle.invoke(0) self.commandStyle.grid(row=1, column=0) self.appending = Tkinter.IntVar(parent) self.appending.set(0) Tkinter.Checkbutton(self.clientArea, variable=self.appending, text="Append to file").grid(row=0, column=1, rowspan=2)
def fillInUI(self, parent): import Tkinter as Tk import Pmw from HtmlText import HtmlText SaveModeless.fillInUI(self, parent) parent = self.clientArea self.notes = Pmw.ScrolledText(parent, text_pyclass=HtmlText, text_relief=Tk.FLAT, text_wrap=Tk.WORD, text_height=4, text_width=10, text_highlightthickness=0) self.notes.pack(side=Tk.TOP, anchor=Tk.NW, fill=Tk.BOTH, expand=True, pady=5, padx=10) self.notes.configure(text_state=Tk.DISABLED, hscrollmode='dynamic', vscrollmode='dynamic', text_background=parent.cget('background')) import exports self.notes.settext(exports.getNotes(self.getFilter()))
def fillInUI(self, parent): import Pmw, Tkinter SaveModeless.fillInUI(self, parent) row = 0 from chimera.widgets import MoleculeOptionMenu self.modelMenu = MoleculeOptionMenu( self.clientArea, labelpos='w', label_text="Save model:", command=lambda m: self.configure(self.modelMenu.getvalue(), refreshList=False)) self.modelMenu.grid(row=row, column=0, sticky='w') row += 1 from AddCharge import knownChargeModels, defaultChargeModel from chimera import dialogs self.parmsetOption = Pmw.OptionMenu( self.clientArea, labelpos='w', label_text="Select force field type: ", initialitem=defaultChargeModel, items=knownChargeModels) # not always shown; remember row number self._msmRow = row self.parmsetOption.grid(row=row, column=0, sticky='w') row += 1
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): SaveModeless.fillInUI(self, parent) from CGLtk import Hybrid br = Hybrid.Entry(self.clientArea, 'Bit rate (Kb/sec):', 6, self.default_bit_rate) br.frame.grid(row=0, column=0, sticky='w') self.bit_rate = br.variable
def fillInUI(self, parent): SaveModeless.fillInUI(self, parent) from CGLtk import Hybrid br = Hybrid.Entry(self.clientArea, 'Bit rate (Kb/sec):', 6, self.default_bit_rate) br.frame.grid(row = 0, column = 0, sticky = 'w') self.bit_rate = br.variable
def fillInUI(self, parent): SaveModeless.fillInUI(self, parent) self.saveTypes = Pmw.RadioSelect(self.clientArea, pady=0, buttontype='checkbutton', labelpos='w', orient='vertical', label_text="Save:") self.saveTypes.grid(row=0, column=0) for name in self.structMeasure.notebook.pagenames(): mode = 'normal' if name not in [DISTANCES, ANGLES, BONDROTS, GEOMETRIES]: mode = 'disabled' self.saveTypes.add(name, state=mode) if mode == 'normal': self.saveTypes.invoke(name)
def fillInUI(self, parent): SaveModeless.fillInUI(self, parent) from chimera.tkoptions import SymbolicEnumOption, BooleanOption class ColorModeOption(SymbolicEnumOption): values = ["color", "gray", "mono"] labels = ["color", "grayscale", "black & white"] self.colorMode = ColorModeOption(self.clientArea, 0, "color mode", "color", None, balloon="output color range") self.orientation = BooleanOption( self.clientArea, 1, "rotate 90", False, None, balloon="If true, output will be rotated 90 degrees\n" "(i.e. landscape mode)") class ExtentOption(SymbolicEnumOption): values = ["visible", "all"] labels = ["visible region", "entire alignment"] self.extent = ExtentOption( self.clientArea, 2, "extent", "visible", None, balloon="save the entire alignment or just the visible part") self.hideNodes = BooleanOption( self.clientArea, 3, "hide tree control nodes", True, None, balloon="Hide square boxes used as controls for tree") if not self.mav.seqCanvas.treeShown: self.hideNodes.forget() self._nodesHandler = self.mav.triggers.addHandler( DISPLAY_TREE, self._treeDispCB, None)
def fillInUI(self, parent): SaveModeless.fillInUI(self, parent) self.selUnsel = Pmw.OptionMenu(self.clientArea, items=[ "selected", "unselected"], labelpos='w', label_text= "Write") self.selUnsel.grid(row=0, column=0, sticky='e') self.classMenu = Pmw.OptionMenu(self.clientArea, items= map(lambda c: c.__name__.lower() + "s", classes)) self.classMenu.grid(row=0, column=1, sticky='w') from tkoptions import NamingStyleOption if self.prefs[self.PREF_NAMING] in NamingStyleOption.values: default = self.prefs[self.PREF_NAMING] else: default = None self.naming = NamingStyleOption(self.clientArea, 1, None, default, None)
def fillInUI(self, *args): if isinstance(self, SaveModeless): SaveModeless.fillInUI(self, *args) else: SaveModal.fillInUI(self, *args) import Tkinter self.saveRegion = Tkinter.IntVar(self.clientArea) self.saveRegion.set(False) Tkinter.Checkbutton(self.clientArea, variable=self.saveRegion, text="Restrict save to active region").grid(row=0, sticky='w') self.omitGaps = Tkinter.IntVar(self.clientArea) self.omitGaps.set(True) Tkinter.Checkbutton(self.clientArea, variable=self.omitGaps, text="Omit all-gap columns").grid(row=1, sticky='w') self.appendNumberings = Tkinter.IntVar(self.clientArea) Tkinter.Checkbutton(self.clientArea, variable=self.appendNumberings, text="Append sequence" " numberings to sequence names").grid(row=2, sticky='w')
def fillInUI(self, parent): SaveModeless.fillInUI(self, parent) from chimera.tkoptions import SymbolicEnumOption self.headerChoice = SymbolicEnumOption(self.clientArea, 0, "Save", None, None) self.omitNoValueVar = Tkinter.IntVar(self.clientArea) self.omitNoValueVar.set(True) frame = Tkinter.Frame(self.clientArea) frame.grid(row=1, column=0, columnspan=2) ckb = Tkinter.Checkbutton(frame, variable=self.omitNoValueVar, text="Omit no-value positions") ckb.grid() chimera.help.register(ckb, balloon= "If on, conservations positions without\n" "values will not have lines in the output file") self._populateMenu() from MAViewer import SHOW_HEADERS, HIDE_HEADERS for trig in [SHOW_HEADERS, HIDE_HEADERS]: self.mav.triggers.addHandler(trig, self._populateMenu, None)
def fillInUI(self, parent): import Pmw, Tkinter SaveModeless.fillInUI(self, parent) row = 0 from chimera.widgets import MoleculeOptionMenu self.modelMenu = MoleculeOptionMenu(self.clientArea, labelpos='w', label_text="Save model:", command=lambda m: self.configure( self.modelMenu.getvalue(), refreshList=False)) self.modelMenu.grid(row=row, column=0, sticky='w') row += 1 from AddCharge import knownChargeModels, defaultChargeModel from chimera import dialogs self.parmsetOption = Pmw.OptionMenu(self.clientArea, labelpos='w', label_text="Select force field type: ", initialitem=defaultChargeModel, items=knownChargeModels) # not always shown; remember row number self._msmRow = row self.parmsetOption.grid(row=row, column=0, sticky='w') row += 1
def fillInUI(self, *args): if isinstance(self, SaveModeless): SaveModeless.fillInUI(self, *args) else: SaveModal.fillInUI(self, *args) import Tkinter self.saveRegion = Tkinter.IntVar(self.clientArea) self.saveRegion.set(False) Tkinter.Checkbutton(self.clientArea, variable=self.saveRegion, text="Restrict save to active region").grid( row=0, sticky='w') self.omitGaps = Tkinter.IntVar(self.clientArea) self.omitGaps.set(True) Tkinter.Checkbutton(self.clientArea, variable=self.omitGaps, text="Omit all-gap columns").grid(row=1, sticky='w') self.appendNumberings = Tkinter.IntVar(self.clientArea) Tkinter.Checkbutton(self.clientArea, variable=self.appendNumberings, text="Append sequence" " numberings to sequence names").grid(row=2, sticky='w')
def fillInUI(self, parent): SaveModeless.fillInUI(self, parent) from chimera.tkoptions import NamingStyleOption self.namingStyle = NamingStyleOption(self.clientArea, 0, None, None, None)
def fillInUI(self, parent): SaveModeless.fillInUI(self, parent) self.clientArea.columnconfigure(1, weight=1) startFrame = self.movie.startFrame endFrame = self.movie.endFrame from chimera.tkoptions import IntOption, BooleanOption, \ FloatOption, StringOption self.startFrame = IntOption(self.clientArea, 0, "Starting frame", startFrame, None, min=startFrame, max=endFrame, width=6) numFrames = endFrame - startFrame + 1 defStride = 1 + int(numFrames/300) self.stride = IntOption(self.clientArea, 2, "Step size", defStride, None, min=1, max=numFrames, width=3) self.endFrame = IntOption(self.clientArea, 3, "Ending frame", endFrame, None, min=startFrame, max=endFrame, width=6) self.roundtrip = BooleanOption(self.clientArea, 4, "Encode" ' forward then backward ("roundtrip")', prefs[ RECORDER_ROUNDTRIP], None, balloon= "Encode the frames in forward and then reverse\n" "order so that if the movie is played as a loop\n" "the motion seems continuous") class FrameQuality(BooleanOption): labels = ["screen", "supersampled"] self.supersample = FrameQuality(self.clientArea, 5, "Frame quality", prefs[RECORDER_SUPERSAMPLE], self.supersampleCB, balloon= "Whether each frame should be taken as is from\n" "the screen (fast) or redrawn at higher quality\n" "with several samples per pixel.") from chimera.printer import SupersampleOption self.samples = SupersampleOption(self.clientArea, 6, "Samples", prefs[RECORDER_SAMPLES], None) self.supersampleCB() self.raytrace = BooleanOption(self.clientArea, 7, "Raytrace" " with POV-Ray", prefs[RECORDER_RAYTRACE], None) def povOptCB(): from chimera.dialogs import display d = display("preferences") from chimera.printer import POVRAY_SETUP d.setCategoryMenu(POVRAY_SETUP) Tkinter.Button(self.clientArea, text="POV-Ray Options", pady=0, command=povOptCB).grid(row=8, column=0, columnspan=2) self.recordArgs = StringOption(self.clientArea, 9, "Additional recording options", prefs[RECORDER_RECORD_ARGS], None, balloon= "Options (other than 'supersample' and 'raytrace')\n" "for recording frames as per Chimera's 'movie record'" " command") self.encodeArgs = StringOption(self.clientArea, 10, "Additional encoding options", prefs[RECORDER_ENCODE_ARGS], None, balloon= "Options (other than 'mformat', 'output', and\n" "'roundtrip') for composing the frames into the\n" "final animation as per Chimera's 'movie encode'\n" "command") Tkinter.Label(self.clientArea, text= "On some computers it may be necessary to make sure" " that no\nwindows occlude the main Chimera graphics" " window (even\npartially) during non-raytraced movie" " recording").grid(row=11, column=0, columnspan=2)
def fillInUI(self, parent): SaveModeless.fillInUI(self, parent) self.clientArea.columnconfigure(1, weight=1) startFrame = self.movie.startFrame endFrame = self.movie.endFrame from chimera.tkoptions import IntOption, BooleanOption, \ FloatOption, StringOption self.startFrame = IntOption(self.clientArea, 0, "Starting frame", startFrame, None, min=startFrame, max=endFrame, width=6) numFrames = endFrame - startFrame + 1 defStride = 1 + int(numFrames / 300) self.stride = IntOption(self.clientArea, 2, "Step size", defStride, None, min=1, max=numFrames, width=3) self.endFrame = IntOption(self.clientArea, 3, "Ending frame", endFrame, None, min=startFrame, max=endFrame, width=6) self.roundtrip = BooleanOption( self.clientArea, 4, "Encode" ' forward then backward ("roundtrip")', prefs[RECORDER_ROUNDTRIP], None, balloon="Encode the frames in forward and then reverse\n" "order so that if the movie is played as a loop\n" "the motion seems continuous") class FrameQuality(BooleanOption): labels = ["screen", "supersampled"] self.supersample = FrameQuality( self.clientArea, 5, "Frame quality", prefs[RECORDER_SUPERSAMPLE], self.supersampleCB, balloon="Whether each frame should be taken as is from\n" "the screen (fast) or redrawn at higher quality\n" "with several samples per pixel.") from chimera.printer import SupersampleOption self.samples = SupersampleOption(self.clientArea, 6, "Samples", prefs[RECORDER_SAMPLES], None) self.supersampleCB() self.raytrace = BooleanOption(self.clientArea, 7, "Raytrace" " with POV-Ray", prefs[RECORDER_RAYTRACE], None) def povOptCB(): from chimera.dialogs import display d = display("preferences") from chimera.printer import POVRAY_SETUP d.setCategoryMenu(POVRAY_SETUP) Tkinter.Button(self.clientArea, text="POV-Ray Options", pady=0, command=povOptCB).grid(row=8, column=0, columnspan=2) self.recordArgs = StringOption( self.clientArea, 9, "Additional recording options", prefs[RECORDER_RECORD_ARGS], None, balloon="Options (other than 'supersample' and 'raytrace')\n" "for recording frames as per Chimera's 'movie record'" " command") self.encodeArgs = StringOption( self.clientArea, 10, "Additional encoding options", prefs[RECORDER_ENCODE_ARGS], None, balloon="Options (other than 'mformat', 'output', and\n" "'roundtrip') for composing the frames into the\n" "final animation as per Chimera's 'movie encode'\n" "command") Tkinter.Label(self.clientArea, text="On some computers it may be necessary to make sure" " that no\nwindows occlude the main Chimera graphics" " window (even\npartially) during non-raytraced movie" " recording").grid(row=11, column=0, columnspan=2)
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): 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