Initial review of various [q-r] by Utensil Candel.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53444 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Bryan Petty 2008-05-04 09:04:38 +00:00
parent 7bf6f523e7
commit 3ed3a1c846
11 changed files with 470 additions and 319 deletions

View File

@ -189,7 +189,7 @@ in the distribution.
@subsection page_port_wxmsw_themedborders Themed borders on Windows
Starting with wxWidgets 2.8.5, you can specify the wxBORDER_THEME style to have wxWidgets
Starting with wxWidgets 2.8.5, you can specify the @c wxBORDER_THEME style to have wxWidgets
use a themed border. Using the default XP theme, this is a thin 1-pixel blue border,
with an extra 1-pixel border in the window client background colour (usually white) to
separate the client area's scrollbars from the border.
@ -198,11 +198,11 @@ If you don't specify a border style for a wxTextCtrl in rich edit mode, wxWidget
the control themed borders automatically, where previously they would take the Windows 95-style
sunken border. Other native controls such as wxTextCtrl in non-rich edit mode, and wxComboBox,
already paint themed borders where appropriate. To use themed borders on other windows, such
as wxPanel, pass the wxBORDER_THEME style, or (apart from wxPanel) pass no border style.
as wxPanel, pass the @c wxBORDER_THEME style, or (apart from wxPanel) pass no border style.
In general, specifying wxBORDER_THEME will cause a border of some kind to be used, chosen by the platform
and control class. To leave the border decision entirely to wxWidgets, pass wxBORDER_DEFAULT.
This is not to be confused with specifying wxBORDER_NONE, which says that there should
In general, specifying @c wxBORDER_THEME will cause a border of some kind to be used, chosen by the platform
and control class. To leave the border decision entirely to wxWidgets, pass @c wxBORDER_DEFAULT.
This is not to be confused with specifying @c wxBORDER_NONE, which says that there should
definitely be @e no border.
@subsubsection page_port_wxmsw_themedborders_details More detail on border implementation
@ -241,7 +241,7 @@ of listboxes where appropriate. You also need to reduce
the amount of spacing used by sizers, for which you can
use a macro such as this:
@verbatim
@code
#if defined(__WXWINCE__)
#define wxLARGESMALL(large,small) small
#else
@ -250,7 +250,7 @@ use a macro such as this:
// Usage
topsizer->Add( CreateTextSizer( message ), 0, wxALL, wxLARGESMALL(10,0) );
@endverbatim
@endcode
There is only ever one instance of a Windows CE application running,
and wxWidgets will take care of showing the current instance and
@ -306,7 +306,7 @@ If the screen orientation changes, the windows will automatically be resized
so no further action needs to be taken (unless you want to change the layout
according to the orientation, which you could detect in idle time, for example).
When input panel (SIP) is shown, top level windows (frames and dialogs) resize
accordingly (see wxTopLevelWindow::HandleSettingChange).
accordingly (see wxTopLevelWindow::HandleSettingChange()).
@subsubsection page_port_wxmsw_wince_toplevel Closing top-level windows in wxWinCE
@ -316,24 +316,24 @@ event to force the application to close down.
@subsubsection page_port_wxmsw_wince_hibernation Hibernation in wxWinCE
Smartphone and PocketPC will send a wxEVT_HIBERNATE to the application object in low
Smartphone and PocketPC will send a @c wxEVT_HIBERNATE to the application object in low
memory conditions. Your application should release memory and close dialogs,
and wake up again when the next wxEVT_ACTIVATE or wxEVT_ACTIVATE_APP message is received.
(wxEVT_ACTIVATE_APP is generated whenever a wxEVT_ACTIVATE event is received
in Smartphone and PocketPC, since these platforms do not support WM_ACTIVATEAPP.)
and wake up again when the next @c wxEVT_ACTIVATE or @c wxEVT_ACTIVATE_APP message is received.
(@c wxEVT_ACTIVATE_APP is generated whenever a @c wxEVT_ACTIVATE event is received
in Smartphone and PocketPC, since these platforms do not support @c WM_ACTIVATEAPP.)
@subsubsection page_port_wxmsw_wince_hwbutt Hardware buttons in wxWinCE
Special hardware buttons are sent to a window via the wxEVT_HOTKEY event
Special hardware buttons are sent to a window via the @c wxEVT_HOTKEY event
under Smartphone and PocketPC. You should first register each required button with
wxWindow::RegisterHotKey, and unregister the button when you're done with it. For example:
wxWindow::RegisterHotKey(), and unregister the button when you're done with it. For example:
@verbatim
@code
win->RegisterHotKey(0, wxMOD_WIN, WXK_SPECIAL1);
win->UnregisterHotKey(0);
@endverbatim
@endcode
You may have to register the buttons in a wxEVT_ACTIVATE event handler
You may have to register the buttons in a @c wxEVT_ACTIVATE event handler
since other applications will grab the buttons.
There is currently no method of finding out the names of the special
@ -345,15 +345,15 @@ PocketPC dialogs have an OK button on the caption, and so you should generally
not repeat an OK button on the dialog. You can add a Cancel button if necessary, but some dialogs
simply don't offer you the choice (the guidelines recommend you offer an Undo facility
to make up for it). When the user clicks on the OK button, your dialog will receive
a wxID_OK event by default. If you wish to change this, call wxDialog::SetAffirmativeId
with the required identifier to be used. Or, override wxDialog::DoOK (return @false to
a @c wxID_OK event by default. If you wish to change this, call wxDialog::SetAffirmativeId()
with the required identifier to be used. Or, override wxDialog::DoOK() (return @false to
have wxWidgets simply call Close to dismiss the dialog).
Smartphone dialogs do @e not have an OK button on the caption, and are closed
using one of the two menu buttons. You need to assign these using wxTopLevelWindow::SetLeftMenu
and wxTopLevelWindow::SetRightMenu, for example:
and wxTopLevelWindow::SetRightMenu(), for example:
@verbatim
@code
#ifdef __SMARTPHONE__
SetLeftMenu(wxID_OK);
SetRightMenu(wxID_CANCEL, _("Cancel"));
@ -362,9 +362,9 @@ and wxTopLevelWindow::SetRightMenu, for example:
#else
topsizer->Add( CreateButtonSizer( wxOK|wxCANCEL ), 0, wxEXPAND | wxALL, 10 );
#endif
@endverbatim
@endcode
For implementing property sheets (flat tabs), use a wxNotebook with wxNB_FLAT|wxNB_BOTTOM
For implementing property sheets (flat tabs), use a wxNotebook with @c wxNB_FLAT|wxNB_BOTTOM
and have the notebook left, top and right sides overlap the dialog by about 3 pixels
to eliminate spurious borders. You can do this by using a negative spacing in your
sizer Add() call. The cross-platform property sheet dialog wxPropertySheetDialog is
@ -387,7 +387,7 @@ Menubars and toolbars are implemented using a combined control,
but you can use essentially the usual wxWidgets API; wxWidgets will combine the menubar
and toolbar. However, there are some restrictions:
@li You must create the frame's primary toolbar with wxFrame::CreateToolBar,
@li You must create the frame's primary toolbar with wxFrame::CreateToolBar(),
because this uses the special wxToolMenuBar class (derived from wxToolBar)
to implement the combined toolbar and menubar. Otherwise, you can create and manage toolbars
using the wxToolBar class as usual, for example to implement an optional
@ -402,8 +402,8 @@ or with transparency (for example, using XPMs).
controls.
Unlike in all other ports, a wxDialog has a wxToolBar, automatically created
for you. You may either leave it blank, or access it with wxDialog::GetToolBar
and add buttons, then calling wxToolBar::Realize. You cannot set or recreate
for you. You may either leave it blank, or access it with wxDialog::GetToolBar()
and add buttons, then calling wxToolBar::Realize(). You cannot set or recreate
the toolbar.
@subsubsection page_port_wxmsw_wince_smart Menubars and toolbars in Smartphone
@ -424,7 +424,7 @@ wxID_EXIT, it will do the right thing.
@subsubsection page_port_wxmsw_wince_ctx Context menus in wxWinCE
To enable context menus in PocketPC, you currently need to call wxWindow::EnableContextMenu,
To enable context menus in PocketPC, you currently need to call wxWindow::EnableContextMenu(),
a wxWinCE-only function. Otherwise the context menu event (wxContextMenuEvent) will
never be sent. This API is subject to change.
@ -434,7 +434,7 @@ Context menus are not supported in Smartphone.
These controls and styles are specific to wxWinCE:
@li wxTextCtrl The wxTE_CAPITALIZE style causes a CAPEDIT control to
@li wxTextCtrl The @c wxTE_CAPITALIZE style causes a CAPEDIT control to
be created, which capitalizes the first letter.
These controls are missing from wxWinCE:
@ -447,9 +447,9 @@ tooltips are distinct controls, and it will be hard to add dynamic
tooltip support.
Control borders on PocketPC and Smartphone should normally be specified with
wxBORDER_SIMPLE instead of wxBORDER_SUNKEN. Controls will usually adapt
@c wxBORDER_SIMPLE instead of @c wxBORDER_SUNKEN. Controls will usually adapt
appropriately by virtue of their GetDefaultBorder() function, but if you
wish to specify a style explicitly you can use wxDEFAULT_CONTROL_BORDER
wish to specify a style explicitly you can use @c wxDEFAULT_CONTROL_BORDER
which will give a simple border on PocketPC and Smartphone, and the sunken border on
other platforms.
@ -569,11 +569,11 @@ icons, should be implemented. This will be quite straightforward.
and the remaining area, by calling SHSipInfo. We also may need to be able to show and hide
the SIP programmatically, with SHSipPreference. See also the <em>Input Dialogs</em> topic in
the <em>Programming Windows CE</em> guide for more on this, and how to have dialogs
show the SIP automatically using the WC_SIPREF control.
show the SIP automatically using the @c WC_SIPREF control.
@li <b>wxStaticBitmap.</b> The About box in the "Life!" demo shows a bitmap that is
the correct size on the emulator, but too small on a VGA Pocket Loox device.
@li <b>wxStaticLine.</b> Lines don't show up, and the documentation suggests that
missing styles are implemented with WM_PAINT.
missing styles are implemented with @c WM_PAINT.
@li <b>HTML control.</b> PocketPC has its own HTML control which can be used for showing
local pages or navigating the web. We should create a version of wxHtmlWindow that uses this
control, or have a separately-named control (wxHtmlCtrl), with a syntax as close as possible
@ -587,7 +587,7 @@ between controls. The focus handling in wxWidgets needs investigation. See in pa
src/common/containr.cpp, and note that the default OnActivate handler in src/msw/toplevel.cpp
sets the focus to the first child of the dialog.
@li <b>OK button.</b> We should allow the OK button on a dialog to be optional, perhaps
by using wxCLOSE_BOX to indicate when the OK button should be displayed.
by using @c wxCLOSE_BOX to indicate when the OK button should be displayed.
@li <b>Dynamic adaptation.</b> We should probably be using run-time tests more
than preprocessor tests, so that the same WinCE application can run on different
versions of the operating system.

View File

@ -97,7 +97,7 @@ printing under MSW and Mac), or a wxPostScriptDC (for printing under GTK or
generating PostScript output).
The @ref overview_docview "document/view framework" creates a default
wxPrintout object for every view, calling wxView::OnDraw to achieve a
wxPrintout object for every view, calling wxView::OnDraw() to achieve a
prepackaged print/preview facility.
If your window classes have a Draw(wxDC *dc) routine to do screen rendering,
@ -141,7 +141,7 @@ There are two important rectangles in printing: the <em>page rectangle</em>
defines the printable area seen by the application, and under MSW and Mac, it
is the printable area specified by the printer. (For PostScript printing, the
page rectangle is the entire page.) The inherited function
wxDC::GetSize returns the page size in device pixels. The
wxDC::GetSize() returns the page size in device pixels. The
point (0,0) on the wxPrinterDC represents the top left corner of the page
rectangle; that is, the page rect is given by wxRect(0, 0, w, h), where (w,h)
are the values returned by GetSize.
@ -150,7 +150,7 @@ The <em>paper rectangle</em>, on the other hand, represents the entire paper
area including the non-printable border. Thus, the coordinates of the top left
corner of the paper rectangle will have small negative values, while the width
and height will be somewhat larger than that of the page rectangle. The
wxPrinterDC-specific function wxPrinterDC::GetPaperRect returns the paper
wxPrinterDC-specific function wxPrinterDC::GetPaperRect() returns the paper
rectangle of the given wxPrinterDC.

