def body(self, guiFrame): guiFrame.grid_rowconfigure(0, weight=1) guiFrame.grid_columnconfigure(1, weight=1) row = 0 if self.message: label = Label(guiFrame, text=self.message, gridSpan=(1, 2), grid=(row, 0)) row += 1 if self.label: label = Label(guiFrame, text=self.label, grid=(row, 0)) self.itemMenu = PulldownList(guiFrame, texts=self.entries, objects=self.entries, index=self.default, grid=(row, 1)) row += 1 texts = [self.select_text, 'Cancel'] commands = [self.ok, self.cancel] buttons = ButtonList(guiFrame, texts=texts, commands=commands, gridSpan=(1, 2), grid=(row, 0))
def __init__(self, guiParent, basePopup, borderRelief='raised', text=' ', justify='left', width=None, font=None, height=None, *args, **kw): # Base popup required to handle notification of data model changes # e.g. new peak lists, so that the GUI can update to the latest # state self.basePopup = basePopup self.guiParent = guiParent self.borderRelief = borderRelief self.text = text self.justify = justify self.width = width self.font = font self.height = height self.registerNotify = basePopup.registerNotify self.unregisterNotify = basePopup.unregisterNotify LabelFrame.__init__(self, guiParent, borderRelief, text, justify, width, font, height, *args, **kw) # set up the grid self.grid_columnconfigure(0, weight=0, minsize=20) self.grid_rowconfigure(0, weight=0, minsize=5) self.grid_rowconfigure(1, weight=0, minsize=10) self.grid_rowconfigure(2, weight=0, minsize=10) self.grid_rowconfigure(3, weight=0, minsize=10) # build up the body. self.nameLabel = Label(self, text='Exp Type:') self.nameLabel.grid(row=1, column=0, padx=2, sticky='nw') self.nameText = Text(self, width=15, height=1) self.nameText.grid(row=1, column=1, sticky='nw') self.clearButton = Button(self, text='Clear', command=self.clear_filter, width=7, height=1) self.clearButton.grid(row=2, column=0, columnspan=2, sticky='nw') self.filterButton = Button(self, text='Go', command=self.tmpCall, width=7, height=1) self.filterButton.grid(row=2, column=1, columnspan=2, sticky='ne')
def body(self, guiFrame): ProgressBar.body(self, guiFrame) guiFrame.expandGrid(2,3) self.stepLabel = Label(guiFrame, text='Best step: ', grid=(0,3)) frame = LabelFrame(guiFrame, text='Best mappings', grid=(1,0), gridSpan=(1,4)) row = 0 for i in range(self.ensembleSize): label = Label(frame, text='', pady=0, font='Courier 10', borderwidth=0, grid=(row,0), sticky='ew') self.labels.append(label) row +=1 guiFrame.grid_rowconfigure(2, weight=1) self.graph = ScrolledGraph(guiFrame, width=450, height=300, graphType='scatter', title='Typing Scores', xLabel='Spin System', yLabel='Score', grid=(2,0), gridSpan=(1,4)) self.buttonList = ButtonList(guiFrame, texts=['Close',], commands=[self.done], grid=(3,0), gridSpan=(1,4)) self.buttonList.buttons[0].disable()
def body(self, master): master.grid_columnconfigure(1, weight=1) row = 0 label = Label(master, text='Axis unit name: ', grid=(row, 0)) tipText = 'Short textual name for the unit, e.g. "KPa" or "ms"' self.nameEntry = Entry(master, width=10, grid=(row, 1), tipText=tipText) row += 1 label = Label(master, text='Unit is backwards: ', grid=(row, 0)) tipText = 'Whether the axis values decrease left to right & bottom to top. For example "ppm" does, but most units do not' self.backwardsMenu = BooleanPulldownMenu(master, grid=(row, 1), tipText=tipText) row += 1 tipTexts = [ 'Make a new unit specification using the stated options and close this popup' ] texts = ['Create'] commands = [self.ok] buttons = UtilityButtonList(master, texts=texts, commands=commands, closeText='Cancel', helpUrl=self.help_url, grid=(row, 0), gridSpan=(1, 2), tipTexts=tipTexts) master.grid_rowconfigure(row, weight=1)
def body(self, parent): self.bw = 2 # borderwidth width = self.cWidth + self.bw height = self.cHeight + self.bw self.label = Label(parent, text=self.text) self.label.grid(row=0, column=0, sticky=Tkinter.W) self.percent = Label(parent, text=' %') self.percent.grid(row=0, column=2, sticky=Tkinter.W) self.canvas = Canvas(parent, background='grey70', width=width, height=height) self.canvas.grid(row=0, column=1, sticky=Tkinter.W) self.canvas.create_rectangle(0, 0, width, height, outline='black', width=self.bw) self.bar = self.canvas.create_rectangle(self.bw, self.bw, self.bw, self.cHeight, outline='#B05848', fill='#B05848', width=self.bw) self.update()
def __init__(self, parent, label, entry='', separator=': ', label_width=20, entry_width=60, label_anchor=Tkinter.E, show='', isArray=False, returnCallback=None, *args, **kw): apply(Frame.__init__, (self, parent) + args, kw) self.grid_columnconfigure(1, weight=1) self.separator = separator text = label + separator self.label = Label(self, text=text, width=label_width, anchor=label_anchor) self.label.grid(row=0, column=0, sticky=Tkinter.EW) self.entry = FloatEntry(self, show=show, width=entry_width, isArray=isArray, returnCallback=returnCallback) self.entry.grid(row=0, column=1, sticky=Tkinter.EW) self.setEntry(entry)
def __init__(self, parent, values, initial_index = 0, orient = Tkinter.HORIZONTAL, scale_length = 200, label_width = 5, label_format = '%2.1f', set_callback = None, *args, **kw): assert len(values) > 0 self.label_format = label_format self.values = tuple(values) self.set_callback = set_callback apply(Frame.__init__, (self, parent) + args, kw) if (orient == Tkinter.HORIZONTAL): self.grid_columnconfigure(1, weight=1) sticky = Tkinter.EW row = 0 col = 1 else: self.grid_rowconfigure(1, weight=1) sticky = Tkinter.NS row = 1 col = 0 self.label = Label(self, width=label_width) self.label.grid(row=0, column=0, sticky=sticky) self.scale = Tkinter.Scale(self, orient=orient, length=scale_length, from_=0, to=len(values)-1, label='', showvalue=0, command=self.setCallback) self.scale.grid(row=row, column=col, sticky=sticky) self.set(initial_index)
def __init__(self, parent, label1, label2='', separator=': ', label1_width=20, label2_width=60, label1_anchor=Tkinter.E, label2_anchor=Tkinter.W, *args, **kw): apply(Frame.__init__, (self, parent) + args, kw) self.grid_columnconfigure(1, weight=1) self.separator = separator text = label1 + self.separator self.label1 = Label(self, text=text, width=label1_width, anchor=label1_anchor) self.label1.grid(row=0, column=0, sticky=Tkinter.EW) text = label2 self.label2 = Label(self, text=text, width=label2_width, anchor=label2_anchor) self.label2.grid(row=0, column=1, sticky=Tkinter.EW)
def body(self, master): self.geometry('600x500') master.grid_rowconfigure(1, weight=1) master.grid_columnconfigure(0, weight=1) label = Label(master, text='Select Project Directory') label.grid(row=0, column=0, sticky=Tkinter.W) file_types = [FileType('Project', ['*.xml']), FileType('All', ['*'])] self.file_select = FileSelect(master, file_types=file_types, show_file=False, double_callback=self.ok, getRowColor=self.getEntryColor, getExtraCell=self.getProjectFileText, extraHeadings=('Status', ), extraJustifies=('left', )) self.file_select.grid(row=1, column=0, sticky=Tkinter.NSEW) texts = ['Open'] commands = [self.ok] buttons = createDismissHelpButtonList(master, texts=texts, commands=commands, dismiss_text='Cancel', help_msg=self.help_msg, help_url=self.help_url) buttons.grid(row=2, column=0, sticky=Tkinter.EW) self.ok_button = buttons.buttons[0]
def createKey(self, key): attr = key[-1] s = attr.name if (len(key) > 1): if (type(key[-2]) == type(0)): role = key[-3] n = key[-2] t = '%s[%d]' % (role.otherClass.name, n) else: role = key[-2] t = role.otherClass.name else: t = self.metaclass.name title_label = Label(self.parent_frame) class_label = Label(self.parent_frame, text=t, anchor=Tkinter.W) name_label = Label(self.parent_frame, text=s, anchor=Tkinter.W, bg=name_bg) value_label = Label(self.parent_frame, anchor=Tkinter.W, bg=value_bg) self.widget_dict[key] = (title_label, class_label, name_label, value_label)
def updateDepositionImportLabel(self, shiftList=None, molecules=0, chains=0, models=0, coordinates=0, percentageLinked=None, connectedChain=None): if shiftList and shiftList not in self.importedShiftLists: self.importedShiftLists.append(shiftList) self.depositionImportNums[0] += 1 shifts = 0 for shiftList in self.importedShiftLists: shifts += len(shiftList.measurements) self.depositionImportNums[1] += shifts self.depositionImportNums[2] += molecules self.depositionImportNums[3] += chains self.depositionImportNums[4] += models self.depositionImportNums[5] += coordinates if percentageLinked != None: self.depositionImportNums[6] = percentageLinked if connectedChain and connectedChain not in self.connectedChains: self.depositionImportNums[7] += 1 self.connectedChains.append(connectedChain) self.depositionImportLabel.destroy() finalForeground = self.fontBadColor if self.depositionImportNums[0] == 0 and self.depositionImportNums[ 2] == 0: # Nothing imported foreground = self.fontBadColor elif self.depositionImportNums[6]: # Linked shifts available - TODO base this on % of shifts linked? foreground = self.fontOkColor if self.depositionImportNums[5]: finalForeground = self.fontOkColor else: finalForeground = self.fontCheckColor else: # Intermediate state foreground = self.fontCheckColor self.depositionImportLabel = Label(self.frameD, text=self.depositionImportText % tuple(self.depositionImportNums), foreground=foreground) self.depositionImportLabel.grid(row=self.depositionImportLoc[0], column=self.depositionImportLoc[1], sticky='ew') self.eciStart.configure(foreground=finalForeground)
def __init__(self, title, message, texts, objects=None, parent=None): if parent is None: parent = Tkinter.Tk() #parent.withdraw() self.root = parent parent.protocol('WM_DELETE_WINDOW', self.destroy) else: self.root = None Tkinter.Toplevel.__init__(self, parent) self.resizable(0, 0) self.parent = parent self.title(title) self.var = Tkinter.IntVar() self.objects = objects or range(len(texts)) assert len(self.objects) == len(texts) x = parent.winfo_rootx() + parent.winfo_width() / 2 y = parent.winfo_rooty() + parent.winfo_height() / 2 location = '+%d+%d' % (x, y) if hasattr(parent, 'font'): self.font = parent.font else: self.font = None Tkinter.Toplevel.geometry(self, location) Tkinter.Toplevel.lift(self, parent) self.update_idletasks() self.transient(parent) self.protocol('WM_DELETE_WINDOW', self._null) self.focus_force() self.grab_set() self.grid_rowconfigure(0, weight=1) self.grid_columnconfigure(1, weight=1) label = Label(self, text=message, grid=(0, 0)) self.config(bg=label.cget('bg')) frame = Frame(self, grid=(1, 0)) _buttons = [] for i, text in enumerate(texts): button = Button(frame, text=text, command=lambda j=i: self._click(j)) button.grid(row=i + 1, column=0, padx=2, pady=2, sticky='ew') if objects[i] is None: button.config(bg='#B0FFB0') _buttons.append(button) self._wait()
def body(self, guiFrame): self.geometry('600x250+600+250') analysisProfile = self.analysisProfile userName = analysisProfile.userName userOrganisation = analysisProfile.userOrganisation userEmail = analysisProfile.userEmail guiFrame.grid_rowconfigure(0, weight=1) guiFrame.grid_columnconfigure(1, weight=1) explainText = 'To keep track of our users and which versions are being used\n' \ 'we would like you to register your details with us.\n' \ 'Collating the number of users is important for grant applications.\n' \ 'Please do not use accents in any of the information\n' \ 'because Python does not handle it gracefully.' row = 0 label = Label(guiFrame, text=explainText, grid=(row, 0), gridSpan=(1, 2), sticky='ew') row += 1 licenseAgreeText = 'I agree to abide by the rules of the CCPN licensing agreement.' self.agreeButton = CheckButton(guiFrame, licenseAgreeText, tipText=licenseAgreeText) self.agreeButton.grid(row=row, column=1, columnspan=1, sticky='nsew') row += 1 self.entryWidgets = [] for (text, value) in (('Name', userName), ('Organisation', userOrganisation), ('Email', userEmail)): label = Label(guiFrame, text=text + ':', grid=(row, 0)) entry = Entry(guiFrame, text=value or '', grid=(row, 1), sticky='ew', tipText='Your ' + text) self.entryWidgets.append(entry) row += 1 texts = ['Register Now', 'Read License', 'Register Later'] tipTexts = ['Register now', 'Read License', 'Register later'] commands = [self.register, self.openLicense, self.close] buttons = UtilityButtonList(guiFrame, helpUrl=self.help_url, grid=(row, 0), gridSpan=(1, 2), commands=commands, texts=texts, tipTexts=tipTexts) self.buttons = buttons
class LabeledFloatEntry(Frame): def __init__(self, parent, label, entry='', separator=': ', label_width=20, entry_width=60, label_anchor=Tkinter.E, show='', isArray=False, returnCallback=None, *args, **kw): apply(Frame.__init__, (self, parent) + args, kw) self.grid_columnconfigure(1, weight=1) self.separator = separator text = label + separator self.label = Label(self, text=text, width=label_width, anchor=label_anchor) self.label.grid(row=0, column=0, sticky=Tkinter.EW) self.entry = FloatEntry(self, show=show, width=entry_width, isArray=isArray, returnCallback=returnCallback) self.entry.grid(row=0, column=1, sticky=Tkinter.EW) self.setEntry(entry) def getLabel(self): text = self.label.get() n = text.find(self.separator) if (n >= 0): text = text[:n] return text def setLabel(self, text=''): text = text + self.separator self.label.set(text) def getEntry(self): return self.entry.get() def setEntry(self, value=''): self.entry.set(value)
def body(self, guiParent): self.geometry('320x120') analysisProject = self.analysisProject guiParent.expandGrid(5,3) guiParent.expandGrid(5,4) row = 0 div = LabelDivider(guiParent, text='Multi-dimensional Marks', grid=(row,0), gridSpan=(1,4)) buttons = UtilityButtonList(guiParent, doClone=False, helpUrl=self.help_url) buttons.grid(row=row, column=4, sticky='w') row += 1 label = Label(guiParent, text='Maximum marks: ', grid=(row,0)) values = range(1, self.maxAllowedMarks+1) entries = [ str(x) for x in values] value = analysisProject.maxMarks tipText = 'Sets the maximum number of multi-dimensional cross-marks that the user can add to spectrum window displays' self.marks_menu = PulldownList(guiParent, callback=self.setMaxMarks, grid=(row,1), texts=entries, objects=values, index=value-1, tipText=tipText) label = Label(guiParent, text=' Mark colour: ', grid=(row,2)) tipText = 'Sets the line colour of the multi-dimensional cross-marks, excepting those that go through peak centers' self.marksSchemePulldown = PulldownList(guiParent, callback=self.setMarksColor, grid=(row,3), tipText=tipText) row += 1 label = Label(guiParent, text='(Non-peak marks only)', grid=(row,2), gridSpan=(1,2)) row += 1 div = LabelDivider(guiParent, text='1-dimensional Rulers', grid=(row,0), gridSpan=(1,5)) row += 1 label = Label(guiParent, text='Maximum rulers: ', grid=(row,0)) values = range(1, self.maxAllowedRulers+1) entries = [ str(x) for x in values] value = analysisProject.maxRulers tipText = 'Sets the maximum number of 1-dimensional ruler lines that the user can add to spectrum window displays' self.rulers_menu = PulldownList(guiParent, callback=self.setMaxRulers, grid=(row,1), texts=entries, objects=values, index=value-1, tipText=tipText) label = Label(guiParent, text=' Ruler colour: ', grid=(row,2)) tipText = 'Sets the line colour of the 1-dimensional ruler lines' self.rulersSchemePulldown = PulldownList(guiParent, callback=self.setRulersColor, grid=(row,3), tipText=tipText) self.updateSchemePulldowns()
def __init__(self, guiParent, basePopup): # Base popup required to handle notification of data model changes # e.g. new peak lists, so that the GUI can update to the latest # state self.basePopup = basePopup self.guiParent = guiParent self.registerNotify=basePopup.registerNotify self.unregisterNotify=basePopup.unregisterNotify Frame.__init__(self, guiParent) # set up the grid self.grid_columnconfigure(0, weight=1, minsize=10) self.grid_columnconfigure(1, weight=0, minsize=10) self.grid_columnconfigure(2, weight=0, minsize=20) self.grid_columnconfigure(3, weight=1, minsize=10) self.grid_rowconfigure(0, weight=1, minsize=5) self.grid_rowconfigure(1, weight=0, minsize=10) self.grid_rowconfigure(2, weight=0, minsize=10) self.grid_rowconfigure(3, weight=0, minsize=10) self.grid_rowconfigure(4, weight=1, minsize=5) # build up the body. # Column headers self.user_label = Label(self,text='Username:'******'w') self.user_value = Text(self, width=20, height=1, text="") self.user_value.grid(row=1, column=2, padx=5, pady=5, sticky='w') self.pswd_label = Label(self,text='Password:'******'w') self.pswd_value = Text(self, width=20, height=1, text="") self.pswd_value.grid(row=2, column=2, padx=5, pady=5, sticky='w') self.cancel_button = Button(self, width=10, height=1, text="Cancel", command=self.quit ) self.cancel_button.grid(row=3, column=1, padx=5, pady=5, sticky='e') self.login_botton = Button(self, width=10, height=1, text="Login", command=self.login ) self.login_botton.grid(row=3, column=2, padx=5, pady=5, sticky='w')
class LabeledLabel(Frame): def __init__(self, parent, label1, label2='', separator=': ', label1_width=20, label2_width=60, label1_anchor=Tkinter.E, label2_anchor=Tkinter.W, *args, **kw): apply(Frame.__init__, (self, parent) + args, kw) self.grid_columnconfigure(1, weight=1) self.separator = separator text = label1 + self.separator self.label1 = Label(self, text=text, width=label1_width, anchor=label1_anchor) self.label1.grid(row=0, column=0, sticky=Tkinter.EW) text = label2 self.label2 = Label(self, text=text, width=label2_width, anchor=label2_anchor) self.label2.grid(row=0, column=1, sticky=Tkinter.EW) def getLabel1(self): text = self.label1.get() n = text.find(self.separator) if (n >= 0): text = text[:n] return text def setLabel1(self, text): text = text + self.separator self.label1.set(text) def getLabel2(self): return self.label2.get() def setLabel2(self, text): self.label2.set(text)
def __init__(self, parent, label='', world_region=None, view_region=None, orient=Tkinter.HORIZONTAL, allow_resize=True, width=20, callback=None, borderwidth=1, show_text=True, text_color='#000000', text_decimals=2, units_scroll=0.1, pages_scroll=1.0, menu_entries=None, menu_callback=None, min_thickness=None, *args, **kw): self.menu_entries = menu_entries self.myCallback = callback Frame.__init__(self, parent, *args, **kw) self.text_decimals = text_decimals self.label = Label(self, text=label, width=4) self.menu = PulldownMenu(self, callback=menu_callback, entries=menu_entries) self.entry = FloatEntry(self, width=6, returnCallback=self.adjustScrollbar) self.region_scrollbar = RegionScrollbar(self, world_region=world_region, view_region=view_region, orient=orient, allow_resize=allow_resize, width=width, callback=self.doCallback, borderwidth=borderwidth, show_text=show_text, text_color=text_color, text_decimals=text_decimals, units_scroll=units_scroll, pages_scroll=pages_scroll, min_thickness=min_thickness) self.gridAll()
def __init__(self, parent, width=70, height=20, xscroll=False, yscroll=True, *args, **kw): apply(Frame.__init__, (self, parent) + args, kw) self.grid_columnconfigure(1, weight=1) row = 0 texts = ('back', 'forward', 'load') commands = (self.prevUrl, self.nextUrl, self.loadUrl) self.buttons = ButtonList(self, texts=texts, commands=commands) self.buttons.grid(row=row, column=0) self.url_entry = Entry(self, returnCallback=self.loadUrl) self.url_entry.grid(row=row, column=1, columnspan=2, sticky=Tkinter.EW) row = row + 1 frame = Frame(self) frame.grid(row=row, column=0, columnspan=3, sticky=Tkinter.W) self.createFindFrame(frame) row = row + 1 self.grid_rowconfigure(row, weight=1) self.help_text = ScrolledHtml(self, width=width, height=height, xscroll=xscroll, yscroll=yscroll, startUrlCallback=self.startOpenUrl, endUrlCallback=self.endOpenUrl, enterLinkCallback=self.setLinkLabel, leaveLinkCallback=self.setLinkLabel) self.help_text.grid(row=row, column=0, columnspan=3, sticky=Tkinter.NSEW) row = row + 1 self.link_label = Label(self) self.link_label.grid(row=row, column=0, columnspan=2, sticky=Tkinter.W) button = memops.gui.Util.createDismissButton(self, dismiss_cmd=self.close) button.grid(row=row, column=2) self.urls = [] self.current = -1 self.updateUrlList = True self.setButtonState()
def __init__(self, guiParent, dataText, dataObjects, dataValues, helpText, selectionText, **kw): Frame.__init__(self, guiParent, **kw) label = Label(self, text=dataText + ':', grid=(0, 0)) self.selectionList = PulldownList(self, objects=dataObjects, texts=dataValues, grid=(0, 1)) label = Label(self, text=helpText, grid=(1, 0), gridSpan=(1, 2)) label = Label(self, text=selectionText + ':', grid=(2, 0)) self.selectionEntry = Entry(self, grid=(2, 1))
def body(self, guiFrame): guiFrame.grid_columnconfigure(0, weight=1) guiFrame.grid_rowconfigure(1, weight=1) frame = LabelFrame(guiFrame, text='Options') frame.grid(row=0,column=0,sticky='ew') frame.grid_columnconfigure(5, weight=1) # Choose type of symmetry set to define or change (if allready present in the model) self.molLabel = Label(frame, text='Symmetry Operator:') self.molLabel.grid(row=0,column=2,sticky='w') self.symmCodePulldown = PulldownMenu(frame, callback=self.setSymmCode, entries=['NCS','C2','C3','C5'], do_initial_callback=False) self.symmCodePulldown.grid(row=0,column=3,sticky='w') frame = LabelFrame(guiFrame, text='Symmetry Operations') frame.grid(row=1,column=0,sticky='nsew') frame.grid_columnconfigure(0, weight=1) frame.grid_rowconfigure(0, weight=1) self.molSysPulldown = PulldownMenu(self, callback=self.setMolSystem, do_initial_callback=False) self.chainSelect = MultiWidget(self, CheckButton, callback=self.setChains, minRows=0, useImages=False) self.segStartEntry = IntEntry(self, returnCallback=self.setSegStart, width=6) self.segLengthEntry = IntEntry(self, returnCallback=self.setSegLength, width=6) headings = ['#','Symmetry\noperator','Mol System','Chains','Start\nresidue','Segment\nlength'] editWidgets = [None, None, self.molSysPulldown, self.chainSelect, self.segStartEntry, self.segLengthEntry] editGetCallbacks = [None, None, self.getMolSystem, self.getChains, self.getSegStart, self.getSegLength] editSetCallbacks = [None, self.setSymmCode, self.setMolSystem, self.setChains, self.setSegStart, self.setSegLength] self.symmetryMatrix = ScrolledMatrix(frame,headingList=headings, callback=self.selectSymmetry, editWidgets=editWidgets, editGetCallbacks=editGetCallbacks, editSetCallbacks=editSetCallbacks) self.symmetryMatrix.grid(row=0,column=0,sticky='nsew') texts = ['Add Symmetry Set','Remove Symmetry Set'] commands = [self.addSymmetrySet,self.removeSymmetrySet] self.buttonList = createDismissHelpButtonList(guiFrame, texts=texts, commands=commands, expands=True) self.buttonList.grid(row=2,column=0,sticky='ew') self.updateMolPartners() self.notify(self.registerNotify) #Temporary report of parameters print self.molSystem print self.molecules print self.symmetrySet print self.symmetryOp print self.symmetryCode
def __init__(self, parent, analysis, orientation='horizontal', callback = None, *args, **kw): self.analysis = analysis self.callback = callback apply(Frame.__init__, (self, parent) + args, kw) label = Label(self, text='Experiment:') label.grid(row=0, column=0, sticky='ne') self.expt_list = ExperimentList(self, self.analysis.getExperiments, callback=self.setSpectra) self.expt_list.grid(row=0, column=1, sticky='nw') if orientation in ['horizontal','h','H',Tkinter.HORIZONTAL]: row = 0 col = 2 else: row = 1 col = 0 label = Label(self, text='Spectrum:') label.grid(row=row, column=col, sticky='ne') self.spectrum_list = SpectrumList(self, self.getSpectra, callback=self.setSpectrumProperties) self.spectrum_list.grid(row=row, column=col+1, sticky='nw') for func in notify_funcs: Implementation.registerNotify(self.setExperiments, 'ccp.nmr.Nmr.Experiment', func) Implementation.registerNotify(self.setSpectra, 'ccp.nmr.Nmr.DataSource', func)
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, frame): label = Label(frame, text=self.prompt) if self.hide: entry = Entry(frame, text=self.initVal, bg='white', show='*') else: entry = Entry(frame, text=self.initVal, bg='white') label.grid(row=0, column=0, sticky=Tkinter.W) entry.grid(row=1, column=0, sticky=Tkinter.W) entry.focus_set() # for the keypresses return entry
def body(self, master): # # Popup window # row = 0 label = Label(master, text= self.text) label.grid(row=row, column=0, sticky=Tkinter.EW) row = row + 1 self.multiSelect = ScrolledListbox(master, width = 50, height = 5, selectmode = Tkinter.MULTIPLE, initial_list = self.selectionList) self.multiSelect.grid(row=row, column=0, sticky=Tkinter.E, ipadx = 20) master.grid_columnconfigure(0, weight=1) master.grid_rowconfigure(row, weight=1) if self.selectedItems: self.multiSelect.setSelectedItems(self.selectedItems) if self.endText: row = row + 1 label = Label(master, text= self.endText) label.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 = createDismissHelpButtonList(master, texts=texts, commands=commands, dismiss_text = self.dismissText, help_url=self.help_url) buttons.grid(row=row, column=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)
def __init__(self, parent, peakList): apply(Frame.__init__, (self, parent) ) #parent.grid_columnconfigure(0, weight=1) #parent.grid_rowconfigure(1, weight=1) #self.grid_columnconfigure(1, weight=1) #self.grid_columnconfigure(2, weight=1) self.parent = parent self.peakList = peakList self.specLabel = Label(self, text='Spectrum: ' ) self.listLabel = Label(self, text='Peak List: ' ) self.dimLabel = Label(self, text='Dimension' ) self.adjustLabel = Label(self, text='Adjustment') self.specLabel.grid(row = 0, column = 0, columnspan=2, sticky='nsew') self.listLabel.grid(row = 0, column = 2, columnspan=1, sticky='nsew') self.dimLabel.grid(row = 1, column = 0, columnspan=1, sticky='nsew') self.adjustLabel.grid(row = 1, column = 1, columnspan=2, sticky='nsew') self.goButton = Button(self, text='Go!', command=self.go, tipText='Commit the re-referencing adjustment') self.clearButton = Button(self, text='Clear', command=self.update, tipText='Clear the input re-referencing values') self.cancelButton = Button(self, text='Cancel', command=self.close, tipText='Abort operation without making any changes') self.update()
def body(self, master): # # Popup gui # # First row row = 0 label = Label(master, text="Choose a naming system:") label.grid(row=row, column=0, sticky=Tkinter.W) row = row + 1 label = Label(master, text="(% matches in brackets)") label.grid(row=row, column=0, sticky=Tkinter.W) row = row + 1 self.menu = PulldownMenu(master, entries=self.namingSysList) 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 = createDismissHelpButtonList(master, texts=texts, commands=commands, dismiss_text='Exit', help_url=self.help_url) buttons.grid(row=row, column=0)
def body(self, master): master.grid_rowconfigure(0, weight=1) master.grid_columnconfigure(1, weight=1) row = 0 if (self.message): label = Label(master, text=self.message) label.grid(row=row, column=0, columnspan=2, sticky=Tkinter.W) row = row + 1 if (self.label): label = Label(master, text=self.label) label.grid(row=row, column=0, sticky=Tkinter.W) self.itemMenu = PulldownMenu(master, entries=self.entries) self.itemMenu.grid(row=row, column=1, sticky=Tkinter.EW) row = row + 1 texts = [self.select_text] commands = [self.ok] buttons = createDismissHelpButtonList(master, texts=texts, commands=commands, dismiss_text='Cancel') buttons.grid(row=row, column=0, columnspan=2, sticky=Tkinter.EW)
def body(self, guiParent): self.geometry('600x300') guiParent.grid_columnconfigure(1, weight=1) url = '' if self.server: url = self.server.url label = Label(guiParent, text='Server location: %s' % url) label.grid(row=0, column=0, sticky='w', columnspan=2) label = Label(guiParent, text='Installation root: %s%s' % (self.installRoot, os.sep)) label.grid(row=1, column=0, sticky='w', columnspan=2) editWidgets = [None] * 5 editGetCallbacks = [None, self.toggleSelected, None, None, None] editSetCallbacks = [None] * 5 guiParent.grid_rowconfigure(2, weight=1) headingList = [ 'File', 'Install?', 'Date', 'Relative Path', 'Priority', 'Comments' ] self.scrolledMatrix = ScrolledMatrix(guiParent, headingList=headingList, highlightType=0, editWidgets=editWidgets, callback=self.selectCell, editGetCallbacks=editGetCallbacks, editSetCallbacks=editSetCallbacks) self.scrolledMatrix.grid(row=2, column=0, columnspan=2, sticky='nsew') if self.exitOnClose: txt = 'Quit' cmd = sys.exit else: txt = 'Close' cmd = self.close texts = ['Refresh List', 'Select All', 'Install Selected', txt] commands = [self.updateFiles, self.selectAll, self.install, cmd] self.buttonList = ButtonList(guiParent, texts=texts, commands=commands, expands=True) self.buttonList.grid(row=3, column=0, columnspan=2, sticky='ew') if self.server: for fileUpdate in self.server.fileUpdates: fileUpdate.isSelected = False #self.update() # need self.updateFiles, not just self.update # because otherwise the 2.0.5 to 2.0.6 upgrades do not work # (self.server not set on first pass so need call to updateFiles here) self.updateFiles()
def body(self, guiFrame): '''This method describes the outline of the body of the application. args: guiFrame: frame the body should live in. ''' self.geometry('900x700') guiFrame.grid_columnconfigure(0, weight=1) guiFrame.grid_rowconfigure(0, weight=1) tabbedFrame = TabbedFrame(guiFrame, options=['Spectra', 'Annealing', 'Results', 'Bulk Transfer Assignments To Project', 'Save and Load'], callback=self.toggleTab, grid=(0, 0)) self.tabbedFrame = tabbedFrame autoFrame, NAFrame, resultsFrame, assignFrame, saveFrame = tabbedFrame.frames self.spectrumSelectionTab = SpectrumSelectionTab(self, autoFrame) self.assignTab = AssignMentTransferTab(self, assignFrame) self.saveLoadTab = SaveLoadTab(self, saveFrame) self.annealingSettingsTab = AnnealingSettingsTab(self, NAFrame) self.resultsTab = ResultsTab(self, resultsFrame) bottomButtons = UtilityButtonList(tabbedFrame.sideFrame, helpUrl='www.google.com') bottomButtons.grid(row=0, column=0, sticky='e') self.infoLabel = Label(guiFrame, text=' ') self.infoLabel.grid(row=2, column=0, sticky='w') self.waiting = False self.updateAfter() self.administerNotifiers(self.registerNotify)
def __init__(self, parent, application, *args, **kw): project = application.project simStore = project.findFirstNmrSimStore(application=APP_NAME) or \ project.newNmrSimStore(application=APP_NAME, name=APP_NAME) self.application = application self.residue = None self.structure = None self.serverCredentials = None self.iCingBaseUrl = DEFAULT_URL self.resultsUrl = None self.chain = None self.nmrProject = application.nmrProject self.serverDone = False NmrSimRunFrame.__init__(self, parent, project, simStore, *args, **kw) # # # # # # New Structure Frame # # # # # self.structureFrame.grid_forget() tab = self.tabbedFrame.frames[0] frame = Frame(tab, grid=(1,0)) frame.expandGrid(2,1) div = LabelDivider(frame, text='Structures', grid=(0,0), gridSpan=(1,2)) label = Label(frame, text='Ensemble: ', grid=(1,0)) self.structurePulldown = PulldownList(frame, callback=self.changeStructure, grid=(1,1)) headingList = ['Model','Use'] editWidgets = [None,None] editGetCallbacks = [None,self.toggleModel] editSetCallbacks = [None,None,] self.modelTable = ScrolledMatrix(frame, grid=(2,0), gridSpan=(1,2), callback=self.selectStructModel, editWidgets=editWidgets, editGetCallbacks=editGetCallbacks, editSetCallbacks=editSetCallbacks, headingList=headingList) texts = ['Activate Selected','Inactivate Selected'] commands = [self.activateModels, self.disableModels] buttons = ButtonList(frame, texts=texts, commands=commands, grid=(3,0), gridSpan=(1,2)) # # # # # # Submission frame # # # # # # tab = self.tabbedFrame.frames[1] tab.expandGrid(1,0) frame = LabelFrame(tab, text='Server Job Submission', grid=(0,0)) frame.expandGrid(None,2) srow = 0 label = Label(frame, text='iCing URL:', grid=(srow, 0)) urls = [DEFAULT_URL,] self.iCingBaseUrlPulldown = PulldownList(frame, texts=urls, objects=urls, index=0, grid=(srow,1)) srow +=1 label = Label(frame, text='Results File:', grid=(srow, 0)) self.resultFileEntry = Entry(frame, bd=1, text='', grid=(srow,1), width=50) self.setZipFileName() button = Button(frame, text='Choose File', bd=1, sticky='ew', command=self.chooseZipFile, grid=(srow, 2)) srow +=1 label = Label(frame, text='Results URL:', grid=(srow, 0)) self.resultUrlEntry = Entry(frame, bd=1, text='', grid=(srow,1), width=50) button = Button(frame, text='View Results HTML', bd=1, sticky='ew', command=self.viewHtmlResults, grid=(srow, 2)) srow +=1 texts = ['Submit Project!', 'Check Run Status', 'Purge Server Result', 'Download Results'] commands = [self.runCingServer, self.checkStatus, self.purgeCingServer, self.downloadResults] self.buttonBar = ButtonList(frame, texts=texts, commands=commands, grid=(srow, 0), gridSpan=(1,3)) for button in self.buttonBar.buttons[:1]: button.config(bg=CING_BLUE) # # # # # # Residue frame # # # # # # frame = LabelFrame(tab, text='Residue Options', grid=(1,0)) frame.expandGrid(1,1) label = Label(frame, text='Chain: ') label.grid(row=0,column=0,sticky='w') self.chainPulldown = PulldownList(frame, callback=self.changeChain) self.chainPulldown.grid(row=0,column=1,sticky='w') headingList = ['#','Residue','Linking','Decriptor','Use?'] editWidgets = [None,None,None,None,None] editGetCallbacks = [None,None,None,None,self.toggleResidue] editSetCallbacks = [None,None,None,None,None,] self.residueMatrix = ScrolledMatrix(frame, headingList=headingList, multiSelect=True, editWidgets=editWidgets, editGetCallbacks=editGetCallbacks, editSetCallbacks=editSetCallbacks, callback=self.selectResidue) self.residueMatrix.grid(row=1, column=0, columnspan=2, sticky = 'nsew') texts = ['Activate Selected','Inactivate Selected'] commands = [self.activateResidues, self.deactivateResidues] self.resButtons = ButtonList(frame, texts=texts, commands=commands,) self.resButtons.grid(row=2, column=0, columnspan=2, sticky='ew') """ # # # # # # Validate frame # # # # # # frame = LabelFrame(tab, text='Validation Options', grid=(2,0)) frame.expandGrid(None,2) srow = 0 self.selectCheckAssign = CheckButton(frame) self.selectCheckAssign.grid(row=srow, column=0,sticky='nw' ) self.selectCheckAssign.set(True) label = Label(frame, text='Assignments and shifts') label.grid(row=srow,column=1,sticky='nw') srow += 1 self.selectCheckResraint = CheckButton(frame) self.selectCheckResraint.grid(row=srow, column=0,sticky='nw' ) self.selectCheckResraint.set(True) label = Label(frame, text='Restraints') label.grid(row=srow,column=1,sticky='nw') srow += 1 self.selectCheckQueen = CheckButton(frame) self.selectCheckQueen.grid(row=srow, column=0,sticky='nw' ) self.selectCheckQueen.set(False) label = Label(frame, text='QUEEN') label.grid(row=srow,column=1,sticky='nw') srow += 1 self.selectCheckScript = CheckButton(frame) self.selectCheckScript.grid(row=srow, column=0,sticky='nw' ) self.selectCheckScript.set(False) label = Label(frame, text='User Python script\n(overriding option)') label.grid(row=srow,column=1,sticky='nw') self.validScriptEntry = Entry(frame, bd=1, text='') self.validScriptEntry.grid(row=srow,column=2,sticky='ew') scriptButton = Button(frame, bd=1, command=self.chooseValidScript, text='Browse') scriptButton.grid(row=srow,column=3,sticky='ew') """ # # # # # # # # # # self.update(simStore) self.administerNotifiers(application.registerNotify)
def body(self, guiFrame): row = 0 col =0 # frame = Frame( guiFrame ) # frame.grid(row=row, column=col, sticky='news') self.menuBar = Menu( guiFrame) self.menuBar.grid( row=row, column=col, sticky='ew') #---------------------------------------------------------------------------------- # Project frame #---------------------------------------------------------------------------------- # guiFrame.grid_columnconfigure(row, weight=1) # frame = LabelFrame(guiFrame, text='Project', font=medFont) row = +1 col =0 frame = LabelFrame(guiFrame, text='Project', **labelFrameAttributes ) print '>', frame.keys() frame.grid(row=row, column=col, sticky='nsew' ) frame.grid_columnconfigure(2, weight=1) # frame.grid_rowconfigure(0, weight=1) srow = 0 self.projectOptions = ['old','new from PDB','new from CCPN','new from CYANA'] self.projOptionsSelect = RadioButtons(frame, selected_index=0, entries=self.projectOptions, direction='vertical', select_callback=self.updateGui ) self.projOptionsSelect.grid(row=srow,column=0,rowspan=len(self.projectOptions),columnspan=2, sticky='w') if self.options.name: text = self.options.name else: text='' # end if self.projEntry = Entry(frame, bd=1, text=text, returnCallback=self.updateGui) self.projEntry.grid(row=srow,column=2,columnspan=2,sticky='ew') # self.projEntry.bind('<Key>', self.updateGui) self.projEntry.bind('<Leave>', self.updateGui) projButton = Button(frame, bd=1,command=self.chooseOldProjectFile, text='browse') projButton.grid(row=srow,column=3,sticky='ew') srow += 1 self.pdbEntry = Entry(frame, bd=1, text='') self.pdbEntry.grid(row=srow,column=2,sticky='ew') self.pdbEntry.bind('<Leave>', self.updateGui) pdbButton = Button(frame, bd=1,command=self.choosePdbFile, text='browse') pdbButton.grid(row=srow,column=3,sticky='ew') srow += 1 self.ccpnEntry = Entry(frame, bd=1, text='') self.ccpnEntry.grid(row=srow,column=2,sticky='ew') self.ccpnEntry.bind('<Leave>', self.updateGui) ccpnButton = Button(frame, bd=1,command=self.chooseCcpnFile, text='browse') ccpnButton.grid(row=srow,column=3,sticky='ew') srow += 1 self.cyanaEntry = Entry(frame, bd=1, text='') self.cyanaEntry.grid(row=srow,column=2,sticky='ew') self.cyanaEntry.bind('<Leave>', self.updateGui) cyanaButton = Button(frame, bd=1,command=self.chooseCyanaFile, text='browse') cyanaButton.grid(row=srow,column=3,sticky='ew') #Empty row srow += 1 label = Label(frame, text='') label.grid(row=srow,column=0,sticky='nw') srow += 1 label = Label(frame, text='Project name:') label.grid(row=srow,column=0,sticky='nw') self.nameEntry = Entry(frame, bd=1, text='') self.nameEntry.grid(row=srow,column=2,sticky='w') #Empty row srow += 1 label = Label(frame, text='') label.grid(row=srow,column=0,sticky='nw') srow += 1 self.openProjectButton = Button(frame, command=self.openProject, text='Open Project', **actionButtonAttributes ) self.openProjectButton.grid(row=srow,column=0, columnspan=4, sticky='ew') #---------------------------------------------------------------------------------- # status #---------------------------------------------------------------------------------- # guiFrame.grid_columnconfigure(1, weight=0) srow = 0 frame = LabelFrame(guiFrame, text='Status', **labelFrameAttributes) frame.grid( row=srow, column=1, sticky='wnes') self.projectStatus = Text(frame, height=11, width=70, borderwidth=0, relief='flat') self.projectStatus.grid(row=0, column=0, sticky='wen') #Empty row srow += 1 label = Label(frame, text='') label.grid(row=srow,column=0,sticky='nw') srow += 1 self.closeProjectButton = Button(frame, command=self.closeProject, text='Close Project', **actionButtonAttributes) self.closeProjectButton.grid(row=srow,column=0, columnspan=4, sticky='ew') #---------------------------------------------------------------------------------- # Validate frame #---------------------------------------------------------------------------------- row +=1 col=0 frame = LabelFrame(guiFrame, text='Validate', **labelFrameAttributes) # frame = LabelFrame(guiFrame, text='Validate', font=medFont) frame.grid(row=row, column=col, sticky='nsew') # frame.grid_columnconfigure(2, weight=1) frame.grid_rowconfigure(0, weight=1) srow = 0 # label = Label(frame, text='validation') # label.grid(row=srow,column=0,sticky='nw') # # self.selectDoValidation = CheckButton(frame) # self.selectDoValidation.grid(row=srow, column=1,sticky='nw' ) # self.selectDoValidation.set(True) # # srow += 1 # label = Label(frame, text='') # label.grid(row=srow,column=0,sticky='nw') # # srow += 1 label = Label(frame, text='checks') label.grid(row=srow,column=0,sticky='nw') self.selectCheckAssign = CheckButton(frame) self.selectCheckAssign.grid(row=srow, column=1,sticky='nw' ) self.selectCheckAssign.set(True) label = Label(frame, text='assignments and shifts') label.grid(row=srow,column=2,sticky='nw') # srow += 1 # self.selectCheckQueen = CheckButton(frame) # self.selectCheckQueen.grid(row=srow, column=4,sticky='nw' ) # self.selectCheckQueen.set(False) # label = Label(frame, text='QUEEN') # label.grid(row=srow,column=5,sticky='nw') # # queenButton = Button(frame, bd=1,command=None, text='setup') # queenButton.grid(row=srow,column=6,sticky='ew') srow += 1 self.selectCheckResraint = CheckButton(frame) self.selectCheckResraint.grid(row=srow, column=1,sticky='nw' ) self.selectCheckResraint.set(True) label = Label(frame, text='restraints') label.grid(row=srow,column=2,sticky='nw') srow += 1 self.selectCheckStructure = CheckButton(frame) self.selectCheckStructure.grid(row=srow, column=1,sticky='nw' ) self.selectCheckStructure.set(True) label = Label(frame, text='structural') label.grid(row=srow,column=2,sticky='nw') srow += 1 self.selectMakeHtml = CheckButton(frame) self.selectMakeHtml.grid(row=srow, column=1,sticky='nw' ) self.selectMakeHtml.set(True) label = Label(frame, text='generate HTML') label.grid(row=srow,column=2,sticky='nw') srow += 1 self.selectCheckScript = CheckButton(frame) self.selectCheckScript.grid(row=srow, column=1,sticky='nw' ) self.selectCheckScript.set(False) label = Label(frame, text='user script') label.grid(row=srow,column=0,sticky='nw') self.validScriptEntry = Entry(frame, bd=1, text='') self.validScriptEntry.grid(row=srow,column=2,columnspan=3, sticky='ew') scriptButton = Button(frame, bd=1,command=self.chooseValidScript, text='browse') scriptButton.grid(row=srow,column=5,sticky='ew') srow += 1 label = Label(frame, text='ranges') label.grid(row=srow,column=0,sticky='nw') self.rangesEntry = Entry( frame, text='' ) self.rangesEntry.grid( row=srow, column=2, columnspan=3, sticky='ew') # self.validScriptEntry = Entry(frame, bd=1, text='') # self.validScriptEntry.grid(row=srow,column=3,sticky='ew') # # scriptButton = Button(frame, bd=1,command=self.chooseValidScript, text='browse') # scriptButton.grid(row=srow,column=4,sticky='ew') srow += 1 texts = ['Run Validation','View Results','Setup QUEEN'] commands = [self.runCing, None, None] buttonBar = ButtonList(frame, texts=texts, commands=commands,expands=True) buttonBar.grid(row=srow, column=0, columnspan=6, sticky='ew') for button in buttonBar.buttons: button.config(**actionButtonAttributes) # end for self.runButton = buttonBar.buttons[0] self.viewResultButton = buttonBar.buttons[1] self.queenButton = buttonBar.buttons[2] #---------------------------------------------------------------------------------- # Miscellaneous frame #---------------------------------------------------------------------------------- row +=0 col=1 # frame = LabelFrame(guiFrame, text='Miscellaneous', font=medFont) frame = LabelFrame(guiFrame, text='Miscellaneous', **labelFrameAttributes) frame.grid(row=row, column=col, sticky='news') frame.grid_columnconfigure(2, weight=1) frame.grid_columnconfigure(4, weight=1,minsize=30) frame.grid_rowconfigure(0, weight=1) # Exports srow = 0 label = Label(frame, text='export to') label.grid(row=srow,column=0,sticky='nw') self.selectExportXeasy = CheckButton(frame) self.selectExportXeasy.grid(row=srow, column=1,sticky='nw' ) self.selectExportXeasy.set(True) label = Label(frame, text='Xeasy, Sparky, TALOS, ...') label.grid(row=srow,column=2,sticky='nw') srow += 1 self.selectExportCcpn = CheckButton(frame) self.selectExportCcpn.grid(row=srow, column=1,sticky='nw' ) self.selectExportCcpn.set(True) label = Label(frame, text='CCPN') label.grid(row=srow,column=2,sticky='nw') srow += 1 self.selectExportQueen = CheckButton(frame) self.selectExportQueen.grid(row=srow, column=1,sticky='nw' ) self.selectExportQueen.set(True) label = Label(frame, text='QUEEN') label.grid(row=srow,column=2,sticky='nw') srow += 1 self.selectExportRefine = CheckButton(frame) self.selectExportRefine.grid(row=srow, column=1,sticky='nw' ) self.selectExportRefine.set(True) label = Label(frame, text='refine') label.grid(row=srow,column=2,sticky='nw') srow += 1 label = Label(frame, text='') label.grid(row=srow,column=0,sticky='nw') # User script srow += 1 label = Label(frame, text='user script') label.grid(row=srow,column=0,sticky='nw') self.selectMiscScript = CheckButton(frame) self.selectMiscScript.grid(row=srow, column=1,sticky='nw' ) self.selectMiscScript.set(False) self.miscScriptEntry = Entry(frame, bd=1, text='') self.miscScriptEntry.grid(row=srow,column=3,sticky='ew') script2Button = Button(frame, bd=1,command=self.chooseMiscScript, text='browse') script2Button.grid(row=srow,column=4,sticky='ew') srow += 1 texts = ['Export','Run Script'] commands = [None, None] buttonBar = ButtonList(frame, texts=texts, commands=commands,expands=True) buttonBar.grid(row=srow, column=0, columnspan=5, sticky='ew') for button in buttonBar.buttons: button.config(**actionButtonAttributes) # end for self.exportButton = buttonBar.buttons[0] self.scriptButton = buttonBar.buttons[1] #---------------------------------------------------------------------------------- # Textarea #---------------------------------------------------------------------------------- row +=1 guiFrame.grid_rowconfigure(row, weight=1) self.outputTextBox = ScrolledText(guiFrame) self.outputTextBox.grid(row=row, column=0, columnspan=2, sticky='nsew') self.redirectConsole() #---------------------------------------------------------------------------------- # Buttons #---------------------------------------------------------------------------------- row +=1 col=0 texts = ['Quit', 'Help'] commands = [self.close, None] self.buttonBar = ButtonList(guiFrame, texts=texts, commands=commands,expands=True) self.buttonBar.grid(row=row, column=col, columnspan=2, sticky='ew') # self.openProjectButton = self.buttonBar.buttons[0] # self.closeProjectButton = self.buttonBar.buttons[1] # self.runButton = self.buttonBar.buttons[0] # self.viewResultButton = self.buttonBar.buttons[1] for button in self.buttonBar.buttons: button.config(**actionButtonAttributes)
class ViewAssignmentPopup(BasePopup): '''The main popup that is shown when the macro is loaded.''' def __init__(self, parent, controler, *args, **kw): self.font = 'Helvetica 10' self.sFont = 'Helvetica %d' self.project = parent.project self.guiParent = parent self.sourceName = 'RefDB' self.connector = controler self.tabbedFrame = None self.saveLoadTab = None self.assignTab = None self.spectrumSelectionTab = None self.resultsTab = None self.annealingSettingsTab = None self.infoLabel = None self.waiting = False BasePopup.__init__(self, parent, title="Assignment Suggestions", **kw) def open(self): '''Open the popup. A standard method.''' self.updateAfter() BasePopup.open(self) def body(self, guiFrame): '''This method describes the outline of the body of the application. args: guiFrame: frame the body should live in. ''' self.geometry('900x700') guiFrame.grid_columnconfigure(0, weight=1) guiFrame.grid_rowconfigure(0, weight=1) tabbedFrame = TabbedFrame(guiFrame, options=['Spectra', 'Annealing', 'Results', 'Bulk Transfer Assignments To Project', 'Save and Load'], callback=self.toggleTab, grid=(0, 0)) self.tabbedFrame = tabbedFrame autoFrame, NAFrame, resultsFrame, assignFrame, saveFrame = tabbedFrame.frames self.spectrumSelectionTab = SpectrumSelectionTab(self, autoFrame) self.assignTab = AssignMentTransferTab(self, assignFrame) self.saveLoadTab = SaveLoadTab(self, saveFrame) self.annealingSettingsTab = AnnealingSettingsTab(self, NAFrame) self.resultsTab = ResultsTab(self, resultsFrame) bottomButtons = UtilityButtonList(tabbedFrame.sideFrame, helpUrl='www.google.com') bottomButtons.grid(row=0, column=0, sticky='e') self.infoLabel = Label(guiFrame, text=' ') self.infoLabel.grid(row=2, column=0, sticky='w') self.waiting = False self.updateAfter() self.administerNotifiers(self.registerNotify) def toggleTab(self, index): '''Toggle to a specific tab. args: index: index of tab. ''' pass def administerNotifiers(self, notifyFunc): '''Subscribing to get messages when parts of the data model of the project changes. ''' notifyFunc(self.spectrumSelectionTab.update, 'ccp.nmr.Nmr.Experiment', 'setName') notifyFunc(self.spectrumSelectionTab.update, 'ccp.nmr.Nmr.DataSource', 'setName') notifyFunc(self.spectrumSelectionTab.update, 'ccp.nmr.Nmr.DataSource', 'delete') notifyFunc(self.spectrumSelectionTab.update, 'ccp.nmr.Nmr.DataSource', '__init__') notifyFunc(self.annealingSettingsTab.updateChains, 'ccp.molecule.MolSystem.Chain', 'delete') notifyFunc(self.annealingSettingsTab.updateChains, 'ccp.molecule.MolSystem.Chain', '__init__') def updateAfter(self, *opt): '''update views, but waits untill all functions have returned.''' if self.waiting: return else: self.waiting = True self.after_idle(self.update) def update(self): '''update''' self.toggleTab(self.tabbedFrame.selected) self.waiting = False def destroy(self): '''Destroy the popup.''' self.administerNotifiers(self.unregisterNotify) BasePopup.destroy(self) def updateInfoText(self, string): '''Update the text shown at the bottom of the GUI. args: string: the string displayed to the user. ''' self.infoLabel.set(string) self.infoLabel.update()