All pastes #189040 Raw Edit

Kushal Das

public python v1 · immutable
·published 2006-10-02 19:24 UTC
rendered paste body
#!/usr/bin/python#######################################################################	Author : Kushal Das#	Copyright (c)  2006 Kushal Das#	kushal@fedoraproject.org#	#	Copyright: See COPYING file that comes with this distribution#######################################################################from Kphotobymail.kphotobymailUI import kphotobymailUIfrom qt import *from qttable import QTableItemfrom Kphotobymail.kphotobymail_con import kphotobymail_confrom Kphotobymail.aboutui import aboutUIfrom Kphotobymail.mail import kdMailimport cPickle as pimport sysimport osimport Kphotobymail.EXIF as EXIFfrom kdecore import *from kdeui import *from dcopext import DCOPClient, DCOPAppfrom dcopexport import DCOPExObjclass kphotobymailApp(QApplication):	"""The main QApplication class	"""	def __init__(self,args):		QApplication.__init__(self,args)		self.maindialog=Kphotobymail(None,self)		self.setMainWidget(self.maindialog)		self.maindialog.show()		self.exec_loop()		class Kphotobymail(kphotobymailUI):		""" The widget class		"""		def __init__(self,parent,qApp):			kphotobymailUI.__init__(self,parent)			self.setFixedSize(680,530)			#Check if configuration directory exists. If not, create it.			self.configPrefix = os.path.join(os.path.expanduser('~'), ".kphotobymail")			if not os.path.exists(self.configPrefix):				os.mkdir(self.configPrefix)				tempStr = 'cp /etc/kphotobymail.data ' + self.configPrefix				os.popen(tempStr)			self.stB = self.statusBar()			self.progressBar=QProgressBar()			self.stB.addWidget(self.progressBar,0,True)			self.progressBar.setFixedHeight(12)			self.qApp = qApp			self.currentPath = os.path.expanduser('~')			self.fileDialog = QFileDialog(self.currentPath)			self.fileDialog.setPreviewMode(QFileDialog.Contents)			self.systray = KSystemTray(parent)			self.systray.setPixmap(QPixmap(UserIcon(self.icon)))			self.connect(self.systray, SIGNAL("quitSelected()"), self.quit)					def select(self):			""" It opens a select Box & selects the files			"""			self.fileDialog.setDir(self.currentPath)			names = self.fileDialog.getOpenFileNames("Images (*.png *.jpg *.JPG)",'',self,"Select pics","Select Pics")			self.currentPath = str(self.fileDialog.dirPath())			for name in names:				i = self.fileTable.numRows()				self.fileTable.insertRows(i)				self.fileTable.setItem(i,0,QTableItem(self.fileTable,QTableItem.Never,name))		def upload(self):			"""It will create a kdMail object & passes the configuration info along			with the file names,tiles,descriptions.			"""			self.fileTable.setReadOnly(True)			f = file(self.configPrefix+'/kphotobymail.data')			data = p.load(f)			filenumbers = self.fileTable.numRows()			if filenumbers == 0:				self.message("Select File(s) first")				return			self.uploadBttn.setEnabled(0)			self.files = []			for i in range(0,filenumbers):				entry = []				entry.append( str(self.fileTable.text(i,0)))				entry.append( str(self.fileTable.text(i,1)))				entry.append( str(self.fileTable.text(i,2)))				self.files.append(entry)			self.fileTable.setReadOnly(False)			km = kdMail(self.files,data,self)			km.start()						def picChange(self):			""" To change the pictures as the user clicks different rows			"""			i = self.fileTable.currentRow()			self.tagClear()			if i != -1: 				qm = QImage(self.fileTable.text(i,0))				qm = qm.scale(250,190,QImage.ScaleMin)				qx = QPixmap(qm)				self.picLabel.setFixedSize(qx.size())				self.picLabel.setPixmap(qx)				self.getExif(self.fileTable.text(i,0))				def rowDel(self):			""" When user double clicks it will delete a row			"""			i = self.fileTable.currentRow()			self.fileTable.removeRow(i)			self.picLabel.setFixedSize(QSize(250,190))			self.picLabel.setPixmap(self.image0)			self.tagClear()					def config(self):			"""Open configuration dialog			"""			self.con = kphotobymail_con()			self.con.show()		def about(self):			"""Open about dialog			"""			self.abt = aboutUI()			self.abt.show()				def clearAll(self):			"""Clear all Selected files"""			for i in range(0,self.fileTable.numRows()):				self.fileTable.removeRow(0)			self.progressBar.reset()			self.picLabel.setFixedSize(QSize(250,190))			self.picLabel.setPixmap(self.image0)			self.tagClear()						def message(self,mes):			"""Show error message"""			self.stB.message(mes,5000)				def progress(self,pro):			"""Update the progressBar"""			self.progressBar.setProgress(pro)					def getExif(self,file):			"""Get EXIF data"""			try:				f = open(str(file),'rb')				tags = EXIF.process_file(f)				f.close()				self.makeLabel.setText(str(tags['Image Make']))				self.modelLabel.setText(str(tags['Image Model']))				self.xresLabel.setText(str(tags['Image XResolution']))				self.yresLabel.setText(str(tags['Image YResolution']))				self.orientationLabel.setText(str(tags['Image Orientation']))				self.datetimeLabel.setText(str(tags['Image DateTime']))				self.isoLabel.setText(str(tags['EXIF ISOSpeedRatings']))				self.exposuretimeLabel.setText(str(tags['EXIF ExposureTime'])+' sec.')				temp = str(tags['EXIF FNumber'])				tempAt = temp.find('/')				num1 = float(temp[:tempAt])				num2 = float(temp[tempAt+1:])				s = "%.1f" % (num1/num2)				self.fnumberLabel.setText('f/'+s)				self.maxapertureLabel.setText(str(tags['EXIF MaxApertureValue']))				temp = str(tags['EXIF FocalLength'])				tempAt = temp.find('/')				num1 = float(temp[:tempAt])				num2 = float(temp[tempAt+1:])				s = "%.1f" % (num1/num2)				self.focallengthLabel.setText(s+' mm.')			except:				print "No problem"						def tagClear(self):			self.makeLabel.setText('')			self.modelLabel.setText('')			self.xresLabel.setText('')			self.yresLabel.setText('')			self.orientationLabel.setText('')			self.datetimeLabel.setText('')			self.isoLabel.setText('')			self.exposuretimeLabel.setText('')			self.fnumberLabel.setText('')			self.maxapertureLabel.setText('')			self.focallengthLabel.setText('')if __name__=="__main__":	kApp=kphotobymailApp(sys.argv)