Source code for qtdraw.multipie.multipie_dialog
"""
Multipie dialog.
This module provides a dialog for drawing objects with the help of MultiPie.
"""
from PySide6.QtWidgets import QDialog, QTabWidget
from PySide6.QtCore import Signal
from qtdraw.widget.custom_widget import Layout
from qtdraw.multipie.sub_group import SubGroup
from qtdraw.multipie.tab_group import TabGroup
from qtdraw.multipie.tab_object import TabObject
from qtdraw.multipie.tab_basis import TabBasis
# ==================================================
[docs]
class MultiPieDialog(QDialog):
group_changed = Signal()
# ==================================================
def __init__(self, parent):
"""
MultiPie dialog.
Args:
parent (MultiPiePlugin): parent.
"""
super().__init__()
self._pvw = parent.pyvista_widget # PyVistaWidget.
if self._pvw._mp_data is None:
self._pvw.mp_set_group()
self._data = parent.pyvista_widget._mp_data
self._qtdraw = parent # QtDraw.
self.set_title()
self.resize(600, 500)
self._sub_panel = SubGroup(self)
self._group_panel = TabGroup(self)
self._object_panel = TabObject(self)
self._basis_panel = TabBasis(self)
# tab content.
tab = QTabWidget(self)
tab.addTab(self._group_panel, "Group Info.")
tab.addTab(self._object_panel, "Object Drawing")
tab.addTab(self._basis_panel, "Basis Drawing")
# main layout.
layout = Layout(self)
layout.setContentsMargins(10, 5, 10, 5)
layout.addWidget(self._sub_panel, 0, 0, 1, 1)
layout.addWidget(tab, 0, 1, 1, 1)
self.group_changed.connect(self._group_panel.set_irrep_list)
self.group_changed.connect(self._group_panel.set_wyckoff_list)
self.group_changed.connect(self._group_panel.set_harm_list)
self.group_changed.connect(self._sub_panel.set_group_name)
self._pvw.data_removed.connect(self.clear_data)
self.set_data()
self.show()
# ==================================================
[docs]
def set_title(self):
title = self._pvw.window_title.replace("QtDraw", "MultiPie Plugin")
self.setWindowTitle(title)
# ==================================================
[docs]
def set_data(self):
self._sub_panel.set_data()
self._group_panel.set_data()
self._object_panel.set_data()
self._basis_panel.set_data()
# ==================================================
[docs]
def clear_data(self):
self._sub_panel.clear_data()
self._group_panel.clear_data()
self._object_panel.clear_data()
self._basis_panel.clear_data()
self._data.clear_data()
# ==================================================
[docs]
def closeEvent(self, event):
super().closeEvent(event)