View File

@ -10,7 +10,8 @@
@page overview_python wxPython Overview
This topic was written by Robin Dunn, author of the wxPython wrapper.
This topic was written by Robin Dunn, author of the
<a href="http://www.python.org/">wxPython</a> wrapper.
@li @ref overview_python_what
@li @ref overview_python_why
@ -120,19 +121,19 @@ pieces you need without having to use the GUI portions.
There are quite a few other GUI modules available for Python, some in active
use, some that haven't been updated for ages. Most are simple wrappers around
some C or C++ toolkit or another, and most are not cross-platform compatible.
See http://pypi.python.org/pypi?:action=browse&show=all&c=433 for a listing of
a few of them.
See <a href="http://pypi.python.org/pypi?:action=browse&show=all&c=433">this link</a>
for a listing of a few of them.
@section overview_python_using Using wxPython
I'm not going to try and teach the Python language here. You can do that at the
<http://www.python.org/doc/tut/tut.html>. I'm also going to assume that you
know a bit about wxWidgets already, enough to notice the similarities in the
classes used.
<a href="http://www.python.org/doc/tut/tut.html">Python Tutorial</a>. I'm also
going to assume that you know a bit about wxWidgets already, enough to notice
the similarities in the classes used.
Take a look at the following wxPython program. You can find a similar program
in the wxPython/demo directory, named "DialogUnits.py". If your Python and
in the @c wxPython/demo directory, named @c DialogUnits.py. If your Python and
wxPython are properly installed, you should be able to run it by issuing this
command:
@ -221,8 +222,8 @@ python DialogUnits.py
At line 2 the wxPython classes, constants, and etc. are imported into the
current module's namespace. If you prefer to reduce namespace pollution you can
use "from wxPython import wx" and then access all the wxPython identifiers
through the wx module, for example, "wx.wxFrame".
use @c "from wxPython import wx" and then access all the wxPython identifiers
through the wx module, for example, @c "wx.wxFrame".
At line 13 the frame's sizing and moving events are connected to methods of the
class. These helper functions are intended to be like the event table macros
@ -235,13 +236,13 @@ Notice the use of @c wxDLG_PNT and @c wxDLG_SZE in lines 19-29 to convert from
dialog units to pixels. These helpers are unique to wxPython since Python can't
do method overloading like C++.
There is an @c OnCloseWindow method at line 34 but no call to EVT_CLOSE to
There is an @c OnCloseWindow method at line 34 but no call to @c EVT_CLOSE to
attach the event to the method. Does it really get called? The answer is, yes
it does. This is because many of the standard events are attached to windows
that have the associated standard method names. I have tried to follow the lead
of the C++ classes in this area to determine what is standard but since that
changes from time to time I can make no guarantees, nor will it be fully
documented. When in doubt, use an EVT_*** function.
documented. When in doubt, use an @c EVT_*** function.
At lines 17 to 21 notice that there are no saved references to the panel or the
static text items that are created. Those of you who know Python might be
@ -250,7 +251,7 @@ scope. Do they disappear from the GUI? They don't. Remember that in wxPython
the Python objects are just shadows of the corresponding C++ objects. Once the
C++ windows and controls are attached to their parents, the parents manage them
and delete them when necessary. For this reason, most wxPython objects do not
need to have a __del__ method that explicitly causes the C++ object to be
need to have a @c __del__ method that explicitly causes the C++ object to be
deleted. If you ever have the need to forcibly delete a window, use the
Destroy() method as shown on line 36.
@ -300,7 +301,7 @@ spec over time.
@li wxColour
@li wxComboBox
@li wxCommandEvent
@li wxConfig
@li wxConfigBase
@li wxControl
@li wxCursor
@li wxCustomDataObject
@ -355,7 +356,7 @@ spec over time.
@li wxIndividualLayoutConstraint
@li wxInitDialogEvent
@li wxInputStream
@li wxInternetFSHandler
@li @ref wxFileSystem "wxInternetFSHandler"
@li wxJoystickEvent
@li wxJPEGHandler
@li wxKeyEvent
@ -377,7 +378,7 @@ spec over time.
@li wxMenuItem
@li wxMenu
@li wxMessageDialog
@li wxMetaFileDC
@li wxMetafileDC
@li wxMiniFrame
@li wxMouseEvent
@li wxMoveEvent
@ -454,7 +455,7 @@ spec over time.
@li wxValidator
@li wxWindowDC
@li wxWindow
@li wxZipFSHandler
@li @ref wxFileSystem "wxZipFSHandler"
@section overview_python_help Where to Go for Help

