| 
									
										
										
										
											1999-06-21 15:14:26 +00:00
										 |  |  | # Scan <Drag.h>, generating draggen.py. | 
					
						
							|  |  |  | import sys | 
					
						
							|  |  |  | import os | 
					
						
							| 
									
										
										
										
											2002-08-05 21:13:07 +00:00
										 |  |  | from bgenlocations import TOOLBOXDIR, BGENDIR, INCLUDEDIR | 
					
						
							| 
									
										
										
										
											1999-06-21 15:14:26 +00:00
										 |  |  | sys.path.append(BGENDIR) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from scantools import Scanner | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MISSING_DEFINES="""
 | 
					
						
							| 
									
										
										
										
											2004-07-18 06:16:08 +00:00
										 |  |  | kDragHasLeftSenderWindow        = (1 << 0) | 
					
						
							| 
									
										
										
										
											1999-06-21 15:14:26 +00:00
										 |  |  | kDragInsideSenderApplication = (1 << 1) | 
					
						
							| 
									
										
										
										
											2004-07-18 06:16:08 +00:00
										 |  |  | kDragInsideSenderWindow         = (1 << 2) | 
					
						
							|  |  |  | kDragRegionAndImage                     = (1 << 4) | 
					
						
							|  |  |  | flavorSenderOnly                        = (1 << 0) | 
					
						
							|  |  |  | flavorSenderTranslated          = (1 << 1) | 
					
						
							|  |  |  | flavorNotSaved                          = (1 << 2) | 
					
						
							|  |  |  | flavorSystemTranslated          = (1 << 8) | 
					
						
							| 
									
										
										
										
											1999-06-21 15:14:26 +00:00
										 |  |  | """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def main(): | 
					
						
							| 
									
										
										
										
											2004-07-18 06:16:08 +00:00
										 |  |  |     input = INCLUDEDIR + "Drag.h" | 
					
						
							|  |  |  |     output = "draggen.py" | 
					
						
							|  |  |  |     defsoutput = TOOLBOXDIR + "Dragconst.py" | 
					
						
							|  |  |  |     scanner = MyScanner(input, output, defsoutput) | 
					
						
							|  |  |  |     scanner.scan() | 
					
						
							|  |  |  |     scanner.close() | 
					
						
							|  |  |  |     print "=== Testing definitions output code ===" | 
					
						
							|  |  |  |     execfile(defsoutput, {}, {}) | 
					
						
							|  |  |  |     print "=== Done scanning and generating, now doing 'import dragsupport' ===" | 
					
						
							|  |  |  |     import dragsupport | 
					
						
							|  |  |  |     print "=== Done.  It's up to you to compile Dragmodule.c ===" | 
					
						
							| 
									
										
										
										
											1999-06-21 15:14:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class MyScanner(Scanner): | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-07-18 06:16:08 +00:00
										 |  |  |     def destination(self, type, name, arglist): | 
					
						
							|  |  |  |         classname = "Function" | 
					
						
							|  |  |  |         listname = "functions" | 
					
						
							|  |  |  |         if arglist: | 
					
						
							|  |  |  |             t, n, m = arglist[0] | 
					
						
							|  |  |  |             if t in ('DragReference', 'DragRef') and m == "InMode": | 
					
						
							|  |  |  |                 classname = "Method" | 
					
						
							|  |  |  |                 listname = "methods" | 
					
						
							|  |  |  |         return classname, listname | 
					
						
							| 
									
										
										
										
											1999-06-21 15:14:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-07-18 06:16:08 +00:00
										 |  |  |     def writeinitialdefs(self): | 
					
						
							|  |  |  |         self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") | 
					
						
							|  |  |  |         self.defsfile.write("from Carbon.TextEdit import *\n") | 
					
						
							|  |  |  |         self.defsfile.write("from Carbon.QuickDraw import *\n") | 
					
						
							|  |  |  |         self.defsfile.write("fkDragActionAll = -1\n") | 
					
						
							|  |  |  |         self.defsfile.write("\n") | 
					
						
							|  |  |  |         # Defines unparseable in Drag.h | 
					
						
							|  |  |  |         self.defsfile.write(MISSING_DEFINES) | 
					
						
							| 
									
										
										
										
											1999-06-21 15:14:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-07-18 06:16:08 +00:00
										 |  |  |     def makeblacklistnames(self): | 
					
						
							|  |  |  |         return [ | 
					
						
							|  |  |  |                 "kDragActionAll", | 
					
						
							|  |  |  |                 ] | 
					
						
							| 
									
										
										
										
											1999-06-21 15:14:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-07-18 06:16:08 +00:00
										 |  |  |     def makeblacklisttypes(self): | 
					
						
							|  |  |  |         return [ | 
					
						
							|  |  |  |                 "DragTrackingHandlerUPP", | 
					
						
							|  |  |  |                 "DragReceiveHandlerUPP", | 
					
						
							|  |  |  |                 "DragSendDataUPP", | 
					
						
							|  |  |  |                 "DragInputUPP", | 
					
						
							|  |  |  |                 "DragDrawingUPP", | 
					
						
							|  |  |  |                 ] | 
					
						
							| 
									
										
										
										
											1999-06-21 15:14:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-07-18 06:16:08 +00:00
										 |  |  |     def makerepairinstructions(self): | 
					
						
							|  |  |  |         return [ | 
					
						
							|  |  |  |                 ([("void_ptr", "*", "InMode"), ("Size", "*", "InMode")], | 
					
						
							|  |  |  |                  [("OptionalInBuffer", "*", "*")]), | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 ([("void", "*", "OutMode"), ("Size", "*", "OutMode")], | 
					
						
							|  |  |  |                  [("VarOutBuffer", "*", "InOutMode")]), | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 ] | 
					
						
							| 
									
										
										
										
											1999-06-21 15:14:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__": | 
					
						
							| 
									
										
										
										
											2004-07-18 06:16:08 +00:00
										 |  |  |     main() |