]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
* More changes due to stricter argument passing rules
authorGuido van Rossum <guido@python.org>
Mon, 4 Jan 1993 09:16:51 +0000 (09:16 +0000)
committerGuido van Rossum <guido@python.org>
Mon, 4 Jan 1993 09:16:51 +0000 (09:16 +0000)
* Fixed calendar.py, mimetools.py, whrandom.py to cope with time.time()
  returning a floating point number.  (And fix old bug in calendar)
* Add recursion level to mainloop.mainloop(), to make it reentrant.

18 files changed:
Lib/calendar.py
Lib/lib-stdwin/BoxParent.py
Lib/lib-stdwin/DirList.py
Lib/lib-stdwin/HVSplit.py
Lib/lib-stdwin/Split.py
Lib/lib-stdwin/TransParent.py
Lib/lib-stdwin/WindowParent.py
Lib/lib-stdwin/mainloop.py
Lib/mimetools.py
Lib/regexp.py
Lib/stdwin/BoxParent.py
Lib/stdwin/DirList.py
Lib/stdwin/HVSplit.py
Lib/stdwin/Split.py
Lib/stdwin/TransParent.py
Lib/stdwin/WindowParent.py
Lib/stdwin/mainloop.py
Lib/whrandom.py

index 62fb27fb1d248a3da36436fc5657130eccc63959..13c8bbbd3f24e00a130de6c97afc7ed997a63536 100644 (file)
@@ -31,6 +31,7 @@ error = 'calendar error'
 # Turn seconds since epoch into calendar time
 def gmtime(secs):
        if secs < 0: raise error, 'negative input to gmtime()'
+       secs = int(secs)
        mins, secs = divmod(secs, 60)
        hours, mins = divmod(mins, 60)
        days, hours = divmod(hours, 24)
@@ -146,7 +147,7 @@ def monthcalendar(year, month):
        key = `year` + month_abbr[month]
        try:
                return mc_cache[key]
-       except IOError:
+       except KeyError:
                mc_cache[key] = ret = _monthcalendar(year, month)
                return ret
 
index a44995d90c4699b6dc5a91e10c155061a1930cb9..c792731c5b7036e17c931441ea7f7aee99d1f5ee 100644 (file)
@@ -27,15 +27,14 @@ class BoxParent(TransParent):
        def getbounds(self):
                return self.bounds
        #
-       def draw(self, args):
-               d, area = args
+       def draw(self, d, area):
                (left, top), (right, bottom) = self.bounds
                left = left + 1
                top = top + 1
                right = right - 1
                bottom = bottom - 1
                d.box((left, top), (right, bottom))
-               TransParent.draw(self, args) # XXX clip to innerbounds?
+               TransParent.draw(self, d, area) # XXX clip to innerbounds?
        #
        # XXX should scroll clip to innerbounds???
        # XXX currently the only user restricts itself to child's bounds
index 4b98b1dc42af70e854e58521e40bf6c97c98a495..446d33b04c755b962455a79eecb4d4ac9f902811 100644 (file)
@@ -28,7 +28,7 @@ class DirList(VSplit):
 class DirListWindow(WindowParent):
        #
        def create(self, dirname):
-               self = WindowParent.create(self, (dirname, (0, 0)))
+               self = WindowParent.create(self, dirname, (0, 0))
                child = DirList().create(self, dirname)
                self.realize()
                return self
index c42327dcfcff875c279134808e88c7314232dcc6..62e0de75f7148e203d056500a48fdc9a457296f5 100644 (file)
@@ -55,8 +55,8 @@ class HVSplit(Split):
 
 class HSplit(HVSplit):
        def create(self, parent):
-               return HVSplit.create(self, (parent, 0))
+               return HVSplit.create(self, parent, 0)
 
 class VSplit(HVSplit):
        def create(self, parent):
-               return HVSplit.create(self, (parent, 1))
+               return HVSplit.create(self, parent, 1)
index 8eb02543f49b16d134a330b5717d7b549f1632ab..5ff98088c417e22fffd2d6bdd35f48702bb3a6af 100644 (file)
@@ -50,10 +50,10 @@ class Split:
                for child in self.children:
                        child.realize()
        #
-       def draw(self, d_detail):
+       def draw(self, ddetail):
                # (Could avoid calls to children outside the area)
                for child in self.children:
-                       child.draw(d_detail)
+                       child.draw(ddetail)
        #
        def altdraw(self, detail):
                for child in self.altdraw_interest:
