cpython/Mac/Tools/IDE/Splash.py

163 lines
3.7 KiB
Python
Raw Normal View History

1999-01-30 18:39:17 -04:00
import Dlg
import Res
splash = Dlg.GetNewDialog(468, -1)
splash.DrawDialog()
import Qd, TE, Fm, sys
_real__import__ = None
def install_importhook():
global _real__import__
import __builtin__
if _real__import__ is None:
_real__import__ = __builtin__.__import__
__builtin__.__import__ = my__import__
def uninstall_importhook():
global _real__import__
if _real__import__ is not None:
import __builtin__
__builtin__.__import__ = _real__import__
_real__import__ = None
_progress = 0
def importing(module):
global _progress
Qd.SetPort(splash)
fontID = Fm.GetFNum("Python-Sans")
if not fontID:
fontID = geneva
Qd.TextFont(fontID)
Qd.TextSize(9)
2000-10-20 04:49:00 -03:00
rect = (35, 265, 365, 281)
1999-01-30 18:39:17 -04:00
if module:
TE.TETextBox('Importing: ' + module, rect, 0)
if not _progress:
2000-10-20 04:49:00 -03:00
Qd.FrameRect((35, 281, 365, 289))
1999-01-30 18:39:17 -04:00
pos = min(36 + 330 * _progress / 44, 364)
2000-10-20 04:49:00 -03:00
Qd.PaintRect((36, 282, pos, 288))
1999-01-30 18:39:17 -04:00
_progress = _progress + 1
else:
Qd.EraseRect(rect)
2000-10-20 04:49:00 -03:00
Qd.PaintRect((36, 282, pos, 288))
1999-01-30 18:39:17 -04:00
def my__import__(name, globals=None, locals=None, fromlist=None):
try:
return sys.modules[name]
except KeyError:
try:
importing(name)
except:
try:
rv = _real__import__(name)
finally:
uninstall_importhook()
return rv
return _real__import__(name)
install_importhook()
kHighLevelEvent = 23
import Win
from Fonts import *
from QuickDraw import *
from TextEdit import *
import string
import sys
_keepsplashscreenopen = 0
abouttext1 = """The Python Integrated Development Environment for the Macintosh<73>
1999-01-30 18:39:17 -04:00
Version: %s
1999-12-23 17:49:44 -04:00
Copyright 1997-2000 Just van Rossum, Letterror. <just@letterror.com>
1999-01-30 18:39:17 -04:00
Python %s
%s
See: <http://www.python.org/> for information and documentation."""
flauwekul = [ 'Goodday, Bruce.',
'What<EFBFBD>s new?',
1999-01-30 18:39:17 -04:00
'Nudge, nudge, say no more!',
'No, no sir, it<69>s not dead. It<49>s resting.',
1999-01-30 18:39:17 -04:00
'Albatros!',
'It<EFBFBD>s . . .',
1999-01-30 18:39:17 -04:00
'Is your name not Bruce, then?',
"""But Mr F.G. Superman has a secret identity . . .
when trouble strikes at any time . . .
at any place . . . he is ready to become . . .
Bicycle Repair Man!"""
]
def skipdoublereturns(text):
return string.replace(text, '\n\n', '\n')
1999-01-30 18:39:17 -04:00
def nl2return(text):
return string.replace(text, '\n', '\r')
1999-01-30 18:39:17 -04:00
def UpdateSplash(drawdialog = 0, what = 0):
if drawdialog:
splash.DrawDialog()
drawtext(what)
splash.GetDialogWindow().ValidWindowRect(splash.GetDialogPort().portRect)
1999-01-30 18:39:17 -04:00
def drawtext(what = 0):
Qd.SetPort(splash)
fontID = Fm.GetFNum("Python-Sans")
if not fontID:
fontID = geneva
Qd.TextFont(fontID)
Qd.TextSize(9)
rect = (10, 115, 390, 290)
1999-01-30 18:39:17 -04:00
if not what:
import __main__
abouttxt = nl2return(abouttext1 % (
__main__.__version__, sys.version, skipdoublereturns(sys.copyright)))
1999-01-30 18:39:17 -04:00
else:
import random
abouttxt = nl2return(random.choice(flauwekul))
TE.TETextBox(abouttxt, rect, teJustCenter)
UpdateSplash(1)
def wait():
import Evt
2001-02-09 11:56:19 -04:00
import Events
1999-01-30 18:39:17 -04:00
global splash
try:
splash
except NameError:
return
Qd.InitCursor()
time = Evt.TickCount()
whattext = 0
while _keepsplashscreenopen:
2001-02-09 11:56:19 -04:00
ok, event = Evt.EventAvail(Events.highLevelEventMask)
1999-01-30 18:39:17 -04:00
if ok:
# got apple event, back to mainloop
break
2001-02-09 11:56:19 -04:00
ok, event = Evt.EventAvail(Events.mDownMask | Events.keyDownMask | Events.updateMask)
1999-01-30 18:39:17 -04:00
if ok:
2001-02-09 11:56:19 -04:00
ok, event = Evt.WaitNextEvent(Events.mDownMask | Events.keyDownMask | Events.updateMask, 30)
1999-01-30 18:39:17 -04:00
if ok:
(what, message, when, where, modifiers) = event
2001-02-09 11:56:19 -04:00
if what == Events.updateEvt:
1999-01-30 18:39:17 -04:00
if Win.WhichWindow(message) == splash:
UpdateSplash(1, whattext)
else:
break
if Evt.TickCount() - time > 360:
whattext = not whattext
drawtext(whattext)
time = Evt.TickCount()
del splash
#Res.CloseResFile(splashresfile)
def about():
global splash, splashresfile, _keepsplashscreenopen
_keepsplashscreenopen = 1
splash = Dlg.GetNewDialog(468, -1)
splash.DrawDialog()
wait()