Compare commits

..

179 Commits

Author SHA1 Message Date
Bryan Petty
e1c04de272 This commit was manufactured by cvs2svn to create tag
'BEFORE_ON_PAINT_CHANGE'.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/tags/BEFORE_ON_PAINT_CHANGE@8362 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-09-14 20:10:34 +00:00
Stefan Csomor
30a70b29ce merge of wxMac into main repository (Carbon Precompiled Headers)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7993 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-09 10:57:08 +00:00
Stefan Csomor
4a13f6e37e merge of wxMac into main repository
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7992 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-09 10:54:44 +00:00
Stefan Csomor
2040ececde merge of wxMac into main repository
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7991 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-09 10:44:37 +00:00
Vadim Zeitlin
0e74909dd1 no changes, testing cvs logging
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7990 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-09 10:41:24 +00:00
Vadim Zeitlin
089e459b74 no changes, testing cvs logging
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7989 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-09 10:40:42 +00:00
Stefan Csomor
7d610b90ff merge of wxMac into main repository
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7988 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-09 10:36:50 +00:00
Vadim Zeitlin
f71c3b49e2 use CVSROOT/modules now instead
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7987 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-09 10:24:59 +00:00
Stefan Csomor
2c5d45edb5 moved code fix from 3.5.5 into this release
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7986 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-09 10:15:58 +00:00
Stefan Csomor
2f1ae41432 merge with latest sources
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7985 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-09 10:10:14 +00:00
Jouk Jansen
57681e5bfd Committing in .
Modified Files:
 	wxWindows/src/common/descrip.mms
 	wxWindows/src/generic/descrip.mms
 	wxWindows/src/unix/utilsunx.cpp

 Updates for VMS

----------------------------------------------------------------------


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7984 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-09 09:51:03 +00:00
Stefan Csomor
1eaf19628c docs for building with the latest headers and carbon/macosX targets
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7983 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-09 08:54:10 +00:00
Julian Smart
9ec98f7c7f Typo correction
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7982 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-09 06:25:38 +00:00
Julian Smart
df613907d0 Changed default value for eliminateBorders (MakeExtendedStyle)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7977 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-08 12:21:14 +00:00
Michael Bedward
695a326318 Added Paul Gamman's patch for 0 as FALSE in bool editor and renderer.
Fixed bug in grid selection code that caused crashes (e.g. when grid
had just 1 col and mode was row selection).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7976 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-08 10:43:16 +00:00
Julian Smart
a98c006d8d Minor update
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7975 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-08 08:41:55 +00:00
Bryan Petty
3ca6a5f046 second merge of the 2.2 branch (RL)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7973 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-08 06:11:51 +00:00
Julian Smart
8fb3bfe20f Added first stab at GetBoundingRect for generic tree control
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7969 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-07 14:42:48 +00:00
Julian Smart
2736b3ce6d Mingw32 fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7968 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-06 17:56:21 +00:00
Václav Slavík
3e14ad2f45 fixed some bugs in wxrc compiler
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7967 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-06 16:52:00 +00:00
Václav Slavík
0ceae93229 removed debug message ; improved resource loading logic
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7966 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-06 16:51:54 +00:00
Václav Slavík
2ada7c652c wxrcedit improvements
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7965 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-06 16:51:32 +00:00
Julian Smart
ad90972f27 Some BC++ fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7960 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-06 08:18:52 +00:00
Kevin Hock
aec4371660 support for drawing arbitary object on DC's
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7958 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-06 05:55:39 +00:00
Michael Bedward
33fed83514 Minor compilation fixes for Borland.
Changed tabs to spaces.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7957 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-06 03:15:14 +00:00
Václav Slavík
0e67e9e2d0 fixed bug in wxrcedit makefile
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7956 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-05 21:26:32 +00:00
Václav Slavík
266527ec60 added minsize variable for sizers and sizeritems
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7955 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-05 21:25:54 +00:00
Václav Slavík
29b5f2cc19 got rid of wxXmlResourceHandler::CheckPlatform, the check is now done while loading xml file ; also fixed bug in XMLID macro
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7954 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-05 21:25:20 +00:00
Václav Slavík
f737d3967f got rid of wxXmlResourceHandler::CheckPlatform, the check is now done while loading xml file
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7953 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-05 21:25:07 +00:00
Julian Smart
27316302a4 Generic tree control text editor now has simple boder (no 3D effect)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7934 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-04 15:35:15 +00:00
Julian Smart
233058c7ab Generic tree control fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7933 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-04 15:23:28 +00:00
Julian Smart
941830cbe5 Renamed generic tree control.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7932 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-04 14:24:01 +00:00
Julian Smart
3bd380a388 Added settings.h include
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7931 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-04 14:09:39 +00:00
Julian Smart
484523cf52 Modified generic wxTreeCtrl to work under non-Unix platforms simultaneously
with the native control.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7930 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-04 13:59:45 +00:00
Michael Bedward
b1944ebcd0 Removed redundant m_left etc. variables
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7928 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-04 05:22:34 +00:00
Václav Slavík
b64de91622 fixed low resolution problem with wxPostScriptDC
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7926 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-03 21:43:30 +00:00
Julian Smart
63da7df701 Added ability to call wxWindow::OnPaint under Windows (experimental).
Added wxTR_NO_LINES to remove lines from tree control (MSW only).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7925 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-03 16:11:51 +00:00
Julian Smart
bfc38e4363 Corrected resource type
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7919 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-02 14:59:10 +00:00
Julian Smart
8062a6ab7b Made some member variables protected so derived classes can use them
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7918 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-02 14:45:05 +00:00
Julian Smart
9e85f5ec6c Removed winmm.dll from delayload list.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7913 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-08-02 06:35:58 +00:00
Václav Slavík
d44523b1e0 fixed bug in APPEXTRALIBS
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7908 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-31 22:04:39 +00:00
Václav Slavík
a793c17b6c added binz handler
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7906 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-31 22:03:55 +00:00
Václav Slavík
4b0ca8b999 added wxListBox handling
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7905 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-31 22:03:49 +00:00
Unknown (NI)
f6fb552e5d added null pointer check in DoGetSize functions; else programs crash when resizing list heads
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7902 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-30 08:42:13 +00:00
Unknown (NI)
0bc6abf126 added a wrapper class for opengl contexts (like that used in the gtk and msw
ports)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7901 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-30 03:32:39 +00:00
Unknown (NI)
2695b17409 added a simple wrapper class for shared opengl contexts (like in the gtk and msw
ports)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7900 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-30 03:30:37 +00:00
Julian Smart
85d03040fc FloodFill correction, wxQuantize correction
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7895 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-29 17:25:36 +00:00
Julian Smart
2f382cc6be Added version of Quantize that manages the palette itself
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7894 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-29 13:41:56 +00:00
Julian Smart
5e5437e00b Added Set/Get/HasOption members and moved palette to ref data class.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7893 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-29 11:44:57 +00:00
Julian Smart
3f4fc7967b Added wxQuantize, wxSplashScreen, wxEffects & added palette to wxImage
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7892 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-28 17:53:25 +00:00
Michael Bedward
cbb4b02f09 Updated docs for wxGrid::SelectBlock
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7891 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-28 05:21:17 +00:00
Michael Bedward
c909783630 Renamed existing wxGrid::SelectBlock to HighlightBlock.
Added new wxGrid::SelectBlock that does what the name suggests
(consistent with the other SelectXXX functions).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7890 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-28 05:12:32 +00:00
Václav Slavík
a6a997a68d radiobox default dimension changed from 0 to 1
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7884 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-27 18:53:23 +00:00
Václav Slavík
11b6e0c533 fixed setting value in spinctrl
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7883 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-27 18:53:13 +00:00
Václav Slavík
75e0bd4460 added more controls
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7882 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-27 18:53:04 +00:00
Václav Slavík
ab13d1c58f added notebooks support; added not_supported variable type
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7881 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-27 18:52:12 +00:00
Václav Slavík
45a248176c added XMLCTRL() macro for fast access to dialog controls
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7880 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-27 18:51:28 +00:00
Václav Slavík
0bed1ceef8 notebooksizer is now property of notebook, not special kind of sizer
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7879 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-27 18:51:07 +00:00
Julian Smart
f9c165b1d6 Generic dirctrl corrections
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7878 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-27 16:34:51 +00:00
Julian Smart
d62653e63f Updated wxMotif files.lst
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7877 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-27 15:12:56 +00:00
Julian Smart
55b88634eb Updated file list to include dirctrlg.cpp
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7876 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-27 15:11:47 +00:00
Václav Slavík
b0f853260e recommited binary files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7873 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-27 09:38:40 +00:00
Václav Slavík
af2251f16f oops, forgot -kb
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7872 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-27 09:37:32 +00:00
Václav Slavík
4ee0ff3bd6 standardized projects
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7871 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-27 09:36:50 +00:00
Václav Slavík
7f3938321d now uses resources, not xpm files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7870 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-27 09:35:42 +00:00
Václav Slavík
f443043db0 fixed typo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7869 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-27 09:35:35 +00:00
Václav Slavík
1ad83f6b37 added WXDLLEXPORT
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7868 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-27 09:35:16 +00:00
Michael Bedward
ae9cab0676 Fix for bug where the cell highlight was not cleared from a cell
that was only partially in view.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7866 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-27 06:37:41 +00:00
Michael Bedward
a0948e2723 Added another hack to the collection of hacks in
wxGridCellTextEditor::SetSize so that the caret will show
for cells in the first row.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7865 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-27 06:23:33 +00:00
Michael Bedward
0767cb6f44 Changed wxGridCellAttr::HasAlignment to treat values of -1 as no
alignment because wxALIGN_LEFT and wxALIGN_TOP are 0.

Updated griddemo.cpp to use correct alignment defs.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7864 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-27 04:09:21 +00:00
Michael Bedward
4c7277db42 Changed cell and label alignment functions to use wxALIGN_XXX defs.
SetXXXAlignment() functions still accept wxTOP, wxLEFT etc
for (some) backwards compatibility.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7863 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-27 01:57:24 +00:00
Michael Bedward
5c69031cd1 Some more wxGrid function docs.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7862 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-27 01:29:07 +00:00
Václav Slavík
35a0184e7d xmlres: added support for wxMSW
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7861 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-26 21:49:18 +00:00
Václav Slavík
10461e195f standardized syntax of bool properties: '1' means true, anything else false
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7860 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-26 21:34:36 +00:00
Václav Slavík
d3e41b770e changed content of checklist, choice, combobox, radiobox from <children> to <content>
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7859 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-26 21:34:26 +00:00
Václav Slavík
78cb10ef7d visual enhancements of wxrcedit
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7858 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-26 21:34:19 +00:00
Václav Slavík
fccd6cdc31 added handling of wxGridSizer and wxFlexGridSizer
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7857 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-26 21:34:05 +00:00
Václav Slavík
55db6a69ce added wxMSW support to wxrcedit
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7856 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-26 21:33:23 +00:00
Václav Slavík
4ccd46a29e fixed typo in wxStaticBitmap wxrcedit definition
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7855 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-26 21:33:10 +00:00
Václav Slavík
dfc0e3fb9a xmlres: added support for wxMSW
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7854 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-26 21:32:47 +00:00
Václav Slavík
1cfae2e074 added xmlres format docs (uncomplete)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7853 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-26 21:32:26 +00:00
Václav Slavík
1d43cb9e7f changed shared library version number to 2.3
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7852 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-26 21:31:39 +00:00
David Webster
07d7f20b50 fix for VA 3.0 vs 4.0
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7851 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-26 20:06:24 +00:00
Julian Smart
ad9cd15cb0 Better behaviour on NT (no dialogs when searching drives)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7844 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-26 14:08:39 +00:00
Julian Smart
031dfec8d4 WIN32 compilation of wxrc, wxrcedit
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7841 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-26 12:40:49 +00:00
Julian Smart
1126585b76 Corrected makefile target bug
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7840 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-26 11:53:38 +00:00
Julian Smart
df801fc6d4 Added additional wxXML makefiles and projects files; added some
flexibility to VC++ make include files


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7839 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-26 11:43:54 +00:00
Julian Smart
e45212eb04 Not sure why this file is being committed (CVS glitch?)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7837 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-26 08:50:18 +00:00
Václav Slavík
fd433c2e31 added xml resources readme
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7835 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-25 18:48:13 +00:00
Václav Slavík
3fa4bd0e78 wxGTK compilation fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7834 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-25 18:47:58 +00:00
Václav Slavík
3509d340e2 wxGTK compilation fix (undefined wxDirDialogDefaultFolderStr)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7833 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-25 18:47:48 +00:00
Václav Slavík
3112490359 gtk 1.2.8 compilation fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7832 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-25 18:47:29 +00:00
Václav Slavík
56d2f75071 added XML resources library
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7831 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-25 18:47:21 +00:00
Mark Johnson
ca7408bd9a dbbrowse.cpp dbgrid.cpp dbtree.cpp doc.cpp pgmctrl.cpp
dbbrowse.dsp dbbrowse.dsw dummy.cpp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7828 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-25 12:15:55 +00:00
Guillermo Rodriguez Garcia
54ca0d120a Modified mouse ENTER/LEAVE events so that they also
carry information about the state of the mouse buttons
(they only had info about SHIFT and CTRL keys so far)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7825 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-25 06:27:45 +00:00
Ove Kaaven
3419e8e7bd Fix gtk+ 1.2 compilation...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7824 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-24 23:44:17 +00:00
Julian Smart
5e679c4070 Fixed wxMotif breakage, sorry!
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7823 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-24 19:55:22 +00:00
Julian Smart
f77034779a Added insertion point code to wxComboBox
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7822 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-24 15:26:59 +00:00
Ove Kaaven
3e61dfb0e8 Try to include windows.h.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7821 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-24 13:47:19 +00:00
Guillermo Rodriguez Garcia
0a1c1e6214 Fixed broken compilation due to Ove's last nice changes :-(
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7820 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-24 13:28:01 +00:00
Guillermo Rodriguez Garcia
bb8a8dc5f7 Corrected comment about Norlander headers (no changes to the code itself)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7818 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-24 11:55:34 +00:00
Julian Smart
2a2b997f07 Updated version number.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7817 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-24 09:44:46 +00:00
Julian Smart
012286eb3b Corrected test for _vsnprintf
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7815 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-24 09:01:57 +00:00
Michael Bedward
632efa475b Changes as per patch from Paul Gammans to fix bug with edit control
handling.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7813 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-24 06:16:49 +00:00
Michael Bedward
64c13219b0 Had accidentally added gridwork.tex to the docs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7812 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-24 04:58:40 +00:00
Julian Smart
51a58d8b4b Added wxGenericDirCtrl, wxGenericDirDialog and associated icons.
Altered dialog sample to show generic dir dialog.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7811 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-23 19:10:27 +00:00
Julian Smart
4567f2b2c6 Updated project and makefiles (VC++) to be more consistent.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7809 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-23 14:26:37 +00:00
Julian Smart
74afbadc17 Cygwin 1.1 mods (main branch)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7808 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-22 14:03:36 +00:00
David Webster
494a19d6d9 fixes for trailing commas for OS/2 from WX_2_2_BRANCH
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7806 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-21 20:45:20 +00:00
David Webster
71c97a89fa fixes for S_IFMT for OS/2 from WX_2_2_BRANCH
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7805 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-21 20:44:39 +00:00
Julian Smart
a55e0ebc56 Corrected some combobox-related code, changed ordering and added wxSpinCtrl
support as per bug report


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7804 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-21 15:43:14 +00:00
Unknown (NI)
264de0cc03 moved check for x include/library paths from motif configuration section to main scope of confiure.in; added opengl libs to freebsd target if configured with opengl support
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7802 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-21 10:37:26 +00:00
Unknown (NI)
919ae91ad7 uses now the platform independant attributes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7801 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-21 10:16:53 +00:00
Michael Bedward
03817a5e24 Trying again to add these files to the main trunk.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7800 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-21 08:30:47 +00:00
Michael Bedward
78c49c5829 First batch of work for new wxGrid docs.
Very incomplete - still lots to do but will commit more
next week.  Please don't edit yet without letting me know
via the list.

 - Michael


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7799 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-21 08:24:18 +00:00
Michael Bedward
d82323930c Added ForceRefresh() to request immediate repainting of a grid.
Calling Refresh() doesn't do this because of our minimal OnPaint
handler (to reduce screen flicker).

Setting of position coords for wxGridEvents now takes account of
row and col label sizes.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7798 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-21 06:51:22 +00:00
Guillermo Rodriguez Garcia
47af912426 Changes for VISAGECPP (use _ftime to avoid clock skew bug)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7797 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-21 05:32:07 +00:00
Unknown (NI)
aff5d59148 another small error
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7796 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-20 19:18:38 +00:00
Unknown (NI)
e6afccba51 no comment :)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7795 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-20 18:18:18 +00:00
Unknown (NI)
83918cccc9 umph, had made a dangerous mistake
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7794 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-20 18:14:23 +00:00
Unknown (NI)
f48d169c4a applied the patch by Garrick Meeker
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7793 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-20 17:31:40 +00:00
Unknown (NI)
0f8d11dc8d Applied the patch by Garrick Meeker
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7792 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-20 17:27:25 +00:00
Ove Kaaven
8943b4030c Really cheesy attempt to make wxDC::DrawText() utilize gtk+ 1.3.1's
multilingual text rendering engine to draw Unicode text (doubt this works
on wxMemoryDC, but at least it makes the generic listctrl show unicode text).

But I suspect that the text engine really should be abstracted at
a higher level in wxWindows...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7788 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-19 10:44:14 +00:00
Ove Kaaven
a2d8ce854e There's no ONSCREEN/OFFSCREEN flag in gtk+ 1.3.1, so I had to #ifndef
them out. Also used GTK_CLASS_TYPE...
(For some reason, scrolling no longer works with gtk+ 1.3.1 now...)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7787 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-19 10:34:52 +00:00
Ove Kaaven
dd00f3f6fa Make this compile with gtk+ 1.3.1... not sure what the "casting"
(class assignment) of the widget styles are for, but I used
_G_TYPE_IGC anyway...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7786 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-19 10:31:58 +00:00
Ove Kaaven
2afa14f2c7 Use GTK_OBJECT_GET_CLASS macro.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7785 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-19 10:28:26 +00:00
Ove Kaaven
ff67d5860d May as well also add a GTK_CLASS_TYPE macro for compatibility.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7784 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-19 09:45:24 +00:00
Ove Kaaven
b7c2d6ffcb gtk+ 1.3.1's region transformation code no longer returns a new region,
but rather seems to operate on the source region... added a bunch
of ifdefs.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7783 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-19 09:39:18 +00:00
Ove Kaaven
9d084560f8 There's no gtk_widget_push_visual/pop_visual in gtk+ 1.3.1, so I just
ifndef-ed it out. Not sure if it matters.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7782 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-19 09:35:41 +00:00
Ove Kaaven
e6ae733061 Added "stand-ins" for a couple of Pango (Owen Taylor's multilingual text
rendering engine, used by gtk+ 1.3 widgets) types, and added
GTK_OBJECT_GET_CLASS macro for backwards compatibility with gtk+ 1.2


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7781 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-19 09:32:26 +00:00
Ove Kaaven
7edc258ec2 If the "partial" argument is true, you're probably meant to set the
LVFI_PARTIAL flag, not the LVFI_STRING flag again.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7780 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-19 08:56:40 +00:00
Ove Kaaven
df530a2693 Still no such thing as gtkfeatures.h in gtk+ 1.3.1...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7779 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-19 08:51:31 +00:00
Ove Kaaven
307fc8d582 Casting to GdkColormapPrivate is neither possible nor necessary in
gtk+ 1.3.1.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7778 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-19 08:50:37 +00:00
Ove Kaaven
2d4dc3a4d0 If compiling with WXGTK20, set wxConvCurrent to wxConvUTF8, as all
gtk+ 1.3.1's widgets (except the deprecated/obsoleted ones) work
solely with UTF-8. (I knew my forward thinking regarding wxConvCurrent
would pay off someday...)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7777 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-19 08:47:46 +00:00
Ove Kaaven
4aefa363ef If, in a single-selection listctrl, a focused item is selected, and the
focus is moved programmatically (SetItemState) without selecting the new
item, the old focused item wasn't deselected, making the listctrl end up
with TWO selected items when the focused item gets selected by the user.
So I made SetItemState deselect the old focused item when the focus is
moved in a single-selection listctrl.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7776 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-19 08:36:53 +00:00
Ove Kaaven
63c8fa9565 Another case of fn_str() in wxFopen() ?
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7775 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-19 08:31:36 +00:00
Ove Kaaven
d42508c2a0 gtkfeatures.h does not exist under gtk+ 1.3.1, #ifndef it out
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7774 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-19 08:28:55 +00:00
Ove Kaaven
8a667305e7 wxGTKDash is also a gint8 under WXGTK20
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7773 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-19 08:27:41 +00:00
Ove Kaaven
10ca1c1459 Replaced WXGTK13 with WXGTK20
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7772 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-19 08:26:42 +00:00
Ove Kaaven
1cd5241886 An attempt at make the wxCSConv class useful. Uses iconv under Unix,
Internet codepages under Windows, wxEncodingConverter if all else fails.
Not really complete, not really optimized, nor really tested,
but I'll let you check whether it could be useful at least.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7771 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-19 08:25:15 +00:00
Ove Kaaven
66b3ec7f9a More Unicode compilation fixes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7770 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-19 08:20:03 +00:00
Ove Kaaven
888b0f22a9 The wxFopen() fix again, but in the main branch.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7769 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-19 08:13:58 +00:00
Ove Kaaven
6f72b08293 Configure checks for:
sizeof(wchar_t)
iconv.h
langinfo.h
gtk+ 1.3.1, defines __WXGTK20__ (I removed __WXGTK13__)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7767 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-19 08:08:43 +00:00
Ove Kaaven
ecc7ceee42 aclocal configure macro from gtk+ 1.3.1
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7766 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-19 08:03:55 +00:00
Guillermo Rodriguez Garcia
a3c8a7ad5e Added opengl32 to DLL libs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7751 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-17 13:52:38 +00:00
Bryan Petty
f6bcfd974e merged 2.2 branch
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7748 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-07-15 19:51:35 +00:00
Karsten Ballüder
8a693e6e04 Added RTLD_GLOBAL to dlopen() flags which is needed if libraries depend
on each other.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7546 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-08 20:11:51 +00:00
Guilhem Lavaux
c42b1de68a wxMMedia doc updates
wxMMedia compilation fixes
OGL and STC makefile build fixes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7528 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-04 08:38:36 +00:00
Guilhem Lavaux
b97a2c5385 Added WXDLLEXPORT symbol for DynLib classes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7410 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-17 16:45:01 +00:00
Unknown (HK)
05ba6762b5 updated wxStudio module.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7389 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-12 07:26:18 +00:00
Robin Dunn
00a96720ec removed wxPython module from the modules file
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7388 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-11 21:18:05 +00:00
Jouk Jansen
a8e72c8f27 Committing in .
VMS compile support for samples/drawing/

 Modified Files:
 	wxWindows/descrip.mms
 Added Files:
 	wxWindows/samples/drawing/descrip.mms
 ----------------------------------------------------------------------


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7383 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-11 12:12:59 +00:00
Jouk Jansen
dbaf885e87 Committing in .
VMS compile support for samples/mdi

 Modified Files:
 	wxWindows/descrip.mms
 Added Files:
 	wxWindows/samples/mdi/descrip.mms
 ----------------------------------------------------------------------


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7370 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-09 12:28:12 +00:00
Jouk Jansen
0384e718cf Committing in .
Added Files:
 	wxWindows/samples/resource/descrip.mms
 ----------------------------------------------------------------------


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7369 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-09 11:29:36 +00:00
Jouk Jansen
e0fcbf2390 Committing in .
VMS compile support for samples/resource

 Modified Files:
 	wxWindows/descrip.mms
 ----------------------------------------------------------------------


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7368 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-09 11:27:09 +00:00
Unknown (HK)
55a76346b1 Removed -a switch for wxStudio.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7361 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-06 12:13:02 +00:00
Julian Smart
fbdcff4a78 Misc fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7357 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-05 16:40:32 +00:00
Unknown (HK)
8947dc6d65 Fixed wxStudio module.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7355 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-05 15:21:59 +00:00
Unknown (HK)
1f7fd1a500 Added wxStudio module.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7352 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-05 13:11:45 +00:00
Vadim Zeitlin
d8ecfb85ee compilation fix inside WXWIN_COMPATIBILITY
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7128 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 16:14:07 +00:00
Vadim Zeitlin
09b61d999d const cast inside WXWIN_COMPATIBILITY
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7127 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 16:10:25 +00:00
Vadim Zeitlin
69d4002111 added -mt note for Sun CC 4.2
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7126 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 16:06:44 +00:00
Vadim Zeitlin
da27bd0b4a mention wxNB_LEFT/RIGHT/BOTTOM styles
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7123 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 15:47:22 +00:00
Vadim Zeitlin
b01ca3e3d9 fixed double eol problem
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7119 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 14:34:38 +00:00
Guilhem Lavaux
8c6f3b9c6d Changed a little the initialization code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7055 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-03 17:41:16 +00:00
Robin Dunn
88b780d9f9 Undoing Eric's changes on the main branch
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7014 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-31 17:44:48 +00:00
Eric W. Sink
64a3ee5fd2 This commit includes the following changes:
1.  I have grabbed a new copy of the original Scintilla code from its
CVS repository on SourceForge.  I believe this code corresponds to
Scintilla 1.24.

2.  That code included several new files (stc/scintilla/src/Lex*.cxx)

3.  I added mentions of those files to Makefile.in and the .dsp file.

4.  I added a new required method to PlatWX.cpp, but it doesn't do
anything, and I don't think it needs to.

5.  I added code to stc.cpp which gratuitously references all of the
lexers, to prevent them from being optimized away by the linker.

6.  I modified (stc/scintilla/src/Lex*.cxx) to make the LexerModule
objects externally visible.

Gripes to me.  (eric@sourcegear.com)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6998 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-30 18:43:38 +00:00
Robin Dunn
13d7105a66 simple change to test new CVS server
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6971 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-28 17:15:58 +00:00
Karsten Ballüder
bb4624242b joystick made conditional
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6951 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-27 11:20:54 +00:00
David Webster
b963e7d546 no message
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6911 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-23 05:17:18 +00:00
David Webster
40bd6154f1 Reworked Frame class
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6910 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-22 23:22:48 +00:00
Vadim Zeitlin
96525e629a french translation done!
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6901 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-22 12:50:10 +00:00
Jouk Jansen
02c6eadbc8 Committing in .
Modified Files:
 	wxWindows/src/gtk/wx_gtk_vmsjackets.c
 ----------------------------------------------------------------------


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6900 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-22 12:42:38 +00:00
Vadim Zeitlin
15b8c27a7a small fix to the msg catalog search path
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6898 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-22 12:32:46 +00:00
Vadim Zeitlin
61714c237d note about comctl32.dll bug with tree ctrl colours added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6897 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-22 12:11:54 +00:00
David Webster
2df793f9f4 Quick VA fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6889 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-21 13:39:53 +00:00
David Webster
d92a1d4f5a Settle on one shortcut key utility proc.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6888 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-21 13:39:23 +00:00
Julian Smart
d6a3816816 Added WXDLLEXPORT keywords
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6887 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-21 10:39:00 +00:00
Robert Roebling
ea1f75db44 Great. A dot mssing in the spec file so I can start
building again.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6886 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-20 18:51:59 +00:00
4426 changed files with 40822 additions and 893260 deletions

View File

@@ -37,6 +37,7 @@ base
gtk
motif
win32
univ
base-release
gtk-release
motif-release

View File