@@ -112,15 +112,14 @@ class Split:
                if self.keybd_focus:
                        self.keybd_focus.deactivate()
        #
-       def keybd(self, type_detail):
+       def keybd(self, typedetail):
                if not self.keybd_focus:
                        self.set_keybd_focus(self.keybd_interest[0])
-               type, detail = type_detail
                if type == WE_COMMAND and detail == WC_TAB and \
                                        len(self.keybd_interest) > 1:
                        self.next_keybd_focus()
                        return
-               self.keybd_focus.keybd(type_detail)
+               self.keybd_focus.keybd(typedetail)
        #
        def timer(self):
                for child in self.timer_interest:
@@ -206,7 +205,7 @@ class Split:
        #
        def change(self, area):
                self.parent.change(area)
-       def scroll(self, area_vector):
-               self.parent.scroll(area_vector)
+       def scroll(self, areavector):
+               self.parent.scroll(areavector)
        def settimer(self, itimer):
                self.parent.settimer(itimer)
index 27e9bbd043b1da9e1bd0af8df6d0664fc7afc756..49dcd3d0719ec15d76f7754ac2391296f6661307 100644 (file)
@@ -60,12 +60,12 @@ class TransParent(ManageOneChild):
        def realize(self):
                if self.child:
                        self.child.realize()
-       def draw(self, args):
+       def draw(self, d, area):
                if self.child:
-                       self.child.draw(args)
-       def altdraw(self, args):
+                       self.child.draw(d, area)
+       def altdraw(self, area):
                if self.child:
-                       self.child.altdraw(args)
+                       self.child.altdraw(area)
        #
        # Downcalls only made after certain upcalls
        #
@@ -117,7 +117,7 @@ class TransParent(ManageOneChild):
        #
        def change(self, area):
                self.parent.change(area)
-       def scroll(self, args):
-               self.parent.scroll(args)
+       def scroll(self, area, vector):
+               self.parent.scroll(area, vector)
        def settimer(self, itimer):
                self.parent.settimer(itimer)
index 1964d38a6ab39ff5a319ab444763061b962278bb..cdec10b28314cf47d416dcc0ed8ee0cbe32c3b04 100644 (file)
@@ -136,9 +136,9 @@ class WindowParent(ManageOneChild):
                if self.win:
                        self.win.change(area)
        #
-       def scroll(self, args):
+       def scroll(self, area, vector):
                if self.win:
-                       self.win.scroll(args)
+                       self.win.scroll(area, vector)
        #
        def settimer(self, itimer):
                if self.win:
index f1fe6170b12fdf27a6df71522662e083ef055289..6b574cf2a4c9a76d42cae2edef356d7b2773907d 100644 (file)
@@ -4,6 +4,9 @@
 # - have a 'dispatch' function as a window member
 
 
+# XXX This is UNIX specific!  For the Mac we need to use a simpler version!
+
+
 import stdwin, stdwinq
 from stdwinevents import *
 
@@ -123,23 +126,38 @@ def do_select():
 # Python's stdwin.getevent() turns WE_COMMAND/WC_CANCEL events
 # into KeyboardInterrupt exceptions; these are turned back in events.
 #
+recursion_level = 0 # Hack to make it reentrant
 def mainloop():
-       stdwin_select_handler() # Process events already in stdwin queue
-       fd = stdwin.fileno()
-       while 1:
-               if windows:
-                       registerfd(fd, 'r', stdwin_select_handler)
-                       try:
-                               while windows:
+       global recursion_level
+       recursion_level = recursion_level + 1
+       try:
+               stdwin_select_handler() # Process events already in queue
+               fd = stdwin.fileno()
+               while 1:
+                       if windows:
+                               if recursion_level == 1:
+                                   registerfd(fd, 'r', stdwin_select_handler)
+                               try:
+                                       while windows:
+                                               do_select()
+                                               stdwin_select_handler()
+                               finally:
+                                       if recursion_level == 1:
+                                               unregisterfd(fd)
+                       elif fdlist:
+                               while fdlist and not windows:
                                        do_select()
-                                       stdwin_select_handler()
-                       finally:
-                               unregisterfd(fd)
-               elif fdlist:
-                       while fdlist and not windows:
-                               do_select()
-               else:
-                       break
+                       else:
+                               break
+       finally:
+               recursion_level = recursion_level - 1
+
+
+# Check for events without ever blocking
+#
+def check():
+       stdwin_select_handler()
+       # XXX Should check for socket stuff as well
 
 
 # Handle stdwin events until none are left
