mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-06-23 15:30:45 -04:00
IGN:Subsort on first sort and fix calibre filename invocation when working directory is different
This commit is contained in:
parent
d7c1af9b99
commit
3e992f4e78
@ -1568,6 +1568,8 @@ def main(args=sys.argv):
|
|||||||
QCoreApplication.setApplicationName(APP_UID)
|
QCoreApplication.setApplicationName(APP_UID)
|
||||||
single_instance = None if SingleApplication is None else SingleApplication('calibre GUI')
|
single_instance = None if SingleApplication is None else SingleApplication('calibre GUI')
|
||||||
if not singleinstance('calibre GUI'):
|
if not singleinstance('calibre GUI'):
|
||||||
|
if len(args) > 1:
|
||||||
|
args[1] = os.path.abspath(args[1])
|
||||||
if single_instance is not None and single_instance.is_running() and \
|
if single_instance is not None and single_instance.is_running() and \
|
||||||
single_instance.send_message('launched:'+repr(args)):
|
single_instance.send_message('launched:'+repr(args)):
|
||||||
return 0
|
return 0
|
||||||
|
@ -157,6 +157,7 @@ class ResultCache(SearchQueryParser):
|
|||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._map = self._map_filtered = self._data = []
|
self._map = self._map_filtered = self._data = []
|
||||||
|
self.first_sort = True
|
||||||
SearchQueryParser.__init__(self)
|
SearchQueryParser.__init__(self)
|
||||||
|
|
||||||
def __getitem__(self, row):
|
def __getitem__(self, row):
|
||||||
@ -269,25 +270,28 @@ class ResultCache(SearchQueryParser):
|
|||||||
if ans != 0: return ans
|
if ans != 0: return ans
|
||||||
return cmp(self._data[x][10], self._data[y][10])
|
return cmp(self._data[x][10], self._data[y][10])
|
||||||
|
|
||||||
def cmp(self, loc, x, y, str=True):
|
def cmp(self, loc, x, y, str=True, subsort=False):
|
||||||
try:
|
try:
|
||||||
ans = cmp(self._data[x][loc].lower(), self._data[y][loc].lower()) if str else\
|
ans = cmp(self._data[x][loc].lower(), self._data[y][loc].lower()) if str else\
|
||||||
cmp(self._data[x][loc], self._data[y][loc])
|
cmp(self._data[x][loc], self._data[y][loc])
|
||||||
except AttributeError: # Some entries may be None
|
except AttributeError: # Some entries may be None
|
||||||
ans = cmp(self._data[x][loc], self._data[y][loc])
|
ans = cmp(self._data[x][loc], self._data[y][loc])
|
||||||
#if ans != 0: return ans
|
if subsort and ans == 0:
|
||||||
#return cmp(self._data[x][11].lower(), self._data[y][11].lower())
|
return cmp(self._data[x][11].lower(), self._data[y][11].lower())
|
||||||
return ans
|
return ans
|
||||||
|
|
||||||
def sort(self, field, ascending):
|
def sort(self, field, ascending, subsort=False):
|
||||||
field = field.lower().strip()
|
field = field.lower().strip()
|
||||||
if field in ('author', 'tag', 'comment'):
|
if field in ('author', 'tag', 'comment'):
|
||||||
field += 's'
|
field += 's'
|
||||||
if field == 'date': field = 'timestamp'
|
if field == 'date': field = 'timestamp'
|
||||||
elif field == 'title': field = 'sort'
|
elif field == 'title': field = 'sort'
|
||||||
elif field == 'authors': field = 'author_sort'
|
elif field == 'authors': field = 'author_sort'
|
||||||
|
if self.first_sort:
|
||||||
|
subsort = True
|
||||||
|
self.first_sort = False
|
||||||
fcmp = self.seriescmp if field == 'series' else \
|
fcmp = self.seriescmp if field == 'series' else \
|
||||||
functools.partial(self.cmp, FIELD_MAP[field],
|
functools.partial(self.cmp, FIELD_MAP[field], subsort=subsort,
|
||||||
str=field not in ('size', 'rating', 'timestamp'))
|
str=field not in ('size', 'rating', 'timestamp'))
|
||||||
|
|
||||||
self._map.sort(cmp=fcmp, reverse=not ascending)
|
self._map.sort(cmp=fcmp, reverse=not ascending)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user