symbian-qemu-0.9.1-12/python-2.6.1/Mac/Modules/mlte/mltescan.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 # Scan an Apple header file, generating a Python file of generator calls.
       
     2 
       
     3 import sys
       
     4 from bgenlocations import TOOLBOXDIR, BGENDIR
       
     5 sys.path.append(BGENDIR)
       
     6 from scantools import Scanner_OSX
       
     7 
       
     8 LONG = "MacTextEditor"
       
     9 SHORT = "mlte"
       
    10 OBJECTS = ("TXNObject", "TXNFontMenuObject")
       
    11 # ADD object typenames here
       
    12 
       
    13 def main():
       
    14     input = "MacTextEditor.h"
       
    15     output = SHORT + "gen.py"
       
    16     defsoutput = TOOLBOXDIR + LONG + ".py"
       
    17     scanner = MyScanner(input, output, defsoutput)
       
    18     scanner.scan()
       
    19     scanner.gentypetest(SHORT+"typetest.py")
       
    20     scanner.close()
       
    21     print "=== Testing definitions output code ==="
       
    22     execfile(defsoutput, {}, {})
       
    23     print "=== Done scanning and generating, now importing the generated code... ==="
       
    24     exec "import " + SHORT + "support"
       
    25     print "=== Done.  It's up to you to compile it now! ==="
       
    26 
       
    27 class MyScanner(Scanner_OSX):
       
    28 
       
    29     def destination(self, type, name, arglist):
       
    30         classname = "Function"
       
    31         listname = "functions"
       
    32         if arglist:
       
    33             t, n, m = arglist[0]
       
    34             if t in OBJECTS and m == "InMode":
       
    35                 classname = "Method"
       
    36                 listname = t + "_methods"
       
    37         return classname, listname
       
    38 
       
    39     def writeinitialdefs(self):
       
    40         self.defsfile.write("""
       
    41 def FOUR_CHAR_CODE(x): return x
       
    42 false = 0
       
    43 true = 1
       
    44 kTXNClearThisControl = 0xFFFFFFFF
       
    45 kTXNClearTheseFontFeatures = 0x80000000
       
    46 kTXNDontCareTypeSize = 0xFFFFFFFF
       
    47 kTXNDecrementTypeSize = 0x80000000
       
    48 kTXNUseCurrentSelection = 0xFFFFFFFF
       
    49 kTXNStartOffset = 0
       
    50 kTXNEndOffset = 0x7FFFFFFF
       
    51 MovieFileType = FOUR_CHAR_CODE('moov')
       
    52 kTXNUseEncodingWordRulesMask = 0x80000000
       
    53 kTXNFontSizeAttributeSize = 4
       
    54 normal = 0
       
    55 """)
       
    56 
       
    57     def makeblacklistnames(self):
       
    58         return [
       
    59                 "TXNGetFontDefaults", # Arg is too difficult
       
    60                 "TXNSetFontDefaults", # Arg is too difficult
       
    61                 "TXNInitTextension", # done manually
       
    62 
       
    63                 # Constants with funny definitions
       
    64                 "kTXNClearThisControl",
       
    65                 "kTXNClearTheseFontFeatures",
       
    66                 "kTXNDontCareTypeSize",
       
    67                 "kTXNDecrementTypeSize",
       
    68                 "kTXNUseCurrentSelection",
       
    69                 "kTXNStartOffset",
       
    70                 "kTXNEndOffset",
       
    71                 "kTXNQDFontNameAttributeSize",
       
    72                 "kTXNQDFontFamilyIDAttributeSize",
       
    73                 "kTXNQDFontSizeAttributeSize",
       
    74                 "kTXNQDFontStyleAttributeSize",
       
    75                 "kTXNQDFontColorAttributeSize",
       
    76                 "kTXNTextEncodingAttributeSize",
       
    77                 "kTXNUseEncodingWordRulesMask",
       
    78                 "kTXNFontSizeAttributeSize",
       
    79                 "status",
       
    80                 "justification",
       
    81                 'TXNTSMCheck', # OS8
       
    82                 ]
       
    83 
       
    84     def makeblacklisttypes(self):
       
    85         return [
       
    86                 "TXNTab", # TBD
       
    87                 "TXNMargins", # TBD
       
    88                 "TXNControlData", #TBD
       
    89                 "TXNATSUIFeatures", #TBD
       
    90                 "TXNATSUIVariations", #TBD
       
    91                 "TXNAttributeData", #TBD
       
    92                 "TXNTypeAttributes", #TBD
       
    93                 "TXNMatchTextRecord", #TBD
       
    94                 "TXNBackground", #TBD
       
    95                 "TXNFindUPP",
       
    96                 "ATSUStyle", #TBD
       
    97                 "TXNBackground_ptr", #TBD
       
    98                 "TXNControlData_ptr", #TBD
       
    99                 "TXNControlTag_ptr", #TBD
       
   100                 "TXNLongRect", #TBD
       
   101                 "TXNLongRect_ptr", #TBD
       
   102                 "TXNTypeAttributes_ptr", #TBD
       
   103 
       
   104                 "TXNActionKeyMapperProcPtr",
       
   105                 "TXNActionKeyMapperUPP",
       
   106                 "TXNTextBoxOptionsData",
       
   107                 "TXNCountOptions",
       
   108                 "void_ptr",
       
   109                 ]
       
   110 
       
   111     def makerepairinstructions(self):
       
   112         return [
       
   113                 # TXNNewObject has a lot of optional parameters
       
   114                 ([("FSSpec_ptr", "iFileSpec", "InMode")],
       
   115                  [("OptFSSpecPtr", "*", "*")]),
       
   116                 ([("Rect", "iFrame", "OutMode")],
       
   117                  [("OptRectPtr", "*", "InMode")]),
       
   118 
       
   119                 # In UH 332 some of the "const" are missing for input parameters passed
       
   120                 # by reference. We fix that up here.
       
   121                 ([("EventRecord", "iEvent", "OutMode")],
       
   122                  [("EventRecord_ptr", "*", "InMode")]),
       
   123                 ([("FSSpec", "iFileSpecification", "OutMode")],
       
   124                  [("FSSpec_ptr", "*", "InMode")]),
       
   125                 ([("TXNMacOSPreferredFontDescription", "iFontDefaults", "OutMode")],
       
   126                  [("TXNMacOSPreferredFontDescription_ptr", "*", "InMode")]),
       
   127 
       
   128                 # In buffers are passed as void *
       
   129                 ([("void", "*", "OutMode"), ("ByteCount", "*", "InMode")],
       
   130                  [("MlteInBuffer", "*", "InMode")]),
       
   131 
       
   132                 # The AdjustCursor region handle is optional
       
   133                 ([("RgnHandle", "ioCursorRgn", "InMode")],
       
   134                  [("OptRgnHandle", "*", "*")]),
       
   135 
       
   136                 # The GWorld for TXNDraw is optional
       
   137                 ([('GWorldPtr', 'iDrawPort', 'InMode')],
       
   138                  [('OptGWorldPtr', '*', '*')]),
       
   139                 ]
       
   140 
       
   141 if __name__ == "__main__":
       
   142     main()