All pastes #800872 Raw Edit

GreyBlox

public python v1 · immutable
#800872 ·published 2007-11-28 20:30 UTC
rendered paste body
class GreyBlox(Frame):	__BLOCK_WIDTH = 80	__BLOCK_HEIGHT = 30	__SCALE_LENGTH = 480	__SCALE_INIT = 50	def __init__(self):		self.master = Tk()		Frame.__init__(self, self.master)		self.pack()		self.rp = self.__SCALE_INIT		self.gp = self.__SCALE_INIT		self.bp = self.__SCALE_INIT		self.brightp = self.__SCALE_INIT		self.base_r = None		self.base_g = None		self.base_b = None		self.base_max = None		self.doInterface()		self.mainloop()	def doInterface(self):		self.targ_block = Text(self)		self.targ_block["width"] = self.__BLOCK_WIDTH		self.targ_block["height"] = self.__BLOCK_HEIGHT		self.targ_block["bg"] = "black"		self.targ_block.pack()		self.shade_slide_bright = Scale(self)		self.shade_slide_bright["command"] = self.tweakBright		self.shade_slide_bright["orient"] = "horiz"		self.shade_slide_bright["length"] = self.__SCALE_LENGTH		self.shade_slide_bright.set(self.brightp)		self.shade_slide_bright.pack()		self.shade_slide_r = Scale(self)		self.shade_slide_r["command"] = self.tweakR		self.shade_slide_r["orient"] = "horiz"		self.shade_slide_r["bg"] = "red"		self.shade_slide_r["length"] = self.__SCALE_LENGTH		self.shade_slide_r.set(self.rp)		self.shade_slide_r.pack()		self.shade_slide_g = Scale(self)		self.shade_slide_g["command"] = self.tweakG		self.shade_slide_g["orient"] = "horiz"		self.shade_slide_g["bg"] = "green"		self.shade_slide_g["length"] = self.__SCALE_LENGTH		self.shade_slide_g.set(self.gp)		self.shade_slide_g.pack()		self.shade_slide_b = Scale(self)		self.shade_slide_b["command"] = self.tweakB		self.shade_slide_b["orient"] = "horiz"		self.shade_slide_b["bg"] = "blue"		self.shade_slide_b["length"] = self.__SCALE_LENGTH		self.shade_slide_b.set(self.bp)		self.shade_slide_b.pack()		def __scaleToHex255(self, scale_as_int):		col = "%X" % int(scale_as_int * 2.55)		if len(col) < 2:			col = "0" + col		return col	def __triScaleToHexRGB(self, r_as_int, g_as_int, b_as_int):		return "#" + self.__scaleToHex255(r_as_int) + self.__scaleToHex255(g_as_int) + self.__scaleToHex255(b_as_int)	def __updateBlock(self):		self.targ_block["bg"] = self.__triScaleToHexRGB(self.rp, self.gp, self.bp)	def __maxPosition(self):		return max([self.rp, self.gp, self.bp])	def __brightAdjust(self, value, diff, current, base, base_max):		if current < 1 and base < base_max:			if value >= base_max - base:				return max([current + diff, 0])			else:				return 0		else:			return current + diff			def jiggleBright(self, value):		if self.brightp != self.__maxPosition():			if value > self.brightp or (value == self.__maxPosition() and value < self.brightp):				self.brightDrop(value)			elif self.__maxPosition() < self.brightp:				self.brightDrop(self.__maxPosition())		def tweakR(self, value):		self.rp = math.ceil(float(value))		self.jiggleBright(self.rp)		self.__updateBlock()	def tweakG(self, value):		self.gp = math.ceil(float(value))		self.jiggleBright(self.gp)		self.__updateBlock()	def tweakB(self, value):		self.bp = math.ceil(float(value))		self.jiggleBright(self.bp)		self.__updateBlock()	def brightDrop(self, value):		self.shade_slide_bright.set(value)	def tweakBright(self, value):		thisbright = math.ceil(float(value))		if thisbright != self.__maxPosition():			if not self.base_r and not self.base_g and not self.base_b and not self.base_max:				self.base_r = self.rp				self.base_g = self.gp				self.base_b = self.bp				self.base_max = self.__maxPosition()						diff = thisbright - self.brightp			if 			self.shade_slide_r.set(self.__brightAdjust(thisbright, diff, self.rp, self.base_r, self.base_max))			self.shade_slide_g.set(self.__brightAdjust(thisbright, diff, self.gp, self.base_g, self.base_max))			self.shade_slide_b.set(self.__brightAdjust(thisbright, diff, self.bp, self.base_b, self.base_max))		else:			self.base_r, self.base_g, self.base_b, self.base_max = None, None, None, None		self.brightp = int(value)