Source code for qtdraw.widget.tab_group_view
"""
Tab of GroupView.
This module provides a set of group view classes in tab format.
"""
from PySide6.QtWidgets import QTabWidget, QDialog
from PySide6.QtGui import QFont
from qtdraw.widget.group_view import GroupView
from qtdraw.widget.custom_widget import Layout
# ==================================================
[docs]
class TabGroupView(QDialog):
# ==================================================
def __init__(
self,
models,
title="Data",
parent=None,
):
"""
Data view group.
Args:
models (dict): set of models, {object_type: GroupModel}.
title (str, optional): window title.
parent (QWidget, optional): parent.
"""
super().__init__(parent=parent)
self.setWindowTitle(title)
self.tab = QTabWidget(self)
self.tab.setUsesScrollButtons(True)
bold = QFont()
bold.setBold(True)
self.tab.tabBar().setFont(bold)
self.view = {}
for object_type, model in models.items():
item = GroupView(model, parent=self)
self.tab.addTab(item, object_type)
self.view[object_type] = item
layout = Layout(self)
layout.addWidget(self.tab, 0, 0, 1, 1)
self.setLayout(layout)
# ==================================================
[docs]
def select_tab(self, object_type):
"""
Select tab.
Args:
object_type (str): object type.
"""
idx = list(self.view.keys()).index(object_type)
self.tab.setCurrentIndex(idx)
# ==================================================
def closeEvent(self, event):
"""
Close event for deselect all.
:meta private:
"""
for view in self.view.values():
view.closeEvent(event)
super().closeEvent(event)
# ==================================================
def update_widget(self):
"""
Update widget.
:meta private:
"""
for view in self.view.values():
view.update_widget(force=True)