def run(self, codes=None): """ This method runs the code. """ diagram = self.get_current_diagram() generator, message = CodeGenerator.get_code_generator(diagram) if generator is None: return False self.save_source(codes=codes, generator=generator) command = diagram.code_template.command command = command.replace("$dir_name$", System.get_dir_name(diagram)) def __run(self): process = subprocess.Popen(command, cwd=System.get_dir_name(diagram), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, preexec_fn=os.setsid) self.threads[thread] = diagram, process self.main_window.toolbar.update_threads(self.threads) (stdout_data, stderr_data) = process.communicate() System.log(stdout_data + "\n") System.log(stderr_data + "\n") del self.threads[thread] self.main_window.toolbar.update_threads(self.threads) System.log("Executing Code:\n" + command) thread = Thread(target=__run, args=(self, )) thread.start() return True
def view_source(self): """ This method view the source code. """ diagram = self.get_current_diagram() generator, msg = CodeGenerator.get_code_generator(diagram) if generator is not None: codes = generator.generate_code() self.code_window = CodeWindow(self.main_window, codes) self.code_window.run() self.code_window.close() self.code_window.destroy() else: self.message_dialog = MessageDialog("Error", msg, self.main_window) self.message_dialog.run()