Example #1
0
	def createMidiFileTunescript(self, txt):
		inter = interpretsyntax.Interp()
		try:
			mfile = inter.go(txt)
		except interpretsyntax.InterpException, e:
			midiscript_util.alert(str(e))
			return None
Example #2
0
	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
Example #3
0
	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)