Example #1
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 is "Untitled" or save_as:
            while True:
                name = Dialog().save_dialog(self.main_window,
                                            title=_("Save Diagram"),
                                            filename=System.get_user_dir() +
                                            "/" + 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.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()

        if not result:
            Dialog().message_dialog("Error", message, self.main_window)
Example #2
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()
Example #3
0
    def save_python(cls, port):
        """
        This method save the port in user space in python extension.

        Returns:

            * **Types** (:class:`boolean<boolean>`)
        """
        from mosaicode.system import System
        parser = PythonParser()
        parser.class_name = port.label.replace(' ', '')
        parser.dependencies = [{'from':'mosaicode.model.port', 'import':'Port'}]
        parser.inherited_classes = ['Port']
        parser.setAttribute('type', port.type)
        parser.setAttribute('language', port.language)
        parser.setAttribute('label', port.label)
        parser.setAttribute('color', port.color)
        parser.setAttribute('multiple', port.multiple)
        parser.setAttribute('code', str(port.code))

        try:
            data_dir = System.get_user_dir() + "/extensions/"
            data_dir = data_dir + port.language + "/ports/"
            if not os.path.isdir(data_dir):
                try:
                    os.makedirs(data_dir)
                except:
                    pass
            file_name = data_dir + port.label.lower().replace(' ', '_') + ".py"
            parser.save(file_name)
        except IOError as e:
            return False
        return True
Example #4
0
 def add_port(cls, port):
     # first, save it
     from mosaicode.system import System as System
     System()
     path = System.get_user_dir() + "/extensions/"
     path = path + port.language + "/ports/"
     PortPersistence.save_xml(port, path)
Example #5
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 = Dialog().save_dialog(self.main_window,
                                        title=_("Export diagram as png"),
                                        filename=System.get_user_dir() + "/" +
                                        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)
Example #6
0
 def add_new_block(cls, block):
     # Save it
     from mosaicode.system import System
     System()
     path = System.get_user_dir() + "/extensions/"
     path = path + block.language + "/" + block.framework + "/"
     BlockPersistence.save_xml(block, path)
Example #7
0
    def __select_save(self, diagram):
        """
        This method selects a name to save the file.
        """
        while True:
            file_name = diagram.file_name
            if file_name == "Untitled":
                file_name = System.get_user_dir() + "/" + diagram.file_name
            self.save_dialog = SaveDialog(self.main_window,
                                          title=_("Save Diagram"),
                                          filename=file_name,
                                          filetype="*.mscd")
            name = self.save_dialog.run()
            if name is None:
                return False, "User canceled the operation"

            if os.path.exists(name) is True:
                msg = _("File exists. Overwrite?")
                self.confirm_dialog = ConfirmDialog(msg, self.main_window)
                result = self.confirm_dialog.run()
                if result == Gtk.ResponseType.CANCEL:
                    continue
            if not name.endswith("mscd"):
                name = name + ".mscd"
            diagram.file_name = name
            break
        return True, "Success"
    def save(cls, prefs):
        """
        This method save the diagram.

        Returns:

            * **Types** (:class:`boolean<boolean>`)
        """
        parser = XMLParser()
        parser.addTag(tag_name)
        parser.setTagAttr(tag_name, 'default_directory',
                          prefs.default_directory)
        parser.setTagAttr(tag_name, 'default_filename', prefs.default_filename)
        parser.setTagAttr(tag_name, 'grid', prefs.grid)
        parser.setTagAttr(tag_name, 'network_port', prefs.port)
        parser.setTagAttr(tag_name, 'width', prefs.width)
        parser.setTagAttr(tag_name, 'height', prefs.height)
        parser.setTagAttr(tag_name, 'hpaned_work_area', prefs.hpaned_work_area)
        parser.setTagAttr(tag_name, 'vpaned_bottom', prefs.vpaned_bottom)
        parser.setTagAttr(tag_name, 'vpaned_left', prefs.vpaned_left)

        parser.appendToTag(tag_name, 'recent_files')
        for key in prefs.recent_files:
            parser.appendToTag('recent_files', 'name', value=key)

        try:
            from mosaicode.system import System
            file_name = System.get_user_dir() + "/" + prefs.conf_file_path
            confFile = file(os.path.expanduser(file_name), 'w')
            confFile.write(parser.prettify())
            confFile.close()
        except IOError as e:
            return False
        return True
Example #9
0
 def add_code_template(cls, code_template):
     # save it
     from mosaicode.system import System as System
     System()
     path = System.get_user_dir() + "/extensions/"
     path = path + code_template.language + "/"
     CodeTemplatePersistence.save_xml(code_template, path)
Example #10
0
 def export_python(cls):
     from mosaicode.system import System as System
     System()
     ports = System.get_ports()
     for port in ports:
         path = System.get_user_dir() + "/extensions/"
         path = path + port.language + "/ports/"
         PortPersistence.save_python(ports[port])
Example #11
0
 def export_xml(cls):
     from mosaicode.system import System as System
     System()
     code_templates = System.get_code_templates()
     for code_template in code_templates:
         path = System.get_user_dir() + "/extensions/"
         path = path + code_template.language + "/"
         CodeTemplatePersistence.save_xml(code_templates[code_template])
Example #12
0
 def export_python(cls):
     from mosaicode.system import System
     System()
     blocks = System.get_blocks()
     for block in blocks:
         path = System.get_user_dir() + "/extensions/"
         path = path + block.language + "/" + block.framework + "/"
         BlockPersistence.save_python(blocks[block], path)
Example #13
0
 def add_code_template(cls, code_template):
     # save it
     from mosaicode.system import System as System
     System()
     path = os.path.join(System.get_user_dir(), "extensions")
     path = os.path.join(path, code_template.language)
     path = os.path.join(path, "codetemplates")
     CodeTemplatePersistence.save(code_template, path)
Example #14
0
 def export_xml(cls):
     from mosaicode.system import System as System
     System()
     ports = System.get_ports()
     for key in ports:
         path = System.get_user_dir()
         path = os.path.join(path, 'extensions', ports[key].language,
                             'ports')
         PortPersistence.save_xml(ports[key], path)
Example #15
0
 def export_xml(cls):
     from mosaicode.system import System as System
     System()
     code_templates = System.get_code_templates()
     for key in code_templates:
         path = System.get_user_dir()
         path = os.path.join(path, 'extensions',
                             code_templates[key].language, 'codetemplates')
         CodeTemplatePersistence.save_xml(code_templates[key], path)
Example #16
0
 def delete_plugin(cls, plugin):
     from mosaicode.system import System
     if plugin.source == "xml":
         data_dir = System.get_user_dir() + "/extensions/"
         file_name = data_dir + plugin.type + ".xml"
         os.remove(file_name)
         System.plugins.pop(plugin.type, None)
         return True
     else:
         return False
Example #17
0
 def import_extensions(self):
     import urllib.request
     url = "https://alice.dcomp.ufsj.edu.br/mosaicode/extensions/"
     resource_file = url + "resource.txt"
     # download and read resource list
     for line in urllib.request.urlopen(resource_file):
         file_name = line.decode('utf-8')
         # download zip file
         file_path = os.path.join(System.get_user_dir(), file_name)
         urllib.request.urlretrieve(url + file_name, file_path)
         # extract it
         zip_file = zipfile.ZipFile(file_path, 'r')
         destination = os.path.join(System.get_user_dir(), "extensions")
         zip_file.extractall(destination)            
     MessageDialog(
             "Success",
              "Extensions imported successfully!",
              self.main_window).run()
     System.reload()
Example #18
0
 def delete_block(cls, block):
     from mosaicode.system import System
     if block.source == "xml":
         data_dir = System.get_user_dir() + "/extensions/"
         file_name = data_dir + block.type + ".xml"
         os.remove(file_name)
         System.blocks.pop(block.type, None)
         return True
     else:
         return False
Example #19
0
 def add_new_block(cls, block):
     # Save it
     from mosaicode.system import System
     System()
     path = os.path.join(System.get_user_dir(),"extensions")
     path = os.path.join(path, block.language)
     path = os.path.join(path, "blocks")
     path = os.path.join(path, block.extension)
     path = os.path.join(path, block.group)
     BlockPersistence.save(block, path)
Example #20
0
    def save(cls, block):
        """
        This method save the block in user space.

        Returns:

            * **Types** (:class:`boolean<boolean>`)
        """
        from mosaicode.system import System
        block.source = "xml"
        parser = XMLParser()
        main = parser.addTag(tag_name)
        parser.setTagAttr(tag_name, 'type', block.type)
        parser.setTagAttr(tag_name, 'language', block.language)
        parser.setTagAttr(tag_name, 'framework', block.framework)

        parser.setTagAttr(tag_name, 'label', block.label)
        parser.setTagAttr(tag_name, 'group', block.group)
        parser.setTagAttr(tag_name, 'color', block.color)
        parser.setTagAttr(tag_name, 'help', block.help)
        parser.setTagAttr(tag_name, 'source', block.source)

        count = 0
        for code in block.codes:
            parser.appendToTag(tag_name, 'code' + str(count)).string = str(
                block.codes[count])
            count = count + 1

        parser.appendToTag(tag_name, 'properties')
        for key in block.properties:
            parser.appendToTag('properties', 'property', value=key)

        parser.appendToTag(tag_name, 'in_ports')
        for key in block.in_ports:
            parser.appendToTag('in_ports', 'port', value=key)

        parser.appendToTag(tag_name, 'out_ports')
        for key in block.out_ports:
            parser.appendToTag('out_ports', 'port', value=key)

        try:
            data_dir = System.get_user_dir() + "/extensions/"
            data_dir = data_dir + block.language + "/" + block.framework + "/"
            if not os.path.isdir(data_dir):
                try:
                    os.makedirs(data_dir)
                except:
                    pass
            file_name = data_dir + block.type + ".xml"
            block_file = file(os.path.expanduser(file_name), 'w')
            block_file.write(parser.getXML())
            block_file.close()
        except IOError as e:
            return False
        return True
Example #21
0
 def export_port(cls, output):
     from mosaicode.system import System as System
     System()
     ports = System.get_ports()
     for port in ports:
         path = System.get_user_dir() + "/extensions/"
         path = path + port.language + "/ports/"
         if output == "xml":
             PortPersistence.save_xml(ports[port], path)
         else:
             PortPersistence.save_python(ports[port])
Example #22
0
 def export_block(cls, output):
     from mosaicode.system import System as System
     System()
     blocks = System.get_blocks()
     for block in blocks:
         path = System.get_user_dir() + "/extensions/"
         path = path + block.language + "/" + block.framework + "/"
         if output == "xml":
             BlockPersistence.save_xml(blocks[block], path)
         else:
             BlockPersistence.save_python(blocks[block], path)
Example #23
0
 def delete_port(cls, port_key):
     from mosaicode.system import System
     port = System.ports[port_key]
     if port.source == "xml":
         data_dir = System.get_user_dir() + "/extensions/"
         file_name = data_dir + port.type + ".xml"
         os.remove(file_name)
         System.ports.pop(port_key, None)
         return True
     else:
         return False
Example #24
0
 def select_open(self):
     """
     This method open a selected file.
     """
     file_name = Dialog().open_dialog("Open Diagram",
                                      self.main_window,
                                      filetype="mscd",
                                      path=System.get_user_dir())
     if file_name is None or file_name == "":
         return
     self.open(file_name)
 def delete_code_template(cls, code_template_key):
     from mosaicode.system import System
     code_template = System.code_templates[code_template_key]
     if code_template.source == "xml":
         data_dir = System.get_user_dir() + "/extensions/"
         file_name = data_dir + code_template.type + ".xml"
         os.remove(file_name)
         System.code_templates.pop(code_template_key, None)
         return True
     else:
         return False
Example #26
0
    def set_recent_files(self, file_name):
        if file_name in System.get_preferences().recent_files:
            System.get_preferences().recent_files.remove(file_name)
        System.get_preferences().recent_files.insert(0, file_name)
        if len(System.get_preferences().recent_files) > 10:
            System.get_preferences().recent_files.pop()
        self.main_window.menu.update_recent_files(
            System.get_preferences().recent_files)

        PreferencesPersistence.save(System.get_preferences(),
                                    System.get_user_dir())
Example #27
0
    def export_xml(cls):
        from mosaicode.system import System as System
        System()
        blocks = System.get_blocks()

        for key in blocks:
            path = System.get_user_dir()
            path = os.path.join(path, 'extensions', blocks[key].language,
                                'block', blocks[key].extension,
                                blocks[key].group)

            BlockPersistence.save_xml(blocks[key], path)
Example #28
0
 def export_code_template(cls, output):
     from mosaicode.system import System as System
     System()
     code_templates = System.get_code_templates()
     for code_template in code_templates:
         path = System.get_user_dir() + "/extensions/"
         path = path + code_template.language + "/"
         if output == "xml":
             CodeTemplatePersistence.save_xml(code_templates[code_template])
         else:
             CodeTemplatePersistence.save_python(
                 code_templates[code_template], path)
Example #29
0
    def exit(self, widget=None, data=None):
        """
        This method close main window.

        Returns:

            * **Types** (:class:`boolean<boolean>`)
        """
        PreferencesPersistence.save(System.properties, System.get_user_dir())
        if self.main_window.work_area.close_tabs():
            Gtk.main_quit()
        else:
            return True
Example #30
0
 def select_open(self, path=None):
     """
     This method open a selected file.
     """
     if path is None:
         path = System.get_user_dir()
     self.open_dialog = OpenDialog("Open Diagram",
                                   self.main_window,
                                   filetype="mscd",
                                   path=path)
     file_name = self.open_dialog.run()
     if file_name is None or file_name == "":
         return
     self.open(file_name)