add details view
This commit is contained in:
@@ -1,8 +1,10 @@
|
|||||||
from PySide6.QtCore import Signal, QSortFilterProxyModel
|
from PySide6.QtCore import Signal, QSortFilterProxyModel
|
||||||
from PySide6.QtWidgets import QMdiSubWindow, QWidget, QVBoxLayout, QTabWidget, QTableView, QHeaderView, QLabel
|
from PySide6.QtWidgets import QMdiSubWindow, QWidget, QVBoxLayout, QTabWidget, QTableView, QHeaderView, QLabel, \
|
||||||
|
QHBoxLayout, QFormLayout, QLineEdit
|
||||||
|
|
||||||
from gui.model_config import KontorModelConfig
|
from .model_config import KontorModelConfig
|
||||||
from gui.table_model import KontorTableModel
|
from .table_details import KontorTableDetailsView
|
||||||
|
from .table_model import KontorTableModel
|
||||||
|
|
||||||
|
|
||||||
class MediaWindow(QMdiSubWindow):
|
class MediaWindow(QMdiSubWindow):
|
||||||
@@ -66,22 +68,11 @@ class MediaWindow(QMdiSubWindow):
|
|||||||
return data_tab
|
return data_tab
|
||||||
|
|
||||||
def generate_data_tab_with_details(self, table_name):
|
def generate_data_tab_with_details(self, table_name):
|
||||||
data_tab = QWidget()
|
|
||||||
|
|
||||||
table_config = KontorModelConfig(self._main_window.kontor_db, self, table_name)
|
table_config = KontorModelConfig(self._main_window.kontor_db, self, table_name)
|
||||||
model = KontorTableModel(table_config)
|
model = KontorTableModel(table_config)
|
||||||
layout = QVBoxLayout()
|
|
||||||
self.data_views.append(model)
|
self.data_views.append(model)
|
||||||
data_tab.setLayout(layout)
|
details_view = KontorTableDetailsView(model)
|
||||||
table_view = QTableView()
|
return details_view.data_view
|
||||||
proxy_model = QSortFilterProxyModel()
|
|
||||||
proxy_model.setSourceModel(model)
|
|
||||||
table_view.setSortingEnabled(True)
|
|
||||||
table_view.setModel(proxy_model)
|
|
||||||
layout.addLayout(table_config.get_filter_layout())
|
|
||||||
layout.addWidget(table_view)
|
|
||||||
layout.addWidget(QLabel("test test"))
|
|
||||||
model.refresh()
|
|
||||||
table_view.resizeColumnToContents(0)
|
|
||||||
return data_tab
|
|
||||||
|
|
||||||
|
def cell_selected(self, item):
|
||||||
|
self.log.info(f"Cell {item.row()}:{item.column()} clicked")
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
from PySide6.QtCore import QSortFilterProxyModel
|
||||||
|
from PySide6.QtWidgets import QHBoxLayout, QWidget, QTableView, QVBoxLayout, QFormLayout, QLineEdit, QLabel
|
||||||
|
|
||||||
|
from .table_model import KontorTableModel
|
||||||
|
|
||||||
|
|
||||||
|
class KontorTableDetailsView:
|
||||||
|
def __init__(self, table_model: KontorTableModel):
|
||||||
|
self._data_view: QWidget = QWidget()
|
||||||
|
self._model = table_model
|
||||||
|
self._label = QLabel()
|
||||||
|
self.init_gui()
|
||||||
|
|
||||||
|
def init_gui(self):
|
||||||
|
layout = QVBoxLayout()
|
||||||
|
self._data_view.setLayout(layout)
|
||||||
|
details_layout = QHBoxLayout()
|
||||||
|
table_with_details = QWidget()
|
||||||
|
table_with_details.setLayout(details_layout)
|
||||||
|
|
||||||
|
table_view = QTableView()
|
||||||
|
table_view.setSelectionBehavior(QTableView.SelectionBehavior.SelectRows)
|
||||||
|
proxy_model = QSortFilterProxyModel()
|
||||||
|
proxy_model.setSourceModel(self._model)
|
||||||
|
table_view.setSortingEnabled(True)
|
||||||
|
table_view.setModel(proxy_model)
|
||||||
|
table_view.clicked.connect(self.update_details)
|
||||||
|
|
||||||
|
layout.addLayout(self._model.config.get_filter_layout())
|
||||||
|
details_layout.addWidget(table_view)
|
||||||
|
|
||||||
|
form = QWidget()
|
||||||
|
form_layout = QFormLayout(form)
|
||||||
|
form.setLayout(form_layout)
|
||||||
|
|
||||||
|
title = QLineEdit(form)
|
||||||
|
form_layout.addRow("ID", self._label)
|
||||||
|
form_layout.addRow("Title", title)
|
||||||
|
# layout.addWidget(table_view)
|
||||||
|
details_layout.addWidget(form)
|
||||||
|
layout.addWidget(table_with_details)
|
||||||
|
self._model.refresh()
|
||||||
|
table_view.resizeColumnToContents(0)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def data_view(self):
|
||||||
|
return self._data_view
|
||||||
|
|
||||||
|
def update_details(self, item):
|
||||||
|
print(f"Cell {item.row()}-{item.column()} selected")
|
||||||
|
self._model.log.info(f"Cell {item.row()}-{item.column()} selected")
|
||||||
|
self._label.setText(self._model.raw_data()[item.row()][0])
|
||||||
@@ -52,6 +52,14 @@ class KontorTableModel(QAbstractTableModel):
|
|||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"KontorTableModel({self._config})"
|
return f"KontorTableModel({self._config})"
|
||||||
|
|
||||||
|
@property
|
||||||
|
def config(self):
|
||||||
|
return self._config
|
||||||
|
|
||||||
|
@property
|
||||||
|
def raw_data(self):
|
||||||
|
return self._data
|
||||||
|
|
||||||
def refresh(self):
|
def refresh(self):
|
||||||
# self.log.info("refresh")
|
# self.log.info("refresh")
|
||||||
data = self._config.get_data()
|
data = self._config.get_data()
|
||||||
|
|||||||
Reference in New Issue
Block a user