Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
 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()