Files
2026-05-15 17:27:26 +02:00

76 lines
2.8 KiB
Python

from PySide6.QtWidgets import QCheckBox, QLabel, QVBoxLayout, QHBoxLayout, QWidget, QPushButton
# from PySide6.QtGui import QStandardItemModel, QStandardItem
# from PySide6.QtCore import QModelIndex
from GUI.Widgets.json_table_widget import JsonTableWidget
# import random
# import json
class JsonViewer(QWidget):
def __init__(self, title="JsonViewer", parent=None, auto_save=False):
super().__init__(parent)
self._autosave = auto_save
self.main_layout = QVBoxLayout()
self.top_viewer_layout = QHBoxLayout()
self.bottom_viewer_layout = QHBoxLayout()
self.title_widget = QLabel(title)
self.top_viewer_layout.addWidget(self.title_widget)
self.auto_save_checkbox = QCheckBox("AutoSave", self)
self.auto_save_checkbox.setChecked(self._autosave)
self.auto_save_checkbox.stateChanged.connect(self.auto_save_state_changed)
self.top_viewer_layout.addWidget(self.auto_save_checkbox)
self.viewer = JsonTableWidget(self)
self.delete_button = QPushButton("Delete", self)
self.delete_button.clicked.connect(self.delete_rows)
self.bottom_viewer_layout.addWidget(self.delete_button)
self.clear_button = QPushButton("Clear", self)
self.clear_button.clicked.connect(self.delete_all)
self.bottom_viewer_layout.addWidget(self.clear_button)
self.top_container = QWidget(self)
self.bottom_container = QWidget(self)
self.top_container.setLayout(self.top_viewer_layout)
self.bottom_container.setLayout(self.bottom_viewer_layout)
self.main_layout.addWidget(self.top_container)
self.main_layout.addWidget(self.viewer)
self.main_layout.addWidget(self.bottom_container)
self.setLayout(self.main_layout)
def delete_rows(self, path=None):
self.viewer.delete_selected_rows()
if (self._autosave):
self.viewer.save_data(path)
print("Needed deletion")
def auto_save_state_changed(self):
print(f"autosave : {not self._autosave}")
self._autosave = not self._autosave
def add_row(self, data, path=None):
self.viewer.add_new_row(data)
if (self._autosave):
self.viewer.save_data(path)
# delete all rows
def delete_all(self):
self.viewer.delete_all()
pass
def set_emit_double_click_on_header(self, emit: bool) -> None:
self.viewer.emit_double_click_on_header = emit