Пример #1
0
    def orderingconvert(self):
        """convert ordering between group mode and all tracks mode"""
        # self.prevgroup indicates the previous mode
        newordering = []
        newsortcol = None
        to_track = (self.prevgroup != "")
        for oo in self.ordering:
            # oo is from interval [-inf;-1] [1;inf]
            # it must be converted to column index, sign remebered and then applied afterwards
            sign = oo > 0
            oo = oo - 1 if sign else - 1 - oo
            rr = GroupTrack.translateorder(to_track, oo)
            if rr < 0:
                continue
            #if newsortcol == None: # the first ordering is the most recent
            newsortcol = rr + 1 if sign else - 1 - oo
            newordering.append(newsortcol)
        # backup is currently useful only for grouptracks (switching from track)
        if to_track: # to track - save backup
            self.ordbackup = None
            if not self.ordering:
                self.ordbackup = 1
            elif abs(self.ordering[-1]) == 1:
                self.ordbackup = self.ordering[-1]
        else: # to grouptrack - restore backup
            if self.ordbackup != None:
                newsortcol = self.ordbackup
                newordering.append(newsortcol)
                self.ordbackup = None

        self.ordering = newordering
        return newsortcol