示例#1
0
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)
示例#2
0
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()