@@ -32,6 +32,7 @@ include ./src/make.env
srcdir = @srcdir@
VP1 = @top_srcdir@/src/common
VP1_5 = @top_srcdir@/src/univ@PATH_IFS@@top_srcdir@/src/univ/themes
VP2 = @top_srcdir@/src/@TOOLKIT_DIR@
VP3 = @top_srcdir@/src/motif/xmcombo
VP4 = @top_srcdir@/src/generic
@@ -46,7 +47,7 @@ VP11 = @top_srcdir@/src/iodbc
# the comment at the end of the next line is needed because otherwise autoconf
# would remove this line completely - it contains a built-in hack to remove
# any VPATH assignment not containing ':'
VPATH = $(VP1)@PATH_IFS@$(VP2)@PATH_IFS@$(VP3)@PATH_IFS@$(VP4)@PATH_IFS@$(VP5)@PATH_IFS@$(VP6)@PATH_IFS@$(VP7)@PATH_IFS@$(VP8)@PATH_IFS@$(VP9)@PATH_IFS@$(VP10)@PATH_IFS@$(VP11) # ':' for autoconf
VPATH = $(VP1)@PATH_IFS@$(VP1_5)@PATH_IFS@$(VP2)@PATH_IFS@$(VP3)@PATH_IFS@$(VP4)@PATH_IFS@$(VP5)@PATH_IFS@$(VP6)@PATH_IFS@$(VP7)@PATH_IFS@$(VP8)@PATH_IFS@$(VP9)@PATH_IFS@$(VP10)@PATH_IFS@$(VP11) # ':' for autoconf
top_srcdir = @top_srcdir@
prefix = @prefix@
@@ -130,12 +131,19 @@ INTLDIR = $(WXDIR)/locale
########################## Archive name ###############################
WXARCHIVE = @DISTDIR@-$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER).$(WX_RELEASE_NUMBER).tgz
WXGLARCHIVE = @DISTDIR@-gl-$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER).$(WX_RELEASE_NUMBER).tgz
WXSAMPLES = wx$(TOOLKIT)-samples-$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER).$(WX_RELEASE_NUMBER).tgz
WXDEMOS = wx$(TOOLKIT)-demos-$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER).$(WX_RELEASE_NUMBER).tgz
WXARCHIVE = @DISTDIR@-$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER).$(WX_RELEASE_NUMBER).tar.gz
WXGLARCHIVE = @DISTDIR@-gl-$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER).$(WX_RELEASE_NUMBER).tar.gz
WXSAMPLES = wx$(TOOLKIT)-samples-$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER).$(WX_RELEASE_NUMBER).tar.gz
WXDEMOS = wx$(TOOLKIT)-demos-$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER).$(WX_RELEASE_NUMBER).tar.gz
WXARCHIVE_BZIP = @DISTDIR@-$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER).$(WX_RELEASE_NUMBER).tar.bz2
WXGLARCHIVE_BZIP = @DISTDIR@-gl-$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER).$(WX_RELEASE_NUMBER).tar.bz2
WXSAMPLES_BZIP = wx$(TOOLKIT)-samples-$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER).$(WX_RELEASE_NUMBER).tar.bz2
WXDEMOS_BZIP = wx$(TOOLKIT)-demos-$(WX_MAJOR_VERSION_NUMBER).$(WX_MINOR_VERSION_NUMBER).$(WX_RELEASE_NUMBER).tar.bz2
DISTDIR = ./_dist_dir/@DISTDIR@
############################## Files ##################################
WX_LINGUAS = `cd $(top_srcdir)/locale && ls *.mo 2> /dev/null | sed -n 's/\.mo//p'`
@@ -554,7 +562,7 @@ ALL_GUI_DIST: ALL_DIST
mkdir $(DISTDIR)/src/tiff
mkdir $(DISTDIR)/src/iodbc
mkdir $(DISTDIR)/src/unix
cp $(WXDIR)/@PORT_FILES@ $(DISTDIR)/@PORT_FILES@
cp $(WXDIR)/@PORT_FILES@ $(DISTDIR)
cp $(SRCDIR)/*.in $(DISTDIR)/src
cp $(COMMDIR)/*.cpp $(DISTDIR)/src/common
cp $(COMMDIR)/*.c $(DISTDIR)/src/common
@@ -594,7 +602,7 @@ BASE_DIST: ALL_DIST
mkdir $(DISTDIR)/include/wx/unix
mkdir $(DISTDIR)/src/common
mkdir $(DISTDIR)/src/unix
cp $(WXDIR)/@PORT_FILES@ $(DISTDIR)/@PORT_FILES@
cp $(WXDIR)/@PORT_FILES@ $(DISTDIR)
cp $(WXDIR)/@RPM_FILES@ $(DISTDIR)/@RPM_FILES@
cp $(WXDIR)/@RPM_SPEC@ $(DISTDIR)/@RPM_SPEC@
cp $(WXDIR)/wxBase.dsp $(DISTDIR)
@@ -677,6 +685,7 @@ DEMOS_DIST: ALL_GUI_DIST
cp $(DEMODIR)/life/*.h $(DISTDIR)/demos/life
cp $(DEMODIR)/life/*.xpm $(DISTDIR)/demos/life
cp $(DEMODIR)/life/*.inc $(DISTDIR)/demos/life
cp $(DEMODIR)/life/*.lif $(DISTDIR)/demos/life
cp $(DEMODIR)/life/bitmaps/*.xpm $(DISTDIR)/demos/life/bitmaps
mkdir $(DISTDIR)/demos/poem
@@ -1222,6 +1231,7 @@ distclean:
$(RM) -r _dist_dir
dist: @GUIDIST@
cp $(WXDIR)/src/files.lst $(DISTDIR)/src/
@echo "*** Creating wxWindows distribution in $(DISTDIR)..."
cd _dist_dir; tar ch @DISTDIR@ | gzip -f9 > $(WXARCHIVE); mv $(WXARCHIVE) ..
@if test "$(USE_GUI)" = 1; then \
@@ -1234,6 +1244,20 @@ dist: @GUIDIST@
mv wxDemos demos; \
fi
bzip-dist: @GUIDIST@
cp $(WXDIR)/src/files.lst $(DISTDIR)/src/
@echo "*** Creating wxWindows distribution in $(DISTDIR)..."
cd _dist_dir; tar ch @DISTDIR@ | bzip2 -f9 > $(WXARCHIVE_BZIP); mv $(WXARCHIVE_BZIP) ..
@if test "$(USE_GUI)" = 1; then \
cd $(DISTDIR); \
mv samples wxSamples; \
tar ch wxSamples | bzip2 -f9 > ../../$(WXSAMPLES_BZIP); \
mv wxSamples samples; \
mv demos wxDemos; \
tar ch wxDemos | bzip2 -f9 > ../../$(WXDEMOS_BZIP); \
mv wxDemos demos; \
fi
debian-dist: @GUIDIST@ MANUAL_DIST PYTHON_DIST
mkdir $(DISTDIR)/debian
-cp $(WXDIR)/debian/* $(DISTDIR)/debian

10
TODO Normal file
View File

@@ -0,0 +1,10 @@
All
* problem with horz scrolling: the focus rect isn't drawn entirely...
* write sample testing all listbox styles/events
MSW
GTK
* check/radio box remains pressed

194
aclocal.m4 vendored Normal file
View File

@@ -0,0 +1,194 @@
# Configure paths for GTK+
# Owen Taylor 97-11-3
dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
dnl
AC_DEFUN(AM_PATH_GTK_2_0,
[dnl
dnl Get the cflags and libraries from the gtk-config-2.0 script
dnl
AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
gtk_config_prefix="$withval", gtk_config_prefix="")
AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="")
AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
, enable_gtktest=yes)
for module in . $4
do
case "$module" in
gthread)
gtk_config_args="$gtk_config_args gthread"
;;
esac
done
if test x$gtk_config_exec_prefix != x ; then
gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
if test x${GTK_CONFIG_2_0+set} != xset ; then
GTK_CONFIG_2_0=$gtk_config_exec_prefix/bin/gtk-config-2.0
fi
fi
if test x$gtk_config_prefix != x ; then
gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
if test x${GTK_CONFIG_2_0+set} != xset ; then
GTK_CONFIG_2_0=$gtk_config_prefix/bin/gtk-config-2.0
fi
fi
AC_PATH_PROG(GTK_CONFIG_2_0, gtk-config-2.0, no)
min_gtk_version=ifelse([$1], ,1.3.1,$1)
AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
no_gtk=""
if test "$GTK_CONFIG_2_0" = "no" ; then
no_gtk=yes
else
GTK_CFLAGS=`$GTK_CONFIG_2_0 $gtk_config_args --cflags`
GTK_LIBS=`$GTK_CONFIG_2_0 $gtk_config_args --libs`
gtk_config_major_version=`$GTK_CONFIG_2_0 $gtk_config_args --version | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
gtk_config_minor_version=`$GTK_CONFIG_2_0 $gtk_config_args --version | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
gtk_config_micro_version=`$GTK_CONFIG_2_0 $gtk_config_args --version | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
if test "x$enable_gtktest" = "xyes" ; then
ac_save_CFLAGS="$CFLAGS"
ac_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $GTK_CFLAGS"
LIBS="$GTK_LIBS $LIBS"
dnl
dnl Now check if the installed GTK is sufficiently new. (Also sanity
dnl checks the results of gtk-config-2.0 to some extent
dnl
rm -f conf.gtktest
AC_TRY_RUN([
#include <gtk/gtk.h>
#include <stdio.h>
#include <stdlib.h>
int
main ()
{
int major, minor, micro;
char *tmp_version;
system ("touch conf.gtktest");
/* HP/UX 9 (%@#!) writes to sscanf strings */
tmp_version = g_strdup("$min_gtk_version");
if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
printf("%s, bad version string\n", "$min_gtk_version");
exit(1);
}
if ((gtk_major_version != $gtk_config_major_version) ||
(gtk_minor_version != $gtk_config_minor_version) ||
(gtk_micro_version != $gtk_config_micro_version))
{
printf("\n*** 'gtk-config-2.0 --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
$gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
gtk_major_version, gtk_minor_version, gtk_micro_version);
printf ("*** was found! If gtk-config-2.0 was correct, then it is best\n");
printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
printf("*** required on your system.\n");
printf("*** If gtk-config-2.0 was wrong, set the environment variable GTK_CONFIG_2_0\n");
printf("*** to point to the correct copy of gtk-config-2.0, and remove the file config.cache\n");
printf("*** before re-running configure\n");
}
#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION)
else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
(gtk_minor_version != GTK_MINOR_VERSION) ||
(gtk_micro_version != GTK_MICRO_VERSION))
{
printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
printf("*** library (version %d.%d.%d)\n",
gtk_major_version, gtk_minor_version, gtk_micro_version);
}
#endif /* defined (GTK_MAJOR_VERSION) ... */
else
{
if ((gtk_major_version > major) ||
((gtk_major_version == major) && (gtk_minor_version > minor)) ||
((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
{
return 0;
}
else
{
printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
gtk_major_version, gtk_minor_version, gtk_micro_version);
printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
major, minor, micro);
printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
printf("***\n");
printf("*** If you have already installed a sufficiently new version, this error\n");
printf("*** probably means that the wrong copy of the gtk-config-2.0 shell script is\n");
printf("*** being found. The easiest way to fix this is to remove the old version\n");
printf("*** of GTK+, but you can also set the GTK_CONFIG_2_0 environment to point to the\n");
printf("*** correct copy of gtk-config-2.0. (In this case, you will have to\n");
printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
printf("*** so that the correct libraries are found at run-time))\n");
}
}
return 1;
}
],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
CFLAGS="$ac_save_CFLAGS"
LIBS="$ac_save_LIBS"
fi
fi
if test "x$no_gtk" = x ; then
AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version))
ifelse([$2], , :, [$2])
else
AC_MSG_RESULT(no)
if test "$GTK_CONFIG_2_0" = "no" ; then
echo "*** The gtk-config-2.0 script installed by GTK could not be found"
echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in"
echo "*** your path, or set the GTK_CONFIG_2_0 environment variable to the"
echo "*** full path to gtk-config-2.0."
else
if test -f conf.gtktest ; then
:
else
echo "*** Could not run GTK test program, checking why..."
CFLAGS="$CFLAGS $GTK_CFLAGS"
LIBS="$LIBS $GTK_LIBS"
AC_TRY_LINK([
#include <gtk/gtk.h>
#include <stdio.h>
], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
[ echo "*** The test program compiled, but did not run. This usually means"
echo "*** that the run-time linker is not finding GTK or finding the wrong"
echo "*** version of GTK. If it is not finding GTK, you'll need to set your"
echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
echo "*** to the installed location Also, make sure you have run ldconfig if that"
echo "*** is required on your system"
echo "***"
echo "*** If you have an old version installed, it is best to remove it, although"
echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
echo "***"
echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that"
echo "*** came with the system with the command"
echo "***"
echo "*** rpm --erase --nodeps gtk gtk-devel" ],
[ echo "*** The test program failed to compile or link. See the file config.log for the"
echo "*** exact error that occured. This usually means GTK was incorrectly installed"
echo "*** or that you have moved GTK since it was installed. In the latter case, you"
echo "*** may want to edit the gtk-config-2.0 script: $GTK_CONFIG_2_0" ])
CFLAGS="$ac_save_CFLAGS"
LIBS="$ac_save_LIBS"
fi
fi
GTK_CFLAGS=""
GTK_LIBS=""
ifelse([$3], , :, [$3])
fi
AC_SUBST(GTK_CFLAGS)
AC_SUBST(GTK_LIBS)
rm -f conf.gtktest
])

2985
configure vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -8,6 +8,8 @@ all:
clean:
cd src; make clean
cd samples; make clean
cd utils; make clean
samples:
cd samples; make

8
contrib/configure vendored
View File

@@ -817,12 +817,16 @@ trap 'rm -fr `echo "
src/ogl/Makefile
src/mmedia/Makefile
src/stc/Makefile
src/xml/Makefile
samples/Makefile
samples/mmedia/Makefile
samples/ogl/Makefile
samples/ogl/ogledit/Makefile
samples/ogl/studio/Makefile
samples/stc/Makefile
utils/Makefile
utils/wxrc/Makefile
utils/wxrcedit/Makefile
" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
EOF
cat >> $CONFIG_STATUS <<EOF
@@ -906,12 +910,16 @@ CONFIG_FILES=\${CONFIG_FILES-"Makefile
src/ogl/Makefile
src/mmedia/Makefile
src/stc/Makefile
src/xml/Makefile
samples/Makefile
samples/mmedia/Makefile
samples/ogl/Makefile
samples/ogl/ogledit/Makefile
samples/ogl/studio/Makefile
samples/stc/Makefile
utils/Makefile
utils/wxrc/Makefile
utils/wxrcedit/Makefile
"}
EOF
cat >> $CONFIG_STATUS <<\EOF

View File

@@ -42,10 +42,14 @@ AC_OUTPUT([
src/ogl/Makefile
src/mmedia/Makefile
src/stc/Makefile
src/xml/Makefile
samples/Makefile
samples/mmedia/Makefile
samples/ogl/Makefile
samples/ogl/ogledit/Makefile
samples/ogl/studio/Makefile
samples/stc/Makefile
utils/Makefile
utils/wxrc/Makefile
utils/wxrcedit/Makefile
])

View File

@@ -214,15 +214,30 @@ been set. In all other cases, you must return FALSE.
\membersection{wxSoundFileStream::RepositionStream}\label{wxsoundfilestreamrepositionstream}
\func{bool}{RepositionStream}{\param{wxUint32 }{position}}
This is called by wxSoundFileStream::SetPosition to seek the input stream
to the right position. This must be overidden by the file codec class.
The position is relative to the beginning of the samples.
If it is impossible (as for a piped input stream), you must return FALSE.
\membersection{wxSoundFileStream::FinishPreparation}\label{wxsoundfilestreamfinishpreparation}
\func{void}{FinishPreparation}{\param{wxUint32 }{len}}
This is an internal function but it must called by the file codec class when
the "playing" preparation is finished and you know the size of the stream.
If it is an {\it infinite} stream, you should set this to wxSOUND\_INFINITE\_TIME.
\membersection{wxSoundFileStream::GetData}\label{wxsoundfilestreamgetdata}
\func{wxUint32}{GetData}{\param{void* }{buffer}, \param{wxUint32 }{len}}
This is called by wxSoundFileStream when it needs to get new sound data to
send to the device driver (or to a conversion codec). This must be eventually
overidden by the file codec class. The default behaviour is simply to read from
the input stream.
\membersection{wxSoundFileStream::PutData}\label{wxsoundfilestreamputdata}
\func{wxUint32}{PutData}{\param{const void* }{buffer}, \param{wxUint32 }{len}}
This is called by wxSoundFileStream when it needs to put new sound data received
from the device driver (or from a conversion codec). This must be eventually
overidden by the file codec class. The default behaviour is simply to write to
the input stream.

View File

@@ -6,8 +6,8 @@
\section{\class{wxSoundRouterStream}}\label{wxsoundrouterstream}
Codec router class
This is the router "codec" class. It should do codec routing when the device
driver does not deal with a format.
\wxheading{Derived from}
@@ -17,43 +17,21 @@ Codec router class
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxSoundRouterStream::wxSoundRouterStream}\label{wxsoundrouterstreamwxsoundrouterstream}
\func{}{wxSoundRouterStream}{\param{wxSoundStream\& }{sndio}}
\helpref{wxSoundCodec}{wxsoundcodec}
\membersection{wxSoundRouterStream::\destruct{wxSoundRouterStream}}\label{wxsoundrouterstreamdtor}
\func{}{\destruct{wxSoundRouterStream}}{\void}
\membersection{wxSoundRouterStream::Read}\label{wxsoundrouterstreamread}
\func{wxSoundStream\&}{Read}{\param{void* }{buffer}, \param{wxUint32 }{len}}
\membersection{wxSoundRouterStream::Write}\label{wxsoundrouterstreamwrite}
\func{wxSoundStream\&}{Write}{\param{const void* }{buffer}, \param{wxUint32 }{len}}
Destructor.
\membersection{wxSoundRouterStream::SetSoundFormat}\label{wxsoundrouterstreamsetsoundformat}
\func{bool}{SetSoundFormat}{\param{const wxSoundFormatBase\& }{format}}
\membersection{wxSoundRouterStream::StartProduction}\label{wxsoundrouterstreamstartproduction}
\func{bool}{StartProduction}{\param{int }{evt}}
\membersection{wxSoundRouterStream::StopProduction}\label{wxsoundrouterstreamstopproduction}
\func{bool}{StopProduction}{\void}
\membersection{wxSoundRouterStream::GetBestSize}\label{wxsoundrouterstreamgetbestsize}
\constfunc{wxUint32}{GetBestSize}{\void}
SetSoundFormat will first try to setup the device driver with the specified
format. If this fails, it will try to find a codec which will convert the
input format to a valid format for the device driver. It uses an internal
codec database.

View File

