[wxPython] ANN: wxPython 2.3.2

wxPython 2.3.2 has been released as is available for download from
http://wxPython.org/download.org or the wxPython project pages at
SourceForge. wxPython is a popular GUI toolkit for the Python language that
is usable on Windows and Linux/Unix systems with the GTK+ toolkit, and a Mac
OS X version is in progress.

Some of the changes for the 2.3.2 release are:

Added EVT_HELP, EVT_HELP_RANGE, EVT_DETAILED_HELP, EVT_DETAILED_HELP_RANGE,
EVT_CONTEXT_MENU, wxHelpEvent, wxContextMenuEvent, wxContextHelp,
wxContextHelpButton, wxTipWindow, and a demo to show them in action.

Deprecated PyShell and PyShellWindow, added a snapshot of PyCrust (see
http://sourceforge.net/projects/pycrust/. )

Added the new virtual list capabilities to wxListCtrl.

Added a wxSTC style editor from Riaan Booysen to the sample apps.

Added XRCed to the wxPython Tools directory, contributed by Roman Rolinsky.

Added a new "constructor" to most of the window classes that calls the
default C++ contructor, (the one with no parameters) and also added the
coresponding Create(...) method. This allows you to do a 2-step creation of
windows which is sometimes required for doing things such as setting
extended style flags before the window is created, or for passing the object
to the XRC resource system to be created from the resource. The name of the
new "constructor" is the original name of the class with a "Pre" in it. For
example, wxPreWindow, wxPreFrame, etc.

Updated to version 1.40 of Scintilla and updated wxStyledTextCtrl
accordingly. While doing this update I dropped the wxLB_SORT style from the
wxListBox created for the AutoComplete functionality. This means that you
will have to sort the keyword lists yourself, but you are free to do case
sensitive or case insensitive sorts and set the wxSTC flag accordingly.

Updated wxColumnSorterMixin to also be able to place sort icons on the
column headers, and updated the wxListCtrl demo to show it off by using
wxColumnSorterMixin.
Added wxGenBitmapTextButton, TablePrint, etc. contribs from Lorne White.

Added wxNativeFontInfo and wxFontMapper.

Added pySketch to the samples.

Significantly changed how the Python interpreter lock and thread state are
managed, which should fix the problem of running on a multi-processor
machine.

Added wxPyLog so log targets can be created in Python to handle log messages
however is wished. See demo/Main.py for an example.

Added wxFindReplaceDialog.

The second phase of OOR is implemented (for wxEvtHandler and derived classes
at least.) This means that functions and methods that return an object
derived from wxEvtHandler that was originally created in Python, will return
the original Python object (if it still exists) instead of letting SWIG wrap
a new shadow object around the original C++ pointer.

Added some optimization methods to wxDC: GetBoundingBox, DrawLineList,
DrawPointList.

Added a set of sophisticated Error Dialogs from Chris Fama.

Added wxRightTextCtrl from Josu Oyanguren to wxPython.lib for aligning text
in a wxTextCtrl to the right side.

Added wxURLDataObject and and example showing drag and drop of URLs to and
from web browsers. It's still not 100% bullet-proof for all types of
browsers, but it works for the majority of cases with the popular browsers
on Windows. On wxGTK it seems that only Netscape 4.x works, if anybody has
any suggestions about this please bring it up on the wx-dev list.

Added wxStopWatch.

Added wxMimeTypesManager and wxFileType.

Passing None for the handler parameter to one of the EVT_** functions will
now Disconnect the event.

Added wxPopupWindow and wxPopupTransientWindow.

Added wxFileHistory.

Added wxDynamicSashWindow, which allows you to endlessly split widnows by
dragging a little tab next to the scrollbars. Added a demo to show this and
also the ability of multiple wxStyledStectCtrls to share the same document.

Added wxEditableListBox gizmo.

Updated wxEditor with lots of enhancements from Steve Howell and Adam Feuer.

Added the "SplitTree gizmos" which are a collection of classes that were
designed to operate together and provide a tree control with additional
columns for each item. The classes are wxRemotelyScrolledTreeCtrl,
wxTreeCompanionWindow, wxThinSplitterWindow, and wxSplitterScrolledWindow,
some of which may also be useful by themselves.

Added wxDllWidget from Vaclav Slavik which allows wx widgets derived from
wxWindow to be loaded from a C++ .dll (or .so) and be used in a wxPython
program, without the widget having to be SWIGged first. The visible API of
the widget is limited to wxWindow methods plus a SendCommand method, but it
is still quite powerful. See wxPython/contrib/dllwidget and
wxPython/demo/dllwidget for more details.

···

--
Robin Dunn
Software Craftsman
robin@AllDunn.com Java give you jitters?
http://wxPython.org Relax with wxPython!

Robin Dunn:

Added wxDynamicSashWindow, which allows you to endlessly split widnows by
dragging a little tab next to the scrollbars. Added a demo to show this

and

also the ability of multiple wxStyledStectCtrls to share the same

document.

   That is interesting. Where does the code go to enable the splitters in
the scroll bars? Did it require changes to the STC code to enable this?

   Neil

Check out the wxPython demo app. This new feature looks very cool.

···

---
Patrick K. O'Brien
Orbtech.com - Your Source For Python Development Services
Phone: 314-963-3206

-----Original Message-----
From: wxpython-users-admin@lists.wxwindows.org
[mailto:wxpython-users-admin@lists.wxwindows.org]On Behalf Of Neil
Hodgson
Sent: Tuesday, December 11, 2001 9:49 PM
To: wxpython-users@lists.wxwindows.org
Subject: Re: [wxPython] ANN: wxPython 2.3.2

Robin Dunn:

> Added wxDynamicSashWindow, which allows you to endlessly split
widnows by
> dragging a little tab next to the scrollbars. Added a demo to show this
and
> also the ability of multiple wxStyledStectCtrls to share the same
document.

   That is interesting. Where does the code go to enable the splitters in
the scroll bars? Did it require changes to the STC code to enable this?

   Neil

_______________________________________________
wxpython-users mailing list
wxpython-users@lists.wxwindows.org
http://lists.wxwindows.org/mailman/listinfo/wxpython-users

Robin Dunn:

> Added wxDynamicSashWindow, which allows you to endlessly split widnows

by

> dragging a little tab next to the scrollbars. Added a demo to show this
and
> also the ability of multiple wxStyledStectCtrls to share the same
document.

   That is interesting. Where does the code go to enable the splitters in
the scroll bars? Did it require changes to the STC code to enable this?

I had to add the ability for wxSTC to use external scrollbars, instead of
the ones built-in to it's window, but that is just in the ScintillaWX layer
and had no effect on Scintilla itself. The wxDynamicSashWindow manages the
scrollbars itself, and draws the drag-tab next to them. The wxSTC is
created as a child of the wxDSW, and captures scroll events from it's
scrollbars and update it's scrollbars when needed: Here's the code:

class TestView(wxStyledTextCtrl):
    def __init__(self, parent, ID, log):
        wxStyledTextCtrl.__init__(self, parent, ID, style=wxNO_BORDER)
        self.dyn_sash = parent
        self.log = log
        self.SetupScrollBars()
        self.SetMarginWidth(1,0)
        self.StyleSetFont(wxSTC_STYLE_DEFAULT,
                          wxFont(10, wxMODERN, wxNORMAL, wxNORMAL))
        EVT_DYNAMIC_SASH_SPLIT(self, -1, self.OnSplit)
        EVT_DYNAMIC_SASH_UNIFY(self, -1, self.OnUnify)

    def SetupScrollBars(self):
        # hook the scrollbars provided by the wxDynamicSashWindow
        # to this view
        v_bar = self.dyn_sash.GetVScrollBar(self)
        h_bar = self.dyn_sash.GetHScrollBar(self)
        EVT_SCROLL(v_bar, self.OnSBScroll)
        EVT_SCROLL(h_bar, self.OnSBScroll)
        EVT_SET_FOCUS(v_bar, self.OnSBFocus)
        EVT_SET_FOCUS(h_bar, self.OnSBFocus)

        # And set the wxStyledText to use these scrollbars instead
        # of its built-in ones.
        self.SetVScrollBar(v_bar)
        self.SetHScrollBar(h_bar)

    def OnSplit(self, evt):
        self.log.write("TestView.OnSplit\n");
        newview = TestView(self.dyn_sash, -1, self.log)
        newview.SetDocPointer(self.GetDocPointer()) # use the same document
        self.SetupScrollBars()

    def OnUnify(self, evt):
        self.log.write("TestView.OnUnify\n");
        self.SetupScrollBars()

    def OnSBScroll(self, evt):
        # redirect the scroll events from the dyn_sash's scrollbars to the
STC
        self.GetEventHandler().ProcessEvent(evt)

    def OnSBFocus(self, evt):
        # when the scrollbar gets the focus move it back to the STC
        self.SetFocus()

···

--
Robin Dunn
Software Craftsman
robin@AllDunn.com Java give you jitters?
http://wxPython.org Relax with wxPython!