PyCrust 0.8.1
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18564 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
406
wxPython/wxPython/lib/PyCrust/CHANGES.txt
Normal file
406
wxPython/wxPython/lib/PyCrust/CHANGES.txt
Normal file
@@ -0,0 +1,406 @@
|
|||||||
|
==================================================================
|
||||||
|
CHANGES.txt is a list of code changes for each release of PyCrust.
|
||||||
|
==================================================================
|
||||||
|
|
||||||
|
=====
|
||||||
|
0.8.1 (12/20/2002 to //2002)
|
||||||
|
=====
|
||||||
|
Improved keyboard handling with Autocomplete active. You can now
|
||||||
|
use Enter as well as Tab to select an item from the list.
|
||||||
|
-----
|
||||||
|
Disabled autocomplete for lists of 2000 items or more. The current
|
||||||
|
implementation of wxSTC can't handle lists this big.
|
||||||
|
-----
|
||||||
|
Changed filling to always display docstrings for objects. This is
|
||||||
|
useful for objects whose docstrings have been decorated, rather than
|
||||||
|
coming directly from the source code. (Hmmm. Sounds like someone is
|
||||||
|
doing some decorating. I wonder where that would be helpful. ;-)
|
||||||
|
-----
|
||||||
|
Fixed handling of icon. Added images.py file.
|
||||||
|
-----
|
||||||
|
|
||||||
|
|
||||||
|
=====
|
||||||
|
0.8 (10/29/2002 to 12/16/2002)
|
||||||
|
=====
|
||||||
|
Added "help" to startup banner info.
|
||||||
|
-----
|
||||||
|
Made all wx and stc imports explicit. No more import *.
|
||||||
|
-----
|
||||||
|
Replaced use of wx's true and false with Python's True and False.
|
||||||
|
-----
|
||||||
|
Changed introspect.getRoot() to use tokenize module. This does a
|
||||||
|
slightly better job than the previous parsing routine and the code
|
||||||
|
is clearer.
|
||||||
|
-----
|
||||||
|
Improved handling of whitespace and empty types during introspection.
|
||||||
|
-----
|
||||||
|
Fixed cut/copy clipboard problem under Linux. (Robin Dunn rocks!!!)
|
||||||
|
-----
|
||||||
|
Added shell.about() which works like this:
|
||||||
|
>>> shell.about()
|
||||||
|
PyCrust Version: 0.8
|
||||||
|
Shell Revision: 1.80
|
||||||
|
Interpreter Revision: 1.15
|
||||||
|
Python Version: 2.2.2
|
||||||
|
wxPython Version: 2.3.3.1
|
||||||
|
Platform: linux2
|
||||||
|
-----
|
||||||
|
Added copy plus and paste plus to shell menu.
|
||||||
|
-----
|
||||||
|
Moved shell menu from shell.py to shellmenu.py.
|
||||||
|
-----
|
||||||
|
Added sys.stdin.readlines() support.
|
||||||
|
-----
|
||||||
|
Added time.sleep() in readline() and OnIdle() event handler to free
|
||||||
|
up the CPU.
|
||||||
|
-----
|
||||||
|
|
||||||
|
|
||||||
|
=====
|
||||||
|
0.7.2 (2/22/2002 to 8/27/2002)
|
||||||
|
=====
|
||||||
|
Tweaked getAttributeNames() to pick up a few more attributes:
|
||||||
|
'__bases__', '__class__', '__dict__', '__name__',
|
||||||
|
'func_closure', 'func_code', 'func_defaults', 'func_dict',
|
||||||
|
'func_doc', 'func_globals', 'func_name'
|
||||||
|
-----
|
||||||
|
Added a tests directory and unit tests.
|
||||||
|
-----
|
||||||
|
Improved support for empty types in the shell: [], () and {} as far
|
||||||
|
as when call tips and autocompletion are available.
|
||||||
|
Added support for the other triple string - ''''''.
|
||||||
|
-----
|
||||||
|
Refactored introspect.py to improve testability.
|
||||||
|
-----
|
||||||
|
Improved call tips for unbound methods by leaving the "self"
|
||||||
|
parameter, since unbound methods require an instance be passed.
|
||||||
|
-----
|
||||||
|
Fixed call tip bug where a tip was displayed when a "(" was typed
|
||||||
|
after an object that wasn't callable.
|
||||||
|
-----
|
||||||
|
Fixed getAllAttributeNames when str(object) fails.
|
||||||
|
-----
|
||||||
|
Added brace highlighting. (Thank you, Kevin Altis.)
|
||||||
|
-----
|
||||||
|
Fixed problem displaying unicode objects in PyFilling.
|
||||||
|
-----
|
||||||
|
Changed how filling.py checks for expandable objects.
|
||||||
|
Lists are now expandable objects.
|
||||||
|
-----
|
||||||
|
Made the key handling more robust when there is an active text
|
||||||
|
selection that includes text prior to the last primary prompt.
|
||||||
|
Thanks to Raul Cota for pointing this out.
|
||||||
|
-----
|
||||||
|
Fixed wxSTC problem with brace highlighting and non-us keyboards.
|
||||||
|
(Thank you for the patch, Jean-Michel Fauth.)
|
||||||
|
-----
|
||||||
|
Added busy = wxBusyCursor() to key point in shell and filling.
|
||||||
|
-----
|
||||||
|
Added OnCloseWindow handler to ShellFrame and CrustFrame.
|
||||||
|
-----
|
||||||
|
Default to SetWrapMode(1) for shell and namespace viewer.
|
||||||
|
-----
|
||||||
|
Added shell.wrap() and shell.zoom().
|
||||||
|
-----
|
||||||
|
Added Raul Cota autoCompleteKeys hooks.
|
||||||
|
-----
|
||||||
|
Cleaned up various little key handling bugs.
|
||||||
|
-----
|
||||||
|
Changed input methods to get values from shell, rather than dialog
|
||||||
|
boxes. Renamed readIn to readline and readRaw to raw_input.
|
||||||
|
-----
|
||||||
|
|
||||||
|
|
||||||
|
=====
|
||||||
|
0.7.1 (12/12/2001 to 2/21/2002)
|
||||||
|
=====
|
||||||
|
Fixed OnChar() issues effecting European keyboards, as reported by
|
||||||
|
Jean-Michel Fauth.
|
||||||
|
-----
|
||||||
|
Fixed introspect.py issue with xmlrpc objects reported by Kevin Altis.
|
||||||
|
-----
|
||||||
|
Fixed some introspect/PyFilling issues with regard to Python 2.2.
|
||||||
|
-----
|
||||||
|
Fixed font background color as reported by Keith J. Farmer. (Thanks)
|
||||||
|
-----
|
||||||
|
Fixed problem with call tips and autocompletion inside multiline
|
||||||
|
commands as report by Kevin Altis.
|
||||||
|
-----
|
||||||
|
Improved OnKeyDown handling of cut/copy/paste operations based on
|
||||||
|
feedback from Syver Enstad. (Thanks)
|
||||||
|
-----
|
||||||
|
Added a shell.help() method to display some help info.
|
||||||
|
-----
|
||||||
|
Changed sort of items in the namespace viewer to case insensitive.
|
||||||
|
-----
|
||||||
|
Changed attributes.sort(lambda x, y: cmp(x.upper(), y.upper())) in
|
||||||
|
advance of an upcoming fix to an autocompletion matching bug in wxSTC.
|
||||||
|
-----
|
||||||
|
Improved support for ZODB by allowing namespace drilldown into BTrees.
|
||||||
|
-----
|
||||||
|
Added shell.PasteAndRun() to support pasting multiple commands into
|
||||||
|
the shell from the clipboard. Ctrl+Shift+V or v.
|
||||||
|
-----
|
||||||
|
Enter now always processes a command (or copies down a previous one.)
|
||||||
|
To insert a line break, press Ctrl+Enter.
|
||||||
|
-----
|
||||||
|
Escape key clears the current, unexecuted command.
|
||||||
|
-----
|
||||||
|
History retrieval changed to replace current command. Added new keys
|
||||||
|
to insert from history - Shift+Up and Shift+Down.
|
||||||
|
-----
|
||||||
|
Better call tips on objects with __call__ methods.
|
||||||
|
-----
|
||||||
|
Improved call tip positioning calculation.
|
||||||
|
-----
|
||||||
|
|
||||||
|
|
||||||
|
=====
|
||||||
|
0.7 (10/15/2001 to 12/11/2001)
|
||||||
|
=====
|
||||||
|
Changed how command history retrieval functions work.
|
||||||
|
Added Alt-P, Alt-N as keybindings for Retrieve-Previous, Retrieve-Next.
|
||||||
|
-----
|
||||||
|
Added full support for mult-line commands, similar to IDLE.
|
||||||
|
-----
|
||||||
|
Changed introspect.getAttributeNames() to do a case insensitive sort.
|
||||||
|
-----
|
||||||
|
Changed Cut/Copy/Paste to deal with prompts intelligently. Cut and Copy
|
||||||
|
remove all prompts. Paste can handle prompted or not-prompted text.
|
||||||
|
-----
|
||||||
|
Added CopyWithPrompts() method attached to Ctrl-Shift-C for those times
|
||||||
|
when you really do want all the prompts left intact.
|
||||||
|
-----
|
||||||
|
Improved handling of the shell's read-only zone.
|
||||||
|
-----
|
||||||
|
Changed CrustFrame.__init__ parameter spec to include all parameters
|
||||||
|
allowed by a wxFrame.
|
||||||
|
-----
|
||||||
|
Changed FillingText to be read-only.
|
||||||
|
-----
|
||||||
|
Renamed PyCrust.py to PyCrustApp.py to eliminate package/module name
|
||||||
|
conflicts that kept you from doing "from PyCrust import shell" inside
|
||||||
|
files located in the PyCrust directory.
|
||||||
|
-----
|
||||||
|
Renamed PyFilling.py to PyFillingApp.py and PyShell.py to PyShellApp.py
|
||||||
|
to maintain consistency.
|
||||||
|
-----
|
||||||
|
Removed the __date__ property from all modules.
|
||||||
|
-----
|
||||||
|
Fixed bug in introspect.getCallTip(), reported by Kevin Altis.
|
||||||
|
-----
|
||||||
|
|
||||||
|
|
||||||
|
=====
|
||||||
|
0.6.1 (9/19/2001 to 10/12/2001)
|
||||||
|
=====
|
||||||
|
Changed Shell.run() to always position to the end of existing text, as
|
||||||
|
suggested by Raul Cota.
|
||||||
|
-----
|
||||||
|
Changed introspect.getAllAttributeNames() to break circular references in
|
||||||
|
object.__class__, which occurs in Zope/ZODB extension classes.
|
||||||
|
-----
|
||||||
|
Changed filling.FillingTree.getChildren() to introspect extension classes.
|
||||||
|
-----
|
||||||
|
Fixed minor bugs in introspect.getCallTip() that were interfering with call
|
||||||
|
tips for Zope/ZODB extension class methods.
|
||||||
|
-----
|
||||||
|
In preparation for wxPython 2.3.2, added code to fix a font sizing problem.
|
||||||
|
Versions of wxPython prior to 2.3.2 had a sizing bug on Win platform where
|
||||||
|
the font was 2 points larger than what was specified.
|
||||||
|
-----
|
||||||
|
Added a hack to introspect.getAllAttributeNames() to "wake up" ZODB objects
|
||||||
|
that are asleep - in a "ghost" state. Otherwise it returns incomplete info.
|
||||||
|
-----
|
||||||
|
|
||||||
|
|
||||||
|
=====
|
||||||
|
0.6 (8/21/2001 to 9/12/2001)
|
||||||
|
=====
|
||||||
|
Added PyFilling.py and filling.py.
|
||||||
|
-----
|
||||||
|
PyShell.py and PyFilling.py can now be run standalone, as well as PyCrust.py.
|
||||||
|
-----
|
||||||
|
Added crust.py and moved some code from PyCrust.py to it.
|
||||||
|
-----
|
||||||
|
Added command history retrieval features submitted by Richie Hindle.
|
||||||
|
-----
|
||||||
|
Changed shell.write() to replace line endings with OS-specific endings.
|
||||||
|
Changed shell.py and interpreter.py to use os.linesep in strings having
|
||||||
|
hardcoded line endings.
|
||||||
|
-----
|
||||||
|
Added shell.redirectStdin(), shell.redirectStdout() and
|
||||||
|
shell.redirectStderr() to allow the surrounding app to toggle requests that
|
||||||
|
the specified sys.std* be redirected to the shell. These can also be run
|
||||||
|
from within the shell itself, of course.
|
||||||
|
-----
|
||||||
|
The shell now adds the current working directory "." to the search path:
|
||||||
|
sys.path.insert(0, os.curdir)
|
||||||
|
-----
|
||||||
|
Added support for distutils installations.
|
||||||
|
-----
|
||||||
|
|
||||||
|
|
||||||
|
=====
|
||||||
|
0.5.4 (8/17/2001 to 8/20/2001)
|
||||||
|
=====
|
||||||
|
Changed default font size under *nix to:
|
||||||
|
'size' : 12,
|
||||||
|
'lnsize' : 10,
|
||||||
|
-----
|
||||||
|
Changed Shell to expect a parameter referencing an Interpreter class, rather
|
||||||
|
than an intepreter instance, to facilitate subclassing of Interpreter, which
|
||||||
|
effectively broke when the Editor class was eliminated.
|
||||||
|
-----
|
||||||
|
Fixed PyCrustAlaCarte.py, which had been broken by previous changes.
|
||||||
|
Created InterpreterAlaCarte class as an example for use in the demo.
|
||||||
|
-----
|
||||||
|
Split PyCrust.py into PyCrust.py and PyShell.py in anticipation of PyFilling.
|
||||||
|
-----
|
||||||
|
|
||||||
|
|
||||||
|
=====
|
||||||
|
0.5.3 (8/16/2001)
|
||||||
|
=====
|
||||||
|
Added patch to PyCrust.py to fix wxPython bug:
|
||||||
|
wxID_SELECTALL = NewId() # This *should* be defined by wxPython.
|
||||||
|
-----
|
||||||
|
|
||||||
|
|
||||||
|
=====
|
||||||
|
0.5.2 (8/14/2001 to 8/15/2001)
|
||||||
|
=====
|
||||||
|
Shortened module names by dropping "PyCrust" as a prefix.
|
||||||
|
-----
|
||||||
|
Changed version to VERSION in version module.
|
||||||
|
-----
|
||||||
|
Added Options menu to PyCrust application.
|
||||||
|
-----
|
||||||
|
Eliminated the Editor class (and editor module) by merging with Shell.
|
||||||
|
This means that Shell "is a" wxStyledTextCtrl rather than "has a".
|
||||||
|
There just wasn't enough non-gui code to justify the separation. Plus,
|
||||||
|
Shell will be much easier for gui toolkits/designers to deal with now.
|
||||||
|
-----
|
||||||
|
|
||||||
|
|
||||||
|
=====
|
||||||
|
0.5.1 (8/10/2001 to 8/14/2001)
|
||||||
|
=====
|
||||||
|
Added introspect module.
|
||||||
|
Moved some functionality from PyCrustInterp to introspect.
|
||||||
|
-----
|
||||||
|
Changed introspect.getRoot() to no longer remove whitespace from the command.
|
||||||
|
This was a remnant of a previous approach that, when left as part of the
|
||||||
|
current approach, turned out to be a really bad thing.
|
||||||
|
-----
|
||||||
|
Changed introspect.getRoot() to allow commands of '', "", """""", [], (),
|
||||||
|
and {} to pass through. This allows you to type them, followed by a dot, and
|
||||||
|
get autocomplete options on them.
|
||||||
|
-----
|
||||||
|
Changed introspect.getRoot() to identify some situations where strings
|
||||||
|
shouldn't be considered roots. For example:
|
||||||
|
|
||||||
|
>>> import PyCrust # To illustrate the potential problem.
|
||||||
|
>>> len('PyCrust.py')
|
||||||
|
|
||||||
|
Typing the dot at the end of "PyCrust" in the second line above should NOT
|
||||||
|
result in an autocompletion list because "PyCrust" is part of a string in
|
||||||
|
this context, not a reference to the PyCrust module object. Similar reasoning
|
||||||
|
applies to call tips. For example:
|
||||||
|
|
||||||
|
>>> len('dir(')
|
||||||
|
|
||||||
|
Typing the left paren at the end of "dir" should NOT result in a call tip.
|
||||||
|
|
||||||
|
Both features now behave properly in the examples given. However, there is
|
||||||
|
still the case where whitespace precedes the potential root and that is NOT
|
||||||
|
handled properly. For example:
|
||||||
|
|
||||||
|
>>> len('this is a dir(')
|
||||||
|
|
||||||
|
and
|
||||||
|
|
||||||
|
>>> len('This is PyCrust.py')
|
||||||
|
|
||||||
|
More code needs to be written to handle more complex situations.
|
||||||
|
-----
|
||||||
|
Added locals=None parameter to Shell.__init__().
|
||||||
|
-----
|
||||||
|
Added support for magic attribute retrieval. Users can change this with:
|
||||||
|
>>> shell.editor.autoCompleteIncludeMagic = 0
|
||||||
|
-----
|
||||||
|
Added the ability to set filters on auto completion to exclude attributes
|
||||||
|
prefixed with a single or double underscore. Users can exclude one or the
|
||||||
|
other or both with:
|
||||||
|
>>> shell.editor.autoCompleteExcludeSingle = 1
|
||||||
|
>>> shell.editor.autoCompleteExcludeDouble = 1
|
||||||
|
-----
|
||||||
|
|
||||||
|
|
||||||
|
=====
|
||||||
|
0.5 (8/8/2001)
|
||||||
|
=====
|
||||||
|
Mostly just a final version change before creating a release.
|
||||||
|
|
||||||
|
|
||||||
|
=====
|
||||||
|
0.4 (8/4/2001 to 8/7/2001)
|
||||||
|
=====
|
||||||
|
Changed version/revision handling.
|
||||||
|
Fixed bugs.
|
||||||
|
|
||||||
|
|
||||||
|
=====
|
||||||
|
0.3 (8/2/2001 to 8/3/2001)
|
||||||
|
=====
|
||||||
|
Removed lots of cruft.
|
||||||
|
Added lots of docstrings.
|
||||||
|
Imported to CVS repository at SourceForge.
|
||||||
|
Added call tips.
|
||||||
|
|
||||||
|
|
||||||
|
=====
|
||||||
|
0.2 (7/30/2001 to 8/2/2001)
|
||||||
|
=====
|
||||||
|
Renamed several files.
|
||||||
|
Added command autocompletion.
|
||||||
|
Added menus to PyCrust.py: File, Edit and Help
|
||||||
|
Added sample applications: PyCrustAlaCarte.py, PyCrustAlaMode.py, and
|
||||||
|
PyCrustMinimus.py.
|
||||||
|
|
||||||
|
|
||||||
|
=====
|
||||||
|
0.1 (7/1/2001 to 7/19/2001)
|
||||||
|
=====
|
||||||
|
Added basic syntax coloring much like Boa.
|
||||||
|
Added read-only logging much like IDLE.
|
||||||
|
Can retrieve a previous command by putting the cursor back on that line and
|
||||||
|
hitting enter.
|
||||||
|
Stdin and raw_input operate properly so you can now do help() and license()
|
||||||
|
without hanging.
|
||||||
|
Redefined "quit", "exit", and "close" to display a better-than-nothing
|
||||||
|
response.
|
||||||
|
Home key honors the prompt.
|
||||||
|
Created SourceForge account, but nothing was posted.
|
||||||
|
|
||||||
|
|
||||||
|
==================================
|
||||||
|
In the beginning, there was pie... (7/1/2001)
|
||||||
|
==================================
|
||||||
|
Blame it all on IDLE, Boa and PythonWin. I was using all three, got frustrated
|
||||||
|
with their dissimilarities, and began to let everyone know how I felt. At the
|
||||||
|
same time, Scintilla looked like an interesting tool to build a shell around.
|
||||||
|
And while I didn't receive much in the way of positive feedback, let alone
|
||||||
|
encouragement, I just couldn't let go of the idea of a Scintilla-based Python
|
||||||
|
shell. Then the PythonCard project got to the point where they were talking
|
||||||
|
about including a shell in their development environment. That was all the
|
||||||
|
incentive I needed. PyCrust had to happen...
|
||||||
|
|
||||||
|
|
||||||
|
===============
|
||||||
|
CVS Information
|
||||||
|
===============
|
||||||
|
$Date$
|
||||||
|
$Revision$
|
||||||
|
$Id$
|
@@ -114,11 +114,15 @@ class FillingTree(wx.wxTreeCtrl):
|
|||||||
|
|
||||||
def OnSelChanged(self, event):
|
def OnSelChanged(self, event):
|
||||||
busy = wx.wxBusyCursor()
|
busy = wx.wxBusyCursor()
|
||||||
|
self.setText('')
|
||||||
item = event.GetItem()
|
item = event.GetItem()
|
||||||
if item == self.root:
|
if item == self.root:
|
||||||
self.setText('')
|
del busy
|
||||||
return
|
return
|
||||||
o = self.GetPyData(item)
|
o = self.GetPyData(item)
|
||||||
|
if o is None: # Windows bug fix.
|
||||||
|
del busy
|
||||||
|
return
|
||||||
otype = type(o)
|
otype = type(o)
|
||||||
text = ''
|
text = ''
|
||||||
text += self.getFullName(item)
|
text += self.getFullName(item)
|
||||||
@@ -130,25 +134,24 @@ class FillingTree(wx.wxTreeCtrl):
|
|||||||
if otype is types.StringType or otype is types.UnicodeType:
|
if otype is types.StringType or otype is types.UnicodeType:
|
||||||
value = repr(o)
|
value = repr(o)
|
||||||
text += '\n\nValue: ' + value
|
text += '\n\nValue: ' + value
|
||||||
|
try:
|
||||||
|
text += '\n\nDocstring:\n\n"""\n' + inspect.getdoc(o).strip() + '\n"""'
|
||||||
|
except:
|
||||||
|
pass
|
||||||
if otype is types.InstanceType:
|
if otype is types.InstanceType:
|
||||||
try:
|
try:
|
||||||
text += '\n\nClass Definition:\n\n' + \
|
text += '\n\nClass Definition:\n\n' + \
|
||||||
inspect.getsource(o.__class__)
|
inspect.getsource(o.__class__)
|
||||||
except:
|
except:
|
||||||
try:
|
pass
|
||||||
text += '\n\n"""' + inspect.getdoc(o).strip() + '"""'
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
text += '\n\nSource Code:\n\n' + \
|
text += '\n\nSource Code:\n\n' + \
|
||||||
inspect.getsource(o)
|
inspect.getsource(o)
|
||||||
except:
|
except:
|
||||||
try:
|
pass
|
||||||
text += '\n\n"""' + inspect.getdoc(o).strip() + '"""'
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
self.setText(text)
|
self.setText(text)
|
||||||
|
del busy
|
||||||
|
|
||||||
def getFullName(self, item, partial=''):
|
def getFullName(self, item, partial=''):
|
||||||
"""Return a syntactically proper name for item."""
|
"""Return a syntactically proper name for item."""
|
||||||
@@ -322,11 +325,8 @@ class FillingFrame(wx.wxFrame):
|
|||||||
intro = 'Welcome To PyFilling - The Tastiest Namespace Inspector'
|
intro = 'Welcome To PyFilling - The Tastiest Namespace Inspector'
|
||||||
self.CreateStatusBar()
|
self.CreateStatusBar()
|
||||||
self.SetStatusText(intro)
|
self.SetStatusText(intro)
|
||||||
if wx.wxPlatform == '__WXMSW__':
|
import images
|
||||||
import os
|
self.SetIcon(images.getPyCrustIcon())
|
||||||
filename = os.path.join(os.path.dirname(__file__), 'PyCrust.ico')
|
|
||||||
icon = wx.wxIcon(filename, wx.wxBITMAP_TYPE_ICO)
|
|
||||||
self.SetIcon(icon)
|
|
||||||
self.filling = Filling(parent=self, rootObject=rootObject,
|
self.filling = Filling(parent=self, rootObject=rootObject,
|
||||||
rootLabel=rootLabel,
|
rootLabel=rootLabel,
|
||||||
rootIsNamespace=rootIsNamespace)
|
rootIsNamespace=rootIsNamespace)
|
||||||
@@ -338,6 +338,7 @@ class App(wx.wxApp):
|
|||||||
"""PyFilling standalone application."""
|
"""PyFilling standalone application."""
|
||||||
|
|
||||||
def OnInit(self):
|
def OnInit(self):
|
||||||
|
wx.wxInitAllImageHandlers()
|
||||||
self.fillingFrame = FillingFrame()
|
self.fillingFrame = FillingFrame()
|
||||||
self.fillingFrame.Show(True)
|
self.fillingFrame.Show(True)
|
||||||
self.SetTopWindow(self.fillingFrame)
|
self.SetTopWindow(self.fillingFrame)
|
||||||
|
@@ -8,8 +8,6 @@ __author__ = "Patrick K. O'Brien <pobrien@orbtech.com>"
|
|||||||
__cvsid__ = "$Id$"
|
__cvsid__ = "$Id$"
|
||||||
__revision__ = "$Revision$"[11:-2]
|
__revision__ = "$Revision$"[11:-2]
|
||||||
|
|
||||||
from wxPython import wx
|
|
||||||
from wxPython import stc
|
|
||||||
import keyword
|
import keyword
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
@@ -20,6 +18,16 @@ from pseudo import PseudoFileErr
|
|||||||
from shellmenu import ShellMenu
|
from shellmenu import ShellMenu
|
||||||
from version import VERSION
|
from version import VERSION
|
||||||
|
|
||||||
|
try:
|
||||||
|
from deco.wxpy import wx
|
||||||
|
except ImportError:
|
||||||
|
from wxPython import wx
|
||||||
|
|
||||||
|
try:
|
||||||
|
from deco.wxpy import stc
|
||||||
|
except ImportError:
|
||||||
|
from wxPython import stc
|
||||||
|
|
||||||
True, False = 1, 0
|
True, False = 1, 0
|
||||||
|
|
||||||
sys.ps3 = '<-- ' # Input prompt.
|
sys.ps3 = '<-- ' # Input prompt.
|
||||||
@@ -64,9 +72,8 @@ class ShellFrame(wx.wxFrame, ShellMenu):
|
|||||||
intro += '\nSponsored by Orbtech - Your source for Python programming expertise.'
|
intro += '\nSponsored by Orbtech - Your source for Python programming expertise.'
|
||||||
self.CreateStatusBar()
|
self.CreateStatusBar()
|
||||||
self.SetStatusText(intro.replace('\n', ', '))
|
self.SetStatusText(intro.replace('\n', ', '))
|
||||||
filename = os.path.join(os.path.dirname(__file__), 'PyCrust.ico')
|
import images
|
||||||
icon = wx.wxIcon(filename, wx.wxBITMAP_TYPE_ICO)
|
self.SetIcon(images.getPyCrustIcon())
|
||||||
self.SetIcon(icon)
|
|
||||||
self.shell = Shell(parent=self, id=-1, introText=intro,
|
self.shell = Shell(parent=self, id=-1, introText=intro,
|
||||||
locals=locals, InterpClass=InterpClass,
|
locals=locals, InterpClass=InterpClass,
|
||||||
*args, **kwds)
|
*args, **kwds)
|
||||||
@@ -432,6 +439,8 @@ Platform: %s""" % (VERSION, self.revision, self.interp.revision,
|
|||||||
# Usually the dot (period) key activates auto completion.
|
# Usually the dot (period) key activates auto completion.
|
||||||
# Get the command between the prompt and the cursor.
|
# Get the command between the prompt and the cursor.
|
||||||
# Add the autocomplete character to the end of the command.
|
# Add the autocomplete character to the end of the command.
|
||||||
|
if self.AutoCompActive():
|
||||||
|
self.AutoCompCancel()
|
||||||
command = self.GetTextRange(stoppos, currpos) + chr(key)
|
command = self.GetTextRange(stoppos, currpos) + chr(key)
|
||||||
self.write(chr(key))
|
self.write(chr(key))
|
||||||
if self.autoComplete:
|
if self.autoComplete:
|
||||||
@@ -455,12 +464,12 @@ Platform: %s""" % (VERSION, self.revision, self.interp.revision,
|
|||||||
def OnKeyDown(self, event):
|
def OnKeyDown(self, event):
|
||||||
"""Key down event handler."""
|
"""Key down event handler."""
|
||||||
|
|
||||||
|
key = event.KeyCode()
|
||||||
# If the auto-complete window is up let it do its thing.
|
# If the auto-complete window is up let it do its thing.
|
||||||
if self.AutoCompActive():
|
if self.AutoCompActive():
|
||||||
event.Skip()
|
event.Skip()
|
||||||
return
|
return
|
||||||
# Prevent modification of previously submitted commands/responses.
|
# Prevent modification of previously submitted commands/responses.
|
||||||
key = event.KeyCode()
|
|
||||||
controlDown = event.ControlDown()
|
controlDown = event.ControlDown()
|
||||||
altDown = event.AltDown()
|
altDown = event.AltDown()
|
||||||
shiftDown = event.ShiftDown()
|
shiftDown = event.ShiftDown()
|
||||||
|
Reference in New Issue
Block a user