View File

@ -41,9 +41,10 @@ operation on it is the same.
@section overview_refcount_equality Object Comparison
The == and != operators of the reference counted classes always do a @c deep
comparison. This means that the equality operator will return @true if two
objects are identical and not only if they share the same data.
The == and != operators of @ref overview_refcount_list "the reference counted classes"
always do a <em>deep comparison</em>. This means that the equality operator
will return @true if two objects are identical and not only if they share the
same data.
Note that wxWidgets follows the <em>STL philosophy</em>: when a comparison
operator can not be implemented efficiently (like for e.g. wxImage's ==
@ -90,8 +91,8 @@ operators and copy constructors since they are reference-counted:
Note that the list above reports the objects which are reference counted in all
ports of wxWidgets; some ports may use this technique also for other classes.
All the objects implement a function IsOk() to test if they are referencing valid
data; when the objects are in uninitialized state, you can only use the IsOk() getter;
All the objects implement a function @b IsOk() to test if they are referencing valid
data; when the objects are in uninitialized state, you can only use the @b IsOk() getter;
trying to call any other getter, e.g. wxBrush::GetStyle() on the ::wxNullBrush object,
will result in an assert failure in debug builds.
@ -120,7 +121,7 @@ In fact, any time you need to read the data from your wxObject-derived class,
you will need to call this function.
@note Any time you need to actually modify the data placed inside your wxObject
derived class, you must first call the wxObject::UnShare function to ensure
derived class, you must first call the wxObject::UnShare() function to ensure
that the modifications won't affect other instances which are eventually
sharing your object's data.

View File

@ -15,9 +15,9 @@ REM These not automatically copied by Doxygen because it's not
REM used in doxygen documentation, only in our html footer.
copy images\powered-by-wxwidgets.png out\html 2>&1 >NUL
copy images\*logo.png out\html 2>&1 >NUL
copy images\wxgtk\*png out\html\wxgtk 2>&1 >NUL
copy images\wxmsw\*png out\html\wxmsw 2>&1 >NUL
copy images\wxmac\*png out\html\wxmac 2>&1 >NUL
copy images\wxgtk\*.png out\html\wxgtk 2>&1 >NUL
copy images\wxmsw\*.png out\html\wxmsw 2>&1 >NUL
copy images\wxmac\*.png out\html\wxmac 2>&1 >NUL
copy wxwidgets.js out\html 2>&1 >NUL
REM this CSS is automatically copied by Doxygen because it's

View File

@ -29,30 +29,38 @@ public:
/**
Converts input bitmap(s) into 8bit representation with custom palette.
in_rows and out_rows are arrays [0..h-1] of pointer to rows
(in_rows contains w * 3 bytes per row, out_rows w bytes per row).
Fills out_rows with indexes into palette (which is also stored into palette
@a in_rows and @a out_rows are arrays [0..h-1] of pointer to rows
(@a in_rows contains @a w * 3 bytes per row, @a out_rows @a w bytes per row).
Fills @a out_rows with indexes into palette (which is also stored into @a palette
variable).
*/
void DoQuantize(unsigned w, unsigned h, unsigned char** in_rows,
unsigned char** out_rows,
unsigned char* palette,
unsigned char** out_rows, unsigned char* palette,
int desiredNoColours);
//@{
/**
Reduce the colours in the source image and put the result into the destination image.
Both images may be the same, to overwrite the source image.
Specify an optional palette pointer to receive the resulting palette.
This palette may be passed to ConvertImageToBitmap, for example.
*/
bool Quantize(const wxImage& src, wxImage& dest,
wxPalette** pPalette, int desiredNoColours = 236,
unsigned char** eightBitData = 0,
int flags = wxQUANTIZE_INCLUDE_WINDOWS_COLOURS
|wxQUANTIZE_FILL_DESTINATION_IMAGE
|wxQUANTIZE_RETURN_8BIT_DATA);
/**
This version sets a palette in the destination image so you don't
have to manage it yourself.
*/
bool Quantize(const wxImage& src, wxImage& dest,
wxPalette** pPalette,
int desiredNoColours = 236,
unsigned char** eightBitData = 0,
int flags = wxQUANTIZE_INCLUDE_WINDOWS_COLOURS|wxQUANTIZE_FILL_DESTINATION_IMAGE|wxQUANTIZE_RETURN_8BIT_DATA);
bool Quantize(const wxImage& src, wxImage& dest,
int desiredNoColours = 236,
unsigned char** eightBitData = 0,
int flags = wxQUANTIZE_INCLUDE_WINDOWS_COLOURS|wxQUANTIZE_FILL_DESTINATION_IMAGE|wxQUANTIZE_RETURN_8BIT_DATA);
//@}
int flags = wxQUANTIZE_INCLUDE_WINDOWS_COLOURS
|wxQUANTIZE_FILL_DESTINATION_IMAGE
|wxQUANTIZE_RETURN_8BIT_DATA);
};

