2024-11-11 12:11:37 +03:00
|
|
|
import pyqtgraph as pg
|
|
|
|
|
from pyqtgraph.Qt import QtWidgets
|
|
|
|
|
from pyqtgraph.parametertree import Parameter, ParameterTree
|
|
|
|
|
|
|
|
|
|
from src.utils.json_tools import read_json, write_json
|
2024-11-11 14:28:21 +03:00
|
|
|
from src.gui import qt_settings as qts
|
2024-11-11 12:11:37 +03:00
|
|
|
|
|
|
|
|
class settingsWindow(QtWidgets.QWidget):
|
2024-11-11 13:05:18 +03:00
|
|
|
def __init__(self, path: str, name: str, upd_func):
|
2024-11-11 12:11:37 +03:00
|
|
|
super(settingsWindow, self).__init__()
|
|
|
|
|
self.settingsPath = path
|
|
|
|
|
self.name = name
|
2024-11-11 13:05:18 +03:00
|
|
|
|
2024-11-11 12:11:37 +03:00
|
|
|
self.data = {}
|
|
|
|
|
self.params = None
|
|
|
|
|
self.load_settings()
|
2024-11-11 13:05:18 +03:00
|
|
|
self._init_ui()
|
|
|
|
|
self.params.sigTreeStateChanged.connect(upd_func)
|
2024-11-11 12:11:37 +03:00
|
|
|
|
|
|
|
|
def load_settings(self):
|
|
|
|
|
self.data = read_json(self.settingsPath)
|
|
|
|
|
|
|
|
|
|
def write_settings(self):
|
2024-11-11 14:28:21 +03:00
|
|
|
self.getParams()
|
2024-11-11 12:11:37 +03:00
|
|
|
write_json(self.settingsPath, self.data)
|
|
|
|
|
|
|
|
|
|
def _getTreeStructure(self) -> list:
|
|
|
|
|
params = []
|
|
|
|
|
for key, value in self.data.items():
|
|
|
|
|
params.append({'name': str(key), 'type': type(value).__name__, 'value': value})
|
2024-11-11 14:28:21 +03:00
|
|
|
params.append({'name': 'Save', 'type': 'action'})
|
2024-11-11 12:11:37 +03:00
|
|
|
return params
|
|
|
|
|
|
2024-11-11 13:05:18 +03:00
|
|
|
def _init_ui(self):
|
2024-11-11 12:11:37 +03:00
|
|
|
temp = self._getTreeStructure()
|
2024-11-11 14:28:21 +03:00
|
|
|
self.params = Parameter.create(name=self.name, type='group', children=temp)
|
|
|
|
|
self.params.param('Save').sigActivated.connect(self.write_settings)
|
2024-11-11 12:11:37 +03:00
|
|
|
|
|
|
|
|
ParamsTree = ParameterTree()
|
2024-11-11 14:28:21 +03:00
|
|
|
ParamsTree.setParameters(self.params, showTop=True)
|
2024-11-11 12:11:37 +03:00
|
|
|
layout = QtWidgets.QGridLayout()
|
|
|
|
|
layout.addWidget(ParamsTree, 0,0)
|
|
|
|
|
self.setLayout(layout)
|
2024-11-11 14:28:21 +03:00
|
|
|
self.setStyleSheet(qts.white_style)
|
|
|
|
|
# self.show()
|
2024-11-11 12:11:37 +03:00
|
|
|
|
2024-11-11 13:05:18 +03:00
|
|
|
def getParams(self) -> dict:
|
|
|
|
|
self.data = {}
|
|
|
|
|
for p in self.params:
|
2024-11-11 14:28:21 +03:00
|
|
|
if p.name() != 'Save':
|
|
|
|
|
self.data[p.name()] = p.value()
|
2024-11-11 13:05:18 +03:00
|
|
|
return self.data
|
2024-11-11 12:11:37 +03:00
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
app = pg.mkQApp("Parameter Tree Example")
|
|
|
|
|
window = settingsWindow('params\operator_params.json', 'operator')
|
|
|
|
|
app.exec()
|
|
|
|
|
|
|
|
|
|
|