예제 #1
0
class ProjectLoader(object):
    def __init__(self, project_file_ext):
        self.project_reader = ProjectReader(project_file_ext)
        self.workspace_loader = WorkspaceLoader()
        self.plot_loader = PlotsLoader()
        self.decoder_factory = DecoderFactory()
        self.project_file_ext = project_file_ext

    def load_project(self, file_name, load_workspaces=True):
        """
        Will load the project in the given file_name
        :param file_name: String or string castable object; the file_name of the project
        :param load_workspaces: Bool; True if you want ProjectLoader to handle loading workspaces else False.
        :return: Bool; True if all workspace loaded successfully, False if not loaded successfully.
        """
        # It can be expected that if at this point it is NoneType that it's an error
        if file_name is None:
            return

        # Read project
        self.project_reader.read_project(file_name)

        directory = os.path.dirname(file_name)
        # Load in the workspaces
        if load_workspaces:
            self.workspace_loader.load_workspaces(
                directory=directory,
                workspaces_to_load=self.project_reader.workspace_names)

        workspace_success = _confirm_all_workspaces_loaded(
            workspaces_to_confirm=self.project_reader.workspace_names)

        if workspace_success:
            # Load plots
            if self.project_reader.plot_list is not None:
                self.plot_loader.load_plots(self.project_reader.plot_list)

            # Load interfaces
            if self.project_reader.interface_list is not None:
                self.load_interfaces(directory=directory)

        return workspace_success

    def load_interfaces(self, directory):
        for interface in self.project_reader.interface_list:
            # Find decoder
            decoder = self.decoder_factory.find_decoder(interface["tag"])

            # Decode and Show the interface
            try:
                decoded_interface = decoder.decode(interface, directory)
                decoded_interface.show()
            except Exception as e:
                # Catch any exception and log it for the encoder
                if isinstance(e, KeyboardInterrupt):
                    raise
                logger.warning(
                    "Project Loader: An interface could not be loaded error: "
                    + str(e))
예제 #2
0
class ProjectLoader(object):
    def __init__(self, project_file_ext):
        self.project_reader = ProjectReader(project_file_ext)
        self.workspace_loader = WorkspaceLoader()
        self.plot_loader = PlotsLoader()
        self.decoder_factory = DecoderFactory()
        self.project_file_ext = project_file_ext

    def load_project(self, file_name, load_workspaces=True):
        """
        Will load the project in the given file_name
        :param file_name: String or string castable object; the file_name of the project
        :param load_workspaces: Bool; True if you want ProjectLoader to handle loading workspaces else False.
        :return: Bool; True if all workspace loaded successfully, False if not loaded successfully.
        """
        # It can be expected that if at this point it is NoneType that it's an error
        if file_name is None:
            return

        # Read project
        self.project_reader.read_project(file_name)

        directory = os.path.dirname(file_name)
        # Load in the workspaces
        if load_workspaces:
            self.workspace_loader.load_workspaces(directory=directory,
                                                  workspaces_to_load=self.project_reader.workspace_names)

        workspace_success = _confirm_all_workspaces_loaded(workspaces_to_confirm=self.project_reader.workspace_names)

        if workspace_success:
            # Load plots
            if self.project_reader.plot_list is not None:
                self.plot_loader.load_plots(self.project_reader.plot_list)

            # Load interfaces
            if self.project_reader.interface_list is not None:
                self.load_interfaces(directory=directory)

        return workspace_success

    def load_interfaces(self, directory):
        for interface in self.project_reader.interface_list:
            # Find decoder
            decoder = self.decoder_factory.find_decoder(interface["tag"])

            # Decode and Show the interface
            try:
                decoded_interface = decoder.decode(interface, directory)
                decoded_interface.show()
            except Exception as e:
                # Catch any exception and log it for the encoder
                if isinstance(e, KeyboardInterrupt):
                    raise
                logger.warning("Project Loader: An interface could not be loaded error: " + str(e))
예제 #3
0
 def __init__(self, project_file_ext):
     self.project_reader = ProjectReader(project_file_ext)
     self.workspace_loader = WorkspaceLoader()
     self.plot_loader = PlotsLoader()
     self.decoder_factory = DecoderFactory()
     self.project_file_ext = project_file_ext
예제 #4
0
# Mantid Repository : https://github.com/mantidproject/mantid
#
# Copyright © 2018 ISIS Rutherford Appleton Laboratory UKRI,
#     NScD Oak Ridge National Laboratory, European Spallation Source
#     & Institut Laue - Langevin
# SPDX - License - Identifier: GPL - 3.0 +
#  This file is part of the mantid workbench.

