def populate_playlists_for_menu(self, playlistinfo): if self.mergepl_id: self.UIManager().remove_ui(self.mergepl_id) if self.actionGroupPlaylists: self.UIManager().remove_action_group(self.actionGroupPlaylists) self.actionGroupPlaylists = None self.actionGroupPlaylists = Gtk.ActionGroup('MPDPlaylists') self.UIManager().ensure_update() actions = [("Playlist: %s" % playlist.replace("&", ""), Gtk.STOCK_JUSTIFY_CENTER, ui.quote_label(misc.unescape_html(playlist)), None, None, self.on_playlist_menu_click) for playlist in playlistinfo] self.actionGroupPlaylists.add_actions(actions) uiDescription = """ <ui> <popup name="mainmenu"> <menu action="plmenu"> """ uiDescription += "".join('<menuitem action=\"%s\"/>' % action[0] for action in actions) uiDescription += '</menu></popup></ui>' self.mergepl_id = self.UIManager().add_ui_from_string(uiDescription) self.UIManager().insert_action_group(self.actionGroupPlaylists, 0) self.UIManager().get_widget('/hidden').set_property('visible', False) # If we're not on the Current tab, prevent additional menu items # from displaying: self.update_menu_visibility()
def populate_playlists_for_menu(self, playlistinfo): if self.mergepl_id: self.UIManager().remove_ui(self.mergepl_id) if self.actionGroupPlaylists: self.UIManager().remove_action_group(self.actionGroupPlaylists) self.actionGroupPlaylists = None self.actionGroupPlaylists = Gtk.ActionGroup('MPDPlaylists') self.UIManager().ensure_update() actions = [ ("Playlist: %s" % playlist.replace("&", ""), Gtk.STOCK_JUSTIFY_CENTER, ui.quote_label(misc.unescape_html(playlist)), None, None, self.on_playlist_menu_click) for playlist in playlistinfo] self.actionGroupPlaylists.add_actions(actions) uiDescription = """ <ui> <popup name="mainmenu"> <menu action="plmenu"> """ uiDescription += "".join('<menuitem action=\"%s\"/>' % action[0] for action in actions) uiDescription += '</menu></popup></ui>' self.mergepl_id = self.UIManager().add_ui_from_string(uiDescription) self.UIManager().insert_action_group(self.actionGroupPlaylists, 0) self.UIManager().get_widget('/hidden').set_property('visible', False) # If we're not on the Current tab, prevent additional menu items # from displaying: self.update_menu_visibility()
def on_streams_edit(self, action): model, selected = self.streams_selection.get_selected_rows() try: streamname = misc.unescape_html(model.get_value(model.get_iter(selected[0]), 1)) for i, name in enumerate(self.config.stream_names): if name == streamname: self.on_streams_new(action, i) return except: pass
def on_streams_edit(self, action): model, selected = self.streams_selection.get_selected_rows() try: streamname = misc.unescape_html( model.get_value(model.get_iter(selected[0]), 1)) for i, name in enumerate(self.config.stream_names): if name == streamname: self.on_streams_new(action, i) return except: pass
def get_lyrics_response(self, artist_then, title_then, song_dir, lyrics=None, error=None): if lyrics and not error: filename = self.target_lyrics_filename(artist_then, title_then, song_dir) # Save lyrics to file: misc.create_dir('~/.lyrics/') try: with open(filename, 'w', encoding="utf-8") as f: lyrics = misc.unescape_html(lyrics) f.write(lyrics) except IOError: pass self._show_lyrics(artist_then, title_then, lyrics, error)
def get_lyrics_response(self, artist_then, title_then, song_dir, lyrics=None, error=None): if lyrics and not error: filename = target_lyrics_filename(self.config, artist_then, title_then, song_dir) # Save lyrics to file: misc.create_dir('~/.lyrics/') self.logger.info("Saving lyrics to: %s", filename) try: with open(filename, 'w', encoding="utf-8") as f: lyrics = misc.unescape_html(lyrics) f.write(lyrics) except IOError as e: self.logger.warning("Can't save lyrics to %s: %s", filename, e) self.communicate(artist_then, title_then, lyrics, error)
def on_playlist_menu_click(self, action): plname = misc.unescape_html(action.get_name().replace("Playlist: ", "")) text = ('Would you like to replace the existing playlist or append' 'these songs?') response = ui.show_msg(self.window, _(text), _("Existing Playlist"), "existingPlaylist", (_("Replace playlist"), 1, _("Append songs"), 2), default=self.config.existing_playlist_option) if response == 1: # Overwrite self.config.existing_playlist_option = response self.mpd.playlistclear(plname) self.add_selected_to_playlist(plname) elif response == 2: # Append songs: self.config.existing_playlist_option = response self.add_selected_to_playlist(plname)
def on_playlist_rename(self, _action): model, selected = self.playlists_selection.get_selected_rows() oldname = misc.unescape_html( model.get_value(model.get_iter(selected[0]), 1)) plname = self.prompt_for_playlist_name(_("Rename Playlist"), 'renamePlaylist', oldname) if plname: if self.playlist_name_exists(_("Rename Playlist"), 'renamePlaylistError', plname, oldname): return self.playlist_create(plname, oldname) # Re-select item: row = 0 for pl in self.playlistsdata: if pl[1] == plname: self.playlists_selection.select_path((row,)) return row = row + 1
def on_playlist_rename(self, _action): model, selected = self.playlists_selection.get_selected_rows() oldname = misc.unescape_html( model.get_value(model.get_iter(selected[0]), 1)) plname = self.prompt_for_playlist_name(_("Rename Playlist"), 'renamePlaylist', oldname) if plname: if self.playlist_name_exists(_("Rename Playlist"), 'renamePlaylistError', plname, oldname): return self.playlist_create(plname, oldname) # Re-select item: row = 0 for pl in self.playlistsdata: if pl[1] == plname: self.playlists_selection.select_path((row, )) return row = row + 1
def on_playlist_menu_click(self, action): plname = misc.unescape_html(action.get_name().replace( "Playlist: ", "")) text = ('Would you like to replace the existing playlist or append' 'these songs?') response = ui.show_msg( self.window, _(text), _("Existing Playlist"), "existingPlaylist", (_("Replace playlist"), 1, _("Append songs"), 2), default=self.config.existing_playlist_option) if response == 1: # Overwrite self.config.existing_playlist_option = response self.mpd.playlistclear(plname) self.add_selected_to_playlist(plname) elif response == 2: # Append songs: self.config.existing_playlist_option = response self.add_selected_to_playlist(plname)
def _set_lyrics(self, lyrics): if lyrics is None: return lyrics_buf = self.lyrics_text.get_buffer() lyrics_buf.set_text('') # pango needs only ampersand to be escaped lyrics = misc.unescape_html(lyrics).replace('&', '&') try: attr_list, plain_text, accel_marker = Pango.parse_markup(lyrics) except: # failed to parse, use lyrics as it is lyrics_buf.set_text(lyrics) return attr_iter = attr_list.get_iterator() while True: range = attr_iter.range() font = attr_iter.get_font()[0] text = plain_text[range[0]:range[1]] tags = [] if font.get_weight() == Pango.Weight.BOLD: tags.append('bold') if font.get_style() == Pango.Style.ITALIC: tags.append('italic') if tags: lyrics_buf.insert_with_tags_by_name(lyrics_buf.get_end_iter(), text, *tags) else: lyrics_buf.insert(lyrics_buf.get_end_iter(), text) if not attr_iter.next(): break