All pastes #1884826 Raw Edit

Anonymous

public python v1 · immutable
#1884826 ·published 2010-06-17 03:23 UTC
rendered paste body
#Bitbyte Calculator v1.0 by TheRealBanana#GUI designed in PyQt4's designer appimport sys, re, decimalfrom PyQt4 import QtCore,QtGuiclass Ui_MainWindow(object):	def setupUi(self, MainWindow):		MainWindow.setObjectName("MainWindow")		MainWindow.setEnabled(True)		MainWindow.resize(450, 200)		sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)		sizePolicy.setHorizontalStretch(0)		sizePolicy.setVerticalStretch(0)		sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())		MainWindow.setSizePolicy(sizePolicy)		MainWindow.setMinimumSize(QtCore.QSize(450, 200))		MainWindow.setMaximumSize(QtCore.QSize(450, 200))		self.InputFrame = QtGui.QFrame(MainWindow)		self.InputFrame.setEnabled(True)		self.InputFrame.setGeometry(QtCore.QRect(10, 10, 431, 61))		sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)		sizePolicy.setHorizontalStretch(0)		sizePolicy.setVerticalStretch(0)		sizePolicy.setHeightForWidth(self.InputFrame.sizePolicy().hasHeightForWidth())		self.InputFrame.setSizePolicy(sizePolicy)		self.InputFrame.setFrameShape(QtGui.QFrame.StyledPanel)		self.InputFrame.setObjectName("InputFrame")		self.InputNumber = QtGui.QLineEdit(self.InputFrame)		self.InputNumber.setGeometry(QtCore.QRect(90, 20, 221, 22))		self.InputNumber.setToolTip("")		self.InputNumber.setInputMethodHints(QtCore.Qt.ImhDigitsOnly)		self.InputNumber.setInputMask("")		self.InputNumber.setText("")		self.InputNumber.setObjectName("InputNumber")		self.InputUnit = QtGui.QComboBox(self.InputFrame)		self.InputUnit.setGeometry(QtCore.QRect(320, 20, 100, 22))		sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)		sizePolicy.setHorizontalStretch(0)		sizePolicy.setVerticalStretch(0)		sizePolicy.setHeightForWidth(self.InputUnit.sizePolicy().hasHeightForWidth())		self.InputUnit.setSizePolicy(sizePolicy)		self.InputUnit.setIconSize(QtCore.QSize(16, 16))		self.InputUnit.setObjectName("InputUnit")		self.InputUnit.addItem("")		self.InputUnit.setItemText(0, "")		self.InputUnit.addItem("")		self.InputUnit.addItem("")		self.InputUnit.addItem("")		self.InputUnit.addItem("")		self.InputUnit.addItem("")		self.InputUnit.addItem("")		self.InputUnit.addItem("")		self.InputUnit.addItem("")		self.InputUnit.addItem("")		self.InputUnit.addItem("")		self.InputNumberLabel = QtGui.QLabel(self.InputFrame)		self.InputNumberLabel.setGeometry(QtCore.QRect(10, 20, 71, 22))		sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)		sizePolicy.setHorizontalStretch(0)		sizePolicy.setVerticalStretch(0)		sizePolicy.setHeightForWidth(self.InputNumberLabel.sizePolicy().hasHeightForWidth())		self.InputNumberLabel.setSizePolicy(sizePolicy)		self.InputNumberLabel.setObjectName("InputNumberLabel")		self.ResultFrame = QtGui.QFrame(MainWindow)		self.ResultFrame.setEnabled(True)		self.ResultFrame.setGeometry(QtCore.QRect(10, 90, 431, 61))		sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)		sizePolicy.setHorizontalStretch(0)		sizePolicy.setVerticalStretch(0)		sizePolicy.setHeightForWidth(self.ResultFrame.sizePolicy().hasHeightForWidth())		self.ResultFrame.setSizePolicy(sizePolicy)		self.ResultFrame.setFrameShape(QtGui.QFrame.StyledPanel)		self.ResultFrame.setFrameShadow(QtGui.QFrame.Plain)		self.ResultFrame.setObjectName("ResultFrame")		self.ResultOutputBox = QtGui.QLineEdit(self.ResultFrame)		self.ResultOutputBox.setEnabled(True)		self.ResultOutputBox.setGeometry(QtCore.QRect(90, 20, 221, 22))		self.ResultOutputBox.setToolTip("")		self.ResultOutputBox.setInputMethodHints(QtCore.Qt.ImhDigitsOnly)		self.ResultOutputBox.setInputMask("")		self.ResultOutputBox.setText("")		self.ResultOutputBox.setReadOnly(True)		self.ResultOutputBox.setObjectName("ResultOutputBox")		self.ResultsOutputLabel = QtGui.QLabel(self.ResultFrame)		self.ResultsOutputLabel.setGeometry(QtCore.QRect(10, 20, 71, 22))		sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)		sizePolicy.setHorizontalStretch(0)		sizePolicy.setVerticalStretch(0)		sizePolicy.setHeightForWidth(self.ResultsOutputLabel.sizePolicy().hasHeightForWidth())		self.ResultsOutputLabel.setSizePolicy(sizePolicy)		self.ResultsOutputLabel.setObjectName("ResultsOutputLabel")		self.ResultUnit = QtGui.QComboBox(self.ResultFrame)		self.ResultUnit.setGeometry(QtCore.QRect(320, 20, 100, 22))		sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)		sizePolicy.setHorizontalStretch(0)		sizePolicy.setVerticalStretch(0)		sizePolicy.setHeightForWidth(self.ResultUnit.sizePolicy().hasHeightForWidth())		self.ResultUnit.setSizePolicy(sizePolicy)		self.ResultUnit.setIconSize(QtCore.QSize(16, 16))		self.ResultUnit.setObjectName("ResultUnit")		self.ResultUnit.addItem("")		self.ResultUnit.setItemText(0, "")		self.ResultUnit.addItem("")		self.ResultUnit.addItem("")		self.ResultUnit.addItem("")		self.ResultUnit.addItem("")		self.ResultUnit.addItem("")		self.ResultUnit.addItem("")		self.ResultUnit.addItem("")		self.ResultUnit.addItem("")		self.ResultUnit.addItem("")		self.ResultUnit.addItem("")		self.ConvertButton = QtGui.QPushButton(MainWindow)		self.ConvertButton.setGeometry(QtCore.QRect(10, 170, 75, 23))		self.ConvertButton.setObjectName("ConvertButton")		self.retranslateUi(MainWindow)		QtCore.QMetaObject.connectSlotsByName(MainWindow)		MainWindow.setTabOrder(self.InputNumber, self.InputUnit)		MainWindow.setTabOrder(self.InputUnit, self.ResultOutputBox)		MainWindow.setTabOrder(self.ResultOutputBox, self.ConvertButton)				#Screw using the Designer apps signal/slot editor. It was made with C++ in mind, not python. Below is put in myself because the designer app cant do it lol.		QtCore.QObject.connect(self.ConvertButton, QtCore.SIGNAL("clicked()"), self.docalc)		#My own "slot". Designer wanted me to use their own pre-defined ones or make one in C++. LAME.	def docalc(self):		result = str(BitCalc(self.InputNumber.text(), self.InputUnit.currentIndex(), self.ResultUnit.currentIndex()))		self.ResultOutputBox.setText(result)			def retranslateUi(self, MainWindow):		MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "BitByte Calculator", None, QtGui.QApplication.UnicodeUTF8))		self.InputUnit.setItemText(1, QtGui.QApplication.translate("MainWindow", "Bits (b)", None, QtGui.QApplication.UnicodeUTF8))		self.InputUnit.setItemText(2, QtGui.QApplication.translate("MainWindow", "Bytes (B)", None, QtGui.QApplication.UnicodeUTF8))		self.InputUnit.setItemText(3, QtGui.QApplication.translate("MainWindow", "Kilobits (Kb)", None, QtGui.QApplication.UnicodeUTF8))		self.InputUnit.setItemText(4, QtGui.QApplication.translate("MainWindow", "Kilobytes (KiB)", None, QtGui.QApplication.UnicodeUTF8))		self.InputUnit.setItemText(5, QtGui.QApplication.translate("MainWindow", "Megabits (Mb)", None, QtGui.QApplication.UnicodeUTF8))		self.InputUnit.setItemText(6, QtGui.QApplication.translate("MainWindow", "Megabytes (MiB)", None, QtGui.QApplication.UnicodeUTF8))		self.InputUnit.setItemText(7, QtGui.QApplication.translate("MainWindow", "Gigabits (Gb)", None, QtGui.QApplication.UnicodeUTF8))		self.InputUnit.setItemText(8, QtGui.QApplication.translate("MainWindow", "Gigabytes (GiB)", None, QtGui.QApplication.UnicodeUTF8))		self.InputUnit.setItemText(9, QtGui.QApplication.translate("MainWindow", "Terabits (Tb)", None, QtGui.QApplication.UnicodeUTF8))		self.InputUnit.setItemText(10, QtGui.QApplication.translate("MainWindow", "Terabytes (TiB)", None, QtGui.QApplication.UnicodeUTF8))		self.InputNumberLabel.setText(QtGui.QApplication.translate("MainWindow", "Input Number:", None, QtGui.QApplication.UnicodeUTF8))		self.ResultsOutputLabel.setText(QtGui.QApplication.translate("MainWindow", "Result:", None, QtGui.QApplication.UnicodeUTF8))		self.ResultUnit.setItemText(1, QtGui.QApplication.translate("MainWindow", "Bits (b)", None, QtGui.QApplication.UnicodeUTF8))		self.ResultUnit.setItemText(2, QtGui.QApplication.translate("MainWindow", "Bytes (B)", None, QtGui.QApplication.UnicodeUTF8))		self.ResultUnit.setItemText(3, QtGui.QApplication.translate("MainWindow", "Kilobits (Kb)", None, QtGui.QApplication.UnicodeUTF8))		self.ResultUnit.setItemText(4, QtGui.QApplication.translate("MainWindow", "Kilobytes (KiB)", None, QtGui.QApplication.UnicodeUTF8))		self.ResultUnit.setItemText(5, QtGui.QApplication.translate("MainWindow", "Megabits (Mb)", None, QtGui.QApplication.UnicodeUTF8))		self.ResultUnit.setItemText(6, QtGui.QApplication.translate("MainWindow", "Megabytes (MiB)", None, QtGui.QApplication.UnicodeUTF8))		self.ResultUnit.setItemText(7, QtGui.QApplication.translate("MainWindow", "Gigabits (Gb)", None, QtGui.QApplication.UnicodeUTF8))		self.ResultUnit.setItemText(8, QtGui.QApplication.translate("MainWindow", "Gigabytes (GiB)", None, QtGui.QApplication.UnicodeUTF8))		self.ResultUnit.setItemText(9, QtGui.QApplication.translate("MainWindow", "Terabits (Tb)", None, QtGui.QApplication.UnicodeUTF8))		self.ResultUnit.setItemText(10, QtGui.QApplication.translate("MainWindow", "Terabytes (TiB)", None, QtGui.QApplication.UnicodeUTF8))		self.ConvertButton.setText(QtGui.QApplication.translate("MainWindow", "Convert", None, QtGui.QApplication.UnicodeUTF8))def BitCalc(iValue, iUnit, oUnit):	#iValue = Input value in decimal format	#iUnit is the input unit. It comes as a number value 0 - 10	# 0 = Blank aka "Didnt choose one cause I fail"	# 1 = Bits	# 2 = Bytes	# 3 = Kilobits	# 4 = Kilobytes	# 5 = Megabits	# 6 = Megabytes	# 7 = Gigabits	# 8 = Gigabytes	# 9 = Terabits	# 10 =  Terabytes	#These values are also the for oUnit, which is the output unit		#First thing is to make sure everything inputed is correct. Checking for input being number and not blank, and making sure unit selections have been made	if len(iValue) > 0 and re.match("^([0-9\.])*$", iValue) is not None:		if iUnit > 0:			if oUnit > 0:				pass			else:				return "Select an output unit."		else:			return "Select an input unit."	else:		return "Invalid input number."		#Ok Now lets determine what units we will be converting from and into.	#Here is how we are going to do it: Convert input into bytes, then convert to whatever the output is.	#If it comes in in bit-form, convert to byte. If its supposed to go out as bits then convert to bits first.	#All operations will be using 1024.	#So Bit-form units will be either 1,3,5,7, or 9.	#Byte-form units will ofc be either 2,4,6,8, or 10.		#To keep the math from coming out in weird ass scientific notation that nobody wants to see, we are using the decimal module	iValue = decimal.Decimal(str(iValue))		#If the input is bit-form, convert it to byte-form	if int(iUnit)%2 > 0:		iValue = iValue/8		#Nothing for iUnit value 1 or 2 because they are already in the basic form we need.	if 2 < iUnit < 5:		#Multi is 1024^1		iValue = iValue*(1024)	elif 4 < iUnit < 7:		#Multi is 1024^2		iValue = iValue*(1024**2)	elif 6 < iUnit < 9:		#Multi is 1024^3		iValue = iValue*(1024**3)	elif 8 < iUnit < 11:		#Multi is 1024^4		iValue = iValue*(1024**4)			#I know this is rather roundabout-ish but its much easier than trying to figure out what multi to use from different units.	#Starting from a fixed unit makes everything much simpler, and simpler is always better.		#Nothing for iUnit value 1 or 2 because they are already in the basic form we need.	if 2 < oUnit < 5:		#Multi is 1024^1		iValue = iValue/(1024)	elif 4 < oUnit < 7:		#Multi is 1024^2		iValue = iValue/(1024**2)	elif 6 < oUnit < 9:		#Multi is 1024^3		iValue = iValue/(1024**3)	elif 8 < oUnit < 11:		#Multi is 1024^4		iValue = iValue/(1024**4)			#And convert back to bit-form if required	if int(oUnit)%2 > 0:		iValue = iValue*8		#Remove any extra decimals if they are just 0's.	if iValue - int(iValue) == 0:		iValue = str(int(iValue))		return iValue	def main():	app = QtGui.QApplication(sys.argv)	Window = QtGui.QMainWindow()	ui = Ui_MainWindow()	ui.setupUi(Window)	Window.show()	sys.exit(app.exec_())	if __name__ == "__main__":	main()