index 79c6fb13233994fe5c3163f1e1a2587f1503efa0..84eff9d0d3288edb848ad6f0af80c057bb2371ba 100644 (file)
@@ -108,6 +108,6 @@ def choose_boundary():
                pid = `os.getpid()`
                seed = `rand.rand()`
                _prefix = hostid + '.' + uid + '.' + pid
-       timestamp = `time.time()`
+       timestamp = `int(time.time())`
        seed = `rand.rand()`
        return _prefix + '.' + timestamp + '.' + seed
index 2b8a5c00cbcc92d418e985ccc5d46175fbb0bb99..755f65ad7f45804ce08a11ed4bba9b20f8492ea8 100644 (file)
@@ -11,11 +11,13 @@ class Prog:
                finally:
                        xxx = regex.set_syntax(save_syntax)
                return self
-       def match(self, args):
-               if type(args) == type(()):
+       def match(self, *args):
+               if len(args) == 2:
                        str, offset = args
+               elif len(args) == 1:
+                       str, offset = args[0], 0
                else:
-                       str, offset = args, 0
+                       raise TypeError, 'wrong argument count'
                if self.prog.search(str, offset) < 0:
                        return ()
                regs = self.prog.regs
index a44995d90c4699b6dc5a91e10c155061a1930cb9..c792731c5b7036e17c931441ea7f7aee99d1f5ee 100755 (executable)
@@ -27,15 +27,14 @@ class BoxParent(TransParent):
        def getbounds(self):
                return self.bounds
        #
-       def draw(self, args):
-               d, area = args
+       def draw(self, d, area):
                (left, top), (right, bottom) = self.bounds
                left = left + 1
                top = top + 1
                right = right - 1
                bottom = bottom - 1
                d.box((left, top), (right, bottom))
-               TransParent.draw(self, args) # XXX clip to innerbounds?
+               TransParent.draw(self, d, area) # XXX clip to innerbounds?
        #
        # XXX should scroll clip to innerbounds???
        # XXX currently the only user restricts itself to child's bounds
index 4b98b1dc42af70e854e58521e40bf6c97c98a495..446d33b04c755b962455a79eecb4d4ac9f902811 100755 (executable)
@@ -28,7 +28,7 @@ class DirList(VSplit):
 class DirListWindow(WindowParent):
        #
        def create(self, dirname):
-               self = WindowParent.create(self, (dirname, (0, 0)))
+               self = WindowParent.create(self, dirname, (0, 0))
                child = DirList().create(self, dirname)
                self.realize()
                return self
index c42327dcfcff875c279134808e88c7314232dcc6..62e0de75f7148e203d056500a48fdc9a457296f5 100755 (executable)
@@ -55,8 +55,8 @@ class HVSplit(Split):
 
 class HSplit(HVSplit):
        def create(self, parent):
-               return HVSplit.create(self, (parent, 0))
+               return HVSplit.create(self, parent, 0)
 
 class VSplit(HVSplit):
        def create(self, parent):
-               return HVSplit.create(self, (parent, 1))
+               return HVSplit.create(self, parent, 1)
index 8eb02543f49b16d134a330b5717d7b549f1632ab..5ff98088c417e22fffd2d6bdd35f48702bb3a6af 100755 (executable)
@@ -50,10 +50,10 @@ class Split:
                for child in self.children:
                        child.realize()
        #
-       def draw(self, d_detail):
+       def draw(self, ddetail):
                # (Could avoid calls to children outside the area)
                for child in self.children:
-                       child.draw(d_detail)
+                       child.draw(ddetail)
        #
        def altdraw(self, detail):
                for child in self.altdraw_interest:
@@ -112,15 +112,14 @@ class Split:
                if self.keybd_focus:
                        self.keybd_focus.deactivate()
        #
-       def keybd(self, type_detail):
+       def keybd(self, typedetail):
                if not self.keybd_focus:
                        self.set_keybd_focus(self.keybd_interest[0])
-               type, detail = type_detail
                if type == WE_COMMAND and detail == WC_TAB and \
                                        len(self.keybd_interest) > 1:
                        self.next_keybd_focus()
                        return