@@ -27,7 +27,7 @@ class WXDLLEXPORT wxCDAudio : public wxObject {
public:
typedef enum { PLAYING, PAUSED, STOPPED } CDstatus;
// Table of contents manager
class CDtoc {
class WXDLLEXPORT CDtoc {
protected:
wxCDtime *tracks_time, *tracks_pos;
wxCDtime total_time;

View File

@@ -22,7 +22,7 @@
// AIFF codec
//
class wxSoundAiff: public wxSoundFileStream {
class WXDLLEXPORT wxSoundAiff: public wxSoundFileStream {
public:
wxSoundAiff(wxInputStream& stream, wxSoundStream& io_sound);
wxSoundAiff(wxOutputStream& stream, wxSoundStream& io_sound);

View File

@@ -112,7 +112,7 @@ class WXDLLEXPORT wxSoundFormatBase {
// Base class for sound streams
//
class wxSoundStream {
class WXDLLEXPORT wxSoundStream {
public:
wxSoundStream();
virtual ~wxSoundStream();

View File

@@ -15,7 +15,7 @@
#include "wx/defs.h"
#include "wx/mmedia/sndbase.h"
class wxSoundStreamCodec: public wxSoundStream {
class WXDLLEXPORT wxSoundStreamCodec: public wxSoundStream {
public:
wxSoundStreamCodec(wxSoundStream& snd_io);
~wxSoundStreamCodec();

View File

@@ -20,7 +20,7 @@
// PCM converter class
//
class wxSoundStreamPcm: public wxSoundStreamCodec {
class WXDLLEXPORT wxSoundStreamPcm: public wxSoundStreamCodec {
public:
typedef void (*ConverterType)(const void *buf_in, void *buf_out,
wxUint32 len);

View File

@@ -5,8 +5,8 @@
// Author: Guilhem Lavaux <lavaux@easynet.fr> (C) 2000
// CVSID: $Id$
// --------------------------------------------------------------------------
#ifndef _WX_SNDULAW_H
#define _WX_SNDULAW_H
#ifndef _WX_SNDMSAD_H
#define _WX_SNDMSAD_H
#ifdef __GNUG__
#pragma interface "sndmsad.h"
@@ -17,46 +17,52 @@
#include "wx/mmedia/sndcodec.h"
#include "wx/mmedia/sndbase.h"
WX_DEFINE_EXPORTED_ARRAY(wxUint16, wxMSAdpcmCoeffs);
WX_DEFINE_EXPORTED_ARRAY(wxInt16, wxMSAdpcmCoeffs);
//
// MSADPCM format
//
class WXDLLEXPORT wxSoundFormatMSAdpcm: public wxSoundFormatBase {
public:
wxSoundFormatMSAdpcm();
~wxSoundFormatMSAdpcm();
public:
wxSoundFormatMSAdpcm();
~wxSoundFormatMSAdpcm();
void SetSampleRate(wxUint32 srate);
wxUint32 GetSampleRate() const;
void SetCoefs(wxInt16 **coefs, wxUint16 ncoefs, wxUint16 coefs_len);
void GetCoefs(wxInt16 **&coefs, wxUint16& ncoefs,
wxUint16& coefs_len) const;
void SetSampleRate(wxUint32 srate);
wxUint32 GetSampleRate() const;
void SetBlockSize(wxUint16 block_size);
wxUint16 GetBlockSize() const;
void SetChannels(wxUint16 channels);
wxUint16 GetChannels() const;
wxSoundFormatType GetType() const { return wxSOUND_MSADPCM; }
wxSoundFormatBase *Clone() const;
wxUint32 GetTimeFromBytes(wxUint32 bytes) const;
wxUint32 GetBytesFromTime(wxUint32 time) const;
bool operator !=(const wxSoundFormatBase& frmt2) const;
void SetSamplesBlock(wxUint16 sampblock);
wxUint16 GetSamplesBlock() const;
void SetCoefs(wxMSAdpcmCoefs& coefs);
wxMSAdpcmCoefs& GetCoefs() const;
wxSoundFormatType GetType() const { return wxSOUND_ULAW; }
wxSoundFormatBase *Clone() const;
wxUint32 GetTimeFromBytes(wxUint32 bytes) const;
wxUint32 GetBytesFromTime(wxUint32 time) const;
bool operator !=(const wxSoundFormatBase& frmt2) const;
protected:
wxUint32 m_srate;
wxMSAdpcmCoefs *m_coefs;
protected:
wxUint32 m_srate, m_nchannels;
wxInt16 **m_coefs;
wxUint16 m_ncoefs, m_coefs_len;
wxUint16 m_block_size;
};
//
// MS ADPCM converter class
//
class WXDLLEXPORT wxSoundRouterStream;
class WXDLLEXPORT wxSoundStreamAdpcm: public wxSoundStreamCodec {
class WXDLLEXPORT wxSoundStreamMSAdpcm: public wxSoundStreamCodec {
public:
wxSoundStreamAdpcm(wxSoundStream& sndio);
~wxSoundStreamAdpcm();
wxSoundStreamMSAdpcm(wxSoundStream& sndio);
~wxSoundStreamMSAdpcm();
wxSoundStream& Read(void *buffer, wxUint32 len);
wxSoundStream& Write(const void *buffer, wxUint32 len);
@@ -67,6 +73,32 @@ public:
protected:
wxSoundRouterStream *m_router;
typedef struct {
wxInt32 predictor;
wxInt16 samp1;
wxInt16 samp2;
wxInt16 coeff[2];
wxInt32 iDelta;
} AdpcmState;
AdpcmState m_state[1];
bool m_got_header;
bool m_stereo;
wxInt16 **m_coefs;
wxUint16 m_block_size;
wxUint16 m_ncoefs;
wxUint16 m_next_block;
protected:
wxUint32 DecodeMonoADPCM(const void *in_buffer, void *out_buffer,
wxUint32 in_len);
wxUint32 DecodeStereoADPCM(const void *in_buffer, void *out_buffer,
wxUint32 in_len);
void Nibble(wxInt8 nyb,
AdpcmState *state,
wxInt16 **out_buffer);
};
#endif

View File

@@ -21,7 +21,7 @@
// OSS output class
//
class wxSoundStreamOSS : public wxSoundStream {
class WXDLLEXPORT wxSoundStreamOSS : public wxSoundStream {
public:
wxSoundStreamOSS(const wxString& dev_name = wxT("/dev/dsp"));
~wxSoundStreamOSS();

View File

@@ -42,12 +42,18 @@ protected:
wxUint32 GetData(void *buffer, wxUint32 len);
wxUint32 PutData(const void *buffer, wxUint32 len);
bool HandleOutputPCM(wxDataInputStream& data, wxUint16 channels,
wxUint32 sample_fq, wxUint32 byte_p_sec,
wxUint16 byte_p_spl, wxUint16 bits_p_spl);
bool HandleOutputG721(wxDataInputStream& data, wxUint16 channels,
wxUint32 sample_fq, wxUint32 byte_p_sec,
wxUint16 byte_p_spl, wxUint16 bits_p_spl);
bool HandleOutputPCM(wxDataInputStream& data, wxUint32 len,
wxUint16 channels, wxUint32 sample_fq,
wxUint32 byte_p_sec, wxUint16 byte_p_spl,
wxUint16 bits_p_spl);
bool HandleOutputMSADPCM(wxDataInputStream& data, wxUint32 len,
wxUint16 channels, wxUint32 sample_fq,
wxUint32 byte_p_sec, wxUint16 byte_p_spl,
wxUint16 bits_p_spl);
bool HandleOutputG721(wxDataInputStream& data, wxUint32 len,
wxUint16 channels, wxUint32 sample_fq,
wxUint32 byte_p_sec, wxUint16 byte_p_spl,
wxUint16 bits_p_spl);
wxSoundFormatBase *HandleInputPCM(wxDataOutputStream& data);
wxSoundFormatBase *HandleInputG72X(wxDataOutputStream& data);

View File

@@ -0,0 +1,38 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_all.h
// Purpose: includes all xh_*.h files
// Author: Vaclav Slavik
// Created: 2000/03/05
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XH_ALL_H_
#define _WX_XH_ALL_H_
// Existing handlers:
#include "wx/xml/xh_menu.h"
#include "wx/xml/xh_panel.h"
#include "wx/xml/xh_dlg.h"
#include "wx/xml/xh_bttn.h"
#include "wx/xml/xh_chckb.h"
#include "wx/xml/xh_gauge.h"
#include "wx/xml/xh_html.h"
#include "wx/xml/xh_spin.h"
#include "wx/xml/xh_sttxt.h"
#include "wx/xml/xh_slidr.h"
#include "wx/xml/xh_radbt.h"
#include "wx/xml/xh_radbx.h"
#include "wx/xml/xh_combo.h"
#include "wx/xml/xh_chckl.h"
#include "wx/xml/xh_choic.h"
#include "wx/xml/xh_sizer.h"
#include "wx/xml/xh_stbmp.h"
#include "wx/xml/xh_notbk.h"
#include "wx/xml/xh_text.h"
#include "wx/xml/xh_listb.h"
#endif // _WX_XMLRES_H_

View File

@@ -0,0 +1,29 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_bttn.h
// Purpose: XML resource handler for buttons
// Author: Vaclav Slavik
// Created: 2000/03/05
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XH_BTTN_H_
#define _WX_XH_BTTN_H_
#ifdef __GNUG__
#pragma interface "xh_bttn.h"
#endif
#include "wx/xml/xmlres.h"
class WXDLLEXPORT wxButtonXmlHandler : public wxXmlResourceHandler
{
public:
wxButtonXmlHandler() : wxXmlResourceHandler() {}
virtual wxObject *DoCreateResource();
virtual bool CanHandle(wxXmlNode *node);
};
#endif // _WX_XH_BTTN_H_

View File

@@ -0,0 +1,35 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_chckb.h
// Purpose: XML resource handler for wxCheckBox
// Author: Bob Mitchell
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell and Verant Interactive
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XH_CHCKB_H_
#define _WX_XH_CHCKB_H_
#ifdef __GNUG__
#pragma interface "xh_chckb.h"
#endif
#include "wx/xml/xmlres.h"
#include "wx/defs.h"
#if wxUSE_CHECKBOX
class WXDLLEXPORT wxCheckBoxXmlHandler : public wxXmlResourceHandler
{
public:
wxCheckBoxXmlHandler();
virtual wxObject *DoCreateResource();
virtual bool CanHandle(wxXmlNode *node);
};
#endif
#endif // _WX_XH_CHECKBOX_H_

View File

@@ -0,0 +1,33 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_chckl.h
// Purpose: XML resource handler for wxCheckListBox
// Author: Bob Mitchell
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell and Verant Interactive
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XH_CHCKL_H_
#define _WX_XH_CHCKL_H_
#ifdef __GNUG__
#pragma interface "xh_chckl.h"
#endif
#include "wx/xml/xmlres.h"
class WXDLLEXPORT wxCheckListXmlHandler : public wxXmlResourceHandler
{
public:
wxCheckListXmlHandler();
virtual wxObject *DoCreateResource();
virtual bool CanHandle(wxXmlNode *node);
private:
bool m_InsideBox;
wxArrayString strList;
};
#endif // _WX_XH_CHECKLIST_H_

View File

@@ -0,0 +1,32 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_choic.h
// Purpose: XML resource handler for wxChoice
// Author: Bob Mitchell
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell and Verant Interactive
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XH_CHOIC_H_
#define _WX_XH_CHOIC_H_
#ifdef __GNUG__
#pragma interface "xh_choic.h"
#endif
#include "wx/xml/xmlres.h"
class WXDLLEXPORT wxChoiceXmlHandler : public wxXmlResourceHandler
{
public:
wxChoiceXmlHandler();
virtual wxObject *DoCreateResource();
virtual bool CanHandle(wxXmlNode *node);
private:
bool m_InsideBox;
wxArrayString strList;
};
#endif // _WX_XH_CHOIC_H_

View File

@@ -0,0 +1,35 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_combo.h
// Purpose: XML resource handler for wxComboBox
// Author: Bob Mitchell
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell and Verant Interactive
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XH_COMBO_H_
#define _WX_XH_COMBO_H_
#ifdef __GNUG__
#pragma interface "xh_combo.h"
#endif
#include "wx/xml/xmlres.h"
#if wxUSE_COMBOBOX
class WXDLLEXPORT wxComboBoxXmlHandler : public wxXmlResourceHandler
{
public:
wxComboBoxXmlHandler();
virtual wxObject *DoCreateResource();
virtual bool CanHandle(wxXmlNode *node);
private:
bool m_InsideBox;
wxArrayString strList;
};
#endif
#endif // _WX_XH_COMBO_H_

View File

@@ -0,0 +1,29 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_dlg.h
// Purpose: XML resource handler for dialogs
// Author: Vaclav Slavik
// Created: 2000/03/05
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XH_DLG_H_
#define _WX_XH_DLG_H_
#ifdef __GNUG__
#pragma interface "xh_dlg.h"
#endif
#include "wx/xml/xmlres.h"
class WXDLLEXPORT wxDialogXmlHandler : public wxXmlResourceHandler
{
public:
wxDialogXmlHandler();
virtual wxObject *DoCreateResource();
virtual bool CanHandle(wxXmlNode *node);
};
#endif // _WX_XH_DLG_H_

View File

@@ -0,0 +1,40 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_gauge.h
// Purpose: XML resource handler for wxGauge
// Author: Bob Mitchell
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell and Verant Interactive
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XH_GAUGE_H_
#define _WX_XH_GAUGE_H_
#ifdef __GNUG__
#pragma interface "xh_gauge.h"
#endif
#include "wx/defs.h"
#if wxUSE_GAUGE
#include "wx/xml/xmlres.h"
class WXDLLEXPORT wxGaugeXmlHandler : public wxXmlResourceHandler
{
enum
{
wxGAUGE_DEFAULT_RANGE = 100
};
public:
wxGaugeXmlHandler();
virtual wxObject *DoCreateResource();
virtual bool CanHandle(wxXmlNode *node);
};
#endif
#endif // _WX_XH_GAUGE_H_

View File

@@ -0,0 +1,34 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_html.h
// Purpose: XML resource handler for wxHtmlWindow
// Author: Bob Mitchell
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell and Verant Interactive
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XH_HTML_H_
#define _WX_XH_HTML_H_
#ifdef __GNUG__
#pragma interface "xh_html.h"
#endif
#include "wx/xml/xmlres.h"
#include "wx/defs.h"
#if wxUSE_HTML
class WXDLLEXPORT wxHtmlWindowXmlHandler : public wxXmlResourceHandler
{
public:
wxHtmlWindowXmlHandler();
virtual wxObject *DoCreateResource();
virtual bool CanHandle(wxXmlNode *node);
};
#endif
#endif // _WX_XH_SLIDER_H_

View File

@@ -0,0 +1,35 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_listb.h
// Purpose: XML resource handler for wxListbox
// Author: Bob Mitchell & Vaclav Slavik
// Created: 2000/07/29
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell & Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XH_LISTB_H_
#define _WX_XH_LISTB_H_
#ifdef __GNUG__
#pragma interface "xh_listb.h"
#endif
#include "wx/xml/xmlres.h"
#if wxUSE_LISTBOX
class WXDLLEXPORT wxListBoxXmlHandler : public wxXmlResourceHandler
{
public:
wxListBoxXmlHandler();
virtual wxObject *DoCreateResource();
virtual bool CanHandle(wxXmlNode *node);
private:
bool m_InsideBox;
wxArrayString strList;
};
#endif
#endif // _WX_XH_LISTB_H_

View File

@@ -0,0 +1,40 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_menu.h
// Purpose: XML resource handler for menus/menubars
// Author: Vaclav Slavik
// Created: 2000/03/05
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XH_MENU_H_
#define _WX_XH_MENU_H_
#ifdef __GNUG__
#pragma interface "xh_menu.h"
#endif
#include "wx/xml/xmlres.h"
class WXDLLEXPORT wxMenuXmlHandler : public wxXmlResourceHandler
{
public:
wxMenuXmlHandler();
virtual wxObject *DoCreateResource();
virtual bool CanHandle(wxXmlNode *node);
private:
bool m_InsideMenu;
};
class WXDLLEXPORT wxMenuBarXmlHandler : public wxXmlResourceHandler
{
public:
wxMenuBarXmlHandler();
virtual wxObject *DoCreateResource();
virtual bool CanHandle(wxXmlNode *node);
};
#endif // _WX_XH_MENU_H_

View File

@@ -0,0 +1,37 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_notbk.h
// Purpose: XML resource handler for wxNotebook
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XH_NOTBK_H_
#define _WX_XH_NOTBK_H_
#ifdef __GNUG__
#pragma interface "xh_notbk.h"
#endif
#include "wx/xml/xmlres.h"
#if wxUSE_NOTEBOOK
class WXDLLEXPORT wxNotebook;
class WXDLLEXPORT wxNotebookXmlHandler : public wxXmlResourceHandler
{
public:
wxNotebookXmlHandler();
virtual wxObject *DoCreateResource();
virtual bool CanHandle(wxXmlNode *node);
private:
bool m_IsInside;
wxNotebook *m_Notebook;
};
#endif
#endif // _WX_XH_NOTBK_H_

View File

@@ -0,0 +1,29 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_panel.h
// Purpose: XML resource handler for panels
// Author: Vaclav Slavik
// Created: 2000/03/05
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XH_PANEL_H_
#define _WX_XH_PANEL_H_
#ifdef __GNUG__
#pragma interface "xh_panel.h"
#endif
#include "wx/xml/xmlres.h"
class WXDLLEXPORT wxPanelXmlHandler : public wxXmlResourceHandler
{
public:
wxPanelXmlHandler();
virtual wxObject *DoCreateResource();
virtual bool CanHandle(wxXmlNode *node);
};
#endif // _WX_XH_PANEL_H_

View File

@@ -0,0 +1,33 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_radbt.h
// Purpose: XML resource handler for radio buttons
// Author: Bob Mitchell
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell and Verant Interactive
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XH_RADBT_H_
#define _WX_XH_RADBT_H_
#ifdef __GNUG__
#pragma interface "xh_radbt.h"
#endif
#include "wx/xml/xmlres.h"
#include "wx/defs.h"
#if wxUSE_RADIOBOX
class WXDLLEXPORT wxRadioButtonXmlHandler : public wxXmlResourceHandler
{
public:
wxRadioButtonXmlHandler();
virtual wxObject *DoCreateResource();
virtual bool CanHandle(wxXmlNode *node);
};
#endif
#endif // _WX_XH_RADIOBUTTON_H_

View File

@@ -0,0 +1,35 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_radbx.h
// Purpose: XML resource handler for radio box
// Author: Bob Mitchell
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell and Verant Interactive
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XH_RADBX_H_
#define _WX_XH_RADBX_H_
#ifdef __GNUG__
#pragma interface "xh_radbx.h"
#endif
#include "wx/xml/xmlres.h"
#if wxUSE_RADIOBOX
class WXDLLEXPORT wxRadioBoxXmlHandler : public wxXmlResourceHandler
{
public:
wxRadioBoxXmlHandler();
virtual wxObject *DoCreateResource();
virtual bool CanHandle(wxXmlNode *node);
private:
bool m_InsideBox;
wxArrayString strList;
};
#endif
#endif // _WX_XH_RADBX_H_

View File

@@ -0,0 +1,36 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_sizer.h
// Purpose: XML resource handler for wxBoxSizer
// Author: Vaclav Slavik
// Created: 2000/04/24
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XH_SIZER_H_
#define _WX_XH_SIZER_H_
#ifdef __GNUG__
#pragma interface "xh_sizer.h"
#endif
#include "wx/xml/xmlres.h"
class WXDLLEXPORT wxSizer;
class WXDLLEXPORT wxSizerXmlHandler : public wxXmlResourceHandler
{
public:
wxSizerXmlHandler();
virtual wxObject *DoCreateResource();
virtual bool CanHandle(wxXmlNode *node);
private:
bool m_IsInside;
wxSizer *m_ParentSizer;
};
#endif // _WX_XH_BOXSIZER_H_

View File

@@ -0,0 +1,40 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_slidr.h
// Purpose: XML resource handler for wxSlider
// Author: Bob Mitchell
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell and Verant Interactive
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XH_SLIDR_H_
#define _WX_XH_SLIDR_H_
#ifdef __GNUG__
#pragma interface "xh_slidr.h"
#endif
#include "wx/xml/xmlres.h"
#include "wx/defs.h"
#if wxUSE_SLIDER
class WXDLLEXPORT wxSliderXmlHandler : public wxXmlResourceHandler
{
enum
{
wxSL_DEFAULT_VALUE = 0,
wxSL_DEFAULT_MIN = 0,
wxSL_DEFAULT_MAX = 100
};
public:
wxSliderXmlHandler();
virtual wxObject *DoCreateResource();
virtual bool CanHandle(wxXmlNode *node);
};
#endif
#endif // _WX_XH_SLIDER_H_

View File

@@ -0,0 +1,55 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_spin.h
// Purpose: XML resource handler for wxSpinButton
// Author: Bob Mitchell
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell and Verant Interactive
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XH_SPIN_H_
#define _WX_XH_SPIN_H_
#ifdef __GNUG__
#pragma interface "xh_spin.h"
#endif
#include "wx/xml/xmlres.h"
#include "wx/defs.h"
#if wxUSE_SPINBTN
class WXDLLEXPORT wxSpinButtonXmlHandler : public wxXmlResourceHandler
{
enum
{
wxSP_DEFAULT_VALUE = 0,
wxSP_DEFAULT_MIN = 0,
wxSP_DEFAULT_MAX = 100
};
public:
wxSpinButtonXmlHandler();
virtual wxObject *DoCreateResource();
virtual bool CanHandle(wxXmlNode *node);
};
#endif
#if wxUSE_SPINCTRL
class WXDLLEXPORT wxSpinCtrlXmlHandler : public wxXmlResourceHandler
{
enum
{
wxSP_DEFAULT_VALUE = 0,
wxSP_DEFAULT_MIN = 0,
wxSP_DEFAULT_MAX = 100
};
public:
wxSpinCtrlXmlHandler();
virtual wxObject *DoCreateResource();
virtual bool CanHandle(wxXmlNode *node);
};
#endif
#endif // _WX_XH_SPIN_H_

View File

@@ -0,0 +1,30 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_stbmp.h
// Purpose: XML resource handler for wxStaticBitmap
// Author: Vaclav Slavik
// Created: 2000/04/22
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XH_STBMP_H_
#define _WX_XH_STBMP_H_
#ifdef __GNUG__
#pragma interface "xh_stbmp.h"
#endif
#include "wx/xml/xmlres.h"
class WXDLLEXPORT wxStaticBitmapXmlHandler : public wxXmlResourceHandler
{
public:
wxStaticBitmapXmlHandler();
virtual wxObject *DoCreateResource();
virtual bool CanHandle(wxXmlNode *node);
};
#endif // _WX_XH_STBMP_H_

View File

@@ -0,0 +1,30 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_sttxt.h
// Purpose: XML resource handler for wxStaticBitmap
// Author: Bob Mitchell
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XH_STTXT_H_
#define _WX_XH_STTXT_H_
#ifdef __GNUG__
#pragma interface "xh_sttxt.h"
#endif
#include "wx/xml/xmlres.h"
class WXDLLEXPORT wxStaticTextXmlHandler : public wxXmlResourceHandler
{
public:
wxStaticTextXmlHandler();
virtual wxObject *DoCreateResource();
virtual bool CanHandle(wxXmlNode *node);
};
#endif // _WX_XH_STBMP_H_

View File

@@ -0,0 +1,30 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_text.h
// Purpose: XML resource handler for wxTextCtrl
// Author: Aleksandras Gluchovas
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Aleksandras Gluchovas
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XH_TEXT_H_
#define _WX_XH_TEXT_H_
#ifdef __GNUG__
#pragma interface "xh_text.h"
#endif
#include "wx/xml/xmlres.h"
class WXDLLEXPORT wxTextCtrlXmlHandler : public wxXmlResourceHandler
{
public:
wxTextCtrlXmlHandler();
virtual wxObject *DoCreateResource();
virtual bool CanHandle(wxXmlNode *node);
};
#endif // _WX_XH_TEXT_H_

View File

@@ -0,0 +1,239 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xml.h
// Purpose: wxXmlDocument - XML parser & data holder class
// Author: Vaclav Slavik
// Created: 2000/03/05
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XML_H_
#define _WX_XML_H_
#ifdef __GNUG__
#pragma interface "xml.h"
#endif
#include "wx/defs.h"
#include "wx/string.h"
#include "wx/object.h"
#include "wx/list.h"
class WXDLLEXPORT wxXmlNode;
class WXDLLEXPORT wxXmlProperty;
class WXDLLEXPORT wxXmlDocument;
class WXDLLEXPORT wxXmlIOHandler;
class WXDLLEXPORT wxInputStream;
class WXDLLEXPORT wxOutputStream;
// Represents XML node type.
enum wxXmlNodeType
{
// note: values are synchronized with xmlElementType from libxml
wxXML_ELEMENT_NODE = 1,
wxXML_ATTRIBUTE_NODE = 2,
wxXML_TEXT_NODE = 3,
wxXML_CDATA_SECTION_NODE = 4,
wxXML_ENTITY_REF_NODE = 5,
wxXML_ENTITY_NODE = 6,
wxXML_PI_NODE = 7,
wxXML_COMMENT_NODE = 8,
wxXML_DOCUMENT_NODE = 9,
wxXML_DOCUMENT_TYPE_NODE = 10,
wxXML_DOCUMENT_FRAG_NODE = 11,
wxXML_NOTATION_NODE = 12,
wxXML_HTML_DOCUMENT_NODE = 13
};
// Types of XML files:
enum wxXmlIOType
{
wxXML_IO_AUTO = 0, // detect it automatically
wxXML_IO_LIBXML, // use libxml2 to parse/save XML document
wxXML_IO_BIN, // save in binary uncompressed proprietary format
wxXML_IO_BINZ // svae in binary zlib-compressed proprietary format
};
// Represents node property(ies).
// Example: in <img src="hello.gif" id="3"/> "src" is property with value
// "hello.gif" and "id" is prop. with value "3".
class WXDLLEXPORT wxXmlProperty
{
public:
wxXmlProperty() : m_Next(NULL) {}
wxXmlProperty(const wxString& name, const wxString& value, wxXmlProperty *next)
: m_Name(name), m_Value(value), m_Next(next) {}
~wxXmlProperty() { delete m_Next; }
wxString GetName() const { return m_Name; }
wxString GetValue() const { return m_Value; }
wxXmlProperty *GetNext() const { return m_Next; }
void SetName(const wxString& name) { m_Name = name; }
void SetValue(const wxString& value) { m_Value = value; }
void SetNext(wxXmlProperty *next) { m_Next = next; }
private:
wxString m_Name;
wxString m_Value;
wxXmlProperty *m_Next;
};
// Represents node in XML document. Node has name and may have content
// and properties. Most common node types are wxXML_TEXT_NODE (name and props
// are irrelevant) and wxXML_ELEMENT_NODE (e.g. in <title>hi</title> there is
// element with name="title", irrelevant content and one child (wxXML_TEXT_NODE
// with content="hi").
class WXDLLEXPORT wxXmlNode
{
public:
wxXmlNode() : m_Properties(NULL), m_Parent(NULL),
m_Children(NULL), m_Next(NULL) {}
wxXmlNode(wxXmlNode *parent,wxXmlNodeType type,
const wxString& name, const wxString& content,
wxXmlProperty *props, wxXmlNode *next);
~wxXmlNode() { delete m_Properties; delete m_Next; delete m_Children; }
// copy ctor & operator=. Note that this does NOT copy syblings
// and parent pointer, i.e. m_Parent and m_Next will be NULL
// after using copy ctor and are never unmodified by operator=.
// On the other hand, it DOES copy children and properties.
wxXmlNode(const wxXmlNode& node);
wxXmlNode& operator=(const wxXmlNode& node);
// user-friendly creation:
wxXmlNode(wxXmlNodeType type, const wxString& name,
const wxString& content = wxEmptyString);
void AddChild(wxXmlNode *child);
void InsertChild(wxXmlNode *child, wxXmlNode *before_node);
bool RemoveChild(wxXmlNode *child);
void AddProperty(const wxString& name, const wxString& value);
bool DeleteProperty(const wxString& name);
// access methods:
wxXmlNodeType GetType() const { return m_Type; }
wxString GetName() const { return m_Name; }
wxString GetContent() const { return m_Content; }
wxXmlNode *GetParent() const { return m_Parent; }
wxXmlNode *GetNext() const { return m_Next; }
wxXmlNode *GetChildren() const { return m_Children; }
wxXmlProperty *GetProperties() const { return m_Properties; }
bool GetPropVal(const wxString& propName, wxString *value) const;
wxString GetPropVal(const wxString& propName, const wxString& defaultVal) const;
bool HasProp(const wxString& propName) const;
void SetType(wxXmlNodeType type) { m_Type = type; }
void SetName(const wxString& name) { m_Name = name; }
void SetContent(const wxString& con) { m_Content = con; }
void SetParent(wxXmlNode *parent) { m_Parent = parent; }
void SetNext(wxXmlNode *next) { m_Next = next; }
void SetChildren(wxXmlNode *child) { m_Children = child; }
void SetProperties(wxXmlProperty *prop) { m_Properties = prop; }
void AddProperty(wxXmlProperty *prop);
private:
wxXmlNodeType m_Type;
wxString m_Name;
wxString m_Content;
wxXmlProperty *m_Properties;
wxXmlNode *m_Parent, *m_Children, *m_Next;
void DoCopy(const wxXmlNode& node);
};
// This class holds XML data/document as parsed by libxml. Note that
// internal representation is independant on libxml and you can use
// it without libxml (see Load/SaveBinary).
class WXDLLEXPORT wxXmlDocument : public wxObject
{
public:
wxXmlDocument() : wxObject(), m_Version(_T("1.0")), m_Root(NULL) {}
wxXmlDocument(const wxString& filename, wxXmlIOType io_type = wxXML_IO_AUTO);
wxXmlDocument(wxInputStream& stream, wxXmlIOType io_type = wxXML_IO_AUTO);
~wxXmlDocument() { delete m_Root; }
wxXmlDocument(const wxXmlDocument& doc);
wxXmlDocument& operator=(const wxXmlDocument& doc);
// Parses .xml file and loads data. Returns TRUE on success, FALSE
// otherwise.
// NOTE: Any call to this method will result into linking against libxml
// and app's binary size will grow by ca. 250kB
bool Load(const wxString& filename, wxXmlIOType io_type = wxXML_IO_AUTO);
bool Load(wxInputStream& stream, wxXmlIOType io_type = wxXML_IO_AUTO);
// Saves document as .xml file.
bool Save(const wxString& filename, wxXmlIOType io_type) const;
bool Save(wxOutputStream& stream, wxXmlIOType io_type) const;
// Returns root node of the document.
wxXmlNode *GetRoot() const { return m_Root; }
// Returns version of document (may be empty).
wxString GetVersion() const { return m_Version; }
// Returns encoding of document (may be empty).
wxString GetEncoding() const { return m_Encoding; }
// Write-access methods:
void SetRoot(wxXmlNode *node) { delete m_Root ; m_Root = node; }
void SetVersion(const wxString& version) { m_Version = version; }
void SetEncoding(const wxString& encoding) { m_Encoding = encoding; }
static void AddHandler(wxXmlIOHandler *handler);
static void CleanUpHandlers();
static void InitStandardHandlers();
protected:
static wxList *sm_Handlers;
private:
wxString m_Version, m_Encoding;
wxXmlNode *m_Root;
void DoCopy(const wxXmlDocument& doc);
};
// wxXmlIOHandler takes care of loading and/or saving XML data.
// see xmlio.h for available handlers
class WXDLLEXPORT wxXmlIOHandler : public wxObject
{
public:
wxXmlIOHandler() {}
virtual wxXmlIOType GetType() = 0;
virtual bool CanLoad(wxInputStream& stream) = 0;
virtual bool CanSave() = 0;
virtual bool Load(wxInputStream& stream, wxXmlDocument& doc) = 0;
virtual bool Save(wxOutputStream& stream, const wxXmlDocument& doc) = 0;
};
#endif // _WX_XML_H_

View File

@@ -0,0 +1,72 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xmlio.h
// Purpose: wxXmlIOHandler - XML I/O classes
// Author: Vaclav Slavik
// Created: 2000/07/24
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XMLIO_H_
#define _WX_XMLIO_H_
#ifdef __GNUG__
#pragma interface "xmlio.h"
#endif
#include "wx/defs.h"
#include "wx/string.h"
#include "wx/xml/xml.h"
class WXDLLEXPORT wxXmlIOHandlerBin : public wxXmlIOHandler
{
public:
wxXmlIOHandlerBin() {}
virtual wxXmlIOType GetType() { return wxXML_IO_BIN; }
virtual bool CanLoad(wxInputStream& stream);
virtual bool CanSave() { return TRUE; }
virtual bool Load(wxInputStream& stream, wxXmlDocument& doc);
virtual bool Save(wxOutputStream& stream, const wxXmlDocument& doc);
protected:
wxString ReadHeader(wxInputStream& stream);
void WriteHeader(wxOutputStream& stream, const wxString& header);
};
#if wxUSE_ZLIB
class WXDLLEXPORT wxXmlIOHandlerBinZ : public wxXmlIOHandlerBin
{
public:
wxXmlIOHandlerBinZ() {}
virtual wxXmlIOType GetType() { return wxXML_IO_BINZ; }
virtual bool CanLoad(wxInputStream& stream);
virtual bool Load(wxInputStream& stream, wxXmlDocument& doc);
virtual bool Save(wxOutputStream& stream, const wxXmlDocument& doc);
};
#endif
class WXDLLEXPORT wxXmlIOHandlerLibxml : public wxXmlIOHandler
{
public:
virtual wxXmlIOType GetType() { return wxXML_IO_LIBXML; }
virtual bool CanLoad(wxInputStream& stream);
virtual bool CanSave();
virtual bool Load(wxInputStream& stream, wxXmlDocument& doc);
virtual bool Save(wxOutputStream& stream, const wxXmlDocument& doc);
};
#endif // _WX_XMLIO_H_

View File

@@ -0,0 +1,256 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xmlres.h
// Purpose: XML resources
// Author: Vaclav Slavik
// Created: 2000/03/05
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_XMLRES_H_
#define _WX_XMLRES_H_
#ifdef __GNUG__
#pragma interface "xmlres.h"
#endif
#include "wx/defs.h"
#include "wx/string.h"
#include "wx/dynarray.h"
#include "wx/datetime.h"
#include "wx/list.h"
#include "wx/gdicmn.h"
class WXDLLEXPORT wxMenu;
class WXDLLEXPORT wxMenuBar;
class WXDLLEXPORT wxDialog;
class WXDLLEXPORT wxPanel;
class WXDLLEXPORT wxWindow;
class WXDLLEXPORT wxXmlResourceHandler;
#include "wx/xml/xml.h"
class WXDLLEXPORT wxXmlResourceDataRecord
{
public:
wxXmlResourceDataRecord() : Doc(NULL), Time(wxDateTime::Now()) {}
~wxXmlResourceDataRecord() {delete Doc;}
wxString File;
wxXmlDocument *Doc;
wxDateTime Time;
};
WX_DECLARE_EXPORTED_OBJARRAY(wxXmlResourceDataRecord, wxXmlResourceDataRecords);
// This class holds XML resources from one or more .xml files
// (or derived forms, either binary or zipped -- see manual for
// details).
class WXDLLEXPORT wxXmlResource : public wxObject
{
public:
wxXmlResource();
wxXmlResource(const wxString& filemask);
~wxXmlResource();
// Loads resources from XML files that match given filemask.
// This method understands VFS (see filesys.h).
bool Load(const wxString& filemask);
// Initialize handlers for all supported controls/windows. This will
// make the executable quite big because it forces linking against
// most of wxWin library
void InitAllHandlers();
// Initialize only specific handler (or custom handler). Convention says
// that handler name is equal to control's name plus 'XmlHandler', e.g.
// wxTextCtrlXmlHandler, wxHtmlWindowXmlHandler. XML resource compiler
// (xmlres) can create include file that contains initialization code for
// all controls used within the resource.
void AddHandler(wxXmlResourceHandler *handler);
// Removes all handlers
void ClearHandlers();
// Loads menu from resource. Returns NULL on failure.
wxMenu *LoadMenu(const wxString& name);
// Loads menubar from resource. Returns NULL on failure.
wxMenuBar *LoadMenuBar(const wxString& name);
// Loads dialog. dlg points to parent window (if any). Second form
// is used to finish creation of already existing instance (main reason
// for this is that you may want to use derived class with new event table)
// Example (typical usage):
// MyDialog dlg;
// wxTheXmlResource->LoadDialog(&dlg, mainFrame, "my_dialog");
// dlg->ShowModal();
wxDialog *LoadDialog(wxWindow *parent, const wxString& name);
bool LoadDialog(wxDialog *dlg, wxWindow *parent, const wxString& name);
// Loads panel. panel points to parent window (if any). Second form
// is used to finish creation of already existing instance.
wxPanel *LoadPanel(wxWindow *parent, const wxString& name);
bool LoadPanel(wxPanel *panel, wxWindow *parent, const wxString& name);
// Returns numeric ID that is equivalent to string id used in XML
// resource. To be used in event tables
// Macro XMLID is provided for convenience
static int GetXMLID(const char *str_id);
protected:
// Scans resources list for unloaded files and loads them. Also reloads
// files that have been modified since last loading.
void UpdateResources();
// Finds resource (calls UpdateResources) and returns node containing it
wxXmlNode *FindResource(const wxString& name, const wxString& type);
// Creates resource from info in given node:
wxObject *CreateResFromNode(wxXmlNode *node, wxObject *parent, wxObject *instance = NULL);
// Remove nodes with property "platform" that does not
// match current platform
void ProcessPlatformProperty(wxXmlNode *node);
private:
wxList m_Handlers;
wxXmlResourceDataRecords m_Data;
friend class wxXmlResourceHandler;
};
// Global instance of resource class. For your convenience.
extern wxXmlResource *wxTheXmlResource;
// This macro translates string identifier (as used in XML resource,
// e.g. <menuitem id="my_menu">...</menuitem>) to integer id that is needed by
// wxWindows event tables.
// Example:
// BEGIN_EVENT_TABLE(MyFrame, wxFrame)
// EVT_MENU(XMLID("quit"), MyFrame::OnQuit)
// EVT_MENU(XMLID("about"), MyFrame::OnAbout)
// EVT_MENU(XMLID("new"), MyFrame::OnNew)
// EVT_MENU(XMLID("open"), MyFrame::OnOpen)
// END_EVENT_TABLE()
#define XMLID(str_id) \
wxXmlResource::GetXMLID(_T(str_id))
// This macro returns pointer to particular control in dialog
// created using XML resources. You can use it to set/get values from
// controls.
// Example:
// wxDialog dlg;
// wxTheXmlResource->LoadDialog(&dlg, mainFrame, "my_dialog");
// XMLCTRL(dlg, "my_textctrl", wxTextCtrl)->SetValue(_T("default value"));
#define XMLCTRL(window, id, type) \
((type*)((window).FindWindow(XMLID(id))))
class WXDLLEXPORT wxXmlResourceHandler : public wxObject
{
public:
wxXmlResourceHandler();
virtual ~wxXmlResourceHandler() {}
// Creates object (menu, dialog, control, ...) from XML node.
// Should check for validity.
// parent is higher-level object (usually window, dialog or panel)
// that is often neccessary to create resource
// if instance != NULL it should not create new instance via 'new' but
// rather use this one and call its Create method
wxObject *CreateResource(wxXmlNode *node, wxObject *parent, wxObject *instance);
// This one is called from CreateResource after variables
// were filled
virtual wxObject *DoCreateResource() = 0;
// Returns TRUE if it understands this node and can create
// resource from it, FALSE otherwise.
virtual bool CanHandle(wxXmlNode *node) = 0;
void SetParentResource(wxXmlResource *res) { m_Resource = res; }
protected:
wxXmlResource *m_Resource;
wxArrayString m_StyleNames;
wxArrayInt m_StyleValues;
// Variables (filled by CreateResource)
wxXmlNode *m_Node;
wxObject *m_Parent, *m_Instance;
wxWindow *m_ParentAsWindow, *m_InstanceAsWindow;
// --- Handy methods:
// Gets node content from wxXML_ENTITY_NODE
// (the problem is, <tag>content<tag> is represented as
// wxXML_ENTITY_NODE name="tag", content=""
// |-- wxXML_TEXT_NODE or
// wxXML_CDATA_SECTION_NODE name="" content="content"
wxString GetNodeContent(wxXmlNode *node);
// Check to see if a param exists
bool HasParam(const wxString& param);
// Finds the node or returns NULL
wxXmlNode *GetParamNode(const wxString& param);
wxString GetParamValue(const wxString& param);
// Add style flag (e.g. wxMB_DOCKABLE) to list of flags
// understood by this handler
void AddStyle(const wxString& name, int value);
// Gets style flags from text in form "flag | flag2| flag3 |..."
// Only understads flags added with AddStyle
int GetStyle(const wxString& param = _T("style"), int defaults = 0);
// Gets text from param and does some convertions:
// - replaces \n, \r, \t by respective chars (according to C syntax)
// - replaces $ by & and $$ by $ (needed for $File => &File because of XML)
// - converts encodings if neccessary
wxString GetText(const wxString& param);
// Return XMLID
int GetID();
wxString GetName();
// Get bool flag (1,t,yes,on,true are TRUE, everything else is FALSE)
bool GetBool(const wxString& param, bool defaultv = FALSE);
// Get integer value from param
long GetLong( const wxString& param, long defaultv = 0 );
// Get colour in HTML syntax (#RRGGBB)
wxColour GetColour(const wxString& param);
wxSize GetSize(const wxString& param = _T("size"));
wxPoint GetPosition(const wxString& param = _T("pos"));
// Sets common window options:
void SetupWindow(wxWindow *wnd);
void CreateChildren(wxObject *parent, bool only_this_handler = FALSE,
wxXmlNode *children_node = NULL /*stands for
GetParamNode("children")*/);
wxObject *CreateResFromNode(wxXmlNode *node, wxObject *parent, wxObject *instance = NULL)
{ return m_Resource->CreateResFromNode(node, parent, instance); }
};
#define ADD_STYLE(style) AddStyle(_T(#style), style)
#endif // _WX_XMLRES_H_

View File

@@ -41,6 +41,7 @@
#include "wx/mmedia/sndaiff.h"
#include "wx/mmedia/sndpcm.h"
#include "wx/mmedia/sndulaw.h"
#include "wx/mmedia/sndmsad.h"
#ifdef __UNIX__
#include "wx/mmedia/sndoss.h"
@@ -310,6 +311,16 @@ wxString MMBoardSoundFile::GetStringInformation()
break;
}
case wxSOUND_MSADPCM: {
wxSoundFormatMSAdpcm *adpcm_format = (wxSoundFormatMSAdpcm *)format;
info += wxString::Format(wxT("Microsoft ADPCM\n"));
info += wxString::Format(wxT("Sampling Rate: %d\n")
wxT("Number of channels: %d\n"),
adpcm_format->GetSampleRate(),
adpcm_format->GetChannels());
break;
}
case wxSOUND_ULAW: {
wxSoundFormatUlaw *ulaw_format = (wxSoundFormatUlaw *)format;
info += wxT("ULAW\n");

View File

@@ -207,12 +207,20 @@ wxUint8 MMBoardApp::TestMultimediaCaps()
delete dev;
// We test the OSS (Open Sound System) support.
// WARNING: There is a conflict between ESD and ALSA
// WARNING: There is a conflict between ESD and ALSA. We may be interrested
// in disabling the auto detection of OSS is ESD has been detected.
#if 1
if (!(caps & MM_SOUND_ESD)) {
#endif
dev = new wxSoundStreamOSS();
if (dev->GetError() == wxSOUND_NOERROR)
caps |= MM_SOUND_OSS;
delete dev;
#if 1
}
#endif
#endif
#ifdef __WIN32__

View File

@@ -1,6 +1,6 @@
# $Id$
CONTRIB_SUBDIRS=ogl mmedia stc
CONTRIB_SUBDIRS=ogl mmedia stc xml
all:
@for d in $(CONTRIB_SUBDIRS); do (cd $$d && $(MAKE)); done

View File

@@ -10,6 +10,13 @@
#endif
#include <wx/wxprec.h>
#ifndef WX_PRECOMP
#include "wx/defs.h"
#include "wx/string.h"
#include "wx/log.h"
#endif
#include "wx/mmedia/sndbase.h"
@@ -27,12 +34,14 @@ wxSoundFormatBase::~wxSoundFormatBase()
wxSoundFormatBase *wxSoundFormatBase::Clone() const
{
return NULL;
wxLogFatalError(wxT("In wxSoundFormatBase::Clone() but I should"
" not be there"));
return NULL;
}
bool wxSoundFormatBase::operator!=(const wxSoundFormatBase& frmt2) const
{
return (GetType() != frmt2.GetType());
return (GetType() != frmt2.GetType());
}
// ---------------------------------------------------------------------------
@@ -41,21 +50,21 @@ bool wxSoundFormatBase::operator!=(const wxSoundFormatBase& frmt2) const
wxSoundStream::wxSoundStream()
{
int i;
// Reset all variables to their neutral value.
m_sndformat = NULL;
m_handler = NULL;
m_snderror = wxSOUND_NOERROR;
m_lastcount = 0;
for (i=0;i<2;i++)
m_callback[i] = NULL;
int i;
// Reset all variables to their neutral value.
m_sndformat = NULL;
m_handler = NULL;
m_snderror = wxSOUND_NOERROR;
m_lastcount = 0;
for (i=0;i<2;i++)
m_callback[i] = NULL;
}
wxSoundStream::~wxSoundStream()
{
if (m_sndformat)
delete m_sndformat;
delete m_sndformat;
}
// --------------------------------------------------------------------------
@@ -69,13 +78,13 @@ wxSoundStream::~wxSoundStream()
// --------------------------------------------------------------------------
bool wxSoundStream::SetSoundFormat(const wxSoundFormatBase& format)
{
// delete the previous prepared format
if (m_sndformat)
delete m_sndformat;
// create a new one by cloning the format passed in parameter
m_sndformat = format.Clone();
return TRUE;
// delete the previous prepared format
if (m_sndformat)
delete m_sndformat;
// create a new one by cloning the format passed in parameter
m_sndformat = format.Clone();
return TRUE;
}

View File

@@ -379,11 +379,15 @@ bool wxSoundStreamPcm::SetSoundFormat(const wxSoundFormatBase& format)
// We try to minimize the need of dynamic memory allocation by preallocating a buffer. But
// to be sure it will be efficient we minimize the best size.
if (m_multiplier_in < m_multiplier_out) {
m_prebuffer_size = (wxUint32)(m_sndio->GetBestSize() * m_multiplier_out);
m_best_size = (wxUint32)(m_sndio->GetBestSize() * m_multiplier_in);
m_prebuffer_size = (wxUint32)(m_sndio->GetBestSize() *
m_multiplier_out);
m_best_size = (wxUint32)(m_sndio->GetBestSize() *
m_multiplier_in);
} else {
m_prebuffer_size = (wxUint32)(m_sndio->GetBestSize() * m_multiplier_in);
m_best_size = (wxUint32)(m_sndio->GetBestSize() * m_multiplier_out);
m_prebuffer_size = (wxUint32)(m_sndio->GetBestSize() *
m_multiplier_in);
m_best_size = (wxUint32)(m_sndio->GetBestSize() *
m_multiplier_out);
}
m_prebuffer = new char[m_prebuffer_size];

View File

@@ -18,6 +18,7 @@
#include "wx/mmedia/sndcpcm.h"
#include "wx/mmedia/sndulaw.h"
#include "wx/mmedia/sndg72x.h"
#include "wx/mmedia/sndmsad.h"
// --------------------------------------------------------------------------
// Sound codec router
@@ -106,6 +107,10 @@ bool wxSoundRouterStream::SetSoundFormat(const wxSoundFormatBase& format)
m_router = new wxSoundStreamG72X(*m_sndio);
m_router->SetSoundFormat(format);
break;
case wxSOUND_MSADPCM:
m_router = new wxSoundStreamMSAdpcm(*m_sndio);
m_router->SetSoundFormat(format);
break;
default:
return FALSE;

View File

@@ -6,10 +6,17 @@
// CVSID: $Id$
// --------------------------------------------------------------------------
#ifdef __GNUG__
#pragma implementation "sndulaw.cpp"
#pragma implementation "sndmsad.cpp"
#endif
#include <wx/wxprec.h>
#ifndef WX_PRECOMP
#include "wx/defs.h"
#include "wx/memory.h"
#include "wx/log.h"
#endif
#include "wx/mmedia/sndbase.h"
#include "wx/mmedia/sndfile.h"
#include "wx/mmedia/sndpcm.h"
@@ -22,12 +29,21 @@
wxSoundFormatMSAdpcm::wxSoundFormatMSAdpcm()
: m_srate(22050)
{
m_coefs = new wxMSAdpcmCoefs();
m_ncoefs = 0;
m_coefs_len = 0;
m_coefs = NULL;
}
wxSoundFormatMSAdpcm::~wxSoundFormatMSAdpcm()
{
delete m_coefs;
if (m_ncoefs) {
wxUint16 i;
for (i=0;i<m_ncoefs;i++)
delete[] m_coefs[i];
delete[] m_coefs;
}
}
void wxSoundFormatMSAdpcm::SetSampleRate(wxUint32 srate)
@@ -40,34 +56,83 @@ wxUint32 wxSoundFormatMSAdpcm::GetSampleRate() const
return m_srate;
}
void wxSoundFormatMSAdpcm::SetChannels(wxUint16 nchannels)
{
m_nchannels = nchannels;
}
wxUint16 wxSoundFormatMSAdpcm::GetChannels() const
{
return m_nchannels;
}
void wxSoundFormatMSAdpcm::SetCoefs(wxInt16 **coefs, wxUint16 ncoefs,
wxUint16 coefs_len)
{
wxUint16 i;
if (m_ncoefs) {
for (i=0;i<m_ncoefs;i++)
delete[] (m_coefs[i]);
delete[] m_coefs;
}
// TODO: Add some memory checking here
m_coefs = new (wxInt16 *)[ncoefs];
for (i=0;i<ncoefs;i++)
m_coefs[i] = new wxInt16[coefs_len];
m_ncoefs = ncoefs;
m_coefs_len = coefs_len;
}
void wxSoundFormatMSAdpcm::GetCoefs(wxInt16 **& coefs, wxUint16& ncoefs,
wxUint16& coefs_len) const
{
coefs = m_coefs;
ncoefs = m_ncoefs;
coefs_len = m_coefs_len;
}
void wxSoundFormatMSAdpcm::SetBlockSize(wxUint16 block_size)
{
m_block_size = block_size;
}
wxUint16 wxSoundFormatMSAdpcm::GetBlockSize() const
{
return m_block_size;
}
wxSoundFormatBase *wxSoundFormatMSAdpcm::Clone() const
{
wxSoundFormatMSAdpcm *adpcm = new wxSoundFormatMSAdpcm();
adpcm->m_srate = m_srate;
adpcm->m_coefs = new wxMSAdpcmCoefs();
*(adpcm->m_coefs) = *m_coefs;
adpcm->m_srate = m_srate;
adpcm->SetCoefs(m_coefs, m_ncoefs, m_coefs_len);
adpcm->m_nchannels = m_nchannels;
adpcm->m_block_size = m_block_size;
return adpcm;
}
wxUint32 wxSoundFormatMSAdpcm::GetTimeFromBytes(wxUint32 bytes) const
{
return 0;
return 2 * bytes / (m_nchannels * m_srate);
}
wxUint32 wxSoundFormatMSAdpcm::GetBytesFromTime(wxUint32 time) const
{
return 0;
return time * m_nchannels * m_srate / 2;
}
bool wxSoundFormatMSAdpcm::operator !=(const wxSoundFormatBase& frmt2) const
{
wxSoundFormatUlaw *adpcm = (wxSoundFormatMSAdpcm *)&frmt2;
const wxSoundFormatMSAdpcm *adpcm = (const wxSoundFormatMSAdpcm *)&frmt2;
if (frmt2.GetType() != wxSOUND_MSADPCM)
return TRUE;
return (adpcm->m_srate != m_srate) && 0;
return (adpcm->m_srate != m_srate) && (adpcm->m_nchannels != m_nchannels);
}
// --------------------------------------------------------------------------
@@ -79,6 +144,7 @@ wxSoundStreamMSAdpcm::wxSoundStreamMSAdpcm(wxSoundStream& sndio)
// PCM converter
m_router = new wxSoundRouterStream(sndio);
m_got_header = FALSE;
m_stereo = FALSE;
}
wxSoundStreamMSAdpcm::~wxSoundStreamMSAdpcm()
@@ -94,45 +160,188 @@ wxSoundStream& wxSoundStreamMSAdpcm::Read(void *buffer, wxUint32 len)
}
static wxInt16 gl_ADPCMcoeff_delta[] = {
230, 230, 230, 230, 307, 409, 512, 614, 768, 614, 512, 409, 307, 230, 230, 230
230, 230, 230, 230, 307, 409, 512, 614, 768, 614, 512, 409, 307,
230, 230, 230
};
static wxInt16 gl_ADPCMcoeff_1[] = {
256, 512, 0, 192, 240, 460, 392
};
wxUint32 wxSoundStreamMSAdpcm::DecodeMonoADPCM(const void *in_buffer,
void *out_buffer,
wxUint32 in_len)
{
wxUint8 *ADPCMdata;
wxInt16 *PCMdata;
AdpcmState *state;
wxUint32 out_len;
ADPCMdata = (wxUint8 *)in_buffer;
PCMdata = (wxInt16 *)out_buffer;
state = &m_state[0];
#define GET_DATA_16(i) i = *ADPCMdata++, i |= ((wxUint32)(*ADPCMdata++) << 8)
#define GET_DATA_8(i) i = (*ADPCMdata++)
static wxInt16 gl_ADPCMcoeff_2[] = {
0, -256, 0, 64, 0, -208, -232
};
out_len = 0;
while (in_len != 0) {
if (m_next_block == 0) {
GET_DATA_8(state->predictor);
GET_DATA_16(state->iDelta);
GET_DATA_16(state->samp1);
GET_DATA_16(state->samp2);
state->coeff[0] = state->coeff[1] = m_coefs[0][ state->predictor ];
*PCMdata++ = state->samp2;
*PCMdata++ = state->samp1;
in_len -= 7;
out_len += 4;
m_next_block = m_block_size;
continue;
}
while (in_len != 0 && m_next_block != 0) {
wxUint8 nib[2];
GET_DATA_8(nib[0]);
nib[1] = (nib[0] >> 4) & 0x0f;
nib[0] &= 0x0f;
Nibble(nib[0], state, &PCMdata);
Nibble(nib[1], state, &PCMdata);
in_len -= 4;
out_len += 4;
m_next_block -= 4;
}
}
return out_len;
#undef GET_DATA_16
#undef GET_DATA_8
}
wxUint32 wxSoundStreamMSAdpcm::DecodeStereoADPCM(const void *in_buffer,
void *out_buffer,
wxUint32 in_len)
{
wxUint8 *ADPCMdata;
wxInt16 *PCMdata;
AdpcmState *state0, *state1;
wxUint32 out_len;
ADPCMdata = (wxUint8 *)in_buffer;
PCMdata = (wxInt16 *)out_buffer;
state0 = &m_state[0];
state1 = &m_state[1];
#define GET_DATA_16(i) i = *ADPCMdata++, i |= ((wxUint32)(*ADPCMdata++) << 8)
#define GET_DATA_8(i) i = (*ADPCMdata++)
out_len = 0;
while (in_len != 0) {
if (!m_next_block) {
GET_DATA_8(state0->predictor);
GET_DATA_8(state1->predictor);
GET_DATA_16(state0->iDelta);
GET_DATA_16(state1->iDelta);
GET_DATA_16(state0->samp1);
GET_DATA_16(state1->samp1);
GET_DATA_16(state0->samp2);
GET_DATA_16(state1->samp2);
*PCMdata++ = state0->samp2;
*PCMdata++ = state1->samp2;
*PCMdata++ = state0->samp1;
*PCMdata++ = state1->samp1;
in_len -= 14;
out_len += 8;
m_next_block = m_block_size;
continue;
}
while (in_len != 0 && m_next_block > 0) {
wxUint8 nib[2];
GET_DATA_8(nib[0]);
nib[1] = (nib[0] >> 4) & 0x0f;
nib[0] &= 0x0f;
Nibble(nib[0], state0, &PCMdata);
Nibble(nib[1], state1, &PCMdata);
in_len -= 4;
out_len += 4;
m_next_block -= 4;
}
}
return out_len;
#undef GET_DATA_16
#undef GET_DATA_8
}
void wxSoundStreamMSAdpcm::Nibble(wxInt8 nyb,
AdpcmState *state,
wxInt16 **out_buffer)
{
wxUint32 new_delta;
wxInt32 new_sample;
// First: compute the next delta value
new_delta = (state->iDelta * gl_ADPCMcoeff_delta[nyb]) >> 8;
// If null, minor it by 16
if (!new_delta)
new_delta = 16;
// Barycentre
new_sample = (state->samp1 * state->coeff[0] +
state->samp2 * state->coeff[1]) / 256;
// Regenerate the sign
if (nyb & 0x08)
nyb -= 0x10;
new_sample += state->iDelta * nyb;
// Samples must be in [-32767, 32768]
if (new_sample < -32768)
new_sample = -32768;
else if (new_sample > 32767)
new_sample = 32767;
state->iDelta = new_delta;
state->samp2 = state->samp1;
state->samp1 = new_sample;
*(*out_buffer)++ = new_sample;
}
wxSoundStream& wxSoundStreamMSAdpcm::Write(const void *buffer, wxUint32 len)
{
wxInt16 delta;
wxUint8 ADPCMdata;
wxUint16 *PCMdata;
wxInt16 coeff1, coeff2;
wxUint8 *out_buf;
wxUint32 new_len;
#define GET_DATA_16 (*ADPCMdata++ | ((wxUint32)(*ADPCMdata++) << 8);
#define GET_DATA_8 (*ADPCMdata++)
if (!m_got_header) {
i_predict = GET_DATA_8;
delta = GET_DATA_16;
samp1 = GET_DATA_16;
PCMdata = GET_DATA_16;
len -= 3*2 + 1;
m_got_header = TRUE;
// TODO: prealloc the output buffer
out_buf = new wxUint8[len*2];
coeff1 = gl_ADPCMcoeff_1[i_predict];
coeff2 = gl_ADPCMcoeff_2[i_predict];
}
if (!m_stereo)
new_len = DecodeMonoADPCM(buffer, out_buf, len);
else
new_len = DecodeStereoADPCM(buffer, out_buf, len);
m_router->Write(out_buf, new_len);
m_lastcount = len;
m_snderror = wxSOUND_NOERROR;
delete[] out_buf;
while (len > 0) {
nyb1 = GET_DATA_8;
nyb0 = (nyb1 & 0xf0) >> 4;
nyb1 &= 0x0f;
return *this;
}
@@ -143,23 +352,36 @@ wxUint32 wxSoundStreamMSAdpcm::GetBestSize() const
bool wxSoundStreamMSAdpcm::SetSoundFormat(const wxSoundFormatBase& format)
{
if (format.GetType() != wxSOUND_ULAW) {
if (format.GetType() != wxSOUND_MSADPCM) {
m_snderror = wxSOUND_INVFRMT;
return FALSE;
}
wxSoundFormatPcm pcm;
wxSoundFormatUlaw *ulaw;
wxSoundFormatMSAdpcm *adpcm;
wxUint16 ncoefs, coefs_len;
wxSoundStreamCodec::SetSoundFormat(format);
ulaw = (wxSoundFormatMSAdpcm *)m_sndformat;
adpcm = (wxSoundFormatMSAdpcm *)m_sndformat;
adpcm->GetCoefs(m_coefs, ncoefs, coefs_len);
if (!ncoefs) {
wxLogError(__FILE__ ":%d: Number of ADPCM coefficients"
" must be non null", __LINE__);
return FALSE;
}
pcm.SetSampleRate(adpcm->GetSampleRate());
pcm.SetBPS(16);
pcm.SetChannels(adpcm->GetChannels());
pcm.Signed(TRUE);
pcm.SetOrder(wxBYTE_ORDER);
m_stereo = (adpcm->GetChannels() == 2);
m_block_size = adpcm->GetBlockSize();
m_next_block = 0;
m_router->SetSoundFormat(pcm);

View File

@@ -163,8 +163,9 @@ bool wxSoundStreamUlaw::SetSoundFormat(const wxSoundFormatBase& format)
return FALSE;
}
// As the codec only support 16 bits, Mono we must use a wxSoundRouter to filter the data and
// to translate them to a format supported by the sound card.
// As the codec only support 16 bits, Mono we must use a wxSoundRouter
// to filter the data and to translate them to a format supported
// by the sound card.
wxSoundFormatPcm pcm;
wxSoundFormatUlaw *ulaw;

View File

@@ -29,6 +29,7 @@
#include "wx/mmedia/sndfile.h"
#include "wx/mmedia/sndpcm.h"
#include "wx/mmedia/sndg72x.h"
#include "wx/mmedia/sndmsad.h"
#include "wx/mmedia/sndwav.h"
#define BUILD_SIGNATURE(a,b,c,d) (((wxUint32)a) | (((wxUint32)b) << 8) | (((wxUint32)c) << 16) | (((wxUint32)d) << 24))
@@ -97,7 +98,8 @@ bool wxSoundWave::CanRead()
return TRUE;
}
bool wxSoundWave::HandleOutputPCM(wxDataInputStream& data, wxUint16 channels,
bool wxSoundWave::HandleOutputPCM(wxDataInputStream& data, wxUint32 len,
wxUint16 channels,
wxUint32 sample_fq, wxUint32 byte_p_sec,
wxUint16 byte_p_spl, wxUint16 bits_p_spl)
{
@@ -112,10 +114,53 @@ bool wxSoundWave::HandleOutputPCM(wxDataInputStream& data, wxUint16 channels,
if (!SetSoundFormat(sndformat))
return FALSE;
m_input->SeekI(len, wxFromCurrent);
return TRUE;
}
bool wxSoundWave::HandleOutputG721(wxDataInputStream& data, wxUint16 channels,
bool wxSoundWave::HandleOutputMSADPCM(wxDataInputStream& data, wxUint32 len,
wxUint16 channels,
wxUint32 sample_fq, wxUint32 byte_p_sec,
wxUint16 byte_p_spl, wxUint16 bits_p_spl)
{
wxSoundFormatMSAdpcm sndformat;
wxInt16 *coefs[2];
wxUint16 coefs_len, i;
wxUint16 block_size;
sndformat.SetSampleRate(sample_fq);
sndformat.SetChannels(channels);
block_size = data.Read16();
coefs_len = data.Read16();
coefs[0] = new wxInt16[coefs_len];
coefs[1] = new wxInt16[coefs_len];
for (i=0;i<coefs_len;i++) {
coefs[0][i] = data.Read16();
coefs[1][i] = data.Read16();
}
sndformat.SetCoefs(coefs, 2, coefs_len);
sndformat.SetBlockSize(block_size);
delete[] coefs[0];
delete[] coefs[1];
if (!SetSoundFormat(sndformat))
return FALSE;
len -= coefs_len*4 + 4;
m_input->SeekI(len, wxFromCurrent);
return TRUE;
}
bool wxSoundWave::HandleOutputG721(wxDataInputStream& data, wxUint32 len,
wxUint16 channels,
wxUint32 sample_fq, wxUint32 byte_p_sec,
wxUint16 byte_p_spl, wxUint16 bits_p_spl)
{
@@ -127,6 +172,8 @@ bool wxSoundWave::HandleOutputG721(wxDataInputStream& data, wxUint16 channels,
if (!SetSoundFormat(sndformat))
return FALSE;
m_input->SeekI(len, wxFromCurrent);
return TRUE;
}
@@ -173,16 +220,27 @@ bool wxSoundWave::PrepareToPlay()
// Get the common parameters
data >> format >> channels >> sample_fq
>> byte_p_sec >> byte_p_spl >> bits_p_spl;
len -= 16;
switch (format) {
case 0x01: // PCM
if (!HandleOutputPCM(data, channels, sample_fq,
byte_p_sec, byte_p_spl, bits_p_spl))
if (!HandleOutputPCM(data, len, channels, sample_fq,
byte_p_sec, byte_p_spl,
bits_p_spl))
return FALSE;
break;
case 0x02: // MS ADPCM
if (!HandleOutputMSADPCM(data, len,
channels, sample_fq,
byte_p_sec, byte_p_spl,
bits_p_spl))
return FALSE;
break;
case 0x40: // G721
if (!HandleOutputG721(data, channels, sample_fq,
byte_p_sec, byte_p_spl, bits_p_spl))
if (!HandleOutputG721(data, len,
channels, sample_fq,
byte_p_sec, byte_p_spl,
bits_p_spl))
return FALSE;
break;
default:

View File

@@ -98,8 +98,11 @@ wxSoundStreamWin::wxSoundStreamWin()
m_waiting_for = FALSE;
if (!OpenDevice(wxSOUND_OUTPUT))
return;
if (!OpenDevice(wxSOUND_OUTPUT)) {
m_snderror = wxSOUND_NOERROR; //next call to OpenDevice won't do this
if (!OpenDevice(wxSOUND_INPUT))
return;
}
CloseDevice();
}

View File

@@ -503,7 +503,8 @@ bool wxVideoXANIM::RestartXANIM()
m_video_output->SetSize(vibrato_size);
vibrato_size.SetWidth(vibrato_size.GetWidth()-1);
m_video_output->SetSize(vibrato_size);
// Very useful ! Actually it sends a SETSIZE event to XAnim
// Very useful ! Actually it "should" sends a SETSIZE event to XAnim
// FIXME: This event is not sent !!
m_paused = FALSE;

View File

@@ -0,0 +1,112 @@
// SciTE - Scintilla based Text Editor
// Accessor.cxx - rapid easy access to contents of a Scintilla
// Copyright 1998-2000 by Neil Hodgson <neilh@scintilla.org>
// The License.txt file describes the conditions under which this software may be distributed.
#include <stdlib.h>
#include <stdio.h>
#include "Platform.h"
#include "PropSet.h"
#include "Accessor.h"
#include "Scintilla.h"
void Accessor::Fill(int position) {
if (lenDoc == -1)
lenDoc = Platform::SendScintilla(id, WM_GETTEXTLENGTH, 0, 0);
startPos = position - slopSize;
if (startPos + bufferSize > lenDoc)
startPos = lenDoc - bufferSize;
if (startPos < 0)
startPos = 0;
endPos = startPos + bufferSize;
if (endPos > lenDoc)
endPos = lenDoc;
TEXTRANGE tr = {{startPos, endPos}, buf};
Platform::SendScintilla(id, EM_GETTEXTRANGE, 0, reinterpret_cast<LPARAM>(&tr));
}
char Accessor::StyleAt(int position) {
return static_cast<char>(Platform::SendScintilla(
id, SCI_GETSTYLEAT, position, 0));
}
int Accessor::GetLine(int position) {
return Platform::SendScintilla(id, EM_LINEFROMCHAR, position, 0);
}
int Accessor::LineStart(int line) {
return Platform::SendScintilla(id, EM_LINEINDEX, line, 0);
}
int Accessor::LevelAt(int line) {
return Platform::SendScintilla(id, SCI_GETFOLDLEVEL, line, 0);
}
int Accessor::Length() {
if (lenDoc == -1)
lenDoc = Platform::SendScintilla(id, WM_GETTEXTLENGTH, 0, 0);
return lenDoc;
}
int Accessor::GetLineState(int line) {
return Platform::SendScintilla(id, SCI_GETLINESTATE, line);
}
int Accessor::SetLineState(int line, int state) {
return Platform::SendScintilla(id, SCI_SETLINESTATE, line, state);
}
void StylingContext::StartAt(unsigned int start, char chMask) {
Platform::SendScintilla(id, SCI_STARTSTYLING, start, chMask);
}
void StylingContext::ColourSegment(unsigned int start, unsigned int end, int chAttr) {
// Only perform styling if non empty range
if (end != start - 1) {
if (end < start) {
Platform::DebugPrintf("Bad colour positions %d - %d\n", start, end);
}
if (validLen + (end - start + 1) >= bufferSize)
Flush();
if (validLen + (end - start + 1) >= bufferSize) {
// Too big for buffer so send directly
Platform::SendScintilla(id, SCI_SETSTYLING, end - start + 1, chAttr);
} else {
if (chAttr != chWhile)
chFlags = 0;
chAttr |= chFlags;
for (unsigned int i = start; i <= end; i++) {
styleBuf[validLen++] = chAttr;
}
}
}
}
void StylingContext::StartSegment(unsigned int pos) {
startSeg = pos;
}
void StylingContext::ColourTo(unsigned int pos, int chAttr) {
ColourSegment(startSeg, pos, chAttr);
startSeg = pos+1;
}
int StylingContext::GetLine(int position) {
return Platform::SendScintilla(id, EM_LINEFROMCHAR, position, 0);
}
void StylingContext::SetLevel(int line, int level) {
Platform::SendScintilla(id, SCI_SETFOLDLEVEL, line, level);
}
void StylingContext::Flush() {
if (validLen > 0) {
Platform::SendScintilla(id, SCI_SETSTYLINGEX, validLen,
reinterpret_cast<LPARAM>(styleBuf));
validLen = 0;
}
}

324
contrib/src/xml/FORMAT.txt Normal file
View File

@@ -0,0 +1,324 @@
XML resources file format
===============================
1. Basics
-----------
XML resource is well-formed XML document, i.e. all tags are paired
and there is only one root node, which is always <resource>.
In the following text, I will use standard XML terminology:
<tag_one prop1="prop" prop2='yes'>
<tag_two/>
</tag_one>
Here, tag_one is a node (the word 'tag' refers to the type of the node),
prop1 and prop2 are properties and tag_two is a child node of tag_one.
Property's default value is the value that will be assigned to the property
if you do not specify it explicitly.
I will use the term "primary node" to refer to nodes than represent controls,
dialogs etc. "Secondary nodes" are nodes used to store data:
<dialog name="my_dlg"> primary
<title>Demo Dialog...</title> secondary
<size>100,200d</size> secondary
<children> secondary
<button name="wxID_OK"> primary
<label>Ok</label> secondary
<pos>10,10d</pos> secondary
</button>
</children>
</dialog>
In the example above, <label>, <pos>, <size> and <title> are "variables",
i.e. they contain a value and not a list of children (unlike <children> node).
Any node (but the root one) may have property "platform" with possible
values "unix", "win", "mac" or "os2". All nodes with "platform" property
specified and other than the platform the program is currently being executed
on will be removed when reading XML resource file.
Root node may have children of these and only these types: <menu>, <menubar>,
<dialog>, <panel>
2. IDs
--------
Any primary node may have property "name" used to identify it. Default value
is "-1", any string is legal name. Names
wxID_OPEN, wxID_CLOSE, wxID_NEW,
wxID_SAVE, wxID_SAVEAS, wxID_REVERT,
wxID_EXIT, wxID_UNDO, wxID_REDO,
wxID_HELP, wxID_PRINT, wxID_PRINT_SETUP,
wxID_PREVIEW, wxID_ABOUT, wxID_HELP_CONTENTS,
wxID_HELP_COMMANDS, wxID_HELP_PROCEDURES,
wxID_CUT, wxID_COPY, wxID_PASTE,
wxID_CLEAR, wxID_FIND, wxID_DUPLICATE,
wxID_SELECTALL, wxID_OK, wxID_CANCEL,
wxID_APPLY, wxID_YES, wxID_NO,
wxID_STATIC, wxID_FORWARD, wxID_BACKWARD,
wxID_DEFAULT, wxID_MORE, wxID_SETUP,
wxID_RESET, wxID_HELP_CONTEXT
are translated into corresponding wxWindows ID constant, XMLID macro is used
otherwise to generate unique ID. wxWindows control created from named node
will have name=name and id=XMLID(name) or wxID_XXXX.
3. Common variables types
---------------------------
Variables are always of a known type:
bool - boolean value. "1", "true", "t", "on" mean TRUE, anything
else (namely "0", "false", "f", "off") means FALSE.
FIXME: maybe use only 1/0 ??
integer - integer value, i.e. digits 0-9 plus optional minus sign.
text - anything. Within text node all occurences of $ are replaced
by & (used for shortcuts, e.g. "E&xit"), $$ by $, \\, \n, \r,
\t as usual in C++.
style - (also called flags) list of flags delimined by any combination
of spaces and | characters. Resources parser accepts only
_registered_ flags -- i.e. flags that are valid for given
node/control. Example:
<flag>wxEXPAND | wxTOP|wxBOTTOM</flag>
color - color in HTML format: #rrggbb where rr,gg,bb are hexadecimal
values (00-FF) for red, green and blue components in
the RGB color model
coord - size or position information. Consists of two integers
separated by comma ("x,y"). The values are in pixels
unless "d" is attached to the right side of it --
in which case the values are interpreted as dialog units.
Value of -1 means "use default". Examples:
30,30
-1,-1
50,-1
145,56d
67,-1d
4. Layout
-----------
Most common nodes layout is as follows:
<primary_node name="name" platform="platform">
<var_1>...</var_1>
.
.
.
<var_n>...</var_n>
<children>
(n primary nodes)
</children>
</primary_node>
where children node is supported only by panels, dialogs etc. -- see
nodes description for details.
In the following text,
TYPE var_name [ (= default_value) ]
means that given primary node may have child node with name var_name
and content type TYPE. If default value is given, the node is optional
and default_value will be used if not specified. Otherwise, the node
is mandatory and must always be present. For example, "color fg" means
than variable tag fg, e.g. <fg>#rr0000</fg> is expected.
5. Common controls variables
------------------------------
_All_ nodes that represent wxWindows controls (gauge, panel, dialog,
textctrl etc.) accept the following properties:
coord pos (= -1,-1) position of the control. Default value
equals to wxDefaultPosition
coord size (= -1,-1) size of the control. Default value equals to
wxDefaultSize
text tooltip window's tooltip
color bg background color of the control
color fg foreground/text color of the control
style style control style flag. Default value is
control-dependent (but 0 is common value)
style exstyle control extended style flag
bool enabled (= 1) is the control enabled?
bool hidden (= 0) is the control hidden?
bool focused (= 0) has the control focus?
_Usually_ (but not always, only when it makes sense) controls support text
variable label which contains displayed text and/or value which contains
editable text. These are always explicitly mentioned in tag description.
6. Tags description
---------------------
If 'Control' is derived from wxControl, it supports all variables from '5.'
'Styles' section lists all acceptable flags for style and exstyle variables.
<panel>
---------
Control:
wxPanel
Variables:
only common controls variables
Styles:
wxNO_3D, wxTAB_TRAVERSAL, wxWS_EX_VALIDATE_RECURSIVELY
<dialog>
----------
Control:
wxDialog
Variables:
style style (= wxDEFAULT_DIALOG_style)
text title dialog's title
Styles:
wxSTAY_ON_TOP, wxCAPTION, wxDEFAULT_DIALOG_style, wxTHICK_FRAME,
wxSYSTEM_MENU, wxRESIZE_BORDER, wxRESIZE_BOX, wxDIALOG_MODAL,
wxDIALOG_MODELESS, wxNO_3D, wxTAB_TRAVERSAL,
wxWS_EX_VALIDATE_RECURSIVELY
<boxsizer>
--------------
Control:
wxBoxSizer (not a control)
Behaviour:
boxsizer's parent must be either <panel>, <dialog> or another
sizer, nothing else!
If the sizer does not have parent sizer, the sizer will attach itself
to the parent panel/dialog using SetAutoLayout(TRUE) and SetSizer().
If the parent panel/dialog has default size (i.e. not specified in
the resource), the sizer will fit it using wxSizer::Fit(). If the
parent panel/dialog is resizable, size hints will be set
automatically.
Variables:
style orient (= wxHORIZONTAL) orientation, either
wxHORIZONTAL or wxVERTICAL
Styles:
wxHORIZONTAL, wxVERTICAL (for orient variable)
wxLEFT, wxRIGHT, wxTOP, wxBOTTOM, wxNORTH, wxSOUTH, wxEAST, wxWEST,
wxALL, wxGROW, wxEXPAND, wxSHAPED, wxSTRETCH_NOT, wxALIGN_CENTER,
wxALIGN_CENTRE, wxALIGN_LEFT, wxALIGN_TOP, wxALIGN_RIGHT,
wxALIGN_BOTTOM, wxALIGN_CENTER_HORIZONTAL, wxALIGN_CENTRE_HORIZONTAL,
wxALIGN_CENTER_HORIZONTAL, wxALIGN_CENTRE_HORIZONTAL (for flag
variable of <item> or <spacer> child nodes)
Child nodes:
Contains child node <children> which has arbitrary number of
<sizeritem> and <spacer> child nodes.
<sizeritem>
-------------
Variables:
integer option (= 0) relative size of the widget
style flag (= 0) style flag
integer border (= 0) surrounding border
Has exactly one child node <window> that contains the control
(or child sizer because sizers may be nested)
to be inserted into the sizer.
<spacer>
----------
Variables:
integer option (= 0) relative size of the widget
style flag (= 0) style flag
integer border (= 0) surrounding border
Inserts empty space into the sizer
<staticboxsizer>
------------------
Control:
wxStaticBoxSizer (not a control)
Same as <boxsizer> except that it has additional variable:
text label (= "") label of surrounding static box
wxStaticBox required by wxStaticBoxSizer is created automatically!
<notebooksizer>
-----------------
Control:
wxNotebookSizer (not a control)
Behaviour:
notebooksizer's parent must be a sizer (not notebooksizer,
see below)!
Variables:
none
Styles:
none
Child nodes:
Has exactly one child node <window> that contains the notebook
(nothing else is allowed!) to be inserted into the sizer.
<textctrl>
------------
Control:
wxTextCtrl
Variables:
text value (= "")default text of the control
Styles:
wxTE_PROCESS_ENTER, wxTE_PROCESS_TAB, wxTE_MULTILINE, wxTE_PASSWORD,
wxTE_READONLY, wxHSCROLL
<htmlwindow>
--------------
Control:
wxHtmlWindow
Variables:
integer borders (= 0) window's borders
(see wxHtmlWindow::SetBorders)
text url (= "") if present, given page will be loaded
text htmlcode (= "") if present, given _text_ will be displayed
(you will have to use CDATA section
to embed HTML code into XML document)
Styles:
wxHW_SCROLLBAR_NEVER, wxHW_SCROLLBAR_AUTO

View File

@@ -0,0 +1,31 @@
# $Id$
top_srcdir = @top_srcdir@/..
top_builddir = ../../..
libsrc_dir = contrib/src/xml
TARGET_LIBNAME=libwxxml
LIBVERSION_CURRENT=0
LIBVERSION_REVISION=1
LIBVERSION_AGE=0
HEADER_PATH=$(top_srcdir)/contrib/include/wx
HEADER_SUBDIR=xml
HEADERS=xh_all.h xh_bttn.h xh_chckb.h xh_chckl.h xh_choic.h xh_combo.h \
xh_dlg.h xh_gauge.h xh_html.h xh_menu.h xh_notbk.h xh_panel.h \
xh_radbt.h xh_radbx.h xh_sizer.h xh_slidr.h xh_spin.h xh_stbmp.h \
xh_sttxt.h xh_text.h xh_listb.h xml.h xmlio.h xmlres.h
OBJECTS=xml.o xmlbin.o xmlbinz.o xmlpars.o xmlres.o xmlrsall.o \
xh_bttn.o xh_chckb.o xh_chckl.o xh_choic.o xh_combo.o xh_dlg.o \
xh_gauge.o xh_html.o xh_menu.o xh_notbk.o xh_panel.o xh_radbt.o \
xh_radbx.o xh_sizer.o xh_slidr.o xh_spin.o xh_stbmp.o xh_sttxt.o \
xh_text.o xh_listb.o \
APPEXTRADEFS=-I$(top_srcdir)/contrib/include
include $(top_builddir)/src/makelib.env

13
contrib/src/xml/README Normal file
View File

@@ -0,0 +1,13 @@
This is hightly incomplete version, not meant for general use!
You will need libxml version 2.2.1 or higher, available
from http://xmlsoft.org. There is a link to precompiled win32 DLL as well.
You can find everything you need to use libxml together with
wxWindows under win32 at http://www.volny.cz/v.slavik/libxml-win32.zip
libxml is distributed under either GNU LGPL or W3C IPR
(http://www.w3.org/Consortium/Legal/copyright-software-19980720.html),
you can choose from them.

View File

@@ -0,0 +1,23 @@
#
# File: makefile.b32
# Author: Julian Smart
# Created: 2000
# Updated:
# Copyright:
#
# Makefile : Builds BC++ library for 32-bit BC++
WXDIR = $(WXWIN)
EXTRACPPFLAGS=/Id:\libxml\libxml2-2.1.1
LIBTARGET=$(WXDIR)\lib\wxxml.lib
OBJECTS=xml.obj xmlbin.obj xmlbinz.obj xmlpars.obj xmlres.obj xmlrsall.obj \
xh_bttn.obj xh_chckb.obj xh_chckl.obj xh_choic.obj xh_combo.obj xh_dlg.obj \
xh_gauge.obj xh_html.obj xh_menu.obj xh_notbk.obj xh_panel.obj xh_radbt.obj \
xh_radbx.obj xh_sizer.obj xh_slidr.obj xh_spin.obj xh_stbmp.obj xh_sttxt.obj \
xh_text.obj xh_listb.obj
!include $(WXDIR)\src\makelib.b32

View File

@@ -0,0 +1,22 @@
#
# File: makefile.g95
# Author: Julian Smart
# Created: 2000
# Updated:
# Copyright: (c) Julian Smart, 2000
#
# Makefile for wxWindows wxXML library (Cygwin/Mingw32).
WXDIR = ../../..
EXTRACPPFLAGS=/Id:/libxml/libxml2-2.1.1
LIBTARGET=$(WXDIR)/lib/libwxxml.a
OBJECTS=xml.o xmlbin.o xmlbinz.o xmlpars.o xmlres.o xmlrsall.o \
xh_bttn.o xh_chckb.o xh_chckl.o xh_choic.o xh_combo.o xh_dlg.o \
xh_gauge.o xh_html.o xh_menu.o xh_notbk.o xh_panel.o xh_radbt.o \
xh_radbx.o xh_sizer.o xh_slidr.o xh_spin.o xh_stbmp.o xh_sttxt.o \
xh_text.o xh_listb.o
include $(WXDIR)/src/makelib.g95

122
contrib/src/xml/makefile.vc Normal file
View File

@@ -0,0 +1,122 @@
# File: makefile.vc
# Author: Julian Smart
# Created: 1993
# Updated:
# Copyright: (c) 1993, AIAI, University of Edinburgh
#
# "%W% %G%"
#
# Makefile : Builds wxXML classes library (MS VC++).
# Use FINAL=1 argument to nmake to build final version with no debugging
# info
# Set WXDIR for your system
WXDIR = $(WXWIN)
wxXMLDIR = $(WXDIR)\contrib\src\xml
wxXMLINC = $(WXDIR)\contrib\include\wx\xml
THISDIR = $(WXDIR)\contrib\src\xml
DOCDIR=$(WXDIR)\contrib\docs
LOCALDOCDIR=$(WXDIR)\contrib\docs\latex\xml
# Set this to where your libxml is
EXTRAFLAGS=-Id:\libxml\libxml2-2.1.1
# Unfortunately we need this _before_ we include makelib.vc
!if "$(FINAL)" == "1"
D=Release
!else
D=Debug
LIBEXT=d
!endif
LIBTARGET=$(WXDIR)\lib\wxxml$(LIBEXT).lib
EXTRATARGETS=$(D)
OBJECTS=$(D)\xml.obj $(D)\xmlbin.obj $(D)\xmlbinz.obj $(D)\xmlpars.obj $(D)\xmlres.obj $(D)\xmlrsall.obj \
$(D)\xh_bttn.obj $(D)\xh_chckb.obj $(D)\xh_chckl.obj $(D)\xh_choic.obj $(D)\xh_combo.obj $(D)\xh_dlg.obj \
$(D)\xh_gauge.obj $(D)\xh_html.obj $(D)\xh_menu.obj $(D)\xh_notbk.obj $(D)\xh_panel.obj $(D)\xh_radbt.obj \
$(D)\xh_radbx.obj $(D)\xh_sizer.obj $(D)\xh_slidr.obj $(D)\xh_spin.obj $(D)\xh_stbmp.obj $(D)\xh_sttxt.obj \
$(D)\xh_text.obj $(D)\xh_listb.obj
!include $(WXDIR)\src\makelib.vc
DOCSOURCES=$(LOCALDOCDIR)\xml.tex \
$(LOCALDOCDIR)\bugs.tex $(LOCALDOCDIR)\changes.tex\
$(LOCALDOCDIR)\classes.tex $(LOCALDOCDIR)\intro.tex\
$(LOCALDOCDIR)\topics.tex $(LOCALDOCDIR)\sample.tex
html: $(DOCDIR)\html\xml\xml.htm
htmlhelp: $(DOCDIR)\htmlhelp\xml.chm
htb: $(DOCDIR)\htb\xml.htb
hlp: $(DOCDIR)\winhelp\xml.hlp
pdfrtf: $(DOCDIR)\pdf\xml.rtf
ps: $(DOCDIR)\ps\xml.ps
touchmanual:
touch $(LOCALDOCDIR)\xml.tex
$(DOCDIR)\winhelp\xml.hlp: $(LOCALDOCDIR)\xml.rtf $(LOCALDOCDIR)\xml.hpj
cd $(LOCALDOCDIR)
-erase xml.ph
hc xml
move xml.hlp $(DOCDIR)\winhelp\xml.hlp
move xml.cnt $(DOCDIR)\winhelp\xml.cnt
cd $(THISDIR)
$(LOCALDOCDIR)\xml.rtf: $(DOCSOURCES)
cd $(LOCALDOCDIR)
-start $(WAITFLAG) tex2rtf $(LOCALDOCDIR)\xml.tex $(LOCALDOCDIR)\xml.rtf -twice -winhelp
cd $(THISDIR)
$(DOCDIR)\pdf\xml.rtf: $(DOCSOURCES)
cd $(LOCALDOCDIR)
-copy *.bmp $(DOCDIR)\pdf
-start $(WAITFLAG) tex2rtf $(LOCALDOCDIR)\xml.tex $(DOCDIR)\pdf\xml.rtf -twice -rtf
cd $(THISDIR)
$(DOCDIR)\html\xml\xml.htm: $(DOCSOURCES)
cd $(LOCALDOCDIR)
-mkdir $(DOCDIR)\html\xml
copy *.gif $(DOCDIR)\html\xml
-start $(WAITFLAG) tex2rtf $(LOCALDOCDIR)\xml.tex $(DOCDIR)\html\xml\xml.htm -twice -html
-erase $(DOCDIR)\html\xml\*.con
-erase *.con
-erase $(DOCDIR)\html\xml\*.ref
cd $(THISDIR)
$(DOCDIR)\htmlhelp\xml.chm: $(DOCDIR)\html\xml\xml.htm $(DOCDIR)\html\xml\xml.hhp
cd $(DOCDIR)\html\xml
-hhc xml.hhp
move xml.chm $(DOCDIR)\htmlhelp\xml.chm
cd $(THISDIR)
# An htb file is a zip file containing the .htm, .gif, .hhp, .hhc and .hhk
# files, renamed to htb.
# This can then be used with e.g. helpview.
# Optionally, a cached version of the .hhp file can be generated with hhp2cached.
$(DOCDIR)\htb\xml.htb: $(DOCDIR)\html\xml\xml.htm
cd $(DOCDIR)\html\xml
-erase /Y xml.zip xml.htb
zip32 xml.zip *.htm *.gif *.hhp *.hhc *.hhk
-mkdir $(DOCDIR)\htb
move xml.zip $(DOCDIR)\htb\xml.htb
cd $(THISDIR)
$(LOCALDOCDIR)\xml.dvi: $(DOCSOURCES)
cd $(LOCALDOCDIR)
-latex xml
-latex xml
-makeindx xml
-bibtex xml
-latex xml
-latex xml
cd $(THISDIR)
$(WXDIR)\docs\ps\xml.ps: $(LOCALDOCDIR)\xml.dvi
cd $(LOCALDOCDIR)
-dvips32 -o xml.ps xml
move xml.ps $(WXDIR)\docs\ps\xml.ps
cd $(THISDIR)

View File

@@ -0,0 +1,29 @@
# wxXML makefile
WXDIR = ..\..\..
EXTRACPPFLAGS=/Id:\libxml\libxml2-2.1.1
!include $(WXDIR)\src\makewat.env
WXXMLLIB = $(WXDIR)\lib\wxxml.lib
THISDIR = $(WXDIR)\contrib\src\xml
NAME = wxxml
LNK = $(name).lnk
OBJECTS=xml.obj xmlbin.obj xmlbinz.obj xmlpars.obj xmlres.obj xmlrsall.obj &
xh_bttn.obj xh_chckb.obj xh_chckl.obj xh_choic.obj xh_combo.obj xh_dlg.obj &
xh_gauge.obj xh_html.obj xh_menu.obj xh_notbk.obj xh_panel.obj xh_radbt.obj &
xh_radbx.obj xh_sizer.obj xh_slidr.obj xh_spin.obj xh_stbmp.obj xh_sttxt.obj &
xh_text.obj xh_listb.obj
all: $(WXXMLLIB)
$(WXXMLLIB): $(OBJECTS)
*wlib /b /c /n /P=256 $(WXXMLLIB) $(OBJECTS)
clean: .SYMBOLIC
-erase *.obj *.bak *.err *.pch $(WXXMLLIB) *.lbc

190
contrib/src/xml/wxXMLVC.dsp Normal file
View File

@@ -0,0 +1,190 @@
# Microsoft Developer Studio Project File - Name="wxXMLVC" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
CFG=wxXMLVC - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "wxXMLVC.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "wxXMLVC.mak" CFG="wxXMLVC - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "wxXMLVC - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "wxXMLVC - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "wxXMLVC - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../include" /I "../../include" /I "d:\libxml\libxml2-2.1.1" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x809
# ADD RSC /l 0x809
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"..\..\lib\wxxml.lib"
!ELSEIF "$(CFG)" == "wxXMLVC - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "../../../include" /I "../../include" /I "d:\libxml\libxml2-2.1.1" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x809
# ADD RSC /l 0x809
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"..\..\lib\wxxmld.lib"
!ENDIF
# Begin Target
# Name "wxXMLVC - Win32 Release"
# Name "wxXMLVC - Win32 Debug"
# Begin Source File
SOURCE=.\xh_bttn.cpp
# End Source File
# Begin Source File
SOURCE=.\xh_chckb.cpp
# End Source File
# Begin Source File
SOURCE=.\xh_chckl.cpp
# End Source File
# Begin Source File
SOURCE=.\xh_choic.cpp
# End Source File
# Begin Source File
SOURCE=.\xh_combo.cpp
# End Source File
# Begin Source File
SOURCE=.\xh_dlg.cpp
# End Source File
# Begin Source File
SOURCE=.\xh_gauge.cpp
# End Source File
# Begin Source File
SOURCE=.\xh_html.cpp
# End Source File
# Begin Source File
SOURCE=.\xh_menu.cpp
# End Source File
# Begin Source File
SOURCE=.\xh_notbk.cpp
# End Source File
# Begin Source File
SOURCE=.\xh_panel.cpp
# End Source File
# Begin Source File
SOURCE=.\xh_radbt.cpp
# End Source File
# Begin Source File
SOURCE=.\xh_radbx.cpp
# End Source File
# Begin Source File
SOURCE=.\xh_sizer.cpp
# End Source File
# Begin Source File
SOURCE=.\xh_slidr.cpp
# End Source File
# Begin Source File
SOURCE=.\xh_spin.cpp
# End Source File
# Begin Source File
SOURCE=.\xh_stbmp.cpp
# End Source File
# Begin Source File
SOURCE=.\xh_sttxt.cpp
# End Source File
# Begin Source File
SOURCE=.\xh_text.cpp
# End Source File
# Begin Source File
SOURCE=.\xh_listb.cpp
# End Source File
# Begin Source File
SOURCE=.\xml.cpp
# End Source File
# Begin Source File
SOURCE=.\xmlbin.cpp
# End Source File
# Begin Source File
SOURCE=.\xmlbinz.cpp
# End Source File
# Begin Source File
SOURCE=.\xmlpars.cpp
# End Source File
# Begin Source File
SOURCE=.\xmlres.cpp
# End Source File
# Begin Source File
SOURCE=.\xmlrsall.cpp
# End Source File
# End Target
# End Project

View File

@@ -1,9 +1,9 @@
Microsoft Developer Studio Workspace File, Format Version 5.00
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "wxibVC"=.\wxibVC.dsp - Package Owner=<4>
Project: "wxXMLVC"=.\wxXMLVC.dsp - Package Owner=<4>
Package=<5>
{{{

View File

@@ -0,0 +1,47 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_bttn.cpp
// Purpose: XML resource for buttons
// Author: Vaclav Slavik
// Created: 2000/03/05
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "xh_bttn.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/xml/xh_bttn.h"
#include "wx/button.h"
wxObject *wxButtonXmlHandler::DoCreateResource()
{
wxButton *button = new wxButton(m_ParentAsWindow,
GetID(),
GetText(_T("label")),
GetPosition(), GetSize(),
GetStyle());
button->SetName(GetName());
if (GetBool(_T("default"), 0) == 1) button->SetDefault();
SetupWindow(button);
return button;
}
bool wxButtonXmlHandler::CanHandle(wxXmlNode *node)
{
return node->GetName() == _T("button");
}

View File

@@ -0,0 +1,56 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_chckb.cpp
// Purpose: XML resource for wxCheckBox
// Author: Bob Mitchell
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell and Verant Interactive
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "xh_chckb.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/xml/xh_chckb.h"
#include "wx/checkbox.h"
#if wxUSE_CHECKBOX
wxCheckBoxXmlHandler::wxCheckBoxXmlHandler()
: wxXmlResourceHandler()
{
}
wxObject *wxCheckBoxXmlHandler::DoCreateResource()
{
wxCheckBox *control = new wxCheckBox(m_ParentAsWindow,
GetID(),
GetText(_T("label")),
GetPosition(), GetSize(),
GetStyle(),
wxDefaultValidator,
GetName()
);
control->SetValue( GetBool( _T("checked")));
SetupWindow(control);
return control;
}
bool wxCheckBoxXmlHandler::CanHandle(wxXmlNode *node)
{
return node->GetName() == _T("checkbox");
}
#endif

View File

@@ -0,0 +1,110 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_chckl.cpp
// Purpose: XML resource for wxCheckList
// Author: Bob Mitchell
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell and Verant Interactive
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "xh_chckl.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/xml/xh_chckl.h"
#include "wx/checklst.h"
wxCheckListXmlHandler::wxCheckListXmlHandler()
: wxXmlResourceHandler(), m_InsideBox(FALSE)
{
// no styles
}
wxObject *wxCheckListXmlHandler::DoCreateResource()
{
if( m_Node->GetName() == _T("checklist"))
{
// need to build the list of strings from children
m_InsideBox = TRUE;
CreateChildren( NULL, TRUE /* only this handler */,
GetParamNode(_T("content")));
wxString *strings = (wxString *) NULL;
if( strList.GetCount() > 0 )
{
strings = new wxString[strList.GetCount()];
int count = strList.GetCount();
for( int i = 0; i < count; i++ )
strings[i]=strList[i];
}
wxCheckListBox *control = new wxCheckListBox(m_ParentAsWindow,
GetID(),
GetPosition(), GetSize(),
strList.GetCount(),
strings,
GetStyle(),
wxDefaultValidator,
GetName()
);
// step through children myself (again.)
wxXmlNode *n = GetParamNode(_T("content"));
if (n) n = n->GetChildren();
int i = 0;
while (n)
{
if (n->GetType() != wxXML_ELEMENT_NODE ||
n->GetName() != _T("item" ))
{ n = n->GetNext(); continue; }
// checking boolean is a bit ugly here (see GetBool() )
wxString v = n->GetPropVal(_T("checked"), wxEmptyString);
v.MakeLower();
if (v && v == _T("1"))
control->Check( i, TRUE );
i++;
n = n->GetNext();
}
SetupWindow(control);
if( strings != NULL )
delete [] strings;
strList.Clear(); // dump the strings
return control;
}
else
{
// on the inside now.
// handle <item checked="boolean">Label</item>
// add to the list
strList.Add( GetNodeContent(m_Node) );
return NULL;
}
}
bool wxCheckListXmlHandler::CanHandle(wxXmlNode *node)
{
return( node->GetName() == _T("checklist") ||
( m_InsideBox &&
node->GetName() == _T("item" ))
);
}

View File

@@ -0,0 +1,96 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_choic.cpp
// Purpose: XML resource for wxChoice
// Author: Bob Mitchell
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell and Verant Interactive
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "xh_choic.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/xml/xh_choic.h"
#include "wx/choice.h"
wxChoiceXmlHandler::wxChoiceXmlHandler()
: wxXmlResourceHandler() , m_InsideBox(FALSE)
{
ADD_STYLE(wxCB_SORT);
}
wxObject *wxChoiceXmlHandler::DoCreateResource()
{
if( m_Node->GetName() == _T("choice"))
{
// find the selection
long selection = GetLong( _T("selection"), -1 );
// need to build the list of strings from children
m_InsideBox = TRUE;
CreateChildren( NULL, TRUE /* only this handler */,
GetParamNode(_T("content")));
wxString *strings = (wxString *) NULL;
if( strList.GetCount() > 0 )
{
strings = new wxString[strList.GetCount()];
int count = strList.GetCount();
for( int i = 0; i < count; i++ )
strings[i]=strList[i];
}
wxChoice *control = new wxChoice(m_ParentAsWindow,
GetID(),
GetPosition(), GetSize(),
strList.GetCount(),
strings,
GetStyle(),
wxDefaultValidator,
GetName()
);
if( selection != -1 )
control->SetSelection( selection );
SetupWindow(control);
if( strings != NULL )
delete [] strings;
strList.Clear(); // dump the strings
return control;
}
else
{
// on the inside now.
// handle <item>Label</item>
// add to the list
strList.Add( GetNodeContent(m_Node) );
return NULL;
}
}
bool wxChoiceXmlHandler::CanHandle(wxXmlNode *node)
{
return( node->GetName() == _T("choice") ||
( m_InsideBox &&
node->GetName() == _T("item" ))
);
}

View File

@@ -0,0 +1,102 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_combo.cpp
// Purpose: XML resource for wxRadioBox
// Author: Bob Mitchell
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell and Verant Interactive
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "xh_combo.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/xml/xh_combo.h"
#include "wx/combobox.h"
#if wxUSE_COMBOBOX
wxComboBoxXmlHandler::wxComboBoxXmlHandler()
: wxXmlResourceHandler() , m_InsideBox(FALSE)
{
ADD_STYLE(wxCB_SIMPLE);
ADD_STYLE(wxCB_SORT);
ADD_STYLE(wxCB_READONLY);
ADD_STYLE(wxCB_DROPDOWN);
}
wxObject *wxComboBoxXmlHandler::DoCreateResource()
{
if( m_Node->GetName() == _T("combobox"))
{
// find the selection
long selection = GetLong( _T("selection"), -1 );
// need to build the list of strings from children
m_InsideBox = TRUE;
CreateChildren( NULL, TRUE /* only this handler */,
GetParamNode(_T("content")));
wxString *strings = (wxString *) NULL;
if( strList.GetCount() > 0 )
{
strings = new wxString[strList.GetCount()];
int count = strList.GetCount();
for( int i = 0; i < count; i++ )
strings[i]=strList[i];
}
wxComboBox *control = new wxComboBox(m_ParentAsWindow,
GetID(),
GetText(_T("value")),
GetPosition(), GetSize(),
strList.GetCount(),
strings,
GetStyle(),
wxDefaultValidator,
GetName()
);
if( selection != -1 )
control->SetSelection( selection );
SetupWindow(control);
if( strings != NULL )
delete [] strings;
strList.Clear(); // dump the strings
return control;
}
else
{
// on the inside now.
// handle <item>Label</item>
// add to the list
strList.Add( GetNodeContent(m_Node) );
return NULL;
}
}
bool wxComboBoxXmlHandler::CanHandle(wxXmlNode *node)
{
return( node->GetName() == _T("combobox") ||
( m_InsideBox &&
node->GetName() == _T("item" ))
);
}
#endif

View File

@@ -0,0 +1,75 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_dlg.cpp
// Purpose: XML resource for dialogs
// Author: Vaclav Slavik
// Created: 2000/03/05
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "xh_dlg.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/xml/xh_dlg.h"
#include "wx/dialog.h"
#include "wx/log.h"
#include "wx/intl.h"
wxDialogXmlHandler::wxDialogXmlHandler() : wxXmlResourceHandler()
{
ADD_STYLE(wxSTAY_ON_TOP);
ADD_STYLE(wxCAPTION);
ADD_STYLE(wxDEFAULT_DIALOG_STYLE);
ADD_STYLE(wxTHICK_FRAME);
ADD_STYLE(wxSYSTEM_MENU);
ADD_STYLE(wxRESIZE_BORDER);
ADD_STYLE(wxRESIZE_BOX);
ADD_STYLE(wxDIALOG_MODAL);
ADD_STYLE(wxDIALOG_MODELESS);
ADD_STYLE(wxNO_3D);
ADD_STYLE(wxTAB_TRAVERSAL);
ADD_STYLE(wxWS_EX_VALIDATE_RECURSIVELY);
}
wxObject *wxDialogXmlHandler::DoCreateResource()
{
wxDialog *dlg = wxDynamicCast(m_Instance, wxDialog);
wxASSERT_MSG(dlg, _("XML resource: Cannot create dialog without instance."));
dlg->Create(m_ParentAsWindow,
GetID(),
GetText(_T("title")),
wxDefaultPosition, wxDefaultSize,
GetStyle(_T("style"), wxDEFAULT_DIALOG_STYLE),
GetName());
dlg->SetClientSize(GetSize());
dlg->Move(GetPosition());
SetupWindow(dlg);
CreateChildren(dlg);
return dlg;
}
bool wxDialogXmlHandler::CanHandle(wxXmlNode *node)
{
return node->GetName() == _T("dialog");
}

View File

@@ -0,0 +1,73 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_gauge.cpp
// Purpose: XML resource for wxGauge
// Author: Bob Mitchell
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell and Verant Interactive
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "xh_gauge.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/xml/xh_gauge.h"
#include "wx/gauge.h"
#if wxUSE_GAUGE
wxGaugeXmlHandler::wxGaugeXmlHandler()
: wxXmlResourceHandler()
{
ADD_STYLE( wxGA_HORIZONTAL );
ADD_STYLE( wxGA_VERTICAL );
ADD_STYLE( wxGA_PROGRESSBAR );
ADD_STYLE( wxGA_SMOOTH ); // windows only
}
wxObject *wxGaugeXmlHandler::DoCreateResource()
{
wxGauge *control = new wxGauge(m_ParentAsWindow,
GetID(),
GetLong( _T("range"), wxGAUGE_DEFAULT_RANGE),
GetPosition(), GetSize(),
GetStyle(),
wxDefaultValidator,
GetName()
);
if( HasParam( _T("value") ))
{
control->SetValue( GetLong( _T("value") ));
}
if( HasParam( _T("shadow") ))
{
control->SetShadowWidth( GetLong( _T("shadow") ));
}
if( HasParam( _T("bezel") ))
{
control->SetBezelFace( GetLong( _T("bezel") ));
}
SetupWindow(control);
return control;
}
bool wxGaugeXmlHandler::CanHandle(wxXmlNode *node)
{
return node->GetName() == _T("gauge");
}
#endif // wxUSE_GAUGE

View File

@@ -0,0 +1,71 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_html.cpp
// Purpose: XML resource for wxHtmlWindow
// Author: Bob Mitchell
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell and Verant Interactive
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "xh_html.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/xml/xh_html.h"
#if wxUSE_HTML
#include "wx/html/htmlwin.h"
wxHtmlWindowXmlHandler::wxHtmlWindowXmlHandler()
: wxXmlResourceHandler()
{
ADD_STYLE( wxHW_SCROLLBAR_NEVER );
ADD_STYLE( wxHW_SCROLLBAR_AUTO );
}
wxObject *wxHtmlWindowXmlHandler::DoCreateResource()
{
wxHtmlWindow *control = new wxHtmlWindow(m_ParentAsWindow,
GetID(),
GetPosition(), GetSize(),
GetStyle( _T("style" ), wxHW_SCROLLBAR_AUTO),
GetName()
);
if( HasParam( _T("borders") ))
{
control->SetBorders( GetLong( _T("borders" )));
}
if( HasParam( _T("url") ))
{
control->LoadPage( GetParamValue( _T("url" )));
}
else if( HasParam( _T("htmlcode") ))
{
control->SetPage( GetText(_T("htmlcode")) );
}
SetupWindow(control);
return control;
}
bool wxHtmlWindowXmlHandler::CanHandle(wxXmlNode *node)
{
return node->GetName() == _T("htmlwindow");
}
#endif // wxUSE_HTML

View File

@@ -0,0 +1,102 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_listb.cpp
// Purpose: XML resource for wxListBox
// Author: Bob Mitchell & Vaclav Slavik
// Created: 2000/07/29
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell and Verant Interactive
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "xh_listb.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/xml/xh_listb.h"
#include "wx/listbox.h"
wxListBoxXmlHandler::wxListBoxXmlHandler()
: wxXmlResourceHandler() , m_InsideBox(FALSE)
{
ADD_STYLE(wxLB_SINGLE);
ADD_STYLE(wxLB_MULTIPLE);
ADD_STYLE(wxLB_EXTENDED);
ADD_STYLE(wxLB_HSCROLL);
ADD_STYLE(wxLB_ALWAYS_SB);
ADD_STYLE(wxLB_NEEDED_SB);
ADD_STYLE(wxLB_SORT);
}
wxObject *wxListBoxXmlHandler::DoCreateResource()
{
if( m_Node->GetName() == _T("listbox"))
{
// find the selection
long selection = GetLong( _T("selection"), -1 );
// need to build the list of strings from children
m_InsideBox = TRUE;
CreateChildren( NULL, TRUE /* only this handler */,
GetParamNode(_T("content")));
wxString *strings = (wxString *) NULL;
if( strList.GetCount() > 0 )
{
strings = new wxString[strList.GetCount()];
int count = strList.GetCount();
for( int i = 0; i < count; i++ )
strings[i]=strList[i];
}
wxListBox *control = new wxListBox(m_ParentAsWindow,
GetID(),
GetPosition(), GetSize(),
strList.GetCount(),
strings,
GetStyle(),
wxDefaultValidator,
GetName()
);
if( selection != -1 )
control->SetSelection( selection );
SetupWindow(control);
if( strings != NULL )
delete [] strings;
strList.Clear(); // dump the strings
return control;
}
else
{
// on the inside now.
// handle <item>Label</item>
// add to the list
strList.Add( GetNodeContent(m_Node) );
return NULL;
}
}
bool wxListBoxXmlHandler::CanHandle(wxXmlNode *node)
{
return( node->GetName() == _T("listbox") ||
( m_InsideBox &&
node->GetName() == _T("item" ))
);
}

126
contrib/src/xml/xh_menu.cpp Normal file
View File

@@ -0,0 +1,126 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_menu.cpp
// Purpose: XML resource for menus and menubars
// Author: Vaclav Slavik
// Created: 2000/03/05
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "xh_menu.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/xml/xh_menu.h"
#include "wx/menu.h"
wxMenuXmlHandler::wxMenuXmlHandler() :
wxXmlResourceHandler(), m_InsideMenu(FALSE)
{
ADD_STYLE(wxMENU_TEAROFF);
}
wxObject *wxMenuXmlHandler::DoCreateResource()
{
if (m_Node->GetName() == _T("menu"))
{
wxMenu *menu = new wxMenu(GetStyle());
wxString title = GetText(_T("label"));
wxString help = GetText(_T("help"));
bool oldins = m_InsideMenu;
m_InsideMenu = TRUE;
CreateChildren(menu, TRUE/*only this handler*/);
m_InsideMenu = oldins;
wxMenuBar *p_bar = wxDynamicCast(m_Parent, wxMenuBar);
if (p_bar)
p_bar->Append(menu, title);
else
{
wxMenu *p_menu = wxDynamicCast(m_Parent, wxMenu);
if (p_menu)
p_menu->Append(GetID(), title, menu, help);
}
return menu;
}
else
{
wxMenu *p_menu = wxDynamicCast(m_Parent, wxMenu);
if (m_Node->GetName() == _T("separator"))
p_menu->AppendSeparator();
else if (m_Node->GetName() == _T("break"))
p_menu->Break();
else
{
int id = GetID();
bool checkable = GetBool(_T("checkable"));
p_menu->Append(id, GetText(_T("label")),
GetText(_T("help")), checkable);
if (id != -1)
{
p_menu->Enable(id, GetBool(_T("enabled"), TRUE));
if (checkable) p_menu->Check(id, GetBool(_T("checked")));
}
}
return NULL;
}
}
bool wxMenuXmlHandler::CanHandle(wxXmlNode *node)
{
return node->GetName() == _T("menu") ||
(m_InsideMenu &&
(node->GetName() == _T("menuitem") ||
node->GetName() == _T("break") ||
node->GetName() == _T("separator"))
);
}
wxMenuBarXmlHandler::wxMenuBarXmlHandler() : wxXmlResourceHandler()
{
ADD_STYLE(wxMB_DOCKABLE);
}
wxObject *wxMenuBarXmlHandler::DoCreateResource()
{
wxMenuBar *menubar = new wxMenuBar(GetStyle());
CreateChildren(menubar);
return menubar;
}
bool wxMenuBarXmlHandler::CanHandle(wxXmlNode *node)
{
return node->GetName() == _T("menubar");
}

View File

@@ -0,0 +1,99 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_notbk.cpp
// Purpose: XML resource for wxNotebook
// Author: Vaclav Slavik
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "xh_notbk.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/xml/xh_notbk.h"
#if wxUSE_NOTEBOOK
#include "wx/log.h"
#include "wx/notebook.h"
#include "wx/sizer.h"
wxNotebookXmlHandler::wxNotebookXmlHandler()
: wxXmlResourceHandler(), m_IsInside(FALSE), m_Notebook(NULL)
{
ADD_STYLE(wxNB_FIXEDWIDTH);
ADD_STYLE(wxNB_LEFT);
ADD_STYLE(wxNB_RIGHT);
ADD_STYLE(wxNB_BOTTOM);
}
wxObject *wxNotebookXmlHandler::DoCreateResource()
{
if (m_Node->GetName() == _T("notebookpage"))
{
wxXmlNode *n = GetParamNode(_T("window"))->GetChildren();
while (n)
{
if (n->GetType() == wxXML_ELEMENT_NODE)
{
bool old_ins = m_IsInside;
m_IsInside = FALSE;
m_IsInside = old_ins;
wxObject *item = CreateResFromNode(n, m_Notebook, NULL);
wxWindow *wnd = wxDynamicCast(item, wxWindow);
if (wnd)
m_Notebook->AddPage(wnd, GetText(_T("label")),
GetBool(_T("selected"), 0));
else
wxLogError(_T("Error in resource."));
return wnd;
}
n = n->GetNext();
}
wxLogError(_T("Error in resource: no control within notebook's <page> tag."));
return NULL;
}
else {
wxNotebook *nb = new wxNotebook(m_ParentAsWindow,
GetID(),
GetPosition(), GetSize(),
GetStyle( _T("style" )),
GetName());
wxNotebook *old_par = m_Notebook;
m_Notebook = nb;
bool old_ins = m_IsInside;
m_IsInside = TRUE;
CreateChildren(m_Notebook, TRUE/*only this handler*/);
m_IsInside = old_ins;
m_Notebook = old_par;
if (GetBool(_T("usenotebooksizer"), FALSE))
return new wxNotebookSizer(nb);
else
return nb;
}
}
bool wxNotebookXmlHandler::CanHandle(wxXmlNode *node)
{
return ((!m_IsInside && node->GetName() == _T("notebook")) ||
(m_IsInside && node->GetName() == _T("notebookpage")));
}
#endif

View File

@@ -0,0 +1,52 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_panel.cpp
// Purpose: XML resource for panels
// Author: Vaclav Slavik
// Created: 2000/03/05
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "xh_panel.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/xml/xh_panel.h"
#include "wx/panel.h"
wxPanelXmlHandler::wxPanelXmlHandler() : wxXmlResourceHandler()
{
ADD_STYLE(wxNO_3D);
ADD_STYLE(wxTAB_TRAVERSAL);
ADD_STYLE(wxWS_EX_VALIDATE_RECURSIVELY);
}
wxObject *wxPanelXmlHandler::DoCreateResource()
{
wxPanel *panel = new wxPanel(m_ParentAsWindow,
GetID(),
GetPosition(), GetSize(),
GetStyle(_T("style"), 0),
GetName());
SetupWindow(panel);
CreateChildren(panel);
return panel;
}
bool wxPanelXmlHandler::CanHandle(wxXmlNode *node)
{
return node->GetName() == _T("panel");
}

View File

@@ -0,0 +1,65 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_radbt.cpp
// Purpose: XML resource for wxRadioButton
// Author: Bob Mitchell
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell and Verant Interactive
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "xh_radbt.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/xml/xh_radbt.h"
#include "wx/radiobut.h"
#if wxUSE_RADIOBOX
wxRadioButtonXmlHandler::wxRadioButtonXmlHandler()
: wxXmlResourceHandler()
{
ADD_STYLE( wxRB_GROUP );
}
wxObject *wxRadioButtonXmlHandler::DoCreateResource()
{
/* BOBM - implementation note.
* once the wxBitmapRadioButton is implemented.
* look for a bitmap property. If not null,
* make it a wxBitmapRadioButton instead of the
* normal radio button.
*/
wxRadioButton *control = new wxRadioButton(m_ParentAsWindow,
GetID(),
GetText(_T("label")),
GetPosition(), GetSize(),
GetStyle(),
wxDefaultValidator,
GetName()
);
control->SetValue( GetBool(_T("value"), 0));
SetupWindow(control);
return control;
}
bool wxRadioButtonXmlHandler::CanHandle(wxXmlNode *node)
{
return node->GetName() == _T("radiobutton");
}
#endif

View File

@@ -0,0 +1,102 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_radbx.cpp
// Purpose: XML resource for wxRadioBox
// Author: Bob Mitchell
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell and Verant Interactive
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "xh_radbx.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/xml/xh_radbx.h"
#include "wx/radiobox.h"
#if wxUSE_RADIOBOX
wxRadioBoxXmlHandler::wxRadioBoxXmlHandler()
: wxXmlResourceHandler() , m_InsideBox(FALSE)
{
ADD_STYLE(wxRA_SPECIFY_COLS);
ADD_STYLE(wxRA_HORIZONTAL);
ADD_STYLE(wxRA_SPECIFY_ROWS);
ADD_STYLE(wxRA_VERTICAL);
}
wxObject *wxRadioBoxXmlHandler::DoCreateResource()
{
if( m_Node->GetName() == _T("radiobox"))
{
// find the selection
long selection = GetLong( _T("selection"), -1 );
// need to build the list of strings from children
m_InsideBox = TRUE;
CreateChildren( NULL, TRUE /* only this handler */, GetParamNode(_T("content")));
wxString *strings = (wxString *) NULL;
if( strList.GetCount() > 0 )
{
strings = new wxString[strList.GetCount()];
int count = strList.GetCount();
for( int i = 0; i < count; i++ )
strings[i]=strList[i];
}
wxRadioBox *control = new wxRadioBox(m_ParentAsWindow,
GetID(),
GetText(_T("label")),
GetPosition(), GetSize(),
strList.GetCount(),
strings,
GetLong( _T("dimension"), 1 ),
GetStyle(),
wxDefaultValidator,
GetName()
);
if( selection != -1 )
control->SetSelection( selection );
SetupWindow(control);
if( strings != NULL )
delete [] strings;
strList.Clear(); // dump the strings
return control;
}
else
{
// on the inside now.
// handle <item selected="boolean">Label</item>
// add to the list
strList.Add( GetNodeContent(m_Node) );
return NULL;
}
}
bool wxRadioBoxXmlHandler::CanHandle(wxXmlNode *node)
{
return( node->GetName() == _T("radiobox") ||
( m_InsideBox &&
node->GetName() == _T("item" ))
);
}
#endif

View File

@@ -0,0 +1,198 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_sizer.cpp
// Purpose: XML resource for wxBoxSizer
// Author: Vaclav Slavik
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "xh_sizer.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/xml/xh_sizer.h"
#include "wx/sizer.h"
#include "wx/log.h"
#include "wx/statbox.h"
#include "wx/notebook.h"
static bool IsSizerNode(wxXmlNode *node)
{
return (node->GetName() == _T("boxsizer")) ||
(node->GetName() == _T("staticboxsizer")) ||
(node->GetName() == _T("gridsizer")) ||
(node->GetName() == _T("flexgridsizer"));
}
wxSizerXmlHandler::wxSizerXmlHandler()
: wxXmlResourceHandler(), m_IsInside(FALSE), m_ParentSizer(NULL)
{
ADD_STYLE(wxHORIZONTAL);
ADD_STYLE(wxVERTICAL);
// and flags
ADD_STYLE(wxLEFT);
ADD_STYLE(wxRIGHT);
ADD_STYLE(wxTOP);
ADD_STYLE(wxBOTTOM);
ADD_STYLE(wxNORTH);
ADD_STYLE(wxSOUTH);
ADD_STYLE(wxEAST);
ADD_STYLE(wxWEST);
ADD_STYLE(wxALL);
ADD_STYLE(wxGROW);
ADD_STYLE(wxEXPAND);
ADD_STYLE(wxSHAPED);
ADD_STYLE(wxSTRETCH_NOT);
ADD_STYLE(wxALIGN_CENTER);
ADD_STYLE(wxALIGN_CENTRE);
ADD_STYLE(wxALIGN_LEFT);
ADD_STYLE(wxALIGN_TOP);
ADD_STYLE(wxALIGN_RIGHT);
ADD_STYLE(wxALIGN_BOTTOM);
ADD_STYLE(wxALIGN_CENTER_HORIZONTAL);
ADD_STYLE(wxALIGN_CENTRE_HORIZONTAL);
ADD_STYLE(wxALIGN_CENTER_VERTICAL);
ADD_STYLE(wxALIGN_CENTRE_VERTICAL);
}
wxObject *wxSizerXmlHandler::DoCreateResource()
{
if (m_Node->GetName() == _T("sizeritem"))
{
wxXmlNode *n = GetParamNode(_T("window"))->GetChildren();
while (n)
{
if (n->GetType() == wxXML_ELEMENT_NODE)
{
bool old_ins = m_IsInside;
wxSizer *old_par = m_ParentSizer;
m_IsInside = FALSE;
if (!IsSizerNode(n)) m_ParentSizer = NULL;
wxObject *item = CreateResFromNode(n, m_Parent, NULL);
m_IsInside = old_ins;
m_ParentSizer = old_par;
wxSizer *sizer = wxDynamicCast(item, wxSizer);
wxWindow *wnd = wxDynamicCast(item, wxWindow);
wxSize minsize = GetSize(_T("minsize"));
if (sizer)
{
m_ParentSizer->Add(sizer, GetLong(_T("option")),
GetStyle(_T("flag")), GetLong(_T("border")));
if (!(minsize == wxDefaultSize))
m_ParentSizer->SetItemMinSize(sizer, minsize.x, minsize.y);
}
else if (wnd)
{
m_ParentSizer->Add(wnd, GetLong(_T("option")),
GetStyle(_T("flag")), GetLong(_T("border")));
if (!(minsize == wxDefaultSize))
m_ParentSizer->SetItemMinSize(wnd, minsize.x, minsize.y);
}
else
wxLogError(_T("Error in resource."));
return item;
}
n = n->GetNext();
}
wxLogError(_T("Error in resource: no control/sizer within sizer's <item> tag."));
return NULL;
}
else if (m_Node->GetName() == _T("spacer"))
{
wxCHECK_MSG(m_ParentSizer, NULL, _T("Incorrect syntax of XML resource: spacer not within sizer!"));
wxSize sz = GetSize();
m_ParentSizer->Add(sz.x, sz.y,
GetLong(_T("option")), GetStyle(_T("flag")), GetLong(_T("border")));
return NULL;
}
else {
wxSizer *sizer = NULL;
wxXmlNode *parentNode = m_Node->GetParent()->GetParent();
wxCHECK_MSG(m_ParentSizer != NULL ||
((parentNode->GetName() == _T("panel") ||
parentNode->GetName() == _T("dialog")) &&
parentNode->GetType() == wxXML_ELEMENT_NODE), NULL,
_T("Incorrect use of sizer: parent is not 'dialog' or 'panel'."));
if (m_Node->GetName() == _T("boxsizer"))
sizer = new wxBoxSizer(GetStyle(_T("orient"), wxHORIZONTAL));
else if (m_Node->GetName() == _T("staticboxsizer"))
{
sizer = new wxStaticBoxSizer(
new wxStaticBox(m_ParentAsWindow, -1, GetText(_T("label"))),
GetStyle(_T("orient"), wxHORIZONTAL));
}
else if (m_Node->GetName() == _T("gridsizer"))
sizer = new wxGridSizer(GetLong(_T("rows")), GetLong(_T("cols")),
GetLong(_T("vgap")), GetLong(_T("hgap")));
else if (m_Node->GetName() == _T("flexgridsizer"))
sizer = new wxFlexGridSizer(GetLong(_T("rows")), GetLong(_T("cols")),
GetLong(_T("vgap")), GetLong(_T("hgap")));
wxSize minsize = GetSize(_T("minsize"));
if (!(minsize == wxDefaultSize))
sizer->SetMinSize(minsize);
wxSizer *old_par = m_ParentSizer;
m_ParentSizer = sizer;
bool old_ins = m_IsInside;
m_IsInside = TRUE;
CreateChildren(m_Parent, TRUE/*only this handler*/);
m_IsInside = old_ins;
m_ParentSizer = old_par;
if (m_ParentSizer == NULL) // setup window:
{
m_ParentAsWindow->SetAutoLayout(TRUE);
m_ParentAsWindow->SetSizer(sizer);
wxXmlNode *nd = m_Node;
m_Node = parentNode;
if (GetSize() == wxDefaultSize)
sizer->Fit(m_ParentAsWindow);
m_Node = nd;
if (m_ParentAsWindow->GetWindowStyle() & (wxRESIZE_BOX | wxRESIZE_BORDER))
sizer->SetSizeHints(m_ParentAsWindow);
}
return sizer;
}
}
bool wxSizerXmlHandler::CanHandle(wxXmlNode *node)
{
return ((!m_IsInside && IsSizerNode(node)) ||
(m_IsInside && node->GetName() == _T("sizeritem")) ||
(m_IsInside && node->GetName() == _T("spacer")));
}

View File

@@ -0,0 +1,93 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_slidr.cpp
// Purpose: XML resource for wxSlider
// Author: Bob Mitchell
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell and Verant Interactive
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "xh_slidr.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/xml/xh_slidr.h"
#include "wx/slider.h"
#if wxUSE_SLIDER
wxSliderXmlHandler::wxSliderXmlHandler()
: wxXmlResourceHandler()
{
ADD_STYLE( wxSL_HORIZONTAL );
ADD_STYLE( wxSL_VERTICAL );
ADD_STYLE( wxSL_AUTOTICKS );
ADD_STYLE( wxSL_LABELS );
ADD_STYLE( wxSL_LEFT );
ADD_STYLE( wxSL_TOP );
ADD_STYLE( wxSL_RIGHT );
ADD_STYLE( wxSL_BOTTOM );
ADD_STYLE( wxSL_BOTH );
ADD_STYLE( wxSL_SELRANGE );
}
wxObject *wxSliderXmlHandler::DoCreateResource()
{
wxSlider *control = new wxSlider(m_ParentAsWindow,
GetID(),
GetLong( _T("value"), wxSL_DEFAULT_VALUE),
GetLong( _T("min"), wxSL_DEFAULT_MIN),
GetLong( _T("max"), wxSL_DEFAULT_MAX),
GetPosition(), GetSize(),
GetStyle(),
wxDefaultValidator,
GetName()
);
if( HasParam( _T("tickfreq") ))
{
control->SetTickFreq( GetLong( _T("tickfreq") ), 0 );
}
if( HasParam( _T("pagesize") ))
{
control->SetPageSize( GetLong( _T("pagesize") ) );
}
if( HasParam( _T("linesize") ))
{
control->SetLineSize( GetLong( _T("linesize") ));
}
if( HasParam( _T("thumb") ))
{
control->SetThumbLength( GetLong( _T("thumb") ));
}
if( HasParam( _T("tick") ))
{
control->SetTick( GetLong( _T("tick") ));
}
if( HasParam( _T("selmin") ) && HasParam( _T("selmax")) )
{
control->SetSelection( GetLong( _T("selmin") ), GetLong( _T("selmax")) );
}
SetupWindow(control);
return control;
}
bool wxSliderXmlHandler::CanHandle(wxXmlNode *node)
{
return node->GetName() == _T("slider");
}
#endif

View File

@@ -0,0 +1,98 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_spin.cpp
// Purpose: XML resource for wxSpinButton
// Author: Bob Mitchell
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell and Verant Interactive
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "xh_spin.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/xml/xh_spin.h"
#include "wx/spinctrl.h"
#if wxUSE_SPINBTN
wxSpinButtonXmlHandler::wxSpinButtonXmlHandler()
: wxXmlResourceHandler()
{
ADD_STYLE( wxSP_HORIZONTAL );
ADD_STYLE( wxSP_VERTICAL );
ADD_STYLE( wxSP_ARROW_KEYS );
ADD_STYLE( wxSP_WRAP );
}
wxObject *wxSpinButtonXmlHandler::DoCreateResource()
{
wxSpinButton *control = new wxSpinButton(m_ParentAsWindow,
GetID(),
GetPosition(), GetSize(),
GetStyle( _T("style"), wxSP_VERTICAL | wxSP_ARROW_KEYS ),
GetName()
);
control->SetValue( GetLong( _T("value"), wxSP_DEFAULT_VALUE) );
control->SetRange( GetLong( _T("min"), wxSP_DEFAULT_MIN),
GetLong( _T("max"), wxSP_DEFAULT_MAX) );
SetupWindow(control);
return control;
}
bool wxSpinButtonXmlHandler::CanHandle(wxXmlNode *node)
{
return node->GetName() == _T("spinbutton");
}
#endif // wxUSE_SPINBTN
#if wxUSE_SPINCTRL
wxSpinCtrlXmlHandler::wxSpinCtrlXmlHandler()
: wxXmlResourceHandler()
{
ADD_STYLE( wxSP_HORIZONTAL );
ADD_STYLE( wxSP_VERTICAL );
ADD_STYLE( wxSP_ARROW_KEYS );
ADD_STYLE( wxSP_WRAP );
}
wxObject *wxSpinCtrlXmlHandler::DoCreateResource()
{
wxSpinCtrl *control = new wxSpinCtrl(m_ParentAsWindow,
GetID(),
GetText(_T("value")),
GetPosition(), GetSize(),
GetStyle( _T("style"), wxSP_ARROW_KEYS ),
GetLong( _T("min"), wxSP_DEFAULT_MIN),
GetLong( _T("max"), wxSP_DEFAULT_MAX),
GetLong( _T("value"), wxSP_DEFAULT_VALUE),
GetName()
);
SetupWindow(control);
return control;
}
bool wxSpinCtrlXmlHandler::CanHandle(wxXmlNode *node)
{
return node->GetName() == _T("spinctrl");
}
#endif // wxUSE_SPINCTRL

View File

@@ -0,0 +1,58 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_stbmp.cpp
// Purpose: XML resource for wxStaticBitmap
// Author: Vaclav Slavik
// Created: 2000/04/22
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "xh_stbmp.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/xml/xh_stbmp.h"
#include "wx/statbmp.h"
#include "wx/image.h"
#include "wx/bitmap.h"
wxStaticBitmapXmlHandler::wxStaticBitmapXmlHandler()
: wxXmlResourceHandler()
{
}
wxObject *wxStaticBitmapXmlHandler::DoCreateResource()
{
wxImage img(GetParamValue(_T("bitmap")));
wxSize sz = GetSize();
if (!(sz == wxDefaultSize)) img.Rescale(sz.x, sz.y);
wxStaticBitmap *bmp = new wxStaticBitmap(m_ParentAsWindow,
GetID(),
img.ConvertToBitmap(),
GetPosition(), GetSize(),
GetStyle(),
GetName()
);
SetupWindow(bmp);
return bmp;
}
bool wxStaticBitmapXmlHandler::CanHandle(wxXmlNode *node)
{
return node->GetName() == _T("staticbitmap");
}

View File

@@ -0,0 +1,52 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_sttxt.cpp
// Purpose: XML resource for wxStaticText
// Author: Bob Mitchell
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Bob Mitchell and Verant Interactive
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "xh_sttxt.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/xml/xh_sttxt.h"
#include "wx/stattext.h"
wxStaticTextXmlHandler::wxStaticTextXmlHandler()
: wxXmlResourceHandler()
{
ADD_STYLE( wxST_NO_AUTORESIZE );
}
wxObject *wxStaticTextXmlHandler::DoCreateResource()
{
wxStaticText *text = new wxStaticText(m_ParentAsWindow,
GetID(),
GetText(_T("label")),
GetPosition(), GetSize(),
GetStyle(),
GetName()
);
SetupWindow(text);
return text;
}
bool wxStaticTextXmlHandler::CanHandle(wxXmlNode *node)
{
return node->GetName() == _T("statictext");
}

View File

@@ -0,0 +1,57 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_text.cpp
// Purpose: XML resource for wxTextCtrl
// Author: Aleksandras Gluchovas
// Created: 2000/03/21
// RCS-ID: $Id$
// Copyright: (c) 2000 Aleksandras Gluchovas
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "xh_text.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/xml/xh_text.h"
#include "wx/textctrl.h"
wxTextCtrlXmlHandler::wxTextCtrlXmlHandler() : wxXmlResourceHandler()
{
ADD_STYLE(wxTE_PROCESS_ENTER);
ADD_STYLE(wxTE_PROCESS_TAB);
ADD_STYLE(wxTE_MULTILINE);
ADD_STYLE(wxTE_PASSWORD);
ADD_STYLE(wxTE_READONLY);
ADD_STYLE(wxHSCROLL);
}
wxObject *wxTextCtrlXmlHandler::DoCreateResource()
{
wxTextCtrl *text = new wxTextCtrl(m_ParentAsWindow,
GetID(),
GetText(_T("value")),
GetPosition(), GetSize(),
GetStyle(),
wxDefaultValidator,
GetText(_T("name"))
);
SetupWindow(text);
return text;
}
bool wxTextCtrlXmlHandler::CanHandle(wxXmlNode *node)
{
return node->GetName() == _T("textctrl");
}

424
contrib/src/xml/xml.cpp Normal file
View File

@@ -0,0 +1,424 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xml.cpp
// Purpose: wxXmlDocument - XML parser & data holder class
// Author: Vaclav Slavik
// Created: 2000/03/05
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "xml.h"
#pragma implementation "xmlio.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/wfstream.h"
#include "wx/datstrm.h"
#include "wx/zstream.h"
#include "wx/log.h"
#include "wx/intl.h"
#include "wx/xml/xml.h"
#include "wx/xml/xmlio.h"
wxXmlNode::wxXmlNode(wxXmlNode *parent,wxXmlNodeType type,
const wxString& name, const wxString& content,
wxXmlProperty *props, wxXmlNode *next)
: m_Type(type), m_Name(name), m_Content(content),
m_Properties(props), m_Parent(parent),
m_Children(NULL), m_Next(next)
{
if (m_Parent)
{
if (m_Parent->m_Children)
{
m_Next = m_Parent->m_Children;
m_Parent->m_Children = this;
}
else
m_Parent->m_Children = this;
}
}
wxXmlNode::wxXmlNode(wxXmlNodeType type, const wxString& name,
const wxString& content)
: m_Type(type), m_Name(name), m_Content(content),
m_Properties(NULL), m_Parent(NULL),
m_Children(NULL), m_Next(NULL)
{}
wxXmlNode::wxXmlNode(const wxXmlNode& node)
{
m_Next = NULL;
m_Parent = NULL;
DoCopy(node);
}
wxXmlNode& wxXmlNode::operator=(const wxXmlNode& node)
{
delete m_Properties;
delete m_Children;
DoCopy(node);
return *this;
}
void wxXmlNode::DoCopy(const wxXmlNode& node)
{
m_Type = node.m_Type;
m_Name = node.m_Name;
m_Content = node.m_Content;
m_Children = NULL;
wxXmlNode *n = node.m_Children;
while (n)
{
AddChild(new wxXmlNode(*n));
n = n->GetNext();
}
m_Properties = NULL;
wxXmlProperty *p = node.m_Properties;
while (p)
{
AddProperty(p->GetName(), p->GetValue());
p = p->GetNext();
}
}
bool wxXmlNode::HasProp(const wxString& propName) const
{
wxXmlProperty *prop = GetProperties();
while (prop)
{
if (prop->GetName() == propName) return TRUE;
prop = prop->GetNext();
}
return FALSE;
}
bool wxXmlNode::GetPropVal(const wxString& propName, wxString *value) const
{
wxXmlProperty *prop = GetProperties();
while (prop)
{
if (prop->GetName() == propName)
{
*value = prop->GetValue();
return TRUE;
}
prop = prop->GetNext();
}
return FALSE;
}
wxString wxXmlNode::GetPropVal(const wxString& propName, const wxString& defaultVal) const
{
wxString tmp;
if (GetPropVal(propName, &tmp))
return tmp;
else
return defaultVal;
}
void wxXmlNode::AddChild(wxXmlNode *child)
{
if (m_Children == NULL)
m_Children = child;
else
{
wxXmlNode *ch = m_Children;
while (ch->m_Next) ch = ch->m_Next;
ch->m_Next = child;
}
child->m_Next = NULL;
child->m_Parent = this;
}
void wxXmlNode::InsertChild(wxXmlNode *child, wxXmlNode *before_node)
{
wxASSERT_MSG(before_node->GetParent() == this, _T("wxXmlNode::InsertChild - the node has incorrect parent"));
if (m_Children == before_node)
m_Children = child;
else
{
wxXmlNode *ch = m_Children;
while (ch->m_Next != before_node) ch = ch->m_Next;
ch->m_Next = child;
}
child->m_Parent = this;
child->m_Next = before_node;
}
bool wxXmlNode::RemoveChild(wxXmlNode *child)
{
if (m_Children == NULL)
return FALSE;
else if (m_Children == child)
{
m_Children = child->m_Next;
child->m_Parent = NULL;
child->m_Next = NULL;
return TRUE;
}
else
{
wxXmlNode *ch = m_Children;
while (ch->m_Next)
{
if (ch->m_Next == child)
{
ch->m_Next = child->m_Next;
child->m_Parent = NULL;
child->m_Next = NULL;
return TRUE;
}
ch = ch->m_Next;
}
return FALSE;
}
}
void wxXmlNode::AddProperty(const wxString& name, const wxString& value)
{
AddProperty(new wxXmlProperty(name, value, NULL));
}
void wxXmlNode::AddProperty(wxXmlProperty *prop)
{
if (m_Properties == NULL)
m_Properties = prop;
else
{
wxXmlProperty *p = m_Properties;
while (p->GetNext()) p = p->GetNext();
p->SetNext(prop);
}
}
bool wxXmlNode::DeleteProperty(const wxString& name)
{
if (m_Properties == NULL)
return FALSE;
else if (m_Properties->GetName() == name)
{
wxXmlProperty *prop = m_Properties;
m_Properties = prop->GetNext();
prop->SetNext(NULL);
delete prop;
return TRUE;
}
else
{
wxXmlProperty *p = m_Properties;
while (p->GetNext())
{
if (p->GetNext()->GetName() == name)
{
wxXmlProperty *prop = p->GetNext();
p->SetNext(prop->GetNext());
prop->SetNext(NULL);
delete prop;
return TRUE;
}
p = p->GetNext();
}
return FALSE;
}
}
wxXmlDocument::wxXmlDocument(const wxString& filename, wxXmlIOType io_type)
: wxObject(), m_Root(NULL)
{
if (!Load(filename, io_type))
{
delete m_Root;
m_Root = NULL;
}
}
wxXmlDocument::wxXmlDocument(wxInputStream& stream, wxXmlIOType io_type)
: wxObject(), m_Root(NULL)
{
if (!Load(stream, io_type))
{
delete m_Root;
m_Root = NULL;
}
}
wxXmlDocument::wxXmlDocument(const wxXmlDocument& doc)
{
DoCopy(doc);
}
wxXmlDocument& wxXmlDocument::operator=(const wxXmlDocument& doc)
{
delete m_Root;
DoCopy(doc);
return *this;
}
void wxXmlDocument::DoCopy(const wxXmlDocument& doc)
{
m_Version = doc.m_Version;
m_Encoding = doc.m_Encoding;
m_Root = new wxXmlNode(*doc.m_Root);
}
bool wxXmlDocument::Load(const wxString& filename, wxXmlIOType io_type)
{
wxFileInputStream stream(filename);
return Load(stream, io_type);
}
bool wxXmlDocument::Load(wxInputStream& stream, wxXmlIOType io_type)
{
wxNode *n = sm_Handlers->GetFirst();
while (n)
{
wxXmlIOHandler *h = (wxXmlIOHandler*) n->GetData();
if ((io_type == wxXML_IO_AUTO || io_type == h->GetType()) &&
h->CanLoad(stream))
{
return h->Load(stream, *this);
}
n = n->GetNext();
}
wxLogError(_("Cannot find XML I/O handler capable of loading this format."));
return FALSE;
}
bool wxXmlDocument::Save(const wxString& filename, wxXmlIOType io_type) const
{
wxFileOutputStream stream(filename);
return Save(stream, io_type);
}
bool wxXmlDocument::Save(wxOutputStream& stream, wxXmlIOType io_type) const
{
wxNode *n = sm_Handlers->GetFirst();
while (n)
{
wxXmlIOHandler *h = (wxXmlIOHandler*) n->GetData();
if (io_type == h->GetType() && h->CanSave())
{
return h->Save(stream, *this);
}
n = n->GetNext();
}
wxLogError(_("Cannot find XML I/O handler capable of saving in this format."));
return FALSE;
}
wxList *wxXmlDocument::sm_Handlers = NULL;
void wxXmlDocument::AddHandler(wxXmlIOHandler *handler)
{
if (sm_Handlers == NULL)
{
sm_Handlers = new wxList;
sm_Handlers->DeleteContents(TRUE);
}
sm_Handlers->Append(handler);
}
void wxXmlDocument::CleanUpHandlers()
{
delete sm_Handlers;
sm_Handlers = NULL;
}
void wxXmlDocument::InitStandardHandlers()
{
AddHandler(new wxXmlIOHandlerBin);
AddHandler(new wxXmlIOHandlerLibxml);
}
#include "wx/module.h"
class wxXmlModule: public wxModule
{
DECLARE_DYNAMIC_CLASS(wxXmlModule)
public:
wxXmlModule() {}
bool OnInit() { wxXmlDocument::InitStandardHandlers(); return TRUE; };
void OnExit() { wxXmlDocument::CleanUpHandlers(); };
};
IMPLEMENT_DYNAMIC_CLASS(wxXmlModule, wxModule)

161
contrib/src/xml/xmlbin.cpp Normal file
View File

@@ -0,0 +1,161 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xmlbin.cpp
// Purpose: wxXmlIOHandlerBin
// Author: Vaclav Slavik
// Created: 2000/07/24
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
// nothing, already in xml.cpp
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/datstrm.h"
#include "wx/log.h"
#include "wx/intl.h"
#include "wx/xml/xmlio.h"
bool wxXmlIOHandlerBin::CanLoad(wxInputStream& stream)
{
bool canread;
canread = (ReadHeader(stream) == _T("XMLBIN "));
stream.SeekI(-9, wxFromCurrent);
return canread;
}
wxString wxXmlIOHandlerBin::ReadHeader(wxInputStream& stream)
{
wxUint8 version;
char cheader[8];
stream.Read(cheader, 8);
cheader[7] = 0;
stream.Read(&version, 1);
if (version != 1) return wxEmptyString;
else return wxString(cheader);
}
void wxXmlIOHandlerBin::WriteHeader(wxOutputStream& stream, const wxString& header)
{
char cheader[8];
size_t i;
wxUint8 version = 1;
for (i = 0; i < header.Length(); i++) cheader[i] = header[i];
for (; i < 7; i++) cheader[i] = ' ';
cheader[7] = 0;
stream.Write(cheader, 8);
stream.Write(&version, 1);
}
static bool SaveBinNode(wxDataOutputStream& ds, wxXmlNode *node)
{
if (node)
{
ds << (wxUint8)1 <<
(wxUint8)node->GetType() <<
node->GetName() << node->GetContent();
wxXmlProperty *prop = node->GetProperties();
while (prop)
{
ds << (wxUint8)1;
ds << prop->GetName() << prop->GetValue();
prop = prop->GetNext();
}
ds << (wxUint8)0;
SaveBinNode(ds, node->GetNext());
SaveBinNode(ds, node->GetChildren());
}
else
ds << (wxUint8)0;
return TRUE;
}
bool wxXmlIOHandlerBin::Save(wxOutputStream& stream, const wxXmlDocument& doc)
{
WriteHeader(stream, "XMLBIN ");
wxDataOutputStream ds(stream);
ds << doc.GetVersion() << doc.GetEncoding();
SaveBinNode(ds, doc.GetRoot());
return stream.LastError() == wxSTREAM_NOERROR;
}
static wxXmlProperty *LoadBinProp(wxDataInputStream& ds)
{
wxUint8 dummy;
ds >> dummy;
if (dummy == 0) return NULL;
wxString name, value;
ds >> name >> value;
return new wxXmlProperty(name, value, LoadBinProp(ds));
}
static wxXmlNode *LoadBinNode(wxDataInputStream& ds, wxXmlNode *parent)
{
wxUint8 type;
wxString name, content;
wxUint8 dummy;
ds >> dummy;
if (dummy == 0) return NULL;
ds >> type >> name >> content;
wxXmlProperty *prop = LoadBinProp(ds);
wxXmlNode *nd = new wxXmlNode(parent, (wxXmlNodeType)type, name, content,
prop, LoadBinNode(ds, parent));
LoadBinNode(ds, nd);
return nd;
}
bool wxXmlIOHandlerBin::Load(wxInputStream& stream, wxXmlDocument& doc)
{
ReadHeader(stream);
wxDataInputStream ds(stream);
wxString tmp;
ds >> tmp;
doc.SetVersion(tmp);
ds >> tmp;
doc.SetEncoding(tmp);
doc.SetRoot(LoadBinNode(ds, NULL));
return (doc.GetRoot() != NULL);
}

View File

@@ -0,0 +1,59 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xmlbinz.cpp
// Purpose: wxXmlIOHandlerBinZ
// Author: Vaclav Slavik
// Created: 2000/07/24
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
// nothing, already in xml.cpp
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/datstrm.h"
#include "wx/log.h"
#include "wx/zstream.h"
#include "wx/xml/xmlio.h"
#if wxUSE_ZLIB
bool wxXmlIOHandlerBinZ::CanLoad(wxInputStream& stream)
{
bool canread;
canread = (ReadHeader(stream) == _T("XMLBINZ"));
stream.SeekI(-9, wxFromCurrent);
return canread;
}
bool wxXmlIOHandlerBinZ::Save(wxOutputStream& stream, const wxXmlDocument& doc)
{
WriteHeader(stream, "XMLBINZ");
wxZlibOutputStream costr(stream, 9);
return wxXmlIOHandlerBin::Save(costr, doc);
}
bool wxXmlIOHandlerBinZ::Load(wxInputStream& stream, wxXmlDocument& doc)
{
ReadHeader(stream);
wxZlibInputStream costr(stream);
return wxXmlIOHandlerBin::Load(stream, doc);
}
#endif

308
contrib/src/xml/xmlpars.cpp Normal file
View File

@@ -0,0 +1,308 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xmlpars.cpp
// Purpose: wxXmlDocument - XML parser
// Author: Vaclav Slavik
// Created: 2000/03/05
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
// nothing - already in xml.cpp
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/wfstream.h"
#include "wx/intl.h"
#include "wx/log.h"
#include "wx/dynlib.h"
#include "wx/xml/xmlio.h"
#include <libxml/parser.h>
// dynamically loaded functions from libxml:
typedef xmlParserCtxtPtr (*type_xmlCreatePushParserCtxt)
(xmlSAXHandlerPtr sax, void *, const char *, int, const char *);
typedef xmlNodePtr (*type_xmlNewText)(const xmlChar *);
typedef xmlAttrPtr (*type_xmlSetProp)(xmlNodePtr, const xmlChar *, const xmlChar *);
typedef int (*type_xmlParseChunk)(xmlParserCtxtPtr, const char *, int, int);
typedef void (*type_xmlFreeParserCtxt)(xmlParserCtxtPtr);
typedef xmlDocPtr (*type_xmlNewDoc)(const xmlChar *);
typedef void (*type_xmlFreeDoc)(xmlDocPtr);
typedef xmlNodePtr (*type_xmlNewDocNode)(xmlDocPtr, xmlNsPtr, const xmlChar *, const xmlChar *);
typedef void (*type_xmlDocDumpMemory)(xmlDocPtr, xmlChar**, int *);
typedef xmlNodePtr (*type_xmlAddChild)(xmlNodePtr, xmlNodePtr);
typedef xmlNodePtr (*type_xmlNewChild)(xmlNodePtr, xmlNsPtr, const xmlChar *, const xmlChar *);
typedef xmlChar * (*type_xmlNodeListGetString)(xmlDocPtr, xmlNodePtr, int);
typedef xmlNodePtr (*type_xmlDocGetRootElement)(xmlDocPtr);
typedef xmlNodePtr (*type_xmlDocSetRootElement)(xmlDocPtr doc, xmlNodePtr root);
typedef void (*(*type_xmlFree))(void *);
typedef int (*type_xmlKeepBlanksDefault)(int);
static struct
{
wxDllType Handle;
type_xmlCreatePushParserCtxt xmlCreatePushParserCtxt;
type_xmlNewText xmlNewText;
type_xmlSetProp xmlSetProp;
type_xmlParseChunk xmlParseChunk;
type_xmlFreeParserCtxt xmlFreeParserCtxt;
type_xmlNewDoc xmlNewDoc;
type_xmlFreeDoc xmlFreeDoc;
type_xmlNewDocNode xmlNewDocNode;
type_xmlDocDumpMemory xmlDocDumpMemory;
type_xmlAddChild xmlAddChild;
type_xmlNewChild xmlNewChild;
type_xmlNodeListGetString xmlNodeListGetString;
type_xmlDocGetRootElement xmlDocGetRootElement;
type_xmlDocSetRootElement xmlDocSetRootElement;
type_xmlFree xmlFree;
type_xmlKeepBlanksDefault xmlKeepBlanksDefault;
} gs_libxmlDLL;
static bool gs_libxmlLoaded = FALSE;
static bool gs_libxmlLoadFailed = FALSE;
static void ReleaseLibxml()
{
if (gs_libxmlLoaded)
{
wxDllLoader::UnloadLibrary(gs_libxmlDLL.Handle);
}
gs_libxmlLoaded = FALSE;
gs_libxmlLoadFailed = FALSE;
}
static bool LoadLibxml()
{
if (gs_libxmlLoaded) return TRUE;
if (gs_libxmlLoadFailed) return FALSE;
gs_libxmlLoadFailed = TRUE;
{
wxLogNull lg;
#ifdef __UNIX__
gs_libxmlDLL.Handle =
wxDllLoader::LoadLibrary(_T("wxlibxml.so.2"), &gs_libxmlLoaded);
if (!gs_libxmlLoaded) gs_libxmlDLL.Handle =
wxDllLoader::LoadLibrary(_T("libxml.so.2"), &gs_libxmlLoaded);
#endif
#ifdef __WXMSW__
gs_libxmlDLL.Handle =
wxDllLoader::LoadLibrary(_T("wxlibxml2.dll"), &gs_libxmlLoaded);
if (!gs_libxmlLoaded) gs_libxmlDLL.Handle =
wxDllLoader::LoadLibrary(_T("libxml2.dll"), &gs_libxmlLoaded);
#endif
}
if (!gs_libxmlLoaded)
{
wxLogError(_("Failed to load libxml shared library."));
return FALSE;
}
#define LOAD_SYMBOL(sym) \
gs_libxmlDLL.sym = \
(type_##sym)wxDllLoader::GetSymbol(gs_libxmlDLL.Handle, _T(#sym)); \
if (!gs_libxmlDLL.sym) \
{ \
ReleaseLibxml(); \
wxLogError(_("Failed to load libxml shared library.")); \
return FALSE; \
}
LOAD_SYMBOL(xmlCreatePushParserCtxt)
LOAD_SYMBOL(xmlNewText)
LOAD_SYMBOL(xmlSetProp)
LOAD_SYMBOL(xmlParseChunk)
LOAD_SYMBOL(xmlFreeParserCtxt)
LOAD_SYMBOL(xmlNewDoc)
LOAD_SYMBOL(xmlFreeDoc)
LOAD_SYMBOL(xmlNewDocNode)
LOAD_SYMBOL(xmlDocDumpMemory)
LOAD_SYMBOL(xmlAddChild)
LOAD_SYMBOL(xmlNewChild)
LOAD_SYMBOL(xmlNodeListGetString)
LOAD_SYMBOL(xmlDocGetRootElement)
LOAD_SYMBOL(xmlDocSetRootElement)
LOAD_SYMBOL(xmlFree)
LOAD_SYMBOL(xmlKeepBlanksDefault)
#undef LOAD_SYMBOL
gs_libxmlLoadFailed = FALSE;
return TRUE;
}
bool wxXmlIOHandlerLibxml::CanLoad(wxInputStream& stream)
{
if (!LoadLibxml()) return FALSE;
char cheader[7];
cheader[6] = 0;
stream.Read(cheader, 6);
stream.SeekI(-6, wxFromCurrent);
return strcmp(cheader, "<?xml ") == 0;
}
bool wxXmlIOHandlerLibxml::CanSave()
{
return LoadLibxml();
}
static wxXmlProperty *CreateWXProperty(xmlDocPtr doc, xmlAttrPtr attr)
{
if (attr == NULL) return NULL;
unsigned char *val =
gs_libxmlDLL.xmlNodeListGetString(doc, attr->children, 1);
wxXmlProperty *prop =
new wxXmlProperty(attr->name, val, CreateWXProperty(doc, attr->next));
(*gs_libxmlDLL.xmlFree)(val);
return prop;
}
static wxXmlNode *CreateWXNode(xmlDocPtr doc, wxXmlNode *parent, xmlNodePtr node)
{
if (node == NULL) return NULL;
wxXmlNode *nd = new wxXmlNode(parent, (wxXmlNodeType)node->type,
node->name, node->content,
CreateWXProperty(doc, node->properties),
CreateWXNode(doc, parent, node->next));
CreateWXNode(doc, nd, node->children);
return nd;
}
bool wxXmlIOHandlerLibxml::Load(wxInputStream& stream, wxXmlDocument& doc)
{
if (!LoadLibxml()) return FALSE;
xmlDocPtr dc;
xmlParserCtxtPtr ctxt;
char buffer[1024];
int res;
res = stream.Read(buffer, 4).LastRead();
if (res > 0)
{
bool okay = TRUE;
gs_libxmlDLL.xmlKeepBlanksDefault(0);
ctxt = gs_libxmlDLL.xmlCreatePushParserCtxt(NULL, NULL,
buffer, res, ""/*docname*/);
while ((res = stream.Read(buffer, 1024).LastRead()) > 0)
if (gs_libxmlDLL.xmlParseChunk(ctxt, buffer, res, 0) != 0)
okay = FALSE;
if (gs_libxmlDLL.xmlParseChunk(ctxt, buffer, 0, 1) != 0) okay = FALSE;
dc = ctxt->myDoc;
gs_libxmlDLL.xmlFreeParserCtxt(ctxt);
doc.SetVersion(dc->version);
doc.SetEncoding(dc->encoding);
doc.SetRoot(CreateWXNode(dc, NULL, gs_libxmlDLL.xmlDocGetRootElement(dc)));
gs_libxmlDLL.xmlFreeDoc(dc);
return okay;
}
else return FALSE;
}
static void CreateLibxmlNode(xmlNodePtr node, wxXmlNode *wxnode)
{
node->type = (xmlElementType)wxnode->GetType();
wxXmlProperty *prop = wxnode->GetProperties();
while (prop)
{
gs_libxmlDLL.xmlSetProp(node, (xmlChar*)prop->GetName().mb_str(),
(xmlChar*)prop->GetValue().mb_str());
prop = prop->GetNext();
}
wxXmlNode *child = wxnode->GetChildren();
xmlNodePtr n;
xmlChar *content, *name;
while (child)
{
name = (xmlChar*)child->GetName().mb_str();
if (!child->GetContent()) content = NULL;
else content = (xmlChar*)child->GetContent().mb_str();
if (child->GetType() == wxXML_TEXT_NODE)
gs_libxmlDLL.xmlAddChild(node, n = gs_libxmlDLL.xmlNewText(content));
else
n = gs_libxmlDLL.xmlNewChild(node, NULL, name, content);
CreateLibxmlNode(n, child);
child = child->GetNext();
}
}
bool wxXmlIOHandlerLibxml::Save(wxOutputStream& stream, const wxXmlDocument& doc)
{
if (!LoadLibxml()) return FALSE;
xmlDocPtr dc;
wxASSERT_MSG(doc.GetRoot() != NULL, _("Trying to save empty document!"));
gs_libxmlDLL.xmlKeepBlanksDefault(0);
dc = gs_libxmlDLL.xmlNewDoc((xmlChar*)doc.GetVersion().mb_str());
gs_libxmlDLL.xmlDocSetRootElement(dc,
gs_libxmlDLL.xmlNewDocNode(dc, NULL,
(xmlChar*)doc.GetRoot()->GetName().mb_str(), NULL));
CreateLibxmlNode(gs_libxmlDLL.xmlDocGetRootElement(dc), doc.GetRoot());
xmlChar *buffer;
int size;
gs_libxmlDLL.xmlDocDumpMemory(dc, &buffer, &size);
gs_libxmlDLL.xmlFreeDoc(dc);
stream.Write(buffer, size);
(*gs_libxmlDLL.xmlFree)(buffer);
return stream.LastWrite() == (unsigned)size;
}
#include "wx/module.h"
class wxXmlLibxmlModule: public wxModule
{
DECLARE_DYNAMIC_CLASS(wxXmlLibxmlModule)
public:
wxXmlLibxmlModule() {}
bool OnInit() { return TRUE; }
void OnExit() { ReleaseLibxml(); }
};
IMPLEMENT_DYNAMIC_CLASS(wxXmlLibxmlModule, wxModule)

747
contrib/src/xml/xmlres.cpp Normal file
View File

@@ -0,0 +1,747 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xmlres.cpp
// Purpose: XML resources
// Author: Vaclav Slavik
// Created: 2000/03/05
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "xmlres.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/dialog.h"
#include "wx/panel.h"
#include "wx/wfstream.h"
#include "wx/filesys.h"
#include "wx/log.h"
#include "wx/intl.h"
#include "wx/tokenzr.h"
#include "wx/module.h"
#include "wx/xml/xml.h"
#include "wx/xml/xmlres.h"
#include "wx/arrimpl.cpp"
WX_DEFINE_OBJARRAY(wxXmlResourceDataRecords);
wxXmlResource::wxXmlResource()
{
m_Handlers.DeleteContents(TRUE);
}
wxXmlResource::wxXmlResource(const wxString& filemask)
{
m_Handlers.DeleteContents(TRUE);
Load(filemask);
}
wxXmlResource::~wxXmlResource()
{
ClearHandlers();
}
bool wxXmlResource::Load(const wxString& filemask)
{
wxString fnd;
wxXmlResourceDataRecord *drec;
bool iswild = wxIsWild(filemask);
#if wxUSE_FILESYSTEM
wxFileSystem fsys;
# define wxXmlFindFirst fsys.FindFirst(filemask, wxFILE)
# define wxXmlFindNext fsys.FindNext()
#else
# define wxXmlFindFirst wxFindFirstFile(filemask, wxFILE)
# define wxXmlFindNext wxFindNextFile()
#endif
if (iswild)
fnd = wxXmlFindFirst;
else
fnd = filemask;
while (!!fnd)
{
#if wxUSE_FILESYSTEM
if (filemask.Lower().Matches("*.zip") ||
filemask.Lower().Matches("*.rsc"))
{
wxFileSystem fs2;
wxString fnd2;
fnd2 = fs2.FindFirst(fnd + wxT("#zip:*.xmb"), wxFILE);
while (!!fnd2)
{
drec = new wxXmlResourceDataRecord;
drec->File = fnd2;
m_Data.Add(drec);
fnd2 = fs2.FindNext();
}
}
else
#endif
{
drec = new wxXmlResourceDataRecord;
drec->File = fnd;
m_Data.Add(drec);
}
if (iswild)
fnd = wxXmlFindNext;
else
fnd = wxEmptyString;
}
# undef wxXmlFindFirst
# undef wxXmlFindNext
return TRUE;
}
void wxXmlResource::AddHandler(wxXmlResourceHandler *handler)
{
m_Handlers.Append(handler);
handler->SetParentResource(this);
}
void wxXmlResource::ClearHandlers()
{
m_Handlers.Clear();
}
wxMenu *wxXmlResource::LoadMenu(const wxString& name)
{
return (wxMenu*)CreateResFromNode(FindResource(name, wxT("menu")), NULL, NULL);
}
wxMenuBar *wxXmlResource::LoadMenuBar(const wxString& name)
{
return (wxMenuBar*)CreateResFromNode(FindResource(name, wxT("menubar")), NULL, NULL);
}
wxDialog *wxXmlResource::LoadDialog(wxWindow *parent, const wxString& name)
{
wxDialog *dialog = new wxDialog;
if (!LoadDialog(dialog, parent, name))
{ delete dialog; return NULL; }
else return dialog;
}
bool wxXmlResource::LoadDialog(wxDialog *dlg, wxWindow *parent, const wxString& name)
{
return CreateResFromNode(FindResource(name, wxT("dialog")), parent, dlg) != NULL;
}
wxPanel *wxXmlResource::LoadPanel(wxWindow *parent, const wxString& name)
{
wxPanel *panel = new wxPanel;
if (!LoadPanel(panel, parent, name))
{ delete panel; return NULL; }
else return panel;
}
bool wxXmlResource::LoadPanel(wxPanel *panel, wxWindow *parent, const wxString& name)
{
return CreateResFromNode(FindResource(name, wxT("panel")), parent, panel) != NULL;
}
void wxXmlResource::ProcessPlatformProperty(wxXmlNode *node)
{
wxString s;
bool isok;
wxXmlNode *c = node->GetChildren();
while (c)
{
isok = FALSE;
if (!c->GetPropVal(_T("platform"), &s))
isok = TRUE;
else
{
wxStringTokenizer tkn(s, " |");
while (tkn.HasMoreTokens())
{
s = tkn.GetNextToken();
if (
#ifdef __WXMSW__
s == wxString(_T("win"))
#elif defined(__UNIX__)
s == wxString(_T("unix"))
#elif defined(__MAC__)
s == wxString(_T("mac"))
#elif defined(__OS2__)
s == wxString(_T("os2"))
#else
FALSE
#endif
) isok = TRUE;
}
}
if (isok)
ProcessPlatformProperty(c);
else
{
node->RemoveChild(c);
delete c;
}
c = c->GetNext();
}
}
void wxXmlResource::UpdateResources()
{
bool modif;
# if wxUSE_FILESYSTEM
wxFSFile *file;
wxFileSystem fsys;
# endif
for (size_t i = 0; i < m_Data.GetCount(); i++)
{
modif = (m_Data[i].Doc == NULL);
if (!modif)
{
# if wxUSE_FILESYSTEM
file = fsys.OpenFile(m_Data[i].File);
modif = file && file->GetModificationTime() > m_Data[i].Time;
if (!file)
wxLogError(_("Cannot open file '%s'."), m_Data[i].File.c_str());
delete file;
# else
modif = wxDateTime(wxFileModificationTime(m_Data[i].File)) > m_Data[i].Time;
# endif
}
if (modif)
{
wxInputStream *stream;
# if wxUSE_FILESYSTEM
file = fsys.OpenFile(m_Data[i].File);
stream = file->GetStream();
# else
stream = new wxFileInputStream(m_Data[i].File);
# endif
if (stream)
{
delete m_Data[i].Doc;
m_Data[i].Doc = new wxXmlDocument;
}
if (!stream || !m_Data[i].Doc->Load(*stream))
{
wxLogError(_("Cannot load resources from file '%s'."), m_Data[i].File.c_str());
delete m_Data[i].Doc;
m_Data[i].Doc = NULL;
}
else if (m_Data[i].Doc->GetRoot()->GetName() != _T("resource"))
{
wxLogError(_("Invalid XML resource '%s': doesn't have root node 'resource'."), m_Data[i].File.c_str());
delete m_Data[i].Doc;
m_Data[i].Doc = NULL;
}
else
ProcessPlatformProperty(m_Data[i].Doc->GetRoot());
# if wxUSE_FILESYSTEM
delete file;
# else
delete stream;
# endif
}
}
}
wxXmlNode *wxXmlResource::FindResource(const wxString& name, const wxString& type)
{
UpdateResources(); //ensure everything is up-to-date
wxString dummy;
for (size_t f = 0; f < m_Data.GetCount(); f++)
{
if (m_Data[f].Doc == NULL || m_Data[f].Doc->GetRoot() == NULL) continue;
for (wxXmlNode *node = m_Data[f].Doc->GetRoot()->GetChildren();
node; node = node->GetNext())
if ( node->GetType() == wxXML_ELEMENT_NODE &&
(!type || node->GetName() == type) &&
node->GetPropVal(wxT("name"), &dummy) &&
dummy == name)
return node;
}
wxLogError(_("XML resource '%s' (type '%s') not found!"),
name.c_str(), type.c_str());
return NULL;
}
wxObject *wxXmlResource::CreateResFromNode(wxXmlNode *node, wxObject *parent, wxObject *instance)
{
if (node == NULL) return NULL;
wxXmlResourceHandler *handler;
wxObject *ret;
wxNode * ND = m_Handlers.GetFirst();
while (ND)
{
handler = (wxXmlResourceHandler*)ND->GetData();
if (handler->CanHandle(node))
{
ret = handler->CreateResource(node, parent, instance);
if (ret) return ret;
}
ND = ND->GetNext();
}
wxLogError(_("No handler found for XML node '%s'!"), node->GetName().c_str());
return NULL;
}
wxXmlResourceHandler::wxXmlResourceHandler()
: m_Node(NULL), m_Parent(NULL), m_Instance(NULL),
m_ParentAsWindow(NULL), m_InstanceAsWindow(NULL)
{}
wxObject *wxXmlResourceHandler::CreateResource(wxXmlNode *node, wxObject *parent, wxObject *instance)
{
wxXmlNode *myNode = m_Node;
wxObject *myParent = m_Parent, *myInstance = m_Instance;
wxWindow *myParentAW = m_ParentAsWindow, *myInstanceAW = m_InstanceAsWindow;
m_Node = node;
m_Parent = parent;
m_Instance = instance;
m_ParentAsWindow = wxDynamicCast(m_Parent, wxWindow);
m_InstanceAsWindow = wxDynamicCast(m_Instance, wxWindow);
wxObject *returned = DoCreateResource();
m_Node = myNode;
m_Parent = myParent; m_ParentAsWindow = myParentAW;
m_Instance = myInstance; m_InstanceAsWindow = myInstanceAW;
return returned;
}
void wxXmlResourceHandler::AddStyle(const wxString& name, int value)
{
m_StyleNames.Add(name);
m_StyleValues.Add(value);
}
bool wxXmlResourceHandler::HasParam(const wxString& param)
{
return (GetParamNode(param) != NULL);
}
int wxXmlResourceHandler::GetStyle(const wxString& param, int defaults)
{
wxString s = GetParamValue(param);
if (!s) return defaults;
wxStringTokenizer tkn(s, _T("| "), wxTOKEN_STRTOK);
int style = 0;
int index;
wxString fl;
while (tkn.HasMoreTokens())
{
fl = tkn.GetNextToken();
index = m_StyleNames.Index(fl);
if (index != wxNOT_FOUND)
style |= m_StyleValues[index];
else
wxLogError(_("Unknown style flag ") + fl);
}
return style;
}
wxString wxXmlResourceHandler::GetText(const wxString& param)
{
wxString str1 = GetParamValue(param);
wxString str2;
const wxChar *dt;
for (dt = str1.c_str(); *dt; dt++)
{
// Remap $ to &, map $$ to $ (for things like "&File..." --
// this is illegal in XML, so we use "$File..."):
if (*dt == '$')
switch (*(++dt))
{
case '$' : str2 << '$'; break;
default : str2 << '&' << *dt; break;
}
// Remap \n to CR, \r LF, \t to TAB:
else if (*dt == '\\')
switch (*(++dt))
{
case 'n' : str2 << '\n'; break;
case 't' : str2 << '\t'; break;
case 'r' : str2 << '\r'; break;
default : str2 << '\\' << *dt; break;
}
else str2 << *dt;
}
return str2;
}
long wxXmlResourceHandler::GetLong(const wxString& param, long defaultv)
{
long value;
wxString str1 = GetParamValue(param);
if (!str1.ToLong(&value))
value = defaultv;
return value;
}
int wxXmlResourceHandler::GetID()
{
wxString sid = GetName();
long num;
if (sid == _T("-1")) return -1;
else if (sid.IsNumber() && sid.ToLong(&num)) return num;
#define stdID(id) else if (sid == _T(#id)) return id
stdID(wxID_OPEN); stdID(wxID_CLOSE); stdID(wxID_NEW);
stdID(wxID_SAVE); stdID(wxID_SAVEAS); stdID(wxID_REVERT);
stdID(wxID_EXIT); stdID(wxID_UNDO); stdID(wxID_REDO);
stdID(wxID_HELP); stdID(wxID_PRINT); stdID(wxID_PRINT_SETUP);
stdID(wxID_PREVIEW); stdID(wxID_ABOUT); stdID(wxID_HELP_CONTENTS);
stdID(wxID_HELP_COMMANDS); stdID(wxID_HELP_PROCEDURES);
stdID(wxID_CUT); stdID(wxID_COPY); stdID(wxID_PASTE);
stdID(wxID_CLEAR); stdID(wxID_FIND); stdID(wxID_DUPLICATE);
stdID(wxID_SELECTALL); stdID(wxID_OK); stdID(wxID_CANCEL);
stdID(wxID_APPLY); stdID(wxID_YES); stdID(wxID_NO);
stdID(wxID_STATIC); stdID(wxID_FORWARD); stdID(wxID_BACKWARD);
stdID(wxID_DEFAULT); stdID(wxID_MORE); stdID(wxID_SETUP);
stdID(wxID_RESET); stdID(wxID_HELP_CONTEXT);
#undef stdID
else return XMLID(sid.c_str());
}
wxString wxXmlResourceHandler::GetName()
{
return m_Node->GetPropVal(_T("name"), _T("-1"));
}
bool wxXmlResourceHandler::GetBool(const wxString& param, bool defaultv)
{
wxString v = GetParamValue(param);
v.MakeLower();
if (!v) return defaultv;
else return (v == _T("1"));
}
wxColour wxXmlResourceHandler::GetColour(const wxString& param)
{
wxString v = GetParamValue(param);
unsigned long tmp = 0;
if (v.Length() != 7 || v[0] != _T('#') ||
wxSscanf(v.c_str(), _T("#%lX"), &tmp) != 1)
{
wxLogError(_("XML resource: Incorrect colour specification '%s' for property '%s'."),
v.c_str(), param.c_str());
return wxNullColour;
}
return wxColour((tmp & 0xFF0000) >> 16 ,
(tmp & 0x00FF00) >> 8,
(tmp & 0x0000FF));
}
wxXmlNode *wxXmlResourceHandler::GetParamNode(const wxString& param)
{
wxXmlNode *n = m_Node->GetChildren();
while (n)
{
if (n->GetType() == wxXML_ELEMENT_NODE && n->GetName() == param)
return n;
n = n->GetNext();
}
return NULL;
}
wxString wxXmlResourceHandler::GetNodeContent(wxXmlNode *node)
{
wxXmlNode *n = node;
if (n == NULL) return wxEmptyString;
n = n->GetChildren();
while (n)
{
if (n->GetType() == wxXML_TEXT_NODE ||
n->GetType() == wxXML_CDATA_SECTION_NODE)
return n->GetContent();
n = n->GetNext();
}
return wxEmptyString;
}
wxString wxXmlResourceHandler::GetParamValue(const wxString& param)
{
return GetNodeContent(GetParamNode(param));
}
wxSize wxXmlResourceHandler::GetSize(const wxString& param)
{
wxString s = GetParamValue(param);
if (s.IsEmpty()) s = _T("-1,-1");
bool is_dlg;
long sx, sy;
is_dlg = s[s.Length()-1] == _T('d');
if (is_dlg) s.RemoveLast();
if (!s.BeforeFirst(_T(',')).ToLong(&sx) ||
!s.AfterLast(_T(',')).ToLong(&sy))
{
wxLogError(_("Cannot parse coordinates from '%s'."), s.mb_str());
return wxDefaultSize;
}
if (is_dlg)
{
if (m_InstanceAsWindow)
return wxDLG_UNIT(m_InstanceAsWindow, wxSize(sx, sy));
else if (m_ParentAsWindow)
return wxDLG_UNIT(m_ParentAsWindow, wxSize(sx, sy));
else
{
wxLogError(_("Cannot convert dialog units: dialog unknown."));
return wxDefaultSize;
}
}
else return wxSize(sx, sy);
}
wxPoint wxXmlResourceHandler::GetPosition(const wxString& param)
{
wxSize sz = GetSize(param);
return wxPoint(sz.x, sz.y);
}
void wxXmlResourceHandler::SetupWindow(wxWindow *wnd)
{
//FIXME : add font, cursor
if (HasParam(_T("exstyle")))
wnd->SetExtraStyle(GetStyle(_T("exstyle")));
if (HasParam(_T("bg")))
wnd->SetBackgroundColour(GetColour(_T("bg")));
if (HasParam(_T("fg")))
wnd->SetForegroundColour(GetColour(_T("fg")));
if (GetBool(_T("enabled"), 1) == 0)
wnd->Enable(FALSE);
if (GetBool(_T("focused"), 0) == 1)
wnd->SetFocus();
if (GetBool(_T("hidden"), 0) == 1)
wnd->Show(FALSE);
#if wxUSE_TOOLTIPS
if (HasParam(_T("tooltip")))
wnd->SetToolTip(GetText(_T("tooltip")));
#endif
}
void wxXmlResourceHandler::CreateChildren(wxObject *parent,
bool only_this_handler, wxXmlNode *children_node)
{
if (children_node == NULL) children_node = GetParamNode(_T("children"));
if (children_node == NULL) return;
wxXmlNode *n = children_node->GetChildren();
while (n)
{
if (n->GetType() == wxXML_ELEMENT_NODE)
{
if (only_this_handler)
{
if (CanHandle(n))
CreateResource(n, parent, NULL);
}
else
m_Resource->CreateResFromNode(n, parent, NULL);
}
n = n->GetNext();
}
}
// --------------- XMLID implementation -----------------------------
#define XMLID_TABLE_SIZE 1024
struct XMLID_record
{
int id;
char *key;
XMLID_record *next;
};
static XMLID_record *XMLID_Records[XMLID_TABLE_SIZE] = {NULL};
static int XMLID_LastID = wxID_HIGHEST;
/*static*/ int wxXmlResource::GetXMLID(const char *str_id)
{
int index = 0;
for (const char *c = str_id; *c != '\0'; c++) index += (int)*c;
index %= XMLID_TABLE_SIZE;
XMLID_record *oldrec = NULL;
int matchcnt = 0;
for (XMLID_record *rec = XMLID_Records[index]; rec; rec = rec->next)
{
if (strcmp(rec->key, str_id) == 0)
{
#ifdef DEBUG_XMLID_HASH
printf("XMLID: matched '%s' (%ith item)\n", rec->key, matchcnt);
#endif
return rec->id;
}
matchcnt++;
oldrec = rec;
}
XMLID_record **rec_var = (oldrec == NULL) ?
&XMLID_Records[index] : &oldrec->next;
*rec_var = new XMLID_record;
(*rec_var)->id = ++XMLID_LastID;
(*rec_var)->key = strdup(str_id);
(*rec_var)->next = NULL;
#ifdef DEBUG_XMLID_HASH
printf("XMLID: new key for '%s': %i at %i (%ith item)\n",
(*rec_var)->key, (*rec_var)->id, index, matchcnt);
#endif
return (*rec_var)->id;
}
static void CleanXMLID_Record(XMLID_record *rec)
{
if (rec)
{
#ifdef DEBUG_XMLID_HASH
printf("XMLID: clearing '%s'\n", rec->key);
#endif
CleanXMLID_Record(rec->next);
free (rec->key);
delete rec;
}
}
static void CleanXMLID_Records()
{
for (int i = 0; i < XMLID_TABLE_SIZE; i++)
CleanXMLID_Record(XMLID_Records[i]);
}
// --------------- module and globals -----------------------------
static wxXmlResource gs_XmlResource;
wxXmlResource *wxTheXmlResource = &gs_XmlResource;
class wxXmlResourceModule: public wxModule
{
DECLARE_DYNAMIC_CLASS(wxXmlResourceModule)
public:
wxXmlResourceModule() {}
bool OnInit() {return TRUE;}
void OnExit()
{
wxTheXmlResource->ClearHandlers();
CleanXMLID_Records();
}
};
IMPLEMENT_DYNAMIC_CLASS(wxXmlResourceModule, wxModule)

View File

@@ -0,0 +1,69 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xmlrsall.cpp
// Purpose: wxXmlResource::InitAllHandlers
// Author: Vaclav Slavik
// Created: 2000/03/05
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// -- Already done in xmlres.cpp
//#ifdef __GNUG__
//#pragma implementation "xmlres.h"
//#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/xml/xmlres.h"
#include "wx/xml/xh_all.h"
void wxXmlResource::InitAllHandlers()
{
AddHandler(new wxMenuXmlHandler);
AddHandler(new wxMenuBarXmlHandler);
AddHandler(new wxDialogXmlHandler);
AddHandler(new wxPanelXmlHandler);
AddHandler(new wxButtonXmlHandler);
#if wxUSE_GAUGE
AddHandler(new wxGaugeXmlHandler);
#endif
#if wxUSE_CHECKBOX
AddHandler(new wxCheckBoxXmlHandler);
#endif
#if wxUSE_HTML
AddHandler(new wxHtmlWindowXmlHandler);
#endif
#if wxUSE_SPINBTN
AddHandler(new wxSpinButtonXmlHandler);
#endif
#if wxUSE_SPINCTRL
AddHandler(new wxSpinCtrlXmlHandler);
#endif
AddHandler(new wxStaticTextXmlHandler);
AddHandler(new wxStaticBitmapXmlHandler);
AddHandler(new wxSliderXmlHandler);
#if wxUSE_RADIOBOX
AddHandler(new wxRadioBoxXmlHandler);
AddHandler(new wxRadioButtonXmlHandler);
#endif
#if wxUSE_COMBOBOX
AddHandler(new wxComboBoxXmlHandler);
#endif
AddHandler(new wxChoiceXmlHandler);
AddHandler(new wxCheckListXmlHandler);
AddHandler(new wxSizerXmlHandler);
#if wxUSE_NOTEBOOK
AddHandler(new wxNotebookXmlHandler);
#endif
AddHandler(new wxTextCtrlXmlHandler);
#if wxUSE_LISTBOX
AddHandler(new wxListBoxXmlHandler);
#endif
}

10
contrib/utils/Makefile.in Normal file
View File

@@ -0,0 +1,10 @@
# $Id$
CONTRIB_UTILS=wxrc wxrcedit
all:
@for d in $(CONTRIB_UTILS); do (cd $$d && $(MAKE)); done
clean:
@for d in $(CONTRIB_UTILS); do (cd $$d && $(MAKE) clean); done

View File

@@ -0,0 +1,16 @@
# $Id$
top_srcdir = @top_srcdir@/..
top_builddir = ../../..
program_dir = contrib/utils/wxrc
PROGRAM=wxrc
OBJECTS=wxrc.o
APPEXTRALIBS=$(top_builddir)/lib/libwxxml.@WX_TARGET_LIBRARY_TYPE@
APPEXTRADEFS=-I$(top_srcdir)/contrib/include
include $(top_builddir)/src/makeprog.env

View File

@@ -5,11 +5,12 @@
# Updated:
# Copyright:
#
# Makefile : Builds sample for 32-bit BC++
# Makefile : Builds wxrc for 32-bit BC++
WXDIR = $(WXWIN)
TARGET=controls
TARGET=wxrc
EXTRALIBS=$(WXDIR)\lib\wxxml.lib
OBJECTS = $(TARGET).obj
!include $(WXDIR)\src\makeprog.b32

View File

@@ -5,11 +5,12 @@
# Updated:
# Copyright: (c) Julian Smart, 1999
#
# Makefile for wxWindows sample (Cygwin/Mingw32).
# Makefile for wxrc (Cygwin/Mingw32).
WXDIR = ../../..
TARGET=about
TARGET=wxrc
EXTRALIBS=-lwxxml
OBJECTS = $(TARGET).o
include $(WXDIR)/src/makeprog.g95

View File

@@ -1,24 +1,29 @@
#
# File: makefile.vc
# Author: Julian Smart
# Created: 1999
# Updated:
# Created: 2000
# Updated:
# Copyright: (c) Julian Smart
#
# Makefile : Builds sample (VC++, WIN32)
# Use FINAL=1 argument to nmake to build final version with no debug info.
# "%W% %G%"
#
# Makefile : Builds wxrc (XML resource compiler)
# Use FINAL=1 argument to nmake to build final version with no debugging
# info
# Set WXDIR for your system
WXDIR = $(WXWIN)
PROGRAM=minimal
PROGRAM=wxrc
FINAL=0
!if "$(FINAL)" == "0"
EXTRALIBS=$(WXDIR)\lib\wxxmld.lib
!else
EXTRALIBS=$(WXDIR)\lib\wxxml.lib
!endif
OBJECTS = $(PROGRAM).obj
!include $(WXDIR)\src\makeprog.vc
# For broken VC++ 4
noopt:
cl @<<
$(CPPFLAGS2) /Od /c /Tp $(PROGRAM).cpp
<<

View File

@@ -5,9 +5,9 @@
WXDIR = $(%WXWIN)
PROGRAM = griddemo
PROGRAM = wxrc
EXTRALIBS = $(WXDIR)\lib\wxxml.lib
OBJECTS = $(PROGRAM).obj
!include $(WXDIR)\src\makeprog.wat

View File

Before

Width:  |  Height:  |  Size: 766 B

After

Width:  |  Height:  |  Size: 766 B

310
contrib/utils/wxrc/wxrc.cpp Normal file
View File

@@ -0,0 +1,310 @@
/////////////////////////////////////////////////////////////////////////////
// Name: wxrc.cpp
// Purpose: XML resource compiler
// Author: Vaclav Slavik
// Created: 2000/03/05
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation
#pragma interface
#endif
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
// for all others, include the necessary headers (this file is usually all you
// need because it includes almost all "standard" wxWindows headers
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
#include "wx/cmdline.h"
#include "wx/xml/xml.h"
#include "wx/xml/xmlio.h"
#include "wx/ffile.h"
/*
#if wxUSE_GUI
#error "You must compile the resource compiler with wxBase!"
#endif
*/
class XmlResApp : public wxApp
{
public:
#if wxUSE_GUI
bool OnInit();
#else
virtual int OnRun();
#endif
private:
void ParseParams(const wxCmdLineParser& cmdline);
void CompileRes();
wxArrayString PrepareTempFiles();
void DeleteTempFiles(const wxArrayString& flist);
void MakePackageZIP(const wxArrayString& flist);
void MakePackageCPP(const wxArrayString& flist);
bool flagVerbose, flagCPP, flagCompress;
wxString parOutput, parFuncname, parOutputPath;
wxArrayString parFiles;
int retCode;
};
IMPLEMENT_APP(XmlResApp)
#if wxUSE_GUI
bool XmlResApp::OnInit()
#else
int XmlResApp::OnRun()
#endif
{
static const wxCmdLineEntryDesc cmdLineDesc[] =
{
{ wxCMD_LINE_SWITCH, "v", "verbose", "be verbose" },
{ wxCMD_LINE_SWITCH, "c", "cpp-code", "output C++ source rather than .rsc file" },
{ wxCMD_LINE_SWITCH, "u", "uncompressed", "do not compress .xml files (C++ only)" },
{ wxCMD_LINE_OPTION, "n", "function", "C++ function name (with -c) [InitXmlResource]" },
{ wxCMD_LINE_OPTION, "o", "output", "output file [resource.rsc/cpp]" },
{ wxCMD_LINE_OPTION, "l", "list-of-handlers", "output list of neccessary handlers to this file" },
{ wxCMD_LINE_PARAM, NULL, NULL, "input file",
wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_MULTIPLE },
{ wxCMD_LINE_NONE }
};
wxXmlDocument::AddHandler(new wxXmlIOHandlerBinZ);
wxCmdLineParser parser(cmdLineDesc, argc, argv);
switch (parser.Parse())
{
case -1:
return 0;
break;
case 0:
retCode = 0;
ParseParams(parser);
CompileRes();
#if wxUSE_GUI
return FALSE;
#else
return retCode;
#endif
break;
default:
#if wxUSE_GUI
return FALSE;
#else
return 1;
#endif
break;
}
}
void XmlResApp::ParseParams(const wxCmdLineParser& cmdline)
{
flagVerbose = cmdline.Found("v");
flagCPP = cmdline.Found("c");
flagCompress = flagCPP && !cmdline.Found("u");
if (!cmdline.Found("o", &parOutput))
parOutput = flagCPP ? "resource.cpp" : "resource.rsc";
parOutputPath = wxPathOnly(parOutput);
if (!parOutputPath) parOutputPath = ".";
if (!cmdline.Found("n", &parFuncname))
parFuncname = "InitXmlResource";
for (size_t i = 0; i < cmdline.GetParamCount(); i++)
parFiles.Add(cmdline.GetParam(i));
}
void XmlResApp::CompileRes()
{
wxArrayString files = PrepareTempFiles();
wxRemoveFile(parOutput);
if (!retCode)
{
if (flagCPP)
MakePackageCPP(files);
else
MakePackageZIP(files);
}
DeleteTempFiles(files);
}
wxArrayString XmlResApp::PrepareTempFiles()
{
wxArrayString flist;
for (size_t i = 0; i < parFiles.Count(); i++)
{
if (flagVerbose)
wxPrintf("processing " + parFiles[i] + "...\n");
wxXmlDocument doc;
if (!doc.Load(parFiles[i]))
{
wxLogError("Error parsing file " + parFiles[i]);
retCode = 1;
continue;
}
wxString name, ext;
wxSplitPath(parFiles[i], NULL, &name, &ext);
doc.Save(parOutputPath + "/" + name + ".xmb", flagCompress ? wxXML_IO_BINZ : wxXML_IO_BIN);
flist.Add(name + ".xmb");
}
return flist;
}
void XmlResApp::DeleteTempFiles(const wxArrayString& flist)
{
for (size_t i = 0; i < flist.Count(); i++)
wxRemoveFile(parOutputPath + "/" + flist[i]);
}
void XmlResApp::MakePackageZIP(const wxArrayString& flist)
{
wxString files;
for (size_t i = 0; i < flist.Count(); i++)
files += flist[i] + " ";
files.RemoveLast();
if (flagVerbose)
wxPrintf("compressing " + parOutput + "...\n");
if (wxExecute("zip -9 -j " + wxString(flagVerbose ? "" : "-q ") +
parOutput + " " + files, TRUE) == -1)
{
wxLogError("Unable to execute zip program. Make sure it is in the path.");
wxLogError("You can download it at http://www.cdrom.com/pub/infozip/");
retCode = 1;
return;
}
}
static wxString FileToCppArray(wxString filename, int num)
{
wxString output;
wxString snum;
wxString tmp;
wxFFile file(filename, "rb");
size_t lng = file.Length();
snum.Printf("%i", num);
output.Printf("static size_t xml_res_size_" + snum + " = %i;\n", lng);
output += "static unsigned char xml_res_file_" + snum + "[] = {";
unsigned char *buffer = new unsigned char[lng];
file.Read(buffer, lng);
for (size_t i = 0; i < lng; i++)
{
if (i % 16 == 0) output += "\n";
tmp.Printf("0x%02X", buffer[i]);
output += tmp;
if (i != lng-1) output += ",";
}
delete[] buffer;
output += "\n};\n\n";
return output;
}
void XmlResApp::MakePackageCPP(const wxArrayString& flist)
{
wxFFile file(parOutput, "wt");
size_t i;
if (flagVerbose)
wxPrintf("creating C++ source file " + parOutput + "...\n");
file.Write("\
#include \"wx/wxprec.h\"\n\
\n\
#ifdef __BORLANDC__\n\
#pragma hdrstop\n\
#endif\n\
\n\
#ifndef WX_PRECOMP\n\
#include \"wx/wx.h\"\n\
#endif\n\
\
#include \"wx/filesys.h\"\n\
#include \"wx/fs_mem.h\"\n\
#include \"wx/xml/xmlres.h\"\n\
#include \"wx/xml/xh_all.h\"\n\
\n");
for (i = 0; i < flist.Count(); i++)
file.Write(FileToCppArray(flist[i], i));
file.Write("\
void " + parFuncname + "()\n\
{\n\
\n\
// Check for memory FS. If not present, load the handler:\n\
{\n\
wxMemoryFSHandler::AddFile(\"xml_resource/dummy_file\", \"dummy one\");\n\
wxFileSystem fsys;\n\
wxFSFile *f = fsys.OpenFile(\"memory:xml_resource/dummy_file\");\n\
wxMemoryFSHandler::RemoveFile(\"xml_resource/dummy_file\");\n\
if (f) delete f;\n\
else wxFileSystem::AddHandler(new wxMemoryFSHandler);\n\
}\n\
\n");
for (i = 0; i < flist.Count(); i++)
{
wxString s;
s.Printf(" wxMemoryFSHandler::AddFile(\"xml_resource/" + flist[i] +
"\", xml_res_file_%i, xml_res_size_%i);\n"
" wxTheXmlResource->Load(\"memory:xml_resource/" + flist[i] +
"\");\n", i, i);
file.Write(s);
}
file.Write("\n}\n");
}

View File

@@ -0,0 +1,56 @@
# $Id$
top_srcdir = @top_srcdir@/..
top_builddir = ../../..
program_dir = contrib/utils/wxrcedit
PROGRAM=wxrcedit
OBJECTS=edapp.o editor.o nodehnd.o prophnd.o xmlhelpr.o
DATADIRS = df
DATAFILES = \
df/boxsizer.df \
df/break.df \
df/button.df \
df/checkbox.df \
df/checklist.df \
df/choice.df \
df/combobox.df \
df/control.df \
df/dialog.df \
df/flexgridsizer.df \
df/gauge.df \
df/gridsizer.df \
df/htmlwindow.df \
df/menu.df \
df/menu_item.df \
df/menubar.df \
df/menuitem.df \
df/notebook.df \
df/notebookpage.df \
df/panel.df \
df/panel_item.df \
df/panelbase.df \
df/radiobox.df \
df/radiobutton.df \
df/separator.df \
df/sizer_item.df \
df/sizeritem.df \
df/slider.df \
df/spacer.df \
df/spinbutton.df \
df/spinctrl.df \
df/staticbitmap.df \
df/staticboxsizer.df \
df/statictext.df \
df/textctrl.df \
df/toolbar_item.df \
df/window.df \
df/listbox.df
APPEXTRALIBS=$(top_builddir)/lib/libwxxml.@WX_TARGET_LIBRARY_TYPE@
APPEXTRADEFS=-I$(top_srcdir)/contrib/include
include $(top_builddir)/src/makeprog.env

Some files were not shown because too many files have changed in this diff Show More