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