-               self.keybd_focus.keybd(type_detail)
+               self.keybd_focus.keybd(typedetail)
        #
        def timer(self):
                for child in self.timer_interest:
@@ -206,7 +205,7 @@ class Split:
        #
        def change(self, area):
                self.parent.change(area)
-       def scroll(self, area_vector):
-               self.parent.scroll(area_vector)
+       def scroll(self, areavector):
+               self.parent.scroll(areavector)
        def settimer(self, itimer):
                self.parent.settimer(itimer)
index 27e9bbd043b1da9e1bd0af8df6d0664fc7afc756..49dcd3d0719ec15d76f7754ac2391296f6661307 100755 (executable)
@@ -60,12 +60,12 @@ class TransParent(ManageOneChild):
        def realize(self):
                if self.child:
                        self.child.realize()
-       def draw(self, args):
+       def draw(self, d, area):
                if self.child:
-                       self.child.draw(args)
-       def altdraw(self, args):
+                       self.child.draw(d, area)
+       def altdraw(self, area):
                if self.child:
-                       self.child.altdraw(args)
+                       self.child.altdraw(area)
        #
        # Downcalls only made after certain upcalls
        #
@@ -117,7 +117,7 @@ class TransParent(ManageOneChild):
        #
        def change(self, area):
                self.parent.change(area)
-       def scroll(self, args):
-               self.parent.scroll(args)
+       def scroll(self, area, vector):
+               self.parent.scroll(area, vector)
        def settimer(self, itimer):
                self.parent.settimer(itimer)
index 1964d38a6ab39ff5a319ab444763061b962278bb..cdec10b28314cf47d416dcc0ed8ee0cbe32c3b04 100755 (executable)
@@ -136,9 +136,9 @@ class WindowParent(ManageOneChild):
                if self.win:
                        self.win.change(area)
        #
-       def scroll(self, args):
+       def scroll(self, area, vector):
                if self.win:
-                       self.win.scroll(args)
+                       self.win.scroll(area, vector)
        #
        def settimer(self, itimer):
                if self.win:
index f1fe6170b12fdf27a6df71522662e083ef055289..6b574cf2a4c9a76d42cae2edef356d7b2773907d 100755 (executable)
@@ -4,6 +4,9 @@
 # - have a 'dispatch' function as a window member
 
 
+# XXX This is UNIX specific!  For the Mac we need to use a simpler version!
+
+
 import stdwin, stdwinq
 from stdwinevents import *
 
@@ -123,23 +126,38 @@ def do_select():
 # Python's stdwin.getevent() turns WE_COMMAND/WC_CANCEL events
 # into KeyboardInterrupt exceptions; these are turned back in events.
 #
+recursion_level = 0 # Hack to make it reentrant
 def mainloop():
-       stdwin_select_handler() # Process events already in stdwin queue
-       fd = stdwin.fileno()
-       while 1:
-               if windows:
-                       registerfd(fd, 'r', stdwin_select_handler)
-                       try:
-                               while windows:
+       global recursion_level
+       recursion_level = recursion_level + 1
+       try:
+               stdwin_select_handler() # Process events already in queue
+               fd = stdwin.fileno()
+               while 1:
+                       if windows:
+                               if recursion_level == 1:
+                                   registerfd(fd, 'r', stdwin_select_handler)
+                               try:
+                                       while windows:
+                                               do_select()
+                                               stdwin_select_handler()
+                               finally:
+                                       if recursion_level == 1:
+                                               unregisterfd(fd)
+                       elif fdlist:
+                               while fdlist and not windows:
                                        do_select()
-                                       stdwin_select_handler()
-                       finally:
-                               unregisterfd(fd)
-               elif fdlist:
-                       while fdlist and not windows:
-                               do_select()
-               else:
-                       break
+                       else:
+                               break
+       finally:
+               recursion_level = recursion_level - 1
+
+
+# Check for events without ever blocking
+#
+def check():
+       stdwin_select_handler()
+       # XXX Should check for socket stuff as well
 
 
 # Handle stdwin events until none are left
index 662390483a1fd98cb1703027154dee9a4e4578e2..0a346903c847bc3e88ded35db355926764dc0ee7 100644 (file)
@@ -39,7 +39,7 @@ class whrandom:
                if not xyz:
                        # Initialize from current time
                        import time
-                       t = time.time()
+                       t = int(time.time())
                        t, x = divmod(t, 256)
                        t, y = divmod(t, 256)
                        t, z = divmod(t, 256)