| 
									
										
										
										
											1997-07-19 20:02:36 +00:00
										 |  |  | # | 
					
						
							|  |  |  | # Instant Python | 
					
						
							|  |  |  | # $Id$ | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # tk common colour chooser dialogue | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # this module provides an interface to the native color dialogue | 
					
						
							|  |  |  | # available in Tk 4.2 and newer. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # written by Fredrik Lundh, May 1997 | 
					
						
							|  |  |  | # | 
					
						
							| 
									
										
										
										
											1998-08-07 14:55:21 +00:00
										 |  |  | # fixed initialcolor handling in August 1998 | 
					
						
							|  |  |  | # | 
					
						
							| 
									
										
										
										
											1997-07-19 20:02:36 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # options (all have default values): | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # - initialcolor: colour to mark as selected when dialog is displayed | 
					
						
							|  |  |  | #   (given as an RGB triplet or a Tk color string) | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # - parent: which window to place the dialog on top of | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # - title: dialog title | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from tkCommonDialog import Dialog | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # color chooser class | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Chooser(Dialog): | 
					
						
							|  |  |  |     "Ask for a color" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     command = "tk_chooseColor" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def _fixoptions(self): | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             # make sure initialcolor is a tk color string | 
					
						
							|  |  |  |             color = self.options["initialcolor"] | 
					
						
							|  |  |  |             if type(color) == type(()): | 
					
						
							|  |  |  |                 # assume an RGB triplet | 
					
						
							| 
									
										
										
										
											1998-08-07 14:55:21 +00:00
										 |  |  |                 self.options["initialcolor"] = "#%02x%02x%02x" % color | 
					
						
							| 
									
										
										
										
											1997-07-19 20:02:36 +00:00
										 |  |  |         except KeyError: | 
					
						
							|  |  |  |             pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def _fixresult(self, widget, result): | 
					
						
							|  |  |  |         # to simplify application code, the color chooser returns | 
					
						
							|  |  |  |         # an RGB tuple together with the Tk color string | 
					
						
							|  |  |  |         if not result: | 
					
						
							| 
									
										
										
										
											2000-07-16 12:04:32 +00:00
										 |  |  |             return None, None # canceled | 
					
						
							| 
									
										
										
										
											1997-07-19 20:02:36 +00:00
										 |  |  |         r, g, b = widget.winfo_rgb(result) | 
					
						
							|  |  |  |         return (r/256, g/256, b/256), result | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # convenience stuff | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def askcolor(color = None, **options): | 
					
						
							|  |  |  |     "Ask for a color" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-08-07 14:55:21 +00:00
										 |  |  |     if color: | 
					
						
							| 
									
										
										
										
											1998-08-10 20:13:17 +00:00
										 |  |  |         options = options.copy() | 
					
						
							|  |  |  |         options["initialcolor"] = color | 
					
						
							| 
									
										
										
										
											1998-08-07 14:55:21 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-04-06 09:01:11 +00:00
										 |  |  |     return Chooser(**options).show() | 
					
						
							| 
									
										
										
										
											1997-07-19 20:02:36 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # -------------------------------------------------------------------- | 
					
						
							|  |  |  | # test stuff | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__": | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     print "color", askcolor() |