def __ctrl_shutdown_system(self): shutdown_cmd = config.get_system_shutdown_command() if shutdown_cmd: log.debug("run shutdown command") try: subprocess.Popen(shutdown_cmd, shell=True) except OSError, e: log.warning("failed to run shutdown command (%s)", e) return self.stop()
def __util_calc_flags(self, playback_known, volume_known, repeat_known, shuffle_known, progress_known): """Check player adapter capabilities. Most capabilities get detected by testing which methods have been overridden by a subclassing player adapter. """ def ftc(cond, feature): if inspect.ismethod(cond): # check if overridden enabled = cond.__module__ != __name__ else: enabled = cond if enabled: return feature else: return 0 features = ( # --- 'is known' features --- ftc(playback_known, FT_KNOWN_PLAYBACK), ftc(volume_known, FT_KNOWN_VOLUME), ftc(self.config.custom_volume_cmd, FT_KNOWN_VOLUME), ftc(repeat_known, FT_KNOWN_REPEAT), ftc(shuffle_known, FT_KNOWN_SHUFFLE), ftc(progress_known, FT_KNOWN_PROGRESS), # --- misc control features --- ftc(self.ctrl_toggle_playing, FT_CTRL_PLAYBACK), ftc(self.ctrl_volume, FT_CTRL_VOLUME), ftc(self.config.custom_volume_cmd, FT_CTRL_VOLUME), ftc(self.ctrl_seek, FT_CTRL_SEEK), ftc(self.ctrl_tag, FT_CTRL_TAG), ftc(self.ctrl_rate, FT_CTRL_RATE), ftc(self.ctrl_toggle_repeat, FT_CTRL_REPEAT), ftc(self.ctrl_toggle_shuffle, FT_CTRL_SHUFFLE), ftc(self.ctrl_next, FT_CTRL_NEXT), ftc(self.ctrl_previous, FT_CTRL_PREV), ftc(self.ctrl_toggle_fullscreen, FT_CTRL_FULLSCREEN), # --- request features --- ftc(self.request_playlist, FT_REQ_PL), ftc(self.request_queue, FT_REQ_QU), ftc(self.request_mlib, FT_REQ_MLIB), ftc(config.get_system_shutdown_command(), FT_SHUTDOWN), ) flags = 0 for feature in features: flags |= feature log.debug("flags: %X" % flags) return flags