Ejemplo n.º 1
0
    def _new_paradigm(self, project, category=None, dtype=None, name=None):
        klass = DataClass(MimeType(name=dtype))
        if name is None:
            # Builtin default name for some categories
            if category in ['startup', 'lib']:
                d = {'startup': 'start.py', 'lib': 'algo.py'}
                name = d[category]
            else:
                # If category defined, use it in name
                if category:
                    name = '%s_%s.%s' % (klass.default_name.lower(), category.lower(), klass.extension)
                else:
                    name = 'file.%s' % klass.extension

        # Change extension to fit dtype (case name is given with wrong extension)
        parts = name.split('.')
        parts[-1] = klass.extension
        default_name = '.'.join(parts)

        if category:
            categories = [category]
        else:
            categories = project.categories.keys()

        # Show dialog
        w = ParadigmInfoSelector(default_name, categories, [dtype],
                                 project=project)
        dialog = ModalDialog(w)
        w.validity_changed.connect(dialog.set_valid)
        dialog.set_valid(w.is_valid())
        if dialog.exec_():
            name = w.name()
            category = w.category()
            dtype = w.dtype()
            p = project.path / category / name
            if p.exists():
                project.add(category, path=p)
            else:
                project.add(category, filename=name, content="", dtype=dtype)
            self.item_added.emit(project, category, name)