예제 #1
0
  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)
예제 #2
0
    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)
예제 #3
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)
예제 #4
0
    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()
예제 #5
0
    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)
예제 #6
0
    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)
예제 #7
0
    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)
예제 #8
0
  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()
예제 #9
0
    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)
예제 #10
0
    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)
예제 #11
0
    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)
예제 #12
0
    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)