Esempio n. 1
0
def gen_api(subgroup, n):
    user_api = Api()
    user_api.set_subgroup(subgroup=subgroup, n=n)
    user_api.calc_graph()
    user_api.calc_domain()
    return user_api
Esempio n. 2
0
class QtApi(QObject):
    handle_status_message = pyqtSignal(str, int)
    handle_graph_axes = pyqtSignal(Axes)
    handle_domain_axes = pyqtSignal(Axes)
    handle_generators = pyqtSignal(str)
    handle_decomposition = pyqtSignal(str)
    handle_markers_state_plotted = pyqtSignal()
    handle_markers = pyqtSignal(list)
    finished = pyqtSignal()

    def __init__(self):
        super(__class__, self).__init__()
        self._api = Api()
        self.terminated = False

    def soft_terminate(self):
        self.terminated = True

    def update_status_message(self, status_message, cooldown_time=0):
        self.handle_status_message.emit(status_message, cooldown_time)

    @pyqtSlot(ClassicalSubgroups, str, Axes, Axes, name='onDigest')
    def on_digest(self, subgroup, n, graph_axes, domain_axes):
        self.terminated = False
        self._digest(subgroup, n)
        self._calc_graph()
        self._plot_graph(graph_axes)
        self._calc_domain()
        self._plot_domain(domain_axes)
        self._show_generators()

    @pyqtSlot(str, name='onDecompose')
    def on_decompose(self, matrix: str):
        self.terminated = False
        self._decompose(matrix)

    @error_handled
    def _digest(self, subgroup, n):
        self.update_status_message('Calculating subgroup data...')
        self._api.set_subgroup(subgroup, n)

    @error_handled
    def _calc_graph(self):
        self.update_status_message('Calculating graph data...')
        self._api.calc_graph()

    @error_handled
    def _plot_graph(self, graph_axes):
        self._api.plot_graph_on_axes(graph_axes)
        self.handle_graph_axes.emit(graph_axes)
        self.update_status_message('Graph is plotted!', 3000)

    @error_handled
    def _calc_domain(self):
        self.update_status_message('Calculating domain...')
        self._api.calc_domain()

    @error_handled
    def _plot_domain(self, domain_axes):
        self._api.plot_domain_on_axes(domain_axes, markers=False)
        self.handle_domain_axes.emit(domain_axes)
        self.handle_markers.emit(self._api.markers)
        self.update_status_message('Domain is plotted!', 3000)

    @error_handled
    def _show_generators(self):
        self.handle_generators.emit(self._api.get_generators_str())

    @error_handled
    def _decompose(self, matrix):
        self.update_status_message('Decomposing matrix...')
        self._api.decompose_matrix(matrix)
        self.handle_decomposition.emit(self._api.get_decomposition())
        self.update_status_message('Matrix is decomposed!', 3000)

    @pyqtSlot(name='onMarkersStateChanged')
    @error_handled
    def on_markers_state_changed(self):
        self._api.change_markers_state()
        self.handle_markers_state_plotted.emit()