| 
					
				 | 
			
			
				@@ -1,4 +1,4 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#!/usr/bin/python3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#!/usr/bin/python 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 """ a simple gui or command line app 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 to view and create/edit file comments 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -15,7 +15,8 @@ these comments stick to the symlink 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import sys,os,argparse 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from dirWidget2 import DirWidget 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-from tkinter import * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from Tkinter import * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from ttk import * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import xattr, sqlite3, time 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 VERSION = "0.2" 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -94,6 +95,11 @@ class FileObj(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			pass 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	def getName(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return self.fileName 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	def getShortName(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if self.fileName[-1]=='/':	#do show dirs, they can have comments 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return os.path.basename(self.fileName[:-1])+'/' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return os.path.basename(self.fileName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	def getComment(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return self.comment 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	def setComment(self,newComment): 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -117,19 +123,14 @@ class DirNotes(Frame): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		has 3 list boxes: dir_left, dir_right (may be invisible) and files 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		''' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	def __init__(self, filename, db, parent=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		super(DirNotes,self).__init__(parent) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	def __init__(self, parent, filename, db): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Frame.__init__(self,parent) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		self.db = db 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		win = QWidget() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		self.setCentralWidget(win) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		lb = QTableWidget() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		self.lb = lb 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		lb.setColumnCount(2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		lb.horizontalHeader().setResizeMode( 1, QHeaderView.Stretch ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		lb.verticalHeader().setDefaultSectionSize(20);	# thinner rows 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		lb.verticalHeader().setVisible(False) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		self.lb = lb = Treeview(self) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		lb['columns'] = ('comment') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		lb.heading('#0',text='Name') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		lb.heading('comment',text='Comment') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		# resize the comments column 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		# and resize the parent window to match the directory size 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -143,49 +144,50 @@ class DirNotes(Frame): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		files.sort() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		d = dirs + files 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		lb.setRowCount(len(d)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		self.files = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		for i in range(len(d)): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			this_file = FileObj(current+'/'+d[i]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			self.files = self.files + [this_file] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			item = QTableWidgetItem(this_file.getName()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			item.setFlags(QtCore.Qt.ItemIsEnabled) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			lb.setItem(i,0,item) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			lb.insert('','end',iid=str(i),text=this_file.getShortName(),) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			#lb.itemAt(i,0).setFlags(Qt.ItemIsEnabled) #NoItemFlags) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			comment = this_file.getComment() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			lb.setItem(i,1,QTableWidgetItem(comment)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		lb.setHorizontalHeaderItem(0,QTableWidgetItem("file")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		lb.setHorizontalHeaderItem(1,QTableWidgetItem("comment")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		lb.resizeColumnsToContents() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			lb.set(item=str(i),column='comment',value=comment) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		e = QLabel("View and edit file comments stored in extended attributes user.xdg.comment",win) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		e2 = Label(self,text="View and edit file comments stored in extended attributes user.xdg.comment") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		e1 = Label(self,text="Active Directory:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		b1 = QPushButton("restore from database",win) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		dirLeft = DirWidget(current,win) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		dirLeft.setMaximumHeight(140) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		dirLeft.setMaximumWidth(200) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		dirRight = DirWidget(current,win) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		dirRight.setMaximumHeight(140) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		dirRight.setMaximumWidth(200) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		dirRight.setEnabled(False) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		b1 = Button(self,text="restore from database") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		dirLeft = DirWidget(self,current) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		#dirLeft.setMaximumHeight(140) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		#dirLeft.setMaximumWidth(200) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		dirRight = DirWidget(self,current) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		#~ dirRight.setMaximumHeight(140) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		#~ dirRight.setMaximumWidth(200) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		#~ dirRight.setEnabled(False) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		layout = QVBoxLayout() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		upperLayout = QHBoxLayout() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		layout.addWidget(e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		upperLayout.addWidget(dirLeft) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		upperLayout.addWidget(b1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		upperLayout.addWidget(dirRight) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		layout.addLayout(upperLayout) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		layout.addWidget(lb) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		win.setLayout(layout) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		#~ layout = QVBoxLayout() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		#~ upperLayout = QHBoxLayout() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		#~ layout.addWidget(e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		#~ upperLayout.addWidget(dirLeft) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		#~ upperLayout.addWidget(b1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		#~ upperLayout.addWidget(dirRight) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		#~ layout.addLayout(upperLayout) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		#~ layout.addWidget(lb) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		#~ win.setLayout(layout) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		lb.itemChanged.connect(self.change) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		b1.pressed.connect(self.restore_from_database) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		#~ lb.itemChanged.connect(self.change) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		#~ b1.pressed.connect(self.restore_from_database) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		QShortcut(QKeySequence("Ctrl+Q"), self, self.close)	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		self.setWindowTitle("test") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		self.setMinimumSize(600,400) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		#~ QShortcut(QKeySequence("Ctrl+Q"), self, self.close)	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		#~ self.setWindowTitle("test") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		#~ self.setMinimumSize(600,400) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		e1.pack(anchor=W,padx=20) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		dirLeft.pack(anchor=W,padx=20,pady=5) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		e2.pack() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		lb.pack() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	def closeEvent(self,e): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		print("closing") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -212,6 +214,7 @@ if __name__=="__main__": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	db = DataBase() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	tk_basis = Tk() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	tk_basis.title("DirNotes "+p.dirname) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	dn = DirNotes(tk_basis,p.dirname,db) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	dn.pack() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -263,4 +266,8 @@ user.xdg.publisher 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			-choose & cancel buttons 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	''' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+''' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+http://stackoverflow.com/questions/18562123/how-to-make-ttk-treeviews-rows-editable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+''' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |