diff options
author | Just van Rossum <just@lettererror.com> | 1999-01-30 22:39:17 (GMT) |
---|---|---|
committer | Just van Rossum <just@lettererror.com> | 1999-01-30 22:39:17 (GMT) |
commit | 40f9b7bd7cb54645a7c15668b683a8d830ba5219 (patch) | |
tree | baea660d6ef599cd9c4ecc72d009fa75853de577 /Mac/Tools/IDE/Splash.py | |
parent | f59a89b5e34ac7db9e69b02a5b558c7cb49a4d9a (diff) | |
download | cpython-40f9b7bd7cb54645a7c15668b683a8d830ba5219.zip cpython-40f9b7bd7cb54645a7c15668b683a8d830ba5219.tar.gz cpython-40f9b7bd7cb54645a7c15668b683a8d830ba5219.tar.bz2 |
First Checked In.
Diffstat (limited to 'Mac/Tools/IDE/Splash.py')
-rw-r--r-- | Mac/Tools/IDE/Splash.py | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/Mac/Tools/IDE/Splash.py b/Mac/Tools/IDE/Splash.py new file mode 100644 index 0000000..19f16fc --- /dev/null +++ b/Mac/Tools/IDE/Splash.py @@ -0,0 +1,162 @@ +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) + rect = (35, 260, 365, 276) + if module: + TE.TETextBox('Importing: ' + module, rect, 0) + if not _progress: + Qd.FrameRect((35, 276, 365, 284)) + pos = min(36 + 330 * _progress / 44, 364) + Qd.PaintRect((36, 277, pos, 283)) + _progress = _progress + 1 + else: + Qd.EraseRect(rect) + Qd.PaintRect((36, 277, pos, 283)) + +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 Developement Environment for the Macintoshª +Version: %s +Copyright 1997-98 Just van Rossum, Letterror. <just@letterror.com> + +Python %s +%s +Written by Guido van Rossum with Jack Jansen (and others) + +See: <http://www.python.org/> for information and documentation.""" + +flauwekul = [ 'Goodday, Bruce.', + 'WhatÕs new?', + 'Nudge, nudge, say no more!', + 'No, no sir, itÕs not dead. ItÕs resting.', + 'Albatros!', + 'ItÕs . . .', + '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 nl2return(text): + return string.join(string.split(text, '\n'), '\r') + +def UpdateSplash(drawdialog = 0, what = 0): + if drawdialog: + splash.DrawDialog() + drawtext(what) + Win.ValidRect(splash.GetWindowPort().portRect) + +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, 125, 390, 260) + if not what: + import __main__ + abouttxt = nl2return(abouttext1 \ + % (__main__.__version__, sys.version, sys.copyright)) + else: + import random + abouttxt = nl2return(random.choice(flauwekul)) + TE.TETextBox(abouttxt, rect, teJustCenter) + +UpdateSplash(1) + +def wait(): + import Evt + from Events import * + global splash + try: + splash + except NameError: + return + Qd.InitCursor() + time = Evt.TickCount() + whattext = 0 + while _keepsplashscreenopen: + ok, event = Evt.EventAvail(highLevelEventMask) + if ok: + # got apple event, back to mainloop + break + ok, event = Evt.EventAvail(mDownMask | keyDownMask | updateMask) + if ok: + ok, event = Evt.WaitNextEvent(mDownMask | keyDownMask | updateMask, 30) + if ok: + (what, message, when, where, modifiers) = event + if what == updateEvt: + 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() |