]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
the usual
authorGuido van Rossum <guido@python.org>
Fri, 10 Mar 1995 14:42:57 +0000 (14:42 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 10 Mar 1995 14:42:57 +0000 (14:42 +0000)
20 files changed:
Mac/Lib/test/echo.py
Mac/Lib/toolbox/AppleEvents.py
Mac/Lib/toolbox/Controls.py
Mac/Lib/toolbox/Dialogs.py
Mac/Lib/toolbox/Events.py
Mac/Lib/toolbox/Resources.py
Mac/Lib/toolbox/Sound.py
Mac/Lib/toolbox/Windows.py
Mac/Modules/ae/aegen.py
Mac/Modules/ctl/ctlgen.py
Mac/Modules/evt/evtgen.py
Mac/Modules/menu/Menumodule.c
Mac/Modules/menu/menugen.py
Mac/Modules/res/Resmodule.c
Mac/Modules/res/resgen.py
Mac/Modules/res/resscan.py
Mac/Modules/snd/sndgen.py
Tools/bgen/bgen/bgenBuffer.py
Tools/bgen/bgen/bgenHeapBuffer.py
Tools/bgen/bgen/bgenStackBuffer.py

index 616f7120820fa6034a526ad2a5d9c19880a92cb1..20b1d77832d9b1ea5cbc269c9564a87e78f88b3f 100644 (file)
@@ -11,6 +11,8 @@ addpack.addpack('Demo')
 addpack.addpack('bgen')
 addpack.addpack('ae')
 addpack.addpack('evt')
+#addpack.addpack('menu')
+addpack.addpack('win')
 
 import sys
 sys.stdout = sys.stderr
@@ -20,18 +22,25 @@ import AE
 from AppleEvents import *
 import Evt
 from Events import *
+import Menu
+import Dlg
+import Win
+from Windows import *
+import Qd
+
 import aetools
+import EasyDialogs
 
 kHighLevelEvent = 23                           # Not defined anywhere for Python yet?
 
 
 def main():
        echo = EchoServer()
-       MacOS.EnableAppswitch(0)                # Disable Python's own "event handling"
+       yield = MacOS.EnableAppswitch(-1)               # Disable Python's own "event handling"
        try:
-               echo.mainloop()
+               echo.mainloop(everyEvent, 0)
        finally:
-               MacOS.EnableAppswitch(1)        # Let Python have a go at events
+               MacOS.EnableAppswitch(yield)    # Let Python have a go at events
                echo.close()
 
 
@@ -44,6 +53,13 @@ class EchoServer:
                for suite in self.suites:
                        AE.AEInstallEventHandler(suite, typeWildCard, self.aehandler)
                self.active = 1
+               self.appleid = 1
+               Menu.ClearMenuBar()
+               self.applemenu = applemenu = Menu.NewMenu(self.appleid, "\024")
+               applemenu.AppendMenu("All about echo...;(-")
+               applemenu.AddResMenu('DRVR')
+               applemenu.InsertMenu(0)
+               Menu.DrawMenuBar()
        
        def __del__(self):
                self.close()
@@ -64,22 +80,38 @@ class EchoServer:
                                self.lowlevelhandler(event)
        
        def lowlevelhandler(self, event):
-               what, message, when, (h, v), modifiers = event
+               what, message, when, where, modifiers = event
+               h, v = where
                if what == kHighLevelEvent:
-                       print "High Level Event:", `code(message)`, `code(h | (v<<16))`
+                       msg = "High Level Event: %s %s" % \
+                               (`code(message)`, `code(h | (v<<16))`)
                        try:
                                AE.AEProcessAppleEvent(event)
-                       except AE.Error, msg:
-                               print "AEProcessAppleEvent error:"
+                       except AE.Error, err:
+                               EasyDialogs.Message(msg + "\015AEProcessAppleEvent error: %s" % str(err))
                                traceback.print_exc()
+                       else:
+                               EasyDialogs.Message(msg + "\015OK!")
                elif what == keyDown:
                        c = chr(message & charCodeMask)
                        if c == '.' and modifiers & cmdKey:
                                raise KeyboardInterrupt, "Command-period"
                        MacOS.HandleEvent(event)
+               elif what == mouseDown:
+                       partcode, window = Win.FindWindow(where)
+                       if partcode == inMenuBar:
+                               result = Menu.MenuSelect(where)
+                               id = (result>>16) & 0xffff      # Hi word
+                               item = result & 0xffff          # Lo word
+                               if id == self.appleid:
+                                       if item == 1:
+                                               EasyDialogs.Message("Echo -- echo AppleEvents")
+                                       elif item > 1:
+                                               name = self.applemenu.GetItem(item)
+                                               Qd.OpenDeskAcc(name)
                elif what <> autoKey:
                        print "Event:", (eventname(what), message, when, (h, v), modifiers)
-                       MacOS.HandleEvent(event)
+##                     MacOS.HandleEvent(event)
        
        def aehandler(self, request, reply):
                print "Apple Event",
index b3780d0ee26b43076785b5a2a25000eb171a6081..0e1e0698907812c27e3592b3d2c16602722ad073 100644 (file)
@@ -1,4 +1,5 @@
 # Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:AppleEvents.h'
+
 typeBoolean = 'bool'
 typeChar = 'TEXT'
 typeSMInt = 'shor'
index c95ea118535f54feeef8811e5ab13647e08310bf..06865801152b63e70f5de958eec3b4f33cd2f8d9 100644 (file)
@@ -1,4 +1,5 @@
 # Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:Controls.h'
+
 pushButProc = 0
 checkBoxProc = 1
 radioButProc = 2
index 297568c2a76127b164a2d75e1f1ff79e1086f94f..c31bfbe7f7284520f09865dc55b018499a24b566 100644 (file)
@@ -1,4 +1,5 @@
 # Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:Dialogs.h'
+
 ctrlItem = 4
 btnCtrl = 0
 chkCtrl = 1
index ac32c3f7a9e1e49f64850919f8d4644cb01a23a8..943c9e50b95e1dc8f2c2d1e30b730b9d925de336 100644 (file)
@@ -1,4 +1,5 @@
 # Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:Events.h'
+
 nullEvent = 0
 mouseDown = 1
 mouseUp = 2
index 743c6562d993591b18a6c4fa22b011d9061fc7bb..e2ed97a2fa57299cdb4c20a8d65b528042a05322 100644 (file)
@@ -1,4 +1,5 @@
 # Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:Resources.h'
+
 resSysHeap = 64
 resPurgeable = 32
 resLocked = 16
index 600adcd3746c37b4786bdba3445c1740d7632fc6..a65c652015e46f0a84b60858709cb5487072bd70 100644 (file)
@@ -1,4 +1,5 @@
 # Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:Sound.h'
+
 swMode = -1
 ftMode = 1
 ffMode = 0
index 5d5bd7ad8891190ab968acbd06727adc0ba45fa5..037000f33645cbb1a182521c89ecc910f5038ce9 100644 (file)
@@ -1,4 +1,5 @@
 # Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:Windows.h'
+
 documentProc = 0
 dBoxProc = 1
 plainDBox = 2
index ea9b3b61f5e904958f4e1f99218ef9da75ffdc44..221ef979d6d53328069ec6c967a3bad1224d07da 100644 (file)
@@ -312,3 +312,4 @@ f = AEFunction(OSErr, 'AEManagerInfo',
     (long, 'result', OutMode),
 )
 functions.append(f)
+
index fcbf0f488c2b8f6c8ee4352f22f9344dd3846390..0a355cfc80c4e5e5de991c2a4c5bcc879cf49909 100644 (file)
@@ -170,3 +170,4 @@ f = Method(short, 'GetCVariant',
     (ControlHandle, 'theControl', InMode),
 )
 methods.append(f)
+
index ff30b8d07e534ac1610e60ebe5114ff6b336c1df..fd61c4db41f2ae6ef4e7339861d439a72f427cf5 100644 (file)
@@ -42,6 +42,3 @@ f = Function(void, 'GetKeys',
 )
 functions.append(f)
 
-f = Function(long, 'TickCount',
-)
-functions.append(f)
index 78c4f607c95f1727216912bc31f682fb96825ccd..a1308f9c235e83a53d299d987cb9ffe5b90f780b 100644 (file)
@@ -50,7 +50,7 @@ typedef struct MenuObject {
 } MenuObject;
 
 PyObject *MenuObj_New(itself)
-       const MenuHandle itself;
+       MenuHandle itself;
 {
        MenuObject *it;
        it = PyObject_NEW(MenuObject, &Menu_Type);
index 30315b820fa474724f36bc7822bcbea3cd35daf4..2be45046542d2063aed66114258c54cdea27e2d6 100644 (file)
@@ -240,3 +240,4 @@ f = Function(void, 'DelMCEntries',
     (short, 'menuItem', InMode),
 )
 functions.append(f)
+
index a0e487c3d19e57a5772f823b893a63b13548ac44..aeb7958dddade60ff8f10cd65ad38c67ca00b18f 100644 (file)
@@ -50,7 +50,7 @@ typedef struct ResourceObject {
 } ResourceObject;
 
 PyObject *ResObj_New(itself)
-       const Handle itself;
+       Handle itself;
 {
        ResourceObject *it;
        if (itself == NULL) return PyMac_Error(resNotFound);
index 3716e9e7569167b4fe931c276784224bbddf0325..9d817a398aeb49f4c57775215be11c462182f659 100644 (file)
@@ -269,3 +269,4 @@ f = ResMethod(void, 'SetResourceSize',
     (long, 'newSize', InMode),
 )
 resmethods.append(f)
+
index 42bb389a15256c53cdd4d711f6c5cc53fadbdb3a..d45d69eee5b36936be2b17f3dc71bf6da9b2f09a 100644 (file)
@@ -38,6 +38,9 @@ class ResourcesScanner(Scanner):
                return [
                        "ReadPartialResource",
                        "WritePartialResource",
+##                     "RmveResource",         # RemoveResource
+##                     "SizeResource",         # GetResourceSizeOnDisk
+##                     "MaxSizeRsrc",          # GetMaxResourceSize
                        ]
 
        def makerepairinstructions(self):
index 2c77a1f101027ba3b2956826a7035fb950c5ad3b..8e02f29129a260bdd2f5dbe2d13aad72b006bd50 100644 (file)
@@ -129,3 +129,4 @@ f = SndFunction(void, 'Exp1to6',
     (unsigned_long, 'whichChannel', InMode),
 )
 functions.append(f)
+
index 925b9376034e12be4ff04f5432d2152b085df5a4..46f3db40efad742841425e9a407fffb7bb63d6fb 100644 (file)
@@ -53,21 +53,22 @@ class FixedInputOutputBufferType(InputOnlyType):
 
        def declareSize(self, name):
                Output("%s %s__len__;", self.sizetype, name)
+               Output("int %s__in_len__;", name)
 
        def getargsFormat(self):
-               # XXX This only works if the size is int-sized!!!
                return "s#"
 
        def getargsArgs(self, name):
-               return "&%s__in__, &%s__len__" % (name, name)
+               return "&%s__in__, &%s__in_len__" % (name, name)
        
        def getargsCheck(self, name):
-               Output("if (%s__len__ != %s)", name, self.size)
+               Output("if (%s__in_len__ != %s)", name, self.size)
                OutLbrace()
                Output('PyErr_SetString(PyExc_TypeError, "buffer length should be %s");',
                       self.size)
                Output("goto %s__error__;", name)
                OutRbrace()
+               Output("%s__len__ = %s__in_len__;", name, name)
 
        def passOutput(self, name):
                return "%s__in__, %s__out__" % (name, name)
@@ -76,7 +77,7 @@ class FixedInputOutputBufferType(InputOnlyType):
                return "s#"
 
        def mkvalueArgs(self, name):
-               return "%s__out__, %s" % (name, self.size)
+               return "%s__out__, (int)%s" % (name, self.size)
        
        def cleanup(self, name):
                DedentLevel()
@@ -138,7 +139,7 @@ class VarInputBufferType(FixedInputBufferType):
                FixedInputBufferType.__init__(self, "0", datatype, sizetype, sizeformat)
        
        def getargsCheck(self, name):
-               pass
+               Output("%s__len__ = %s__in_len__;", name, name)
        
        def passInput(self, name):
                return "%s__in__, %s__len__" % (name, name)
@@ -161,11 +162,14 @@ class StructInputOutputBufferType(FixedInputOutputBufferType):
        def declareInputBuffer(self, name):
                Output("%s *%s__in__;", self.type, name)
        
+       def declareSize(self, name):
+               Output("int %s__in_len__;", name)
+       
        def declareOutputBuffer(self, name):
                Output("%s %s__out__;", self.type, name)
        
        def getargsArgs(self, name):
-               return "(char **)&%s__in__, &%s__len__" % (name, name)
+               return "(char **)&%s__in__, &%s__in_len__" % (name, name)
        
        def passInput(self, name):
                return "%s__in__" % name
@@ -174,7 +178,7 @@ class StructInputOutputBufferType(FixedInputOutputBufferType):
                return "%s__in__, &%s__out__" % (name, name)
        
        def mkvalueArgs(self, name):
-               return "(char *)&%s__out__, %s" % (name, self.size)
+               return "(char *)&%s__out__, (int)%s" % (name, self.size)
 
 
 class StructCombinedInputOutputBufferType(StructInputOutputBufferType):
@@ -211,6 +215,9 @@ class StructOutputBufferType(OutputOnlyBufferMixIn, StructInputOutputBufferType)
 
        Instantiate with the struct type as parameter.
        """
+       
+       def declareSize(self, name):
+               pass
 
        def passOutput(self, name):
                return "&%s__out__" % name
@@ -222,6 +229,9 @@ class ArrayOutputBufferType(OutputOnlyBufferMixIn, StructInputOutputBufferType):
 
        Instantiate with the struct type as parameter.
        """
+       
+       def declareSize(self, name):
+               pass
 
        def passOutput(self, name):
                return "%s__out__" % name
index 2c51695bf65731b32081e1244bcf45c55384e4c2..c6160ba479438d89a862906aa1691beec1ac8383 100644 (file)
@@ -20,17 +20,19 @@ class HeapInputOutputBufferType(FixedInputOutputBufferType):
                Output("%s *%s__out__;", self.datatype, name)
 
        def getargsCheck(self, name):
-               Output("if ((%s__out__ = malloc(%s__len__)) == NULL)", name, name)
+               Output("if ((%s__out__ = malloc(%s__in_len__)) == NULL)", name, name)
                OutLbrace()
                Output('PyErr_NoMemory();')
                Output("goto %s__error__;", name)
                OutRbrace()
+               Output("%s__len__ = %s__in_len__;", name, name)
 
        def passOutput(self, name):
-               return "%s__in__, %s__out__, %s__len__" % (name, name, name)
+               return "%s__in__, %s__out__, (%s)%s__len__" % \
+                       (name, name, self.sizetype, name)
 
        def mkvalueArgs(self, name):
-               return "%s__out__, %s__len__" % (name, name)
+               return "%s__out__, (int)%s__len__" % (name, name)
 
        def cleanup(self, name):
                Output("free(%s__out__);", name)
@@ -75,10 +77,10 @@ class HeapOutputBufferType(OutputOnlyMixIn, HeapInputOutputBufferType):
                pass
        
        def getargsFormat(self):
-               return self.sizeformat
+               return "i"
        
        def getargsArgs(self, name):
-               return "&%s__len__" % name
+               return "&%s__in_len__" % name
        
        def passOutput(self, name):
                return "%s__out__, %s__len__" % (name, name)
index b7df5bdf62cb48fff1d22d917bdf4d707b47e874..1b6350a99ee1692e11517b6aa6bfcbea2c8293af 100644 (file)
@@ -29,7 +29,7 @@ class VarStackOutputBufferType(StackOutputBufferType):
                return "%s__out__, &%s__len__" % (name, name)
 
        def mkvalueArgs(self, name):
-               return "%s__out__, %s__len__" % (name, name)
+               return "%s__out__, (int)%s__len__" % (name, name)
 
 
 class VarVarStackOutputBufferType(VarStackOutputBufferType):
@@ -56,4 +56,4 @@ class ReturnVarStackOutputBufferType(VarStackOutputBufferType):
                return "%s__out__, %s__len__" % (name, name)
 
        def mkvalueArgs(self, name):
-               return "%s__out__, _rv" % name
+               return "%s__out__, (int)_rv" % name