def _add_rm_multi_tags(self, add, context, exaile): '''Add or remove tags from multiple tracks''' tracks = context['selected-tracks'] dialog = gt_widgets.GroupTaggerAddRemoveDialog(add, tracks, exaile) if add: dialog.tagger.set_categories([], get_group_categories()) else: groups = set() for track in tracks: groups |= get_track_groups(track) dialog.tagger.add_groups(groups) # TODO: something more dynamic dialog.set_size_request(250, 500) retval = dialog.run() groups = {} if retval == Gtk.ResponseType.APPLY: groups = set(dialog.get_active()) dialog.destroy() if len(groups) > 0: for track in tracks: existing = get_track_groups(track) if add: set_track_groups(track, existing | groups) else: set_track_groups(track, existing - groups)
def run(self): total = float(len(self.data)) for i, (curtrack, newgroups) in enumerate(self.data): if self.replace: set_track_groups(curtrack, newgroups) else: curgroups = get_track_groups(curtrack) | newgroups set_track_groups(curtrack, curgroups) glib.idle_add(self.emit, 'progress-update', int(((i+1)/total)*100)) if self.do_stop: return glib.idle_add(self.emit, 'done')
def track_update_thread(trackdata, replace): ''' Sets new groups on a set of tracks ''' total = len(trackdata) for i, (curtrack, newgroups) in enumerate(trackdata): if replace: set_track_groups(curtrack, newgroups) else: curgroups = get_track_groups(curtrack) | newgroups set_track_groups(curtrack, curgroups) yield (i, total)
def on_replace_clicked(self, widget): tracks = [row[2] for row in self.tracks_list.get_model() if row[1]] replace_str = self.replace_entry.get_text().strip() if replace_str: query = _("Replace '%s' with '%s' on %s tracks?") % ( self.search_str, replace_str, len(tracks)) else: query = _("Delete '%s' from %s tracks?") % (self.search_str, len(tracks)) if dialogs.yesno(self, query) != Gtk.ResponseType.YES: return for track in tracks: groups = gt_common._get_track_groups(track, self.tagname) if self.search_str != '': groups.discard(self.search_str) if replace_str != '': groups.add(replace_str) if not gt_common.set_track_groups(track, groups): return dialogs.info(self, "Tags successfully renamed!") self.reset()
def on_group_change(self, view, action, value): '''Called when a group is added/deleted/updated on the widget''' if self.track is not None: groups = view.get_model().iter_active() if not set_track_groups(self.track, groups): self.set_display_track(self.track, force_update=True)
def run(self): total = float(len(self.data)) for i, (curtrack, newgroups) in enumerate(self.data): if self.replace: set_track_groups(curtrack, newgroups) else: curgroups = get_track_groups(curtrack) | newgroups set_track_groups(curtrack, curgroups) glib.idle_add(self.emit, 'progress-update', int(((i + 1) / total) * 100)) if self.do_stop: return glib.idle_add(self.emit, 'done')
def on_replace_clicked(self, widget): tracks = [row[2] for row in self.tracks_list.get_model() if row[1]] query = _("Replace '%s' with '%s' on %s tracks?") % (self.search_str, self.replace_str, len(tracks)) if dialogs.yesno(self, query) != Gtk.ResponseType.YES: return for track in tracks: groups = gt_common._get_track_groups(track, self.tagname) if self.search_str != '': groups.discard(self.search_str) if self.replace_str != '': groups.add(self.replace_str) if not gt_common.set_track_groups(track, groups): return dialogs.info(self, "Tags successfully renamed!") self.reset()
def on_replace_clicked(self, widget): tracks = [row[2] for row in self.tracks_list.get_model() if row[1]] query = _("Replace '%s' with '%s' on %s tracks?") % ( self.search_str, self.replace_str, len(tracks)) if dialogs.yesno(self.window, query) != gtk.RESPONSE_YES: return for track in tracks: groups = gt_common._get_track_groups(track, self.tagname) if self.search_str != '': groups.discard(self.search_str) if self.replace_str != '': groups.add(self.replace_str) if not gt_common.set_track_groups(track, groups): return dialogs.info(self.window, "Tags successfully renamed!") self.reset()