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