Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
def test_add_device():
    dm = DeviceManager(Fake_log())
    dm.add_device('123')