class Oscil_GUI: def __init__(self, root): self.root = root self.root.protocol("WM_DELETE_WINDOW", self.exit) self.dev_views = dict() # Кортеж видов для устройств self.log = LogGetter.get_logger() # Создаем логер self.settings = None # Создаем настройки self.dm = DeviceManager(self.log) # Создаем менеджер устройств for dev_name in DEV_LIST: # Добовляем устройства к менеджеру self.dm.add_device(dev_name) self.init_gui() # Создаем форму self.task_ctrl.load_settings() for dev_view in self.dev_views.values(): # Обновляем список устройств dev_view.refresh_devices() # для каждого вида def init_gui(self): self.fileoptions = FileOptions(self.root) for dev_name in DEV_LIST: device = self.dm.devices[dev_name] if device is not None: self.dev_views[dev_name] = DeviceView(self.root, self.dm, device, self.log) self.task_ctrl = TaskControl(self) self.console = ConsoleView(self.root) wh = ConsoleHandler(self.console) # Подписываем консоль к логеру self.log.addHandler(wh) self.fileoptions.pack(side="top", fill="both") for dev in self.dev_views.values(): dev.pack(side="top", fill="both") self.task_ctrl.pack(side="top", fill="both") self.console.pack(side="top", fill="both") def exit(self): self.dm.close_all() self.root.destroy()
class MyPrompt(Cmd): def __init__(self): Cmd.__init__(self) self.DeviceManager = DeviceManager() self.intro = """ ____ ______ ___ _ _____ __ __ / _/__/_ __/ / _ \___ _ __(_)______ / __(_)_ _ __ __/ /__ _/ /____ ____ _/ // _ \/ / / // / -_) |/ / / __/ -_) _\ \/ / ' \/ // / / _ `/ __/ _ \/ __/ /___/\___/_/ /____/\__/|___/_/\__/\__/ /___/_/_/_/_/\_,_/_/\_,_/\__/\___/_/ ================================================================================ Type 'help' to see available commands """ def do_provision(self, args): """Adds a new device to the device manager. Does not take args""" self.DeviceManager.add_device() def do_delete(self, args): """Deletes device from the manager, must supply short name of the device""" if len(args.split()) == 2: self.DeviceManager.remove_device(args) else: print("Incorrect number of args sent!") def do_list(self, args): """Lists all Devices currently managed""" print(self.DeviceManager) def do_run(self, args): """Stars the devices run thread, must supply short name of the device""" if len(args.split()) == 2: self.DeviceManager.run_device(args) else: print("Incorrect number of args sent!") def do_stop(self, args): """Stops the devices run thread, must supply short name of the device""" if len(args.split()) == 2: self.DeviceManager.stop_device(args) else: print("Incorrect number of args sent!") def do_read(self, args): """Reads the last payload generated by device, must supply short name of the device""" if len(args.split()) == 3: args = args.split() payl = self.DeviceManager.find_payload("{} {}".format( args[0], args[1])) print( json.dumps( payl[args[2]], indent=4, default=str, sort_keys=True, )) elif len(args.split()) == 2: payl = self.DeviceManager.find_payload(args) print(json.dumps( payl, indent=4, default=str, sort_keys=True, )) else: print("Incorrect number of args sent!") def do_stats(self, args): """Displays some statistics about the device running, must supply short name of the device""" if len(args.split()) == 2: self.DeviceManager.find_stats(args) else: print("Incorrect number of args sent!") def do_quit(self, args): """Quits the program.""" print("--------------------") print("Quitting.") print("Removing all Devices") self.DeviceManager.remove_all_devices() raise SystemExit
def test_add_device(): dm = DeviceManager(Fake_log()) dm.add_device('123')