def createMidiFileTunescript(self, txt): inter = interpretsyntax.Interp() try: mfile = inter.go(txt) except interpretsyntax.InterpException, e: midiscript_util.alert(str(e)) return None
def createMidiFileBuilder(self, txt): provided = {} provided['Builder'] =bbuilder.BMidiBuilder #reference to class provided['alert'] = midiscript_util.alert #reference to fn provided['status'] = self.status #reference to fn #run the code evaler = midiscript_util.Interpreter(provided) res = evaler.run_code(txt) if res!=True: midiscript_util.alert(res) return #we are most interested in what they set "result" to. if 'result' not in provided or not provided['result']: midiscript_util.alert('You must set "result" to something.') return res = provided['result'] #either a sequence or a value if isinstance(res, bbuilder.BMidiBuilder): #is a single instance mfileobject = bbuilder.build_midi([res]) else: mfileobject = bbuilder.build_midi(res) return mfileobject
def create_menubar(self,root): root.bind('<Alt-F4>', lambda x:root.quit) root.bind('<Control-s>', self.saveMidi) root.bind('<Control-space>', self.playMidi) menubar = Menu(root) menuFile = Menu(menubar, tearoff=0) menubar.add_cascade(label="File", menu=menuFile, underline=0) menuFile.add_command(label="Tunescript Mode", command=self.setModeTune, underline=0) menuFile.add_command(label="Code bbuilder Mode", command=self.setModeCode, underline=0) menuFile.add_separator() menuFile.add_command(label="Play", command=self.playMidi, underline=0, accelerator='Ctrl+space') menuFile.add_command(label="Save mid", command=self.saveMidi, underline=0, accelerator='Ctrl+S') menuFile.add_separator() menuFile.add_command(label="Exit", command=root.quit, underline=1) menuExamples = Menu(menubar, tearoff=0) menubar.add_cascade(label="Examples", menu=menuExamples, underline=0) # get the examples txt = None try: txt = open('examples.cfg','r').read() except: pass nExample = 0 if txt: txt = txt.replace('\r\n','\n') def addExample(nExample, exampleName, exampleCode, sType): exampleName= exampleName.strip() exampleCode= exampleCode.strip() menuExamples.add_command(label=exampleName, command=midiscript_util.Callable(self.loadExample,nExample, sType)) self.cachedExamples[ exampleCode.strip()] = 1 self.exampleText.append(exampleCode) txtScript, txtBuilder = txt.split('~'*16) txtScript = txtScript.split('='*16) txtBuilder = txtBuilder.split('='*16) self.firstExampleTune = nExample for item in txtScript: if not item.strip(): continue title, code = item.split('-'*16) addExample(nExample, title, code, 'tune') nExample+=1 menuExamples.add_separator() self.firstExampleCode = nExample for item in txtBuilder: if not item.strip(): continue title, code = item.split('-'*16) addExample(nExample, title, code, 'code') nExample+=1 menuHelp = Menu(menubar, tearoff=0) menuHelp.add_command(label='About', command=(lambda: midiscript_util.alert('tunescript, by Ben Fisher 2009\n\nhalfhourhacks.blogspot.com','benmidi tunescript'))) menubar.add_cascade(label="Help", menu=menuHelp, underline=0) root.config(menu=menubar)