Ejemplo n.º 1
0
    def test_change_zoom(self):
        self.diagram_control.change_zoom(System.ZOOM_ORIGINAL)
        self.diagram_control.change_zoom(System.ZOOM_IN)
        self.diagram_control.change_zoom(System.ZOOM_OUT)

        diagram_control = DiagramControl(None)
        diagram_control.change_zoom(System.ZOOM_ORIGINAL)
Ejemplo n.º 2
0
    def add_block(self, block):
        """
        This method add a block.

        Parameters:

                * **Types** (:class:`block<>`)
        Returns:

            * **Types** (:class:`boolean<boolean>`)
        """
        diagram = self.main_window.work_area.get_current_diagram()
        if diagram is None:
            return False
        new_block = BlockModel(block)
        new_block = deepcopy(new_block)
        new_block = Block(diagram, new_block)
        if not DiagramControl(diagram).add_block(new_block):
            message = "Block language is different from diagram language.\n" +\
                "Diagram is expecting to generate " + diagram.language + \
                " code while block is writen in " + block.language
            Dialog().message_dialog("Error", message, self.main_window)
            return None
        diagram.redraw()
        return new_block
Ejemplo n.º 3
0
    def export_diagram(self):
        """
        This method exports the diagram.
        """
        diagram = self.main_window.work_area.get_current_diagram()
        if diagram is None:
            return

        while True:
            name = Dialog().save_dialog(self.main_window,
                                        title=_("Export diagram as png"),
                                        filename=diagram.file_name + ".png",
                                        filetype="png")

            if name is None:
                return
            if name.find(".png") == -1:
                name = name + ".png"
            if Dialog().confirm_overwrite(name, self.main_window):
                break

        result, message = DiagramControl(diagram).export_png(name)

        if not result:
            Dialog().message_dialog("Error", message, self.main_window)
Ejemplo n.º 4
0
 def create_diagram_control(self, diagram=None):
     if diagram is None:
         diagram = self.create_diagram()
     diagram_control = DiagramControl(diagram)
     diagram_control.connectors = []
     diagram_control.language = "language"
     return diagram_control
Ejemplo n.º 5
0
    def save(self, save_as=False):
        """
        This method save the file.
        """
        diagram = self.main_window.work_area.get_current_diagram()
        if diagram is None:
            return

        if diagram.file_name is "Untitled" or save_as:
            while True:
                name = Dialog().save_dialog(self.main_window,
                                            title=_("Save Diagram"),
                                            filename=diagram.file_name,
                                            filetype="mscd")
                if name and not name.endswith("mscd"):
                    name = (("%s" + ".mscd") % name)
                if Dialog().confirm_overwrite(name, self.main_window):
                    diagram.set_file_name(name)
                    break
        result, message = False, ""

        if diagram.file_name is not None:
            if len(diagram.file_name) > 0:
                result, message = DiagramControl(diagram).save()

        if not result:
            Dialog().message_dialog("Error", message, self.main_window)
Ejemplo n.º 6
0
    def export_diagram(self):
        """
        This method exports the diagram.
        """
        diagram = self.main_window.work_area.get_current_diagram()
        if diagram is None:
            return False

        while True:
            name = SaveDialog(self.main_window,
                              title=_("Export diagram as png"),
                              filename=System.get_user_dir() + "/" +
                              diagram.file_name + ".png",
                              filetype="png").run()

            if name is None:
                return
            if name.find(".png") == -1:
                name = name + ".png"
            if name is not None and os.path.exists(name) is True:
                msg = _("File exists. Overwrite?")
                result = ConfirmDialog(msg, self.main_window).run()
                if result == Gtk.ResponseType.OK:
                    break

        result, message = DiagramControl(diagram).export_png(name)

        if not result:
            MessageDialog("Error", message, self.main_window).run()
Ejemplo n.º 7
0
 def redo(self):
     """
     Redo a modification.
     """
     diagram = self.main_window.work_area.get_current_diagram()
     if diagram is None:
         return False
     DiagramControl(diagram).redo()
Ejemplo n.º 8
0
 def run(self, code=None):
     """
     This method runs the code.
     """
     diagram = self.main_window.work_area.get_current_diagram()
     if diagram is None:
         return
     DiagramControl(diagram).get_code_template().run(code=code)
Ejemplo n.º 9
0
 def delete(self):
     """
     This method delete a block.
     """
     diagram = self.main_window.work_area.get_current_diagram()
     if diagram is None:
         return False
     DiagramControl(diagram).delete()
Ejemplo n.º 10
0
 def cut(self):
     """
     This method cut a block on work area.
     """
     diagram = self.main_window.work_area.get_current_diagram()
     if diagram is None:
         return False
     DiagramControl(diagram).cut()
