예제 #1
0
    def __init__(self, name, path, parent, project_info):
        super().__init__(project_info, name, parent)
        self.path = os.path.join(path, name, name + '.py')
        self.file_system_operator = FileSystemOperator(self.path, self.project_info.parent)
        self._set_icon(False)

        self.add_target_items()
예제 #2
0
class DocumentationItemChild(BaseFolderItem):
    '''
    DocumentationItemChild is the presentation of a file
    '''
    def __init__(self, name, path, parent, project_info):
        super().__init__(name, path, project_info, parent=parent)
        _, extension = os.path.splitext(name)
        self._set_icon(extension)
        self.file_system_operator = FileSystemOperator(self.path, project_info.parent)

    def update_item(self, path):
        self.path = path
        self.setText(os.path.basename(path))
        self.file_system_operator(path)

    def rename_item(self):
        self.file_system_operator.rename()

    def delete_item(self):
        self.file_system_operator.delete_file()

    def move_item(self):
        self.file_system_operator.move()

    def _get_menu_items(self):
        return [MenuActionTypes.Rename(),
                MenuActionTypes.Move(),
                None,
                MenuActionTypes.Delete()]
예제 #3
0
class DocumentationItemChild(BaseDocumentationItem):
    '''
    DocumentationItemChild is the presentation of a file
    '''
    def __init__(self, name, path, parent, is_editable=True, project_info=None):
        super().__init__(name, path, parent)
        _, extension = os.path.splitext(name)
        self._set_icon(extension)
        self.file_system_operator = FileSystemOperator(self.path)

    def update_item(self, path):
        self.path = path
        self.setText(os.path.basename(path))
        self.file_system_operator(path)

    def rename_item(self):
        self.file_system_operator.rename()

    def delete_item(self):
        self.file_system_operator.delete_file()

    def move_item(self):
        self.file_system_operator.move()

    def _set_icon(self, extension):
        icon = self._get_icon(extension)
        if icon is None:
            return

        self.setIcon(icon)

    def _get_icon(self, extension):
        from ATE.spyder.widgets.actions_on.documentation.FileIcon import FileIcons
        from ATE.spyder.widgets.actions_on.documentation.Constants import FileIconTypes
        for name, member in FileIconTypes.__members__.items():
            if extension in member():
                return FileIcons[name]

        return None

    def _get_menu_items(self):
        return [MenuActionTypes.Rename(),
                MenuActionTypes.Move(),
                None,
                MenuActionTypes.Delete()]
예제 #4
0
 def __init__(self, name, path, parent=None, is_editable=True, project_info=None):
     self._is_editable = is_editable
     super().__init__(name, path, parent)
     self._set_icon()
     self.file_system_operator = FileSystemOperator(self.path)
예제 #5
0
 def __init__(self, name, path, parent, is_editable=True, project_info=None):
     super().__init__(name, path, parent)
     _, extension = os.path.splitext(name)
     self._set_icon(extension)
     self.file_system_operator = FileSystemOperator(self.path)