from mantidqt.widgets.workspacedisplay.status_bar_view import StatusBarView
from mantidqt.widgets.workspacedisplay.matrix.presenter import MatrixWorkspaceDisplay
from mantidqt.widgets.workspacedisplay.matrix.io import MatrixWorkspaceDisplayDecoder, MatrixWorkspaceDisplayEncoder
from mantidqt.project.encoderfactory import EncoderFactory
from mantidqt.project.decoderfactory import DecoderFactory


def compatible_check_for_encoder(obj, _):
    return isinstance(obj, StatusBarView) and isinstance(
        obj.presenter, MatrixWorkspaceDisplay)


EncoderFactory.register_encoder(MatrixWorkspaceDisplayEncoder,
                                compatible_check_for_encoder)
DecoderFactory.register_decoder(MatrixWorkspaceDisplayDecoder)
예제 #5
0
 def test_find_decoder_can_find_an_decoder(self):
     self.assertNotEqual(None, DecoderFactory.find_decoder("InstrumentView"))
예제 #6
0
 def setUp(self):
     DecoderFactory.register_decoder(InstrumentViewEncoder)
예제 #7
0
 def test_find_decoder_can_find_an_decoder(self):
     self.assertNotEqual(None,
                         DecoderFactory.find_decoder("InstrumentView"))
예제 #8
0
# Mantid Repository : https://github.com/mantidproject/mantid
#
# Copyright © 2018 ISIS Rutherford Appleton Laboratory UKRI,
#     NScD Oak Ridge National Laboratory, European Spallation Source
#     & Institut Laue - Langevin
# SPDX - License - Identifier: GPL - 3.0 +
#  This file is part of the mantidqt package.
from mantidqt.project.decoderfactory import DecoderFactory
from mantidqt.project.encoderfactory import EncoderFactory
from mantidqt.widgets.workspacedisplay.status_bar_view import StatusBarView
from mantidqt.widgets.workspacedisplay.table.io import TableWorkspaceDisplayDecoder, TableWorkspaceDisplayEncoder
from mantidqt.widgets.workspacedisplay.table.presenter import TableWorkspaceDisplay


def compatible_check_for_encoder(obj, _):
    return isinstance(obj, StatusBarView) and isinstance(obj.presenter, TableWorkspaceDisplay)


DecoderFactory.register_decoder(TableWorkspaceDisplayDecoder)
EncoderFactory.register_encoder(TableWorkspaceDisplayEncoder, compatible_check_for_encoder)
예제 #9
0
#
#
"""
You can run this widget independently by for example:

    from mantidqt.widgets.instrumentview.presenter import InstrumentView
    from mantid.simpleapi import Load
    from qtpy.QtWidgets import QApplication

    ws=Load('CNCS_7860')

    app = QApplication([])
    window = InstrumentView(ws)
    app.exec_()
"""
from __future__ import (absolute_import, unicode_literals)

# 3rdparty imports
from qtpy import PYQT4

from mantidqt.project.decoderfactory import DecoderFactory
from mantidqt.project.encoderfactory import EncoderFactory
from mantidqt.widgets.instrumentview.io import InstrumentViewDecoder, InstrumentViewEncoder

if PYQT4:
    raise ImportError("Instrument view requires Qt >= v5")

# Add encoder and decoders to the relevant factory
DecoderFactory.register_decoder(InstrumentViewDecoder)
EncoderFactory.register_encoder(InstrumentViewEncoder)
예제 #10
0
 def test_decoder_is_in_decoder_factory(self):
     # Shows that the decoder has been registered on import of something from mantidqt.widget.instrumentview
     found_decoder = DecoderFactory.find_decoder("InstrumentView")
     self.assertIs(InstrumentViewDecoder, found_decoder.__class__)
# Mantid Repository : https://github.com/mantidproject/mantid
#
# Copyright © 2020 ISIS Rutherford Appleton Laboratory UKRI,
#   NScD Oak Ridge National Laboratory, European Spallation Source,
#   Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
# SPDX - License - Identifier: GPL - 3.0 +
from mantidqt.project.decoderfactory import DecoderFactory
from mantidqt.project.encoderfactory import EncoderFactory
from mantidqtinterfaces.Engineering.gui.engineering_diffraction.engineering_diffraction import EngineeringDiffractionGui
from mantidqtinterfaces.Engineering.gui.engineering_diffraction.engineering_diffraction_io import EngineeringDiffractionEncoder, \
    EngineeringDiffractionDecoder