Ejemplo n.º 11
0
 def view_source(self):
     """
     This method view the source code.
     """
     diagram = self.main_window.work_area.get_current_diagram()
     if diagram is None:
         return
     code = DiagramControl(diagram).get_code_template().generate_code()
     CodeWindow(self.main_window, code)
Ejemplo n.º 12
0
 def open(self, file_name):
     """
     This method open a file.
     """
     diagram = Diagram(self.main_window)
     self.main_window.work_area.add_diagram(diagram)
     DiagramControl(diagram).load(file_name)
     diagram.set_modified(False)
     MainControl.add_recent_file(System.properties, file_name)
     self.main_window.menu.update_recent_file()
Ejemplo n.º 13
0
    def __insert_comment(self, *args):
        """
        This method monitors if the button delete was clicked.

            Parameters:
            * **args**

        """
        comment = DiagramControl(self.diagram).add_comment()
        comment.move(int(float(self.x)), int(float(self.y)))
Ejemplo n.º 14
0
    def test_align(self):
        for key in self.diagram.blocks:
            self.diagram.blocks[key].is_selected = True
        self.diagram_control.add_block(self.create_block())
        self.diagram_control.align("BOTTOM")
        self.diagram_control.align("TOP")
        self.diagram_control.align("LEFT")
        self.diagram_control.align("RIGHT")

        diagram_control = DiagramControl(None)
        diagram_control.align("RIGHT")
Ejemplo n.º 15
0
    def open(self, file_name):
        """
        This method open a file.
        """
        diagram = Diagram(self.main_window)
        self.main_window.work_area.add_diagram(diagram)
        DiagramControl(diagram).load(file_name)
        diagram.redraw()
        diagram.set_modified(False)

        self.set_recent_files(file_name)
Ejemplo n.º 16
0
    def open(self, file_name):
        """
        This method open a file.
        """
        diagram = Diagram(self.main_window)
        self.main_window.work_area.add_diagram(diagram)
        if not DiagramControl(diagram).load(file_name):
            System.log("Problem Loading the Diagram")
        diagram.redraw()
        diagram.set_modified(False)

        self.set_recent_files(file_name)
Ejemplo n.º 17
0
 def open(self, file_name):
     """
     This method open a file.
     """
     diagram = Diagram(self.main_window)
     result = DiagramControl(diagram).load(file_name)
     if result[0] is None:
         self.message_dialog = MessageDialog("Error", result[1],
                                             self.main_window)
         self.message_dialog.run()
         return
     diagram = result[0]
     System.add_recent_files(file_name)
Ejemplo n.º 18
0
    def add_comment(self, comment=None):
        """
        This method add a block.

        Parameters:

                * **Types** (:class:`block<>`)
        Returns:

            * **Types** (:class:`boolean<boolean>`)
        """
        DiagramControl(self.get_current_diagram()).add_comment(comment)
        return True
Ejemplo n.º 19
0
    def test_undo_redo(self):
        self.diagram_control.redo()

        self.diagram_control.undo()
        self.diagram_control.redo()

        diagram_control = DiagramControl(None)
        diagram_control.undo()
        diagram_control.redo()

        while len(self.diagram.undo_stack) > 1: 
            self.diagram.undo_stack.pop() 
        self.diagram_control.undo()
        self.diagram_control.undo()
Ejemplo n.º 20
0
    def test_add_block(self):
        block = self.create_block()
        diagram_control = DiagramControl(None)
        diagram_control.add_block(block)

        self.diagram_control.add_block(None)

        block = self.create_block()
        self.diagram_control.add_block(block)

        block.language = "None"
        self.diagram_control.add_block(block)

        self.diagram.language = None
        self.diagram_control.add_block(block)
Ejemplo n.º 21
0
    def test_load(self):
        self.diagram.file_name = None
        result = self.diagram_control.load()
        self.assertFalse(result[0], None)

        file_name = get_temp_file() + ".mscd"
        self.diagram_control.save(file_name)
        result = self.diagram_control.load(file_name)
        os.remove(file_name)

        diagram_control_load = self.create_diagram_control()
        result = diagram_control_load.load()

        diagram_control = DiagramControl(None)
        diagram_control.load(None)
Ejemplo n.º 22
0
    def add_comment(self, comment=None):
        """
        This method add a block.

        Parameters:

                * **Types** (:class:`block<>`)
        Returns:

            * **Types** (:class:`boolean<boolean>`)
        """
        diagram = self.main_window.work_area.get_current_diagram()
        if diagram is None:
            return False
        DiagramControl(diagram).add_comment(comment)
        return True
Ejemplo n.º 23
0
    def open(self, file_name):
        """
        This method open a file.
        """
        diagram = Diagram(self.main_window)
        self.main_window.work_area.add_diagram(diagram)
        DiagramControl(diagram).load(file_name)
        diagram.redraw()
        diagram.set_modified(False)

        if file_name in System.properties.recent_files:
            System.properties.recent_files.remove(file_name)
        System.properties.recent_files.insert(0, file_name)
        if len(System.properties.recent_files) > 10:
            System.properties.recent_files.pop()
        self.main_window.menu.update_recent_files(
            System.properties.recent_files)
