def body(self, master): # # Popup window # row = 0 if self.topText: label = Label(master, text= self.topText) label.grid(row=row, column=0, columnspan = 2, sticky=Tkinter.EW) row = row + 1 label = Label(master, text= self.text) label.grid(row=row, column=0, sticky=Tkinter.EW) self.menu = PulldownMenu(master, entries = self.selectionList, selected_index = self.selectedIndex) self.menu.grid(row=row, column=1, sticky=Tkinter.E, ipadx = 20) row = row + 1 texts = [ 'OK' ] commands = [ self.ok ] # This calls 'ok' in BasePopup, this then calls 'apply' in here if self.dismissButton: buttons = createDismissHelpButtonList(master, texts=texts, commands=commands, dismiss_text = self.dismissText, help_url=self.help_url) else: buttons = createHelpButtonList(master, texts=texts, commands=commands, help_url=self.help_url) buttons.grid(row=row, column=0, columnspan = 3)
def body(self, master): master.grid_columnconfigure(0, weight=1) for i in range(3): master.grid_rowconfigure(i, weight=1) self.geometry('600x400') # Master is the owner widget (not self.parent) - parent of the widget here row = 0 label = Label(master, text="Residue %s-%d" % (self.nmrRes.molResidue.ccpCode, self.nmrRes.seqCode)) label.grid(row=row, column=0, sticky=Tkinter.W) row = row + 1 label = Label(master, text=self.message) label.grid(row=row, column=0, sticky=Tkinter.W) row = row + 1 self.menu = PulldownMenu(master, entries=self.optionList) self.menu.grid(row=row, column=0, sticky=Tkinter.EW) row = row + 1 texts = ['OK'] commands = [ self.ok ] # This calls 'ok' in BasePopup, this then calls 'apply' in here buttons = createHelpButtonList(master, texts=texts, commands=commands, help_url=self.help_url) buttons.grid(row=row, column=0)
def body(self, master): # # Popup window # self.widgets = [] row = 0 label = Label(master, text= "ChemComp formula '%s'" % self.formula) label.grid(row=row, column=0, columnspan = 2, sticky=Tkinter.EW) row = row + 1 label = Label(master, text= "Number of bonds: %d" % self.bondNumber) label.grid(row=row, column=0, columnspan = 2, sticky=Tkinter.EW) # # Show relevant attributes... # for chemCompAttrInfo in self.chemCompInfo: row = row + 1 attrName = chemCompAttrInfo[0] label = Label(master, text = attrName) label.grid(row=row, column=0, sticky=Tkinter.EW) if attrName in self.nonEntryAttributes: widgetInfo = self.nonEntryAttributes[attrName] if widgetInfo[0] == PulldownMenu: self.widgets.append(PulldownMenu(master, entries = widgetInfo[1], selected_index = widgetInfo[1].index(chemCompAttrInfo[1]))) elif widgetInfo[0] == CheckButton: self.widgets.append(CheckButton(master, selected = widgetInfo[1])) else: text = chemCompAttrInfo[1] if not text: text = '' self.widgets.append(Entry(master, text = text)) self.widgets[-1].grid(row=row, column=1, sticky=Tkinter.EW) row = row + 1 texts = [ 'OK' ] commands = [ self.ok ] # This calls 'ok' in BasePopup, this then calls 'apply' in here buttons = createHelpButtonList(master, texts=texts, commands=commands, help_url=self.help_url) buttons.grid(row=row, column=0, columnspan = 2)
def body(self, master): self.text = ScrolledText(master) self.text.pack(side=Tkinter.TOP, expand=Tkinter.YES, fill=Tkinter.BOTH) texts = ['Save text'] commands = [self.saveText] buttons = createHelpButtonList(master, texts=texts, commands=commands, help_url=self.help_url) buttons.pack()
def body(self, master): # # Popup window # row = 0 label = Label(master, text=self.topText) label.grid(row=row, column=0, columnspan=2, sticky=Tkinter.EW) row = row + 1 self.valueWidgets = [] for i in range(0, len(self.valueList)): value = self.valueList[i] labelText = self.valueInfo[i] label = Label(master, text=labelText) label.grid(row=row, column=0, sticky=Tkinter.EW) self.valueWidgets.append(Entry(master, text=str(value))) self.valueWidgets[-1].grid(row=row, column=1, sticky=Tkinter.E, ipadx=20) row = row + 1 texts = ['OK'] commands = [ self.ok ] # This calls 'ok' in BasePopup, this then calls 'apply' in here if self.dismissButton: buttons = createDismissHelpButtonList( master, texts=texts, commands=commands, dismiss_text=self.dismissText, help_url=self.help_url) else: buttons = createHelpButtonList(master, texts=texts, commands=commands, help_url=self.help_url) buttons.grid(row=row, column=0, columnspan=3)
def body(self, master): master.grid_columnconfigure(0, weight=1) master.grid_columnconfigure(1, weight=1) self.geometry('600x400') # # Popup window # row = 0 label = Label(master, text="Residue type '%s'" % self.ccpCode) label.grid(row=row, column=0, sticky=Tkinter.EW) row = row + 1 label = Label( master, text= "Please select resonances that belong together (remaining ones are also grouped)" ) label.grid(row=row, column=0, sticky=Tkinter.EW) for resName in self.resonanceNameList: row = row + 1 label = Label(master, text="Resonance '%s'" % resName) label.grid(row=row, column=0, sticky=Tkinter.EW) self.checkButtons.append(CheckButton(master)) self.checkButtons[-1].grid(row=row, column=1, sticky=Tkinter.EW) row = row + 1 texts = ['OK'] commands = [ self.ok ] # This calls 'ok' in BasePopup, this then calls 'apply' in here buttons = createHelpButtonList(master, texts=texts, commands=commands, help_url=self.help_url) buttons.grid(row=row, column=0) for i in range(row): master.grid_rowconfigure(i, weight=1)
def body(self, master): # # Initialize # # # Get relevant dataDimRefs AND chemical shift ranges for each # self.dataDimRefDict = {} dataDimRefList = [] dataDimRefSelection = self.numDim * [''] for peak in self.peakList.sortedPeaks(): for peakDim in peak.sortedPeakDims(): dataDim = peakDim.dataDim if dataDim.className == 'SampledDataDim': continue dataDimRef = peakDim.dataDimRef if dataDim.dim == 1: addInfo = " (acqu)" else: addInfo = "" isotopeString = '/'.join(dataDimRef.expDimRef.isotopeCodes) selectionString = "Dim %d, nucl %s%s" % ( dataDim.dim, isotopeString, addInfo) if dataDimRefList.count(selectionString) == 0: dataDimRefList.append(selectionString) self.dataDimRefDict[selectionString] = dataDimRef if dataDimRef in self.dataDimRefs: dataDimRefSelection[self.dataDimRefs.index( dataDimRef)] = selectionString else: dataDimRefSelection[(peakDim.dim - 1)] = selectionString # # Popup info # # # Header labels # row = 0 label = Label(master, text="%s peak dim" % self.format) label.grid(row=row, column=0, sticky=Tkinter.EW) label = Label(master, text="PeakDim selection") label.grid(row=row, column=1, sticky=Tkinter.EW) # # Selection per peakDim # self.dataDimRefMenu = [] for peakDim in range(0, self.numDim): row = row + 1 label = Label(master, text=str(peakDim)) label.grid(row=row, column=0, sticky=Tkinter.EW) peakDimIndex = self.order[peakDim] self.dataDimRefMenu.append( PulldownMenu(master, entries=dataDimRefList, selected_index=dataDimRefList.index( dataDimRefSelection[peakDimIndex]))) self.dataDimRefMenu[-1].grid(row=row, column=1, sticky=Tkinter.W, ipadx=20) row = row + 1 texts = ['OK'] commands = [ self.ok ] # This calls 'ok' in BasePopup, this then calls 'apply' in here buttons = createHelpButtonList(master, texts=texts, commands=commands, help_url=self.help_url) buttons.grid(row=row, column=0, columnspan=2)
def body(self, master): # # Popup window # self.columnspan = len(self.chemCompAtoms[0]) row = 0 label = Label(master, text= "Molecule type '%s', ccp code '%s'" % (self.chemCompInfo[0][1],self.chemCompInfo[1][1])) label.grid(row=row, column=0, columnspan = self.columnspan, sticky=Tkinter.EW) # # Warning message if necessary! # if self.obligatoryAtoms: row += 1 label = Label(master, text= "Warning: have to define atoms: %s!" % string.join(self.obligatoryAtoms,', '), fg = 'red') label.grid(row=row, column=0, columnspan = self.columnspan, sticky=Tkinter.EW) # # Show top information... # row = row + 1 colNum = 0 self.frameWidth = 0 for chemCompAtomInfo in self.chemCompAtoms[0]: attrName = chemCompAtomInfo[0] label = Label(master, text = attrName, width = len(attrName) + 2) label.grid(row=row, column=colNum, sticky=Tkinter.EW) self.frameWidth += len(attrName) + 2 colNum += 1 # # Separator # row += 1 separator = Separator(master, height = 3) separator.setColor('black', bgColor = 'black') separator.grid(row = row, columnspan = self.columnspan, sticky = Tkinter.EW) # # Separate frame for info (have to be able to scroll) # row += 1 # THIS BIT TELLS MASTER TO CONFIGURE WINDOW ON INSIDE WIDGET!! master.grid_rowconfigure(row,weight = 1) for i in range(self.columnspan): master.grid_columnconfigure(i,weight = 1) self.atomFrame = ScrolledFrame(master, width = self.frameWidth, height = 300, doExtraConfig = False) self.atomFrame.grid(row=row, column=0, columnspan = self.columnspan, sticky=Tkinter.NSEW) self.atomFrameRow = row self.atomFrameMaster = master # # Separator # row += 1 separator = Separator(master, height = 3) separator.setColor('black', bgColor = 'black') separator.grid(row = row, columnspan = self.columnspan, sticky = Tkinter.EW) # # End bit... # row = row + 1 texts = [ 'OK', 'Update' ] commands = [ self.ok, self.update ] # This calls 'ok' in BasePopup, this then calls 'apply' in here buttons = createHelpButtonList(master, texts=texts, commands=commands, help_url=self.help_url) buttons.grid(row=row, column=0, columnspan = self.columnspan) self.setupAtomFrame()
def body(self, master): # # Initialize # # # Get chem shift range # peakChemShiftRange = [] if not self.peaks: return elif hasattr(self.peaks[0], 'ppm'): peakUnit = 'ppm' elif hasattr(self.peaks[0], 'point'): peakUnit = 'point' else: return for peak in self.peaks: peakInfo = getattr(peak, peakUnit) for dim in range(0, len(peakInfo)): if len(peakChemShiftRange) < dim + 1: peakChemShiftRange.append([999999, -999999]) if peakChemShiftRange[dim][0] > peakInfo[dim]: peakChemShiftRange[dim][0] = peakInfo[dim] if peakChemShiftRange[dim][1] < peakInfo[dim]: peakChemShiftRange[dim][1] = peakInfo[dim] # # Make datadimref lists # dataDimRefList = [] self.dataDimRefDict = {} dataDimRefSelection = [] for i in self.order: dataDim = self.dataSource.sortedDataDims()[i] if dataDim.dim == 1: addInfo = " (acqu)" else: addInfo = "" for dataDimRef in dataDim.dataDimRefs: # Note: key for dataDimRef is expDimRef! isotopeString = string.join(dataDimRef.expDimRef.isotopeCodes, dirsep) selectionString = "Dim %d, nucl %s, refValue %s%s" % ( dataDim.dim, isotopeString, dataDimRef.refValue, addInfo) # In principle this could go wrong if one expDim has two expDimRefs with same isotopelist # (but what would be the use? Is this a good constraint?) dataDimRefList.append(selectionString) self.dataDimRefDict[selectionString] = dataDimRef dataDimRefSelection.append(dataDimRefList[-1]) # # Add on a None dimension if necessary # if self.numDim < len(peakChemShiftRange): dataDimRefSelection.append('None') dataDimRefList.append('None') self.dataDimRefDict['None'] = None # # Popup info # # # Header labels # row = 0 label = Label(master, text="Peak dim") label.grid(row=row, column=0, sticky=Tkinter.EW) label = Label(master, text="Chem. shift range") label.grid(row=row, column=1, sticky=Tkinter.EW) # TODO: add in peak dim column headers if known (for nmrView for example) label = Label(master, text="DataDimRef selection") label.grid(row=row, column=2, sticky=Tkinter.EW) # # Selection per peakDim # self.dataDimRefMenu = [] for peakDim in range(0, len(peakChemShiftRange)): row = row + 1 label = Label(master, text=str(peakDim)) label.grid(row=row, column=0, sticky=Tkinter.EW) label = Label(master, text="%.3f - %.3f %s" % (peakChemShiftRange[peakDim][0], peakChemShiftRange[peakDim][1], peakUnit)) label.grid(row=row, column=1, sticky=Tkinter.EW) if peakDim < len(dataDimRefList): selectedIndex = dataDimRefList.index( dataDimRefSelection[peakDim]) else: selectedIndex = len(dataDimRefList) - 1 self.dataDimRefMenu.append( PulldownMenu(master, entries=dataDimRefList, selected_index=selectedIndex)) self.dataDimRefMenu[-1].grid(row=row, column=2, sticky=Tkinter.E, ipadx=20) row = row + 1 texts = ['OK'] commands = [ self.ok ] # This calls 'ok' in BasePopup, this then calls 'apply' in here buttons = createHelpButtonList(master, texts=texts, commands=commands, help_url=self.help_url) buttons.grid(row=row, column=0, columnspan=3)
def body(self, master): # # Setup header # row = 0 label = Label(master, text="Data model", fg='blue') label.grid(row=row, column=0, columnspan=3, sticky=Tkinter.EW) label = Label(master, text="Export") label.grid(row=row, column=3, columnspan=2, sticky=Tkinter.EW) row += 1 label = Label(master, text="Sequence ID (code)", fg='blue') label.grid(row=row, column=1, columnspan=2, sticky=Tkinter.EW) row += 1 label = Label(master, text="Ccp chain code", fg='blue') label.grid(row=row, column=0, sticky=Tkinter.W) label = Label(master, text="start", fg='blue') label.grid(row=row, column=1, sticky=Tkinter.EW) label = Label(master, text="end", fg='blue') label.grid(row=row, column=2, sticky=Tkinter.EW) column = 3 columnspan = 2 if self.requireChainCode: label = Label(master, text=self.requireChainCode) label.grid(row=row, column=column, sticky=Tkinter.W) column += 1 columnspan -= 1 label = Label(master, text="Sequence code start") label.grid(row=row, column=column, columnspan=columnspan, sticky=Tkinter.W) # # Setup list of ccp chains labels # ccpChainLabels = self.ccpChainLabelDict.keys() ccpChainLabels.sort() # # Currently only linking start in ccp chain (ONLY ONE!) to start in chain read in from file # Assuming sequential order thereafter. # for ccpChainLabel in ccpChainLabels: row = row + 1 chain = self.ccpChainLabelDict[ccpChainLabel] ccpCodeLow = "%d (%d)" % ( self.ccpChainSeqIDCodes[ccpChainLabel][0][0], self.ccpChainSeqIDCodes[ccpChainLabel][1][0]) ccpCodeHigh = "%d (%d)" % ( self.ccpChainSeqIDCodes[ccpChainLabel][0][-1], self.ccpChainSeqIDCodes[ccpChainLabel][1][-1]) label = Label(master, text=ccpChainLabel, fg='blue') label.grid(row=row, column=0, sticky=Tkinter.W) label = Label(master, text=ccpCodeLow, fg='blue') label.grid(row=row, column=1, sticky=Tkinter.W) label = Label(master, text=ccpCodeHigh, fg='blue') label.grid(row=row, column=2, sticky=Tkinter.W) column = 3 columnspan = 2 suggestedFirstSeqCode = str( self.ccpChainSeqIDCodes[ccpChainLabel][1][0]) if self.requireChainCode: if self.requireChainCode == 'molecule name': chainCodeText = chain.molecule.name width = 20 else: chainCodeText = chain.code width = 4 self.exportChainCode[chain] = Entry(master, text=chainCodeText, width=width) self.exportChainCode[chain].grid(row=row, column=column, sticky=Tkinter.W) column += 1 columnspan -= 1 suggestedFirstSeqCode = '1' self.exportFirstSeqCode[chain] = Entry(master, text=suggestedFirstSeqCode, width=4) self.exportFirstSeqCode[chain].grid(row=row, column=column, columnspan=columnspan, sticky=Tkinter.W) row = row + 1 texts = ['OK'] commands = [ self.ok ] # This calls 'ok' in BasePopup, this then calls 'apply' in here buttons = createHelpButtonList(master, texts=texts, commands=commands, help_url=self.help_url) buttons.grid(row=row, column=0, columnspan=4)
def body(self, master): # # Initialize # # # Make expDimRef lists # expDimRefList = [] self.expDimRefDict = {} expDimRefSelection = {} for expDim in self.experiment.sortedExpDims(): if expDim.dim == 1: addInfo = " (acqu)" else: addInfo = "" for expDimRef in expDim.expDimRefs: isotopeString = string.join(expDimRef.isotopeCodes, dirsep) selectionString = "Dim %d, nucl %s %s" % ( expDim.dim, isotopeString, addInfo) expDimRefList.append(selectionString) self.expDimRefDict[selectionString] = expDimRef expDimRefSelection[expDimRef] = len(expDimRefList) - 1 # # Popup info # # # Header labels # columnspan = 4 row = 0 if self.fPars.has_key('inputFile'): text = "Processing file %s" % (self.fPars['inputFile']) else: text = "Processing experiment %s" % (self.experiment.name) label = Label(master, text=text) label.grid(row=row, column=0, columnspan=columnspan, sticky=Tkinter.EW) row += 1 label = Label(master, text="NumPoints") label.grid(row=row, column=0, sticky=Tkinter.EW) label = Label(master, text="SW") label.grid(row=row, column=1, sticky=Tkinter.EW) label = Label(master, text="Isotope") label.grid(row=row, column=2, sticky=Tkinter.EW) label = Label(master, text="ExpDimRef selection") label.grid(row=row, column=3, sticky=Tkinter.EW) # # Selection per dimension from the procpar file # self.expDimRefMenu = [] for dim in range(0, len(self.fPars['nucleus'])): row = row + 1 label = Label(master, text=str(self.fPars['numPoints'][dim])) label.grid(row=row, column=0, sticky=Tkinter.EW) label = Label(master, text="%.1f" % self.fPars['spectralWidth'][dim]) label.grid(row=row, column=1, sticky=Tkinter.EW) label = Label(master, text=self.fPars['nucleus'][dim]) label.grid(row=row, column=2, sticky=Tkinter.EW) expDimRef = self.linkDict[dim] selectedIndex = expDimRefSelection[expDimRef] self.expDimRefMenu.append( PulldownMenu(master, entries=expDimRefList, selected_index=selectedIndex)) self.expDimRefMenu[-1].grid(row=row, column=3, sticky=Tkinter.E, ipadx=20) row = row + 1 texts = ['OK'] commands = [ self.ok ] # This calls 'ok' in BasePopup, this then calls 'apply' in here buttons = createHelpButtonList(master, texts=texts, commands=commands, help_url=self.help_url) buttons.grid(row=row, column=0, columnspan=columnspan)
def body(self, master): # # Initialize # contentList = [] for (fullName, attrName, func) in self.columnContents: contentList.append(fullName) # # Popup info # # # Header labels # row = 0 label = Label(master, text="Column number") label.grid(row=row, column=0, sticky=Tkinter.EW) label = Label(master, text="Column data range") label.grid(row=row, column=1, sticky=Tkinter.EW) label = Label(master, text="Column content selection") label.grid(row=row, column=2, sticky=Tkinter.EW) # # Selection per column # self.columnInfoWidgets = [] for colIndex in range(0, self.columnLen): row = row + 1 label = Label(master, text=str(colIndex + 1)) label.grid(row=row, column=0, sticky=Tkinter.EW) label = Label(master, text="%s - %s" % (str(self.columnData[colIndex][0]), str(self.columnData[colIndex][1]))) label.grid(row=row, column=1, sticky=Tkinter.EW) self.columnInfoWidgets.append( PulldownMenu(master, entries=contentList)) self.columnInfoWidgets[-1].grid(row=row, column=2, sticky=Tkinter.W, ipadx=20) row = row + 1 texts = ['OK'] commands = [ self.ok ] # This calls 'ok' in BasePopup, this then calls 'apply' in here buttons = createHelpButtonList(master, texts=texts, commands=commands, help_url=self.help_url) buttons.grid(row=row, column=0, columnspan=3)