Merge branch 'im/doxyfix2' of https://github.com/imciner2/wxWidgets
Fix various documentation problems. See https://github.com/wxWidgets/wxWidgets/pull/2367
This commit is contained in:
@@ -174,6 +174,12 @@ ALIASES += row3col{7}="<tr><td>\1</td> <td>\2</td> <td>\3,\4,\5,\6,\7</td></tr>"
|
||||
ALIASES += row3col{8}="<tr><td>\1</td> <td>\2</td> <td>\3,\4,\5,\6,\7,\8</td></tr>"
|
||||
ALIASES += row3col{9}="<tr><td>\1</td> <td>\2</td> <td>\3,\4,\5,\6,\7,\8,\9</td></tr>"
|
||||
ALIASES += row3col{10}="<tr><td>\1</td> <td>\2</td> <td>\3,\4,\5,\6,\7,\8,\9,\10</td></tr>"
|
||||
ALIASES += row3col{11}="<tr><td>\1</td> <td>\2</td> <td>\3,\4,\5,\6,\7,\8,\9,\10,\11</td></tr>"
|
||||
ALIASES += row3col{12}="<tr><td>\1</td> <td>\2</td> <td>\3,\4,\5,\6,\7,\8,\9,\10,\11,\12</td></tr>"
|
||||
ALIASES += row3col{13}="<tr><td>\1</td> <td>\2</td> <td>\3,\4,\5,\6,\7,\8,\9,\10,\11,\12,\13</td></tr>"
|
||||
ALIASES += row3col{14}="<tr><td>\1</td> <td>\2</td> <td>\3,\4,\5,\6,\7,\8,\9,\10,\11,\12,\13,\14</td></tr>"
|
||||
ALIASES += row3col{15}="<tr><td>\1</td> <td>\2</td> <td>\3,\4,\5,\6,\7,\8,\9,\10,\11,\12,\13,\14,\15</td></tr>"
|
||||
ALIASES += row3col{16}="<tr><td>\1</td> <td>\2</td> <td>\3,\4,\5,\6,\7,\8,\9,\10,\11,\12,\13,\14,\15,\16</td></tr>"
|
||||
ALIASES += hdr3col{3}="<tr><th>\1</th> <th>\2</th> <th>\3</th></tr>"
|
||||
ALIASES += endTable="</table>"
|
||||
|
||||
@@ -194,7 +200,7 @@ ALIASES += itemdef{8}="<tr><td><span class='itemdef'>\1</span></td> <td>\2,\3,\4
|
||||
ALIASES += itemdef{9}="<tr><td><span class='itemdef'>\1</span></td> <td>\2,\3,\4,\5,\6,\7,\8,\9</td></tr>"
|
||||
ALIASES += itemdef{10}="<tr><td><span class='itemdef'>\1</span></td> <td>\2,\3,\4,\5,\6,\7,\8,\9,\10</td></tr>"
|
||||
ALIASES += endDefList="</table>"
|
||||
ALIASES += stock{3}="<tr><td><span class='itemdef'>\1</span></td> <td> @image html gtk-\2.png\n</td><td>\3</td></tr>"
|
||||
ALIASES += stock{3}="<tr><td><span class='itemdef'>\1</span></td> <td>\2</td> <td> @image html gtk-\3.png </td></tr>"
|
||||
|
||||
# Aliases for documenting wxPerl/wxPython-specific parts
|
||||
#---------------------------------------------------------------------------
|
||||
|
@@ -19,79 +19,79 @@ automatically add stock bitmaps when using stock IDs.
|
||||
Also note that you can retrieve stock bitmaps using wxArtProvider.
|
||||
|
||||
@beginDefList
|
||||
@row3col{<b>Stock ID</b>, <b>GTK icon</b>, <b>Stock label</b>}
|
||||
@stock{wxID_ABOUT,about,&About}
|
||||
@stock{wxID_ADD,add,Add}
|
||||
@stock{wxID_APPLY,apply,&Apply}
|
||||
@stock{wxID_BACKWARD,go-back-ltr,&Back}
|
||||
@stock{wxID_BOLD,bold,&Bold}
|
||||
@stock{wxID_BOTTOM,goto-bottom,&Bottom}
|
||||
@stock{wxID_CANCEL,cancel,&Cancel}
|
||||
@stock{wxID_CDROM,cdrom,&CD-ROM}
|
||||
@stock{wxID_CLEAR,clear,&Clear}
|
||||
@stock{wxID_CLOSE,close,&Close}
|
||||
@stock{wxID_CONVERT,convert,&Convert}
|
||||
@stock{wxID_COPY,copy,&Copy}
|
||||
@stock{wxID_CUT,cut,Cu&t}
|
||||
@stock{wxID_DELETE,delete,&Delete}
|
||||
@stock{wxID_DOWN,go-down,&Down}
|
||||
@stock{wxID_EDIT,edit,&Edit}
|
||||
@stock{wxID_EXECUTE,execute,&Execute}
|
||||
@stock{wxID_EXIT,quit,&Quit}
|
||||
@stock{wxID_FILE,file,&File}
|
||||
@stock{wxID_FIND,find,&Find...}
|
||||
@stock{wxID_FIRST,goto-first-ltr,&First}
|
||||
@stock{wxID_FLOPPY,floppy,&Floppy}
|
||||
@stock{wxID_FORWARD,go-forward-ltr,&Forward}
|
||||
@stock{wxID_HARDDISK,harddisk,&Harddisk}
|
||||
@stock{wxID_HELP,help,&Help}
|
||||
@stock{wxID_HOME,home,&Home}
|
||||
@stock{wxID_INDENT,indent-ltr,Indent}
|
||||
@stock{wxID_INDEX,index,&Index}
|
||||
@stock{wxID_INFO,info,&Info}
|
||||
@stock{wxID_ITALIC,italic,&Italic}
|
||||
@stock{wxID_JUMP_TO,jump-to-ltr,&Jump to}
|
||||
@stock{wxID_JUSTIFY_CENTER,justify-center,Centered}
|
||||
@stock{wxID_JUSTIFY_FILL,justify-fill,Justified}
|
||||
@stock{wxID_JUSTIFY_LEFT,justify-left,Align Left}
|
||||
@stock{wxID_JUSTIFY_RIGHT,justify-right,Align Right}
|
||||
@stock{wxID_LAST,goto-last-ltr,&Last}
|
||||
@stock{wxID_NETWORK,network,&Network}
|
||||
@stock{wxID_NEW,new,&New}
|
||||
@stock{wxID_NO,no,&No}
|
||||
@stock{wxID_OK,ok,&OK}
|
||||
@stock{wxID_OPEN,open,&Open...}
|
||||
@stock{wxID_PASTE,paste,&Paste}
|
||||
@stock{wxID_PREFERENCES,preferences,&Preferences}
|
||||
@stock{wxID_PREVIEW,print-preview,Print previe&w}
|
||||
@stock{wxID_PRINT,print,&Print...}
|
||||
@stock{wxID_PROPERTIES,properties,&Properties}
|
||||
@stock{wxID_REDO,redo-ltr,&Redo}
|
||||
@stock{wxID_REFRESH,refresh,Refresh}
|
||||
@stock{wxID_REMOVE,remove,Remove}
|
||||
@stock{wxID_REPLACE,find-and-replace,Rep&lace...}
|
||||
@stock{wxID_REVERT_TO_SAVED,revert-to-saved-ltr,Revert to Saved}
|
||||
@stock{wxID_SAVE,save,&Save}
|
||||
@stock{wxID_SAVEAS,save-as,Save &As...}
|
||||
@stock{wxID_SELECTALL,select-all,Select &All}
|
||||
@stock{wxID_SELECT_COLOR,select-color,&Color}
|
||||
@stock{wxID_SELECT_FONT,select-font,&Font}
|
||||
@stock{wxID_SORT_ASCENDING,sort-ascending,&Ascending}
|
||||
@stock{wxID_SORT_DESCENDING,sort-descending,&Descending}
|
||||
@stock{wxID_SPELL_CHECK,spell-check,&Spell Check}
|
||||
@stock{wxID_STOP,stop,&Stop}
|
||||
@stock{wxID_STRIKETHROUGH,strikethrough,&Strikethrough}
|
||||
@stock{wxID_TOP,goto-top,&Top}
|
||||
@stock{wxID_UNDELETE,undelete-ltr,Undelete}
|
||||
@stock{wxID_UNDERLINE,underline,&Underline}
|
||||
@stock{wxID_UNDO,undo-ltr,&Undo}
|
||||
@stock{wxID_UNINDENT,unindent-ltr,&Unindent}
|
||||
@stock{wxID_UP,go-up,&Up}
|
||||
@stock{wxID_YES,yes,&Yes}
|
||||
@stock{wxID_ZOOM_100,zoom-100,&Actual Size}
|
||||
@stock{wxID_ZOOM_FIT,zoom-fit,Zoom to &Fit}
|
||||
@stock{wxID_ZOOM_IN,zoom-in,Zoom &In}
|
||||
@stock{wxID_ZOOM_OUT,zoom-out,Zoom &Out}
|
||||
@row3col{<b>Stock ID</b>, <b>Stock label</b>, <b>GTK icon</b>}
|
||||
@stock{wxID_ABOUT,&About,about}
|
||||
@stock{wxID_ADD,Add,add}
|
||||
@stock{wxID_APPLY,&Apply,apply}
|
||||
@stock{wxID_BACKWARD,&Back,go-back-ltr}
|
||||
@stock{wxID_BOLD,&Bold,bold}
|
||||
@stock{wxID_BOTTOM,&Bottom,goto-bottom}
|
||||
@stock{wxID_CANCEL,&Cancel,cancel}
|
||||
@stock{wxID_CDROM,&CD-ROM,cdrom}
|
||||
@stock{wxID_CLEAR,&Clear,clear}
|
||||
@stock{wxID_CLOSE,&Close,close}
|
||||
@stock{wxID_CONVERT,&Convert,convert}
|
||||
@stock{wxID_COPY,&Copy,copy}
|
||||
@stock{wxID_CUT,Cu&t,cut}
|
||||
@stock{wxID_DELETE,&Delete,delete}
|
||||
@stock{wxID_DOWN,&Down,go-down}
|
||||
@stock{wxID_EDIT,&Edit,edit}
|
||||
@stock{wxID_EXECUTE,&Execute,execute}
|
||||
@stock{wxID_EXIT,&Quit,quit}
|
||||
@stock{wxID_FILE,&File,file}
|
||||
@stock{wxID_FIND,&Find...,find}
|
||||
@stock{wxID_FIRST,&First,goto-first-ltr}
|
||||
@stock{wxID_FLOPPY,&Floppy,floppy}
|
||||
@stock{wxID_FORWARD,&Forward,go-forward-ltr}
|
||||
@stock{wxID_HARDDISK,&Harddisk,harddisk}
|
||||
@stock{wxID_HELP,&Help,help}
|
||||
@stock{wxID_HOME,&Home,home}
|
||||
@stock{wxID_INDENT,Indent,indent-ltr}
|
||||
@stock{wxID_INDEX,&Index,index}
|
||||
@stock{wxID_INFO,&Info,info}
|
||||
@stock{wxID_ITALIC,&Italic,italic}
|
||||
@stock{wxID_JUMP_TO,&Jump to,jump-to-ltr}
|
||||
@stock{wxID_JUSTIFY_CENTER,Centered,justify-center}
|
||||
@stock{wxID_JUSTIFY_FILL,Justified,justify-fill}
|
||||
@stock{wxID_JUSTIFY_LEFT,Align Left,justify-left}
|
||||
@stock{wxID_JUSTIFY_RIGHT,Align Right,justify-right}
|
||||
@stock{wxID_LAST,&Last,goto-last-ltr}
|
||||
@stock{wxID_NETWORK,&Network,network}
|
||||
@stock{wxID_NEW,&New,new}
|
||||
@stock{wxID_NO,&No,no}
|
||||
@stock{wxID_OK,&OK,ok}
|
||||
@stock{wxID_OPEN,&Open...,open}
|
||||
@stock{wxID_PASTE,&Paste,paste}
|
||||
@stock{wxID_PREFERENCES,&Preferences,preferences}
|
||||
@stock{wxID_PREVIEW,Print previe&w,print-preview}
|
||||
@stock{wxID_PRINT,&Print...,print}
|
||||
@stock{wxID_PROPERTIES,&Properties,properties}
|
||||
@stock{wxID_REDO,&Redo,redo-ltr}
|
||||
@stock{wxID_REFRESH,Refresh,refresh}
|
||||
@stock{wxID_REMOVE,Remove,remove}
|
||||
@stock{wxID_REPLACE,Rep&lace...,find-and-replace}
|
||||
@stock{wxID_REVERT_TO_SAVED,Revert to Saved,revert-to-saved-ltr}
|
||||
@stock{wxID_SAVE,&Save,save}
|
||||
@stock{wxID_SAVEAS,Save &As...,save-as}
|
||||
@stock{wxID_SELECTALL,Select &All,select-all}
|
||||
@stock{wxID_SELECT_COLOR,&Color,select-color}
|
||||
@stock{wxID_SELECT_FONT,&Font,select-font}
|
||||
@stock{wxID_SORT_ASCENDING,&Ascending,sort-ascending}
|
||||
@stock{wxID_SORT_DESCENDING,&Descending,sort-descending}
|
||||
@stock{wxID_SPELL_CHECK,&Spell Check,spell-check}
|
||||
@stock{wxID_STOP,&Stop,stop}
|
||||
@stock{wxID_STRIKETHROUGH,&Strikethrough,strikethrough}
|
||||
@stock{wxID_TOP,&Top,goto-top}
|
||||
@stock{wxID_UNDELETE,Undelete,undelete-ltr}
|
||||
@stock{wxID_UNDERLINE,&Underline,underline}
|
||||
@stock{wxID_UNDO,&Undo,undo-ltr}
|
||||
@stock{wxID_UNINDENT,&Unindent,unindent-ltr}
|
||||
@stock{wxID_UP,&Up,go-up}
|
||||
@stock{wxID_YES,&Yes,yes}
|
||||
@stock{wxID_ZOOM_100,&Actual Size,zoom-100}
|
||||
@stock{wxID_ZOOM_FIT,Zoom to &Fit,zoom-fit}
|
||||
@stock{wxID_ZOOM_IN,Zoom &In,zoom-in}
|
||||
@stock{wxID_ZOOM_OUT,Zoom &Out,zoom-out}
|
||||
@endDefList
|
||||
|
||||
Note that some of the IDs listed above also have a stock accelerator and an
|
||||
|
@@ -276,7 +276,7 @@ library:
|
||||
@itemdef{wxUSE_LIBSDL, Use SDL for wxSound implementation.}
|
||||
@itemdef{wxUSE_PLUGINS, See also wxUSE_LIBSDL.}
|
||||
@itemdef{wxUSE_UNIX, Enabled on Unix Platform.}
|
||||
@itemdef(wxUSE_XTEST, Use XTest extension.}
|
||||
@itemdef{wxUSE_XTEST, Use XTest extension.}
|
||||
@endDefList
|
||||
|
||||
|
||||
@@ -327,7 +327,7 @@ library:
|
||||
@itemdef{wxUSE_DC_CACHEING, cache temporary wxDC objects.}
|
||||
@itemdef{wxUSE_DDE_FOR_IPC, See wx/ipc.h file.}
|
||||
@itemdef{wxUSE_DPI_AWARE_MANIFEST, Set the DPI awareness of the application
|
||||
(0=none, 1=system, 2=per-monitor. Used by CMake and when wxUSE_RC_MANIFEST is enabled.}
|
||||
(0=none, 1=system, 2=per-monitor). Used by CMake and when wxUSE_RC_MANIFEST is enabled.}
|
||||
@itemdef{wxUSE_ENH_METAFILE, Use wxEnhMetaFile.}
|
||||
@itemdef{wxUSE_HOTKEY, Use wxWindow::RegisterHotKey() and wxWindow::UnregisterHotKey}
|
||||
@itemdef{wxUSE_INKEDIT, Use InkEdit library. Related to Tablet PCs.}
|
||||
|
@@ -187,7 +187,7 @@ e.g. if you use `AC_CONFIG_MACRO_DIRS([m4])`).
|
||||
|
||||
For applications using Microsoft Visual Studio IDE, simply add the provided
|
||||
`wxwidgets.props` property sheet file to your project as explained in the
|
||||
[instructions](@ref #msw_build_apps) and build the project as usual.
|
||||
[instructions](@ref msw_build_apps) and build the project as usual.
|
||||
|
||||
|
||||
### Other IDEs
|
||||
@@ -202,4 +202,4 @@ If you use another IDE, under Unix you should run `wx-config --cxxflags` and
|
||||
`wx-config --libs` commands separately and copy-and-paste their output to the
|
||||
"Additional preprocessor options" and "Additional linker options" fields in
|
||||
your IDE, respectively. Under MSW systems you need to configure the IDE using
|
||||
the instructions in the ["manual setup"](@ref #msw_build_apps) section.
|
||||
the instructions in the ["manual setup"](@ref msw_build_apps) section.
|
||||
|
@@ -6,31 +6,31 @@ wxQT uses the same techniques like other ports to wrap the Qt toolkit classes in
|
||||
|
||||
### Current (original) Approach
|
||||
|
||||
An '''internal pointer m_qtWindow''' in wxWindow holds the reference to the QWidget (or derived) counterpart, and is accessible through the virtual method '''GetHandle'''.
|
||||
This pointer and other window styles are set up in the '''PostCreation''' method that must be called by the derived classes (mostly controls) to initialize the widget correctly.
|
||||
An internal pointer `m_qtWindow` in wxWindow holds the reference to the QWidget (or derived) counterpart, and is accessible through the virtual method `GetHandle`.
|
||||
This pointer and other window styles are set up in the `PostCreation` method that must be called by the derived classes (mostly controls) to initialize the widget correctly.
|
||||
Not doing so will cause painting and deletion issues, as the base class will not know how to handle the Qt widget.
|
||||
wxControl even provides a protected method '''QtCreateControl''' that will do the common initialization (including post creation step, moving, sizing, etc., and calling the base to add the child to the parent).
|
||||
wxControl even provides a protected method `QtCreateControl` that will do the common initialization (including post creation step, moving, sizing, etc., and calling the base to add the child to the parent).
|
||||
|
||||
'''Warning:''' Take care of not calling any function that can raise an assertion before `PostCreation`, for example wxFAIL_MSG, as it will interrupt the normal initialization, hence the later cleanup will crash.
|
||||
**Warning**: Take care of not calling any function that can raise an assertion before `PostCreation`, for example wxFAIL_MSG, as it will interrupt the normal initialization, hence the later cleanup will crash.
|
||||
For example, this issue was caused by WXValidateStyle in wxCheckBox::Create, that was "failing silently" in unit tests, and then raising segmentation faults when the object was later deleted (as Qt checkbox counterpart was never being deleted due the aborted initialization).
|
||||
|
||||
Many controls have also other pointers to allow to map different sub-widgets and other features.
|
||||
|
||||
### New (tentative) Approach
|
||||
|
||||
In the other end, Top Level Windows (frames and dialogs) '''uses directly the internal window pointer''', doing a static cast to return the correct type for GetHandle, avoiding multilevel pointer hierarchies.
|
||||
In the other end, Top Level Windows (frames and dialogs) uses directly the internal window pointer, doing a static cast to return the correct type for GetHandle, avoiding multilevel pointer hierarchies.
|
||||
This would be the ideal solution, but not all classes could be mapped 1:1 and that could introduce potential issues (i.e. invalid static casts) and more boilerplate due to additional specific accessor methods.
|
||||
|
||||
For a longer discussion of pro and cons, see [PR#43 comments](https://github.com/reingart/wxWidgets/pull/43)
|
||||
|
||||
Note that some special cases are '''not real windows''' like the `wxTabFrame` (AUI), so they don't set the internal pointer and hence drawing methods should not be used at all.
|
||||
Note that some special cases are not real windows like the `wxTabFrame` (AUI), so they don't set the internal pointer and hence drawing methods should not be used at all.
|
||||
|
||||
### Scroll Areas
|
||||
|
||||
In both approaches, special care should be taken with scrolling areas, as Qt manages this ones slightly different to wxWidgets.
|
||||
'''QtGetScrollBarsContainer''' should be reimplemented to return the QScrollArea widget or similar (where the scroll bars are places).
|
||||
`QtGetScrollBarsContainer` should be reimplemented to return the QScrollArea widget or similar (where the scroll bars are places).
|
||||
|
||||
That widget should implement a '''viewport()''' (Qt idiom to differentiate the draw-able area).
|
||||
That widget should implement a `viewport()` (Qt idiom to differentiate the draw-able area).
|
||||
Attempts to paint directly to the scroll area itself will fail.
|
||||
This is already handled in the QtHandlePaintEvent wxWindowQt method.
|
||||
|
||||
@@ -47,15 +47,15 @@ Many wxWidgets classes maps 1:1 to Qt ones, but there are some exceptions are (1
|
||||
|
||||
### Private helpers
|
||||
|
||||
Qt objects needs to be sub-classed to '''re-implement events''' and '''connect signals''' (more info in [wx-dev forum](https://groups.google.com/d/msg/wx-dev/UpkJMnT3V2o/hIoJwT3qpw4J)):
|
||||
Qt objects needs to be sub-classed to re-implement events and connect signals (more info in [wx-dev forum](https://groups.google.com/d/msg/wx-dev/UpkJMnT3V2o/hIoJwT3qpw4J)):
|
||||
|
||||
* Qt events are just virtual methods that needs to be overridden by the derived classes to handle them
|
||||
* Qt signals can be connected to QObject members or simple functions (thanks to Qt5 new signal slot syntax)
|
||||
|
||||
The approach chosen was to use templates to help inherit QObject's (QWidget), providing a common base to handle events and signal infrastructure:
|
||||
|
||||
* '''wxQtSignalHandler< wxWindow >:''' allows emitting wx events for Qt events & signals. This should be used used for all QObjects derivatives that are not widgets, for example QAction (used for shortcut / accelerators).
|
||||
* '''wxQtEventSignalHandler< QWidget, wxWindow >:''' derived from `wxQtSignalHandler`, also handles basic events (change, focus, mouse, keyboard, paint, close, etc.). This should be used for all QWidget derivatives (controls, top level windows, etc.)
|
||||
* `wxQtSignalHandler< wxWindow >`: allows emitting wx events for Qt events & signals. This should be used used for all QObjects derivatives that are not widgets, for example QAction (used for shortcut / accelerators).
|
||||
* `wxQtEventSignalHandler< QWidget, wxWindow >`: derived from `wxQtSignalHandler`, also handles basic events (change, focus, mouse, keyboard, paint, close, etc.). This should be used for all QWidget derivatives (controls, top level windows, etc.)
|
||||
|
||||
### Delete later
|
||||
|
||||
@@ -63,7 +63,7 @@ Both templates also have some safety checks to avoid invalid spurious access to
|
||||
|
||||
This is due that in some situations, Qt object could still be referenced in the Qt event queue, so it cannot be removed immediately.
|
||||
|
||||
'''Important:''' Currently wxQT is using Qt's '''deleteLater''' method to avoid this kind of issues.
|
||||
**Important**: Currently wxQT is using Qt's `deleteLater` method to avoid this kind of issues.
|
||||
Please, don't use delete directly except you're confident it will not cause faults or other issues.
|
||||
|
||||
Note that no public wxWidget class should be derived directly from QWidget as they could have different lifespans and other implications to run time type systems (RTTI).
|
||||
@@ -78,7 +78,7 @@ wxQT follows the same conventions used in other wxWidgets ports:
|
||||
* Source code is inside src/qt folder
|
||||
* Headers are inside include/qt folder
|
||||
|
||||
There are also some __WXQT__ guards to enable special features in common / generic code (i.e. event loop, graphic renders, grid)
|
||||
There are also some `__WXQT__` guards to enable special features in common / generic code (i.e. event loop, graphic renders, grid)
|
||||
|
||||
Although some Qt headers are included in public wx headers, this dependencies should be avoided as this could change in the future (decoupling completely the public wxQT headers from Qt).
|
||||
|
||||
@@ -92,148 +92,125 @@ Private headers should be include/qt/private, currently they hold:
|
||||
|
||||
To add a Qt derived class simply put it in a .h file and add the corresponding .cpp file to the build/bakefiles/files.bkl e.g.:
|
||||
|
||||
```
|
||||
<set var="QT_LOWLEVEL_HDR" hints="files">
|
||||
wx/qt/menuitem.h
|
||||
</set>
|
||||
|
||||
<set var="QT_LOWLEVEL_SRC" hints="files">
|
||||
src/qt/menuitem.cpp
|
||||
</set>
|
||||
```
|
||||
<set var="QT_LOWLEVEL_HDR" hints="files">
|
||||
wx/qt/menuitem.h
|
||||
</set>
|
||||
|
||||
<set var="QT_LOWLEVEL_SRC" hints="files">
|
||||
src/qt/menuitem.cpp
|
||||
</set>
|
||||
|
||||
From within of the bakefiles directory, regenerate the autoconf files with:
|
||||
|
||||
```
|
||||
bakefile_gen --formats autoconf
|
||||
```
|
||||
bakefile_gen --formats autoconf
|
||||
|
||||
Generate the 'configure' script in your wxQt root directory with:
|
||||
|
||||
```
|
||||
autoconf
|
||||
```
|
||||
autoconf
|
||||
|
||||
'''IMPORTANT NOTE''': The precompilation step (Qt's moc) is no more needed so the build rule was removed. There is no need to use Q_OBJECT nor Q_SLOTS macros.
|
||||
**IMPORTANT NOTE**: The precompilation step (Qt's moc) is no more needed so the build rule was removed. There is no need to use `Q_OBJECT` nor `Q_SLOTS` macros.
|
||||
|
||||
```
|
||||
// include/wx/qt/menuitem.h
|
||||
// include/wx/qt/menuitem.h
|
||||
|
||||
class wxMenuItem : public wxMenuItemBase
|
||||
{
|
||||
// ...
|
||||
};
|
||||
class wxMenuItem : public wxMenuItemBase
|
||||
{
|
||||
// ...
|
||||
};
|
||||
|
||||
class wxQtAction : public QAction
|
||||
{
|
||||
public:
|
||||
wxQtAction( wxMenuItem *menuItem, const QString &text, QObject *parent );
|
||||
class wxQtAction : public QAction
|
||||
{
|
||||
public:
|
||||
wxQtAction( wxMenuItem *menuItem, const QString &text, QObject *parent );
|
||||
|
||||
private:
|
||||
void OnActionTriggered( bool checked );
|
||||
private:
|
||||
void OnActionTriggered( bool checked );
|
||||
|
||||
private:
|
||||
wxMenuItem *m_menuItem;
|
||||
};
|
||||
```
|
||||
private:
|
||||
wxMenuItem *m_menuItem;
|
||||
};
|
||||
|
||||
### Coding guidelines
|
||||
|
||||
* If you leave out an implementation for whatever reason, then mark it with the wxMISSING_IMPLEMENTATION() macro from wx/qt/utils.h i.e.:
|
||||
|
||||
```
|
||||
void wxSomeClass::SomeMethod()
|
||||
{
|
||||
wxMISSING_IMPLEMENTATION( __FUNCTION__ );
|
||||
}
|
||||
```
|
||||
void wxSomeClass::SomeMethod()
|
||||
{
|
||||
wxMISSING_IMPLEMENTATION( __FUNCTION__ );
|
||||
}
|
||||
|
||||
or if only some implementation is missing like evaluating flags:
|
||||
|
||||
```
|
||||
void wxSomeClass::SomeMethod( unsigned methodFlags )
|
||||
{
|
||||
wxMISSING_IMPLEMENTATION( "methodFlags" );
|
||||
}
|
||||
```
|
||||
or if only some implementation is missing like evaluating flags:
|
||||
|
||||
* To avoid name clashes with a 3rd party library like boost, and due precompilation step was removed, don't use the internal moc keywords 'signals' and 'slots' nor 'SIGNAL' / 'SLOT' macros for 'connect'. Instead, use the '''"New Signal Slot Qt syntax"''':
|
||||
void wxSomeClass::SomeMethod( unsigned methodFlags )
|
||||
{
|
||||
wxMISSING_IMPLEMENTATION( "methodFlags" );
|
||||
}
|
||||
|
||||
```
|
||||
class wxQtClass : public QObject
|
||||
{
|
||||
wxQtClass(): QObject()
|
||||
{
|
||||
connect(this, &QObject::objectNameChanged, this, &wxQtClass::objectNameChanged);
|
||||
}
|
||||
private: // "signal slots":
|
||||
void objectNameChanged();
|
||||
};
|
||||
```
|
||||
* To avoid name clashes with a 3rd party library like boost, and due precompilation step was removed, don't use the internal moc keywords `signals` and `slots` nor `SIGNAL` / `SLOT` macros for `connect`. Instead, use the "New Signal Slot Qt syntax":
|
||||
|
||||
class wxQtClass : public QObject
|
||||
{
|
||||
wxQtClass(): QObject()
|
||||
{
|
||||
connect(this, &QObject::objectNameChanged, this, &wxQtClass::objectNameChanged);
|
||||
}
|
||||
private: // "signal slots":
|
||||
void objectNameChanged();
|
||||
};
|
||||
|
||||
### Naming conventions
|
||||
|
||||
* Global helper classes and global functions should be prefixed with ''''wxQt'''' i.e.:
|
||||
* Global helper classes and global functions should be prefixed with `wxQt` i.e.:
|
||||
|
||||
```
|
||||
class wxQtButton : public QPushButton
|
||||
{
|
||||
}
|
||||
class wxQtButton : public QPushButton
|
||||
{
|
||||
}
|
||||
|
||||
QRect wxQtConvertRect( const wxRect & );
|
||||
```
|
||||
QRect wxQtConvertRect( const wxRect & );
|
||||
|
||||
* Public wxWidgets Qt classes should not use any prefix or suffix, except for special cases, for example:
|
||||
|
||||
```
|
||||
// no prefix/suffix in most clases:
|
||||
class wxButton : public wxButtonBase;
|
||||
// no prefix/suffix in most clases:
|
||||
class wxButton : public wxButtonBase;
|
||||
|
||||
// suffix for consistency with other ports:
|
||||
class wxWindowQt : public wxWindowBase;
|
||||
class wxTopLevelWindowQt : public wxTopLevelWindowBase; // (BTW: avoid using Native)
|
||||
// suffix for consistency with other ports:
|
||||
class wxWindowQt : public wxWindowBase;
|
||||
class wxTopLevelWindowQt : public wxTopLevelWindowBase; // (BTW: avoid using Native)
|
||||
|
||||
// special case (to avoid ambiguity with wxQtSpinBoxBase helper
|
||||
class wxSpinCtrlQt : public wxSpinCtrlBase; // (not a wxQt helper)
|
||||
// special case (to avoid ambiguity with wxQtSpinBoxBase helper
|
||||
class wxSpinCtrlQt : public wxSpinCtrlBase; // (not a wxQt helper)
|
||||
|
||||
// prefix for consistency with other ports:
|
||||
class wxQtDCImpl : public wxDCImpl; // with wxMSWDCImpl, wxGTKDCImpl
|
||||
// prefix for consistency with other ports:
|
||||
class wxQtDCImpl : public wxDCImpl; // with wxMSWDCImpl, wxGTKDCImpl
|
||||
|
||||
```
|
||||
* Internal methods in publicly visible classes (like wxWindowQt) should be prefixed with ''''Qt'''' i.e.:
|
||||
* Internal methods in publicly visible classes (like wxWindowQt) should be prefixed with `Qt` i.e.:
|
||||
|
||||
```
|
||||
class wxWindowQt : public wxWindowBase
|
||||
{
|
||||
public:
|
||||
QWidget *QtGetContainer() const;
|
||||
};
|
||||
```
|
||||
class wxWindowQt : public wxWindowBase
|
||||
{
|
||||
public:
|
||||
QWidget *QtGetContainer() const;
|
||||
};
|
||||
|
||||
* Internal private instance variables (like in wxWindowQt) should be prefixed with ''''m_qt'''' i.e.:
|
||||
* Internal private instance variables (like in wxWindowQt) should be prefixed with `'m_qt` i.e.:
|
||||
|
||||
```
|
||||
class wxWindow : public wxWindowBase
|
||||
{
|
||||
private:
|
||||
QWidget *m_qtWindow;
|
||||
QScrollArea *m_qtContainer;
|
||||
QPicture *m_qtPicture;
|
||||
QPainter *m_qtPainter;
|
||||
};
|
||||
```
|
||||
class wxWindow : public wxWindowBase
|
||||
{
|
||||
private:
|
||||
QWidget *m_qtWindow;
|
||||
QScrollArea *m_qtContainer;
|
||||
QPicture *m_qtPicture;
|
||||
QPainter *m_qtPainter;
|
||||
};
|
||||
|
||||
* Qt derived names should use mixedCase (in helper methods, for example for 'clicked' signal, following the original Qt name), but wx methods should be CamelCase (i.e. 'Emit'):
|
||||
|
||||
```
|
||||
void wxQtPushButton::clicked( bool WXUNUSED(checked) )
|
||||
{
|
||||
wxAnyButton *handler = GetHandler();
|
||||
if ( handler )
|
||||
{
|
||||
wxCommandEvent event( wxEVT_BUTTON, handler->GetId() );
|
||||
EmitEvent( event );
|
||||
}
|
||||
}
|
||||
```
|
||||
* Qt derived names should use mixedCase (in helper methods, for example for `clicked` signal, following the original Qt name), but wx methods should be CamelCase (i.e. `Emit`):
|
||||
|
||||
void wxQtPushButton::clicked( bool WXUNUSED(checked) )
|
||||
{
|
||||
wxAnyButton *handler = GetHandler();
|
||||
if ( handler )
|
||||
{
|
||||
wxCommandEvent event( wxEVT_BUTTON, handler->GetId() );
|
||||
EmitEvent( event );
|
||||
}
|
||||
}
|
||||
|
@@ -16,7 +16,7 @@ IMPORTANT NOTE:
|
||||
example: wxX11 2.8.0, gcc 2.95.4, Redhat 6.2
|
||||
|
||||
First steps {#x11_first_steps}
|
||||
-----------
|
||||
===========
|
||||
|
||||
- Download wxX11-x.y.z.tgz, where x.y.z is the version number.
|
||||
Download documentation in a preferred format, such as
|
||||
|
@@ -9,9 +9,8 @@
|
||||
|
||||
/**
|
||||
Flags for wxColour -> wxString conversion (see wxColour::GetAsString).
|
||||
|
||||
@{
|
||||
*/
|
||||
//@{
|
||||
enum {
|
||||
wxC2S_NAME = 1, // return colour name, when possible
|
||||
wxC2S_CSS_SYNTAX = 2, // return colour in rgb(r,g,b) syntax
|
||||
|
@@ -18,8 +18,6 @@
|
||||
void wxAbort();
|
||||
|
||||
/**
|
||||
@def wxDEBUG_LEVEL
|
||||
|
||||
Preprocessor symbol defining the level of debug support available.
|
||||
|
||||
This symbol is defined to 1 by default meaning that asserts are compiled in
|
||||
@@ -40,8 +38,6 @@ void wxAbort();
|
||||
#define wxDEBUG_LEVEL
|
||||
|
||||
/**
|
||||
@def __WXDEBUG__
|
||||
|
||||
Compatibility macro indicating presence of debug support.
|
||||
|
||||
This symbol is defined if wxDEBUG_LEVEL is greater than 0 and undefined
|
||||
@@ -275,8 +271,6 @@ typedef void (*wxAssertHandler_t)(const wxString& file,
|
||||
void wxDisableAsserts();
|
||||
|
||||
/**
|
||||
@def wxDISABLE_ASSERTS_IN_RELEASE_BUILD
|
||||
|
||||
Use this macro to disable asserts in release build when not using
|
||||
wxIMPLEMENT_APP().
|
||||
|
||||
|
@@ -47,7 +47,7 @@ const char wxDirDialogNameStr[] = "wxDirCtrl";
|
||||
@style{wxDD_CHANGE_DIR}
|
||||
Change the current working directory to the directory chosen by the
|
||||
user.
|
||||
@note This flag cannot be used with the @c wxDD_MULTIPLE style.
|
||||
This flag cannot be used with the @c wxDD_MULTIPLE style.
|
||||
@style{wxDD_MULTIPLE}
|
||||
Allow the user to select multiple directories.
|
||||
This flag is only available since wxWidgets 3.1.4
|
||||
|
@@ -91,9 +91,6 @@ public:
|
||||
Initial size.
|
||||
@param name
|
||||
Control name.
|
||||
|
||||
@return @true if the control was successfully created or @false if
|
||||
creation failed.
|
||||
*/
|
||||
|
||||
wxFileCtrl(wxWindow* parent, wxWindowID id,
|
||||
@@ -107,6 +104,9 @@ public:
|
||||
|
||||
/**
|
||||
Create function for two-step construction. See wxFileCtrl() for details.
|
||||
|
||||
@return @true if the control was successfully created or @false if
|
||||
creation failed.
|
||||
*/
|
||||
bool Create(wxWindow* parent, wxWindowID id,
|
||||
const wxString& defaultDirectory = wxEmptyString,
|
||||
|
@@ -58,7 +58,6 @@
|
||||
Windows 7 and later and the dock icon under macOS, ignored under
|
||||
the other platforms.
|
||||
This flag is only available in wxWidgets 3.1.0 and later.
|
||||
|
||||
@endStyleTable
|
||||
|
||||
@library{wxcore}
|
||||
|
@@ -350,7 +350,7 @@ public:
|
||||
|
||||
@since 3.1.4
|
||||
*/
|
||||
virtual void MSWSetTabStops(const wxVector<int>& tabStops);
|
||||
virtual bool MSWSetTabStops(const wxVector<int>& tabStops);
|
||||
|
||||
// NOTE: Phoenix needs to see the implementation of pure virtuals so it
|
||||
// knows that this class is not abstract.
|
||||
|
@@ -151,7 +151,7 @@ enum
|
||||
2.8 was removed in wxWidgets 3.1, meaning for wxWidgets 3.1+ wxOSX uses the generic
|
||||
implementation for all modes.
|
||||
|
||||
@subsection column_order Column Ordering
|
||||
@section column_order Column Ordering
|
||||
|
||||
By default, the columns of a list control appear on the screen in order
|
||||
of their indices, i.e. column 0 appears first, then column 1 next,
|
||||
|
@@ -952,7 +952,7 @@ public:
|
||||
@return
|
||||
@true if the command was handled, @false otherwise.
|
||||
|
||||
@onlyfor{wxMSW}
|
||||
@onlyfor{wxmsw}
|
||||
|
||||
@since 3.1.5
|
||||
*/
|
||||
|
@@ -192,7 +192,6 @@ public:
|
||||
*/
|
||||
wxPenInfo& HighQuality();
|
||||
|
||||
wxPenInfo& LowQuality();
|
||||
wxColour GetColour() const;
|
||||
wxBitmap GetStipple() const;
|
||||
wxPenStyle GetStyle() const;
|
||||
@@ -202,7 +201,7 @@ public:
|
||||
int GetDashes(wxDash **ptr);
|
||||
int GetDashCount() const;
|
||||
wxDash* GetDash() const;
|
||||
bool IsTransparent() const;
|
||||
bool IsTransparent() const;
|
||||
int GetWidth() const;
|
||||
};
|
||||
|
||||
|
@@ -309,7 +309,7 @@ public:
|
||||
WebKit on macOS and GTK. This allows the correct viewing of complex pages with
|
||||
JavaScript and CSS.
|
||||
|
||||
@section descriptions Backend Descriptions
|
||||
@section backend_descriptions Backend Descriptions
|
||||
|
||||
This class supports using multiple backends, corresponding to different
|
||||
implementations of the same functionality. Under macOS and Unix platforms
|
||||
@@ -771,8 +771,8 @@ public:
|
||||
Add a script message handler with the given name.
|
||||
|
||||
To use the script message handler from javascript use
|
||||
@c window.<name>.postMessage(<messageBody>) where <name> corresponds the value
|
||||
of the name parameter. The <messageBody> will be available to the application
|
||||
@c `window.<name>.postMessage(<messageBody>)` where `<name>` corresponds the value
|
||||
of the name parameter. The `<messageBody>` will be available to the application
|
||||
via a @c wxEVT_WEBVIEW_SCRIPT_MESSAGE_RECEIVED event.
|
||||
|
||||
Sample C++ code receiving a script message:
|
||||
|
@@ -50,8 +50,6 @@ public:
|
||||
The first of the range of IDs to unreserve.
|
||||
@param count
|
||||
The number of sequential IDs to unreserve.
|
||||
|
||||
@return The value of the first ID in the sequence, or wxID_NONE.
|
||||
*/
|
||||
static void UnreserveId(wxWindowID id, int count = 1);
|
||||
};
|
||||
|
Reference in New Issue
Block a user