View File

@ -27,7 +27,7 @@
@beginEventTable{wxCommandEvent}
@event{EVT_RADIOBOX(id, func)}
Process a wxEVT_COMMAND_RADIOBOX_SELECTED event, when a radiobutton
Process a @c wxEVT_COMMAND_RADIOBOX_SELECTED event, when a radiobutton
is clicked.
@endEventTable
@ -40,30 +40,37 @@
class wxRadioBox : public wxControl, wxItemContainerImmutable
{
public:
//@{
/**
Default constructor.
@see Create(), wxValidator
*/
wxRadioBox();
/**
Constructor, creating and showing a radiobox.
@param parent
Parent window. Must not be @NULL.
@param id
Window identifier. The value wxID_ANY indicates a default value.
Window identifier. The value @c wxID_ANY indicates a default value.
@param label
Label for the static box surrounding the radio buttons.
@param pos
Window position. If wxDefaultPosition is specified then a default
position is chosen.
Window position. If @c wxDefaultPosition is specified then a
default position is chosen.
@param size
Window size. If wxDefaultSize is specified then a default size
is chosen.
Window size. If @c wxDefaultSize is specified then a default size
is chosen.
@param n
Number of choices with which to initialize the radiobox.
@param choices
An array of choices with which to initialize the radiobox.
@param majorDimension
Specifies the maximum number of rows (if style contains wxRA_SPECIFY_ROWS)
or columns (if style contains wxRA_SPECIFY_COLS) for a two-dimensional
radiobox.
Specifies the maximum number of rows (if style contains
@c wxRA_SPECIFY_ROWS) or columns (if style contains
@c wxRA_SPECIFY_COLS) for a two-dimensional radiobox.
@param style
Window style. See wxRadioBox.
@param validator
@ -73,10 +80,9 @@ public:
@see Create(), wxValidator
*/
wxRadioBox();
wxRadioBox(wxWindow* parent, wxWindowID id,
const wxString& label,
const wxPoint& point = wxDefaultPosition,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
int n = 0,
const wxString choices[] = NULL,
@ -84,30 +90,59 @@ public:
long style = wxRA_SPECIFY_COLS,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = "radioBox");
/**
Constructor, creating and showing a radiobox.
@param parent
Parent window. Must not be @NULL.
@param id
Window identifier. The value @c wxID_ANY indicates a default value.
@param label
Label for the static box surrounding the radio buttons.
@param pos
Window position. If @c wxDefaultPosition is specified then a
default position is chosen.
@param size
Window size. If @c wxDefaultSize is specified then a default size
is chosen.
@param choices
An array of choices with which to initialize the radiobox.
@param majorDimension
Specifies the maximum number of rows (if style contains
@c wxRA_SPECIFY_ROWS) or columns (if style contains
@c wxRA_SPECIFY_COLS) for a two-dimensional radiobox.
@param style
Window style. See wxRadioBox.
@param validator
Window validator.
@param name
Window name.
@see Create(), wxValidator
*/
wxRadioBox(wxWindow* parent, wxWindowID id,
const wxString& label,
const wxPoint& point,
const wxPoint& pos,
const wxSize& size,
const wxArrayString& choices,
int majorDimension = 0,
long style = wxRA_SPECIFY_COLS,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = "radioBox");
//@}
/**
Destructor, destroying the radiobox item.
*/
~wxRadioBox();
//@{
/**
Creates the radiobox for two-step construction. See wxRadioBox()
for further details.
*/
bool Create(wxWindow* parent, wxWindowID id,
const wxString& label,
const wxPoint& point = wxDefaultPosition,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
int n = 0,
const wxString choices[] = NULL,
@ -115,18 +150,21 @@ public:
long style = wxRA_SPECIFY_COLS,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = "radioBox");
/**
Creates the radiobox for two-step construction. See wxRadioBox()
for further details.
*/
bool Create(wxWindow* parent, wxWindowID id,
const wxString& label,
const wxPoint& point,
const wxPoint& pos,
const wxSize& size,
const wxArrayString& choices,
int majorDimension = 0,
long style = wxRA_SPECIFY_COLS,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = "radioBox");
//@}
//@{
/**
Enables or disables an individual button in the radiobox.
@ -135,11 +173,20 @@ public:
@param n
The zero-based button to enable or disable.
@see wxWindow::Enable
@see wxWindow::Enable()
@beginWxPythonOnly
In place of a single overloaded method name, wxPython implements the following methods:
@beginTable
@row2col{Enable(flag), Enables or disables the entire radiobox.}
@row2col{EnableItem(n\, flag), Enables or disables an individual button in the radiobox.}
@endTable
@endWxPythonOnly
*/
virtual bool Enable(bool enable = true);
virtual bool Enable(unsigned int n, bool enable = true);
//@}
/**
Finds a button matching the given string, returning the position if found, or
@ -178,48 +225,21 @@ public:
/**
Returns the tooltip associated with the specified @a item if any or @NULL.
@see SetItemToolTip(), wxWindow::GetToolTip
@see SetItemToolTip(), wxWindow::GetToolTip()
*/
wxToolTip* GetItemToolTip(unsigned int item) const;
/**
Returns the radiobox label.
@param n
The zero-based button index.
@see SetLabel()
*/
wxString GetLabel() const;
/**
Returns the number of rows in the radiobox.
*/
unsigned int GetRowCount() const;
/**
Returns the zero-based position of the selected button.
*/
int GetSelection() const;
/**
Returns the label for the button at the given position.
@param n
The zero-based button position.
*/
wxString GetString(unsigned int n) const;
/**
Returns the selected string.
*/
wxString GetStringSelection() const;
/**
Returns @true if the item is enabled or @false if it was disabled using
@ref enable() "Enable(n, @false)".
@b Platform note: Currently only implemented in wxMSW, wxGTK and wxUniversal
and always returns @true in the other ports.
@ref Enable(unsigned int,bool) "Enable(n, false)".
This function is currently only implemented in wxMSW, wxGTK and
wxUniversal and always returns @true in the other ports.
@param n
The zero-based button position.
@ -228,13 +248,13 @@ public:
/**
Returns @true if the item is currently shown or @false if it was hidden
using
@ref show() "Show(n, @false)".
using @ref Show(unsigned int,bool) "Show(n, false)".
Note that this function returns @true for an item which hadn't been hidden
even
if the entire radiobox is not currently shown.
@b Platform note: Currently only implemented in wxMSW, wxGTK and wxUniversal
and always returns @true in the other ports.
even if the entire radiobox is not currently shown.
This function is currently only implemented in wxMSW, wxGTK and
wxUniversal and always returns @true in the other ports.
@param n
The zero-based button position.
@ -255,45 +275,44 @@ public:
/**
Sets the tooltip text for the specified item in the radio group.
@b Platform note: Currently only implemented in wxMSW and wxGTK2 and does
nothing in the other ports.
This function is currently only implemented in wxMSW and wxGTK2 and
does nothing in the other ports.
@param item
Index of the item the tooltip will be shown for.
@param text
Tooltip text for the item, the tooltip is removed if empty.
@see GetItemToolTip(), wxWindow::SetToolTip
@see GetItemToolTip(), wxWindow::SetToolTip()
*/
void SetItemToolTip(unsigned int item, const wxString& text);
/**
Sets the radiobox label.
Shows or hides individual buttons.
@param show
@true to show, @false to hide.
@param item
The zero-based position of the button to show or hide.
@return
@true if the item has been shown or hidden or @false if nothing
was done because it already was in the requested state.
@see
wxWindow::Show()
@beginWxPythonOnly
In place of a single overloaded method name, wxPython implements the following methods:
@beginTable
@row2col{Show(flag), Shows or hides the entire radiobox.}
@row2col{ShowItem(n\, flag), Shows or hides individual buttons.}
@endTable
@endWxPythonOnly
@param label
The label to set.
@param n
The zero-based button index.
*/
void SetLabel(const wxString& label);
/**
Sets a button by passing the desired string position. This does not cause
a wxEVT_COMMAND_RADIOBOX_SELECTED event to get emitted.
@param n
The zero-based button position.
*/
void SetSelection(int n);
/**
Sets the selection to a button by passing the desired string. This does not
cause
a wxEVT_COMMAND_RADIOBOX_SELECTED event to get emitted.
@param string
The label of the button to select.
*/
void SetStringSelection(const wxString& string);
virtual bool Show(unsigned int item, const bool show = true);
};

