|
@@ -0,0 +1,84 @@
|
|
|
|
+#!/usr/bin/python
|
|
|
|
+""" a simple gui or command line app
|
|
|
|
+to view and create/edit file comments
|
|
|
|
+
|
|
|
|
+comments are stored in xattr user.xdg.comment
|
|
|
|
+
|
|
|
|
+depends on python-pyxattr
|
|
|
|
+"""
|
|
|
|
+
|
|
|
|
+COMMENT_KEY = "user.xdg.comment"
|
|
|
|
+
|
|
|
|
+import sys,os,argparse
|
|
|
|
+from PyQt4.QtGui import *
|
|
|
|
+from PyQt4 import QtGui, QtCore
|
|
|
|
+import xattr
|
|
|
|
+
|
|
|
|
+def parse():
|
|
|
|
+ parser = argparse.ArgumentParser(description='dirnotes application')
|
|
|
|
+ parser.add_argument('filename',metavar='filename',type=str,
|
|
|
|
+ nargs="*",help='filename or directory',default=".")
|
|
|
|
+ parser.add_argument('-n','--nogui',action="store_const",const="1",
|
|
|
|
+ help='use text base interface')
|
|
|
|
+ parser.add_argument('-v','--version',action='version',version='%(prog)s 0.1')
|
|
|
|
+ return parser.parse_args()
|
|
|
|
+
|
|
|
|
+def debug(x):
|
|
|
|
+ print("debugging " + x.text() + " r:" + str(x.row()) + " c:" + str(x.column()))
|
|
|
|
+
|
|
|
|
+class DirNotes(QMainWindow):
|
|
|
|
+ def __init__(self, parent=None):
|
|
|
|
+ super(DirNotes,self).__init__(parent)
|
|
|
|
+ pass
|
|
|
|
+ def closeEvent(self,e):
|
|
|
|
+ print("closing")
|
|
|
|
+
|
|
|
|
+if __name__=="__main__":
|
|
|
|
+ p = parse()
|
|
|
|
+
|
|
|
|
+ a = QApplication([])
|
|
|
|
+
|
|
|
|
+ # allow multiple entries on the line at this point
|
|
|
|
+ d = os.listdir(p.filename[0])
|
|
|
|
+ d.sort()
|
|
|
|
+
|
|
|
|
+ lb = QTableWidget()
|
|
|
|
+ lb.setRowCount(len(d))
|
|
|
|
+ lb.setColumnCount(2)
|
|
|
|
+ lb.horizontalHeader().setResizeMode( 1, QHeaderView.Stretch );
|
|
|
|
+ # resize the comments column
|
|
|
|
+ # and resize the parent window to match the directory size
|
|
|
|
+ for i in range(len(d)):
|
|
|
|
+ item = QTableWidgetItem(d[i])
|
|
|
|
+ item.setFlags(QtCore.Qt.ItemIsEnabled)
|
|
|
|
+ lb.setItem(i,0,item)
|
|
|
|
+ #lb.itemAt(i,0).setFlags(Qt.ItemIsEnabled) #NoItemFlags)
|
|
|
|
+ comment = ""
|
|
|
|
+ try:
|
|
|
|
+ comment = xattr.getxattr(d[i],COMMENT_KEY)
|
|
|
|
+ except:
|
|
|
|
+ continue
|
|
|
|
+ lb.setItem(i,1,QTableWidgetItem(comment))
|
|
|
|
+ lb.setHorizontalHeaderItem(0,QTableWidgetItem("file"))
|
|
|
|
+ lb.setHorizontalHeaderItem(1,QTableWidgetItem("comment"))
|
|
|
|
+ lb.resizeColumnsToContents()
|
|
|
|
+
|
|
|
|
+ win = QWidget()
|
|
|
|
+ layout = QVBoxLayout()
|
|
|
|
+ win.setLayout(layout)
|
|
|
|
+ e = QLabel(win)
|
|
|
|
+ e.setText("View and edit file comments stored in extended attributes user.xdg.comment")
|
|
|
|
+ layout.addWidget(e)
|
|
|
|
+ layout.addWidget(lb)
|
|
|
|
+
|
|
|
|
+ lb.itemChanged.connect(debug)
|
|
|
|
+
|
|
|
|
+ QShortcut(QKeySequence("Ctrl+Q"), win, win.close)
|
|
|
|
+ win.setWindowTitle("test")
|
|
|
|
+ win.setMinimumSize(600,400)
|
|
|
|
+ win.show()
|
|
|
|
+
|
|
|
|
+ a.exec_()
|
|
|
|
+
|
|
|
|
+ #xattr.setxattr(filename,COMMENT_KEY,commentText)
|
|
|
|
+
|