예제 #6
0
class DocumentationItem(BaseDocumentationItem):
    '''
    DocumentationItem is the presentation of a folder
    '''
    def __init__(self, name, path, parent=None, is_editable=True, project_info=None):
        self._is_editable = is_editable
        super().__init__(name, path, parent)
        self._set_icon()
        self.file_system_operator = FileSystemOperator(self.path)

    def update_item(self, path):
        self.path = path
        self.setText(os.path.basename(path))
        self.file_system_operator(path)

    def add_dir_item(self, name, path, index=0):
        if self._does_item_already_exist(name):
            return

        is_editable = True
        if name in ('audits', 'exports'):
            is_editable = False

        item = DocumentationItem(name, path, parent=self, is_editable=is_editable)
        self.insertRow(index, item)

    def add_file_item(self, name, path, index=0):
        if self._does_item_already_exist(name):
            return

        item = DocumentationItemChild(name, path, self)
        self.insertRow(index, item)

    # copying directories recursively (import) does fire _on_file_created and _on_dir_created event multiple times
    # using this function we prevent creating same item multiple times
    def _does_item_already_exist(self, name):
        for index in range(self.rowCount()):
            if self.child(index).text() == name:
                return True

        return False

    def import_folder_item(self):
        self.file_system_operator.import_dir()

    def import_file_item(self):
        self.file_system_operator.import_file()

    def delete_item(self):
        self.file_system_operator.delete_dir()

    def rename_item(self):
        self.file_system_operator.rename()

    def move_item(self):
        self.file_system_operator.move()

    def add_file__item(self):
        self.file_system_operator.add_file()

    def add_folder_item(self):
        self.file_system_operator.add_dir()

    def _set_icon(self):
        if self.text() == 'documentation':
            return

        from ATE.spyder.widgets.actions_on.documentation.FileIcon import FileIcons
        from ATE.spyder.widgets.actions_on.documentation.Constants import FileIconTypes
        self.setIcon(FileIcons[FileIconTypes.FOLDER.name])

    def _get_menu_items(self):
        return [MenuActionTypes.Rename(),
                MenuActionTypes.Move(),
                None,
                MenuActionTypes.DeleteFile()]

    def exec_context_menu(self):
        self.menu = QtWidgets.QMenu()
        self.menu.addMenu(self._generate_new_menu_actions(self.menu))
        self.menu.addMenu(self._generate_import_menu_actions(self.menu))

        if self._is_editable:
            from ATE.spyder.widgets.actions_on.model.Actions import ACTIONS

            for action_type in self._get_menu_items():
                if not action_type:
                    self.menu.addSeparator()
                    continue

                action = ACTIONS[action_type]
                action = self.menu.addAction(action[0], action[1])
                action.triggered.connect(getattr(self, action_type))

        self.menu.exec_(QtGui.QCursor.pos())

    def _generate_new_menu_actions(self, parent):
        new_menu = QtWidgets.QMenu('New', parent)
        import qtawesome as qta
        new_menu.setIcon(qta.icon('mdi.plus', color='orange'))

        new_file = QtWidgets.QAction(ACTIONS[MenuActionTypes.AddFile()][1], new_menu)
        new_file.setIcon(ACTIONS[MenuActionTypes.AddFile()][0])
        new_file.triggered.connect(self.add_file__item)

        new_folder = QtWidgets.QAction(ACTIONS[MenuActionTypes.AddFolder()][1], new_menu)
        new_folder.setIcon(ACTIONS[MenuActionTypes.AddFolder()][0])
        new_folder.triggered.connect(self.add_folder_item)

        new_menu.addAction(new_file)
        new_menu.addAction(new_folder)

        return new_menu

    def _generate_import_menu_actions(self, parent):
        menu_action = QtWidgets.QMenu('Import', parent)
        import qtawesome as qta
        menu_action.setIcon(qta.icon('mdi.application-import', color='orange'))

        import_file = QtWidgets.QAction(ACTIONS[MenuActionTypes.AddFile()][1], parent)
        import_file.setIcon(ACTIONS[MenuActionTypes.ImportFile()][0])
        import_file.triggered.connect(self.import_file_item)

        import_folder = QtWidgets.QAction(ACTIONS[MenuActionTypes.AddFolder()][1], parent)
        import_folder.setIcon(ACTIONS[MenuActionTypes.ImportFolder()][0])
        import_folder.triggered.connect(self.import_folder_item)

        menu_action.addAction(import_file)
        menu_action.addAction(import_folder)

        return menu_action
예제 #7
0
 def __init__(self, name, path, project_info, parent=None):
     super().__init__(project_info, name, parent)
     self.path = path
     self.file_system_operator = FileSystemOperator(
         self.path, self.project_info.parent)
예제 #8
0
class BaseFolderItem(BaseItem):
    def __init__(self, name, path, project_info, parent=None):
        super().__init__(project_info, name, parent)
        self.path = path
        self.file_system_operator = FileSystemOperator(
            self.path, self.project_info.parent)

    def import_folder_item(self):
        self.file_system_operator.import_dir()

    def import_file_item(self):
        self.file_system_operator.import_file()

    def delete_item(self):
        self.file_system_operator.delete_dir()

    def rename_item(self):
        self.file_system_operator.rename()

    def move_item(self):
        self.file_system_operator.move()

    def add_file__item(self):
        self.file_system_operator.add_file()

    def add_folder_item(self):
        self.file_system_operator.add_dir()

    def _set_icon(self, extension):
        icon = self._get_icon(extension)
        if icon is None:
            return

        self.setIcon(icon)

    @staticmethod
    def _get_icon(extension):
        from ATE.spyder.widgets.actions_on.documentation.FileIcon import FileIcons
        from ATE.spyder.widgets.actions_on.documentation.Constants import FileIconTypes
        for name, member in FileIconTypes.__members__.items():
            if extension in member():
                return FileIcons[name]

        return None
예제 #9
0
 def __init__(self, project_info, name, path, parent=None):
     self.observer = None
     super().__init__(project_info, name, parent)
     self._is_enabled = False
     self.set_children_hidden(True)
     self.file_system_operator = FileSystemOperator(path, project_info.parent)
예제 #10
0
 def update_item(self, path):
     name = os.path.basename(os.path.splitext(path)[0])
     self.path = path
     self.setText(name)
     self.file_system_operator = FileSystemOperator(self.path, self.project_info.parent)
예제 #11
0
 def __init__(self, name, path, parent, project_info):
     super().__init__(name, path, project_info, parent=parent)
     _, extension = os.path.splitext(name)
     self._set_icon(extension)
     self.file_system_operator = FileSystemOperator(self.path, project_info.parent)