import pyqtgraph as pg from src.utils import read_json, DiagramParser from src.uml import Request, UMLCreator from src.OptAlgorithm import OptAlgorithm from src.gui import PlotWindow, settingsWindow class app: def __init__(self): self.parser = DiagramParser() self.request_generator = Request(server_url='http://www.plantuml.com/plantuml/svg/') self.operSettings = settingsWindow("params\operator_params.json", 'Operator', self._update_settings) self.sysSettings = settingsWindow("params\system_params.json", 'System', self._update_settings) self._load_preset() def _get_ideal_timings(self, opt: OptAlgorithm) -> list[float]: data = opt.Ts ideal_time = [data['tclose'], data['tgrow'], opt.getMarkOpen()] return ideal_time def _load_preset(self): self.operator_params = read_json("params/operator_params.json") self.system_params = read_json("params/system_params.json") self.opt_algorithm = OptAlgorithm(operator_config=self.operator_params, system_config=self.system_params) self.ideal_times = self._get_ideal_timings(self.opt_algorithm) self.parser.setData("trace_samples/2024_11_01-09_39_17B00.csv") self.bool_dict = self.parser.getBoolDict() self.float_dict = self.parser.getFloatDict() self.plotter = PlotWindow(operator_config=self.operator_params, system_config=self.system_params, opt=self.opt_algorithm, bool_dict=self.bool_dict, float_dict=self.float_dict) self.uml_creator = UMLCreator(system_config=self.system_params, request_generator=self.request_generator, ideal_time=self.ideal_times, bool_dict=self.bool_dict, float_dict=self.float_dict) def _update_settings(self, _): self.operator_params = self.operSettings.getParams() self.system_params = self.sysSettings.getParams() self.opt_algorithm = OptAlgorithm(operator_config=self.operator_params, system_config=self.system_params) self.ideal_times = self._get_ideal_timings(self.opt_algorithm) self.uml_creator.update_uml(system_config=self.system_params, request_generator=self.request_generator, ideal_time=self.ideal_times, bool_dict=self.bool_dict, float_dict=self.float_dict) self.plotter.update_data(operator_config=self.operator_params, system_config=self.system_params, opt=self.opt_algorithm, bool_dict=self.bool_dict, float_dict=self.float_dict) if __name__ == '__main__': pg.mkQApp("Plotting") temp = app() pg.exec()