コード例 #1
0
    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)
コード例 #2
0
ファイル: gt_import.py プロジェクト: eri-trabiccolo/exaile
 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')
コード例 #3
0
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)
コード例 #4
0
ファイル: gt_import.py プロジェクト: Zarokka/exaile
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)
コード例 #5
0
    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()
コード例 #6
0
    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)
コード例 #7
0
ファイル: gt_import.py プロジェクト: thiblahute/exaile
    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')
コード例 #8
0
ファイル: gt_mass.py プロジェクト: BlubberHarpoonist/exaile
    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()
コード例 #9
0
ファイル: gt_mass.py プロジェクト: thiblahute/exaile
    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()