fix: окна настроек теперь отображаются корректно и обновляют все графики
This commit is contained in:
parent
844aa4a78a
commit
7c09dde2d1
Binary file not shown.
@ -1,3 +1,3 @@
|
|||||||
from .plot_window import Plotter
|
from .plot_window import Plotter
|
||||||
from .settings_window import settingsWindow
|
from .settings_window import settingsWindow
|
||||||
from .app import graphWindow
|
from .app import tabWidgetGenerator
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@ -6,63 +6,68 @@ from src.OptAlgorithm import OptAlgorithm
|
|||||||
from src.gui import Plotter, settingsWindow
|
from src.gui import Plotter, settingsWindow
|
||||||
|
|
||||||
|
|
||||||
class graphWindow:
|
class tabWidgetGenerator:
|
||||||
def __init__(self, path = None):
|
def __init__(self):
|
||||||
self.path = path
|
self.UMLgenerator = Request(server_url='http://www.plantuml.com/plantuml/svg/')
|
||||||
self._load_preset()
|
self.uml_creator = UMLCreator(request_generator=self.UMLgenerator)
|
||||||
|
self.operator_params = read_json("params/operator_params.json")
|
||||||
def get_widget(self):
|
self.system_params = read_json("params/system_params.json")
|
||||||
return self.plotter.widget
|
self.operSettings = settingsWindow("params\operator_params.json", 'Operator', self._update)
|
||||||
|
self.sysSettings = settingsWindow("params\system_params.json", 'System', self._update)
|
||||||
|
|
||||||
|
self.paths = []
|
||||||
|
self.plotters = []
|
||||||
|
self.bool_dicts = []
|
||||||
|
self.float_dicts = []
|
||||||
|
self.timings_dicts = []
|
||||||
|
self.modes = []
|
||||||
|
|
||||||
|
def get_widget(self, path):
|
||||||
|
self.paths.append(path)
|
||||||
|
self.plotters.append(Plotter(show_settings_func=self._show_settings))
|
||||||
|
self._getParsedData(path)
|
||||||
|
self._update()
|
||||||
|
return self.plotters[-1].widget
|
||||||
|
|
||||||
def _get_ideal_timings(self, opt: OptAlgorithm) -> list[float]:
|
def _get_ideal_timings(self, opt: OptAlgorithm) -> list[float]:
|
||||||
data = opt.Ts
|
data = opt.Ts
|
||||||
ideal_time = [data['tclose'], data['tgrow'], opt.getMarkOpen(), data["tmovement"]]
|
ideal_time = [data['tclose'], data['tgrow'], opt.getMarkOpen(), data["tmovement"]]
|
||||||
return ideal_time
|
return ideal_time
|
||||||
|
|
||||||
def _load_preset(self):
|
def _getParsedData(self, path):
|
||||||
self.operator_params = read_json("params/operator_params.json")
|
parser = DiagramParser(system_config=self.system_params)
|
||||||
self.system_params = read_json("params/system_params.json")
|
parser.setData(path)
|
||||||
|
self.bool_dicts.append(parser.getBoolDict())
|
||||||
generator = Request(server_url='http://www.plantuml.com/plantuml/svg/')
|
self.float_dicts.append(parser.getFloatDict())
|
||||||
self.uml_creator = UMLCreator(request_generator=generator)
|
self.timings_dicts.append(parser.getRealTimings())
|
||||||
self.operSettings = settingsWindow("params\operator_params.json", 'Operator', self._update_settings)
|
self.modes.append(parser.getMode())
|
||||||
self.sysSettings = settingsWindow("params\system_params.json", 'System', self._update_settings)
|
|
||||||
|
|
||||||
self.plotter = Plotter(show_settings_func=self._show_settings)
|
|
||||||
|
|
||||||
self.parser = DiagramParser(system_config=self.system_params)
|
|
||||||
self.parser.setData(self.path)
|
|
||||||
|
|
||||||
self.bool_dict = self.parser.getBoolDict()
|
|
||||||
self.float_dict = self.parser.getFloatDict()
|
|
||||||
self.timings_dict = self.parser.getRealTimings()
|
|
||||||
self.mode = self.parser.getMode()
|
|
||||||
self._update_settings()
|
|
||||||
|
|
||||||
|
|
||||||
def _update_settings(self, _ = None):
|
def _update(self, _ = None):
|
||||||
self.operator_params = self.operSettings.getParams()
|
self.operator_params = self.operSettings.getParams()
|
||||||
self.system_params = self.sysSettings.getParams()
|
self.system_params = self.sysSettings.getParams()
|
||||||
|
|
||||||
self.opt_algorithm = OptAlgorithm(operator_config=self.operator_params, system_config=self.system_params)
|
opt_algorithm = OptAlgorithm(operator_config=self.operator_params, system_config=self.system_params)
|
||||||
self.ideal_times = self._get_ideal_timings(self.opt_algorithm)
|
ideal_times = self._get_ideal_timings(opt_algorithm)
|
||||||
|
|
||||||
|
for i in range (len(self.plotters)):
|
||||||
|
self.plotters[i].update_data(operator_config=self.operator_params,
|
||||||
|
system_config=self.system_params,
|
||||||
|
opt=opt_algorithm,
|
||||||
|
bool_dict=self.bool_dicts[i],
|
||||||
|
ideal_time=ideal_times,
|
||||||
|
float_dict=self.float_dicts[i],
|
||||||
|
mode = self.modes[i],
|
||||||
|
timings_dict=self.timings_dicts[i])
|
||||||
|
|
||||||
self.uml_creator.update_uml(operator_config=self.operator_params,
|
self.uml_creator.update_uml(operator_config=self.operator_params,
|
||||||
system_config=self.system_params,
|
system_config=self.system_params,
|
||||||
ideal_time=self.ideal_times,
|
ideal_time=ideal_times,
|
||||||
bool_dict=self.bool_dict,
|
bool_dict=self.bool_dicts[i],
|
||||||
float_dict=self.float_dict,
|
float_dict=self.float_dicts[i],
|
||||||
mode = self.mode,
|
mode = self.modes[i],
|
||||||
timings_dict=self.timings_dict)
|
timings_dict=self.timings_dicts[i])
|
||||||
|
|
||||||
self.plotter.update_data(operator_config=self.operator_params,
|
|
||||||
system_config=self.system_params,
|
|
||||||
opt=self.opt_algorithm,
|
|
||||||
bool_dict=self.bool_dict,
|
|
||||||
ideal_time=self.ideal_times,
|
|
||||||
float_dict=self.float_dict,
|
|
||||||
mode = self.mode,
|
|
||||||
timings_dict=self.timings_dict)
|
|
||||||
|
|
||||||
def _show_settings(self):
|
def _show_settings(self):
|
||||||
self.operSettings.show()
|
self.operSettings.show()
|
||||||
@ -71,5 +76,7 @@ class graphWindow:
|
|||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
pg.mkQApp("Plotting")
|
pg.mkQApp("Plotting")
|
||||||
temp = graphWindow("trace_samples/2024_11_08-19_30_49.csv")
|
temp = tabWidgetGenerator()
|
||||||
|
widget = temp.get_widget("trace_samples/2024_11_08-19_30_49.csv")
|
||||||
|
widget.show()
|
||||||
pg.exec()
|
pg.exec()
|
||||||
13
src/main.py
13
src/main.py
@ -11,11 +11,12 @@ from PyQt5.QtWidgets import (
|
|||||||
)
|
)
|
||||||
from PyQt5.QtCore import Qt, QThread, pyqtSignal, QObject, QFileSystemWatcher
|
from PyQt5.QtCore import Qt, QThread, pyqtSignal, QObject, QFileSystemWatcher
|
||||||
from PyQt5.QtGui import QIcon
|
from PyQt5.QtGui import QIcon
|
||||||
|
from src.gui import qt_settings as qts
|
||||||
|
|
||||||
# Импортируйте ваш класс `app` здесь
|
# Импортируйте ваш класс `app` здесь
|
||||||
# Предполагается, что класс `app` предоставляет интерфейс для отображения данных
|
# Предполагается, что класс `app` предоставляет интерфейс для отображения данных
|
||||||
# Если `app` не предоставляет виджет, возможно, потребуется его модифицировать
|
# Если `app` не предоставляет виджет, возможно, потребуется его модифицировать
|
||||||
from src.gui.app import graphWindow
|
from src.gui.app import tabWidgetGenerator
|
||||||
|
|
||||||
|
|
||||||
class DirectoryWatcher(QObject):
|
class DirectoryWatcher(QObject):
|
||||||
@ -29,6 +30,7 @@ class DirectoryWatcher(QObject):
|
|||||||
self.watcher.addPath(self.directory_path)
|
self.watcher.addPath(self.directory_path)
|
||||||
self.existing_files = set(os.listdir(self.directory_path))
|
self.existing_files = set(os.listdir(self.directory_path))
|
||||||
self.watcher.directoryChanged.connect(self.on_directory_changed)
|
self.watcher.directoryChanged.connect(self.on_directory_changed)
|
||||||
|
|
||||||
|
|
||||||
def on_directory_changed(self, _):
|
def on_directory_changed(self, _):
|
||||||
try:
|
try:
|
||||||
@ -50,10 +52,13 @@ class MainWindow(QMainWindow):
|
|||||||
self.setGeometry(100, 100, 800, 600)
|
self.setGeometry(100, 100, 800, 600)
|
||||||
|
|
||||||
self.tabs = QTabWidget()
|
self.tabs = QTabWidget()
|
||||||
|
self.tabs.setStyleSheet(qts.dark_style)
|
||||||
|
self.tabGen = tabWidgetGenerator()
|
||||||
self.setCentralWidget(self.tabs)
|
self.setCentralWidget(self.tabs)
|
||||||
|
|
||||||
# self.setWindowIcon(QIcon("path_to_icon.png"))
|
# self.setWindowIcon(QIcon("path_to_icon.png"))
|
||||||
self.start_directory_watcher(directory_to_watch)
|
self.start_directory_watcher(directory_to_watch)
|
||||||
|
|
||||||
|
|
||||||
def start_directory_watcher(self, directory_path):
|
def start_directory_watcher(self, directory_path):
|
||||||
self.watcher_thread = QThread()
|
self.watcher_thread = QThread()
|
||||||
@ -66,14 +71,14 @@ class MainWindow(QMainWindow):
|
|||||||
self.watcher_thread.start()
|
self.watcher_thread.start()
|
||||||
|
|
||||||
def handle_new_file(self, file_path):
|
def handle_new_file(self, file_path):
|
||||||
|
time.sleep(0.2)
|
||||||
file_name = os.path.basename(file_path)
|
file_name = os.path.basename(file_path)
|
||||||
|
|
||||||
app_instance = graphWindow(path=file_path)
|
tab_widget = self.tabGen.get_widget(path=file_path)
|
||||||
|
|
||||||
tab = QWidget()
|
tab = QWidget()
|
||||||
layout = QVBoxLayout()
|
layout = QVBoxLayout()
|
||||||
app_widget = app_instance.get_widget()
|
layout.addWidget(tab_widget)
|
||||||
layout.addWidget(app_widget)
|
|
||||||
|
|
||||||
label = QLabel(f"{file_name}")
|
label = QLabel(f"{file_name}")
|
||||||
label.setAlignment(Qt.AlignCenter)
|
label.setAlignment(Qt.AlignCenter)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user