def __init__(self, plugins_table_widget: "PluginsTableWidget", parent=None):
        super().__init__(parent)

        self.setWindowTitle("Plugin Manager")

        self.__plugins_table_widget = plugins_table_widget
        self.__plugins_table_widget.setParent(self)

        self.__actions_output_textarea = LoggerTextboxFactory(
            formatter=logging.Formatter(
                "%(asctime)s - %(levelname)s: %(message)s", "%H:%M:%S"
            ),
            parent=self,
        )
        log.get_logger("plugins").addHandler(self.__actions_output_textarea)

        self.__main_layout = QVBoxLayout()

        actions_output_group = QGroupBox("Commands output")
        actions_output_layout = QVBoxLayout()
        actions_output_layout.addWidget(self.__actions_output_textarea)
        actions_output_group.setLayout(actions_output_layout)

        self.__main_layout.addWidget(self.__plugins_table_widget)
        self.__main_layout.addWidget(actions_output_group)

        self.setLayout(self.__main_layout)
Exemple #2
0
def test_init_with_log_level(namespace, expected_log_level):
    namespace.loglevel = expected_log_level
    log.init_logs(namespace)

    assert log.get_log_level() == getattr(log, expected_log_level)

    assert log.get_logger("test").level == log.get_log_level()
    def setData(self,
                index: "QModelIndex",
                value: Any,
                role: int = Qt.EditRole) -> bool:
        if not index.isValid():
            return False

        plugin: "Plugin" = index.internalPointer()

        if role == Qt.CheckStateRole:
            if index.column() == self.ColumnLabel.Active:
                plugin.active = bool(value)

                log.get_logger("plugins").info(
                    f'Plugin "{plugin.name}" has been '
                    f"{'activated' if plugin.active else 'deactivated'}.")

        return True
Exemple #4
0
    def __start_dragging_connection(self, event: "QMouseEvent"):
        """Starts creating a new connection by dragging the mouse.

        Only works when the user clicks on a GraphicsPort item.

        Args:
            event: Mouse event.
        """
        item: "GraphicsPort" = self.__item_clicked_on(event)

        if isinstance(item, GraphicsConnection):
            distance_to_start = (
                item.start_graphics_port.pos() -
                self.mapToScene(event.pos())).manhattanLength()
            distance_to_end = (item.end_graphics_port.pos() -
                               self.mapToScene(event.pos())).manhattanLength()

            if distance_to_start < distance_to_end:
                end_graphics_port = item.end_graphics_port
                item.end = self.mapToScene(event.pos())
                item.start_graphics_port = end_graphics_port
            else:
                item.end = self.mapToScene(event.pos())

            GraphicsPortPainter.drawing_state = GraphicsPortPainter.DrawingState.Target
            GraphicsPortPainter.target_port_type = item.start_graphics_port.port_type
            self.scene().update()

            self.__new_connection = item
            return

        elif isinstance(item, GraphicsPort):
            log.get_logger(__name__).debug("Start dragging")

            self.__new_connection = self.__create_new_connection()
            self.__new_connection.start_graphics_port = item
            self.__new_connection.end = self.mapToScene(event.pos())

            GraphicsPortPainter.drawing_state = GraphicsPortPainter.DrawingState.Target
            GraphicsPortPainter.target_port_type = item.port_type
            self.scene().update()
            return

        super().mousePressEvent(event)
Exemple #5
0
def test_log_on_end():
    logger = log.get_logger("test")

    @log.log_on_end(log.INFO, message="Log end", logger=logger)
    def fun():
        pass

    with mock.patch.object(logger, "log") as mock_log:
        fun()

        mock_log.assert_called_once_with(log.INFO, "Log end")
Exemple #6
0
def test_log_on_error():
    logger = log.get_logger("test")

    @log.log_on_error(log.ERROR,
                      on_exceptions=(IndexError),
                      message="Error message",
                      logger=logger)
    def fun():
        raise IndexError()

    with mock.patch.object(logger, "log") as mock_log:
        with pytest.raises(IndexError):
            fun()

        mock_log.assert_called_once_with(log.ERROR, "Error message")
Exemple #7
0
def test_log_on_exception():
    logger = log.get_logger("test")

    @log.log_exception(
        on_exceptions=(IndexError),
        message="Exception message",
        logger=logger,
    )
    def fun():
        raise IndexError()

    with mock.patch.object(logger, "exception") as mock_log_exception:
        with pytest.raises(IndexError):
            fun()

        mock_log_exception.assert_called_once_with("Exception message")
Exemple #8
0
import os
from typing import List

import dependency_injector.providers as providers
from dial_core.utils import log

LOGGER = log.get_logger(__name__)

from PySide2.QtUiTools import loadUiType
from PySide2.QtWidgets import (
    QCheckBox,
    QFileDialog,
    QFormLayout,
    QGroupBox,
    QHBoxLayout,
    QLineEdit,
    QPushButton,
    QVBoxLayout,
    QWidget,
)

current_dir = os.path.dirname(os.path.abspath(__file__))
Form, Base = loadUiType(os.path.join(current_dir, "./Dummy.ui"))


class DummyWidget(Form, Base):
    def __init__(self, parent: QWidget = None):
        super().__init__(parent)
        self.setupUi(self)

        self.myButton.clicked.connect(self.onClickMyButton)