Esempio n. 1
0
    def __init__(self, uifile):
        """ Method to initialize the base window.

        Parameters
        ----------
        uifile: str (mandatory)
            a filename containing the user interface description.
        """
        self.ui = qt_backend.loadUi(uifile)
Esempio n. 2
0
    def __init__(self, uifile):
        """ Method to initialize the base window.

        Parameters
        ----------
        uifile: str (mandatory)
            a filename containing the user interface description.
        """
        self.ui = qt_backend.loadUi(uifile)
Esempio n. 3
0
    def __init__(self, pipeline, ui_file=None, record_file=None, parent=None):
        super(CapsulLinkDebuggerView, self).__init__(parent)

        # load the user interface window
        if ui_file is None:
            ui_file = os.path.join(os.path.dirname(__file__),
                                   "links_debugger.ui")

        self.ui = qt_backend.loadUi(ui_file)
        self.ui.help.hide()
        self.ui.help.setParent(None)
        self.help_geom = None
        table_header = self.ui.links_table.horizontalHeader()
        table_header.setResizeMode(QtGui.QHeaderView.ResizeToContents)
        table_header_v = self.ui.links_table.verticalHeader()
        table_header_v.setResizeMode(QtGui.QHeaderView.ResizeToContents)

        if record_file is None:
            record_file_s = tempfile.mkstemp()
            record_file = record_file_s[1]
            os.close(record_file_s[0])
            print('temporary record file:', record_file)

            class AutoDeleteFile(object):
                def __init__(self, record_file):
                    self.record_file = record_file

                def __del__(self):
                    try:
                        os.unlink(self.record_file)
                    except OSError:
                        pass

            self._autodelete_record_file = AutoDeleteFile(record_file)

        self.record_file = record_file
        self.pipeline = None
        self.set_pipeline(pipeline)
        self.update_links_view()
        self.ui.links_table.cellClicked.connect(self.activateCell)
        self.ui.actionPrevious.activated.connect(self.go_previous_line)
        self.ui.actionNext.activated.connect(self.go_next_line)
        self.ui.actionFollow.activated.connect(self.go_follow_link)
        self.ui.actionRefresh.activated.connect(self.update_links_view)
        self.ui.actionClear.activated.connect(self.clear_view)
        self.ui.actionHelp.activated.connect(self.help)
Esempio n. 4
0
    def __init__(self, pipeline, ui_file=None, record_file=None, parent=None):
        super(CapsulLinkDebuggerView, self).__init__(parent)

        # load the user interface window
        if ui_file is None:
            ui_file = os.path.join(
                os.path.dirname(__file__), "links_debugger.ui")

        self.ui = qt_backend.loadUi(ui_file)
        self.ui.help.hide()
        self.ui.help.setParent(None)
        self.help_geom = None
        table_header = self.ui.links_table.horizontalHeader()
        table_header.setResizeMode(QtGui.QHeaderView.ResizeToContents)
        table_header_v = self.ui.links_table.verticalHeader()
        table_header_v.setResizeMode(QtGui.QHeaderView.ResizeToContents)

        if record_file is None:
            record_file_s = tempfile.mkstemp()
            record_file = record_file_s[1]
            os.close(record_file_s[0])
            print('temporary record file:', record_file)
            class AutoDeleteFile(object):
                def __init__(self, record_file):
                    self.record_file = record_file
                def __del__(self):
                    try:
                        os.unlink(self.record_file)
                    except:
                        pass
            self._autodelete_record_file = AutoDeleteFile(record_file)

        self.record_file = record_file
        self.pipeline = None
        self.set_pipeline(pipeline)
        self.update_links_view()
        self.ui.links_table.cellClicked.connect(self.activateCell)
        self.ui.actionPrevious.activated.connect(self.go_previous_line)
        self.ui.actionNext.activated.connect(self.go_next_line)
        self.ui.actionFollow.activated.connect(self.go_follow_link)
        self.ui.actionRefresh.activated.connect(self.update_links_view)
        self.ui.actionClear.activated.connect(self.clear_view)
        self.ui.actionHelp.activated.connect(self.help)
