From: Robin Dunn Date: Thu, 8 Aug 2002 22:33:57 +0000 (+0000) Subject: Some little tweaks to PyCrust X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/17d598b270a648fa3ad1ae6f0c5298cd5c039ec1 Some little tweaks to PyCrust git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16428 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/wxPython/wxPython/lib/PyCrust/PyCrustApp.py b/wxPython/wxPython/lib/PyCrust/PyCrustApp.py index c6b93c7d14..9e691ec6a7 100755 --- a/wxPython/wxPython/lib/PyCrust/PyCrustApp.py +++ b/wxPython/wxPython/lib/PyCrust/PyCrustApp.py @@ -13,8 +13,10 @@ class App(wxApp): """PyCrust standalone application.""" def OnInit(self): + wxInitAllImageHandlers() locals = {'__app__': 'PyCrust Standalone Application'} self.crustFrame = CrustFrame(locals=locals) + self.crustFrame.SetSize((750, 525)) self.crustFrame.Show(true) self.SetTopWindow(self.crustFrame) # Add the application object to the sys module's namespace. diff --git a/wxPython/wxPython/lib/PyCrust/PyShellApp.py b/wxPython/wxPython/lib/PyCrust/PyShellApp.py index 04568c26f5..0113b77c7b 100755 --- a/wxPython/wxPython/lib/PyCrust/PyShellApp.py +++ b/wxPython/wxPython/lib/PyCrust/PyShellApp.py @@ -13,8 +13,10 @@ class App(wxApp): """PyShell standalone application.""" def OnInit(self): + wxInitAllImageHandlers() locals = {'__app__': 'PyShell Standalone Application'} self.shellFrame = ShellFrame(locals=locals) + self.shellFrame.SetSize((750, 525)) self.shellFrame.Show(true) self.SetTopWindow(self.shellFrame) # Add the application object to the sys module's namespace. diff --git a/wxPython/wxPython/lib/PyCrust/crust.py b/wxPython/wxPython/lib/PyCrust/crust.py index 9a8703738c..23235b2619 100644 --- a/wxPython/wxPython/lib/PyCrust/crust.py +++ b/wxPython/wxPython/lib/PyCrust/crust.py @@ -12,10 +12,10 @@ from version import VERSION class Crust(wxSplitterWindow): """PyCrust Crust based on wxSplitterWindow.""" - + name = 'PyCrust Crust' revision = __revision__ - + def __init__(self, parent, id=-1, pos=wxDefaultPosition, \ size=wxDefaultSize, style=wxSP_3D, name='Crust Window', \ rootObject=None, rootLabel=None, rootIsNamespace=1, \ @@ -40,10 +40,10 @@ from shell import ShellMenu class CrustFrame(wxFrame, ShellMenu): """Frame containing all the PyCrust components.""" - + name = 'PyCrust Frame' revision = __revision__ - + def __init__(self, parent=None, id=-1, title='PyCrust', \ pos=wxDefaultPosition, size=wxDefaultSize, \ style=wxDEFAULT_FRAME_STYLE, \ @@ -55,11 +55,12 @@ class CrustFrame(wxFrame, ShellMenu): intro += '\nSponsored by Orbtech - Your source for Python programming expertise.' self.CreateStatusBar() self.SetStatusText(intro.replace('\n', ', ')) - if wxPlatform == '__WXMSW__': - import os - filename = os.path.join(os.path.dirname(__file__), 'PyCrust.ico') - icon = wxIcon(filename, wxBITMAP_TYPE_ICO) - self.SetIcon(icon) + + import os + filename = os.path.join(os.path.dirname(__file__), 'PyCrust.ico') + icon = wxIcon(filename, wxBITMAP_TYPE_ICO) + self.SetIcon(icon) + self.crust = Crust(parent=self, intro=intro, \ rootObject=rootObject, \ rootLabel=rootLabel, \ @@ -79,4 +80,4 @@ class CrustFrame(wxFrame, ShellMenu): self.createMenus() - + diff --git a/wxPython/wxPython/lib/PyCrust/shell.py b/wxPython/wxPython/lib/PyCrust/shell.py index 79ce1ca331..b96ea80218 100644 --- a/wxPython/wxPython/lib/PyCrust/shell.py +++ b/wxPython/wxPython/lib/PyCrust/shell.py @@ -48,12 +48,12 @@ else: # GTK class ShellFacade: """Simplified interface to all shell-related functionality. - This is a semi-transparent facade, in that all attributes of other are + This is a semi-transparent facade, in that all attributes of other are still accessible, even though only some are visible to the user.""" - + name = 'PyCrust Shell Interface' revision = __revision__ - + def __init__(self, other): """Create a ShellFacade instance.""" methods = ['ask', @@ -126,10 +126,10 @@ F8 Command-completion of History item. class Shell(wxStyledTextCtrl): """PyCrust Shell based on wxStyledTextCtrl.""" - + name = 'PyCrust Shell' revision = __revision__ - + def __init__(self, parent, id=-1, pos=wxDefaultPosition, \ size=wxDefaultSize, style=wxCLIP_CHILDREN, introText='', \ locals=None, InterpClass=None, *args, **kwds): @@ -147,7 +147,7 @@ class Shell(wxStyledTextCtrl): else: Interpreter = InterpClass # Create default locals so we have something interesting. - shellLocals = {'__name__': 'PyCrust-Shell', + shellLocals = {'__name__': 'PyCrust-Shell', '__doc__': 'PyCrust-Shell, The PyCrust Python Shell.', '__version__': VERSION, } @@ -196,12 +196,12 @@ class Shell(wxStyledTextCtrl): def destroy(self): del self.interp - + def config(self): """Configure shell based on user preferences.""" self.SetMarginType(1, wxSTC_MARGIN_NUMBER) self.SetMarginWidth(1, 40) - + self.SetLexer(wxSTC_LEX_PYTHON) self.SetKeyWords(0, ' '.join(keyword.kwlist)) @@ -229,10 +229,10 @@ class Shell(wxStyledTextCtrl): self.write(self.interp.introText) except AttributeError: pass - + def setBuiltinKeywords(self): """Create pseudo keywords as part of builtins. - + This simply sets "close", "exit" and "quit" to a helpful string. """ import __builtin__ @@ -241,19 +241,19 @@ class Shell(wxStyledTextCtrl): def quit(self): """Quit the application.""" - + # XXX Good enough for now but later we want to send a close event. - + # In the close event handler we can make sure they want to quit. # Other applications, like PythonCard, may choose to hide rather than # quit so we should just post the event and let the surrounding app # decide what it wants to do. self.write('Click on the close button to leave the application.') - + def setLocalShell(self): """Add 'shell' to locals as reference to ShellFacade instance.""" self.interp.locals['shell'] = ShellFacade(other=self) - + def execStartupScript(self, startupScript): """Execute the user's PYTHONSTARTUP script if they have one.""" if startupScript and os.path.isfile(startupScript): @@ -262,10 +262,10 @@ class Shell(wxStyledTextCtrl): (`startupText`, `startupScript`)) else: self.push('') - + def setStyles(self, faces): """Configure font size, typeface and color for lexer.""" - + # Default style self.StyleSetSpec(wxSTC_STYLE_DEFAULT, "face:%(mono)s,size:%(size)d,back:%(backcol)s" % faces) @@ -533,7 +533,7 @@ class Shell(wxStyledTextCtrl): def setStatusText(self, text): """Display status information.""" - + # This method will most likely be replaced by the enclosing app # to do something more interesting, like write to a status bar. print text @@ -547,11 +547,11 @@ class Shell(wxStyledTextCtrl): def processLine(self): """Process the line of text at which the user hit Enter.""" - + # The user hit ENTER and we need to decide what to do. They could be # sitting on any line in the shell. - thepos = self.GetCurrentPos() + thepos = self.GetCurrentPos() startpos = self.promptPosEnd endpos = self.GetTextLength() # If they hit RETURN inside the current command, execute the command. @@ -577,7 +577,7 @@ class Shell(wxStyledTextCtrl): def getMultilineCommand(self, rstrip=1): """Extract a multi-line command from the editor. - + The command may not necessarily be valid Python syntax.""" # XXX Need to extract real prompts here. Need to keep track of the # prompt every time a command is issued. @@ -611,10 +611,10 @@ class Shell(wxStyledTextCtrl): if rstrip: command = command.rstrip() return command - + def getCommand(self, text=None, rstrip=1): """Extract a command from text which may include a shell prompt. - + The command may not necessarily be valid Python syntax.""" if not text: text = self.GetCurLine()[0] @@ -638,7 +638,7 @@ class Shell(wxStyledTextCtrl): elif text[:ps2size] == ps2: text = text[ps2size:] return text - + def push(self, command): """Send command to the interpreter for execution.""" self.write(os.linesep) @@ -678,7 +678,7 @@ class Shell(wxStyledTextCtrl): def prompt(self): """Display appropriate prompt for the context, either ps1 or ps2. - + If this is a continuation line, autoindent as necessary.""" if self.more: prompt = str(sys.ps2) @@ -728,25 +728,25 @@ class Shell(wxStyledTextCtrl): def ask(self, prompt='Please enter your response:'): """Get response from the user.""" return raw_input(prompt=prompt) - + def pause(self): """Halt execution pending a response from the user.""" self.ask('Press enter to continue:') - + def clear(self): """Delete all text from the shell.""" self.ClearAll() - + def run(self, command, prompt=1, verbose=1): """Execute command within the shell as if it was typed in directly. >>> shell.run('print "this"') >>> print "this" this - >>> + >>> """ # Go to the very bottom of the text. endpos = self.GetTextLength() - self.SetCurrentPos(endpos) + self.SetCurrentPos(endpos) command = command.rstrip() if prompt: self.prompt() if verbose: self.write(command) @@ -764,7 +764,7 @@ class Shell(wxStyledTextCtrl): self.run(command, prompt=0, verbose=1) finally: file.close() - + def autoCompleteShow(self, command): """Display auto-completion popup list.""" list = self.interp.getAutoCompleteList(command, @@ -796,11 +796,11 @@ class Shell(wxStyledTextCtrl): def writeOut(self, text): """Replacement for stdout.""" self.write(text) - + def writeErr(self, text): """Replacement for stderr.""" self.write(text) - + def redirectStdin(self, redirect=1): """If redirect is true then sys.stdin will come from the shell.""" if redirect: @@ -830,7 +830,7 @@ class Shell(wxStyledTextCtrl): return 1 else: return 0 - + def CanCopy(self): """Return true if text is selected and can be copied.""" return self.GetSelectionStart() != self.GetSelectionEnd() @@ -926,7 +926,7 @@ class Shell(wxStyledTextCtrl): command += '\n' command += line commands.append(command) - for command in commands: + for command in commands: command = command.replace('\n', os.linesep + sys.ps2) self.write(command) self.processLine() @@ -945,7 +945,7 @@ ID_CALLTIPS_SHOW = NewId() class ShellMenu: """Mixin class to add standard menu items.""" - + def createMenus(self): m = self.fileMenu = wxMenu() m.AppendSeparator() @@ -1106,14 +1106,14 @@ class ShellMenu: event.Check(self.shell.autoCompleteIncludeDouble) elif id == ID_CALLTIPS_SHOW: event.Check(self.shell.autoCallTip) - + class ShellFrame(wxFrame, ShellMenu): """Frame containing the PyCrust shell component.""" - + name = 'PyCrust Shell Frame' revision = __revision__ - + def __init__(self, parent=None, id=-1, title='PyShell', \ pos=wxDefaultPosition, size=wxDefaultSize, \ style=wxDEFAULT_FRAME_STYLE, locals=None, \ @@ -1124,11 +1124,12 @@ class ShellFrame(wxFrame, ShellMenu): intro += '\nSponsored by Orbtech - Your source for Python programming expertise.' self.CreateStatusBar() self.SetStatusText(intro.replace('\n', ', ')) - if wxPlatform == '__WXMSW__': - import os - filename = os.path.join(os.path.dirname(__file__), 'PyCrust.ico') - icon = wxIcon(filename, wxBITMAP_TYPE_ICO) - self.SetIcon(icon) + + import os + filename = os.path.join(os.path.dirname(__file__), 'PyCrust.ico') + icon = wxIcon(filename, wxBITMAP_TYPE_ICO) + self.SetIcon(icon) + self.shell = Shell(parent=self, id=-1, introText=intro, \ locals=locals, InterpClass=InterpClass, \ *args, **kwds) @@ -1137,5 +1138,5 @@ class ShellFrame(wxFrame, ShellMenu): self.createMenus() - - + +