Ejemplo n.º 24
0
    def save_source(self, code=None):
        """
        This method saves the source code.
        """
        diagram = self.main_window.work_area.get_current_diagram()
        if diagram is None:
            return

        generator = DiagramControl(diagram).get_code_template()
        while True:
            name = Dialog().save_dialog(self.main_window,
                        filename = generator.get_dir_name() + \
                            generator.get_filename())
            if Dialog().confirm_overwrite(name, self.main_window):
                diagram.set_file_name(name)
                break

        generator.save_code(name=name, code=code)
Ejemplo n.º 25
0
    def add_block(self, block):
        """
        This method add a block.

        Parameters:

                * **Types** (:class:`block<>`)
        Returns:

            * **Types** (:class:`boolean<boolean>`)
        """
        result = DiagramControl(self.get_current_diagram()).add_block(block)
        if not result[0]:
            message = result[1]
            self.message_dialog = MessageDialog("Error", message,
                                                self.main_window)
            self.message_dialog.run()
            return None
        return block
Ejemplo n.º 26
0
    def save(self, save_as=False):
        """
        This method save the file.
        """
        diagram = self.main_window.work_area.get_current_diagram()
        if diagram is None:
            return False

        if diagram.file_name == "Untitled" or save_as:
            while True:
                dialog = SaveDialog(
                    self.main_window,
                    title=_("Save Diagram"),
                    filename=System.get_user_dir() + "/" + diagram.patch_name,
                    filetype="*.mscd")
                name = dialog.run()
                if name is None:
                    System.log("File not saved")
                    return

                if not name.endswith("mscd"):
                    name = (("%s" + ".mscd") % name)

                if os.path.exists(name) is True:
                    msg = _("File exists. Overwrite?")
                    result = ConfirmDialog(msg, self.main_window).run()
                    if result == Gtk.ResponseType.CANCEL:
                        continue

                diagram.file_name = name
                self.main_window.work_area.rename_diagram(diagram)
                break
        result, message = False, ""

        if diagram.file_name is not None:
            if len(diagram.file_name) > 0:
                result, message = DiagramControl(diagram).save()
                self.set_recent_files(diagram.file_name)

        if not result:
            MessageDialog("Error", message, self.main_window).run()
Ejemplo n.º 27
0
    def save(self, save_as=False):
        """
        This method save the file.
        """
        diagram = self.get_current_diagram()
        if diagram is None:
            return False

        if diagram.file_name is "Untitled" or save_as:
            result, message = self.__select_save(diagram)
            if not result:
                return False

        result, message = DiagramControl(diagram).save()
        if not result:
            self.message_dialog = MessageDialog("Error", message,
                                                self.main_window)
            self.message_dialog.run()
            return False
        System.add_recent_files(diagram.file_name)
        self.main_window.work_area.rename_diagram(diagram)
        return True
Ejemplo n.º 28
0
    def test_copy_delete_paste(self):
        for key in self.diagram.blocks:
            self.diagram.blocks[key].is_selected = True

        for key in self.diagram.blocks:
            self.diagram.blocks[key].language = "None"
            break

        for con in self.diagram.connectors: 
            con.is_selected = True
            break

        for comment in self.diagram.comments: 
            comment.is_selected = True
            break

        self.diagram_control.copy()
        self.diagram_control.delete()
        self.diagram_control.paste()

        diagram_control = DiagramControl(None)
        diagram_control.copy()
        diagram_control.delete()
        diagram_control.paste()
Ejemplo n.º 29
0
    def test_select_open(self):
        t1 = threading.Thread(target=self.main_control.select_open,
                              args=(None, ))
        t1.start()
        sleep(1)
        if self.main_control.open_dialog:
            self.main_control.open_dialog.response(Gtk.ResponseType.CANCEL)
        t1.join()

        diagram = self.create_full_diagram(main_window=self.main_window)
        diagram.file_name = "/tmp/Test.mscd"
        DiagramControl(diagram).save()
        path = "/tmp/"
        System.set_user_dir(path)

        t1 = threading.Thread(target=self.main_control.select_open,
                              args=(path, ))
        t1.start()
        sleep(1)
        if self.main_control.open_dialog:
            self.main_control.open_dialog.set_filename("/tmp/Test.mscd")
            self.main_control.open_dialog.response(Gtk.ResponseType.OK)
        t1.join()
        os.remove("/tmp/Test.mscd")
Ejemplo n.º 30
0
 def setUp(self):
     """Do the test basic setup."""
     win = MainControl(MainWindow())
     self.diagram_control = DiagramControl(win)