From dc3c617cb884d9f12d55c2247f3e6b1b1f55aa36 Mon Sep 17 00:00:00 2001 From: Just van Rossum Date: Tue, 19 Jun 2001 21:37:33 +0000 Subject: [PATCH] Some long overdue maintainance. Made all IDE sources 7-bit-clean, to avoid any further encoding conversion troubles. --- Mac/Tools/IDE/ModuleBrowser.py | 12 +++++----- Mac/Tools/IDE/PyBrowser.py | 4 ++-- Mac/Tools/IDE/PyConsole.py | 8 +++---- Mac/Tools/IDE/PyDebugger.py | 16 ++++++------- Mac/Tools/IDE/PyDocSearch.py | 2 +- Mac/Tools/IDE/PyEdit.py | 42 +++++++++++++++------------------ Mac/Tools/IDE/PythonIDE.py | 4 ++-- Mac/Tools/IDE/PythonIDE.rsrc | Bin 16544 -> 13828 bytes Mac/Tools/IDE/PythonIDEMain.py | 22 ++++++++--------- Mac/Tools/IDE/Splash.py | 42 +++++++++++++++++++-------------- Mac/Tools/IDE/Wapplication.py | 8 +++---- Mac/Tools/IDE/Wtext.py | 2 +- Mac/Tools/IDE/Wtraceback.py | 6 ++--- Mac/Tools/IDE/Wwindows.py | 2 +- 14 files changed, 86 insertions(+), 84 deletions(-) diff --git a/Mac/Tools/IDE/ModuleBrowser.py b/Mac/Tools/IDE/ModuleBrowser.py index 78581ec3c9..f5b2b0ab56 100644 --- a/Mac/Tools/IDE/ModuleBrowser.py +++ b/Mac/Tools/IDE/ModuleBrowser.py @@ -14,9 +14,9 @@ class _modulebrowser: #self.window.bevelbox = W.BevelBox((0, 0, 0, 56)) self.window.openbutton = W.Button((10, 8, 80, 16), "Open", self.openbuttonhit) - self.window.browsebutton = W.Button((100, 8, 80, 16), "Browseƒ", self.browsebuttonhit) + self.window.browsebutton = W.Button((100, 8, 80, 16), "Browse\xc9", self.browsebuttonhit) self.window.reloadbutton = W.Button((10, 32, 80, 16), "Reload", self.reloadbuttonhit) - self.window.openotherbutton = W.Button((100, 32, 80, 16), "Open otherƒ", self.openother) + self.window.openotherbutton = W.Button((100, 32, 80, 16), "Open other\xc9", self.openother) self.window.openbutton.enable(0) self.window.reloadbutton.enable(0) @@ -81,7 +81,7 @@ class _modulebrowser: file, path, description = imp.find_module(modname) except ImportError: W.SetCursor("arrow") - W.Message("CanÕt find file for module –%s”." + W.Message("Can't find file for module '%s'." % modname) else: self.openscript(path, modname) @@ -93,7 +93,7 @@ class _modulebrowser: elif path[-4:] in ['.pyc', '.pyo']: W.getapplication().openscript(path[:-1], modname=modname) else: - W.Message("CanÕt edit –%s”; it might be a shared library or a .pyc file." + W.Message("Can't edit '%s'; it might be a shared library or a .pyc file." % modname) def openother(self): @@ -106,9 +106,9 @@ class _modulebrowser: file, path, description = imp.find_module(modname) except ImportError: if modname in sys.builtin_module_names: - alerttext = "–%s” is a builtin module, which you canÕt edit." % modname + alerttext = "'%s' is a builtin module, which you can't edit." % modname else: - alerttext = "No module named –%s”." % modname + alerttext = "No module named '%s'." % modname raise W.AlertError, alerttext self.openscript(path, modname) diff --git a/Mac/Tools/IDE/PyBrowser.py b/Mac/Tools/IDE/PyBrowser.py index e8aac8303e..19319a1757 100644 --- a/Mac/Tools/IDE/PyBrowser.py +++ b/Mac/Tools/IDE/PyBrowser.py @@ -38,7 +38,7 @@ def double_repr(key, value, truncvalue = 0, value = _repr(value) '' + value # test to see if it is a string, in case a __repr__ method is buggy except: - value = '‚‚‚ exception in repr()' + value = '\xa5\xa5\xa5 exception in repr()' if truncvalue: return key + '\t' + value[:255] return key + '\t' + value @@ -360,7 +360,7 @@ INDEXING_TYPES = ( def unpack_object(object, indent = 0): tp = type(object) if tp in SIMPLE_TYPES and tp is not types.NoneType: - raise TypeError, 'canÕt browse simple type: %s' % tp.__name__ + raise TypeError, "can't browse simple type: %s" % tp.__name__ elif tp == types.DictionaryType: return unpack_dict(object, indent) elif tp in (types.TupleType, types.ListType): diff --git a/Mac/Tools/IDE/PyConsole.py b/Mac/Tools/IDE/PyConsole.py index ea2cf834fb..4c3278544e 100644 --- a/Mac/Tools/IDE/PyConsole.py +++ b/Mac/Tools/IDE/PyConsole.py @@ -48,7 +48,7 @@ class ConsoleTextWidget(W.EditText): def open(self): W.EditText.open(self) - self.write('Python ' + sys.version + '\n' + sys.copyright + '\n') + self.write('Python ' + sys.version + '\nType "copyright", "credits" or "license" for more information.\n') self.write(sys.ps1) self.flush() @@ -156,8 +156,8 @@ class PyConsole(W.Window): def makenamespacemenu(self, *args): W.SetCursor('watch') namespacelist = self.getnamespacelist() - self.namespacemenu.set([("Clear window", self.clearbuffer), ("Font settingsƒ", self.dofontsettings), - ["Namespace"] + namespacelist, ("Browse namespaceƒ", self.browsenamespace)]) + self.namespacemenu.set([("Clear window", self.clearbuffer), ("Font settings\xc9", self.dofontsettings), + ["Namespace"] + namespacelist, ("Browse namespace\xc9", self.browsenamespace)]) currentname = self.consoletext._namespace["__name__"] for i in range(len(namespacelist)): if namespacelist[i][0] == currentname: @@ -264,7 +264,7 @@ class PyOutput: tabbable = 0) self.w.outputtext = OutputTextWidget((-1, -1, -14, 1), inset = (6, 5), fontsettings = self.fontsettings, tabsettings = self.tabsettings, readonly = 1) - menuitems = [("Clear window", self.clearbuffer), ("Font settingsƒ", self.dofontsettings)] + menuitems = [("Clear window", self.clearbuffer), ("Font settings\xc9", self.dofontsettings)] self.w.popupmenu = W.PopupMenu((-15, -1, 16, 16), menuitems) self.w._bary = W.Scrollbar((-15, 14, 16, -14), self.w.outputtext.vscroll, max = 32767) diff --git a/Mac/Tools/IDE/PyDebugger.py b/Mac/Tools/IDE/PyDebugger.py index 61ce17b27b..c1f9b49f49 100644 --- a/Mac/Tools/IDE/PyDebugger.py +++ b/Mac/Tools/IDE/PyDebugger.py @@ -72,7 +72,7 @@ class Debugger(bdb.Bdb): self.botframe = bottomframe if running: self.set_continue() - self.reason = 'Runningƒ' + self.reason = 'Running\xc9' self.setstate('running') else: self.set_step() @@ -187,7 +187,7 @@ class Debugger(bdb.Bdb): def makeoptionsmenu(self): options = [('Clear breakpoints', self.w.panes.bottom.src.source.clearbreakpoints), ('Clear all breakpoints', self.clear_all_breaks), - ('Edit breakpointsƒ', self.edit_breaks), '-', + ('Edit breakpoints\xc9', self.edit_breaks), '-', (self.tracemagic and 'Disable __magic__ tracing' or 'Enable __magic__ tracing', self.togglemagic)] self.w.panes.bottom.src.optionsmenu.set(options) @@ -318,7 +318,7 @@ class Debugger(bdb.Bdb): def running(self): W.SetCursor('watch') - self.reason = 'Runningƒ' + self.reason = 'Running\xc9' self.setstate('running') #self.w.panes.bottom.src.source.set('') #self.w.panes.browserpanes.stacklist.stack.set([]) @@ -350,7 +350,7 @@ class Debugger(bdb.Bdb): try: f, filename, (suff, mode, dummy) = imp.find_module(modname) except ImportError: - self.w.panes.bottom.src.source.set('canÕt find file') + self.w.panes.bottom.src.source.set("can't find file") else: if f: f.close() @@ -360,9 +360,9 @@ class Debugger(bdb.Bdb): f.close() self.w.panes.bottom.src.source.set(data, filename) else: - self.w.panes.bottom.src.source.set('canÕt find file') + self.w.panes.bottom.src.source.set("can't find file") else: - self.w.panes.bottom.src.source.set('canÕt find file') + self.w.panes.bottom.src.source.set("can't find file") else: self.w.panes.bottom.src.source.set(data, filename) self.file = filename @@ -682,7 +682,7 @@ class BreakpointsViewer: self.w.panes.files = W.List(None, callback = self.filehit) #, flags = Lists.lOnlyOne) self.w.panes.gr = W.Group(None) self.w.panes.gr.breaks = W.List((0, 0, -130, 0), callback = self.linehit) #, flags = Lists.lOnlyOne) - self.w.panes.gr.openbutton = W.Button((-80, 4, 0, 16), 'Viewƒ', self.openbuttonhit) + self.w.panes.gr.openbutton = W.Button((-80, 4, 0, 16), 'View\xc9', self.openbuttonhit) self.w.panes.gr.deletebutton = W.Button((-80, 28, 0, 16), 'Delete', self.deletebuttonhit) self.w.bind('', self.close) @@ -880,7 +880,7 @@ _debugger = None def getdebugger(): if not __debug__: - raise W.AlertError, "CanÕt debug in –Optimize bytecode” mode.\r(see –Default startup options” in EditPythonPreferences)" + raise W.AlertError, "Can't debug in \"Optimize bytecode\" mode.\r(see \"Default startup options\" in EditPythonPreferences)" global _debugger if _debugger is None: _debugger = Debugger() diff --git a/Mac/Tools/IDE/PyDocSearch.py b/Mac/Tools/IDE/PyDocSearch.py index 599c3e0b56..4b35e4657e 100644 --- a/Mac/Tools/IDE/PyDocSearch.py +++ b/Mac/Tools/IDE/PyDocSearch.py @@ -101,7 +101,7 @@ class Results: class Status: def __init__(self): - self.w = W.Dialog((440, 64), "Searchingƒ") + self.w = W.Dialog((440, 64), "Searching\xc9") self.w.searching = W.TextBox((4, 4, -4, 16), "DevDev:PyPyDoc 1.5.1:ext:parseTupleAndKeywords.html") self.w.hits = W.TextBox((4, 24, -4, 16), "Hits: 0") self.w.canceltip = W.TextBox((4, 44, -4, 16), "Type cmd-period (.) to cancel.") diff --git a/Mac/Tools/IDE/PyEdit.py b/Mac/Tools/IDE/PyEdit.py index d968114b3f..a58de1b6f0 100644 --- a/Mac/Tools/IDE/PyEdit.py +++ b/Mac/Tools/IDE/PyEdit.py @@ -67,7 +67,7 @@ class Editor(W.Window): else: sourceOS = 'UNIX' searchString = '\n' - change = EasyDialogs.AskYesNoCancel('–%s” contains %s-style line feeds. ' + change = EasyDialogs.AskYesNoCancel('"%s" contains %s-style line feeds. ' 'Change them to MacOS carriage returns?' % (self.title, sourceOS), 1) # bug: Cancel is treated as No if change > 0: @@ -224,14 +224,14 @@ class Editor(W.Window): self.linefield.bind("", self.clicklinefield) def makeoptionsmenu(self): - menuitems = [('Font settingsƒ', self.domenu_fontsettings), - ("Save optionsƒ", self.domenu_options), + menuitems = [('Font settings\xc9', self.domenu_fontsettings), + ("Save options\xc9", self.domenu_options), '-', ('\0' + chr(self.run_as_main) + 'Run as __main__', self.domenu_toggle_run_as_main), #('\0' + chr(self.run_with_interpreter) + 'Run with Interpreter', self.domenu_toggle_run_with_interpreter), #'-', ('Modularize', self.domenu_modularize), - ('Browse namespaceƒ', self.domenu_browsenamespace), + ('Browse namespace\xc9', self.domenu_browsenamespace), '-'] if self.profiling: menuitems = menuitems + [('Disable profiler', self.domenu_toggleprofiler)] @@ -240,7 +240,7 @@ class Editor(W.Window): if self.editgroup.editor._debugger: menuitems = menuitems + [('Disable debugger', self.domenu_toggledebugger), ('Clear breakpoints', self.domenu_clearbreakpoints), - ('Edit breakpointsƒ', self.domenu_editbreakpoints)] + ('Edit breakpoints\xc9', self.domenu_editbreakpoints)] else: menuitems = menuitems + [('Enable debugger', self.domenu_toggledebugger)] self.editgroup.optionsmenu.set(menuitems) @@ -285,7 +285,7 @@ class Editor(W.Window): def domenu_modularize(self, *args): modname = _filename_as_modname(self.title) if not modname: - raise W.AlertError, 'CanÕt modularize –%s”' % self.title + raise W.AlertError, "Can't modularize \"%s\"" % self.title run_as_main = self.run_as_main self.run_as_main = 0 self.run() @@ -360,7 +360,7 @@ class Editor(W.Window): import EasyDialogs import Qd Qd.InitCursor() # XXX should be done by dialog - save = EasyDialogs.AskYesNoCancel('Save window –%s” before closing?' % self.title, 1) + save = EasyDialogs.AskYesNoCancel('Save window "%s" before closing?' % self.title, 1) if save > 0: if self.domenu_save(): return 1 @@ -416,11 +416,7 @@ class Editor(W.Window): W.getapplication().makescriptsmenu() def domenu_save_as_applet(self, *args): - try: - import buildtools - except ImportError: - # only have buildtools in Python >= 1.5.2 - raise W.AlertError, "–Save as Applet” is only supported in\rPython 1.5.2 and up." + import buildtools buildtools.DEBUG = 0 # ouch. @@ -504,7 +500,7 @@ class Editor(W.Window): if self.editgroup.editor.changed: import EasyDialogs import Qd; Qd.InitCursor() - save = EasyDialogs.AskYesNoCancel('Save –%s” before running?' % self.title, 1) + save = EasyDialogs.AskYesNoCancel('Save "%s" before running?' % self.title, 1) if save > 0: if self.domenu_save(): return @@ -560,23 +556,23 @@ class Editor(W.Window): classname = string.split(string.strip(line[6:]))[0] classend = identifieRE_match(classname) if classend < 1: - raise W.AlertError, 'CanÕt find a class.' + raise W.AlertError, "Can't find a class." classname = classname[:classend] break elif line and line[0] not in '\t#': - raise W.AlertError, 'CanÕt find a class.' + raise W.AlertError, "Can't find a class." else: - raise W.AlertError, 'CanÕt find a class.' + raise W.AlertError, "Can't find a class." if globals.has_key(classname): locals = globals[classname].__dict__ else: - raise W.AlertError, 'CanÕt find class –%s”.' % classname + raise W.AlertError, "Can't find class \"%s\"." % classname # dedent to top level for i in range(len(lines)): lines[i] = lines[i][1:] pytext = string.join(lines, '\r') elif indent > 0: - raise W.AlertError, 'CanÕt run indented code.' + raise W.AlertError, "Can't run indented code." # add "newlines" to fool compile/exec: # now a traceback will give the right line number @@ -839,7 +835,7 @@ class SearchEngine: self.buttons = [ ("Find", "cmdf", self.find), ("Replace", "cmdr", self.replace), ("Replace all", None, self.replaceall), - ("DonÕt find", "cmdd", self.dont), + ("Don't find", "cmdd", self.dont), ("Cancel", "cmd.", self.cancel) ] for i in range(len(self.buttons)): @@ -848,7 +844,7 @@ class SearchEngine: self.w[title] = W.Button(bounds, title, callback) if shortcut: self.w.bind(shortcut, self.w[title].push) - self.w.setdefaultbutton(self.w["DonÕt find"]) + self.w.setdefaultbutton(self.w["Don't find"]) self.w.find.edit.bind("", self.key) self.w.bind("", self.activate) self.w.bind("", self.close) @@ -881,11 +877,11 @@ class SearchEngine: else: for title, cmd, call in self.buttons[:-2]: self.w[title].enable(0) - self.w.setdefaultbutton(self.w["DonÕt find"]) + self.w.setdefaultbutton(self.w["Don't find"]) else: for title, cmd, call in self.buttons[:-2]: self.w[title].enable(0) - self.w.setdefaultbutton(self.w["DonÕt find"]) + self.w.setdefaultbutton(self.w["Don't find"]) def find(self): self.getparmsfromwindow() @@ -1204,7 +1200,7 @@ class _EditorDefaultSettings: self.template = "%s, %d point" self.fontsettings, self.tabsettings, self.windowsize = geteditorprefs() self.w = W.Dialog((328, 120), "Editor default settings") - self.w.setfontbutton = W.Button((8, 8, 80, 16), "Set fontƒ", self.dofont) + self.w.setfontbutton = W.Button((8, 8, 80, 16), "Set font\xc9", self.dofont) self.w.fonttext = W.TextBox((98, 10, -8, 14), self.template % (self.fontsettings[0], self.fontsettings[2])) self.w.picksizebutton = W.Button((8, 50, 80, 16), "Front window", self.picksize) diff --git a/Mac/Tools/IDE/PythonIDE.py b/Mac/Tools/IDE/PythonIDE.py index b80fd5f072..9c0902e41e 100644 --- a/Mac/Tools/IDE/PythonIDE.py +++ b/Mac/Tools/IDE/PythonIDE.py @@ -1,9 +1,9 @@ -# copyright 1996-1999 Just van Rossum, Letterror. just@letterror.com +# copyright 1996-2001 Just van Rossum, Letterror. just@letterror.com # keep this (__main__) as clean as possible, since we are using # it like the "normal" interpreter. -__version__ = '1.0' +__version__ = '1.0.1' def init(): diff --git a/Mac/Tools/IDE/PythonIDE.rsrc b/Mac/Tools/IDE/PythonIDE.rsrc index 1d6ca2ce65e4a788e2c842e43fc71028728722ab..70f0b2b06aa5aeee388b054bd83e0886f662b483 100644 GIT binary patch literal 13828 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 literal 16544 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 K?^?-!SpN@C;NKMh diff --git a/Mac/Tools/IDE/PythonIDEMain.py b/Mac/Tools/IDE/PythonIDEMain.py index d5677a7a84..55489e231f 100644 --- a/Mac/Tools/IDE/PythonIDEMain.py +++ b/Mac/Tools/IDE/PythonIDEMain.py @@ -50,13 +50,13 @@ class PythonIDE(Wapplication.Application): def makeusermenus(self): m = Wapplication.Menu(self.menubar, "File") newitem = FrameWork.MenuItem(m, "New", "N", 'new') - openitem = FrameWork.MenuItem(m, "Openƒ", "O", 'open') + openitem = FrameWork.MenuItem(m, "Open\xc9", "O", 'open') FrameWork.Separator(m) closeitem = FrameWork.MenuItem(m, "Close", "W", 'close') saveitem = FrameWork.MenuItem(m, "Save", "S", 'save') - saveasitem = FrameWork.MenuItem(m, "Save asƒ", None, 'save_as') + saveasitem = FrameWork.MenuItem(m, "Save as\xc9", None, 'save_as') FrameWork.Separator(m) - saveasappletitem = FrameWork.MenuItem(m, "Save as Appletƒ", None, 'save_as_applet') + saveasappletitem = FrameWork.MenuItem(m, "Save as Applet\xc9", None, 'save_as_applet') FrameWork.Separator(m) quititem = FrameWork.MenuItem(m, "Quit", "Q", 'quit') @@ -71,7 +71,7 @@ class PythonIDE(Wapplication.Application): selallitem = FrameWork.MenuItem(m, "Select all", "A", "selectall") sellineitem = FrameWork.MenuItem(m, "Select line", "L", "selectline") FrameWork.Separator(m) - finditem = FrameWork.MenuItem(m, "Findƒ", "F", "find") + finditem = FrameWork.MenuItem(m, "Find\xc9", "F", "find") findagainitem = FrameWork.MenuItem(m, "Find again", 'G', "findnext") enterselitem = FrameWork.MenuItem(m, "Enter search string", "E", "entersearchstring") replaceitem = FrameWork.MenuItem(m, "Replace", None, "replace") @@ -84,12 +84,12 @@ class PythonIDE(Wapplication.Application): runitem = FrameWork.MenuItem(m, "Run window", "R", 'run') runselitem = FrameWork.MenuItem(m, "Run selection", None, 'runselection') FrameWork.Separator(m) - moditem = FrameWork.MenuItem(m, "Module browserƒ", "M", self.domenu_modulebrowser) + moditem = FrameWork.MenuItem(m, "Module browser\xc9", "M", self.domenu_modulebrowser) FrameWork.Separator(m) mm = FrameWork.SubMenu(m, "Preferences") - FrameWork.MenuItem(mm, "Set Scripts folderƒ", None, self.do_setscriptsfolder) - FrameWork.MenuItem(mm, "Editor default settingsƒ", None, self.do_editorprefs) - FrameWork.MenuItem(mm, "Set default window fontƒ", None, self.do_setwindowfont) + FrameWork.MenuItem(mm, "Set Scripts folder\xc9", None, self.do_setscriptsfolder) + FrameWork.MenuItem(mm, "Editor default settings\xc9", None, self.do_editorprefs) + FrameWork.MenuItem(mm, "Set default window font\xc9", None, self.do_setwindowfont) self.openwindowsmenu = Wapplication.Menu(self.menubar, 'Windows') self.makeopenwindowsmenu() @@ -110,7 +110,7 @@ class PythonIDE(Wapplication.Application): path = os.path.join(os.getcwd(), "Scripts") if not os.path.exists(path): os.mkdir(path) - f = open(os.path.join(path, "Place your scripts hereƒ"), "w") + f = open(os.path.join(path, "Place your scripts here\xc9"), "w") f.close() fss = macfs.FSSpec(path) self.scriptsfolder = fss.NewAlias() @@ -156,10 +156,10 @@ class PythonIDE(Wapplication.Application): if ftype == 'TEXT': self.openscript(path) else: - W.Message("CanÕt open file of type '%s'." % ftype) + W.Message("Can't open file of type '%s'." % ftype) def getabouttext(self): - return "About Python IDEƒ" + return "About Python IDE\xc9" def do_about(self, id, item, window, event): Splash.about() diff --git a/Mac/Tools/IDE/Splash.py b/Mac/Tools/IDE/Splash.py index 07a51e4d71..60cd7c6dce 100644 --- a/Mac/Tools/IDE/Splash.py +++ b/Mac/Tools/IDE/Splash.py @@ -24,6 +24,9 @@ def uninstall_importhook(): _progress = 0 +_about_width = 440 +_about_height = 340 + def importing(module): global _progress Qd.SetPort(splash) @@ -32,17 +35,19 @@ def importing(module): fontID = geneva Qd.TextFont(fontID) Qd.TextSize(9) - rect = (35, 265, 365, 281) + labelrect = (35, _about_height - 35, _about_width - 35, _about_height - 19) + framerect = (35, _about_height - 19, _about_width - 35, _about_height - 11) + l, t, r, b = progrect = Qd.InsetRect(framerect, 1, 1) if module: - TE.TETextBox('Importing: ' + module, rect, 0) + TE.TETextBox('Importing: ' + module, labelrect, 0) if not _progress: - Qd.FrameRect((35, 281, 365, 289)) - pos = min(36 + 330 * _progress / 44, 364) - Qd.PaintRect((36, 282, pos, 288)) + Qd.FrameRect(framerect) + pos = min(r, l + ((r - l) * _progress) / 44) + Qd.PaintRect((l, t, pos, b)) _progress = _progress + 1 else: - Qd.EraseRect(rect) - Qd.PaintRect((36, 282, pos, 288)) + Qd.EraseRect(labelrect) + Qd.PaintRect((l, t, pos, b)) Qd.QDFlushPortBuffer(splash.GetDialogWindow().GetWindowPort(), None) def my__import__(name, globals=None, locals=None, fromlist=None): @@ -71,20 +76,20 @@ import sys _keepsplashscreenopen = 0 -abouttext1 = """The Python Integrated Development Environment for the MacintoshŽ +abouttext1 = """The Python Integrated Development Environment for the Macintosh\xaa Version: %s -Copyright 1997-2000 Just van Rossum, Letterror. +Copyright 1997-2001 Just van Rossum, Letterror. Python %s %s See: 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?', +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 . . . @@ -111,7 +116,7 @@ def drawtext(what = 0): fontID = geneva Qd.TextFont(fontID) Qd.TextSize(9) - rect = (10, 115, 390, 290) + rect = (10, 115, _about_width - 10, _about_height - 30) if not what: import __main__ abouttxt = nl2return(abouttext1 % ( @@ -134,6 +139,7 @@ def wait(): Qd.InitCursor() time = Evt.TickCount() whattext = 0 + drawtext(whattext) while _keepsplashscreenopen: ok, event = Evt.EventAvail(Events.highLevelEventMask) if ok: @@ -154,7 +160,7 @@ def wait(): drawtext(whattext) time = Evt.TickCount() del splash - #Res.CloseResFile(splashresfile) + def about(): global splash, splashresfile, _keepsplashscreenopen diff --git a/Mac/Tools/IDE/Wapplication.py b/Mac/Tools/IDE/Wapplication.py index 540fca08c4..7a9b74a4c2 100644 --- a/Mac/Tools/IDE/Wapplication.py +++ b/Mac/Tools/IDE/Wapplication.py @@ -344,18 +344,18 @@ class Application(FrameWork.Application): # XXX and that's the last thing we want here. f, filename, (suff, mode, dummy) = imp.find_module(modname) except ImportError: - raise W.AlertError, "CanÕt find file for –%s”" % modname + raise W.AlertError, "Can't find file for \"%s\"" % modname else: if not f: - raise W.AlertError, "CanÕt find file for –%s”" % modname + raise W.AlertError, "Can't find file for \"%s\"" % modname f.close() if suff == '.py': self.openscript(filename, lineno, charoffset) return else: - raise W.AlertError, "CanÕt find file for –%s”" % modname + raise W.AlertError, "Can't find file for \"%s\"" % modname else: - raise W.AlertError, "CanÕt find file •%sÕ" % filename + raise W.AlertError, "Can't find file \"%s\"" % filename if lineno is not None: editor.selectline(lineno, charoffset) return editor diff --git a/Mac/Tools/IDE/Wtext.py b/Mac/Tools/IDE/Wtext.py index b87008b6e7..151868335a 100644 --- a/Mac/Tools/IDE/Wtext.py +++ b/Mac/Tools/IDE/Wtext.py @@ -871,7 +871,7 @@ class PyEditor(TextEditor): if onoff: if not __debug__: import W - raise W.AlertError, "CanÕt debug in –Optimize bytecode” mode.\r(see –Default startup options” in EditPythonPreferences)" + raise W.AlertError, "Can't debug in \"Optimize bytecode\" mode.\r(see \"Default startup options\" in EditPythonPreferences)" import PyDebugger self._debugger = PyDebugger.getdebugger() self._debugger.register_editor(self, self.file) diff --git a/Mac/Tools/IDE/Wtraceback.py b/Mac/Tools/IDE/Wtraceback.py index 10894a8952..2637cc693e 100644 --- a/Mac/Tools/IDE/Wtraceback.py +++ b/Mac/Tools/IDE/Wtraceback.py @@ -57,7 +57,7 @@ class TraceBack: filename = os.path.split(filename)[1] if lineno: charno = charno - 1 - text = str(value) + '\rFile: "' + str(filename) + '", line ' + str(lineno) + '\r\r' + line[:charno] + "‚" + line[charno:-1] + text = str(value) + '\rFile: "' + str(filename) + '", line ' + str(lineno) + '\r\r' + line[:charno] + "\xa5" + line[charno:-1] else: text = str(value) + '\rFile: "' + str(filename) + '"' self.syntaxdialog = W.ModalDialog((360, 120), "Syntax Error") @@ -123,10 +123,10 @@ class TraceBack: self.w.editbutton = W.Button((10, -30, 60, 16), "Edit", self.edit) self.w.editbutton.enable(0) - self.w.browselocalsbutton = W.Button((80, -30, 100, 16), "Browse localsƒ", self.browselocals) + self.w.browselocalsbutton = W.Button((80, -30, 100, 16), "Browse locals\xc9", self.browselocals) self.w.browselocalsbutton.enable(0) - self.w.postmortembutton = W.Button((190, -30, 100, 16), "Post mortemƒ", self.postmortem) + self.w.postmortembutton = W.Button((190, -30, 100, 16), "Post mortem\xc9", self.postmortem) self.w.setdefaultbutton(self.w.editbutton) self.w.bind("cmdb", self.w.browselocalsbutton.push) diff --git a/Mac/Tools/IDE/Wwindows.py b/Mac/Tools/IDE/Wwindows.py index e16c647cc5..29c07e58be 100644 --- a/Mac/Tools/IDE/Wwindows.py +++ b/Mac/Tools/IDE/Wwindows.py @@ -568,7 +568,7 @@ def FrontWindowInsert(stuff): pass import EasyDialogs if EasyDialogs.AskYesNoCancel( - "CanÕt find window or widget to insert text into; copy to clipboard instead?", + "Can't find window or widget to insert text into; copy to clipboard instead?", 1) == 1: import Scrap Scrap.ZeroScrap() -- 2.50.0