76 lines
2.8 KiB
Python
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
|
|
|
|
|
|
|
|
|
|
|