]> git.saurik.com Git - wxWidgets.git/blame_incremental - wxPython/docs/wxPackage.txt
fixed compile error
[wxWidgets.git] / wxPython / docs / wxPackage.txt
... / ...
CommitLineData
1=========================
2 The wxPython wx Package
3=========================
4
5--------------------------------------------------
6 Or, how to survive the new wx namespace changes.
7--------------------------------------------------
8
9:Author: Patrick K. O'Brien
10:Author: Robin Dunn
11:Contact: pobrien@orbtech.com
12:Organization: Orbtech_
13:Date: $Date$
14:Revision: $Revision$
15
16.. _Orbtech: http://www.orbtech.com/
17
18.. contents::
19
20
21Introduction
22============
23
24In the begining there was Python, and Python had modules, and Python
25was good. But after a time Guido looked on Python and saw that Python
26needed organizational assistance, and so Guido took code from Python's
27side and created Packages and then Python was very good. About this
28time wxPython was reborn, and wxPython used Packages, but being young
29and trying to use a new technology wxPython did not know how to use
30Packages effectivly. wxPython was good, but dreamed of being much
31better...
32
33Now many years later, after tons of code reorganization and build
34hacking wxPython has reached that goal. In version 2.4.1 a prototype
35of this new structure was introduced that dynamically built at import
36time a new toplevel package named simply "wx" that contained all the
37items from wxPython.wx but with the names edited to remove the wx
38prefix. Now in 2.5 the final phase of that switcheroo has been
39completed and the *real* classes, functions and constants are now
40located in the wx package, leaving some compatibility modules in
41wxPython.wx. This document should answer all the questions you might
42have concerning the new wx package. Please also take a look at the
43`2.5 Migration Guide`_ to see notes about other big differences in
44this release.
45
46.. _2.5 Migration Guide: MigrationGuide.html
47
48Why change anything?
49====================
50
51This change is being made for a couple of reasons. The first reason
52is to discourage the use of ``import *``, which is a dangerous
53technique that can create name conflicts and bloated namespaces.
54
55The second reason is to remove what some perceive to be a "wart." For
56example, the following code is rather ugly in that the "wx" prefix on
57the wxFrame class name is no longer useful when you're using the wx
58module prefix::
59
60 from wxPython import wx
61
62 class Frame(wx.wxFrame)
63
64The new wx package allows you to write code like this, instead::
65
66 import wx
67
68 class Frame(wx.Frame)
69
70The third reason is that the wxWindows project has considered doing
71the same thing (implement a new wx namespace and drop the "wx" prefix)
72and we want wxPython to lead the way.
73
74
75What does the new wx package do?
76================================
77
78As mentioned in the Introduction, wxPython 2.4.1 introduced a way of
79getting to this new syntax as quickly as possible. It would import
80the old names (like "wxFrame") from the old package and then create new
81names in the wx package without the wx prefix, (like "Frame".)
82Starting with wxPython 2.5 the renaming is moved up to the wxPython
83build step, so the real classes and etc. are actually named with the
84new name (like "Frame") and are located in the new wx package.
85
86For compatibility the old wxPython package still exists, but now it is
87populated with modules that simply import the new names and then
88"reverse-renames" them to the old names. It probably sounds a bit
89complicated, but it is mostly automated and so it doesn't cause
90problems in most cases.
91
92
93Will any of this effect my existing code?
94=========================================
95
96No. Your existing code will continue to work and be supported for
97some time. It will be up to you to decide when to switch to the new
98syntax. But all new documentation and code examples will use the new
99syntax. So don't wait too long. You wouldn't want anyone calling you
100old-fashioned, would you?
101
102When you import from wxPython.wx and use a class with the old name,
103such as wxButton, you are actually using the wx.Button class. I
104expect that the vast majority of the existing code should work fine
105using this scheme. The only things that may cause problems is if your
106old code is depending on some of the implemtation details, or if you
107are using other things that have changed in the API. See the
108`Migration Guide`_ for more details.
109
110.. _Migration Guide: MigrationGuide.html
111
112
113What about all the other modules, like grid, html, and stc?
114===========================================================
115
116There's more to the old wxPython than just the wxPython.wx module.
117And we've got those extra modules covered as well. Each of those
118modules (as well as the lib subpackage) has been moved to the new wx
119package and reverse-renamers have been placed in the wxPython package
120as needed.
121
122
123How do I use this new wx package?
124=================================
125
126The wx package is automatically created when you install wxPython
127version 2.4.1 or higher. So all you have to do is::
128
129 import wx
130
131
132What are the issues with converting old code to use the new wx package?
133=======================================================================
134
135Obviously, you need to change your import statements from::
136
137 from wxPython import wx
138
139or::
140
141 from wxPython.wx import *
142
143to::
144
145 import wx
146
147Then you need to refer to wx attributes without a "wx" prefix, such
148as::
149
150 class MyFrame(wx.Frame):
151
152In most cases, existing code can be modified with a simple search and
153replace.
154
155
156
157Where can I find example programs using the new wx syntax?
158==========================================================
159
160The wxPython demo application and most of the sample apps have been
161converted to use the new ``import wx`` style of programming with
162wxPython, so there are lots of examples to look at and to play with.
163Here is one of them, it is the ``simple`` sample.
164
165
166.. include:: ../samples/simple/simple.py
167 :literal:
168