def compatible_check_for_encoder(obj, _):
    return isinstance(obj, EngineeringDiffractionGui)


DecoderFactory.register_decoder(EngineeringDiffractionDecoder)
EncoderFactory.register_encoder(EngineeringDiffractionEncoder,
                                compatible_check_for_encoder)
예제 #12
0
#
"""
You can run this widget independently by for example:

    from mantidqt.widgets.instrumentview.presenter import InstrumentView
    from mantid.simpleapi import Load
    from qtpy.QtWidgets import QApplication

    ws=Load('CNCS_7860')

    app = QApplication([])
    window = InstrumentView(ws)
    app.exec_()
"""
from __future__ import (absolute_import, unicode_literals)

# 3rdparty imports
from qtpy import PYQT4

from mantidqt.project.decoderfactory import DecoderFactory
from mantidqt.project.encoderfactory import EncoderFactory
from mantidqt.widgets.instrumentview.io import InstrumentViewDecoder, InstrumentViewEncoder

if PYQT4:
    raise ImportError("Instrument view requires Qt >= v5")


# Add encoder and decoders to the relevant factory
DecoderFactory.register_decoder(InstrumentViewDecoder)
EncoderFactory.register_encoder(InstrumentViewEncoder)
예제 #13
0
 def __init__(self, project_file_ext):
     self.project_reader = ProjectReader(project_file_ext)
     self.workspace_loader = WorkspaceLoader()
     self.plot_loader = PlotsLoader()
     self.decoder_factory = DecoderFactory()
     self.project_file_ext = project_file_ext
예제 #14
0
 def test_decoder_is_in_decoder_factory(self):
     # Shows that the decoder has been registered on import of something from mantidqt.widget.instrumentview
     found_decoder = DecoderFactory.find_decoder("InstrumentView")
     self.assertIs(InstrumentViewDecoder, found_decoder.__class__)
예제 #15
0
 def setUp(self):
     DecoderFactory.register_decoder(InstrumentViewEncoder)
예제 #16
0
# Mantid Repository : https://github.com/mantidproject/mantid
#
# Copyright © 2018 ISIS Rutherford Appleton Laboratory UKRI,
#     NScD Oak Ridge National Laboratory, European Spallation Source
#     & Institut Laue - Langevin
# SPDX - License - Identifier: GPL - 3.0 +
#  This file is part of the mantid workbench.

from mantidqt.widgets.workspacedisplay.status_bar_view import StatusBarView
from mantidqt.widgets.workspacedisplay.table.presenter import TableWorkspaceDisplay
from mantidqt.widgets.workspacedisplay.table.io import TableWorkspaceDisplayDecoder, TableWorkspaceDisplayEncoder
from mantidqt.project.decoderfactory import DecoderFactory
from mantidqt.project.encoderfactory import EncoderFactory


def compatible_check_for_encoder(obj, _):
    return isinstance(obj, StatusBarView) and isinstance(
        obj.presenter, TableWorkspaceDisplay)


DecoderFactory.register_decoder(TableWorkspaceDisplayDecoder)
EncoderFactory.register_encoder(TableWorkspaceDisplayEncoder,
                                compatible_check_for_encoder)
예제 #17
0
# Mantid Repository : https://github.com/mantidproject/mantid
#
# Copyright © 2018 ISIS Rutherford Appleton Laboratory UKRI,
#     NScD Oak Ridge National Laboratory, European Spallation Source
#     & Institut Laue - Langevin
# SPDX - License - Identifier: GPL - 3.0 +
#  This file is part of the mantid workbench.

from mantidqt.widgets.workspacedisplay.status_bar_view import StatusBarView
from mantidqt.widgets.workspacedisplay.matrix.presenter import MatrixWorkspaceDisplay
from mantidqt.widgets.workspacedisplay.matrix.io import MatrixWorkspaceDisplayDecoder, MatrixWorkspaceDisplayEncoder
from mantidqt.project.encoderfactory import EncoderFactory
from mantidqt.project.decoderfactory import DecoderFactory


def compatible_check_for_encoder(obj, _):
    return isinstance(obj, StatusBarView) and isinstance(obj.presenter, MatrixWorkspaceDisplay)


EncoderFactory.register_encoder(MatrixWorkspaceDisplayEncoder, compatible_check_for_encoder)
DecoderFactory.register_decoder(MatrixWorkspaceDisplayDecoder)