class SweepGui(xbmcgui.WindowXMLDialog): def __init__(self, *_args, **kwargs): self.sock = SocketCom("server") self.rec = SocketCom("sweep") self.channel = kwargs["channel"] self.count = kwargs["count"] result = self.sock.call_func("get", "eq_channel") if result is None: return self.eqid, self.name, _ = (result) self.rec.start_func_server(self) def onInit(self): self.prog1 = self.getControl(1900) self.prog2 = self.getControl(1901) self.prog1.setPercent(0.1) self.prog2.setPercent(0.1) #self.getControl(101).setLabel("%s - %s" % (self.name, tr(32410))) self.sock.call_func("play", "sweep", [self.count, self.channel]) @staticmethod def on_sound_play(nr): log("on_sound_play %s" % nr) def on_sound_stop(self): log("on_sound_stop") self.rec.stop_server() self.close() def on_chunk_play(self, c_nr, c_size, c_cnt, c_total): self.prog1.setPercent(c_cnt * 100 / (c_total - 1)) self.prog2.setPercent(c_nr * 100 / (c_size - 1)) def end_gui(self): self.sock.call_func("stop", "tone") self.sock.call_func("stop", "pulseplayer") self.rec.stop_server() self.close() def onAction(self, action): #OK pressed if action.getId() in [7, 100]: self.end_gui() #Cancel if action.getId() in [92, 10]: self.end_gui()
class PaMonitor( xbmc.Monitor ): def __init__( self ): #strat process xbmc.Monitor.__init__( self ) xbmc.log("eq: start PulesEqualizer service",xbmc.LOGDEBUG) self.server_sock = SocketCom("kodi") if not self.server_sock.is_server_running(): self.server_sock.start_func_server(self) else: self.server_sock = None launcher = Launcher("menu") launcher.start() self.sock = SocketCom("server") ps = PulseService() ps.start() self.sock.call_func("set","device",[self.get_device()]) while not self.abortRequested(): if self.waitForAbort( 10 ): break launcher.stop() ps.stop() if self.server_sock: self.server_sock.stop_server() @staticmethod def get_device(): device = "" r_dict = json.loads(xbmc.executeJSONRPC('{"jsonrpc":"2.0", "method":"Settings.GetSettings", "params":{ "filter": {"section":"system", "category":"audio"}}, "id":1}')) for s in r_dict["result"]["settings"]: if s["id"] == "audiooutput.audiodevice": device = s["value"] break return device def on_device_get(self): result = self.get_device() xbmc.log("eq: kodi service: on_device_get %s" % result,xbmc.LOGDEBUG) return result @staticmethod def on_player_get(): r_dict = json.loads(xbmc.executeJSONRPC('{"jsonrpc":"2.0","method":"Player.GetActivePlayers","id":0}')) try: return r_dict["result"] except Exception: return None @staticmethod def on_log_write(message, level): xbmc.log(message, level) def on_service_up(self): self.sock.call_func("set","device",[self.get_device()]) def onNotification( self, _sender, method, _data ): target,func = method.lower().replace("on","").split(".") if target in ["system", "player"]: self.sock.call_func(func, target)