Merge pull request #627 from vkbo/load_project_order_bug

Fix "Open Project" list sorting issue
This commit is contained in:
Veronica K. Berglyd Olsen
2021-01-30 18:59:24 +00:00
committed by GitHub
+15 -24
View File
@@ -258,40 +258,31 @@ class GuiProjectLoad(QDialog):
def _populateList(self): def _populateList(self):
"""Populate the list box with recent project data. """Populate the list box with recent project data.
""" """
listOrder = [] dataList = []
listData = {} for projPath in self.mainConf.recentProj:
for projPath in self.mainConf.recentProj.keys():
theEntry = self.mainConf.recentProj[projPath] theEntry = self.mainConf.recentProj[projPath]
theTitle = "" theTitle = theEntry.get("title", "")
theTime = 0 theTime = theEntry.get("time", 0)
theWords = 0 theWords = theEntry.get("words", 0)
if "title" in theEntry.keys(): dataList.append([theTitle, theTime, theWords, projPath])
theTitle = theEntry["title"]
if "time" in theEntry.keys():
theTime = theEntry["time"]
if "words" in theEntry.keys():
theWords = theEntry["words"]
if theTime > 0:
listOrder.append(theTime)
listData[theTime] = [theTitle, theWords, projPath]
self.listBox.clear() self.listBox.clear()
hasSelection = False sortList = sorted(dataList, key=lambda x: x[1], reverse=True)
for timeStamp in sorted(listOrder, reverse=True): for theTitle, theTime, theWords, projPath in sortList:
newItem = QTreeWidgetItem([""]*4) newItem = QTreeWidgetItem([""]*4)
newItem.setIcon(self.C_NAME, self.theParent.theTheme.getIcon("proj_nwx")) newItem.setIcon(self.C_NAME, self.theParent.theTheme.getIcon("proj_nwx"))
newItem.setText(self.C_NAME, listData[timeStamp][0]) newItem.setText(self.C_NAME, theTitle)
newItem.setData(self.C_NAME, Qt.UserRole, listData[timeStamp][2]) newItem.setData(self.C_NAME, Qt.UserRole, projPath)
newItem.setText(self.C_COUNT, formatInt(listData[timeStamp][1])) newItem.setText(self.C_COUNT, formatInt(theWords))
newItem.setText(self.C_TIME, datetime.fromtimestamp(timeStamp).strftime("%x %X")) newItem.setText(self.C_TIME, datetime.fromtimestamp(theTime).strftime("%x %X"))
newItem.setTextAlignment(self.C_NAME, Qt.AlignLeft | Qt.AlignVCenter) newItem.setTextAlignment(self.C_NAME, Qt.AlignLeft | Qt.AlignVCenter)
newItem.setTextAlignment(self.C_COUNT, Qt.AlignRight | Qt.AlignVCenter) newItem.setTextAlignment(self.C_COUNT, Qt.AlignRight | Qt.AlignVCenter)
newItem.setTextAlignment(self.C_TIME, Qt.AlignRight | Qt.AlignVCenter) newItem.setTextAlignment(self.C_TIME, Qt.AlignRight | Qt.AlignVCenter)
newItem.setFont(self.C_TIME, self.theTheme.guiFontFixed) newItem.setFont(self.C_TIME, self.theTheme.guiFontFixed)
self.listBox.addTopLevelItem(newItem) self.listBox.addTopLevelItem(newItem)
if not hasSelection:
newItem.setSelected(True) if self.listBox.topLevelItemCount() > 0:
hasSelection = True self.listBox.topLevelItem(0).setSelected(True)
projColWidth = self.mainConf.getProjColWidths() projColWidth = self.mainConf.getProjColWidths()
if len(projColWidth) == 3: if len(projColWidth) == 3: