Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit fea2af1

Browse files
committed
* More changes due to stricter argument passing rules
* 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.
1 parent a2b7f40 commit fea2af1

18 files changed

Lines changed: 113 additions & 78 deletions

Lib/calendar.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ def isleap(year):
3131
# Turn seconds since epoch into calendar time
3232
def gmtime(secs):
3333
if secs < 0: raise error, 'negative input to gmtime()'
34+
secs = int(secs)
3435
mins, secs = divmod(secs, 60)
3536
hours, mins = divmod(mins, 60)
3637
days, hours = divmod(hours, 24)
@@ -146,7 +147,7 @@ def monthcalendar(year, month):
146147
key = `year` + month_abbr[month]
147148
try:
148149
return mc_cache[key]
149-
except IOError:
150+
except KeyError:
150151
mc_cache[key] = ret = _monthcalendar(year, month)
151152
return ret
152153

Lib/lib-stdwin/BoxParent.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,14 @@ def setbounds(self, bounds):
2727
def getbounds(self):
2828
return self.bounds
2929
#
30-
def draw(self, args):
31-
d, area = args
30+
def draw(self, d, area):
3231
(left, top), (right, bottom) = self.bounds
3332
left = left + 1
3433
top = top + 1
3534
right = right - 1
3635
bottom = bottom - 1
3736
d.box((left, top), (right, bottom))
38-
TransParent.draw(self, args) # XXX clip to innerbounds?
37+
TransParent.draw(self, d, area) # XXX clip to innerbounds?
3938
#
4039
# XXX should scroll clip to innerbounds???
4140
# XXX currently the only user restricts itself to child's bounds

Lib/lib-stdwin/DirList.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def create(self, parent, dirname):
2828
class DirListWindow(WindowParent):
2929
#
3030
def create(self, dirname):
31-
self = WindowParent.create(self, (dirname, (0, 0)))
31+
self = WindowParent.create(self, dirname, (0, 0))
3232
child = DirList().create(self, dirname)
3333
self.realize()
3434
return self

Lib/lib-stdwin/HVSplit.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ def setbounds(self, bounds):
5555

5656
class HSplit(HVSplit):
5757
def create(self, parent):
58-
return HVSplit.create(self, (parent, 0))
58+
return HVSplit.create(self, parent, 0)
5959

6060
class VSplit(HVSplit):
6161
def create(self, parent):
62-
return HVSplit.create(self, (parent, 1))
62+
return HVSplit.create(self, parent, 1)

Lib/lib-stdwin/Split.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,10 @@ def realize(self):
5050
for child in self.children:
5151
child.realize()
5252
#
53-
def draw(self, d_detail):
53+
def draw(self, d, detail):
5454
# (Could avoid calls to children outside the area)
5555
for child in self.children:
56-
child.draw(d_detail)
56+
child.draw(d, detail)
5757
#
5858
def altdraw(self, detail):
5959
for child in self.altdraw_interest:
@@ -112,15 +112,14 @@ def deactivate(self):
112112
if self.keybd_focus:
113113
self.keybd_focus.deactivate()
114114
#
115-
def keybd(self, type_detail):
115+
def keybd(self, type, detail):
116116
if not self.keybd_focus:
117117
self.set_keybd_focus(self.keybd_interest[0])
118-
type, detail = type_detail
119118
if type == WE_COMMAND and detail == WC_TAB and \
120119
len(self.keybd_interest) > 1:
121120
self.next_keybd_focus()
122121
return
123-
self.keybd_focus.keybd(type_detail)
122+
self.keybd_focus.keybd(type, detail)
124123
#
125124
def timer(self):
126125
for child in self.timer_interest:
@@ -206,7 +205,7 @@ def getwindow(self):
206205
#
207206
def change(self, area):
208207
self.parent.change(area)
209-
def scroll(self, area_vector):
210-
self.parent.scroll(area_vector)
208+
def scroll(self, area, vector):
209+
self.parent.scroll(area, vector)
211210
def settimer(self, itimer):
212211
self.parent.settimer(itimer)

Lib/lib-stdwin/TransParent.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,12 @@ def setbounds(self, bounds):
6060
def realize(self):
6161
if self.child:
6262
self.child.realize()
63-
def draw(self, args):
63+
def draw(self, d, area):
6464
if self.child:
65-
self.child.draw(args)
66-
def altdraw(self, args):
65+
self.child.draw(d, area)
66+
def altdraw(self, area):
6767
if self.child:
68-
self.child.altdraw(args)
68+
self.child.altdraw(area)
6969
#
7070
# Downcalls only made after certain upcalls
7171
#
@@ -117,7 +117,7 @@ def getwindow(self):
117117
#
118118
def change(self, area):
119119
self.parent.change(area)
120-
def scroll(self, args):
121-
self.parent.scroll(args)
120+
def scroll(self, area, vector):
121+
self.parent.scroll(area, vector)
122122
def settimer(self, itimer):
123123
self.parent.settimer(itimer)

Lib/lib-stdwin/WindowParent.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,9 @@ def change(self, area):
136136
if self.win:
137137
self.win.change(area)
138138
#
139-
def scroll(self, args):
139+
def scroll(self, area, vector):
140140
if self.win:
141-
self.win.scroll(args)
141+
self.win.scroll(area, vector)
142142
#
143143
def settimer(self, itimer):
144144
if self.win:

Lib/lib-stdwin/mainloop.py

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
# - have a 'dispatch' function as a window member
55

66

7+
# XXX This is UNIX specific! For the Mac we need to use a simpler version!
8+
9+
710
import stdwin, stdwinq
811
from stdwinevents import *
912

@@ -123,23 +126,38 @@ def do_select():
123126
# Python's stdwin.getevent() turns WE_COMMAND/WC_CANCEL events
124127
# into KeyboardInterrupt exceptions; these are turned back in events.
125128
#
129+
recursion_level = 0 # Hack to make it reentrant
126130
def mainloop():
127-
stdwin_select_handler() # Process events already in stdwin queue
128-
fd = stdwin.fileno()
129-
while 1:
130-
if windows:
131-
registerfd(fd, 'r', stdwin_select_handler)
132-
try:
133-
while windows:
131+
global recursion_level
132+
recursion_level = recursion_level + 1
133+
try:
134+
stdwin_select_handler() # Process events already in queue
135+
fd = stdwin.fileno()
136+
while 1:
137+
if windows:
138+
if recursion_level == 1:
139+
registerfd(fd, 'r', stdwin_select_handler)
140+
try:
141+
while windows:
142+
do_select()
143+
stdwin_select_handler()
144+
finally:
145+
if recursion_level == 1:
146+
unregisterfd(fd)
147+
elif fdlist:
148+
while fdlist and not windows:
134149
do_select()
135-
stdwin_select_handler()
136-
finally:
137-
unregisterfd(fd)
138-
elif fdlist:
139-
while fdlist and not windows:
140-
do_select()
141-
else:
142-
break
150+
else:
151+
break
152+
finally:
153+
recursion_level = recursion_level - 1
154+
155+
156+
# Check for events without ever blocking
157+
#
158+
def check():
159+
stdwin_select_handler()
160+
# XXX Should check for socket stuff as well
143161

144162

145163
# Handle stdwin events until none are left

Lib/mimetools.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,6 @@ def choose_boundary():
108108
pid = `os.getpid()`
109109
seed = `rand.rand()`
110110
_prefix = hostid + '.' + uid + '.' + pid
111-
timestamp = `time.time()`
111+
timestamp = `int(time.time())`
112112
seed = `rand.rand()`
113113
return _prefix + '.' + timestamp + '.' + seed

Lib/regexp.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@ def init(self, pat):
1111
finally:
1212
xxx = regex.set_syntax(save_syntax)
1313
return self
14-
def match(self, args):
15-
if type(args) == type(()):
14+
def match(self, *args):
15+
if len(args) == 2:
1616
str, offset = args
17+
elif len(args) == 1:
18+
str, offset = args[0], 0
1719
else:
18-
str, offset = args, 0
20+
raise TypeError, 'wrong argument count'
1921
if self.prog.search(str, offset) < 0:
2022
return ()
2123
regs = self.prog.regs

0 commit comments

Comments
 (0)