remove obsolete kontor.py #61

Merged
tpeetz merged 166 commits from develop/0.1.0 into main 2025-04-30 15:31:19 +00:00
6 changed files with 65 additions and 55 deletions
Showing only changes of commit 171bc1676a - Show all commits
+4 -2
View File
@@ -1,5 +1,6 @@
from PySide6.QtCore import Signal, QSortFilterProxyModel from PySide6.QtCore import Signal, QSortFilterProxyModel
from PySide6.QtWidgets import QMainWindow, QWidget, QVBoxLayout, QTabWidget, QMenu, QTableView, QMdiSubWindow from PySide6.QtWidgets import QMainWindow, QWidget, QVBoxLayout, QTabWidget, QMenu, QTableView, QMdiSubWindow, \
QHeaderView
from gui.model_config import KontorModelConfig from gui.model_config import KontorModelConfig
from gui.table_model import KontorTableModel from gui.table_model import KontorTableModel
@@ -53,10 +54,11 @@ class ComicWindow(QMdiSubWindow):
self.data_views.append(model) self.data_views.append(model)
data_tab.setLayout(layout) data_tab.setLayout(layout)
table_view = QTableView() table_view = QTableView()
header = table_view.horizontalHeader()
header.setSectionResizeMode(QHeaderView.ResizeMode.ResizeToContents)
proxy_model = QSortFilterProxyModel() proxy_model = QSortFilterProxyModel()
proxy_model.setSourceModel(model) proxy_model.setSourceModel(model)
table_view.setSortingEnabled(True) table_view.setSortingEnabled(True)
#table_view.setModel(model)
table_view.setModel(proxy_model) table_view.setModel(proxy_model)
layout.addLayout(table_config.get_filter_layout()) layout.addLayout(table_config.get_filter_layout())
layout.addWidget(table_view) layout.addWidget(table_view)
+1 -1
View File
@@ -57,9 +57,9 @@ class MediaWindow(QMdiSubWindow):
proxy_model = QSortFilterProxyModel() proxy_model = QSortFilterProxyModel()
proxy_model.setSourceModel(model) proxy_model.setSourceModel(model)
table_view.setSortingEnabled(True) table_view.setSortingEnabled(True)
#table_view.setModel(model)
table_view.setModel(proxy_model) table_view.setModel(proxy_model)
layout.addLayout(table_config.get_filter_layout()) layout.addLayout(table_config.get_filter_layout())
layout.addWidget(table_view) layout.addWidget(table_view)
model.refresh() model.refresh()
table_view.resizeColumnToContents(0)
return data_tab return data_tab
+5 -2
View File
@@ -1,5 +1,6 @@
from PySide6.QtCore import Signal, QSortFilterProxyModel from PySide6.QtCore import Signal, QSortFilterProxyModel
from PySide6.QtWidgets import QMainWindow, QWidget, QVBoxLayout, QTabWidget, QMenu, QTableView, QMdiSubWindow from PySide6.QtWidgets import QMainWindow, QWidget, QVBoxLayout, QTabWidget, QMenu, QTableView, QMdiSubWindow, \
QHeaderView
from gui.model_config import KontorModelConfig from gui.model_config import KontorModelConfig
from gui.table_model import KontorTableModel from gui.table_model import KontorTableModel
@@ -57,9 +58,11 @@ class MetaDataWindow(QMdiSubWindow):
proxy_model = QSortFilterProxyModel() proxy_model = QSortFilterProxyModel()
proxy_model.setSourceModel(model) proxy_model.setSourceModel(model)
table_view.setSortingEnabled(True) table_view.setSortingEnabled(True)
#table_view.setModel(model) # header = table_view.horizontalHeader()
# header.setSectionResizeMode(QHeaderView.ResizeMode.ResizeToContents)
table_view.setModel(proxy_model) table_view.setModel(proxy_model)
layout.addLayout(table_config.get_filter_layout()) layout.addLayout(table_config.get_filter_layout())
layout.addWidget(table_view) layout.addWidget(table_view)
model.refresh() model.refresh()
table_view.resizeColumnToContents(0)
return data_tab return data_tab
+3 -4
View File
@@ -1,6 +1,5 @@
from PySide6.QtWidgets import QHBoxLayout, QCheckBox, QMdiSubWindow from PySide6.QtWidgets import QHBoxLayout, QCheckBox, QMdiSubWindow
from kontor_schema import KontorDB from kontor_schema import KontorDB, ColumnEntry
from kontor_schema.database import ColumnEntry
class KontorModelConfig: class KontorModelConfig:
@@ -30,7 +29,7 @@ class KontorModelConfig:
# print(self.filter["download"].isChecked()) # print(self.filter["download"].isChecked())
for column, filter_info in self.filter.items(): for column, filter_info in self.filter.items():
# print(column, filter_info) # print(column, filter_info)
if filter_info['widget'].isChecked(): if filter_info[ColumnEntry.COLUMN_WIDGET].isChecked():
_filters[column] = True _filters[column] = True
# print(f"{filter_rule=}") # print(f"{filter_rule=}")
# self.log.info("filters -> %s", _filters) # self.log.info("filters -> %s", _filters)
@@ -49,7 +48,7 @@ class KontorModelConfig:
filter_checkbox = QCheckBox() filter_checkbox = QCheckBox()
filter_checkbox.setText(filter_info[ColumnEntry.COLUMN_LABEL]) filter_checkbox.setText(filter_info[ColumnEntry.COLUMN_LABEL])
filter_checkbox.checkStateChanged.connect(self.main_window.refresh) filter_checkbox.checkStateChanged.connect(self.main_window.refresh)
self.filter[column]['widget'] = filter_checkbox self.filter[column][ColumnEntry.COLUMN_WIDGET] = filter_checkbox
filter_layout.addWidget(filter_checkbox) filter_layout.addWidget(filter_checkbox)
filter_layout.addStretch() filter_layout.addStretch()
# self.log.info("get_filter_layout: %s", self.filter) # self.log.info("get_filter_layout: %s", self.filter)
+50 -44
View File
@@ -1,12 +1,45 @@
from datetime import datetime from datetime import datetime
from typing import Any
from PySide6.QtCore import QAbstractTableModel, QModelIndex from PySide6.QtCore import QAbstractTableModel, QModelIndex
from PySide6.QtGui import Qt from PySide6.QtGui import Qt, QColor
from kontor_schema.database import ColumnEntry from kontor_schema.database import ColumnEntry
from .model_config import KontorModelConfig from .model_config import KontorModelConfig
def get_display_value(value: Any, column_config: dict, window) -> str:
if isinstance(value, datetime):
return value.strftime("%Y-%m-%d %M:%M:%S")
if column_config[ColumnEntry.COLUMN_TYPE] == 'BOOLEAN':
if value == 1:
return window.tick
else:
return window.cross
if value is None:
return ""
# window.log.info(f"unknown type: {column_config[ColumnEntry.COLUMN_TYPE]} - {type(value)}")
return str(value)
def get_edit_value(value, column_config, window):
# window.log.info(f"edit value {value}")
return str(value)
def get_decoration_value(value: Any, column_config: dict, window):
if column_config[ColumnEntry.COLUMN_TYPE] == 'BOOLEAN':
if value == 1:
return window.tick
else:
return window.cross
def get_background_value(value: Any, column_config: dict, window):
if value is None:
return QColor('lightgrey')
class KontorTableModel(QAbstractTableModel): class KontorTableModel(QAbstractTableModel):
def __init__(self, model_config: KontorModelConfig): def __init__(self, model_config: KontorModelConfig):
@@ -52,62 +85,35 @@ class KontorTableModel(QAbstractTableModel):
if self._data is None: if self._data is None:
return None return None
value = self._data[index.row()][index.column()] value = self._data[index.row()][index.column()]
# print('{}:: {}:: {}: {}'.format(index, role, value, type(value))) # print('{}:: {}:: {}:: {}: {}'.format(index, role, self._config.header[index.column()][ColumnEntry.COLUMN_TYPE], value, type(value)))
if role == Qt.ItemDataRole.DisplayRole or role == Qt.ItemDataRole.EditRole: match role:
if isinstance(value, datetime): case Qt.ItemDataRole.DisplayRole:
return value.strftime("%Y-%m-%d %M:%M:%S") return get_display_value(value, self._config.header[index.column()], self._config.main_window)
if isinstance(value, str): case Qt.ItemDataRole.EditRole:
return value return get_edit_value(value, self._config.header[index.column()], self._config.main_window)
if isinstance(value, bytes): case Qt.ItemDataRole.DecorationRole:
if value == b'\x01': return get_decoration_value(value, self._config.header[index.column()], self._config.main_window)
return self._config.main_window.tick case Qt.ItemDataRole.BackgroundRole:
else: return get_background_value(value, self._config.header[index.column()], self._config.main_window)
return self._config.main_window.cross
if isinstance(value, int):
# print('{}:: {}: {}'.format(index, value, type(value)))
if value == 1:
return self._config.main_window.tick
else:
return self._config.main_window.cross
if isinstance(value, bool):
if value:
return self._config.main_window.tick
else:
return self._config.main_window.cross
return str(value)
if role == Qt.ItemDataRole.DecorationRole:
if isinstance(value, bytes):
if value == b'\x01':
return self._config.main_window.tick
else:
return self._config.main_window.cross
if isinstance(value, int):
if value == 1:
return self._config.main_window.tick
else:
return self._config.main_window.cross
if isinstance(value, bool):
if value:
return self._config.main_window.tick
else:
return self._config.main_window.cross
def columnCount(self, index=QModelIndex()): def columnCount(self, index=QModelIndex()):
# self.log.info("rowCount %s: %d", self, len(self._config.header)) # self.log.info("rowCount %s: %d", self, len(self._config.header))
return len(self._config.header) return len(self._config.header)
def setData(self, index, value, role: int) -> bool: def setData(self, index, value, role=Qt.ItemDataRole.EditRole) -> bool:
# print(index, role) # self._config.log.info(f"{index}: {role}")
if role == Qt.ItemDataRole.EditRole: if role == Qt.ItemDataRole.EditRole:
self._data[index.row()][index.column()] = value self._data[index.row()][index.column()] = value
# print(self._data[index.row()][index.column()]) # self._config.log.info(f"{index.row()}-{index.column()}: {self._data[index.row()][index.column()]}")
self.dataChanged.emit(index, index) self.dataChanged.emit(index, index)
return True return True
if role == Qt.ItemDataRole.CheckStateRole: if role == Qt.ItemDataRole.CheckStateRole:
# print("role == Qt.ItemDataRole.CheckStateRole") print("role == Qt.ItemDataRole.CheckStateRole")
checked = value == Qt.CheckState.Checked checked = value == Qt.CheckState.Checked
self._data[index.row()][index.column()] = checked self._data[index.row()][index.column()] = checked
return False return False
def flags(self, index): def flags(self, index):
if self._config.header[index.column()][ColumnEntry.COLUMN_NAME] == 'id':
return Qt.ItemFlag.ItemIsEnabled
return Qt.ItemFlag.ItemIsSelectable | Qt.ItemFlag.ItemIsEnabled | Qt.ItemFlag.ItemIsEditable | Qt.ItemFlag.ItemIsUserTristate return Qt.ItemFlag.ItemIsSelectable | Qt.ItemFlag.ItemIsEnabled | Qt.ItemFlag.ItemIsEditable | Qt.ItemFlag.ItemIsUserTristate
@@ -7,4 +7,4 @@ from .metadata import MetaDataTable, MetaDataColumn
from .tysc import Card, CardSet, Sport, Team, FieldPosition, Rooster, Player, Vendor from .tysc import Card, CardSet, Sport, Team, FieldPosition, Rooster, Player, Vendor
from .media import MediaFile, MediaArticle, MediaVideo from .media import MediaFile, MediaArticle, MediaVideo
from .base import Base from .base import Base
from .database import KontorDB from .database import KontorDB, ColumnEntry