All pastes #58057 Raw Edit

Untitled

public text v1 · immutable
#58057 ·published 2006-05-22 17:09 UTC
rendered paste body
import sys
try:
 	import pygtk
  	pygtk.require("2.0")
except:
  	pass
try:
	import gtk
  	import gtk.glade
except:
	sys.exit(1)
	
import os
import threading
import time
import gobject

class HellowWorldGTK:
	"""This is an Hello World GTK application"""

	def __init__(self):
		
		#Set the Glade file
		self.gladefile = "afarrr/afarrr.glade"  
	        self.wTree = gtk.glade.XML(self.gladefile) 
		
		dic = { "on_closeButton_clicked" : gtk.main_quit,
		"on_findButton_clicked" : self.findButton_clicked,
		"on_findAndReplaceButton_clicked" : self.findAndReplaceButton_clicked,
		"on_afar_dialog_close" : gtk.main_quit }
		self.wTree.signal_autoconnect(dic)
		
		self.dialog = self.wTree.get_widget("afar-dialog")
		
		#Tree Result
		self.treeview=self.wTree.get_widget("resultsTreeView")
		
		self.treemodel=gtk.TreeStore(gobject.TYPE_STRING,
									 gobject.TYPE_STRING)
									 
		self.treeview.set_model(self.treemodel)
		self.treeview.set_headers_visible(True)
		
		renderer=gtk.CellRendererText()
		column=gtk.TreeViewColumn("Path",renderer,text=0)
		column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
		column.set_fixed_width(250)
		column.set_resizable(True)
		self.treeview.append_column(column)
		renderer=gtk.CellRendererText()
		column=gtk.TreeViewColumn("Line",renderer,text=1)
		column.set_resizable(True)
		self.treeview.append_column(column)
		self.treeview.show()
		
		#Directory Chooser
		self.dirchooser = self.wTree.get_widget("directoryChooser")
		
		#Results Expander
		self.resultsExpander = self.wTree.get_widget("resultsExpander")
		
		#Find Entry
		self.findEntry = self.wTree.get_widget("findEntry")
		
		#Replace with Entry
		self.replaceEntry = self.wTree.get_widget("replaceEntry")

		
		
	def closeButton_clicked(self, widget):
		gtk.Widget.destroy
		
	def findButton_clicked(self, widget):
		self.find_in_directory()
		
	def findAndReplaceButton_clicked(self, widget):
		self.find_in_directory(True)
	
	
	def add_result(self,parent,pathColumn,lineColumn):
		model = self.treemodel
		myiter=model.insert_after(parent,None)
		model.set_value(myiter,0,pathColumn)
		model.set_value(myiter,1,lineColumn)
		return myiter
		
	def find_in_directory(self,replace=False):
		self.resultsExpander.set_expanded(True)
		self.treemodel.clear()
		dirChooser = self.dirchooser
		findEntry = self.findEntry
		replaceEntry = self.replaceEntry
		
		#self.add_result(None,dirChooser.get_filename(),None)
		if findEntry.get_buffer().get_char_count() == 0:
			self.add_result(None,"I dont know what is need to be found" ,None)
			findEntry.grab_focus()
			return
		elif replace == True and replaceEntry.get_buffer().get_char_count() == 0:
			self.add_result(None,"I dont know what is used to be replacment",None)
			replaceEntry.grab_focus()
			return
			
		dirPath = dirChooser.get_filename()
		findString = findEntry.get_buffer().get_text(*findEntry.get_buffer().get_bounds())
		replaceString = replaceEntry.get_buffer().get_text(*replaceEntry.get_buffer().get_bounds())
		t = MyThread(self,dirPath,findString,replaceString)
		t.start()
		#os.path.walk(dirPath, self.myfun, 3)
		#print dirPath
		
	def myfun(self,dummy, dir, files):
		for fileEntry in files:
			self.add_result(None, dir+os.sep+fileEntry,None)

class MyThread(threading.Thread):
	def __init__(self, klass, dirPath, findString, replaceString):
		super(MyThread, self).__init__()
		self.klass = klass
		self.dirPath = dirPath
		self.findString = findString
		self.replaceString = replaceString
		self.quit = False
	
	def update_result(self, path, line):
		#self.result.set_text("Counter: %i" % counter)
		print path
		return False
	
	def run(self):
		gobject.idle_add(os.path.walk,  self.dirPath, self.myfun, 3)
	 
	def myfun(self,dummy, dir, files):
		for fileEntry in files:
			self.update_result(dir+os.sep+fileEntry, None)
			#self.add_result(None, dir+os.sep+fileEntry,None)
		 
if __name__ == "__main__":
	gobject.threads_init()
	hwg = HellowWorldGTK()
	gtk.main()