


class Colors(dict):
	
	def __init__(self, rgbfile="/etc/X11/rgb.txt"):
		""" Reads in rgb.txt and makes the colors in there accessible via color.white,
			for instance. """
		self.read_colors(rgbfile)
	
	def read_colors(self, file):
		self.colors = {}
		fhandle = open(file)
		for line in fhandle.readlines():
			if line[0] is not "!":
				#print len(line.split())
				els = line.split()
				r,g,b,name = els[0], els[1], els[2], "".join(els[3:])
				self.colors[name] = (r,g,b)

	def __getattr__(self,item):
		try:
			r,g,b = self.colors.__getitem__(item)
			return "rgb(%s,%s,%s)" % (r,g,b)
		except KeyError:
			print "No such Colour: ", item,
			print "-- using Black"
			return "rgb(0,0,0)"
	
	def listColors(self,name=False):
		for c in self.colors.keys():
			if name:
				if c.lower().find(name.lower()) > -1:
					print c
			else:
				print c
		

if __name__ == "__main__":
	c = Colors()
	# Examples
	print c.DarkBlue # returns (r,g,b)
	print c.listColors() # lists all blue colors

