|
@@ -76,6 +76,26 @@ class DataBase:
|
|
|
@staticmethod
|
|
|
def DbToEpoch(dbTime):
|
|
|
return time.mktime(time.strptime(dbTime,"%Y-%m-%d %H:%M:%S"))
|
|
|
+ @staticmethod
|
|
|
+ def getShortDate(longDate):
|
|
|
+ e = DataBase.DbToEpoch(longDate)
|
|
|
+ sd = time.strptime(longDate,"%Y-%m-%d %H:%M:%S")
|
|
|
+ # check for this year, or today
|
|
|
+ ty = time.mktime((time.localtime()[0],1,1,0,0,0,0,1,-1))
|
|
|
+ today = time.mktime((time.localtime()[0:3]+(0,0,0,0,1,-1)))
|
|
|
+ if e < ty:
|
|
|
+ return time.strftime("%b %d %Y",sd)
|
|
|
+ elif e < today:
|
|
|
+ return time.strftime("%b %d",sd)
|
|
|
+ else:
|
|
|
+ return time.strftime("%X",sd)
|
|
|
+ #~ test code for this routine
|
|
|
+ #~ for i in range(int(time.time() - 370*24*3600),
|
|
|
+ #~ int(time.time() + 48*3600),
|
|
|
+ #~ 3599):
|
|
|
+ #~ ds = DataBase.epochToDb(i)
|
|
|
+ #~ print("%d\t%s\t%s" % (i,ds,DataBase.getShortDate(ds)))
|
|
|
+
|
|
|
|
|
|
|
|
|
def parse():
|
|
@@ -131,6 +151,16 @@ class FileObj():
|
|
|
def getSize(self):
|
|
|
return self.size
|
|
|
|
|
|
+# sortable TableWidgetItem, based on idea by Aledsandar
|
|
|
+# http://stackoverflow.com/questions/12673598/python-numerical-sorting-in-qtablewidget
|
|
|
+class SortableTableWidgetItem(QTableWidgetItem):
|
|
|
+ def __init__(self, text, sortValue):
|
|
|
+ QTableWidgetItem.__init__(self, text, QTableWidgetItem.UserType)
|
|
|
+ self.sortValue = sortValue
|
|
|
+ def __lt__(self, other):
|
|
|
+ return self.sortValue < other.sortValue
|
|
|
+
|
|
|
+
|
|
|
class DirNotes(QMainWindow):
|
|
|
''' the main window of the app
|
|
|
has 3 list boxes: dir_left, dir_right (may be invisible) and files
|
|
@@ -228,12 +258,6 @@ class DirNotes(QMainWindow):
|
|
|
def newDir(self):
|
|
|
print("change dir to "+self.dirLeft.currentPath())
|
|
|
|
|
|
- class DnTableWidgetItem(QTableWidgetItem):
|
|
|
- def __init__(self, text, value):
|
|
|
- QTableWidgetItem.__init__(self, text, QTableWidgetItem.UserType)
|
|
|
- self.value = value
|
|
|
- def __lt__(self, other):
|
|
|
- return self.value < other.value
|
|
|
|
|
|
def refill(self):
|
|
|
small_font = QFont("",8)
|
|
@@ -257,16 +281,17 @@ class DirNotes(QMainWindow):
|
|
|
#lb.itemAt(i,0).setFlags(Qt.ItemIsEnabled) #NoItemFlags)
|
|
|
comment = this_file.getComment()
|
|
|
self.lb.setItem(i,3,QTableWidgetItem(comment))
|
|
|
- da = QTableWidgetItem(this_file.getDate())
|
|
|
- da.setFont(small_font)
|
|
|
+ dt = this_file.getDate()
|
|
|
+ da = SortableTableWidgetItem(DataBase.getShortDate(dt),dt)
|
|
|
+ #da.setFont(small_font)
|
|
|
da.setFlags(QtCore.Qt.ItemIsEnabled)
|
|
|
self.lb.setItem(i,1,da)
|
|
|
si = this_file.getSize()
|
|
|
if si>=0:
|
|
|
- sa = self.DnTableWidgetItem(str(si),si)
|
|
|
+ sa = SortableTableWidgetItem(str(si),si)
|
|
|
item.setIcon(fileIcon)
|
|
|
else:
|
|
|
- sa = self.DnTableWidgetItem('',0)
|
|
|
+ sa = SortableTableWidgetItem('',0)
|
|
|
item.setIcon(dirIcon)
|
|
|
sa.setTextAlignment(QtCore.Qt.AlignRight)
|
|
|
sa.setFlags(QtCore.Qt.ItemIsEnabled)
|
|
@@ -334,6 +359,8 @@ user.xdg.publisher
|
|
|
''' to allow column-sorting, you use the sortByColumn and set the Horiz-header to clickable
|
|
|
'''
|
|
|
|
|
|
+''' TODO: add cut-copy-paste for comments '''
|
|
|
+
|
|
|
''' TODO: also need a way to display-&-restore comments from the database '''
|
|
|
|
|
|
''' QFileDialog
|