]> git.saurik.com Git - wxWidgets.git/blame - wxPython/wx/py/CHANGES.txt
Add code to remove the selection (if any) in wxTextCtrl::WriteText for multi-line...
[wxWidgets.git] / wxPython / wx / py / CHANGES.txt
CommitLineData
02b800ce
RD
10.9.5 (12/23/2005)
2-------------------
3
4Applied a series of enhancments by Franz Steinaeusler, Adi Sieker, and
5Sebastian Haase, up until their 7-31-2005 version. (Their next
6version broke some existing functionality, and added some confusing
7hacks, and I didn't feel that the incremental gains were worth the
8loss at that point so I stopped at 7-31-2005.)
9
10Their changes include the following:
11
12* The Autocomplete and Calltip windows can now be opened manually with
13 Ctrl-Space and Ctrl-Shift-Space.
14
15* In the stand alone PyCrust app the various option settings, window
16 size and position, and etc. are saved and restored at the next run.
17
18* Added a help dialog bound to the F1 key that shows the key bindings.
19
20* Added a new text completion function that suggests words from the
21 history. Bound to Shift-Return.
22
23* F11 will toggle the maximized state of the frame.
24
25* switched to Bind() from wx.EVT_*().
26
27* Display of line numbers can be toggled.
28
29* F12 toggles a "free edit" mode of the shell buffer. This mode is
30 useful, for example, if you would like to remove some output or
31 errors or etc. from the buffer before doing a copy/paste. The free
32 edit mode is designated by the use of a red, non-flashing caret.
33
486afba9 34* Ctrl-Shift-F will fold/unfold (hide/show) the selected lines.
02b800ce
RD
35
36
37
38On top of these changes I (Robin Dunn) added the following:
39
40* General code cleanup and fixes.
41
42* Use wx.StandardPaths to determine the location of the config files.
43
44* Remove Orbtech attributions from the UI, they've been there long
45 enough.
46
47* Use wx.SP_LIVE_UPDATE on crust and filling windows.
48
49* Extended the saving of the config info and other new features to the
50 PyShell app too. Additionally, other apps that embed a PyCrust or a
51 PyShell can pass their own wx.Config object and have the Py code
52 save/restore its settings to/from there.
53
54* All of the classes with config info get an opportunity to save/load
55 their own settings instead of putting all the save/load code in one
56 place that then has to reach all over the place to do anything.
57
58* Enable editing of the startup python code, which will either be the
59 file pointed to by PYTHONSTARTUP or a file in the config dir if
60 PYTHONSTARTUP is not set in the environment.
61
62* Added an option to skip the running of the startup code when
63 PyShell or PyCrust starts.
64
65* PyCrust adds a pp(item) function to the shell's namespace that
66 pretty prints the item in the Display tab of the notebook. Added
67 code to raise that tab when pp() is called.
68
69* Added an option for whether to insert text for function parameters
70 when popping up the call tip.
71
72* Added Find and Find-Next functions that use the wx.FindReplaceDialog.
73
74
75
76
77
78
e757654c
PB
790.9.4 (1/25/2004 to //2004)
80------------------------------
1fded56b 81
e757654c
PB
82Removed wxd decorators in favor of new SWIG-generated docstrings.
83
84Removed docs tabs from crust interface:
85* wxPython Docs
86* wxSTC Docs
87
07b87e8d
PB
88Fixed Calltip tab refresh problem on Windows.
89
f65958cc 90shell.autoCompleteAutoHide added with default of False.
d351525a 91
a47c63ba
PB
92Changed default namespace of Shell to __main__.__dict__, instead of an
93empty dictionary.
94
e757654c
PB
95
960.9.3 (9/25/2003 to 1/24/2004)
97------------------------------
98
99Fun and games with dynamic renaming. Details of any other changes
100were lost in the confusion. I'll try to do better in the future.
101
102
1030.9.2 (5/3/2003 to 9/25/2003)
1fded56b
RD
104-----------------------------
105
106Changed to the new prefix-less "wx" package::
107
108 import wx
109
110instead of::
111
112 from wxPython import wx
113
114Fixed typo in ``PyWrap.py``::
115
116 if __name__ == '__main__':
117 main(sys.argv)
118
119should have been::
120
121 if __name__ == '__main__':
122 main()
123
124Added pretty-print Display tab to Crust, based on suggestion from
125Jason Whitlark.
126
127Improved ``Can*`` checks in ``EditWindow``, since STC is too lenient,
128particularly when it is set to read-only but returns True for
129CanPaste() (seems like an STC bug to me)::
130
131 def CanCopy(self):
132 """Return True if text is selected and can be copied."""
133 return self.GetSelectionStart() != self.GetSelectionEnd()
134
135 def CanCut(self):
136 """Return True if text is selected and can be cut."""
137 return self.CanCopy() and self.CanEdit()
138
139 def CanEdit(self):
140 """Return True if editing should succeed."""
141 return not self.GetReadOnly()
142
143 def CanPaste(self):
144 """Return True if pasting should succeed."""
145 return stc.StyledTextCtrl.CanPaste(self) and self.CanEdit()
146
147
1480.9.1 (3/21/2003 to 5/2/2003)
149-----------------------------
150
151PyCrust is dead! Long live Py!
152
153* Renamed ``PyCrust`` package to ``py``.
154* Moved code to wxPython's CVS repository.
155
156Fixed bug in ``introspect.py`` on introspecting objects occurring
157immediately after a secondary prompt, like this::
158
159 >>> l = [1, 2, 3]
160 >>> for n in range(3):
161 ... l. <-- failed to popup autocomplete list
162
163Added documentation files:
164
165* PyManual.txt
166* wxPythonManual.txt
167* wxPythonPackage.txt
168* wxPythonExamples.txt
169
170Added PyAlaMode and PyAlaCarte code editors.
171
172Major refactoring to support ``editor`` and ``shell`` from the same
173base.
174
175Renamed program files:
176
177* ``PyCrustApp.py`` to ``PyCrust.py``
178* ``PyFillingApp.py`` to ``PyFilling.py``
179* ``PyShellApp.py`` to ``PyShell.py``
180* ``wrap.py`` to ``PyWrap.py``
181
182Removed disabling of autocomplete for lists of 2000 items or more.
183The current implementation of wxSTC can now handle lists this big.
184
185Improved handling of ``sys.path`` to mimic the standard Python shell.
186
187
1880.9 (2/27/2003 to 3/20/2003)
189----------------------------
190
191Added fontIncrease, fontDecrease, fontDefault signals, receivers and
192keybindings::
193
194 Ctrl+] Increase font size.
195 Ctrl+[ Decrease font size.
196 Ctrl+= Default font size.
197
198Continued enhancement of the decorator capability to provide better
199documentation and docstrings for wxPython classes and functions.
200
201Introduced new tabbed interface:
202
203* Namespace
204* Calltip
205* Session
206* Dispatcher
207* wxPython Docs
208* wxSTC Docs
209
210``Filling.tree`` now expands tuples as well as lists. (It should have
211done this all along, I just never noticed this omission before.)
212
213Added this True/False test to all modules::
214
215 try:
216 True
217 except NameError:
218 True = 1==1
219 False = 1==0
220
221Added ``wxd`` directory with decoration classes.
222
223
2240.8.2 (1/5/2003 to 2/26/2003)
225-----------------------------
226
227Wrapped ``sys.ps1``, ``sys.ps2``, and ``sys.ps3`` in ``str()``.
228(Thanks, Kieran Holland.)
229
230Fixed minor things found by PyChecker.
231
232Changed locals to use ``__main__.__dict__`` and added code to clean up
233the namespace, making it as close to the regular Python environment as
234possible. This solves the problem of pickling and unpickling
235instances of classes defined in the shell.
236
237Made ``shell.PasteAndRun()`` a little more forgiving when it finds a
238ps2 prompt line with no trailing space, such when you copy code from a
239web page.
240
241Improved autocomplete behavior by adding these to shell::
242
243 self.AutoCompSetAutoHide(False)
244 self.AutoCompStops(' .,;:([)]}\'"\\<>%^&+-=*/|`')
245
246Added ``decor`` directory, ``decorator.py``, ``stcDecor.py``, and
247``stcConstants.py``. These all serve the purpose of adding docstrings
248to existing wxPython classes, in particular the ``wxStyledTextCtrl``.
249
250Added ``wrap.py``, a command line utility for running a wxPython app
251with additional runtime-tools loaded, such as PyCrust (the only tool
252at this point).
253
254Flushed the clipboard Cut/Copy operations so that selections will
255exist in the clipboard even after PyCrust has been closed.
256
257Improved the suppression of docstrings for simple data types appearing
258in the namespace viewer.
259
260Better handling of autocompletion with numeric types; no
261autocompletion when typing a dot after an integer. If the
262autocompletion is desired, type a space before the dot::
263
264 func = 3 .
265
266More Filling!!! The namespace tree is now dynamically updated.
267
268
2690.8.1 (12/20/2002 to 12/25/2002)
270--------------------------------
271
272Improved keyboard handling with Autocomplete active. You can now use
273Enter as well as Tab to select an item from the list.
274
275Disabled autocomplete for lists of 2000 items or more. The current
276implementation of wxSTC can't handle lists this big.
277
278Changed ``filling`` to always display docstrings for objects. This is
279useful for objects whose docstrings have been decorated, rather than
280coming directly from the source code. (Hmmm. Sounds like someone is
281doing some decorating. I wonder where that would be helpful? <wink>)
282
283Fixed handling of icon. Added ``images.py`` file.
284
285
2860.8 (10/29/2002 to 12/16/2002)
287------------------------------
288
289Added "help" to startup banner info.
290
291Made all ``wx`` and ``stc`` imports explicit. No more ``import *``.
292
293Replaced use of the ``wx`` module's ``true`` and ``false`` with
294Python's ``True`` and ``False``.
295
296Changed ``introspect.getRoot()`` to use ``tokenize`` module. This
297does a slightly better job than the previous parsing routine and the
298code is clearer.
299
300Improved handling of whitespace and empty types during introspection.
301
302Fixed cut/copy clipboard problem under Linux. (Robin Dunn rocks!!!)
303
304Added shell.about() which works like this::
305
306 >>> shell.about()
307 PyCrust Version: 0.8
308 Shell Revision: 1.80
309 Interpreter Revision: 1.15
310 Python Version: 2.2.2
311 wxPython Version: 2.3.3.1
312 Platform: linux2
313
314Added copy plus and paste plus to shell menu.
315
316Moved shell menu from ``shell.py`` to ``shellmenu.py``.
317
318Added ``sys.stdin.readlines()`` support.
319
320Added ``time.sleep()`` in ``readline()`` and ``OnIdle()`` event
321handler to free up the CPU.
322
323
3240.7.2 (2/22/2002 to 8/27/2002)
325------------------------------
326
327Tweaked ``getAttributeNames()`` to pick up a few more attributes::
328
329 '__bases__', '__class__', '__dict__', '__name__', 'func_closure',
330 'func_code', 'func_defaults', 'func_dict', 'func_doc',
331 'func_globals', 'func_name'
332
333Added a tests directory and unit tests.
334
335Improved support for empty types in the shell: ``[]``, ``()`` and
336``{}`` as far as when call tips and autocompletion are available.
337
338Added support for the other triple string - ``''''''``.
339
340Refactored ``introspect.py`` to improve testability.
341
342Improved call tips for unbound methods by leaving the "self"
343parameter, since unbound methods require an instance be passed.
344
345Fixed call tip bug where a tip was displayed when a "(" was typed
346after an object that wasn't callable.
347
348Fixed ``getAllAttributeNames`` when ``str(object)`` fails.
349
350Added brace highlighting. (Thank you, Kevin Altis.)
351
352Fixed problem displaying unicode objects in ``PyFilling``.
353
354Changed how ``filling.py`` checks for expandable objects. Lists are
355now expandable objects.
356
357Made the key handling more robust when there is an active text
358selection that includes text prior to the last primary prompt. Thanks
359to Raul Cota for pointing this out.
360
361Fixed wxSTC problem with brace highlighting and non-us keyboards.
362(Thank you for the patch, Jean-Michel Fauth.)
363
364Added ``busy = wxBusyCursor()`` to key points in ``shell`` and
365``filling``.
366
367Added ``OnCloseWindow`` handler to ``ShellFrame`` and ``CrustFrame``.
368
369Default to ``SetWrapMode(1)`` for shell and namespace viewer.
370
371Added ``shell.wrap()`` and ``shell.zoom()``.
372
373Added autoCompleteKeys hooks for Raul Cota.
374
375Cleaned up various little key handling bugs.
376
377Changed input methods to get values from shell, rather than dialog
378boxes. Renamed ``readIn`` to ``readline`` and ``readRaw`` to
379``raw_input``.
380
381
3820.7.1 (12/12/2001 to 2/21/2002)
383-------------------------------
384
385Fixed ``OnChar()`` issues effecting European keyboards, as reported by
386Jean-Michel Fauth.
387
388Fixed ``introspect.py`` issue with xmlrpc objects reported by Kevin
389Altis.
390
391Fixed some introspect/PyFilling issues with regard to Python 2.2.
392
393Fixed font background color as reported by Keith J. Farmer. (Thanks)
394
395Fixed problem with call tips and autocompletion inside multiline
396commands as report by Kevin Altis.
397
398Improved ``OnKeyDown`` handling of cut/copy/paste operations based on
399feedback from Syver Enstad. (Thanks)
400
401Added a ``shell.help()`` method to display some help info.
402
403Changed sort of items in the namespace viewer to case insensitive.
404
405Changed ``attributes.sort(lambda x, y: cmp(x.upper(), y.upper()))`` in
406advance of an upcoming fix to an autocompletion matching bug in wxSTC.
407
408Improved support for ZODB by allowing namespace drilldown into BTrees.
409
410Added ``shell.PasteAndRun()`` to support pasting multiple commands into
411the shell from the clipboard. Ctrl+Shift+V or v.
412
413Enter now always processes a command (or copies down a previous one.)
414To insert a line break, press Ctrl+Enter.
415
416Escape key clears the current, unexecuted command.
417
418History retrieval changed to replace current command. Added new keys
419to insert from history - Shift+Up and Shift+Down.
420
421Better call tips on objects with ``__call__`` methods.
422
423Improved call tip positioning calculation.
424
425
4260.7 (10/15/2001 to 12/11/2001)
427------------------------------
428
429Changed how command history retrieval functions work. Added Alt-P,
430Alt-N as keybindings for Retrieve-Previous, Retrieve-Next.
431
432Added full support for multi-line commands, similar to IDLE.
433
434Changed ``introspect.getAttributeNames()`` to do a case insensitive
435sort.
436
437Changed Cut/Copy/Paste to deal with prompts intelligently. Cut and
438Copy remove all prompts. Paste can handle prompted or not-prompted
439text.
440
441Added ``CopyWithPrompts()`` method attached to Ctrl-Shift-C for those
442times when you really do want all the prompts left intact.
443
444Improved handling of the shell's read-only zone.
445
446Changed ``CrustFrame.__init__`` parameter spec to include all
447parameters allowed by a ``wxFrame``.
448
449Changed ``FillingText`` to be read-only.
450
451Renamed ``PyCrust.py`` to ``PyCrustApp.py`` to eliminate
452package/module name conflicts that kept you from doing ``from PyCrust
453import shell`` inside files located in the ``PyCrust`` directory.
454
455Renamed ``PyFilling.py`` to ``PyFillingApp.py`` and ``PyShell.py`` to
456``PyShellApp.py`` to maintain consistency.
457
458Removed the ``__date__`` property from all modules.
459
460Fixed bug in ``introspect.getCallTip()``, reported by Kevin Altis.
461
462
4630.6.1 (9/19/2001 to 10/12/2001)
464-------------------------------
465
466Changed ``Shell.run()`` to always position to the end of existing
467text, as suggested by Raul Cota.
468
469Changed ``introspect.getAllAttributeNames()`` to break circular
470references in ``object.__class__``, which occurs in Zope/ZODB
471extension classes.
472
473Changed ``filling.FillingTree.getChildren()`` to introspect extension
474classes.
475
476Fixed minor bugs in ``introspect.getCallTip()`` that were interfering
477with call tips for Zope/ZODB extension class methods.
478
479In preparation for wxPython 2.3.2, added code to fix a font sizing
480problem. Versions of wxPython prior to 2.3.2 had a sizing bug on Win
481platform where the font was 2 points larger than what was specified.
482
483Added a hack to ``introspect.getAllAttributeNames()`` to "wake up"
484ZODB objects that are asleep - in a "ghost" state. Otherwise it
485returns incomplete info.
486
487
4880.6 (8/21/2001 to 9/12/2001)
489----------------------------
490
491Added ``PyFilling.py`` and ``filling.py``.
492
493``PyShell.py`` and ``PyFilling.py`` can now be run standalone, as well
494as ``PyCrust.py``.
495
496Added ``crust.py`` and moved some code from ``PyCrust.py`` to it.
497
498Added command history retrieval features submitted by Richie Hindle.
499
500Changed ``shell.write()`` to replace line endings with OS-specific
501endings. Changed ``shell.py`` and ``interpreter.py`` to use
502``os.linesep`` in strings having hardcoded line endings.
503
504Added ``shell.redirectStdin()``, ``shell.redirectStdout()`` and
505``shell.redirectStderr()`` to allow the surrounding app to toggle
506requests that the specified ``sys.std*`` be redirected to the shell.
507These can also be run from within the shell itself, of course.
508
509The shell now adds the current working directory "." to the search
510path::
511
512 sys.path.insert(0, os.curdir)
513
514Added support for distutils installations.
515
516
5170.5.4 (8/17/2001 to 8/20/2001)
518------------------------------
519
520Changed default font size under Linux to::
521
522 'size' : 12,
523 'lnsize' : 10,
524
525Changed ``Shell`` to expect a parameter referencing an Interpreter
526class, rather than an intepreter instance, to facilitate subclassing
527of Interpreter, which effectively broke when the Editor class was
528eliminated.
529
530Fixed ``PyCrustAlaCarte.py``, which had been broken by previous
531changes.
532
533Created ``InterpreterAlaCarte`` class as an example for use in the
534demo.
535
536Split ``PyCrust.py`` into ``PyCrust.py`` and ``PyShell.py`` in
537anticipation of ``PyFilling.py``.
538
539
5400.5.3 (8/16/2001)
541-----------------
542
543Added patch to ``PyCrust.py`` to fix wxPython bug::
544
545 wxID_SELECTALL = NewId() # This *should* be defined by wxPython.
546
547
5480.5.2 (8/14/2001 to 8/15/2001)
549------------------------------
550
551Shortened module names by dropping "PyCrust" as a prefix.
552
553Changed ``version`` to ``VERSION`` in ``version`` module.
554
555Added Options menu to PyCrust application.
556
557Eliminated the Editor class (and editor module) by merging with Shell.
558This means that Shell "is a" wxStyledTextCtrl rather than "has a".
559There just wasn't enough non-gui code to justify the separation.
560Plus, Shell will be much easier for gui toolkits/designers to deal
561with now.
562
563
5640.5.1 (8/10/2001 to 8/14/2001)
565------------------------------
566
567Added ``introspect`` module.
568
569Moved some functionality from ``PyCrustInterp`` to ``introspect``.
570
571Changed ``introspect.getRoot()`` to no longer remove whitespace from
572the command. This was a remnant of a previous approach that, when
573left as part of the current approach, turned out to be a really bad
574thing.
575
576Changed ``introspect.getRoot()`` to allow commands of ``''``, ``""``,
577``""""""``, ``[]``, ``()``, and ``{}`` to pass through. This allows
578you to type them, followed by a dot, and get autocomplete options on
579them.
580
581Changed ``introspect.getRoot()`` to identify some situations where
582strings shouldn't be considered roots. For example::
583
584 >>> import PyCrust # To illustrate the potential problem.
585 >>> len('PyCrust.py')
586
587Typing the dot at the end of "PyCrust" in the second line above should
588NOT result in an autocompletion list because "PyCrust" is part of a
589string in this context, not a reference to the PyCrust module object.
590Similar reasoning applies to call tips. For example::
591
592 >>> len('dir(')
593
594Typing the left paren at the end of "dir" should NOT result in a call
595tip.
596
597Both features now behave properly in the examples given. However,
598there is still the case where whitespace precedes the potential root
599and that is NOT handled properly. For example::
600
601 >>> len('this is a dir(')
602
603and::
604
605 >>> len('This is PyCrust.py')
606
607More code needs to be written to handle more complex situations.
608
609Added ``locals=None`` parameter to ``Shell.__init__()``.
610
611Added support for magic attribute retrieval. Users can change this
612with::
613
614 >>> shell.editor.autoCompleteIncludeMagic = 0
615
616Added the ability to set filters on auto completion to exclude
617attributes prefixed with a single or double underscore. Users can
618exclude one or the other or both with::
619
620 >>> shell.editor.autoCompleteExcludeSingle = 1
621 >>> shell.editor.autoCompleteExcludeDouble = 1
622
623
6240.5 (8/8/2001)
625--------------
626
627Mostly just a final version change before creating a release.
628
629
6300.4 (8/4/2001 to 8/7/2001)
631--------------------------
632
633Changed version/revision handling.
634
635Fixed bugs.
636
637
6380.3 (8/2/2001 to 8/3/2001)
639--------------------------
640
641Removed lots of cruft.
642
643Added lots of docstrings.
644
645Imported to CVS repository at SourceForge.
646
647Added call tips.
648
649
6500.2 (7/30/2001 to 8/2/2001)
651---------------------------
652
653Renamed several files.
654
655Added command autocompletion.
656
657Added menus to PyCrust.py: File, Edit and Help.
658
659Added sample applications: ``PyCrustAlaCarte.py``,
660``PyCrustAlaMode.py``, and ``PyCrustMinimus.py``.
661
662
6630.1 (7/1/2001 to 7/19/2001)
664---------------------------
665
666Added basic syntax coloring much like Boa.
667
668Added read-only logging much like IDLE.
669
670Can retrieve a previous command by putting the cursor back on that
671line and hitting enter.
672
673Stdin and raw_input operate properly so you can now do ``help()`` and
674``license()`` without hanging.
675
676Redefined "quit", "exit", and "close" to display a better-than-nothing
677response.
678
679Home key honors the prompt.
680
681Created SourceForge account, but nothing was posted.
682
683
684In the beginning, there was pie... (7/1/2001)
685---------------------------------------------
686
687Blame it all on IDLE, Boa and PythonWin. I was using all three, got
688frustrated with their dissimilarities, and began to let everyone know
689how I felt. At the same time, Scintilla looked like an interesting
690tool to build a shell around. And while I didn't receive much in the
691way of positive feedback, let alone encouragement, I just couldn't let
692go of the idea of a Scintilla-based Python shell. Then the PythonCard
693project got to the point where they were talking about including a
694shell in their development environment. That was all the incentive I
695needed. PyCrust had to happen...