def __init__(self): self.desktop_lyrics_win = DesktopLyrics() self.desktop_lyrics_win.connect("moved", self.adjust_toolbar_rect) self.desktop_lyrics_win.connect("resized", self.adjust_toolbar_rect) self.desktop_lyrics_win.connect("hide-bg", self.hide_toolbar) self.desktop_lyrics_win.connect("show-bg", self.show_toolbar) self.desktop_lyrics_win.connect("button-press-event", self.popup_desktop_right_menu) self.desktop_lyrics_win.connect("configure-event", self.lyrics_desktop_configure_event) self.scroll_lyrics = ScrollLyrics() self.scroll_lyrics.connect("configure-event", self.lyrcis_scroll_configure_event) self.scroll_lyrics.revert_button.connect( "clicked", lambda w: self.switch_to_desktop_lyrics()) self.scroll_lyrics.connect("seek", self.seek_cb) self.scroll_lyrics.connect("right-press", self.scroll_right_press_cb) Player.connect("instant-new-song", self.instant_update_lrc) Player.connect("played", self.play_time_source) Player.connect("paused", self.pause_time_source) Player.connect("play-end", self.pause_time_source) Dispatcher.connect("reload-lrc", self.update_lrc) Dispatcher.connect("unlock-lyrics", self.__unlock_lyrics) Dispatcher.connect("lock-lyrics", self.__lock_lyrics) Dispatcher.connect("show-lyrics", lambda w: self.run()) Dispatcher.connect("close-lyrics", lambda w: self.hide_all()) Dispatcher.connect("search-lyrics", lambda w: self.open_search_window(w)) Dispatcher.connect("dialog-run", self.on_dialog_run) Dispatcher.connect("dialog-close", self.on_dialog_close) config.connect("config-changed", self.on_config_changed) self.lrc_manager = LrcManager() self.lrc = LrcParser() self.search_ui = SearchUI() self.lrc_id = -1 self.lrc_next_id = -1 self.current_line = 0 self.message_source = None self.time_source = None self.song_duration = 0 self.__find_flag = False self.__lyrics_mode = config.getint("lyrics", "mode") self.__dialog_locked_flag = False self.init_toolbar() self.current_song = None self.next_lrc_to_download = None self.condition = threading.Condition() self.thread = threading.Thread(target=self.func_thread) self.thread.setDaemon(True) self.thread.start()