def run_direct(cmd): from menus import Menu try: log("addon: start script.pulseequalizer.gui addon") m = Menu() m.sel_menu(cmd) log("addon: end script.pulseequalizer.gui addon") except Exception as e: handle(e)
class Launcher(): def __init__(self, name): self.menu = Menu() self.pname = "{}.{}".format(name, os.getppid()) self.ppath = path_pipe + self.pname self.exit_str = "sfdaoekga" def wait_user_action(self): try: log("launcher: wait for user action") with open(self.ppath) as f: result = f.read() return result except OSError as e: handle(e) return self.exit_str def loop(self): log("launcher: start {}".format(self.ppath)) try: os.makedirs(path_pipe) except OSError: pass try: os.mkfifo(self.ppath) except OSError: pass lock = path_pipe + "lock" while True: try: result = self.wait_user_action() if result == self.exit_str: break log("launcher: start menu {}".format(result)) self.menu.sel_menu(result) except Exception as e: handle(e) try: os.remove(lock) except OSError: pass try: os.remove(self.ppath) except OSError: pass log("launcher: stop") def stop(self): try: with open(self.ppath, "w") as f: f.write(self.exit_str) except OSError: pass def start(self): try: os.remove(path_pipe + "lock") except OSError: pass threading.Thread(target=self.loop).start()