View File

@ -10,13 +10,13 @@
@class wxRadioButton
@wxheader{radiobut.h}
A radio button item is a button which usually denotes one of several mutually
exclusive options. It has a text label next to a (usually) round button.
A radio button item is a button which usually denotes one of several
mutually exclusive options. It has a text label next to a (usually) round
button.
You can create a group of mutually-exclusive radio buttons by specifying @c
wxRB_GROUP for
the first in the group. The group ends when another radio button group is
created, or there are no more radio buttons.
You can create a group of mutually-exclusive radio buttons by specifying
@c wxRB_GROUP for the first in the group. The group ends when another
radio button group is created, or there are no more radio buttons.
@beginStyleTable
@style{wxRB_GROUP}
@ -33,7 +33,7 @@
@beginEventTable{wxCommandEvent}
@event{EVT_RADIOBUTTON(id, func)}
Process a wxEVT_COMMAND_RADIOBUTTON_SELECTED event, when the
Process a @c wxEVT_COMMAND_RADIOBUTTON_SELECTED event, when the
radiobutton is clicked.
@endEventTable
@ -46,21 +46,28 @@
class wxRadioButton : public wxControl
{
public:
//@{
/**
Default constructor.
@see Create(), wxValidator
*/
wxRadioButton();
/**
Constructor, creating and showing a radio button.
@param parent
Parent window. Must not be @NULL.
@param id
Window identifier. The value wxID_ANY indicates a default value.
Window identifier. The value @c wxID_ANY indicates a default value.
@param label
Label for the radio button.
@param pos
Window position. If wxDefaultPosition is specified then a default
Window position. If @c wxDefaultPosition is specified then a default
position is chosen.
@param size
Window size. If wxDefaultSize is specified then a default size
Window size. If @c wxDefaultSize is specified then a default size
is chosen.
@param style
Window style. See wxRadioButton.
@ -71,7 +78,6 @@ public:
@see Create(), wxValidator
*/
wxRadioButton();
wxRadioButton(wxWindow* parent, wxWindowID id,
const wxString& label,
const wxPoint& pos = wxDefaultPosition,
@ -79,7 +85,6 @@ public:
long style = 0,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = "radioButton");
//@}
/**
Destructor, destroying the radio button item.
@ -105,7 +110,7 @@ public:
/**
Sets the radio button to selected or deselected status. This does not cause a
wxEVT_COMMAND_RADIOBUTTON_SELECTED event to get emitted.
@c wxEVT_COMMAND_RADIOBUTTON_SELECTED event to get emitted.
@param value
@true to select, @false to deselect.

View File

@ -1,3 +1,10 @@
/////////////////////////////////////////////////////////////////////////////
// Name: rawbmp.h
// Purpose: interface of wxPixelData
// Author: wxWidgets team
// RCS-ID: $Id$
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
/**
@class wxPixelData
@ -8,14 +15,19 @@
wxImage's internal data through a standard interface. It is
possible to extend this class (interface) to other types of
image content.
Implemented on Windows, GTK+ and OS X:
@li wxNativePixelData: Class to access to wxBitmap's internal data without alpha channel (RGB).
@li wxAlphaPixelData: Class to access to wxBitmap's internal data with alpha channel (RGBA).
@li wxNativePixelData: Class to access to wxBitmap's internal data
without alpha channel (RGB).
@li wxAlphaPixelData: Class to access to wxBitmap's internal data with
alpha channel (RGBA).
Implemented everywhere:
@li wxImagePixelData: Class to access to wxImage's internal data with alpha channel (RGBA).
@li wxImagePixelData: Class to access to wxImage's internal data with
alpha channel (RGBA).
Example:
@code
wxBitmap bmp;
wxNativePixelData data(bmp);
@ -54,7 +66,7 @@
@library{wxcore}
@category{gdi}
@see wxBitmap, wxImage
*/
template <class Image, class PixelFormat = wxPixelFormatFor<Image> >
@ -62,140 +74,142 @@ class wxPixelData :
public wxPixelDataOut<Image>::template wxPixelDataIn<PixelFormat>
{
public:
/**
the type of the class we're working with
/**
The type of the class we're working with.
*/
typedef Image ImageType;
/**
Create pixel data object representing the entire image
Create pixel data object representing the entire image.
*/
wxPixelData(Image& image);
/**
Create pixel data object representing the area
of the image defined by @e rect.
Create pixel data object representing the area of the image defined by
@a rect.
*/
wxPixelData(Image& i, const wxRect& rect);
/**
Create pixel data object representing the area
of the image defined by @e pt and @e sz.
Create pixel data object representing the area of the image defined by
@a pt and @a sz.
*/
wxPixelData(Image& i, const wxPoint& pt, const wxSize& sz)
/**
Return true of if we could get access to bitmap data
successfully
Return @true of if we could get access to bitmap data successfully.
*/
operator bool() const:
/**
Return the iterator pointing to the origin of the image
/**
Return the iterator pointing to the origin of the image.
*/
Iterator GetPixels() const;
/**
Returns origin of the rectangular region we represent
Returns origin of the rectangular region this wxPixelData represents.
*/
wxPoint GetOrigin() const;
/**
Return width of the region we represent
/**
Return width of the region this wxPixelData represents.
*/
int GetWidth() const;
/**
Return height of the region we represent
/**
Return height of the region this wxPixelData represents.
*/
int GetHeight() const;
/*
Return area which this class represents in the image
/**
Return the area which this wxPixelData represents in the image.
*/
wxSize GetSize() const;
/**
Return the distance between two rows
Return the distance between two rows.
*/
int GetRowStride() const;
/**
Iterator
The iterator of class wxPixelData.
*/
class Iterator
{
public:
/**
go back to (0, 0)
*/
void Reset(const PixelData& data);
/**
Initializes the iterator to point to the origin of the given
pixel data
*/
Iterator(PixelData& data);
class Iterator
{
public:
/**
Initializes the iterator to point to the origin of the given
Bitmap
*/
Iterator(wxBitmap& bmp, PixelData& data);
/**
Reset the iterator to point to (0, 0).
*/
void Reset(const PixelData& data);
/**
Default constructor
*/
Iterator();
/**
Initializes the iterator to point to the origin of the given pixel
data.
*/
Iterator(PixelData& data);
/**
Return true if this iterator is valid
*/
bool IsOk() const;
/**
Initializes the iterator to point to the origin of the given Bitmap.
*/
Iterator(wxBitmap& bmp, PixelData& data);
/**
Advance the iterator to the next pixel, prefix version
*/
Iterator& operator++();
/**
Default constructor.
*/
Iterator();
/**
Postfix (hence less efficient -- don't use it unless you
absolutely must) version
*/
Iterator operator++(int);
/**
Return @true if this iterator is valid.
*/
bool IsOk() const;
/**
Move x pixels to the right and y down
note that the rows don't wrap!
*/
void Offset(const PixelData& data, int x, int y);
/**
Advance the iterator to the next pixel, prefix version.
*/
Iterator& operator++();
/**
Move x pixels to the right (again, no row wrapping)
*/
void OffsetX(const PixelData&data, int x);
/**
Advance the iterator to the next pixel, postfix (hence less
efficient -- don't use it unless you absolutely must) version.
*/
Iterator operator++(int);
/**
Move y rows to the bottom
*/
void OffsetY(const PixelData& data, int y);
/**
Move @a x pixels to the right and @a y down.
/**
Go to the given position
*/
void MoveTo(const PixelData& data, int x, int y);
@note The rows won't wrap automatically.
*/
void Offset(const PixelData& data, int x, int y);
//@{
/**
Data access: gives access to invidividual colour components.
*/
ChannelType& Red();
ChannelType& Green();
ChannelType& Blue();
ChannelType& Alpha();
//@}
};
/**
Move @a x pixels to the right.
@note The rows won't wrap automatically.
*/
void OffsetX(const PixelData&data, int x);
/**
Move @a y rows to the bottom
*/
void OffsetY(const PixelData& data, int y);
/**
Go to the given position
*/
void MoveTo(const PixelData& data, int x, int y);
//@{
/**
Data Access: Access to invidividual colour components.
*/
ChannelType& Red();
ChannelType& Green();
ChannelType& Blue();
ChannelType& Alpha();
//@}
};
};

View File

@ -11,11 +11,12 @@
@wxheader{recguard.h}
This is a completely opaque class which exists only to be used with
wxRecursionGuard, please see the example in that
class documentation.
wxRecursionGuard, please see the example in that class' documentation.
Please notice that wxRecursionGuardFlag object must be declared
@c static or the recursion would never be detected.
@remarks
wxRecursionGuardFlag object must be declared @c static or the recursion
would never be detected.
@library{wxbase}
@category{FIXME}
@ -42,22 +43,22 @@ public:
@code
void Foo()
{
static wxRecursionGuardFlag s_flag;
wxRecursionGuard guard(s_flag);
if ( guard.IsInside() )
{
static wxRecursionGuardFlag s_flag;
wxRecursionGuard guard(s_flag);
if ( guard.IsInside() )
{
// don't allow reentrancy
return;
}
...
// don't allow reentrancy
return;
}
...
}
@endcode
As you can see, wxRecursionGuard simply tests the flag value and sets it to
@true if it hadn't been already set.
wxRecursionGuard::IsInside allows testing the old flag
IsInside() allows testing the old flag
value. The advantage of using this class compared to directly manipulating the
flag is that the flag is always reset in the wxRecursionGuard destructor and so
you don't risk to forget to do it even if the function returns in an unexpected
@ -70,7 +71,7 @@ class wxRecursionGuard
{
public:
/**
A wxRecursionGuard object must always be initialized with a (static)
A wxRecursionGuard object must always be initialized with a @c static
wxRecursionGuardFlag. The constructor saves the
value of the flag to be able to return the correct value from
IsInside().
@ -80,16 +81,18 @@ public:
/**
The destructor resets the flag value so that the function can be entered again
the next time.
Note that it is not virtual and so this class is not meant to be derived from
(besides, there is absolutely no reason to do it anyhow).
@note This is not virtual, so this class is not meant to be derived
from (besides, there is absolutely no reason to do it anyhow).
*/
~wxRecursionGuard();
/**
Returns @true if we're already inside the code block "protected" by this
wxRecursionGuard (i.e. between this line and the end of current scope). Usually
the function using wxRecursionGuard takes some specific actions in such case
(may be simply returning) to prevent reentrant calls to itself.
wxRecursionGuard (i.e. between this line and the end of current scope).
Usually the function using wxRecursionGuard takes some specific actions
in such case (may be simply returning) to prevent reentrant calls to itself.
If this method returns @false, it is safe to continue.
*/
bool IsInside() const;

View File

@ -6,6 +6,51 @@
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
/**
Flags for regex compilation to be used with Compile().
*/
enum
{
/** Use extended regex syntax. */
wxRE_EXTENDED = 0,
/** Use advanced RE syntax (built-in regex only). */
wxRE_ADVANCED = 1,
/** Use basic RE syntax. */
wxRE_BASIC = 2,
/** Ignore case in match. */
wxRE_ICASE = 4,
/** Only check match, don't set back references. */
wxRE_NOSUB = 8,
/**
If not set, treat '\n' as an ordinary character, otherwise it is
special: it is not matched by '.' and '^' and '$' always match
after/before it regardless of the setting of wxRE_NOT[BE]OL.
*/
wxRE_NEWLINE = 16,
/** Default flags.*/
wxRE_DEFAULT = wxRE_EXTENDED
};
/**
Flags for regex matching to be used with Matches().
These flags are mainly useful when doing several matches in a long string
to prevent erroneous matches for ¡¯¡¯ and ¡¯$¡¯:
*/
enum
{
/** '^' doesn't match at the start of line. */
wxRE_NOTBOL = 32,
/** '$' doesn't match at the end of line. */
wxRE_NOTEOL = 64
};
/**
@class wxRegEx
@wxheader{regex.h}
@ -21,7 +66,7 @@
Regular expressions, as defined by POSIX, come in two flavours: @e extended
and @e basic. The builtin library also adds a third flavour
of expression advanced(), which is not available
of expression @ref overview_resyntax "advanced", which is not available
when using the system library.
Unicode is fully supported only when using the builtin library.
@ -37,49 +82,87 @@
@library{wxbase}
@category{data}
@see wxRegEx::ReplaceFirst
Examples:
A bad example of processing some text containing email addresses (the example
is bad because the real email addresses can have more complicated form than
@c user@host.net):
@code
wxString text;
...
wxRegEx reEmail = wxT("([^@]+)@([[:alnum:].-_].)+([[:alnum:]]+)");
if ( reEmail.Matches(text) )
{
wxString text = reEmail.GetMatch(email);
wxString username = reEmail.GetMatch(email, 1);
if ( reEmail.GetMatch(email, 3) == wxT("com") ) // .com TLD?
{
...
}
}
// or we could do this to hide the email address
size_t count = reEmail.ReplaceAll(text, wxT("HIDDEN@\\2\\3"));
printf("text now contains %u hidden addresses", count);
@endcode
*/
class wxRegEx
{
public:
//@{
/**
Default constructor: use Compile() later.
*/
wxRegEx();
/**
Create and compile the regular expression, use
IsValid() to test for compilation errors.
@todo Add referece to the flag enum.
*/
wxRegEx();
wxRegEx(const wxString& expr, int flags = wxRE_DEFAULT);
//@}
/**
dtor not virtual, don't derive from this class
Destructor. It's not virtual, don't derive from this class.
*/
~wxRegEx();
/**
Compile the string into regular expression, return @true if ok or @false
if string has a syntax error.
@todo Add referece to the flag enum.
*/
bool Compile(const wxString& pattern, int flags = wxRE_DEFAULT);
//@{
/**
Returns the part of string corresponding to the match where @a index is
interpreted as above. Empty string is returned if match failed
May only be called after successful call to Matches()
and only if @c wxRE_NOSUB was @b not used in
Compile().
Get the start index and the length of the match of the expression
(if @a index is 0) or a bracketed subexpression (@a index different from 0).
May only be called after successful call to Matches() and only if @c wxRE_NOSUB
was @b not used in Compile().
Returns @false if no match or if an error occurred.
*/
bool GetMatch(size_t* start, size_t* len, size_t index = 0) const;
const not used in
Compile().
Returns false if no match or if an error occurred.
wxString GetMatch(const wxString& text, size_t index = 0) const;
//@}
/**
Returns the part of string corresponding to the match where index is interpreted
as above. Empty string is returned if match failed.
May only be called after successful call to Matches() and only if @c wxRE_NOSUB
was @b not used in Compile().
*/
wxString GetMatch(const wxString& text, size_t index = 0) const;
/**
Returns the size of the array of matches, i.e. the number of bracketed
subexpressions plus one for the expression itself, or 0 on error.
May only be called after successful call to Compile().
and only if @c wxRE_NOSUB was @b not used.
*/
@ -93,32 +176,49 @@ public:
//@{
/**
Matches the precompiled regular expression against the string @e text,
Matches the precompiled regular expression against the string @a text,
returns @true if matches and @false otherwise.
@e Flags may be combination of @c wxRE_NOTBOL and @c wxRE_NOTEOL.
@todo Add referece to the flag enum.
Some regex libraries assume that the text given is null terminated, while
others require the length be given as a separate parameter. Therefore for
maximum portability assume that @a text cannot contain embedded nulls.
When the @e Matches(const wxChar *text, int flags = 0) form is used,
a @e wxStrlen() will be done internally if the regex library requires the
length. When using @e Matches() in a loop
the @e Matches(text, flags, len) form can be used instead, making it
possible to avoid a @e wxStrlen() inside the loop.
When the <b>Matches(const wxChar *text, int flags = 0)</b> form is used,
a wxStrlen() will be done internally if the regex library requires the
length. When using Matches() in a loop the <b>Matches(text, flags, len)</b>
form can be used instead, making it possible to avoid a wxStrlen() inside
the loop.
May only be called after successful call to Compile().
*/
bool Matches(const wxChar* text, int flags = 0) const;
const bool Matches(const wxChar* text, int flags, size_t len) const;
const bool Matches(const wxString& text, int flags = 0) const;
//@}
/**
Matches the precompiled regular expression against the string @a text,
returns @true if matches and @false otherwise.
@e Flags may be combination of @c wxRE_NOTBOL and @c wxRE_NOTEOL.
@todo Add referece to the flag enum.
May only be called after successful call to Compile().
*/
const bool Matches(const wxString& text, int flags = 0) const;
/**
Replaces the current regular expression in the string pointed to by
@e text, with the text in @a replacement and return number of matches
@a text, with the text in @a replacement and return number of matches
replaced (maybe 0 if none found) or -1 on error.
The replacement text may contain back references @c \number which will be
The replacement text may contain back references @c \\number which will be
replaced with the value of the corresponding subexpression in the
pattern match. @c \0 corresponds to the entire match and @c is a
synonym for it. Backslash may be used to quote itself or @c character.
pattern match. @c \\0 corresponds to the entire match and @c \& is a
synonym for it. Backslash may be used to quote itself or @c \& character.
@a maxMatches may be used to limit the number of replacements made, setting
it to 1, for example, will only replace first occurrence (if any) of the
pattern in the text while default value of 0 means replace all.