Esempio n. 5
0
    def __init__(self, pipeline, ui_file=None, record_file=None,
                 developper_view=None, parent=None):
        """ Initialize the ActivationInspector class.

        Parameters
        ----------
        pipeline: capsul.Pipeline (mandatory)
            the pipeline we want to inspect.
        ui_file: str (optional)
            the path to the qt user interface description file.
            If not specified, it will find its standard one.
        record_file: str (optional)
            a file path where the activation steps are recorded.
            If not specified (None), it will create a temporary file.
        developper_view: PipelineDevelopperView (optional)
            if specified it is possible to click on a plug to set a filter
            pattern and to update the pipeline activation accordingly.
        """
        # Inheritance: create the application
        QtGui.QWidget.__init__(self, parent)

        # load the user interface window
        if ui_file is None:
            ui_file = os.path.join(
                os.path.dirname(__file__), "activation_inspector.ui")

        self.ui = qt_backend.loadUi(ui_file)

        # Define dynamic controls
        self.controls = {
            QtGui.QListWidget: ["events"],
            QtGui.QPushButton: ["btnUpdate", "next", "previous"],
            QtGui.QLineEdit: ["pattern"]
        }

        if record_file is None:
            record_file_s = tempfile.mkstemp()
            record_file = record_file_s[1]
            os.close(record_file_s[0])
            print('temporary record file:', record_file)
            class AutoDeleteFile(object):
                def __init__(self, record_file):
                    self.record_file = record_file
                def __del__(self):
                    try:
                        os.unlink(self.record_file)
                    except:
                        pass
            self._autodelete_record_file = AutoDeleteFile(record_file)

        # Add ui class parameter with the dynamic controls and initialize
        # default values
        self.add_controls_to_ui()

        # Store class parameters
        self.pipeline = pipeline
        self.record_file = record_file
        self.developper_view = developper_view

        # Set the pipeline record file if folder exists
        if os.path.isdir(os.path.dirname(self.record_file)):
            self.pipeline._debug_activations = self.record_file
        else:
            raise ValueError(
                "The record file '{0}' can't be created since the "
                "base directory does not exists.".format(self.record_file))

        # Execute the pipeline activation method
        self.pipeline.update_nodes_and_plugs_activation()

        # Refresh the pipeline activation displayed list
        self.refresh_activation_from_record()

        # Signals for window interface
        self.ui.events.currentRowChanged.connect(
            self.update_pipeline_activation)
        self.ui.btnUpdate.clicked.connect(
            self.refresh_activation_from_record)
        self.ui.next.clicked.connect(self.find_next)
        self.ui.previous.clicked.connect(self.find_previous)

        # Dynamically select a filter rule by clicking on the pipeline view
        # plugs
        if developper_view is not None:
          developper_view.plug_clicked.connect(self.set_filter_pattern)
    def __init__(self, pipeline, ui_file=None, record_file=None,
                 developper_view=None, parent=None):
        """ Initialize the ActivationInspector class.

        Parameters
        ----------
        pipeline: capsul.Pipeline (mandatory)
            the pipeline we want to inspect.
        ui_file: str (optional)
            the path to the qt user interface description file.
            If not specified, it will find its standard one.
        record_file: str (optional)
            a file path where the activation steps are recorded.
            If not specified (None), it will create a temporary file.
        developper_view: PipelineDevelopperView (optional)
            if specified it is possible to click on a plug to set a filter
            pattern and to update the pipeline activation accordingly.
        """
        # Inheritance: create the application
        QtGui.QWidget.__init__(self, parent)

        # load the user interface window
        if ui_file is None:
            ui_file = os.path.join(
                os.path.dirname(__file__), "activation_inspector.ui")

        self.ui = qt_backend.loadUi(ui_file)

        # Define dynamic controls
        self.controls = {
            QtGui.QListWidget: ["events"],
            QtGui.QPushButton: ["btnUpdate", "next", "previous"],
            QtGui.QLineEdit: ["pattern"]
        }

        if record_file is None:
            record_file_s = tempfile.mkstemp()
            record_file = record_file_s[1]
            os.close(record_file_s[0])
            print 'temporary record file:', record_file
            class AutoDeleteFile(object):
                def __init__(self, record_file):
                    self.record_file = record_file
                def __del__(self):
                    try:
                        os.unlink(self.record_file)
                    except:
                        pass
            self._autodelete_record_file = AutoDeleteFile(record_file)

        # Add ui class parameter with the dynamic controls and initialize
        # default values
        self.add_controls_to_ui()

        # Store class parameters
        self.pipeline = pipeline
        self.record_file = record_file
        self.developper_view = developper_view

        # Set the pipeline record file if folder exists
        if os.path.isdir(os.path.dirname(self.record_file)):
            self.pipeline._debug_activations = self.record_file
        else:
            raise ValueError(
                "The record file '{0}' can't be created since the "
                "base directory does not exists.".format(self.record_file))

        # Execute the pipeline activation method
        self.pipeline.update_nodes_and_plugs_activation()

        # Refresh the pipeline activation displayed list
        self.refresh_activation_from_record()

        # Signals for window interface
        self.ui.events.currentRowChanged.connect(
            self.update_pipeline_activation)
        self.ui.btnUpdate.clicked.connect(
            self.refresh_activation_from_record)
        self.ui.next.clicked.connect(self.find_next)
        self.ui.previous.clicked.connect(self.find_previous)

        # Dynamically select a filter rule by clicking on the pipeline view
        # plugs
        if developper_view is not None:
          developper_view.plug_clicked.connect(self.set_filter_pattern)