コード例 #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)
コード例 #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
コード例 #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)
コード例 #4
0
ファイル: test_base.py プロジェクト: flschiavoni/mosaicode
 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
コード例 #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)
コード例 #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()
コード例 #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()
コード例 #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)
コード例 #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()
コード例 #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()
コード例 #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)
コード例 #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()
コード例 #13
0
ファイル: diagrammenu.py プロジェクト: llgoncalves/mosaicode
    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)))
コード例 #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")
コード例 #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)
コード例 #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)
コード例 #17
0
ファイル: maincontrol.py プロジェクト: flschiavoni/mosaicode
 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)
コード例 #18
0
ファイル: maincontrol.py プロジェクト: flschiavoni/mosaicode
    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
コード例 #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()
コード例 #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)
コード例 #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)
コード例 #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
コード例 #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)
コード例 #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)
コード例 #25
0
ファイル: maincontrol.py プロジェクト: flschiavoni/mosaicode
    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
コード例 #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()
コード例 #27
0
ファイル: maincontrol.py プロジェクト: flschiavoni/mosaicode
    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
コード例 #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()
コード例 #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")
コード例 #30
0
 def setUp(self):
     """Do the test basic setup."""
     win = MainControl(MainWindow())
     self.diagram_control = DiagramControl(win)