예제 #1
0
 def test_natkey_handles_numeric_chars(self):
     self.assertEqual(
         natsort.natkey(
             'foo0123456789|²³|٠١٢٣٤٥٦٧٨٩|�๑๒๓๔๕๖๗๘๙|��bar'
         ), [
             strxfrm('foo'), 123456789,
             strxfrm('|²³|'), 123456789,
             strxfrm('|'), 123456789,
             strxfrm('|'), 42,
             strxfrm('bar')
         ])
예제 #2
0
    def sortkey(self, column):
        sortkey = self._sortkeys.get(column)
        if sortkey is not None:
            return sortkey

        if column == MainPanel.LENGTH_COLUMN:
            sortkey = self.obj.metadata.length or 0
        elif column in MainPanel.NAT_SORT_COLUMNS:
            sortkey = natsort.natkey(self.text(column).lower())
        else:
            sortkey = self.text(column).lower()
        self._sortkeys[column] = sortkey
        return sortkey
예제 #3
0
 def set_table_item_val(self, row, colname, value, sortkey=None):
     # QVariant remembers the original type of the data
     # matching comparison operator will be used when sorting
     # get() will return a string, force conversion if asked to
     if sortkey is None:
         sortkey = natsort.natkey(value)
     item = SortableTableWidgetItem(sortkey)
     item.setData(QtCore.Qt.DisplayRole, value)
     pos = self.colpos(colname)
     if pos == 0:
         id = self.get_value_for_row_id(row, value)
         item.setData(QtCore.Qt.UserRole, id)
     self.table.setItem(row, pos, item)
예제 #4
0
 def sortkey(self, column):
     if column == 1:
         return self.obj.metadata.length or 0
     return natsort.natkey(self.text(column).lower())
예제 #5
0
 def test_natkey_handles_null_char(self):
     self.assertEqual(natsort.natkey('foo\0'), natsort.natkey('foo'))
예제 #6
0
 def test_natkey(self):
     self.assertTrue(natsort.natkey('foo1bar') < natsort.natkey('foo02bar'))
     self.assertTrue(natsort.natkey('foo1bar') == natsort.natkey('foo01bar'))
     self.assertTrue(natsort.natkey('foo (100)') < natsort.natkey('foo (00200)'))