Compare commits

..

643 Commits

Author SHA1 Message Date
Bryan Petty
db593ca6c5 This commit was manufactured by cvs2svn to create tag 'wxPy_2_1_16'.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/tags/wxPy_2_1_16@7568 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-13 03:44:42 +00:00
Robin Dunn
cc2a0b0170 some cleanup
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7567 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-13 03:44:42 +00:00
Robin Dunn
27e4c09614 more build and distrib stuff
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7566 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-13 03:34:27 +00:00
Robin Dunn
1dea0a08fe SWIGged code update
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7565 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-12 20:19:03 +00:00
Robin Dunn
a0c0d1c333 Added wxSpinCtrl
Added some missing methods and constants
Fixed wxTreeCtrl.HitTest bug
new SWIGged code


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7564 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-12 19:07:29 +00:00
Guillermo Rodriguez Garcia
b3dc3e89a6 When calling SetValue(), the insertion point is set to the beginning,
rather that to the end of the text. wx2.2 will have flags to customize
this behaviour.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7563 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-12 17:14:03 +00:00
Robert Roebling
8e8d1fee57 Corrected wxFFileInputStream as well.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7562 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-12 16:49:55 +00:00
Robert Roebling
a8452a5005 Corrected wxFFileStream to use binary mode.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7561 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-12 16:49:12 +00:00
Robin Dunn
492dc50b67 Fix so wxMDIParentFrame is actually shown when Show(TRUE) is called.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7560 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-12 16:34:01 +00:00
Robert Roebling
be1018ee90 Implemented Set/GetTopLabel() in wxMenuBar,
Set int field to new position in slider event.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7559 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-12 11:53:09 +00:00
Robin Dunn
d76f2a46dd some updates
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7558 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-11 01:52:57 +00:00
Robin Dunn
4320a952c6 gen code update
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7557 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-10 20:30:52 +00:00
Robin Dunn
04ae894cf4 distrib stuff
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7556 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-10 20:30:27 +00:00
Robin Dunn
c63e4e6898 typo fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7555 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-10 20:30:01 +00:00
Robert Roebling
f76a45441a Oops. Some uninitialized variables messed up the
colours on various systems.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7554 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-10 16:08:10 +00:00
Ron Lee
04e158348e fix for wxBusyCursorSuspender messing with wxIsBusy() state.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7553 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-09 21:15:49 +00:00
Robert Roebling
0f9a3aaea8 Increased version to 2.2.0,
Fixed minor waste in wxSizerItem,
  Changed wxGTK internal timer settings so that
    idle time is really after GTK finished.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7552 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-09 18:46:33 +00:00
Vadim Zeitlin
59277cb364 wxFile::Open(write_append) will create file if it doesn't exist
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7551 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-09 15:49:59 +00:00
Vadim Zeitlin
d26a990438 added tests for circles/ellipses/arcs...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7550 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-09 15:08:27 +00:00
Vadim Zeitlin
174345b445 added test for inverted text
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7549 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-09 14:41:34 +00:00
Vadim Zeitlin
adb176e718 fixed crash on exit in the drawing sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7548 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-09 14:35:23 +00:00
Julian Smart
551a706062 Adjusts struct size if there's an error.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7545 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-08 12:06:08 +00:00
Julian Smart
eb5ad261fd Correction
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7544 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-08 11:16:18 +00:00
Julian Smart
fec5a2a4b1 Added new tech note for icon creation/conversion, corrected config.cpp
to include <ctype.h> (necessary if not including windows.h),
corrected comment in mfctest.cpp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7543 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-08 11:13:56 +00:00
Vadim Zeitlin
a38940ab11 apparently explicit operator=() is needed by Solaris C++ 5.0
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7542 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-07 13:12:01 +00:00
Vadim Zeitlin
ab88076643 wxImageList::GetSize() documented and added to wxMSW
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7541 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-07 12:55:38 +00:00
Vadim Zeitlin
f880e232cc small fixes to MIME mailcap test command handling, more MIME tests in the sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7540 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-07 12:54:32 +00:00
Vadim Zeitlin
fd094b9d81 comment made more clear
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7539 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-07 12:53:33 +00:00
Vadim Zeitlin
8beb7b3288 1. fixed default dialog style to make them non resizeable again
2. fixed wxFrame::IsShown() which always returned TRUE before
3. wxWizard now calls TransferDataFromWindow() before calling
   wxWizardPage::GetNext() fixing an obvious bug
4. half-fixed fatal bug in wxDialog::ShowModal() which would crash if the
   top level app window was deleted while the modal dialog was shown


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7538 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-06 22:00:40 +00:00
Julian Smart
e6f3a43816 Changed the code that disabled __WXDEBUG__ to only disable global debug new.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7537 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-06 15:42:51 +00:00
Vadim Zeitlin
29f3b96f83 serious bug in wxListBase::DoCopy() fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7536 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-06 13:22:51 +00:00
Stefan Neis
f75f6530b0 More changes to SetCurrentCell.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7535 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-06 10:35:28 +00:00
Vadim Zeitlin
2bcb5cfd6a added 'Save...' button to the log dialog
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7534 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-06 08:51:21 +00:00
Robert Roebling
758ac86c09 Corrected gdk_draw_bitmap thing.
Corrected wrong libGL.so dependence of libwx_gtk.so.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7533 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-05 16:13:53 +00:00
Julian Smart
09efdbdbdd Added tech note
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7532 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-05 13:15:42 +00:00
Vadim Zeitlin
7e446e11e0 added and documented trivial wxDC::GetBackgroundMode(), documented several other missing wxDC functions
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7531 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-05 10:24:55 +00:00
Vadim Zeitlin
62e6b49c33 crash in OnChar() for empty list control fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7530 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-05 10:16:14 +00:00
Michael Bedward
d9ca264808 Modified wxGrid::SetCurrentCell() to fix problem under wxMSW where
the grid was spending time drawing cells outside the visible area.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7529 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-05 10:04:55 +00:00
Julian Smart
5902841d30 Fixed doc error
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7527 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-03 13:03:13 +00:00
Julian Smart
3639911da7 Replaced C++Builder IDE tech note with up-to-date HTML file
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7526 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-03 10:26:42 +00:00
Julian Smart
8a6be78d08 Docs mods
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7525 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-03 10:22:27 +00:00
Robert Roebling
9f92fb287b Changed release date to 4th June,
Made border around notebook sizer a bit bigger,
    you never know what people do with tabs.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7524 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-03 08:56:33 +00:00
Vadim Zeitlin
d9a54596d5 fixed some compilation warnings
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7523 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-02 21:12:56 +00:00
Vadim Zeitlin
9aa0f3f84e some warnings fixed for compilation of lib/dll with VC++ 6 in release mode
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7522 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-02 20:59:49 +00:00
Robin Dunn
9604ea8a1f SWIGged code updates
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7521 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-02 17:01:26 +00:00
Robin Dunn
9f27c30f49 updates to match C++ grid
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7520 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-02 16:52:25 +00:00
Guillermo Rodriguez Garcia
2b8df44d57 SIF_TRACKPOS didn't appear in mingw until 2.95.2,
so I just #define it if it's missing.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7519 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-02 12:46:52 +00:00
Robin Dunn
8731dddafd fix bug where tooltip notifications could generate spin events
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7518 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-02 12:41:04 +00:00
Robin Dunn
a95ee79d9c Removed automatic "Magic Event Methods" bindings
Added explicit bindings where needed
other assorted odds and ends


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7517 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-02 01:50:43 +00:00
Julian Smart
c1af1ea6b5 Doc fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7516 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-06-01 08:21:37 +00:00
Vadim Zeitlin
089337645a added possibility to view arbitrary images
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7515 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-31 22:27:23 +00:00
Bart A.M. Jourquin
ee4ddd9f0b initialize insertable to TRUE in ctor
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7514 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-31 14:28:11 +00:00
Vadim Zeitlin
1f15195e08 translate window menu title in MDI parent frame
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7513 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-30 20:44:06 +00:00
Vadim Zeitlin
ff05c6bb11 wxStaticLine should now generate mouse messages
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7512 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-30 19:41:59 +00:00
Stefan Neis
5681482475 Changed wxGrid::Refresh to not do anything,
modified EndBatch accordingly to still update the grid.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7511 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-30 13:08:38 +00:00
Ron Lee
3c6bc198d9 added debug versions of wxBase and wxGtk packages.
made -contrib packages gtk-contrib since they, well.. are
and it will make it simpler to add other ports.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7510 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-29 19:09:55 +00:00
Vadim Zeitlin
04fc6c1725 wxTHICK_FRAME the same as wxRESIZE_BORDER
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7509 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-29 10:04:31 +00:00
Julian Smart
70db8eec06 Doc fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7508 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-29 07:37:24 +00:00
Vadim Zeitlin
74008a4cd4 corrected wxFile::Write() return type desc
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7507 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-28 22:09:19 +00:00
Vadim Zeitlin
b6276d5829 wxImageList::Create(width, height) added, as in wxMSW
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7506 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-28 22:01:21 +00:00
Vadim Zeitlin
eff56bb979 1. added missing const's to wxGrid::CalcXXX(wxRegion& r) fixing compilation
2. put frames with parent into wxTopLevelWindows too


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7505 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-28 21:45:00 +00:00
Ove Kaaven
540ad1b39d Save registry string keys correctly in Unicode mode.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7504 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-28 20:51:42 +00:00
Stefan Neis
d270402a9f Fixed SetCurrentCell for Motif, removed SelectionToDEviceRect.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7503 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-28 14:16:10 +00:00
Stefan Neis
e54334e7f1 Fix for not using precompiled headers.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7502 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-28 12:42:18 +00:00
Robert Roebling
d6ce5a908c Made docs about wxTextCtrl::SetValue() precise wrt to modified state.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7501 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-28 08:35:48 +00:00
Robert Roebling
b8ad056e8d wxTextCtrl::SetValue() sets the controls state to unmodified.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7500 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-28 08:35:07 +00:00
Vadim Zeitlin
aa680ee1e8 fix for stdin redirection
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7499 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-26 21:54:22 +00:00
Vadim Zeitlin
3d0b89c1ca no changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7498 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-26 15:19:43 +00:00
Vadim Zeitlin
5fff5f8a27 added and documented (and using in the sample) wxProcess::CloseOutput()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7497 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-26 15:18:07 +00:00
Vadim Zeitlin
bbc7adbd09 added wxDC::ResetBoundingBox(), documented it and CalcBoundingBox() too
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7496 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-26 12:15:38 +00:00
Bart A.M. Jourquin
45c09d1e66 Improved new GetColumns, based on the old one + smoother database-type conversion and proper field order
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7495 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-26 11:18:44 +00:00
Bart A.M. Jourquin
9879663237 Improved new GetColumns, based on the old one + smoother database-type conversion and proper field order
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7494 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-26 11:13:28 +00:00
Vadim Zeitlin
af899cb15b fix warning about virtual function hiding
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7493 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-26 10:35:44 +00:00
Vadim Zeitlin
d168273d36 remove Sun CC warning
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7492 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-26 10:30:08 +00:00
Vadim Zeitlin
31fb9a5779 1. stderr redirection seems to work under Windows too (documented new
wxProcess method too)
2. don't show the window of the (console) process in wxExecute if IO is
   redirected
3. implemented wxColourDialog::SetTitle
4. implemented wxGauge95::SetForeground/BackgroundColour()


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7491 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-25 21:54:23 +00:00
Vadim Zeitlin
54d5ffd6c3 stdout redirection for Unix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7490 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-25 18:35:52 +00:00
Vadim Zeitlin
b912a066c2 added APPEXTRA{C|CPP|CXX}FLAGS
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7489 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-25 18:35:32 +00:00
Vadim Zeitlin
7b235d47c0 fix for wxObjectArray::Clear()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7488 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-25 18:34:49 +00:00
Vadim Zeitlin
b0d2cd55b4 patch for bounding box initialization
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7487 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-25 18:29:26 +00:00
Vadim Zeitlin
92963bc943 added missing wxDateSpan methods
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7486 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-25 14:50:14 +00:00
Unknown (MT)
fbdcfa4c82 Remove frame on a SetMenuBar(NULL)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7485 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-24 23:10:47 +00:00
Robin Dunn
5272b7f059 SciLexer.h from Scintilla is used to get the constants used for all
the lexical states, for setting styles.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7484 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-24 20:39:04 +00:00
Robin Dunn
8c43f741f4 note to specify the version of Scintilla in use
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7483 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-24 20:37:20 +00:00
Václav Slavík
ac27286674 added wxToolTip documentation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7482 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-24 20:35:46 +00:00
Václav Slavík
029bc77adc documented Set/GetToolTip
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7481 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-24 20:35:34 +00:00
Václav Slavík
29afd50360 updated wxListEvent documentation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7480 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-24 20:35:22 +00:00
Robin Dunn
0212a4c2aa workaround a bug in SWIG
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7479 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-24 20:35:06 +00:00
Robin Dunn
9be0381b20 Some PythonNotes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7478 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-24 17:30:38 +00:00
Robin Dunn
37bb827fa9 Added wxDateTime, wxTimeSpan, and wxDateSpan to wxPython.utils.
Added wxCalendarCtrl.

Other tweaks and fixes.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7477 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-24 14:57:52 +00:00
Julian Smart
c777c58b76 Some doc tidying
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7476 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-24 09:08:03 +00:00
Robin Dunn
133d8d0745 Added DYNAMIC_CLASS macros for wxCalendarEvent
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7475 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-24 04:25:41 +00:00
David Webster
ef854828f2 Update module definition for wxOS2 VA 3.0
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7474 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-24 03:34:14 +00:00
Robin Dunn
96901a6f4c added some missing Scintilla constants for events.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7473 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-24 00:56:14 +00:00
Vadim Zeitlin
f998c383d4 minor changes to the sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7472 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-23 22:54:08 +00:00
Vadim Zeitlin
a1777c3e92 fixes for wxExecute with redirection
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7471 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-23 22:50:45 +00:00
Václav Slavík
b91a42d6d9 fixed parsing of HTML tags of the form <tagname\nproperties> + \t parsing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7470 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-23 21:09:59 +00:00
David Webster
a61421124a More accelerator work
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7469 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-23 21:00:52 +00:00
Julian Smart
d30143f3cb Misc small mods for WIN16 and making HTB files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7468 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-23 18:55:07 +00:00
Julian Smart
77a93d3eb4 defs.h had been altered so only 3 MSW compilers were allowed for WXDLLEXPORT :-)
false removed from dbtable.cpp. WS_CLIPCHILDREN/SIBLINGS added to glcanvas.cpp.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7467 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-23 13:14:29 +00:00
Julian Smart
fcd984f8a1 Motif fixes, distribution script fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7466 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-23 12:16:31 +00:00
Robin Dunn
4c25e5b0ba Fixed "Substract" typo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7465 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-23 06:31:50 +00:00
Robin Dunn
0126cabac6 Fixed "Substract" typo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7464 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-23 06:23:59 +00:00
Vadim Zeitlin
9047a3c139 fix for crash in wxTreeCtrl::GetSelections() when the tree is empty
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7463 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-23 06:01:58 +00:00
David Webster
3844b70dd8 Some more accelerator fixes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7462 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-22 21:23:58 +00:00
Robert Roebling
04652a15c8 dnd event blocking switched off now.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7461 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-22 18:05:24 +00:00
David Webster
77bc12b08f removal of VA #ifdefs aournd delete operators and some additional support for accelerators
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7460 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-22 14:04:14 +00:00
David Webster
fd4afea729 removal of VA #ifdefs aournd delete operators
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7459 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-22 14:03:03 +00:00
Julian Smart
7a702aa804 Doc debugging
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7458 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-22 13:43:32 +00:00
Vadim Zeitlin
0acd3d9a08 another buglet in ParseDate() fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7457 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-22 13:10:15 +00:00
Vadim Zeitlin
da14645955 better ParseDate() test
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7456 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-22 12:53:56 +00:00
Vadim Zeitlin
9bcefc38f1 several bug fixes in ParseDate()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7455 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-22 12:35:02 +00:00
Vadim Zeitlin
5469ae1795 add -isystem for gcc on Solaris
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7454 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-22 11:14:56 +00:00
Julian Smart
7c777c5c15 Added bc_ide.txt as a tech note; updated readme; added CHM targets for makefiles
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7453 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-22 11:13:10 +00:00
Julian Smart
72ef08c782 Fixed OnSize corruption problem
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7452 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-22 08:28:58 +00:00
Ron Lee
d683b85f75 totally rehashed the build system to be much less monolithic, it's now
possible to build subsets of the available packages and easier to add
new packages in a much more modular fashion.
updated for changes to wxPython.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7451 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-22 02:43:31 +00:00
Ron Lee
fc5e41a7ba made Robert's fix for wxBase too, and cleaned a couple of typos
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7450 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-22 02:34:17 +00:00
Robert Roebling
1c09143020 setup.h now tests if wx-config is being used and
changes the search path from wx/gtk/.. to
     wx/gtkd/.. when __WXDEBUG__ is defined.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7449 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-21 16:17:21 +00:00
Robert Roebling
b9464e8d4e wx-config now defines __USE_WXCONFIG__
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7448 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-21 16:15:27 +00:00
Robert Roebling
b4e0cd2a78 Tried to fix problem with events being blocked in the
drop *target* by the global block from the drop
    source.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7447 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-21 13:20:33 +00:00
George Tasker
cf5d275eb8 Fixed problem where if a table had no insertable columns, construction of the insertion statemtent would fail, which then would cause unstable behavior at a later time. Now if Insert() is called and there are no insertable columns, insert will return a failure.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7446 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-21 10:49:22 +00:00
George Tasker
c160361dcf Cleaned up some unix compilation problems due to for loops declaring a variable in the for statement
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7445 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-21 10:45:29 +00:00
Ron Lee
8ba2c5be88 don't bug out if no .mo files exist
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7444 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-21 03:43:59 +00:00
Ron Lee
aaa42385ce updated PYTHON_DIST for new wxPython location.
added INTL_DIST target for i18n files when --enable-intl is used.
make install now installs any .mo files it finds in locale.
bugfix for make install being a no op with static wxBase.
libs built with __WXDEBUG__ can now be installed alongside libs built without.
locale/Makefile now autodetects which languages are supported when make allpo
is used and added allmo target.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7443 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-20 22:17:32 +00:00
Robin Dunn
99f792deea More build/distrib updates
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7442 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-20 19:25:37 +00:00
Robin Dunn
eb7d6db675 forgot this file in yesterday's STC checkin
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7441 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-20 18:56:04 +00:00
Robin Dunn
fec9970c39 New code from Scintilla and supporting code in STC.
Styles can now have underlines, new indicator types, zoom-in and
zoom-out methods.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7440 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-20 03:25:18 +00:00
Robin Dunn
e1cac7c231 New code from Scintilla and supporting code in STC.
Styles can now have underlines, new indicator types, zoom-in and
zoom-out methods.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7439 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-20 03:24:11 +00:00
Robin Dunn
1f5e577084 gave wxTheApp->argv a real set of values
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7438 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-20 00:13:02 +00:00
Ron Lee
9c54b21732 updated for dk -> da too
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7437 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-19 23:54:47 +00:00
Ron Lee
569de831ba renamed dk.po -> da.po
dk is the internet tld, but da is the correct
iso639 country code for the locale data


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7436 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-19 23:41:41 +00:00
Vadim Zeitlin
8ab9b79aa1 bug fix for some weird combobox behaviour
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7435 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-19 22:27:46 +00:00
David Webster
70b6f373b0 coded wxFont!
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7434 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-19 18:16:39 +00:00
Robert Roebling
7b271e861b Bumped up version to 2.1.16.
Semi-fixed list ctrl's header again.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7433 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-19 18:08:59 +00:00
Vadim Zeitlin
1fd26975c8 SetModal() deprecated
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7432 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-19 14:55:55 +00:00
Vadim Zeitlin
9ced6db5a5 compilation fixes for compilers without PCHs (Julian, what about looking at the daily rebuild pages?)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7431 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-19 14:03:38 +00:00
Vadim Zeitlin
398637f576 fix for the new headers which define _WIN32_WINNT == 0x0500
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7430 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-19 13:59:40 +00:00
Robin Dunn
99d564be95 Removed wxPython from the old location
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7429 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-19 06:12:58 +00:00
Robin Dunn
a61639123c more build and distrib stuff
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7428 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-19 02:48:17 +00:00
Vadim Zeitlin
e36ee5f7aa 1. fixed toolbar deletion problem (don't leave hole any longer)
2. tried to fix modal dialog handling


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7427 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-18 23:02:49 +00:00
Robin Dunn
42413911cc distrib tools updates
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7426 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-18 20:07:54 +00:00
Robin Dunn
cc63ae0fcc changed DLL version number
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7425 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-18 19:53:58 +00:00
Robin Dunn
6d9092202d more SWIGged code updates
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7424 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-18 19:46:31 +00:00
Robin Dunn
14f5789360 fixed a warning
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7423 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-18 19:45:48 +00:00
Robin Dunn
e2f3066a9c fixed some warnings
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7422 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-18 19:45:04 +00:00
Ron Lee
c74f7c1383 matched param defaults to .h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7421 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-18 16:46:04 +00:00
Julian Smart
1a3cfaf5a6 Various wxMotif fixes. Changed rotate sample to use a wxScrolledWindow
instead of the frame, so it works on wxMotif.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7420 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-18 15:01:52 +00:00
Vadim Zeitlin
0bd879bad6 (re?)added support for params to wxGridCellFloatEditor
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7419 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-18 12:29:02 +00:00
Julian Smart
7a5a0c9f34 Use hwndOwner in Print/page setup dialogs.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7418 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-18 10:05:40 +00:00
Robin Dunn
cabc28c46e Added wxDragImage and demo, (used wxGenericDragImage for both
platforms)

Added demo of changing keyboard handling in wxGrid

SWIGged sources update


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7417 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-17 20:45:27 +00:00
Robin Dunn
a1e181ef4d Added wxDragImage and demo, (used wxGenericDragImage for both
platforms)

Added demo of changing keyboard handling in wxGrid

SWIGged sources update


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7416 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-17 20:39:47 +00:00
Robert Roebling
1b51ff0849 Added a couple of const to == and != operators.
Removed no-flicker hack which seems to be a
   problem on Sun.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7415 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-17 20:07:24 +00:00
Vadim Zeitlin
a5fc62d05d regenerated
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7414 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-17 17:24:20 +00:00
Vadim Zeitlin
efcd017c71 attempt for a Solaris compilation fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7413 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-17 17:22:21 +00:00
Vadim Zeitlin
c449ac8125 don't overwrite the initial part of config.log when checking for VPATH
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7412 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-17 17:19:16 +00:00
Julian Smart
797aa4038f wxMSW & wxMotif: added const to GDI object ==, != operators
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7409 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-17 12:11:17 +00:00
Julian Smart
10b371fa0e Typos corrected.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7408 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-17 11:02:53 +00:00
Vadim Zeitlin
902153ef4a wxGridSizer demo added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7407 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-16 15:10:24 +00:00
Jouk Jansen
3ce78ed297 Committing in .
Small problems/warnings solved:
  grid.cpp contained non-reachable code
  parser.y contained definitions for Alpha/True64 which should not be included
     for Alpha/VMS.

 Modified Files:
  Tag: WX_2_2_BRANCH
 	wxWindows/src/common/parser.y wxWindows/src/generic/grid.cpp
 ----------------------------------------------------------------------


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7406 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-16 11:30:25 +00:00
Robin Dunn
adf72aeaf7 more updates for new directory structure
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7405 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-16 05:20:58 +00:00
Michael Bedward
5b0d059b3e Added Auto-size cols option to the View menu
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7404 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-16 03:25:16 +00:00
Robin Dunn
015e85cdf7 Moved and reorganized wxPython directories
Now builds into an intermediate wxPython package directory before
installing


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7403 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-16 02:07:32 +00:00
Václav Slavík
e0c1bcc8f4 fixed rendering of underlined text (the line may be bolder than 0 now)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7402 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-15 20:31:27 +00:00
Vadim Zeitlin
c866dfa40c vCard writing tests
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7401 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-15 16:05:32 +00:00
Vadim Zeitlin
53b3fe94d5 DEC OSF/1 entry added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7400 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-15 14:02:51 +00:00
Vadim Zeitlin
be8e2100c1 fix for yacc compilation on Alpha
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7399 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-15 12:26:13 +00:00
Václav Slavík
34de32c717 modified HHP/HHC parser so that page names may contain &entities;
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7398 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-14 20:02:34 +00:00
Václav Slavík
5e22259222 removed wxDC::m_scaleFactor (never used, had random value)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7397 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-14 17:32:36 +00:00
Václav Slavík
d3c3c062d9 removed m_scaleFactor from PS printing (had random value)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7396 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-14 17:31:34 +00:00
Václav Slavík
f6f9b93b17 replaced deprecated use of wxPostScript ctor by the version that uses wxPrintData
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7395 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-14 17:31:18 +00:00
Vadim Zeitlin
f5ea644170 some vCard test code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7394 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-14 14:46:09 +00:00
Ron Lee
5d301221bc more proofreading touchups :)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7393 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-13 17:45:38 +00:00
Stefan Neis
fbbfc840a4 Removed #pragma interface/implementation.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7392 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-12 22:18:37 +00:00
Michael Bedward
d66093c7b6 Check for multiple calls to wxGrid::CreateGrid
Changed number format for wxGridCellFloatEditor from f to g


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7391 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-12 11:05:30 +00:00
Vadim Zeitlin
aa59afd1ea wxFTP uploading tests
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7390 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-12 10:37:49 +00:00
Robin Dunn
029713d7e1 removed wxPython module
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7387 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-11 21:15:02 +00:00
Stefan Neis
fc3e2a3a66 Changed selection behaviour: Current selection will not be removed
_only_ if Ctrl is down when clicking.
Untabified.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7386 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-11 19:56:51 +00:00
Robin Dunn
44faee407c added grid sizers
changed some build configurations


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7385 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-11 19:30:19 +00:00
Vadim Zeitlin
08392f16cc bug in ~wxOutputFTPStream which prevented multiple uploads fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7384 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-11 13:03:59 +00:00
Vadim Zeitlin
1f5e4b9004 fix for the fix for Centre()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7382 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-11 11:17:42 +00:00
Vadim Zeitlin
7162312f78 a fix for Centre() to always use the top level parent
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7381 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-11 11:05:04 +00:00
Vadim Zeitlin
9b9d5355c8 some more tbar tests
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7380 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-10 23:28:03 +00:00
Vadim Zeitlin
364de90c91 fix for the stat bar positioning
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7379 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-10 23:27:33 +00:00
Karsten Ballüder
548812d9af Updated from Mahogany source
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7378 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-10 20:00:53 +00:00
Robert Roebling
bf49fbcff9 Added wxImage:Copy()
Added first 30% of wxImage::Paste()


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7377 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-10 18:17:53 +00:00
Julian Smart
804a3434d6 Dialog Editor corrections, wxListBox::GetSelections correction
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7376 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-10 17:39:35 +00:00
Julian Smart
5a6d3ec3b1 DrawIcon correction for WIN16
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7375 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-10 13:21:24 +00:00
Julian Smart
dde04b1546 Corrected DrawIcon to take into account different icon sizes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7374 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-10 12:11:39 +00:00
Vadim Zeitlin
5c06d1b014 make -> nmake for VC++
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7373 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-10 12:02:24 +00:00
Vadim Zeitlin
c17cc4a96f owner drawn buttons change appearance when double clicked
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7372 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-09 21:18:19 +00:00
Vadim Zeitlin
a58b3aa909 1. fixed thumb track/release events for positions > 65536
2. fixed (untested) wxSpinCtrl::GetPosition()


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7371 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-09 21:11:30 +00:00
Vadim Zeitlin
8dbbdfd06f serious bug in KeyExists() fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7367 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-08 22:49:40 +00:00
Robert Roebling
fb5ac85a06 Made a few helper functions public.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7366 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-08 11:39:05 +00:00
Bart A.M. Jourquin
ed62f512c0 include dcscreen.h and settings.h for gcc
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7365 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-08 08:12:37 +00:00
Vadim Zeitlin
cdde63f535 1. buttons now generate double click events
2. double clicking in the tree ctrl generates an activate event
3. bug with hidden listbox mysteriously being shown fixed
4. tried to adjust the checkbox size


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7364 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-07 20:35:00 +00:00
Ron Lee
6b958cfc0b update for changes to wxPython
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7363 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-07 19:29:15 +00:00
Robert Roebling
8e1a0be217 Added and documented wxImage::Mirror() and wxImage::Rotate90().
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7362 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-06 17:30:50 +00:00
Robert Roebling
4a18b95556 Added docs for new wxImage constructor.
Began docs for grid sizers.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7360 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-05 20:17:41 +00:00
Robert Roebling
76dfc86313 Add possibility to create a wxImage from
static data (or data on the stack) without
    using the heap.
  Tried to fix the crash-all-apps problem
    reported in the list.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7359 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-05 19:21:55 +00:00
David Webster
5c89255496 Some DC and Statusbar fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7358 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-05 19:07:28 +00:00
Ron Lee
76727e0cbf typo fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7356 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-05 15:55:11 +00:00
Robin Dunn
366e627490 Added wxTipProfider and friends
Tweaked wxGrid a bit.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7354 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-05 15:06:55 +00:00
Robin Dunn
61471de76f Methods to change the cell highlight colour
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7353 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-05 15:00:00 +00:00
Julian Smart
10c16e31a6 Fixed sash window colour (highlight wasn't showing up); Dialog Editor fix
for space distribution


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7351 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-05 10:01:19 +00:00
Stefan Neis
64561c3308 Fixed cell highlighting for disabled grid lines.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7350 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-05 09:43:29 +00:00
Ron Lee
42ab7508e8 workaround for one gtk Combo horror
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7349 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-05 08:10:50 +00:00
Robin Dunn
ddc0b275b3 fix for when gridlines are disabled. something still needs to be done
to crrectly redraw after the cell highlight moves.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7348 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-04 19:22:55 +00:00
Robin Dunn
36ce8f44db added ability to disable gridlines in the sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7347 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-04 19:09:30 +00:00
Bart A.M. Jourquin
fa3a64d1ad more info fetched in GetColumns
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7346 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-04 15:44:39 +00:00
Bart A.M. Jourquin
af9bf0bc25 typedef struct error fixed for bcc
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7345 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-04 12:42:58 +00:00
Bart A.M. Jourquin
d55da698a8 new GetColumns() members
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7344 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-04 12:19:28 +00:00
Vadim Zeitlin
d70b1ce4d2 test for array sorting added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7343 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-04 11:52:32 +00:00
Vadim Zeitlin
5fe87ba09f assert when sorting wxArrayString twice fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7342 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-04 11:42:51 +00:00
Ron Lee
758a4bb5a6 added comment about validators and SetValue(FALSE)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7341 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-03 17:01:47 +00:00
Ron Lee
806b8a2301 typo fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7340 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-03 17:00:29 +00:00
Vadim Zeitlin
f96ed10a83 trying to fix a (spurious) memory leak report
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7339 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-03 11:06:56 +00:00
Robert Roebling
da131498e8 Fixed colour buglet in wxListCtrl.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7338 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-02 16:19:05 +00:00
Robert Roebling
c518860f60 Test for wxST_NO_AUTORESIZE in controls sample.
Add lots of code to change the (German) comma in
    floating point number string in Postscript
    code to ".".


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7337 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-02 15:34:14 +00:00
Vadim Zeitlin
066b2a4c3e 1. fixed fatal bug in SetImageList()
2. tried to make header resizing work with horz scrolling - it still doesn't


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7336 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-02 14:47:03 +00:00
Vadim Zeitlin
69400134a8 added wxLogWindow::OnFrameClose()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7335 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-02 07:52:35 +00:00
David Webster
5eabe5bbbf Statusbar updates.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7334 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-02 03:51:51 +00:00
Robert Roebling
dc3f2c920f Fixed wxNotebook::RemovePage(),
Made modal dialogs children of wxApp->GetTopWindow() if
    no parent is given.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7333 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-01 20:20:16 +00:00
David Webster
3d3cbc05f6 Changes to DC
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7332 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-01 19:36:32 +00:00
Robert Roebling
076e41016d Tried to fix problem with wrong fonts in tool tips.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7331 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-01 19:04:30 +00:00
Ron Lee
cd73d539f6 fixed combo.h -> combobox.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7330 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-01 18:55:23 +00:00
Vadim Zeitlin
421da573e5 added wxFileConfig::SetUmask()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7329 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-01 13:40:00 +00:00
Václav Slavík
9faba833a2 fixed memory leak in modules list (devik's patch)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7328 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-01 13:08:56 +00:00
Ron Lee
4401790cca fix to correctly adjust growable bits of FlexGridSizer
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7327 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-01 13:08:11 +00:00
Vadim Zeitlin
efe67f809f corrected alignment of the descriptions in the Usage() message
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7326 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-05-01 12:31:11 +00:00
Vadim Zeitlin
6b0b085ef4 added wxConstCast to fix compilation error
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7325 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-30 22:20:06 +00:00
Vadim Zeitlin
0ca080a91b give wizard buttons standard ids (wxID_FORWARD)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7324 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-30 16:29:27 +00:00
Vadim Zeitlin
01f39d1f1a bug recently introduced in wxWizard::GetPageSize() fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7323 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-30 16:15:18 +00:00
Julian Smart
0e950afdf3 BC++ fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7322 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-30 16:05:24 +00:00
Julian Smart
da95cfa91d Chnaged name for text sample with BC++
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7321 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-30 16:02:52 +00:00
George Tasker
0187c87a03 Removed semicolon from the end of DECLARE_EVENT_TABLE() lines that prevented BC5 from compiling this sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7320 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-30 15:30:05 +00:00
George Tasker
bb5aa6e588 TARGET= line said CONTROLS instead of TEXT
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7319 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-30 13:28:29 +00:00
Robin Dunn
478e209df5 tweaks and code updates
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7318 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-29 18:34:13 +00:00
Vadim Zeitlin
a2b28e922b don't use wxFile::Eof() (for the reasons explained in the docs now :-) in wxTextFile - this allows it to be used with FIFOs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7317 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-29 18:07:33 +00:00
Robert Roebling
498db281b5 Set wxGTK's GTK idle priority back up to 0,
wxGTK's frame's toolbar is now in m_children again,
    as wxFrameBase's idle logic and the update UI
    code based on it require that.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7316 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-29 16:03:42 +00:00
Robin Dunn
2442422672 More STC fixes. The demo now shows Calltips and AtuoComplete
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7315 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-29 05:18:40 +00:00
Robin Dunn
6e96414894 More STC fixes. Calltips and AutoComplete work now.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7314 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-29 05:17:21 +00:00
Robin Dunn
91c93b48e9 Fixed FullPaint for brace matching
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7313 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-29 02:45:22 +00:00
David Webster
1f9c607e98 Some framework updates
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7312 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-28 21:28:04 +00:00
Robin Dunn
9f0e1cfc63 Another off-by-one error fixed in STC
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7311 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-28 17:20:58 +00:00
Vadim Zeitlin
9215f35ef8 small fix to the code I just commited
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7310 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-28 14:19:47 +00:00
Vadim Zeitlin
d7030ac6aa added and documented wxWizard::SetPageSize()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7309 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-28 14:06:33 +00:00
Bart A.M. Jourquin
9de1150e2d Add support for Virtuoso
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7308 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-28 13:45:52 +00:00
David Webster
89ee194efd static data members cannot be redeclared static in the cpp file under VisualAge, it already knows that it is static
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7307 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-28 12:59:22 +00:00
David Webster
4cf39e614a Virtual function hiding suppression
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7306 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-28 12:45:20 +00:00
Vadim Zeitlin
23cf28b3db made dnd cursors/icons slightly more usable (and much more documented)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7305 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-28 12:45:15 +00:00
Julian Smart
61dfd2bea1 Win16 fixes (incl. slider not sending messages, text ctrl not showing consistent
colours


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7304 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-28 09:49:32 +00:00
Robin Dunn
647455ee0f various tweaks, fixes, and doodads
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7303 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-28 06:49:26 +00:00
Robin Dunn
efecda0bf7 Some wxStyledTextCtrl bugfixes
Merged in new Scintilla sources

Added new methods to wxStyledTextCtrl to match new Scintilla capabilities.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7302 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-28 06:37:53 +00:00
Vadim Zeitlin
21aff0fe10 corrected bug with m_selection not being initialized in CreateGrid() and SetTable()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7301 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-28 05:50:11 +00:00
Vadim Zeitlin
2073bb3d4d compilation fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7300 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-28 05:37:19 +00:00
Vadim Zeitlin
9e13e99d6d wxUSE_UNICODE set to 0 by default, added wxUSE_WCHAR_T
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7299 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-28 05:36:24 +00:00
Vadim Zeitlin
4f96bc6cb6 use CRT in DLL for wxBase too
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7298 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-27 20:51:11 +00:00
Vadim Zeitlin
4dbc8006b4 added test for wxDateTime TZ/DST bug
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7297 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-27 20:46:55 +00:00
Vadim Zeitlin
007d1132e2 added test for combo/focus bug
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7296 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-27 20:45:35 +00:00
Vadim Zeitlin
df8442a339 fixed problem with help text being left in the status bar
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7295 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-27 20:42:09 +00:00
Vadim Zeitlin
b12ce2ff6d attempts to fix the proplist crash - fruitless
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7294 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-27 18:03:34 +00:00
Vadim Zeitlin
071bb1283a some more convenience functions/wrappers (all inline, cross-platform)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7293 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-27 18:02:48 +00:00
Julian Smart
7322bbe14e Further non-PCH fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7292 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-27 17:46:35 +00:00
Julian Smart
19c9086b55 Added missing brush.h includes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7291 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-27 17:41:29 +00:00
Robin Dunn
7a618981ce Made the DLL load lots faster by specifying that other DLLs it depends
on are to be loaded on demand.  The is experimental, but it works for
wxPython.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7290 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-27 16:46:55 +00:00
Robin Dunn
fc2518abb5 some minor tweaks
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7289 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-27 16:41:48 +00:00
Vadim Zeitlin
5eaa587e28 don't wxLogWarn() about missing strings, but just wxLogDebug() them
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7288 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-27 15:44:17 +00:00
Robin Dunn
24e1c5fbb2 ifdeff'd out the region checking code in DrawAllGridLines
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7287 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-27 15:26:50 +00:00
Vadim Zeitlin
1a0e95d600 documented ReadLine/Word() and SetStringSeparators()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7286 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-27 15:09:38 +00:00
Václav Slavík
3e7b695396 it's replaced by it is, 'll by will
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7285 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-27 14:33:00 +00:00
Bart A.M. Jourquin
77836a61b3 Adding support for OpenLink driver on MSW
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7284 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-27 12:27:22 +00:00
Bart A.M. Jourquin
a99c0d5331 add support for SQL Server with OpenLink driver for Unix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7283 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-27 11:37:47 +00:00
Unknown (MT)
4aba0fc00a DLLEXPORT wxStatusBar
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7282 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-27 04:40:31 +00:00
Vadim Zeitlin
63e26a7756 1. disabled WS_EX_CONTROLPARENT as I don't know how to work around it otherwise
2. corrected assignments to non-const references


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7281 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-26 20:53:19 +00:00
Julian Smart
a5b3c8eaae Fix for disabled controls
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7280 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-26 16:39:27 +00:00
Vadim Zeitlin
c513dcd1dd don't even try running Unicode programs under Win9x
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7279 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-26 14:17:07 +00:00
Julian Smart
f8cc27023e Fixed assert problem due to radiobox being clicked.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7278 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-26 13:46:13 +00:00
Vadim Zeitlin
01e92d1232 patch from Kristjan Jonsson <kj@raunvis.hi.is> to wxCheckBox::DoGetBestSize()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7277 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-26 12:49:07 +00:00
Julian Smart
ac41c5e183 Small fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7276 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-25 19:23:55 +00:00
Robin Dunn
c4ad8c9c3a Some final tweaks prior to release
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7275 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-25 17:57:29 +00:00
Robin Dunn
9bc38e1e0c Some final tweaks prior to release
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7274 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-25 16:46:45 +00:00
Julian Smart
2ba791ada8 Fixed design flaw in splitter window whereby you couldn't have a sash without
a border. Fixed sash layout window bug that didn't erase old sash on resize.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7273 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-25 14:35:58 +00:00
Bart A.M. Jourquin
37aba5df39 support of Sybase ASE 11
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7272 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-25 13:33:31 +00:00
Vadim Zeitlin
547b668c7b fix for ugly code doing undefined things to wxF(F)ile
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7271 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-25 07:07:56 +00:00
Vadim Zeitlin
041bc561e8 adjust spacing and calculate layout correctly for icons larger than 32x32
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7270 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-25 07:03:41 +00:00
Julian Smart
9d98a27ad6 More Unicode fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7269 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-25 06:03:12 +00:00
Vadim Zeitlin
e54cfe2b28 fix for Insert() with tear off menus
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7268 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-24 19:50:48 +00:00
Vadim Zeitlin
300f993794 fixes for IsOnline() and IsAlwaysOnline()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7267 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-24 19:49:27 +00:00
Julian Smart
510336b11a Fixed bad file
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7266 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-24 18:34:29 +00:00
Julian Smart
161973e94e Fixed bad file
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7265 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-24 18:33:50 +00:00
Julian Smart
ce006a8f2b Trying to fix corrupted GIFs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7264 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-24 18:18:05 +00:00
Guillermo Rodriguez Garcia
cdc6bea96e Removed unused variable
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7263 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-24 16:14:24 +00:00
Julian Smart
640fcfb074 Added the odd 'the'
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7262 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-24 14:35:20 +00:00
Vadim Zeitlin
6c8a91b333 added and documented wxCHECK_VERSION
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7261 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-24 14:32:10 +00:00
Václav Slavík
40a9876e4f minor language change
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7260 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-24 13:37:29 +00:00
Václav Slavík
a8aff7b454 a hack to workaround missing wxBuffer in wxBase/Unix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7259 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-24 13:37:22 +00:00
Václav Slavík
1a77ecaae2 moved wxDebugMsg, wxFatalError, wxError out of #if wxUSE_GUI
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7258 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-24 13:37:14 +00:00
Václav Slavík
d6a1ccea22 added APPEXTRADEFS to .cpp, .c rules (makes tex2rtf compile with wxBase)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7257 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-24 13:37:07 +00:00
Robin Dunn
59c777d597 build and distrib things
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7256 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-24 05:09:12 +00:00
Robin Dunn
caf1045491 build and distrib things
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7255 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-24 04:44:39 +00:00
Václav Slavík
6d2df48070 VFS -> virtual file system expansion; fixed typos in fs.tex
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7254 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-23 19:07:42 +00:00
Václav Slavík
4a969a50f3 documented wxNotebook style flags
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7253 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-23 19:01:38 +00:00
Václav Slavík
b2720efe88 fixed typo causing REF NOT FOUND
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7252 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-23 19:01:27 +00:00
Václav Slavík
a1f822476a added png files to DATAFILES
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7251 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-23 19:01:22 +00:00
Stefan Neis
2dce793e22 Added #define to resolve strcasecmp/stricmp issue under OS/2
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7250 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-23 16:35:06 +00:00
Stefan Neis
2c1bc3a7fa Added define needed by EMX.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7249 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-23 16:24:26 +00:00
Stefan Neis
ed93eb78ec Added include for non-precompiled headers.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7248 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-23 16:23:17 +00:00
Julian Smart
3049cbeb6a Some doc corrections
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7247 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-23 15:53:30 +00:00
Stefan Neis
4f0a1b07e6 Changed MM_DELETEITEM to MM_REMOVEITEM so reinserting is possible.
This possibly created a memory leak?


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7246 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-23 14:26:06 +00:00
Julian Smart
f9a07d0026 Attempts to make it compile in Unicode mode
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7245 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-23 12:39:45 +00:00
Vadim Zeitlin
c20c8cb95d a demo for wxGTK bug added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7244 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-23 08:56:36 +00:00
Vadim Zeitlin
d05e8f3f5c wxNotebook::RemovePage() now only gives critical assert failures instead of crashing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7243 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-23 07:06:15 +00:00
Vadim Zeitlin
c72dfe98dc unused parameters taken inside WXUNUSED()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7242 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-23 06:53:19 +00:00
Vadim Zeitlin
d298a528f4 gtk_pizza_adjustment_changed() unused, ifdef'd out
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7241 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-23 06:51:04 +00:00
Vadim Zeitlin
5c70756a8f added that wxSP_HORIZONTAL is not supported in wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7240 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-23 06:48:09 +00:00
Vadim Zeitlin
e48b7d7c05 1. fixed typo in filelist.txt
2. some DLL makefiles/compilation/linking fixes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7239 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-22 21:24:45 +00:00
Stefan Neis
80b2a27b78 Fixed wxMenuItem::Enable.
Added unique IDs to all menus (using a new static member of wxMenu).
Use wxWindow's ID as menu item ID seen by OS/2.
Rewrote wxMenu::DoInsertOrAppend which now uses the MENUITEM of the
      submenu or menu item which already contains most of the needed
      informations (especially the ID!)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7238 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-22 18:05:56 +00:00
Julian Smart
0fa7b0e3e5 Dialog Editor bug fixes, old resource conversion, additional layout helpers
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7237 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-22 14:41:06 +00:00
Julian Smart
076d7d4005 Fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7236 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-21 19:17:34 +00:00
Julian Smart
f9bcbc2e9c Added a fix to taskbar; minor mods to help controllers; added justification
options to wxButton and wxBitmapButton


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7235 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-21 19:15:49 +00:00
Julian Smart
6917fd5dee Added some wxBU_... justification styles (WIN32 only)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7234 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-21 19:14:46 +00:00
Robin Dunn
50b5f614b9 some more demo tweaks
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7233 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-21 18:02:48 +00:00
Robin Dunn
b2531949f3 Put the control's value in the event object for EVT_TEXT_ENTER
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7232 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-21 17:43:11 +00:00
Robin Dunn
01fa0d6d0f Version number in the DLL filename
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7231 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-21 17:38:48 +00:00
Robin Dunn
f00772c92e A clarification in the docs for a wxPython method.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7230 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-21 17:35:36 +00:00
Robin Dunn
ebdaf2dec8 Fixed a missing parameter in wxStyledTextCtrl::GetLastChild
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7229 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-21 17:16:35 +00:00
Robin Dunn
cf55f9ed7e Added line folding to the STC demo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7228 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-21 17:14:48 +00:00
Robin Dunn
f70cba4b45 fixed some DOS/Unix line-terminator confusion in the source files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7227 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-21 16:44:19 +00:00
Guillermo Rodriguez Garcia
9a993e53d7 Reverted recent WinMain changes due to incompatibility with the default
WinMain declaration when windows.h was being included from other headers
(compilers thought that we were trying to overload a C function and aborted
compilation of the library)

Current status is: For __WXMSW__ only, and only if WXUSINGDLL, this file
#includes <windows.h> (and then "wx/msw/private.h") and declares WinMain
correctly (matching the signature in <windows.h>).

This change does not affect non-DLL builds.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7226 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-21 15:09:51 +00:00
Bart A.M. Jourquin
aad4335f6b Add support for Sybase 11
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7225 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-21 10:15:03 +00:00
Robin Dunn
017582cd23 More STC fixes and tweaks.
Added another STC demo for wxPython.  This one sets up an editor with
the Python lexer and a bunch of styles.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7224 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-21 09:14:06 +00:00
Robin Dunn
156cb8c2e4 More STC fixes and tweaks. (Try Ctrl-KP_plus and Ctrl-KP_minus for a
really COOL feature that's no longer broken on MSW)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7223 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-21 09:09:37 +00:00
Robin Dunn
07b1aad30f generated code update
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7222 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-21 05:00:51 +00:00
Robin Dunn
9a92e83940 demo adjustments
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7221 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-21 04:59:19 +00:00
Robin Dunn
b261e3335a More wxStyledTextCtrl fixes, and updates.
I'm also trying to use the C++ class definitions in the header
directly for SWIG/wxPython instead of a cleaned up simplified version
like I usually do.  So far so good.

Some file name changes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7220 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-21 04:48:14 +00:00
Robin Dunn
f0d481f8fe More wxStyledTextCtrl fixes, and updates.
I'm also trying to use the C++ class definitions in the header
directly for SWIG/wxPython instead of a cleaned up simplified version
like I usually do.  So far so good.

Some file name changes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7219 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-21 03:33:17 +00:00
Robin Dunn
e920d72d4a More wxStyledTextCtrl fixes, and updates.
I'm also trying to use the C++ class definitions in the header
directly for SWIG/wxPython instead of a cleaned up simplified version
like I usually do.  So far so good.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7218 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-21 03:30:24 +00:00
Robin Dunn
2512232672 fixed off-by-one problem in pinting of the selection area
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7217 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-20 18:29:44 +00:00
Robin Dunn
51422a89ac changed the radius used on the rounded rectangle
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7216 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-20 07:39:43 +00:00
Robin Dunn
140601fe00 Added some missing identifiers, changed some constants to match Scintilla
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7215 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-20 07:39:20 +00:00
Robin Dunn
a1a43473a6 Added a typemap that converts strings to wxColour objects either using
the colour name or a string of the format #RRGGBB

Started the wxStyledTextCtrl Python demos

Other assorted tweaks and fixes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7214 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-20 07:37:58 +00:00
Robin Dunn
9b4c5d5a21 Fixed SetFonts methods to properly accept a Python list for the sizes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7213 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-20 07:34:04 +00:00
Julian Smart
d72d009d64 Replaced wxMotif.spec with clone of wxGTK one (old one didn't work, apparently)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7212 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-19 14:38:03 +00:00
Julian Smart
a5940b398c Added tech notes on contributing and on making RPMs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7211 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-19 14:36:16 +00:00
Stefan Neis
5498f96bfe Renamed IsCellEditControlDisplayed() to IsCellEditControlShown().
Replaces some more IsCellEditControlEnabled() by IsCellEditControlShown().


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7210 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-18 15:14:53 +00:00
Julian Smart
9bafeae845 Compile fix to grid.cpp
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7209 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-18 14:00:00 +00:00
Vadim Zeitlin
c3d12e0433 fixed bug in AddRoot() which wasn't refreshing everything properly and so a tree without children wasn't displayed properly
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7208 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-18 13:44:48 +00:00
Julian Smart
a94d44b9b7 Some updates; simple wxHTML/external HTML controllers now have DisplaySection(const wxString&).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7207 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-18 11:13:16 +00:00
Stefan Neis
fa1b3a43cc Added IsCellEditControlDisplayed() and use it from SetCellValue.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7206 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-18 10:51:38 +00:00
Julian Smart
0a47db39df Added wxCHMHelpController, updated help demo. Added DisplaySection(const wxString&)
to wxHelpControllerBase. Corrected some Dialog Editor bugs.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7205 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-18 10:30:25 +00:00
Vadim Zeitlin
9d62ffe24a fixes for dialogs whose parent is wxMDI<whatever>Frame
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7204 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-18 09:47:09 +00:00
Vadim Zeitlin
88c3e369b9 forgot to commit
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7203 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-18 08:41:29 +00:00
Vadim Zeitlin
f908d9c1ea test for SetEditable() and wxTE_PROCESS_ENTER added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7202 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-18 08:41:06 +00:00
Vadim Zeitlin
1b6220e1e1 wxMDIChildFrame::SetTitle() works
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7201 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-18 08:24:04 +00:00
Vadim Zeitlin
86d43dcfc0 test for GetLastPosition() added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7200 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-17 22:54:57 +00:00
Václav Slavík
3a48624f10 wxGTK-only fix for WindowMaker redraw problem in wxLogDialog::OnDetails
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7199 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-17 22:44:27 +00:00
Vadim Zeitlin
7354522239 added and documented wxDllLoader::GetDllExt()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7198 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-17 22:44:23 +00:00
Vadim Zeitlin
b8be5a9f03 added and documented wxString::StartsWith()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7197 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-17 17:30:01 +00:00
Vadim Zeitlin
897e170014 wxRadioBox now generates the EVT_FOCUS_SET/KILL events (tests for this added
to the controls sample)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7196 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-17 16:11:16 +00:00
Julian Smart
23373d8e9b Now creates wxBitmapButton from resource even if can't find the bitmap.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7195 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-17 14:06:48 +00:00
Vadim Zeitlin
9d7ec6e5d8 small typo fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7194 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-17 14:04:38 +00:00
Bart A.M. Jourquin
4536c57837 removing SetNumberOfColumns()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7193 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-17 13:52:53 +00:00
Julian Smart
32ca12e65e Fixed bug in helpctrl.cpp (testing for m_Config); made old-style HTML help
optional so will compile on MSW


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7192 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-17 09:56:16 +00:00
Julian Smart
ad2fbd102d Removed a memory leak in fs_zip.cpp; trivial formatting in helpdata.cpp
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7191 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-17 09:28:18 +00:00
Václav Slavík
c5da51bcb3 updated
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7190 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-17 08:14:56 +00:00
Václav Slavík
9980663066 fixed compilation bug
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7189 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-17 08:14:41 +00:00
Robin Dunn
50963011c2 updates for wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7188 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-17 06:25:47 +00:00
Robin Dunn
9bf69b7bb5 more changes to the demo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7187 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-17 04:25:48 +00:00
Vadim Zeitlin
833a6790ad 1. corrected some asserts/crashes in controls
2. added test for SetValue() in text


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7186 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-17 00:01:16 +00:00
Vadim Zeitlin
59d3027c0c 1. wxTextCtrl::SetValue() moves the cursor to the end of text (as in GTK)
2. bug in wxThread::Delete() when the thread hadn't been staretd fixed
3. setting font for radiobox now works immediately (you had to invalidate
   the window manually, e.g. by covering it with another one, before)
4. added and documented wxConstCast() and wxStaticCast()
5. attempts to make wxFontEnumeraotr::EnumEncodings() work under MSW


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7185 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-16 23:58:50 +00:00
David Webster
831026c188 Fixes for the outstanding errors in minimal.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7184 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-16 21:31:58 +00:00
Stefan Neis
231237044b Updated to current API.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7183 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-16 19:34:22 +00:00
Stefan Neis
eb24f2e86d Fixed Scrollbar handling.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7182 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-16 16:56:49 +00:00
Vadim Zeitlin
7bdff45316 1. fixed assert failure/crash when clicking in empty checklistboxes
2. wrote wxBMPHandler::SaveFile()
3. fixed stupid bug in handling DDE commands in wxMimeTypesManager


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7181 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-16 00:19:37 +00:00
Ron Lee
6f3340ff6e reverted some earlier changes nuked by RR fixing the same problem -- only differently, breaking compilation again
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7180 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-15 20:37:33 +00:00
Ron Lee
ad41d52d22 s/menuString/menuLabel/ in wxMenuBar::FindMenuItem to fix bug similar to that in gtk version
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7179 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-15 19:38:40 +00:00
Ron Lee
8518f82156 bugfix for gtk wxMenuBar::FindMenuItem to strip special chars before comparison
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7178 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-15 19:30:38 +00:00
Robert Roebling
a053a88994 Correction to minimal size of wxSizers.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7177 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-15 17:35:24 +00:00
Julian Smart
ae85cb4b2c Changed names of image-related VC++ project files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7176 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-15 16:40:05 +00:00
Robert Roebling
26d865b08d TODO updated.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7175 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-15 11:26:55 +00:00
Brian Smith
8f2a1b9c01 Added Stefan's fix for messages being incorrectly ignored.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7174 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-15 10:26:25 +00:00
Brian Smith
18d014e3ed Added WinMessageBox() code, mainly from the Windows version.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7173 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-15 10:25:08 +00:00
Robert Roebling
dc4ab3c264 Made tex2rtf compile again,
Added wxSizer::SetMinSize() (documented)
  Added wxSizer::SetItemMinSize()


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7172 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-15 09:20:56 +00:00
David Webster
1d0430ce13 VA 3.0 cannot utilize the _Export macro in this configuration
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7171 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-15 00:38:35 +00:00
Vadim Zeitlin
85c9db78f3 updated to test combo box events
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7170 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-14 22:40:07 +00:00
Vadim Zeitlin
c617e0de6b send key up/down events too
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7169 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-14 22:38:51 +00:00
Vadim Zeitlin
e10b3395bc fix for the fix for HAVE_THREAD_PRIORITY_FUNCTIONS detection
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7168 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-14 19:46:35 +00:00
Vadim Zeitlin
9382d73538 fixes for HAVE_THREAD_PRIORITY_FUNCTIONS detection
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7167 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-14 19:32:15 +00:00
Vadim Zeitlin
351cc2a737 wxSpinCtrl::GetSize() should work now (thanks to Kristjan Jonsson)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7166 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-14 18:53:26 +00:00
Vadim Zeitlin
87f968fb5a fixes for Unix detection (test for __UNIX__ in include/wx/defs.h) and for
NetBSD detection in configure


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7165 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-14 18:29:30 +00:00
Vadim Zeitlin
f568f52dd8 wxString::replace() assert fixed, test for it added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7164 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-14 18:08:35 +00:00
Ron Lee
27df708603 build .debs with new grid now that ok for wxPython too
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7163 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-14 16:12:50 +00:00
Ron Lee
49f74d51eb fixed broken compilation under Linux,
ULONG undefined and a duplicated global var name.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7162 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-14 16:02:23 +00:00
Ron Lee
b820f3ab56 switched green/blue in SetRGB params
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7161 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-14 15:59:16 +00:00
Brian Smith
9f6de777bb Fixed listbox on windows.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7160 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-14 07:53:35 +00:00
Václav Slavík
f6f09fc812 documented need of read-write image handler
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7159 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-13 20:15:39 +00:00
Vadim Zeitlin
99f55f5c26 fix for menu helpstring in the status bar for MDI child frames
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7158 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-13 18:03:34 +00:00
Vadim Zeitlin
cbb5561c49 unused var in GSocket_SetServer removed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7157 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-13 17:57:01 +00:00
Ron Lee
5a6c3a9171 added -kwxGetTranslation to locale/Makefile and updated .po files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7156 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-13 17:33:33 +00:00
Ron Lee
4360bc4eae added missing wxTRANSLATE for 'Details'
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7155 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-13 17:19:30 +00:00
Julian Smart
970047bbc3 Gave the sash and splitter windows Create and Init methods
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7154 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-13 16:18:00 +00:00
George Tasker
379b9ba2cf Changed the default of wxODBC_BACKWARD_COMPATABILITY to be 0, as it should have been
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7153 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-13 15:48:37 +00:00
Bart A.M. Jourquin
1e58bda79b add SetNumberOfColumns()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7152 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-13 14:27:58 +00:00
Julian Smart
afb749d412 Renamed project files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7151 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-13 10:56:12 +00:00
Julian Smart
e12fec0574 New tech note, corrected makeprog.b32
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7150 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-13 09:31:19 +00:00
Julian Smart
49b332a96d Removed assert when charset not recognised
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7149 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-13 08:35:50 +00:00
Robin Dunn
02d3522ba6 More ActiveX stuff. Can now automatically catch callbacks (events) from the
COM object.  I actually create a new class on the fly that derives
from wxWindow, the COM CoClass and others needed to make it all work.
The resulting class can be instantiated just like wxWindow, used in
sizers, etc.  It also responds to all COM method calls, properties, etc.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7148 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-13 08:17:58 +00:00
Julian Smart
dbe13b1101 Removing files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7147 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-13 07:08:47 +00:00
Vadim Zeitlin
1de119b2d9 some warnings fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7146 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-12 23:38:50 +00:00
Vadim Zeitlin
8b3b778f3d wxTextCtrl::GetLineText() fixes:
a) doesn't crash
 b) more efficient
 c) works in Unicode mode


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7145 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-12 23:38:20 +00:00
Vadim Zeitlin
bea6a318d9 removed incorrect labels
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7144 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-12 23:30:47 +00:00
Stefan Neis
6b9c32dccc Added a define needed by EMX when compiling for OS/2 presentation manager.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7143 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-12 20:20:02 +00:00
Václav Slavík
6ff5b6cd0a fixed duplicate definition bug
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7142 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-12 19:54:57 +00:00
Julian Smart
d51d8a8d8a Replaced the HTML doc GIF icons with slightly nicer ones (I think)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7141 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-12 15:13:46 +00:00
Julian Smart
cd847575d0 Removed a redundant Show(TRUE) from details dialog (causes assert);
tried in vain to allow empty tree control labels (doesn't seem possible)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7140 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-12 15:12:49 +00:00
George Tasker
c5a94cbde9 Updated to use the new wxDb/wxDbTable accessors
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7139 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-12 11:28:22 +00:00
George Tasker
9083d34b55 Added #if wxODBC_BACKWARD_COMPATABILITY checking to determine whether deprecated functions/classes/enums/etc are available or not.
Cleaned up various naming conventions.
from/orderBy/where are now wxString type if wxODBC_BACKWARD_COMPATABILITY is 0
Accessors added for member variables
If wxODBC_BACKWARD_COMPATABILITY is 0, then member variables that have accessors are now defined in the PRIVATE: section of the class, rather than the PUBLIC:.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7138 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-12 11:27:15 +00:00
David Webster
cfff4cf98d Set proper handles for the menubar
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7137 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-12 04:40:45 +00:00
Robin Dunn
aaca0586f2 FileBrowseButton now has history, updated demo
Added ActiveXWrapper and demos.  It can't do callback events yet, but
I'm working on it.  Can curently embed a control and make method calls
to it.

Updated the wxCalendar (python version)  and it's demo.  It now has
printing support.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7136 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-12 03:06:57 +00:00
David Webster
7b84e4c356 minor OS/2 VA 3.0 #ifdefs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7135 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-12 00:50:53 +00:00
David Webster
05255a3cb4 no message
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7134 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-12 00:46:43 +00:00
Vadim Zeitlin
a3e29acf45 1. spin ctrl now generates char/key events
2. grid sets focus to the number editor


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7133 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-12 00:11:36 +00:00
Vadim Zeitlin
d7102a0b12 some fixes for missing/incorrect links
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7132 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-12 00:09:38 +00:00
Robert Roebling
706e8aa34d Missing accessors for wxSizer items.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7131 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 22:08:21 +00:00
David Webster
287456ff2f Wrong Tiff library specified in wxwindll.icc
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7130 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 21:05:40 +00:00
David Webster
732c17643c Added needed copies (dosyacc and doslex) to the VA 4.0 .icc files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7129 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 21:03:48 +00:00
George Tasker
7b41d11654 Fixed spelling typos
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7125 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 15:56:21 +00:00
George Tasker
f018ef133c Added checks for mismatched curly braces so that when docs are generated, a count of the curly braces that have been processed are kept track of. If they mismatch, the file name is reported as having mismatched braces. If more closed braces are detected than open braces, then the line that the first extra close brace is detected on is reported.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7124 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 15:50:53 +00:00
Brian Smith
b92f1634b4 Forgot to remove debug code.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7122 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 15:38:55 +00:00
Brian Smith
101751fbef Missing create_wps_objects() prototype.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7121 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 15:31:34 +00:00
Brian Smith
03d95fca3e Added ability to make Start Menu Program folders and shortcuts.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7120 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 15:29:55 +00:00
Stefan Neis
9d9d970d70 Moved most of the code from Insert/Append/DeleteRows/Columns to
Redimension.
Put call to CalcDimension inside 'if (!GetBatchCount)' and
    added a call to CalcDimension to wxGrid's Refresh.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7118 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 13:52:58 +00:00
Brian Smith
36508e0a17 Added wxInstall a self extracting installation program using wxWindows.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7117 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 12:38:07 +00:00
Julian Smart
40f04bce6e Added HTML Help file list
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7116 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 12:12:33 +00:00
Julian Smart
bf5b9adcfd Small mods
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7115 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 12:11:52 +00:00
Julian Smart
98420eb8ab Further fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7114 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 11:32:52 +00:00
Julian Smart
64dffa993f Small changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7113 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 11:26:52 +00:00
Julian Smart
f0d59a5183 Doc fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7112 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 11:23:59 +00:00
Robert Roebling
48f1ed8cf1 CentreOnParent() didn't work at all for top level windows
on top level windows.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7111 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 10:26:16 +00:00
George Tasker
df9b4349d5 Added a #define for wxODBC_BACKWARD_COMPATABILITY
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7110 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 01:48:17 +00:00
Guillermo Rodriguez Garcia
d096e52c4e Fixed WXDIR
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7109 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 00:52:08 +00:00
Guillermo Rodriguez Garcia
fb71e6560f Added a few samples
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7108 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 00:51:34 +00:00
Guillermo Rodriguez Garcia
073638823a Removed the unused wxOsVersion var
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7107 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-11 00:36:48 +00:00
Guillermo Rodriguez Garcia
91b240626c Sorry, forgot to add a comment to the previous changelog! Under
MSW, WXHINSTANCE is now defined as void WXFAR * instead of unsigned long.

[this commit itself adds nothing]


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7106 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-10 21:57:05 +00:00
Guillermo Rodriguez Garcia
2d853594de The CASTWNDPROC logic was not necessary since this file always includes
<windows.h>. Replaced with a typedef to WNDPROC or FARPROC (depending on
whether STRICT mode is being used). Change proposed by Christoph Schulz


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7105 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-10 21:54:24 +00:00
Guillermo Rodriguez Garcia
25935ea919 The WXDLLEXPORT macros now used __declspec (double leading underscore) for
all MSW compilers. Change proposed by Christoph Schulz.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7104 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-10 21:50:27 +00:00
Vadim Zeitlin
a8ef3d8656 small correction for wxUSE_GUI definition
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7103 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-10 21:13:17 +00:00
Ove Kaaven
6565df6e22 Seems I forgot to commit a wxRename fix in here (again)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7102 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-10 19:41:29 +00:00
Stefan Neis
29dc4ad27d Fixed several keyboard handling problems:
- KeyUp event handlers added to label windows
      - pass a "TRUE"for ShiftDown upon selection events triggered by
        release of Shift Key (so one can see from the generated event,
        that we are _adding_ to the current selection).
      - Shrinking the selection by keyboard should now be possible, even
        if the selection starts at the border of the grid.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7101 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-10 14:09:22 +00:00
George Tasker
5ceaa05a92 Sample was missing the call to SQLFreeEnv() required to release the ODBC environment handle memory
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7100 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-10 12:45:26 +00:00
George Tasker
164d4e5f7d Fixed a "char *" usage to use "const char *" as it should have
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7099 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-10 12:24:46 +00:00
Ron Lee
0cf8500f7f quick fix for locale/Makefile
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7098 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-09 19:26:16 +00:00
Robin Dunn
ea9547993b More updates and generated code for wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7097 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-09 07:07:55 +00:00
Robin Dunn
569077d4d6 updates to track changes in CVS
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7096 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-09 03:07:09 +00:00
Vadim Zeitlin
cacdec1b9c wxWindowCreate/DestroyEvent now derive from wxCommandEvent
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7095 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-08 21:55:02 +00:00
Vadim Zeitlin
82f640ebc2 added a modal dialog test
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7094 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-08 21:50:29 +00:00
Stefan Neis
6dcd4ea9fb Added include to os2/private.h to make EMX compile again.
Removed second conditional include to wx/defs.h after an unconditional include.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7093 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-08 21:19:01 +00:00
Vadim Zeitlin
a9a3ea615f wxDialUpManager docs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7092 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-08 20:44:46 +00:00
Ove Kaaven
6313775835 wxRemove and wxRename takes const wxChar*, do NOT use fn_str()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7091 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-08 15:50:45 +00:00
Ove Kaaven
da4912c332 Fallback implementation of wxRemove and wxRename
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7090 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-08 15:48:23 +00:00
Ove Kaaven
36777af9e0 Fallback prototypes for wxRemove and wxRename
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7089 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-08 15:47:47 +00:00
Stefan Neis
f9823427eb Corrected handling of row/column attributes/selections if all columns/rows
are removed.
Emit EVT_GRID_CELL_LEFT_CLICK before doing any processing of the left click
        mouse event (instead of emitting it somewhere in the middle).
Moved calls to UpdateAttrRows/Cols to wxGrid's Insert/DeleteRow/Column
        (thereby eliminating the need for two now removed functions).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7088 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-08 15:30:20 +00:00
Robert Roebling
7fa76dcfec New wxFlexGridSizer.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7087 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-08 12:00:17 +00:00
Guillermo Rodriguez Garcia
ffe8056c56 Added WXFAR to the char* param in the WinMain declaration for clarity
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7086 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-08 11:59:56 +00:00
Guillermo Rodriguez Garcia
7b68a8190e Patch from Christoph Schulz - the CPPFLAGS definition was overriding
that of makeb32.env


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7085 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-08 11:58:21 +00:00
Guillermo Rodriguez Garcia
9899bb5bef A couple of changes related to the way that URLs are parsed to form
a valid URI in the wxURL::ConvertToValidURI function. Modified to comply
with RFC2396 as much as possible, see comments in the code.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7084 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-08 11:19:50 +00:00
Robin Dunn
d1a4ef79ad Changed wxGridCellChoiceEditor's constructor to take an array of
wxStrings instead of wxChar*'s.  This saved a lot of work for
wxPython.

Fixed my GetBestSize fix from yesterday

Changed wxGrid::Redimension to do a refresh (if not GetBatchCount) so
newly appended rows, etc. would show up right away.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7083 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-08 08:18:39 +00:00
Robin Dunn
a410206586 Changed wxGridCellChoiceEditor's constructor to take an array of
wxStrings instead of wxChar*'s.  This saved a lot of work for
wxPython.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7082 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-08 08:16:08 +00:00
Robin Dunn
87b389965c More grid demos and some bugs fixed
Made (virtual method) callbacks into Python code more safe, and
removed the confusion if there was a matching method in the base
class.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7081 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-08 08:11:20 +00:00
Ove Kaaven
487d976143 Seems to have forgotten to commit this small
isspace => wxIsspace change earlier...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7080 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-07 23:58:43 +00:00
Vadim Zeitlin
73cdc44ee3 fix assert failure in LVN_KEYDOWN handler sometimes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7079 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-07 22:01:01 +00:00
Robin Dunn
9d0c056be4 added autoscroll flag for the text editor
enabled SPACE to activate the editor


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7078 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-06 22:25:49 +00:00
David Webster
81acc00826 More OS/2, Control Program from ansi 'C' io fixes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7077 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-06 21:49:35 +00:00
Robin Dunn
94ff3feeee Fixed wxGridCellStringRenderer::DoGetBestSize to take multiple lines
into account and wxGrid::AutoSizeColOrRow to give a few pixels of
padding for rows like it does for columns.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7076 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-06 21:15:45 +00:00
Robert Roebling
6067cee7fa Added wxGridSizer.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7075 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-06 19:31:51 +00:00
Vadim Zeitlin
8bbce21e90 a not-always-correct assert fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7074 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-06 14:25:00 +00:00
Vadim Zeitlin
e7e0babfe6 explained how to use wxString ctor with binary data
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7073 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-06 14:24:19 +00:00
Vadim Zeitlin
7ea5a250fb SCO UnixWare added to the list of platforms
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7072 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-06 14:03:59 +00:00
Vadim Zeitlin
19cec877f7 1. added some tests for setting the fonts
2. don't try touse iso8859-2 encoding by default (error msg is annoying)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7071 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-06 13:59:14 +00:00
Vadim Zeitlin
3afa16bc19 wxMkdir/Rmdir clash fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7070 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-06 13:41:10 +00:00
Vadim Zeitlin
92f4ec38a5 another warning fixed/hidden
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7069 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-06 13:40:16 +00:00
Vadim Zeitlin
476e5f73c1 some long to int warnings from HP-UX log fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7068 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-06 13:08:23 +00:00
Vadim Zeitlin
f30f5bd933 wxMkdir/Rmdir clash fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7067 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-06 12:59:20 +00:00
Vadim Zeitlin
7295717d1d some harmless warnings fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7066 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-06 12:55:00 +00:00
Vadim Zeitlin
f5cc1e2daf compilation fix for !PCH
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7065 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-06 12:52:35 +00:00
Robin Dunn
31638be931 Some minor build issues for wxGTK
Some sources (from .i files) for wxGTK


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7064 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-05 19:21:39 +00:00
Robin Dunn
787b465cf0 Lots of little changes.
Added wrappers for the new wxGrid, and beginings of the demo of it.
Changed version number


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7063 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-05 18:29:28 +00:00
Vadim Zeitlin
8474223c94 Unicode related compilation and run-time fixes (wxUSE_MULTIBYTE removed)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7062 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-05 00:13:47 +00:00
Václav Slavík
a7db881a8b synchronized strings
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7061 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-04 21:10:55 +00:00
Guillermo Rodriguez Garcia
dda9ed859c Changed xpmi.h to XpmI.h (the correct file name) in an #include directive
to avoid problems when cross-compiling from Linux to Windows/mingw


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7060 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-04 16:45:49 +00:00
Vadim Zeitlin
bb942f0b29 1. wxDateTime almost finished
2. wxCalendarCtrl documented


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7059 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-04 01:28:46 +00:00
George Tasker
21536be6cc Now uses wxDB_XXXX naming for constants
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7058 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-03 22:35:03 +00:00
George Tasker
91eebab42f Provided wxDB_XXXX naming for constants
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7057 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-03 22:34:18 +00:00
Vadim Zeitlin
d22a51d11e Watcom 11 added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7056 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-03 22:18:39 +00:00
David Webster
cc33eb194d env file for VA 3.0 to use new wx22.def module definition file for .dll builds
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7054 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-03 13:55:17 +00:00
David Webster
d229db78be Resource file specifically for VisualAge V4.0
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7053 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-03 13:25:07 +00:00
George Tasker
6a7d62f318 Adjusted demo to reflect class name changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7052 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-03 12:39:34 +00:00
George Tasker
3703308721 Adjusted sample to reflect class name changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7051 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-03 12:32:28 +00:00
George Tasker
b5c119361b Class renaming so that all ODBC related classes begin with wxDbXxxxx. Backward compatability is maintained using typedefs.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7050 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-03 12:11:52 +00:00
George Tasker
d756f29d61 Class renaming so that as ODBC related functions begin with wxDbXxxxx. Backward compatability is maintained using typedefs.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7049 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-03 12:11:01 +00:00
Václav Slavík
b8aa8301fc fixed bug with details list not being shown under fvwm2 and windowmaker
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7048 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-03 08:16:27 +00:00
David Webster
3646a28b11 Adding new module definition file for VisualAge V3.0 for OS/2
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7047 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-03 04:47:12 +00:00
David Webster
74d178603e Removing old OS/2 module definition file
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7046 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-03 04:45:53 +00:00
David Webster
eaa8de7cdb VA4.0 update for building a .dll
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7045 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-03 04:45:00 +00:00
David Webster
27452ac50e Multiple fixes for OS/2 including getting rid of the C++ unfriendly direct.h and substituting control program io. Various GUI fixes, too.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7044 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-03 04:23:48 +00:00
David Webster
7d12fcd019 Getting rid of std 'C' io for OS/2 and substituting friendlier Control Program io.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7043 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-03 04:22:06 +00:00
Vadim Zeitlin
54d02b59ad compilation fixes for non unicode mode
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7042 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-03 01:07:56 +00:00
Vadim Zeitlin
4e0291da3c non Unicode VC++ fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7041 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-03 00:40:52 +00:00
Vadim Zeitlin
66c750fe1f 1. wxWizard docs added
2. wxDllLoader docs added (not wxLibrary though - have no idea about this one)
3. some minor fixes to wxCmdLineParser and wx[F]File docs


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7040 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-03 00:39:07 +00:00
Robin Dunn
316917bffc Added "wxPaintDC dc(this);" to wxGrid::OnPaint prevent too many
paintevents that don't actually do anything.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7039 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-02 21:58:46 +00:00
Robin Dunn
9a0fa1f97d changing \ to /
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7038 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-02 21:30:59 +00:00
Ove Kaaven
edd170072c Made wxMBConv::c??2?? methods handle conversion failures
(by returning a NULL buffer... this causes an assertion failure in
buffer.h in debug mode, perhaps that assert should be removed?
Well, it's better than completely unpredictable behaviour anyway)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7037 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-02 21:05:43 +00:00
Ove Kaaven
9a4920b88f Made wx[F]File::Write(wxString) convert string to multibyte encoding
(added optional conversion parameter). If someone actually wants to write
text files in real Unicode format, I feel that a wxMBConvUTF16 or
something should be written (which would be more portable than writing
wchar_t buffers directly, considering byte order and widths and such).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7036 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-02 20:45:18 +00:00
Guillermo Rodriguez Garcia
8a2a71db83 mingw makefiles don't like backslashes!!!
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7035 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-02 15:51:45 +00:00
Stefan Neis
8f2a695c7e Added wxStat define for non-MSVC environments.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7034 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-02 12:11:20 +00:00
Robin Dunn
4d350ff2ca Exported a few more things for DLL builds.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7033 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-02 03:27:55 +00:00
Ove Kaaven
73830147df A few documentation updates, cross-references, properties of UTF-8,
wx??2??buf macros.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7032 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-02 00:27:04 +00:00
Vadim Zeitlin
9728ba5c8a compilation in Unicode mode works with VC++
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7031 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-01 23:19:12 +00:00
Guillermo Rodriguez Garcia
a250a49231 Mingw makefiles shouldn't use backslashes!
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7030 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-01 23:01:07 +00:00
Vadim Zeitlin
f696bf6ad8 more wchar_t tests
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7029 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-01 22:54:43 +00:00
Vadim Zeitlin
01065b945b add compile-time setting to use XPMs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7028 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-01 21:35:06 +00:00
Vadim Zeitlin
37b592312a 1. fixed deletion of buttons in toolbar with old comctl32.dll
2. XPMs can be used in toolbar buttons


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7027 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-01 21:21:22 +00:00
Stefan Neis
89d645f834 Fixed minor bug in minimizing/maximizing windows.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7026 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-01 20:02:20 +00:00
Vadim Zeitlin
67c9a0797c works for other branches than the main one too
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7025 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-01 16:34:43 +00:00
Vadim Zeitlin
101c20d554 attempting to fix sa_handler signature for IRIX
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7024 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-01 16:34:20 +00:00
Robert Roebling
94f171bf97 wxDirDialog now opens the right dir folder
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7023 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-04-01 11:38:04 +00:00
Robin Dunn
31dd5b6281 another rename
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7022 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-31 19:46:00 +00:00
Guillermo Rodriguez Garcia
f81f04c12c Replaced XPM correct file names (not all lowercase)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7021 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-31 18:47:39 +00:00
Vadim Zeitlin
39d4044805 newer versions from GTK+ 1.3.x
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7020 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-31 18:23:08 +00:00
Vadim Zeitlin
3877d3b5bc regenerated makefiles from templates
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7019 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-31 18:21:40 +00:00
Vadim Zeitlin
b3000445d8 corrected syntax error
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7018 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-31 18:16:48 +00:00
Vadim Zeitlin
39cd08a993 make font conversions work in wxBase
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7017 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-31 18:12:32 +00:00
Robin Dunn
41f8d6eecb renaming files (changing case) at Guillermo's request
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7016 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-31 18:02:43 +00:00
Robin Dunn
722c71a8cf Reapplying Eric's changes on the 2.2 branch. They are:
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.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7015 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-31 17:47:52 +00:00
Stefan Neis
1904bfd1e9 Repaired semantics of EVT_GRID_SELECT_CELL.
Added OnKeyUp handler for selection with Shift+arrow keys.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7013 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-31 17:04:54 +00:00
Guillermo Rodriguez Garcia
848bb8e625 For DLL builds, the declaration of WinMain now takes fake
arguments (WXHINSTANCE, WXHINSTANCE, char*, int) in order
to avoid the need of #including <windows.h> from app.h.
Also, WinMain is now declared as extern "C".


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7012 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-31 16:16:05 +00:00
Vadim Zeitlin
864714b947 added -L/usr/lib for HP-UX shared lib
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7011 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-31 14:30:58 +00:00
Vadim Zeitlin
dbb6642ba2 changed order of libraries: -lz, -lm should now be at the end
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7010 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-31 14:23:57 +00:00
Vadim Zeitlin
7f30725c85 1. fixed wxBitmapButtons in wxStatBar95 bug
2. fixed handling of accels in wxDocMDIParentFrame
3. fixed wxComboBox tooltips


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7009 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-31 00:21:24 +00:00
Vadim Zeitlin
40dd4a59a2 1. statbar shows that wxBitmapButtons do work with it
2. some accels added to [doc]mdi samples


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7008 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-31 00:20:42 +00:00
Vadim Zeitlin
1c45dfd0e9 show that comboboxes do get char events now
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7007 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-30 22:33:18 +00:00
Vadim Zeitlin
54d68b7174 only use __forceinline for VC++ 6.0
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7006 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-30 22:30:42 +00:00
Vadim Zeitlin
597acb605c 1. fixed apparent bug in wxGrid code
2. fixed WM_CHAR handling in combobox
3. fixed controls positioning in the toolbar with older comctl32.dll/mingw32


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7005 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-30 22:26:34 +00:00
David Webster
3139a47403 Fix for the runaway WM_PAINT message in wxFrame.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7004 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-30 22:17:43 +00:00
Vadim Zeitlin
6577ef5ffc test for dlerror() added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7002 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-30 18:53:30 +00:00
Vadim Zeitlin
68a1337089 wxDllLoader test fixed for Linux
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7001 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-30 18:52:18 +00:00
Vadim Zeitlin
2dff8d830d unused var warning fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7000 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-30 18:45:57 +00:00
Vadim Zeitlin
7188bfcf6e tests for key/char events
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6997 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-30 18:21:18 +00:00
Vadim Zeitlin
abb5e0c057 fill the wxListEvent fields when sending LIST_KEY_DOWN event
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6996 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-30 18:20:11 +00:00
Vadim Zeitlin
266f6c261f select the initially specified path in the tree
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6995 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-30 18:14:24 +00:00
Vadim Zeitlin
bbeed8c707 refresh menu item should work now
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6994 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-30 17:05:57 +00:00
Stefan Neis
428f582c20 Selecting by Shift+arrow key wouldn't notice, if it was moving beyond the
grid bounds; now it does.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6993 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-30 15:44:59 +00:00
Stefan Neis
053ad70036 Modified version of DrawGridSpace.
Added minor improvement suggested by GRG.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6992 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-30 15:24:48 +00:00
Stefan Neis
f9b5150a08 Added a deselection event for ClearSelection()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6991 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-30 15:17:04 +00:00
Vadim Zeitlin
24754f6ac2 1. some more notes about Unicode compilation
2. wxUSE_WCHAR_T is not always (re)defined as 1 in wxchar.h (grrr..)
3. added wxDllLoader test to console sample
4. wxComboBox now gets WM_CHAR


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6990 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-30 00:16:18 +00:00
Vadim Zeitlin
ee5bb015fe more tests
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6989 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-30 00:15:31 +00:00
Vadim Zeitlin
45680bc875 some consistncy tests added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6988 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-29 21:48:06 +00:00
Václav Slavík
4c751ba476 added wxHF_FLATTOOLBAR
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6985 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-29 19:11:12 +00:00
Ron Lee
5150fda961 recommitting after I lost a race with Vadim :-)
relevant changes were:
  contrib libs now build with an soname when you --enable-burnt_name
  added -Wall (CXXWARNINGS) to CFLAGS for gcc


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6984 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-29 17:48:12 +00:00
Vadim Zeitlin
16d8c174e7 1. attempts to fix vsnprintf() check
2. use AC_TRY_COMPILE(), not RUN() for vscanf() check
3. don't test for joystick support in !wxUSE_GUI


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6983 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-29 16:33:26 +00:00
Vadim Zeitlin
7a063aed7c another small test added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6982 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-29 15:34:57 +00:00
Ron Lee
724b684729 contrib libs now build with an soname when you --enable-burnt_name
added -Wall to CFLAGS
added Makefile.in's for ogl samples
more spring cleaning of contrib makefiles
contrib libs now go in $(top_builddir)/lib
removed duplicate $(APPEXTRADEFS) from compile flags
fixed makelib.env install target to install headers too
More changes to Debian packaging:
  using system libs now
  added runtime and -dev packages for contrib libs
  split headers to a separate package to make Base independant of gui libs


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6981 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-29 15:32:47 +00:00
Vadim Zeitlin
d0a52e0bbd corrected documentation of spin events, added wxSpinEvent class docs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6980 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-29 14:46:00 +00:00
Vadim Zeitlin
43e3c488db regenerated with tmake
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6979 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-29 14:19:01 +00:00
Václav Slavík
a8657df481 fixed bug in Makefile: did not copy doc directory -> sample didn't work
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6978 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-29 10:41:53 +00:00
Ron Lee
43c558d6c6 wrapped code in #if wxUSE_JOYSTICK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6977 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-29 06:27:52 +00:00
Václav Slavík
3b1dca0421 fixed bug in handling tags that use CR or LF as properties deliminer
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6976 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-28 21:20:36 +00:00
Guillermo Rodriguez Garcia
3658812d91 There was no event handler defined for the 'Exit' menu option
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6975 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-28 20:51:34 +00:00
Vadim Zeitlin
970f410fba results for IRIX and HP-UX added/updated
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6974 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-28 18:57:50 +00:00
Vadim Zeitlin
441284d297 compilation error for HP-UX fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6973 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-28 18:30:13 +00:00
Vadim Zeitlin
50ef70097b compilation error with non-gcc fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6972 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-28 18:16:09 +00:00
Julian Smart
b30ba481be Added an assert to dialog.cpp to make it clearer where the failure happened.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6970 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-28 09:29:14 +00:00
Guillermo Rodriguez Garcia
b60473e401 Replaced one call to isalpha with wxIsalnum in wxURL::ConvertToValidURI because:
a) numeric characters are also valid in an URI
b) wxIsXXX should be used for wxChar instead of ANSI-C isXXX, so that the
   code will also work in Unicode builds


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6969 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-28 08:59:12 +00:00
Julian Smart
d6f6f90a65 Fixed buggy printer-setting-remembering bug fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6968 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-28 08:52:19 +00:00
Robin Dunn
bf37745c30 minor updates
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6967 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-28 06:13:29 +00:00
David Webster
6b44ceb65f Merge between dev and stable
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6966 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-28 05:13:00 +00:00
David Webster
8527a3f264 Merge between dev and stable
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6965 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-28 05:10:48 +00:00
Robin Dunn
809527ae06 Don't hard-code the CRT library name, let the /M* flag set the default.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6964 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-28 00:55:44 +00:00
Ove Kaaven
595f4bc27a IMHO, putting #if defined(__VISAGECPP__) (is it Visual Age?) around the
two known trouble lines in here was a stupid idea (the work of someone
who didn't pay attention to wx-dev discussions?)...
now that wxEncodingConverter is fixed, I took them away...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6963 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-28 00:39:51 +00:00
Ove Kaaven
8a2d60784d OK, fixing wxEncodingConverter was a little bit harder than I expected
because of some dodgy overloading implementation in here, but this ought
to do it, I think... (or is it hope?)

I wonder if my tree still keeps on having unicode enabled even when I
reconfigure with --disable-unicode, and that's why I didn't detect the
wxEncodingConverter problem myself? Wonder if that is still the case?


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6962 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-28 00:34:38 +00:00
Guillermo Rodriguez Garcia
387cdaf2f4 Use 'localhost' directly instead of wxGetHostName, which sometimes does not
do the right thing. This change doesn't affect DDE classes, which ignore this
argument anyway.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6961 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-27 19:40:37 +00:00
David Webster
fc478ddb79 GSOCKET fix from dev branch
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6960 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-27 18:35:03 +00:00
David Webster
5ab57de77d Compile bug for unsuitable method in MB2WC and WX2MB procs. VA only
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6959 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-27 18:34:35 +00:00
Vadim Zeitlin
b328857cfb wxCmdLineParser docs added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6958 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-27 18:01:16 +00:00
Julian Smart
b56958a1b8 Added symbol to work around comctl32.dll problems
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6957 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-27 17:11:42 +00:00
Vadim Zeitlin
3ca1eceb08 don't trasnform output dir name to lower case
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6956 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-27 15:33:10 +00:00
Vadim Zeitlin
bcfc655bca a usage msg cosemtic fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6955 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-27 15:29:32 +00:00
George Tasker
3a46d09870 Start of the Latex documentation of the wxDB/wxTable classes, converting them from MSWord
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6954 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-27 15:29:04 +00:00
Stefan Neis
233da17eb2 SelectCell forgot to pass ControlDown & Co to SelectBlock in row/column
selection mode.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6953 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-27 12:13:13 +00:00
Ron Lee
bc23effaaa added joystick.cpp to filelist for gtk.
added datafile to joystick sample makefile.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6950 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-26 17:38:51 +00:00
Ron Lee
de69e5b8fb added missing bits for static _gl lib
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6949 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-26 17:24:58 +00:00
Stefan Neis
fdbd6b7d7c Moved APPEXTRALIBS to beginning of LDLIBS, since they might depend on wx library.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6948 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-26 15:35:31 +00:00
Stefan Neis
6989e08f3a Changed wxGrid::OnPaint to call Refresh on subwindows.
Added Refresh to wxGrid::EndBatch().
Use batch mode in sample.
Changed CalcDimension to better handle cases with zero columns or rows.
No more automatic insertion of column when adding rows to a grid without
        columns.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6947 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-26 12:36:59 +00:00
Robin Dunn
48ed8556ac First pass on STC wrappers
Lots of little fixes, tweaks, additions, etc.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6946 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-26 02:39:21 +00:00
Ove Kaaven
ad7e243fbd Try to avoid sending a string through mbstowcs() when already Unicode
(added #if wxUSE_UNICODE etc).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6945 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-25 23:12:57 +00:00
Ove Kaaven
ad5730d735 Unicode fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6944 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-25 23:10:16 +00:00
Ove Kaaven
849963ea9e Compiles better under Unicode now (but works is another issue)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6943 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-25 23:09:02 +00:00
Ove Kaaven
049bf7d36f wxLogError()'s second argument is wxChar*,
so it likes c_str() better than mb_str()


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6942 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-25 23:07:40 +00:00
Ove Kaaven
ab64366836 A couple of Unicode fixes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6941 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-25 23:06:31 +00:00
Ove Kaaven
12c1498d81 I suppose text validators may take Unicode input as well.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6940 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-25 23:05:30 +00:00
Ove Kaaven
659755d7c2 wxResourceBuffer changed back to char*.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6939 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-25 23:03:52 +00:00
Ove Kaaven
0166fed863 A few Unicode fixes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6938 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-25 23:03:26 +00:00
Ove Kaaven
caf45e24c0 Trashed old wxCSConv loader code. Replaced with code that uses
wxTheFontMapper->CharsetToEncoding and wxEncodingConverter for now
(trying to do something more major would probably be too big for
WX_2_2_BRANCH, this can be reimplemented in a better way later).
Untested but compiles fine and ought to work.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6937 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-25 23:01:29 +00:00
Ove Kaaven
8fac236758 Improved conversion constructor arrangement to always allow a second
wxMBConv-type argument (changes the signature of the non-Unicode
create-from-wchar_t constructor).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6936 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-25 22:56:20 +00:00
Ove Kaaven
c6f724133d Corrected a cut&paste-syndrome-typo (it said MB instead of WX).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6935 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-25 18:21:14 +00:00
Julian Smart
a056ae5da9 Removed inline that caused strange a link error
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6934 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-25 18:10:06 +00:00
Ove Kaaven
9f6905e5e9 Some operator!= against wx[W]CharBuffer that was necessary to compile
wxWindows with Borland C++ 5.02


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6933 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-25 17:17:12 +00:00
Julian Smart
ae65b148b8 Fixed c_string typo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6932 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-25 14:46:40 +00:00
Ove Kaaven
ec48224709 Topic overview for wxMBConv classes (more or less).
Describes how it is *supposed* to work, not how it actually works, but
I'll begin implementing the missing pieces as soon as I get my tree to
compile in Unicode mode again...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6931 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-25 14:41:21 +00:00
Stefan Neis
857a175053 Added support for grids with m_numRows=0. SelectRow(i,TRUE) now sets
ControlDown to TRUE in the generated event.
Fixed stupid bug in row/column deletion in griddemo.cpp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6930 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-25 14:02:54 +00:00
Robert Roebling
afc91dbf75 wxListCtrl doesn't select the first item in
single selection mode anymore (as per MSW).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6929 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-25 13:36:03 +00:00
Ove Kaaven
ff9282a83f Some documentatin for wxConv classes. But still need to write an overview...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6928 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-25 11:49:20 +00:00
Václav Slavík
7dc5c3c803 update Czech translations - now in sync with 2.1.14 (and hopefully 2.2)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6927 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-24 22:35:57 +00:00
Julian Smart
7f4bca30df Unmods
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6926 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-24 19:26:56 +00:00
Robert Roebling
dc25e1d304 Trying fight aganist CVS clashes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6925 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-24 17:45:40 +00:00
Vadim Zeitlin
356cbde599 added wxTreeCtrl::ExpandAll() which is now called by char handler when '*' is
pressed to expand all subitems (MSW compatible)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6924 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-24 16:03:29 +00:00
Vadim Zeitlin
39d496f99f include
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6923 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-24 16:02:42 +00:00
Vadim Zeitlin
8fb34454e4 fixed #pragma interface hell
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6922 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-24 15:52:09 +00:00
Julian Smart
2e377124b4 Added modal dialog OnIdle processing; added asserts to helpfrm.cpp to confirm
XPM loading problem; fixes some compilos.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6921 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-24 15:48:10 +00:00
Vadim Zeitlin
eb118c55fd fix for casting from GtkScrolledWindow to GtkWindow: don't call
gtk_window_set_geometry_hints for MDI children


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6920 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-24 14:04:46 +00:00
Vadim Zeitlin
5f5083ca69 compilation fixes for Unix after Unicode fixes for Windows
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6919 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-24 13:59:22 +00:00
Vadim Zeitlin
93f4eec3c9 added wxThread() ctor parameter description
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6918 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-24 13:57:42 +00:00
Julian Smart
62a2a686a5 Compile problem fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6917 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-24 13:21:25 +00:00
Julian Smart
846b6d921a Unicode fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6916 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-24 12:12:21 +00:00
Julian Smart
d15a450d54 Some Unicode changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6915 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-24 11:31:14 +00:00
Vadim Zeitlin
9be2e3416d compilation/linking fixes for DLL build in release mode
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6914 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-24 01:56:00 +00:00
Julian Smart
f7b5f357d4 Some more script bits
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6913 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-23 21:19:49 +00:00
Julian Smart
6ed30bba72 Made it possible to switch off more settings; fixed wxScrollWindow::Scroll bug
(if x == oldx, skipped processing of y direction)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6912 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-23 21:16:24 +00:00
Guillermo Rodriguez Garcia
9c1df6be77 Updated mingw/cygwin information
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6909 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-22 20:23:49 +00:00
Julian Smart
8dcaa21a6d Fixed BC++ makefile for FINAL=1
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6908 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-22 19:10:39 +00:00
Robert Roebling
4fc4819958 Bumped up to 2.1.15.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6907 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-22 18:31:28 +00:00
Robert Roebling
5983e80bae Corrected wxGTK.spec as per 2.1.14 (hadn't commited),
Removed include "gtk.h" from the public pen.h header and
     added check for this to configure etc.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6906 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-22 18:04:07 +00:00
Vadim Zeitlin
5795cc366f added a note about comctl32.dll bug
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6905 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-22 12:57:52 +00:00
Vadim Zeitlin
fe2ebc8542 Cygwin tested
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6904 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-22 12:56:53 +00:00
Vadim Zeitlin
8b0cbaa206 french translation done!
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6903 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-22 12:56:23 +00:00
Vadim Zeitlin
d68bc1ffa6 small fix for msg catalog search path
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6902 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-22 12:55:39 +00:00
Vadim Zeitlin
f6eb66c345 the French translations for wxWin
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6899 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-22 12:33:28 +00:00
Vadim Zeitlin
988ba3ce13 check for vsnprintf() with C++ compiler
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6896 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-22 12:02:06 +00:00
Guillermo Rodriguez Garcia
fb5e087649 Various small fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6895 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-21 21:02:43 +00:00
Guillermo Rodriguez Garcia
ad269e4c7c Fixed a memory leak in wxTCPServer
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6894 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-21 20:34:06 +00:00
Julian Smart
c26fc0be88 Started (but got bored with) Unicode corrections; wxTreeCtrl correction; misc.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6893 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-21 20:33:34 +00:00
George Tasker
9a0466f130 Fixed typos in the docs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6892 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-21 19:18:16 +00:00
Vadim Zeitlin
dcb8d5e619 test for shl_load() with -ldld (needed under HP-UX)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6891 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-21 17:45:22 +00:00
Bryan Petty
f7bdc70eca This commit was manufactured by cvs2svn to create branch
'WX_2_2_BRANCH'.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@6890 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-03-21 17:45:22 +00:00
484 changed files with 344670 additions and 16127 deletions

View File

@@ -1,83 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_html.cpp
// Purpose: XRC 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/xrc/xh_html.h"
#if wxUSE_HTML
#include "wx/html/htmlwin.h"
#include "wx/filesys.h"
wxHtmlWindowXmlHandler::wxHtmlWindowXmlHandler()
: wxXmlResourceHandler()
{
XRC_ADD_STYLE(wxHW_SCROLLBAR_NEVER);
XRC_ADD_STYLE(wxHW_SCROLLBAR_AUTO);
AddWindowStyles();
}
wxObject *wxHtmlWindowXmlHandler::DoCreateResource()
{
XRC_MAKE_INSTANCE(control, wxHtmlWindow)
control->Create(m_parentAsWindow,
GetID(),
GetPosition(), GetSize(),
GetStyle(wxT("style"), wxHW_SCROLLBAR_AUTO),
GetName());
if (HasParam(wxT("borders")))
{
control->SetBorders(GetDimension(wxT("borders")));
}
if (HasParam(wxT("url")))
{
wxString url = GetParamValue(wxT("url"));
wxFileSystem& fsys = GetCurFileSystem();
wxFSFile *f = fsys.OpenFile(url);
if (f)
{
control->LoadPage(f->GetLocation());
delete f;
}
else
control->LoadPage(url);
}
else if (HasParam(wxT("htmlcode")))
{
control->SetPage(GetText(wxT("htmlcode")));
}
SetupWindow(control);
return control;
}
bool wxHtmlWindowXmlHandler::CanHandle(wxXmlNode *node)
{
return IsOfClass(node, wxT("wxHtmlWindow"));
}
#endif // wxUSE_HTML

View File

@@ -1,262 +0,0 @@
%
% automatically generated by HelpGen from
% htmlcell.tex at 21/Mar/99 22:45:23
%
\section{\class{wxHtmlCell}}\label{wxhtmlcell}
Internal data structure. It represents fragments of parsed HTML
page, the so-called {\bf cell} - a word, picture, table, horizontal line and so on.
It is used by \helpref{wxHtmlWindow}{wxhtmlwindow} and
\helpref{wxHtmlWinParser}{wxhtmlwinparser} to represent HTML page in memory.
You can divide cells into two groups : {\it visible} cells with non-zero width and
height and {\it helper} cells (usually with zero width and height) that
perform special actions such as color or font change.
\wxheading{Derived from}
\helpref{wxObject}{wxobject}
\wxheading{Include files}
<wx/html/htmlcell.h>
\wxheading{See Also}
\helpref{Cells Overview}{cells},
\helpref{wxHtmlContainerCell}{wxhtmlcontainercell}
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxHtmlCell::wxHtmlCell}\label{wxhtmlcellwxhtmlcell}
\func{}{wxHtmlCell}{\void}
Constructor.
\membersection{wxHtmlCell::AdjustPagebreak}\label{wxhtmlcelladjustpagebreak}
\func{virtual bool}{AdjustPagebreak}{\param{int * }{pagebreak}}
This method is used to adjust pagebreak position. The parameter is
variable that contains y-coordinate of page break (= horizontal line that
should not be crossed by words, images etc.). If this cell cannot be divided
into two pieces (each one on another page) then it moves the pagebreak
few pixels up.
Returns true if pagebreak was modified, false otherwise
Usage:
\begin{verbatim}
while (container->AdjustPagebreak(&p)) {}
\end{verbatim}
\membersection{wxHtmlCell::Draw}\label{wxhtmlcelldraw}
\func{virtual void}{Draw}{\param{wxDC\& }{dc}, \param{int }{x}, \param{int }{y}, \param{int }{view\_y1}, \param{int }{view\_y2}}
Renders the cell.
\wxheading{Parameters}
\docparam{dc}{Device context to which the cell is to be drawn}
\docparam{x,y}{Coordinates of parent's upper left corner (origin). You must
add this to m\_PosX,m\_PosY when passing coordinates to dc's methods
Example : {\tt dc -> DrawText("hello", x + m\_PosX, y + m\_PosY)}}
\docparam{view\_y1}{y-coord of the first line visible in window. This is
used to optimize rendering speed}
\docparam{view\_y2}{y-coord of the last line visible in window. This is
used to optimize rendering speed}
\membersection{wxHtmlCell::DrawInvisible}\label{wxhtmlcelldrawinvisible}
\func{virtual void}{DrawInvisible}{\param{wxDC\& }{dc}, \param{int }{x}, \param{int }{y}}
This method is called instead of \helpref{Draw}{wxhtmlcelldraw} when the
cell is certainly out of the screen (and thus invisible). This is not
nonsense - some tags (like \helpref{wxHtmlColourCell}{wxhtmlcolourcell}
or font setter) must be drawn even if they are invisible!
\wxheading{Parameters}
\docparam{dc}{Device context to which the cell is to be drawn}
\docparam{x,y}{Coordinates of parent's upper left corner. You must
add this to m\_PosX,m\_PosY when passing coordinates to dc's methods
Example : {\tt dc -> DrawText("hello", x + m\_PosX, y + m\_PosY)}}
\membersection{wxHtmlCell::Find}\label{wxhtmlcellfind}
\func{virtual const wxHtmlCell*}{Find}{\param{int }{condition}, \param{const void* }{param}}
Returns pointer to itself if this cell matches condition (or if any of the cells
following in the list matches), NULL otherwise.
(In other words if you call top-level container's Find it will
return pointer to the first cell that matches the condition)
It is recommended way how to obtain pointer to particular cell or
to cell of some type (e.g. wxHtmlAnchorCell reacts on
wxHTML\_COND\_ISANCHOR condition)
\wxheading{Parameters}
\docparam{condition}{Unique integer identifier of condition}
\docparam{param}{Optional parameters}
\wxheading{Defined conditions}
\begin{twocollist}\itemsep=0pt
\twocolitem{{\bf wxHTML\_COND\_ISANCHOR}}{Finds particular anchor.
{\it param} is pointer to wxString with name of the anchor.}
\twocolitem{{\bf wxHTML\_COND\_USER}}{User-defined conditions start
from this number.}
\end{twocollist}
\membersection{wxHtmlCell::GetDescent}\label{wxhtmlcellgetdescent}
\constfunc{int}{GetDescent}{\void}
Returns descent value of the cell (m\_Descent member).
\helponly{See explanation:
\image{}{descent.bmp}
}
\membersection{wxHtmlCell::GetHeight}\label{wxhtmlcellgetheight}
\constfunc{int}{GetHeight}{\void}
Returns height of the cell (m\_Height member).
\membersection{wxHtmlCell::GetId}\label{wxhtmlcellgetid}
\constfunc{virtual wxString}{GetId}{\void}
Returns unique cell identifier if there is any, empty string otherwise.
\membersection{wxHtmlCell::GetLink}\label{wxhtmlcellgetlink}
\constfunc{virtual wxHtmlLinkInfo*}{GetLink}{\param{int }{x = 0}, \param{int }{y = 0}}
Returns hypertext link if associated with this cell or NULL otherwise.
See \helpref{wxHtmlLinkInfo}{wxhtmllinkinfo}.
(Note: this makes sense only for visible tags).
\wxheading{Parameters}
\docparam{x,y}{Coordinates of position where the user pressed mouse button.
These coordinates are used e.g. by COLORMAP. Values are relative to the
upper left corner of THIS cell (i.e. from 0 to m\_Width or m\_Height)}
\membersection{wxHtmlCell::GetNext}\label{wxhtmlcellgetnext}
\constfunc{wxHtmlCell*}{GetNext}{\void}
Returns pointer to the next cell in list (see htmlcell.h if you're
interested in details).
\membersection{wxHtmlCell::GetParent}\label{wxhtmlcellgetparent}
\constfunc{wxHtmlContainerCell*}{GetParent}{\void}
Returns pointer to parent container.
\membersection{wxHtmlCell::GetPosX}\label{wxhtmlcellgetposx}
\constfunc{int}{GetPosX}{\void}
Returns X position within parent (the value is relative to parent's
upper left corner). The returned value is meaningful only if
parent's \helpref{Layout}{wxhtmlcelllayout} was called before!
\membersection{wxHtmlCell::GetPosY}\label{wxhtmlcellgetposy}
\constfunc{int}{GetPosY}{\void}
Returns Y position within parent (the value is relative to parent's
upper left corner). The returned value is meaningful only if
parent's \helpref{Layout}{wxhtmlcelllayout} was called before!
\membersection{wxHtmlCell::GetWidth}\label{wxhtmlcellgetwidth}
\constfunc{int}{GetWidth}{\void}
Returns width of the cell (m\_Width member).
\membersection{wxHtmlCell::Layout}\label{wxhtmlcelllayout}
\func{virtual void}{Layout}{\param{int }{w}}
This method performs two actions:
\begin{enumerate}\itemsep=0pt
\item adjusts the cell's width according to the fact that maximal possible width is {\it w}.
(this has sense when working with horizontal lines, tables etc.)
\item prepares layout (=fill-in m\_PosX, m\_PosY (and sometimes m\_Height) members)
based on actual width {\it w}
\end{enumerate}
It must be called before displaying cells structure because
m\_PosX and m\_PosY are undefined (or invalid)
before calling Layout.
\membersection{wxHtmlCell::OnMouseClick}\label{wxhtmlcellonmouseclick}
\func{virtual void}{OnMouseClick}{\param{wxWindow* }{parent}, \param{int}{x}, \param{int }{y}, \param{const wxMouseEvent\& }{event}}
This function is simple event handler. Each time the user clicks mouse button over a cell
within \helpref{wxHtmlWindow}{wxhtmlwindow} this method of that cell is called. Default behavior is
that it calls \helpref{wxHtmlWindow::LoadPage}{wxhtmlwindowloadpage}.
\wxheading{Note}
If you need more "advanced" event handling
you should use wxHtmlBinderCell instead.
\wxheading{Parameters}
\docparam{parent}{parent window (always wxHtmlWindow!)}
\docparam{x, y}{coordinates of mouse click (this is relative to cell's origin}
\docparam{left, middle, right}{boolean flags for mouse buttons. true if the left/middle/right
button is pressed, false otherwise}
\membersection{wxHtmlCell::SetId}\label{wxhtmlcellsetid}
\func{void}{SetId}{\param{const wxString\& }{id}}
Sets unique cell identifier. Default value is no identifier, i.e. empty string.
\membersection{wxHtmlCell::SetLink}\label{wxhtmlcellsetlink}
\func{void}{SetLink}{\param{const wxHtmlLinkInfo\& }{link}}
Sets the hypertext link associated with this cell. (Default value
is \helpref{wxHtmlLinkInfo}{wxhtmllinkinfo}("", "") (no link))
\membersection{wxHtmlCell::SetNext}\label{wxhtmlcellsetnext}
\func{void}{SetNext}{\param{wxHtmlCell }{*cell}}
Sets the next cell in the list. This shouldn't be called by user - it is
to be used only by \helpref{wxHtmlContainerCell::InsertCell}{wxhtmlcontainercellinsertcell}.
\membersection{wxHtmlCell::SetParent}\label{wxhtmlcellsetparent}
\func{void}{SetParent}{\param{wxHtmlContainerCell }{*p}}
Sets parent container of this cell. This is called from
\helpref{wxHtmlContainerCell::InsertCell}{wxhtmlcontainercellinsertcell}.
\membersection{wxHtmlCell::SetPos}\label{wxhtmlcellsetpos}
\func{void}{SetPos}{\param{int }{x}, \param{int }{y}}
Sets the cell's position within parent container.

View File

@@ -1,37 +0,0 @@
%
% automatically generated by HelpGen from
% htmlcolourcell.tex at 14/Mar/99 20:13:37
%
\section{\class{wxHtmlColourCell}}\label{wxhtmlcolourcell}
This cell changes the colour of either the background or the foreground.
\wxheading{Derived from}
\helpref{wxHtmlCell}{wxhtmlcell}
\wxheading{Include files}
<wx/html/htmlcell.h>
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxHtmlColourCell::wxHtmlColourCell}\label{wxhtmlcolourcellwxhtmlcolourcell}
\func{}{wxHtmlColourCell}{\param{wxColour }{clr}, \param{int }{flags = wxHTML\_CLR\_FOREGROUND}}
Constructor.
\wxheading{Parameters}
\docparam{clr}{The color}
\docparam{flags}{Can be one of following:
\begin{twocollist}\itemsep=0pt
\twocolitem{{\bf wxHTML\_CLR\_FOREGROUND}}{change color of text}
\twocolitem{{\bf wxHTML\_CLR\_BACKGROUND}}{change background color}
\end{twocollist}
}

View File

@@ -1,250 +0,0 @@
%
% automatically generated by HelpGen from
% htmlcontainercell.tex at 21/Mar/99 22:45:23
%
\section{\class{wxHtmlContainerCell}}\label{wxhtmlcontainercell}
The wxHtmlContainerCell class is an implementation of a cell that may
contain more cells in it. It is heavily used in the wxHTML layout algorithm.
\wxheading{Derived from}
\helpref{wxHtmlCell}{wxhtmlcell}
\wxheading{Include files}
<wx/html/htmlcell.h>
\wxheading{See Also}
\helpref{Cells Overview}{cells}
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxHtmlContainerCell::wxHtmlContainerCell}\label{wxhtmlcontainercellwxhtmlcontainercell}
\func{}{wxHtmlContainerCell}{\param{wxHtmlContainerCell }{*parent}}
Constructor. {\it parent} is pointer to parent container or NULL.
\membersection{wxHtmlContainerCell::GetAlignHor}\label{wxhtmlcontainercellgetalignhor}
\constfunc{int}{GetAlignHor}{\void}
Returns container's horizontal alignment.
\membersection{wxHtmlContainerCell::GetAlignVer}\label{wxhtmlcontainercellgetalignver}
\constfunc{int}{GetAlignVer}{\void}
Returns container's vertical alignment.
\membersection{wxHtmlContainerCell::GetBackgroundColour}\label{wxhtmlcontainercellgetbackgroundcolour}
\func{wxColour}{GetBackgroundColour}{\void}
Returns the background colour of the container or {\tt wxNullColour} if no background
colour is set.
\membersection{wxHtmlContainerCell::GetFirstCell}\label{wxhtmlcontainercellgetfirstcell}
\func{wxHtmlCell*}{GetFirstCell}{\void}
Returns pointer to the first cell in the list.
You can then use wxHtmlCell's GetNext method to obtain pointer to the next
cell in list.
{\bf Note:} This shouldn't be used by the end user. If you need some way of
finding particular cell in the list, try \helpref{Find}{wxhtmlcellfind} method
instead.
\membersection{wxHtmlContainerCell::GetIndent}\label{wxhtmlcontainercellgetindent}
\constfunc{int}{GetIndent}{\param{int }{ind}}
Returns the indentation. {\it ind} is one of the {\bf wxHTML\_INDENT\_*} constants.
{\bf Note:} You must call \helpref{GetIndentUnits}{wxhtmlcontainercellgetindentunits}
with same {\it ind} parameter in order to correctly interpret the returned integer value.
It is NOT always in pixels!
\membersection{wxHtmlContainerCell::GetIndentUnits}\label{wxhtmlcontainercellgetindentunits}
\constfunc{int}{GetIndentUnits}{\param{int }{ind}}
Returns the units of indentation for {\it ind} where {\it ind} is one
of the {\bf wxHTML\_INDENT\_*} constants.
\membersection{wxHtmlContainerCell::InsertCell}\label{wxhtmlcontainercellinsertcell}
\func{void}{InsertCell}{\param{wxHtmlCell }{*cell}}
Inserts new cell into the container.
\membersection{wxHtmlContainerCell::SetAlign}\label{wxhtmlcontainercellsetalign}
\func{void}{SetAlign}{\param{const wxHtmlTag\& }{tag}}
Sets the container's alignment (both horizontal and vertical) according to
the values stored in {\it tag}. (Tags {\tt ALIGN} parameter is extracted.) In fact
it is only a front-end to \helpref{SetAlignHor}{wxhtmlcontainercellsetalignhor}
and \helpref{SetAlignVer}{wxhtmlcontainercellsetalignver}.
\membersection{wxHtmlContainerCell::SetAlignHor}\label{wxhtmlcontainercellsetalignhor}
\func{void}{SetAlignHor}{\param{int }{al}}
Sets the container's {\it horizontal alignment}. During \helpref{Layout}{wxhtmlcelllayout}
each line is aligned according to {\it al} value.
\wxheading{Parameters}
\docparam{al}{new horizontal alignment. May be one of these values:
\begin{twocollist}\itemsep=0pt
\twocolitem{{\bf wxHTML\_ALIGN\_LEFT}}{lines are left-aligned (default)}
\twocolitem{{\bf wxHTML\_ALIGN\_JUSTIFY}}{lines are justified}
\twocolitem{{\bf wxHTML\_ALIGN\_CENTER}}{lines are centered}
\twocolitem{{\bf wxHTML\_ALIGN\_RIGHT}}{lines are right-aligned}
\end{twocollist}
}
\membersection{wxHtmlContainerCell::SetAlignVer}\label{wxhtmlcontainercellsetalignver}
\func{void}{SetAlignVer}{\param{int }{al}}
Sets the container's {\it vertical alignment}. This is per-line alignment!
\wxheading{Parameters}
\docparam{al}{new vertical alignment. May be one of these values:
\begin{twocollist}\itemsep=0pt
\twocolitem{{\bf wxHTML\_ALIGN\_BOTTOM}}{cells are over the line (default)}
\twocolitem{{\bf wxHTML\_ALIGN\_CENTER}}{cells are centered on line}
\twocolitem{{\bf wxHTML\_ALIGN\_TOP}}{cells are under the line}
\end{twocollist}
\helponly{\image{}{alignv.bmp}}
}
\membersection{wxHtmlContainerCell::SetBackgroundColour}\label{wxhtmlcontainercellsetbackgroundcolour}
\func{void}{SetBackgroundColour}{\param{const wxColour\& }{clr}}
Sets the background colour for this container.
\membersection{wxHtmlContainerCell::SetBorder}\label{wxhtmlcontainercellsetborder}
\func{void}{SetBorder}{\param{const wxColour\& }{clr1}, \param{const wxColour\& }{clr2}}
Sets the border (frame) colours. A border is a rectangle around the container.
\wxheading{Parameters}
\docparam{clr1}{Colour of top and left lines}
\docparam{clr2}{Colour of bottom and right lines}
\membersection{wxHtmlContainerCell::SetIndent}\label{wxhtmlcontainercellsetindent}
\func{void}{SetIndent}{\param{int }{i}, \param{int }{what}, \param{int }{units = wxHTML\_UNITS\_PIXELS}}
Sets the indentation (free space between borders of container and subcells).
\wxheading{Parameters}
\docparam{i}{Indentation value.}
\docparam{what}{Determines which of the four borders we're setting. It is OR
combination of following constants:
\begin{twocollist}\itemsep=0pt
\twocolitem{{\bf wxHTML\_INDENT\_TOP}}{top border}
\twocolitem{{\bf wxHTML\_INDENT\_BOTTOM}}{bottom}
\twocolitem{{\bf wxHTML\_INDENT\_LEFT}}{left}
\twocolitem{{\bf wxHTML\_INDENT\_RIGHT}}{right}
\twocolitem{{\bf wxHTML\_INDENT\_HORIZONTAL}}{left and right}
\twocolitem{{\bf wxHTML\_INDENT\_VERTICAL}}{top and bottom}
\twocolitem{{\bf wxHTML\_INDENT\_ALL}}{all 4 borders}
\end{twocollist}
\helponly{\image{}{indent.bmp}}
}
\docparam{units}{Units of {\it i}. This parameter affects interpretation of {\it} value.
\begin{twocollist}\itemsep=0pt
\twocolitem{{\bf wxHTML\_UNITS\_PIXELS}}{{\it i} is number of pixels}
\twocolitem{{\bf wxHTML\_UNITS\_PERCENT}}{{\it i} is interpreted as percents of width
of parent container}
\end{twocollist}
}
\membersection{wxHtmlContainerCell::SetMinHeight}\label{wxhtmlcontainercellsetminheight}
\func{void}{SetMinHeight}{\param{int }{h}, \param{int }{align = wxHTML\_ALIGN\_TOP}}
Sets minimal height of the container.
When container's \helpref{Layout}{wxhtmlcelllayout} is called, m\_Height
is set depending on layout of subcells to the height of area covered
by layed-out subcells. Calling this method guarantees you that the height
of container is never smaller than {\it h} - even if the subcells cover
much smaller area.
\wxheading{Parameters}
\docparam{h}{The minimal height.}
\docparam{align}{If height of the container is lower than the minimum height, empty space must be inserted
somewhere in order to ensure minimal height. This parameter is one of {\bf wxHTML\_ALIGN\_TOP,
wxHTML\_ALIGN\_BOTTOM, wxHTML\_ALIGN\_CENTER}. It refers to the {\it contents}, not to the
empty place.}
\membersection{wxHtmlContainerCell::SetWidthFloat}\label{wxhtmlcontainercellsetwidthfloat}
\func{void}{SetWidthFloat}{\param{int }{w}, \param{int }{units}}
\func{void}{SetWidthFloat}{\param{const wxHtmlTag\& }{tag}, \param{double }{pixel\_scale = 1.0}}
Sets floating width adjustment.
The normal behaviour of container is that its width is the same as the width of
parent container (and thus you can have only one sub-container per line).
You can change this by setting FWA.
{\it pixel\_scale} is number of real pixels that equals to 1 HTML pixel.
\wxheading{Parameters}
\docparam{w}{Width of the container. If the value is negative it means
complement to full width of parent container (e.g.
{\tt SetWidthFloat(-50, wxHTML\_UNITS\_PIXELS)} sets the width
of container to parent's width minus 50 pixels. This is useful when
creating tables - you can call SetWidthFloat(50) and SetWidthFloat(-50))}
\docparam{units}{Units of {\it w} This parameter affects the interpretation of {\it} value.
\begin{twocollist}\itemsep=0pt
\twocolitem{{\bf wxHTML\_UNITS\_PIXELS}}{{\it w} is number of pixels}
\twocolitem{{\bf wxHTML\_UNITS\_PERCENT}}{{\it w} is interpreted as percents of width
of parent container}
\end{twocollist}
}
\docparam{tag}{In the second version of method, {\it w} and {\it units}
info is extracted from tag's {\tt WIDTH} parameter.}
\pythonnote{The second form of this method is named
SetWidthFloatFromTag in wxPython.}

View File

@@ -1,111 +0,0 @@
%
% automatically generated by HelpGen from
% htmprint.h at 17/Oct/99 12:48:02
%
\section{\class{wxHtmlDCRenderer}}\label{wxhtmldcrenderer}
This class can render HTML document into a specified area of a DC. You can use it
in your own printing code, although use of \helpref{wxHtmlEasyPrinting}{wxhtmleasyprinting}
or \helpref{wxHtmlPrintout}{wxhtmlprintout} is strongly recommended.
\wxheading{Derived from}
\helpref{wxObject}{wxobject}
\wxheading{Include files}
<wx/html/htmprint.h>
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxHtmlDCRenderer::wxHtmlDCRenderer}\label{wxhtmldcrendererwxhtmldcrenderer}
\func{}{wxHtmlDCRenderer}{\void}
Constructor.
\membersection{wxHtmlDCRenderer::SetDC}\label{wxhtmldcrenderersetdc}
\func{void}{SetDC}{\param{wxDC* }{dc}, \param{double }{pixel\_scale = 1.0}}
Assign DC instance to the renderer.
{\it pixel\_scale} can be used when rendering to high-resolution DCs (e.g. printer) to adjust size of pixel metrics.
(Many dimensions in HTML are given in pixels -- e.g. image sizes. 300x300 image would be only one
inch wide on typical printer. With pixel\_scale = 3.0 it would be 3 inches.)
\membersection{wxHtmlDCRenderer::SetFonts}\label{wxhtmldcrenderersetfonts}
\func{void}{SetFonts}{\param{wxString }{normal\_face}, \param{wxString }{fixed\_face}, \param{const int }{*sizes = NULL}}
Sets fonts. See \helpref{wxHtmlWindow::SetFonts}{wxhtmlwindowsetfonts} for
detailed description.
See also \helpref{SetSize}{wxhtmldcrenderersetsize}.
\membersection{wxHtmlDCRenderer::SetSize}\label{wxhtmldcrenderersetsize}
\func{void}{SetSize}{\param{int }{width}, \param{int }{height}}
Set size of output rectangle, in pixels. Note that you {\bf can't} change
width of the rectangle between calls to \helpref{Render}{wxhtmldcrendererrender}!
(You can freely change height.)
\membersection{wxHtmlDCRenderer::SetHtmlText}\label{wxhtmldcrenderersethtmltext}
\func{void}{SetHtmlText}{\param{const wxString\& }{html}, \param{const wxString\& }{basepath = wxEmptyString}, \param{bool }{isdir = true}}
Assign text to the renderer. \helpref{Render}{wxhtmldcrendererrender} then draws
the text onto DC.
\wxheading{Parameters}
\docparam{html}{HTML text. This is {\it not} a filename.}
\docparam{basepath}{base directory (html string would be stored there if it was in
file). It is used to determine path for loading images, for example.}
\docparam{isdir}{false if basepath is filename, true if it is directory name
(see \helpref{wxFileSystem}{wxfilesystem} for detailed explanation)}
\membersection{wxHtmlDCRenderer::Render}\label{wxhtmldcrendererrender}
\func{int}{Render}{\param{int }{x}, \param{int }{y}, \param{int }{from = 0}, \param{int }{dont\_render = false}}
Renders HTML text to the DC.
\wxheading{Parameters}
\docparam{x,y}{ position of upper-left corner of printing rectangle (see \helpref{SetSize}{wxhtmldcrenderersetsize})}
\docparam{from}{y-coordinate of the very first visible cell}
\docparam{dont\_render}{if true then this method only returns y coordinate of the next page
and does not output anything}
Returned value is y coordinate of first cell than didn't fit onto page.
Use this value as {\it from} in next call to Render in order to print multipages
document.
\wxheading{Caution!}
The Following three methods {\bf must} always be called before any call to Render (preferably
in this order):
\begin{itemize}\itemsep=0pt
\item \helpref{SetDC}{wxhtmldcrenderersetdc}
\item \helpref{SetSize}{wxhtmldcrenderersetsize}
\item \helpref{SetHtmlText}{wxhtmldcrenderersethtmltext}
\end{itemize}
{\bf Render() changes the DC's user scale and does NOT restore it.}
\membersection{wxHtmlDCRenderer::GetTotalHeight}\label{wxhtmldcrenderergettotalheight}
\func{int}{GetTotalHeight}{\void}
Returns the height of the HTML text. This is important if area height (see \helpref{SetSize}{wxhtmldcrenderersetsize})
is smaller that total height and thus the page cannot fit into it. In that case you're supposed to
call \helpref{Render}{wxhtmldcrendererrender} as long as its return value is smaller than GetTotalHeight's.

View File

@@ -1,164 +0,0 @@
%
% automatically generated by HelpGen from
% htmprint.h at 17/Oct/99 12:48:02
%
\section{\class{wxHtmlEasyPrinting}}\label{wxhtmleasyprinting}
This class provides very simple interface to printing
architecture. It allows you to print HTML documents using
only a few commands.
\wxheading{Note}
Do not create this class on the stack only. You should create an instance on app
startup and use this instance for all printing operations. The reason is that
this class stores various settings in it.
\wxheading{Derived from}
\helpref{wxObject}{wxobject}
\wxheading{Include files}
<wx/html/htmprint.h>
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxHtmlEasyPrinting::wxHtmlEasyPrinting}\label{wxhtmleasyprintingwxhtmleasyprinting}
\func{}{wxHtmlEasyPrinting}{\param{const wxString\& }{name = "Printing"}, \param{wxWindow* }{parentWindow = NULL}}
Constructor.
\wxheading{Parameters}
\docparam{name}{Name of the printing object. Used by preview frames and setup dialogs.}
\docparam{parentWindow}{pointer to the window that will own the preview frame and setup dialogs. May be NULL.}
\membersection{wxHtmlEasyPrinting::PreviewFile}\label{wxhtmleasyprintingpreviewfile}
\func{bool}{PreviewFile}{\param{const wxString\& }{htmlfile}}
Preview HTML file.
Returns false in case of error -- call
\helpref{wxPrinter::GetLastError}{wxprintergetlasterror} to get detailed
information about the kind of the error.
\membersection{wxHtmlEasyPrinting::PreviewText}\label{wxhtmleasyprintingpreviewtext}
\func{bool}{PreviewText}{\param{const wxString\& }{htmltext}, \param{const wxString\& }{basepath = wxEmptyString}}
Preview HTML text (not file!).
Returns false in case of error -- call
\helpref{wxPrinter::GetLastError}{wxprintergetlasterror} to get detailed
information about the kind of the error.
\wxheading{Parameters}
\docparam{htmltext}{HTML text.}
\docparam{basepath}{base directory (html string would be stored there if it was in
file). It is used to determine path for loading images, for example.}
\membersection{wxHtmlEasyPrinting::PrintFile}\label{wxhtmleasyprintingprintfile}
\func{bool}{PrintFile}{\param{const wxString\& }{htmlfile}}
Print HTML file.
Returns false in case of error -- call
\helpref{wxPrinter::GetLastError}{wxprintergetlasterror} to get detailed
information about the kind of the error.
\membersection{wxHtmlEasyPrinting::PrintText}\label{wxhtmleasyprintingprinttext}
\func{bool}{PrintText}{\param{const wxString\& }{htmltext}, \param{const wxString\& }{basepath = wxEmptyString}}
Print HTML text (not file!).
Returns false in case of error -- call
\helpref{wxPrinter::GetLastError}{wxprintergetlasterror} to get detailed
information about the kind of the error.
\wxheading{Parameters}
\docparam{htmltext}{HTML text.}
\docparam{basepath}{base directory (html string would be stored there if it was in
file). It is used to determine path for loading images, for example.}
\membersection{wxHtmlEasyPrinting::PrinterSetup}\label{wxhtmleasyprintingprintersetup}
\func{void}{PrinterSetup}{\void}
Display printer setup dialog and allows the user to modify settings.
\membersection{wxHtmlEasyPrinting::PageSetup}\label{wxhtmleasyprintingpagesetup}
\func{void}{PageSetup}{\void}
Display page setup dialog and allows the user to modify settings.
\membersection{wxHtmlEasyPrinting::SetFonts}\label{wxhtmleasyprintingsetfonts}
\func{void}{SetFonts}{\param{wxString }{normal\_face}, \param{wxString }{fixed\_face}, \param{const int }{*sizes = NULL}}
Sets fonts. See \helpref{wxHtmlWindow::SetFonts}{wxhtmlwindowsetfonts} for
detailed description.
\membersection{wxHtmlEasyPrinting::SetHeader}\label{wxhtmleasyprintingsetheader}
\func{void}{SetHeader}{\param{const wxString\& }{header}, \param{int }{pg = wxPAGE\_ALL}}
Set page header.
\wxheading{Parameters}
\docparam{header}{HTML text to be used as header. You can use macros in it:
\begin{itemize}\itemsep=0pt
\item @PAGENUM@ is replaced by page number
\item @PAGESCNT@ is replaced by total number of pages
\end{itemize}
}
\docparam{pg}{one of wxPAGE\_ODD, wxPAGE\_EVEN and wxPAGE\_ALL constants.}
\membersection{wxHtmlEasyPrinting::SetFooter}\label{wxhtmleasyprintingsetfooter}
\func{void}{SetFooter}{\param{const wxString\& }{footer}, \param{int }{pg = wxPAGE\_ALL}}
Set page footer.
\wxheading{Parameters}
\docparam{footer}{HTML text to be used as footer. You can use macros in it:
\begin{itemize}\itemsep=0pt
\item @PAGENUM@ is replaced by page number
\item @PAGESCNT@ is replaced by total number of pages
\end{itemize}
}
\docparam{pg}{one of wxPAGE\_ODD, wxPAGE\_EVEN and wxPAGE\_ALL constants.}
\membersection{wxHtmlEasyPrinting::GetPrintData}\label{wxhtmleasyprintinggetprintdata}
\func{wxPrintData*}{GetPrintData}{\void}
Returns pointer to \helpref{wxPrintData}{wxprintdata} instance used by this class. You can
set its parameters (via SetXXXX methods).
\membersection{wxHtmlEasyPrinting::GetPageSetupData}\label{wxhtmleasyprintinggetpagesetupdata}
\func{wxPageSetupDialogData*}{GetPageSetupData}{\void}
Returns a pointer to \helpref{wxPageSetupDialogData}{wxpagesetupdialogdata} instance used by
this class. You can set its parameters (via SetXXXX methods).

View File

@@ -1,63 +0,0 @@
%
% automatically generated by HelpGen from
% htmlfilter.tex at 29/Mar/99 18:35:09
%
\section{\class{wxHtmlFilter}}\label{wxhtmlfilter}
This class is an input filter for \helpref{wxHtmlWindow}{wxhtmlwindow}.
It allows you to read and display files of different file formats.
\wxheading{Derived from}
\helpref{wxObject}{wxobject}
\wxheading{Include files}
<wx/html/htmlfilt.h>
\wxheading{See Also}
\helpref{Overview}{filters}
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxHtmlFilter::wxHtmlFilter}\label{wxhtmlfilterwxhtmlfilter}
\func{}{wxHtmlFilter}{\void}
Constructor.
\membersection{wxHtmlFilter::CanRead}\label{wxhtmlfiltercanread}
\func{bool}{CanRead}{\param{const wxFSFile\& }{file}}
Returns true if this filter is capable of reading file {\it file}.
Example:
\begin{verbatim}
bool MyFilter::CanRead(const wxFSFile& file)
{
return (file.GetMimeType() == "application/x-ugh");
}
\end{verbatim}
\membersection{wxHtmlFilter::ReadFile}\label{wxhtmlfilterreadfile}
\func{wxString}{ReadFile}{\param{const wxFSFile\& }{file}}
Reads the file and returns string with HTML document.
Example:
\begin{verbatim}
wxString MyImgFilter::ReadFile(const wxFSFile& file)
{
return "<html><body><img src=\"" +
file.GetLocation() +
"\"></body></html>";
}
\end{verbatim}

View File

@@ -1,221 +0,0 @@
%
% automatically generated by HelpGen from
% htmlhelp.h at 02/May/99 19:58:53
%
\section{\class{wxHtmlHelpController}}\label{wxhtmlhelpcontroller}
{\bf WARNING!} Although this class has an API compatible with other wxWindows
help controllers as documented by \helpref{wxHelpController}{wxhelpcontroller}, it
is recommended that you use the enhanced capabilities of wxHtmlHelpController's API.
This help controller provides an easy way of displaying HTML help in your
application (see {\it test} sample). The help system is based on {\bf books}
(see \helpref{AddBook}{wxhtmlhelpcontrolleraddbook}). A book is a logical
section of documentation (for example "User's Guide" or "Programmer's Guide" or
"C++ Reference" or "wxWindows Reference"). The help controller can handle as
many books as you want.
wxHTML uses Microsoft's HTML Help Workshop project files (.hhp, .hhk, .hhc) as its
native format. The file format is described \helpref{here}{helpformat}.
Have a look at docs/html/ directory where sample project files are stored.
You can use Tex2RTF to produce these files when generating HTML, if you set {\bf htmlWorkshopFiles} to {\bf true} in
your tex2rtf.ini file.
\wxheading{Note}
It is strongly recommended to use preprocessed {\bf .hhp.cached} version of
projects. It can be either created on-the-fly (see
\helpref{SetTempDir}{wxhtmlhelpcontrollersettempdir}) or you can use
{\bf hhp2cached} utility from {\it utils/hhp2cached} to create it and
distribute the cached version together with helpfiles. See {\it samples/html/help}
sample for demonstration of its use.
\wxheading{See also}
\helpref{Information about wxBestHelpController}{wxhelpcontroller}
\wxheading{Derived from}
wxHelpControllerBase
\wxheading{Include files}
<wx/html/helpctrl.h>
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxHtmlHelpController::wxHtmlHelpController}\label{wxhtmlhelpcontrollerwxhtmlhelpcontroller}
\func{}{wxHtmlHelpController}{\param{int }{style = wxHF\_DEFAULT\_STYLE}}
Constructor.
\wxheading{Parameters}
{\it style} is combination of these flags:
\begin{twocollist}\itemsep=0pt
\twocolitem{\windowstyle{wxHF\_TOOLBAR}}{Help frame has toolbar.}
\twocolitem{\windowstyle{wxHF\_FLAT\_TOOLBAR}}{Help frame has toolbar with flat buttons (aka coolbar).}
\twocolitem{\windowstyle{wxHF\_CONTENTS}}{Help frame has contents panel.}
\twocolitem{\windowstyle{wxHF\_INDEX}}{Help frame has index panel.}
\twocolitem{\windowstyle{wxHF\_SEARCH}}{Help frame has search panel.}
\twocolitem{\windowstyle{wxHF\_BOOKMARKS}}{Help frame has bookmarks controls.}
\twocolitem{\windowstyle{wxHF\_OPEN\_FILES}}{Allow user to open arbitrary HTML document.}
\twocolitem{\windowstyle{wxHF\_PRINT}}{Toolbar contains "print" button.}
\twocolitem{\windowstyle{wxHF\_MERGE\_BOOKS}}{Contents pane does not show
book nodes. All books are merged together and appear as single book to the
user.}
\twocolitem{\windowstyle{wxHF\_ICONS\_BOOK}}{All nodes in contents pane
have a book icon. This is how Microsoft's HTML help viewer behaves.}
\twocolitem{\windowstyle{wxHF\_ICONS\_FOLDER}}{Book nodes in contents pane have
a book icon, book's sections have a folder icon. This is the default.}
\twocolitem{\windowstyle{wxHF\_ICONS\_BOOK\_CHAPTER}}{Both book nodes and
nodes of top-level sections of a book (i.e. chapters) have a book icon,
all other sections (sections, subsections, ...) have a folder icon.}
\twocolitem{\windowstyle{wxHF\_DEFAULT\_STYLE}}{{\tt wxHF\_TOOLBAR | wxHF\_CONTENTS
| wxHF\_INDEX | wxHF\_SEARCH | wxHF\_BOOKMARKS | wxHF\_PRINT}}
\end{twocollist}
\membersection{wxHtmlHelpController::AddBook}\label{wxhtmlhelpcontrolleraddbook}
\func{bool}{AddBook}{\param{const wxFileName\& }{book\_file}, \param{bool }{show\_wait\_msg}}
\func{bool}{AddBook}{\param{const wxString\& }{book\_url}, \param{bool }{show\_wait\_msg}}
Adds book (\helpref{.hhp file}{helpformat} - HTML Help Workshop project file) into the list of loaded books.
This must be called at least once before displaying any help.
{\it book\_file} or {\it book\_url} may be either .hhp file or ZIP archive
that contains arbitrary number of .hhp files in
top-level directory. This ZIP archive must have .zip or .htb extension
(the latter stands for "HTML book"). In other words,
{\tt AddBook(wxFileName("help.zip"))}
is possible and, in fact, recommended way.
\wxheading{Parameters}
\docparam{show\_wait\_msg}{If true then a decoration-less window with progress message is displayed.}
\docparam{book\_file}{Help book filename. It is recommended to use this prototype
instead of the one taking URL, because it is less error-prone.}
\docparam{book\_url}{Help book URL (note that syntax of filename and URL is
different on most platforms)}
\wxheading{Note}
Don't forget to install wxFileSystem ZIP handler with
{\tt wxFileSystem::AddHandler(new wxZipFSHandler);} before calling this method
on a .zip or .htb file!
\membersection{wxHtmlHelpController::CreateHelpFrame}\label{wxhtmlhelpcontrollercreatehelpframe}
\func{virtual wxHtmlHelpFrame*}{CreateHelpFrame}{\param{wxHtmlHelpData * }{data}}
This protected virtual method may be overridden so that the controller
uses slightly different frame. See {\it samples/html/helpview} sample for
an example.
\membersection{wxHtmlHelpController::Display}\label{wxhtmlhelpcontrollerdisplay}
\func{void}{Display}{\param{const wxString\& }{x}}
Displays page {\it x}. This is THE important function - it is used to display
the help in application.
You can specify the page in many ways:
\begin{itemize}\itemsep=0pt
\item as direct filename of HTML document
\item as chapter name (from contents) or as a book name
\item as some word from index
\item even as any word (will be searched)
\end{itemize}
Looking for the page runs in these steps:
\begin{enumerate}\itemsep=0pt
\item try to locate file named x (if x is for example "doc/howto.htm")
\item try to open starting page of book named x
\item try to find x in contents (if x is for example "How To ...")
\item try to find x in index (if x is for example "How To ...")
\item switch to Search panel and start searching
\end{enumerate}
\func{void}{Display}{\param{const int }{id}}
This alternative form is used to search help contents by numeric IDs.
\pythonnote{The second form of this method is named DisplayId in
wxPython.}
\membersection{wxHtmlHelpController::DisplayContents}\label{wxhtmlhelpcontrollerdisplaycontents}
\func{void}{DisplayContents}{\void}
Displays help window and focuses contents panel.
\membersection{wxHtmlHelpController::DisplayIndex}\label{wxhtmlhelpcontrollerdisplayindex}
\func{void}{DisplayIndex}{\void}
Displays help window and focuses index panel.
\membersection{wxHtmlHelpController::KeywordSearch}\label{wxhtmlhelpcontrollerkeywordsearch}
\func{bool}{KeywordSearch}{\param{const wxString\& }{keyword}}
Displays help window, focuses search panel and starts searching.
Returns true if the keyword was found.
{\bf Important:} KeywordSearch searches only pages listed in .hhc file(s).
You should list all pages in the contents file.
\membersection{wxHtmlHelpController::ReadCustomization}\label{wxhtmlhelpcontrollerreadcustomization}
\func{void}{ReadCustomization}{\param{wxConfigBase* }{cfg}, \param{wxString }{path = wxEmptyString}}
Reads the controller's setting (position of window, etc.)
\membersection{wxHtmlHelpController::SetTempDir}\label{wxhtmlhelpcontrollersettempdir}
\func{void}{SetTempDir}{\param{const wxString\& }{path}}
Sets the path for storing temporary files - cached binary versions of index and contents files. These binary
forms are much faster to read. Default value is empty string (empty string means
that no cached data are stored). Note that these files are {\it not}
deleted when program exits.
Once created these cached files will be used in all subsequent executions
of your application. If cached files become older than corresponding .hhp
file (e.g. if you regenerate documentation) it will be refreshed.
\membersection{wxHtmlHelpController::SetTitleFormat}\label{wxhtmlhelpcontrollersettitleformat}
\func{void}{SetTitleFormat}{\param{const wxString\& }{format}}
Sets format of title of the frame. Must contain exactly one "\%s"
(for title of displayed HTML page).
\membersection{wxHtmlHelpController::UseConfig}\label{wxhtmlhelpcontrolleruseconfig}
\func{void}{UseConfig}{\param{wxConfigBase* }{config}, \param{const wxString\& }{rootpath = wxEmptyString}}
Associates {\it config} object with the controller.
If there is associated config object, wxHtmlHelpController automatically
reads and writes settings (including wxHtmlWindow's settings) when needed.
The only thing you must do is create wxConfig object and call UseConfig.
If you do not use {\it UseConfig}, wxHtmlHelpController will use
default wxConfig object if available (for details see
\helpref{wxConfigBase::Get}{wxconfigbaseget} and
\helpref{wxConfigBase::Set}{wxconfigbaseset}).
\membersection{wxHtmlHelpController::WriteCustomization}\label{wxhtmlhelpcontrollerwritecustomization}
\func{void}{WriteCustomization}{\param{wxConfigBase* }{cfg}, \param{wxString }{path = wxEmptyString}}
Stores controllers setting (position of window etc.)

View File

@@ -1,87 +0,0 @@
%
% automatically generated by HelpGen from
% helpdata.h at 24/Oct/99 18:03:10
%
\section{\class{wxHtmlHelpData}}\label{wxhtmlhelpdata}
This class is used by \helpref{wxHtmlHelpController}{wxhtmlhelpcontroller}
and \helpref{wxHtmlHelpFrame}{wxhtmlhelpframe} to access HTML help items.
It is internal class and should not be used directly - except for the case
you're writing your own HTML help controller.
\wxheading{Derived from}
\helpref{wxObject}{wxobject}
\wxheading{Include files}
<wx/html/helpdata.h>
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxHtmlHelpData::wxHtmlHelpData}\label{wxhtmlhelpdatawxhtmlhelpdata}
\func{}{wxHtmlHelpData}{\void}
Constructor.
\membersection{wxHtmlHelpData::AddBook}\label{wxhtmlhelpdataaddbook}
\func{bool}{AddBook}{\param{const wxString\& }{book\_url}}
Adds new book. {\it book} is URL (not filename!) of HTML help project (hhp)
or ZIP file that contains arbitrary number of .hhp projects (this zip
file can have either .zip or .htb extension, htb stands for "html book").
Returns success.
\membersection{wxHtmlHelpData::FindPageById}\label{wxhtmlhelpdatafindpagebyid}
\func{wxString}{FindPageById}{\param{int }{id}}
Returns page's URL based on integer ID stored in project.
\membersection{wxHtmlHelpData::FindPageByName}\label{wxhtmlhelpdatafindpagebyname}
\func{wxString}{FindPageByName}{\param{const wxString\& }{page}}
Returns page's URL based on its (file)name.
\membersection{wxHtmlHelpData::GetBookRecArray}\label{wxhtmlhelpdatagetbookrecarray}
\func{const wxHtmlBookRecArray\&}{GetBookRecArray}{\void}
Returns array with help books info.
\membersection{wxHtmlHelpData::GetContents}\label{wxhtmlhelpdatagetcontents}
\func{wxHtmlContentsItem*}{GetContents}{\void}
Returns contents lists pointer.
\membersection{wxHtmlHelpData::GetContentsCnt}\label{wxhtmlhelpdatagetcontentscnt}
\func{int}{GetContentsCnt}{\void}
Returns size of contents list.
\membersection{wxHtmlHelpData::GetIndex}\label{wxhtmlhelpdatagetindex}
\func{wxHtmlContentsItem*}{GetIndex}{\void}
Returns pointer to index items list.
\membersection{wxHtmlHelpData::GetIndexCnt}\label{wxhtmlhelpdatagetindexcnt}
\func{int}{GetIndexCnt}{\void}
Returns size of index list.
\membersection{wxHtmlHelpData::SetTempDir}\label{wxhtmlhelpdatasettempdir}
\func{void}{SetTempDir}{\param{const wxString\& }{path}}
Sets temporary directory where binary cached versions of MS HTML Workshop
files will be stored. (This is turned off by default and you can enable
this feature by setting non-empty temp dir.)

View File

@@ -1,170 +0,0 @@
%
% automatically generated by HelpGen from
% helpfrm.h at 24/Oct/99 18:03:10
%
\section{\class{wxHtmlHelpFrame}}\label{wxhtmlhelpframe}
This class is used by \helpref{wxHtmlHelpController}{wxhtmlhelpcontroller}
to display help.
It is an internal class and should not be used directly - except for the case
when you're writing your own HTML help controller.
\wxheading{Derived from}
\helpref{wxFrame}{wxframe}
\wxheading{Include files}
<wx/html/helpfrm.h>
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxHtmlHelpFrame::wxHtmlHelpFrame}\label{wxhtmlhelpframewxhtmlhelpframe}
\func{}{wxHtmlHelpFrame}{\param{wxHtmlHelpData* }{data = NULL}}
\func{}{wxHtmlHelpFrame}{\param{wxWindow* }{parent}, \param{int }{wxWindowID}, \param{const wxString\& }{title = wxEmptyString}, \param{int }{style = wxHF\_DEFAULT\_STYLE}, \param{wxHtmlHelpData* }{data = NULL}}
Constructor.
{\it style} is combination of these flags:
\begin{twocollist}\itemsep=0pt
\twocolitem{\windowstyle{wxHF\_TOOLBAR}}{Help frame has toolbar.}
\twocolitem{\windowstyle{wxHF\_FLAT\_TOOLBAR}}{Help frame has toolbar with flat buttons (aka coolbar).}
\twocolitem{\windowstyle{wxHF\_CONTENTS}}{Help frame has contents panel.}
\twocolitem{\windowstyle{wxHF\_INDEX}}{Help frame has index panel.}
\twocolitem{\windowstyle{wxHF\_SEARCH}}{Help frame has search panel.}
\twocolitem{\windowstyle{wxHF\_BOOKMARKS}}{Help frame has bookmarks controls.}
\twocolitem{\windowstyle{wxHF\_OPEN\_FILES}}{Allow user to open arbitrary HTML document.}
\twocolitem{\windowstyle{wxHF\_PRINT}}{Toolbar contains "print" button.}
\twocolitem{\windowstyle{wxHF\_MERGE\_BOOKS}}{Contents pane does not show
book nodes. All books are merged together and appear as single book to the
user.}
\twocolitem{\windowstyle{wxHF\_ICONS\_BOOK}}{All nodes in contents pane
have a book icon. This is how Microsoft's HTML help viewer behaves.}
\twocolitem{\windowstyle{wxHF\_ICONS\_FOLDER}}{Book nodes in contents pane have
a book icon, book's sections have a folder icon. This is the default.}
\twocolitem{\windowstyle{wxHF\_ICONS\_BOOK\_CHAPTER}}{Both book nodes and
nodes of top-level sections of a book (i.e. chapters) have a book icon,
all other sections (sections, subsections, ...) have a folder icon.}
\twocolitem{\windowstyle{wxHF\_DEFAULT\_STYLE}}{{\tt wxHF\_TOOLBAR | wxHF\_CONTENTS
| wxHF\_INDEX | wxHF\_SEARCH | wxHF\_BOOKMARKS | wxHF\_PRINT}}
\end{twocollist}
\membersection{wxHtmlHelpFrame::Create}\label{wxhtmlhelpframecreate}
\func{bool}{Create}{\param{wxWindow* }{parent}, \param{wxWindowID }{id}, \param{const wxString\& }{title = wxEmptyString}, \param{int }{style = wxHF\_DEFAULT\_STYLE}}
Creates the frame. See \helpref{the constructor}{wxhtmlhelpframewxhtmlhelpframe}
for parameters description.
\membersection{wxHtmlHelpFrame::CreateContents}\label{wxhtmlhelpframecreatecontents}
\func{void}{CreateContents}{\param{bool }{show\_progress = false}}
Creates contents panel. (May take some time.)
\membersection{wxHtmlHelpFrame::CreateIndex}\label{wxhtmlhelpframecreateindex}
\func{void}{CreateIndex}{\param{bool }{show\_progress = false}}
Creates index panel. (May take some time.)
\membersection{wxHtmlHelpFrame::CreateSearch}\label{wxhtmlhelpframecreatesearch}
\func{void}{CreateSearch}{\void}
Creates search panel.
\membersection{wxHtmlHelpFrame::Display}\label{wxhtmlhelpframedisplay}
\func{bool}{Display}{\param{const wxString\& }{x}}
\func{bool}{Display}{\param{const int }{id}}
Displays page x. If not found it will give the user the choice of
searching books.
Looking for the page runs in these steps:
\begin{enumerate}\itemsep=0pt
\item try to locate file named x (if x is for example "doc/howto.htm")
\item try to open starting page of book x
\item try to find x in contents (if x is for example "How To ...")
\item try to find x in index (if x is for example "How To ...")
\end{enumerate}
The second form takes numeric ID as the parameter.
(uses extension to MS format, <param name="ID" value=id>)
\pythonnote{The second form of this method is named DisplayId in
wxPython.}
\membersection{wxHtmlHelpFrame::DisplayContents}\label{wxhtmlhelpframedisplaycontents}
\func{bool}{DisplayContents}{\void}
Displays contents panel.
\membersection{wxHtmlHelpFrame::DisplayIndex}\label{wxhtmlhelpframedisplayindex}
\func{bool}{DisplayIndex}{\void}
Displays index panel.
\membersection{wxHtmlHelpFrame::GetData}\label{wxhtmlhelpframegetdata}
\func{wxHtmlHelpData*}{GetData}{\void}
Return wxHtmlHelpData object.
\membersection{wxHtmlHelpFrame::KeywordSearch}\label{wxhtmlhelpframekeywordsearch}
\func{bool}{KeywordSearch}{\param{const wxString\& }{keyword}}
Search for given keyword.
\membersection{wxHtmlHelpFrame::ReadCustomization}\label{wxhtmlhelpframereadcustomization}
\func{void}{ReadCustomization}{\param{wxConfigBase* }{cfg}, \param{const wxString\& }{path = wxEmptyString}}
Reads user's settings for this frame (see \helpref{wxHtmlHelpController::ReadCustomization}{wxhtmlhelpcontrollerreadcustomization})
\membersection{wxHtmlHelpFrame::RefreshLists}\label{wxhtmlhelpframerefreshlists}
\func{void}{RefreshLists}{\param{bool }{show\_progress = false}}
Refresh all panels. This is necessary if a new book was added.
\membersection{wxHtmlHelpFrame::SetTitleFormat}\label{wxhtmlhelpframesettitleformat}
\func{void}{SetTitleFormat}{\param{const wxString\& }{format}}
Sets the frame's title format. {\it format} must contain exactly one "\%s"
(it will be replaced by the page title).
\membersection{wxHtmlHelpFrame::UseConfig}\label{wxhtmlhelpframeuseconfig}
\func{void}{UseConfig}{\param{wxConfigBase* }{config}, \param{const wxString\& }{rootpath = wxEmptyString}}
Add books to search choice panel.
\membersection{wxHtmlHelpFrame::WriteCustomization}\label{wxhtmlhelpframewritecustomization}
\func{void}{WriteCustomization}{\param{wxConfigBase* }{cfg}, \param{const wxString\& }{path = wxEmptyString}}
Saves user's settings for this frame (see \helpref{wxHtmlHelpController::WriteCustomization}{wxhtmlhelpcontrollerwritecustomization}).
\membersection{wxHtmlHelpFrame::AddToolbarButtons}\label{wxhtmlhelpframeaddtoolbarbuttons}
\func{virtual void}{AddToolbarButtons}{\param{wxToolBar *}{toolBar}, \param{int }{style}}
You may override this virtual method to add more buttons into help frame's
toolbar. {\it toolBar} is a pointer to the toolbar and {\it style} is the style
flag as passed to Create method.
wxToolBar::Realize is called immediately after returning from this function.
See {\it samples/html/helpview} for an example.

View File

@@ -1,59 +0,0 @@
\section{\class{wxHtmlLinkInfo}}\label{wxhtmllinkinfo}
This class stores all necessary information about hypertext
links (as represented by {\tt <A>} tag in HTML documents). In
current implementation it stores URL and target frame name.
{\it Note that frames are not currently supported by wxHTML!}
\wxheading{Derived from}
\helpref{wxObject}{wxobject}
\wxheading{Include files}
<wx/html/htmlcell.h>
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxHtmlLinkInfo::wxHtmlLinkInfo}\label{wxhtmllinkinfowxhtmllinkinfo}
\func{}{wxHtmlLinkInfo}{\void}
Default ctor.
\func{}{wxHtmlLinkInfo}{\param{const wxString\& }{href}, \param{const wxString\& }{target = wxEmptyString}}
Construct hypertext link from HREF (aka URL) and TARGET (name of target
frame).
\membersection{wxHtmlLinkInfo::GetEvent}\label{wxhtmllinkinfogetevent}
\func{const wxMouseEvent *}{GetEvent}{\void}
Return pointer to event that generated OnLinkClicked event. Valid
only within \helpref{wxHtmlWindow::OnLinkClicked}{wxhtmlwindowonlinkclicked},
NULL otherwise.
\membersection{wxHtmlLinkInfo::GetHtmlCell}\label{wxhtmllinkinfogethtmlcell}
\func{const wxHtmlCell *}{GetHtmlCell}{\void}
Return pointer to the cell that was clicked. Valid
only within \helpref{wxHtmlWindow::OnLinkClicked}{wxhtmlwindowonlinkclicked},
NULL otherwise.
\membersection{wxHtmlLinkInfo::GetHref}\label{wxhtmllinkinfogethref}
\func{wxString}{GetHref}{\void}
Return {\it HREF} value of the {\tt <A>} tag.
\membersection{wxHtmlLinkInfo::GetTarget}\label{wxhtmllinkinfogettarget}
\func{wxString}{GetTarget}{\void}
Return {\it TARGET} value of the {\tt <A>} tag (this value
is used to specify in which frame should be the page pointed
by \helpref{Href}{wxhtmllinkinfogethref} opened).

View File

@@ -1,82 +0,0 @@
\subsection{Cells and Containers}\label{cells}
This article describes mechanism used by
\helpref{wxHtmlWinParser}{wxhtmlwinparser} and
\helpref{wxHtmlWindow}{wxhtmlwindow} to parse and display HTML documents.
\wxheading{Cells}
You can divide any text (or HTML) into small fragments. Let's call these
fragments {\bf cells}. Cell is for example one word, horizontal line, image
or any other part of document. Each cell has width and height (except special
"magic" cells with zero dimensions - e.g. colour changers or font changers).
See \helpref{wxHtmlCell}{wxhtmlcell}.
\wxheading{Containers}
Container is kind of cell that may contain sub-cells. Its size depends
on number and sizes of its sub-cells (and also depends on width of window).
See \helpref{wxHtmlContainerCell}{wxhtmlcontainercell},
\helpref{wxHtmlCell::Layout}{wxhtmlcelllayout}.
\begin{comment}
% Bitmap is corrupt!
This image shows you cells and containers:
\helponly{\image{}{contbox.bmp}}
\end{comment}
\wxheading{Using Containers in Tag Handler}
\helpref{wxHtmlWinParser}{wxhtmlwinparser} provides a user-friendly way
of managing containers. It is based on the idea of opening and closing containers.
Use \helpref{OpenContainer}{wxhtmlwinparseropencontainer} to open new
a container {\it within an already opened container}. This new container is a
{\it sub-container} of the old one. (If you want to create a new container with
the same depth level you can call {\tt CloseContainer(); OpenContainer();}.)
Use \helpref{CloseContainer}{wxhtmlwinparserclosecontainer} to close the
container. This doesn't create a new container with same depth level but
it returns "control" to the parent container.
\begin{comment}
% Bitmap corrupt!
See explanation:
\helponly{\image{}{cont.bmp}}
\end{comment}
It is clear there must be same number of calls to
OpenContainer as to CloseContainer...
\wxheading{Example}
This code creates a new paragraph (container at same depth level)
with "Hello, world!":
\begin{verbatim}
m_WParser -> CloseContainer();
c = m_WParser -> OpenContainer();
m_WParser -> AddWord("Hello, ");
m_WParser -> AddWord("world!");
m_WParser -> CloseContainer();
m_WParser -> OpenContainer();
\end{verbatim}
\begin{comment}
% Bitmap corrupt!
and here is image of the situation:
\helponly{\image{}{hello.bmp}}
\end{comment}
You can see that there was opened container before running the code. We closed
it, created our own container, then closed our container and opened
new container. The result was that we had {\it same depth level} after
executing. This is general rule that should be followed by tag handlers:
leave depth level of containers unmodified (in other words, number of
OpenContainer and CloseContainer calls should be same within \helpref{HandleTag}{wxhtmltaghandlerhandletag}'s body).

View File

@@ -1,10 +0,0 @@
\subsection{Input Filters}\label{filters}
The wxHTML library provides a mechanism for reading and displaying
files of many different file formats.
\helpref{wxHtmlWindow::LoadPage}{wxhtmlwindowloadpage} can load not
only HTML files but any known file. To make a file type known to wxHtmlWindow
you must create a \helpref{wxHtmlFilter}{wxhtmlfilter} filter and
register it using \helpref{wxHtmlWindow::AddFilter}{wxhtmlwindowaddfilter}.

View File

@@ -1,146 +0,0 @@
\subsection{Tag Handlers}\label{handlers}
The wxHTML library provides architecture of pluggable {\it tag handlers}.
Tag handler is class that understands particular HTML tag (or tags) and is
able to interpret it.
\helpref{wxHtmlWinParser}{wxhtmlwinparser} has static table of {\bf modules}.
Each module contains one or more tag handlers. Each time a new wxHtmlWinParser
object is constructed all modules are scanned and handlers are added
to wxHtmlParser's list of available handlers (note: wxHtmlParser's list
is non-static).
\wxheading{How it works}
Common tag handler's \helpref{HandleTag}{wxhtmltaghandlerhandletag} method
works in four steps:
\begin{enumerate}\itemsep=0pt
\item Save state of parent parser into local variables
\item Change parser state according to tag's params
\item Parse text between the tag and paired ending tag (if present)
\item Restore original parser state
\end{enumerate}
See \helpref{wxHtmlWinParser}{wxhtmlwinparser} for methods for modifying
parser's state. In general you can do things like opening/closing containers,
changing colors, fonts etc.
\wxheading{Providing own tag handlers}
You should create new .cpp file and place following lines into it:
\begin{verbatim}
#include <mod_templ.h>
#include <forcelink.h>
FORCE_LINK_ME(yourmodulefilenamewithoutcpp)
\end{verbatim}
Then you must define handlers and one module.
\wxheading{Tag handlers}
The handler is derived from \helpref{wxHtmlWinTagHandler}{wxhtmlwintaghandler}
(or directly from \helpref{wxHtmlTagHandler}{wxhtmltaghandler})
You can use set of macros to define the handler (see src/html/m\_*.cpp files
for details). Handler definition must start with {\bf TAG\_HANDLER\_BEGIN} macro
and end with {\bf TAG\_HANDLER\_END} macro. I strongly recommend to have a look
at {\it include/wxhtml/mod\_templ.h} file. Otherwise you won't understand
the structure of macros. See macros reference:
{\bf TAG\_HANDLER\_BEGIN}({\it name}, {\it tags})
Starts handler definition. {\it name} is handler identifier (in fact
part of class name), {\it tags} is string containing list of tags
supported by this handler (in uppercase). This macro derives new class from
wxHtmlWinTagHandler and implements it is
\helpref{GetSupportedTags}{wxhtmltaghandlergetsupportedtags} method.
Example: TAG\_HANDLER\_BEGIN(FONTS, "B,I,U,T")
{\bf TAG\_HANDLER\_VARS}
This macro starts block of variables definitions. (Variables are identical
to class attributes.) Example:
\begin{verbatim}
TAG_HANDLER_BEGIN(VARS_ONLY, "CRAZYTAG")
TAG_HANDLER_VARS
int my_int_var;
wxString something_else;
TAG_HANDLER_END(VARS_ONLY)
\end{verbatim}
This macro is used only in rare cases.
{\bf TAG\_HANDLER\_CONSTR}({\it name})
This macro supplies object constructor. {\it name} is same name as the one
from TAG\_HANDLER\_BEGIN macro. Body of constructor follow after
this macro (you must use { and } ). Example:
\begin{verbatim}
TAG_HANDLER_BEGIN(VARS2, "CRAZYTAG")
TAG_HANDLER_VARS
int my_int_var;
TAG_HANDLER_CONSTR(vars2)
{ // !!!!!!
my_int_var = 666;
} // !!!!!!
TAG_HANDLER_END(VARS2)
\end{verbatim}
Never used in wxHTML :-)
{\bf TAG\_HANDLER\_PROC}({\it varib})
This is very important macro. It defines \helpref{HandleTag}{wxhtmltaghandlerhandletag}
method. {\it varib} is name of parameter passed to the method, usually
{\it tag}. Body of method follows after this macro.
Note than you must use { and } ! Example:
\begin{verbatim}
TAG_HANDLER_BEGIN(TITLE, "TITLE")
TAG_HANDLER_PROC(tag)
{
printf("TITLE found...\n");
}
TAG_HANDLER_END(TITLE)
\end{verbatim}
{\bf TAG\_HANDLER\_END}({\it name})
Ends definition of tag handler {\it name}.
\wxheading{Tags Modules}
You can use set of 3 macros TAGS\_MODULE\_BEGIN, TAGS\_MODULE\_ADD and
TAGS\_MODULE\_END to inherit new module from
\helpref{wxHtmlTagsModule}{wxhtmltagsmodule} and to create instance of it.
See macros reference:
{\bf TAGS\_MODULE\_BEGIN}({\it modname})
Begins module definition. {\it modname} is part of class name and must
be unique.
{\bf TAGS\_MODULE\_ADD}({\it name})
Adds the handler to this module. {\it name} is the identifier from
TAG\_HANDLER\_BEGIN.
{\bf TAGS\_MODULE\_END}({\it modname})
Ends the definition of module.
{\bf Example:}
\begin{verbatim}
TAGS_MODULE_BEGIN(Examples)
TAGS_MODULE_ADD(VARS_ONLY)
TAGS_MODULE_ADD(VARS2)
TAGS_MODULE_ADD(TITLE)
TAGS_MODULE_END(Examples)
\end{verbatim}

View File

@@ -1,96 +0,0 @@
\subsection{Help Files Format}\label{helpformat}
wxHTML library uses a reduced version of MS HTML Workshop format.
Tex2RTF can produce these files when generating HTML, if you set {\bf htmlWorkshopFiles} to {\bf true} in
your tex2rtf.ini file.
(See \helpref{wxHtmlHelpController}{wxhtmlhelpcontroller} for help controller description.)
A {\bf book} consists of three files: header file, contents file and index file.
You can make a regular zip archive of these files, plus the HTML and any image files,
for wxHTML (or helpview) to read; and the .zip file can optionally be renamed to .htb.
\wxheading{Header file (.hhp)}
Header file must contain these lines (and may contain additional lines which are ignored) :
\begin{verbatim}
Contents file=<filename.hhc>
Index file=<filename.hhk>
Title=<title of your book>
Default topic=<default page to be displayed.htm>
\end{verbatim}
All filenames (including the Default topic) are relative to the
location of .hhp file.
{\bf Localization note:} In addition, .hhp file may contain line
\begin{verbatim}
Charset=<rfc_charset>
\end{verbatim}
which specifies what charset (e.g. "iso8859\_1") was used in contents
and index files. Please note that this line is incompatible with
MS HTML Help Workshop and it would either silently remove it or complain
with some error. See also
\helpref{Writing non-English applications}{nonenglishoverview}.
\wxheading{Contents file (.hhc)}
Contents file has HTML syntax and it can be parsed by regular HTML parser. It contains exactly one list
({\tt <ul>}....{\tt </ul>} statement):
\begin{verbatim}
<ul>
<li> <object type="text/sitemap">
<param name="Name" value="@topic name@">
<param name="ID" value=@numeric_id@>
<param name="Local" value="@filename.htm@">
</object>
<li> <object type="text/sitemap">
<param name="Name" value="@topic name@">
<param name="ID" value=@numeric_id@>
<param name="Local" value="@filename.htm@">
</object>
...
</ul>
\end{verbatim}
You can modify value attributes of param tags. {\it topic name} is name of chapter/topic as is displayed in
contents, {\it filename.htm} is HTML page name (relative to .hhp file) and {\it numeric\_id} is optional
- it is used only when you use \helpref{wxHtmlHelpController::Display(int)}{wxhtmlhelpcontrollerdisplay}
Items in the list may be nested - one {\tt <li>} statement may contain a {\tt <ul>} sub-statement:
\begin{verbatim}
<ul>
<li> <object type="text/sitemap">
<param name="Name" value="Top node">
<param name="Local" value="top.htm">
</object>
<ul>
<li> <object type="text/sitemap">
<param name="Name" value="subnode in topnode">
<param name="Local" value="subnode1.htm">
</object>
...
</ul>
<li> <object type="text/sitemap">
<param name="Name" value="Another Top">
<param name="Local" value="top2.htm">
</object>
...
</ul>
\end{verbatim}
\wxheading{Index file (.hhk)}
Index files have same format as contents file except that ID params are ignored and sublists are {\bf not}
allowed.

View File

@@ -1,82 +0,0 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Name: htmllbox.tex
%% Purpose: wxHtmlListBox documentation
%% Author: Vadim Zeitlin
%% Modified by:
%% Created: 01.06.03
%% RCS-ID: $Id$
%% Copyright: (c) 2003 Vadim Zeitlin <vadim@wxwindows.org>
%% License: wxWindows license
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{\class{wxHtmlListBox}}\label{wxhtmllistbox}
wxHtmlListBox is an implementation of \helpref{wxVListBox}{wxvlistbox} which
shows HTML content in the listbox rows. This is still an abstract base class
and you will need to derive your own class from it (see htlbox sample for the
example) but you will only need to override a single
\helpref{OnGetItem()}{wxhtmllistboxongetitem} function.
\wxheading{Derived from}
\helpref{wxVListBox}{wxvlistbox}
\wxheading{Include files}
<wx/htmllbox.h>
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxHtmlListBox::wxHtmlListBox}\label{wxhtmllistboxwxhtmllistbox}
\func{}{wxHtmlListBox}{\param{wxWindow* }{parent}, \param{wxWindowID }{id = wxID\_ANY}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{size\_t }{countItems = 0}, \param{long }{style = 0}, \param{const wxString\& }{name = wxVListBoxNameStr}}
Normal constructor which calls \helpref{Create()}{wxhtmllistboxcreate}
internally.
\func{}{wxHtmlListBox}{\void}
Default constructor, you must call \helpref{Create()}{wxhtmllistboxcreate}
later.
\membersection{wxHtmlListBox::\destruct{wxHtmlListBox}}\label{wxhtmllistboxdtor}
\func{}{\destruct{wxHtmlListBox}}{\void}
Destructor cleans up whatever resources we use.
\membersection{wxHtmlListBox::Create}\label{wxhtmllistboxcreate}
\func{bool}{Create}{\param{wxWindow* }{parent}, \param{wxWindowID }{id = wxID\_ANY}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{size\_t }{countItems = 0}, \param{long }{style = 0}, \param{const wxString\& }{name = wxVListBoxNameStr}}
Creates the control and optionally sets the initial number of items in it
(it may also be set or changed later with
\helpref{SetItemCount()}{wxvlistboxsetitemcount}).
There are no special styles defined for wxHtmlListBox, in particular the
wxListBox styles can not be used here.
Returns {\tt true} on success or {\tt false} if the control couldn't be created
\membersection{wxHtmlListBox::OnGetItem}\label{wxhtmllistboxongetitem}
\constfunc{wxString}{OnGetItem}{\param{size\_t }{n}}
This method must be implemented in the derived class and should return
the body (i.e. without {\tt <html>} nor {\tt <body>} tags) of the HTML fragment
for the given item.
\membersection{wxHtmlListBox::OnGetItemMarkup}\label{wxhtmllistboxongetitemmarkup}
\constfunc{wxString}{OnGetItemMarkup}{\param{size\_t }{n}}
This function may be overridden to decorate HTML returned by
\helpref{OnGetItem()}{wxhtmllistboxongetitem}.

View File

@@ -1,13 +0,0 @@
\subsection{HTML Printing}\label{printing}
The wxHTML library provides printing facilities with several levels of complexity.
The easiest way to print an HTML document is to use
\helpref{wxHtmlEasyPrinting class}{wxhtmleasyprinting}. It lets you print HTML documents with only one
command and you don't have to worry about deriving from the wxPrintout class at all. It is only a simple wrapper around the
\helpref{wxHtmlPrintout}{wxhtmlprintout}, normal wxWindows printout class.
And finally there is the low level class \helpref{wxHtmlDCRenderer}{wxhtmldcrenderer} which you can use to
render HTML into a rectangular area on any DC. It supports rendering into multiple rectangles with the same
width. (The most common use of this is placing one rectangle on each page or printing into two columns.)

View File

@@ -1,68 +0,0 @@
\subsection{wxHTML quick start}\label{wxhtmlquickstart}
\wxheading{Displaying HMTL}
First of all, you must include <wx/wxhtml.h>.
Class \helpref{wxHtmlWindow}{wxhtmlwindow} (derived from wxScrolledWindow)
is used to display HTML documents.
It has two important methods: \helpref{LoadPage}{wxhtmlwindowloadpage}
and \helpref{SetPage}{wxhtmlwindowsetpage}.
LoadPage loads and displays HTML file while SetPage displays directly the
passed {\bf string}. See the example:
\begin{verbatim}
mywin -> LoadPage("test.htm");
mywin -> SetPage("<html><body>"
"<h1>Error</h1>"
"Some error occurred :-H)"
"</body></hmtl>");
\end{verbatim}
I think the difference is quite clear.
\wxheading{Displaying Help}
See \helpref{wxHtmlHelpController}{wxhtmlhelpcontroller}.
\wxheading{Setting up wxHtmlWindow}
Because wxHtmlWindow is derived from wxScrolledWindow and not from
wxFrame, it doesn't have visible frame. But the user usually want to see
the title of HTML page displayed somewhere and frame's titlebar is
ideal place for it.
wxHtmlWindow provides 2 methods in order to handle this:
\helpref{SetRelatedFrame}{wxhtmlwindowsetrelatedframe} and
\helpref{SetRelatedStatusBar}{wxhtmlwindowsetrelatedstatusbar}.
See the example:
\begin{verbatim}
html = new wxHtmlWindow(this);
html -> SetRelatedFrame(this, "HTML : %%s");
html -> SetRelatedStatusBar(0);
\end{verbatim}
The first command associates html object with it is parent frame
(this points to wxFrame object there) and sets format of title.
Page title "Hello, world!" will be displayed as "HTML : Hello, world!"
in this example.
The second command sets which frame's status bar should be used to display
browser's messages (such as "Loading..." or "Done" or hypertext links).
\wxheading{Customizing wxHtmlWindow}
You can customize wxHtmlWindow by setting font size, font face and
borders (space between border of window and displayed HTML). Related functions:
\begin{itemize}\itemsep=0pt
\item \helpref{SetFonts}{wxhtmlwindowsetfonts}
\item \helpref{SetBorders}{wxhtmlwindowsetborders}
\item \helpref{ReadCustomization}{wxhtmlwindowreadcustomization}
\item \helpref{WriteCustomization}{wxhtmlwindowwritecustomization}
\end{itemize}
The last two functions are used to store user customization info wxConfig stuff
(for example in the registry under Windows, or in a dotfile under Unix).

View File

@@ -1,148 +0,0 @@
\subsection{Tags supported by wxHTML}\label{htmltagssupported}
wxHTML is not full implementation of HTML standard. Instead, it supports most common tags so that it
is possible to display {\it simple} HTML documents with it. (For example it works fine with pages created
in Netscape Composer or generated by tex2rtf).
Following tables list all tags known to wxHTML, together with supported parameters.
A tag has general form of {\tt <tagname param\_1 param\_2 ... param\_n>} where param\_i is
either {\tt paramname="paramvalue"} or {\tt paramname=paramvalue} - these two are equivalent. Unless stated
otherwise, wxHTML is case-insensitive.
\wxheading{Table of common parameter values}
We will use these substitutions in tags descriptions:
\begin{verbatim}
[alignment] CENTER
LEFT
RIGHT
JUSTIFY
[v_alignment] TOP
BOTTOM
CENTER
[color] HTML 4.0-compliant colour specification
[fontsize] -2
-1
+0
+1
+2
+3
+4
1
2
3
4
5
6
7
[pixels] integer value that represents dimension in pixels
[percent] i%
where i is integer
[url] an URL
[string] text string
[coords] c(1),c(2),c(3),...,c(n)
where c(i) is integer
\end{verbatim}
\wxheading{List of supported tags}
\begin{verbatim}
A NAME=[string]
HREF=[url]
TARGET=[target window spec]
ADDRESS
AREA SHAPE=POLY
SHAPE=CIRCLE
SHAPE=RECT
COORDS=[coords]
HREF=[url]
B
BIG
BLOCKQUOTE
BODY TEXT=[color]
LINK=[color]
BGCOLOR=[color]
BR ALIGN=[alignment]
CENTER
CITE
CODE
DD
DIV ALIGN=[alignment]
DL
DT
EM
FONT COLOR=[color]
SIZE=[fontsize]
FACE=[comma-separated list of facenames]
HR ALIGN=[alignment]
SIZE=[pixels]
WIDTH=[percent|pixels]
NOSHADE
H1
H2
H3
H4
H5
H6
I
IMG SRC=[url]
WIDTH=[pixels]
HEIGHT=[pixels]
ALIGN=TEXTTOP
ALIGN=CENTER
ALIGN=ABSCENTER
ALIGN=BOTTOM
USEMAP=[url]
KBD
LI
MAP NAME=[string]
META HTTP-EQUIV="Content-Type"
CONTENT=[string]
OL
P ALIGN=[alignment]
PRE
SAMP
SMALL
STRIKE
STRONG
TABLE ALIGN=[alignment]
WIDTH=[percent|pixels]
BORDER=[pixels]
VALIGN=[v_alignment]
BGCOLOR=[color]
CELLSPACING=[pixels]
CELLPADDING=[pixels]
TD ALIGN=[alignment]
VALIGN=[v_alignment]
BGCOLOR=[color]
WIDTH=[percent|pixels]
COLSPAN=[pixels]
ROWSPAN=[pixels]
TH ALIGN=[alignment]
VALIGN=[v_alignment]
BGCOLOR=[color]
WIDTH=[percent|pixels]
COLSPAN=[pixels]
ROWSPAN=[pixels]
TITLE
TR ALIGN=[alignment]
VALIGN=[v_alignment]
BGCOLOR=[color]
TT
U
UL
\end{verbatim}

View File

@@ -1,267 +0,0 @@
%
% automatically generated by HelpGen from
% htmlparser.tex at 14/Mar/99 20:13:37
%
\section{\class{wxHtmlParser}}\label{wxhtmlparser}
This class handles the {\bf generic} parsing of HTML document: it scans
the document and divide it into blocks of tags (where one block
consists of beginning and ending tag and of text between these
two tags).
It is independent from wxHtmlWindow and can be used as stand-alone parser
(Julian Smart's idea of speech-only HTML viewer or wget-like utility -
see InetGet sample for example).
It uses system of tag handlers to parse the HTML document. Tag handlers
are not statically shared by all instances but are created for each
wxHtmlParser instance. The reason is that the handler may contain
document-specific temporary data used during parsing (e.g. complicated
structures like tables).
Typically the user calls only the \helpref{Parse}{wxhtmlparserparse} method.
\wxheading{Derived from}
wxObject
\wxheading{Include files}
<wx/html/htmlpars.h>
\wxheading{See also}
\helpref{Cells Overview}{cells},
\helpref{Tag Handlers Overview}{handlers},
\helpref{wxHtmlTag}{wxhtmltag}
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxHtmlParser::wxHtmlParser}\label{wxhtmlparserwxhtmlparser}
\func{}{wxHtmlParser}{\void}
Constructor.
\membersection{wxHtmlParser::AddTag}\label{wxhtmlparseraddtag}
\func{void}{AddTag}{\param{const wxHtmlTag\& }{tag}}
This may (and may not) be overwritten in derived class.
This method is called each time new tag is about to be added.
{\it tag} contains information about the tag. (See \helpref{wxHtmlTag}{wxhtmltag}
for details.)
Default (wxHtmlParser) behaviour is this:
First it finds a handler capable of handling this tag and then it calls
handler's HandleTag method.
\membersection{wxHtmlParser::AddTagHandler}\label{wxhtmlparseraddtaghandler}
\func{virtual void}{AddTagHandler}{\param{wxHtmlTagHandler }{*handler}}
Adds handler to the internal list (\& hash table) of handlers. This
method should not be called directly by user but rather by derived class'
constructor.
This adds the handler to this {\bf instance} of wxHtmlParser, not to
all objects of this class! (Static front-end to AddTagHandler is provided
by wxHtmlWinParser).
All handlers are deleted on object deletion.
\membersection{wxHtmlParser::AddText}\label{wxhtmlparseraddword}
\func{virtual void}{AddWord}{\param{const char* }{txt}}
Must be overwritten in derived class.
This method is called by \helpref{DoParsing}{wxhtmlparserdoparsing}
each time a part of text is parsed. {\it txt} is NOT only one word, it is
substring of input. It is not formatted or preprocessed (so white spaces are
unmodified).
\membersection{wxHtmlParser::DoParsing}\label{wxhtmlparserdoparsing}
\func{void}{DoParsing}{\param{int }{begin\_pos}, \param{int }{end\_pos}}
\func{void}{DoParsing}{\void}
Parses the m\_Source from begin\_pos to end\_pos-1.
(in noparams version it parses whole m\_Source)
\membersection{wxHtmlParser::DoneParser}\label{wxhtmlparserdoneparser}
\func{virtual void}{DoneParser}{\void}
This must be called after DoParsing().
\membersection{wxHtmlParser::GetFS}\label{wxhtmlparsergetfs}
\constfunc{wxFileSystem*}{GetFS}{\void}
Returns pointer to the file system. Because each tag handler has
reference to it is parent parser it can easily request the file by
calling
\begin{verbatim}
wxFSFile *f = m_Parser -> GetFS() -> OpenFile("image.jpg");
\end{verbatim}
\membersection{wxHtmlParser::GetProduct}\label{wxhtmlparsergetproduct}
\func{virtual wxObject*}{GetProduct}{\void}
Returns product of parsing. Returned value is result of parsing
of the document. The type of this result depends on internal
representation in derived parser (but it must be derived from wxObject!).
See wxHtmlWinParser for details.
\membersection{wxHtmlParser::GetSource}\label{wxhtmlparsergetsource}
\func{wxString*}{GetSource}{\void}
Returns pointer to the source being parsed.
\membersection{wxHtmlParser::InitParser}\label{wxhtmlparserinitparser}
\func{virtual void}{InitParser}{\param{const wxString\& }{source}}
Setups the parser for parsing the {\it source} string. (Should be overridden
in derived class)
\membersection{wxHtmlParser::OpenURL}\label{wxhtmlparseropenurl}
\func{virtual wxFSFile*}{OpenURL}{\param{wxHtmlURLType }{type}, \param{const wxString\& }{url}}
Opens given URL and returns {\tt wxFSFile} object that can be used to read data
from it. This method may return NULL in one of two cases: either the URL doesn't
point to any valid resource or the URL is blocked by overridden implementation
of {\it OpenURL} in derived class.
\wxheading{Parameters}
\docparam{type}{Indicates type of the resource. Is one of
\begin{twocollist}\itemsep=0pt
\twocolitem{{\bf wxHTML\_URL\_PAGE}}{Opening a HTML page.}
\twocolitem{{\bf wxHTML\_URL\_IMAGE}}{Opening an image.}
\twocolitem{{\bf wxHTML\_URL\_OTHER}}{Opening a resource that doesn't fall into
any other category.}
\end{twocollist}}
\docparam{url}{URL being opened.}
\wxheading{Notes}
Always use this method in tag handlers instead of {\tt GetFS()->OpenFile()}
because it can block the URL and is thus more secure.
Default behaviour is to call \helpref{wxHtmlWindow::OnOpeningURL}{wxhtmlwindowonopeningurl}
of the associated wxHtmlWindow object (which may decide to block the URL or
redirect it to another one),if there's any, and always open the URL if the
parser is not used with wxHtmlWindow.
Returned {\tt wxFSFile} object is not guaranteed to point to {\it url}, it might
have been redirected!
\membersection{wxHtmlParser::Parse}\label{wxhtmlparserparse}
\func{wxObject*}{Parse}{\param{const wxString\& }{source}}
Proceeds parsing of the document. This is end-user method. You can simply
call it when you need to obtain parsed output (which is parser-specific)
The method does these things:
\begin{enumerate}\itemsep=0pt
\item calls \helpref{InitParser(source)}{wxhtmlparserinitparser}
\item calls \helpref{DoParsing}{wxhtmlparserdoparsing}
\item calls \helpref{GetProduct}{wxhtmlparsergetproduct}
\item calls \helpref{DoneParser}{wxhtmlparserdoneparser}
\item returns value returned by GetProduct
\end{enumerate}
You shouldn't use InitParser, DoParsing, GetProduct or DoneParser directly.
\membersection{wxHtmlParser::PushTagHandler}\label{wxhtmlparserpushtaghandler}
\func{void}{PushTagHandler}{\param{wxHtmlTagHandler* }{handler}, \param{wxString }{tags}}
Forces the handler to handle additional tags
(not returned by \helpref{GetSupportedTags}{wxhtmltaghandlergetsupportedtags}).
The handler should already be added to this parser.
\wxheading{Parameters}
\docparam{handler}{the handler}
\docparam{tags}{List of tags (in same format as GetSupportedTags's return value). The parser
will redirect these tags to {\it handler} (until call to \helpref{PopTagHandler}{wxhtmlparserpoptaghandler}). }
\wxheading{Example}
Imagine you want to parse following pseudo-html structure:
\begin{verbatim}
<myitems>
<param name="one" value="1">
<param name="two" value="2">
</myitems>
<execute>
<param program="text.exe">
</execute>
\end{verbatim}
It is obvious that you cannot use only one tag handler for <param> tag.
Instead you must use context-sensitive handlers for <param> inside <myitems>
and <param> inside <execute>.
This is the preferred solution:
\begin{verbatim}
TAG_HANDLER_BEGIN(MYITEM, "MYITEMS")
TAG_HANDLER_PROC(tag)
{
// ...something...
m_Parser -> PushTagHandler(this, "PARAM");
ParseInner(tag);
m_Parser -> PopTagHandler();
// ...something...
}
TAG_HANDLER_END(MYITEM)
\end{verbatim}
\membersection{wxHtmlParser::PopTagHandler}\label{wxhtmlparserpoptaghandler}
\func{void}{PopTagHandler}{\void}
Restores parser's state before last call to
\helpref{PushTagHandler}{wxhtmlparserpushtaghandler}.
\membersection{wxHtmlParser::SetFS}\label{wxhtmlparsersetfs}
\func{void}{SetFS}{\param{wxFileSystem }{*fs}}
Sets the virtual file system that will be used to request additional
files. (For example {\tt <IMG>} tag handler requests wxFSFile with the
image data.)
\membersection{wxHtmlParser::StopParsing}\label{wxhtmlparserstopparsing}
\func{void}{StopParsing}{\void}
Call this function to interrupt parsing from a tag handler. No more tags
will be parsed afterward. This function may only be called from
\helpref{wxHtmlParser::Parse}{wxhtmlparserparse} or any function called
by it (i.e. from tag handlers).

View File

@@ -1,106 +0,0 @@
%
% automatically generated by HelpGen from
% htmprint.h at 17/Oct/99 12:48:02
%
\section{\class{wxHtmlPrintout}}\label{wxhtmlprintout}
This class serves as printout class for HTML documents.
\wxheading{Derived from}
\helpref{wxPrintout}{wxprintout}
\wxheading{Include files}
<wx/html/htmprint.h>
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxHtmlPrintout::wxHtmlPrintout}\label{wxhtmlprintoutwxhtmlprintout}
\func{}{wxHtmlPrintout}{\param{const wxString\& }{title = "Printout"}}
Constructor.
\membersection{wxHtmlPrintout::SetFonts}\label{wxhtmlprintoutsetfonts}
\func{void}{SetFonts}{\param{wxString }{normal\_face}, \param{wxString }{fixed\_face}, \param{const int }{*sizes = NULL}}
Sets fonts. See \helpref{wxHtmlWindow::SetFonts}{wxhtmlwindowsetfonts} for
detailed description.
\membersection{wxHtmlPrintout::SetFooter}\label{wxhtmlprintoutsetfooter}
\func{void}{SetFooter}{\param{const wxString\& }{footer}, \param{int }{pg = wxPAGE\_ALL}}
Sets page footer.
\wxheading{Parameters}
\docparam{footer}{HTML text to be used as footer. You can use macros in it:
\begin{itemize}
\item @PAGENUM@ is replaced by page number
\item @PAGESCNT@ is replaced by total number of pages
\end{itemize}
}
\docparam{pg}{one of wxPAGE\_ODD, wxPAGE\_EVEN and wxPAGE\_ALL constants.}
\membersection{wxHtmlPrintout::SetHeader}\label{wxhtmlprintoutsetheader}
\func{void}{SetHeader}{\param{const wxString\& }{header}, \param{int }{pg = wxPAGE\_ALL}}
Sets page header.
\wxheading{Parameters}
\docparam{header}{HTML text to be used as header. You can use macros in it:
\begin{itemize}
\item @PAGENUM@ is replaced by page number
\item @PAGESCNT@ is replaced by total number of pages
\end{itemize}
}
\docparam{pg}{one of wxPAGE\_ODD, wxPAGE\_EVEN and wxPAGE\_ALL constants.}
\membersection{wxHtmlPrintout::SetHtmlFile}\label{wxhtmlprintoutsethtmlfile}
\func{void}{SetHtmlFile}{\param{const wxString\& }{htmlfile}}
Prepare the class for printing this HTML {\bf file}. The file may be located on
any virtual file system or it may be normal file.
\membersection{wxHtmlPrintout::SetHtmlText}\label{wxhtmlprintoutsethtmltext}
\func{void}{SetHtmlText}{\param{const wxString\& }{html}, \param{const wxString\& }{basepath = wxEmptyString}, \param{bool }{isdir = true}}
Prepare the class for printing this HTML text.
\wxheading{Parameters}
\docparam{html}{HTML text. (NOT file!)}
\docparam{basepath}{base directory (html string would be stored there if it was in
file). It is used to determine path for loading images, for example.}
\docparam{isdir}{false if basepath is filename, true if it is directory name
(see \helpref{wxFileSystem}{wxfilesystem} for detailed explanation)}
\membersection{wxHtmlPrintout::SetMargins}\label{wxhtmlprintoutsetmargins}
\func{void}{SetMargins}{\param{float }{top = 25.2}, \param{float }{bottom = 25.2}, \param{float }{left = 25.2}, \param{float }{right = 25.2}, \param{float }{spaces = 5}}
Sets margins in millimeters. Defaults to 1 inch for margins and 0.5cm for space
between text and header and/or footer

View File

@@ -1,194 +0,0 @@
%
% automatically generated by HelpGen from
% htmltag.tex at 14/Mar/99 20:13:37
%
\section{\class{wxHtmlTag}}\label{wxhtmltag}
This class represents a single HTML tag.
It is used by \helpref{tag handlers}{handlers}.
\wxheading{Derived from}
wxObject
\wxheading{Include files}
<wx/html/htmltag.h>
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxHtmlTag::wxHtmlTag}\label{wxhtmltagwxhtmltag}
\func{}{wxHtmlTag}{\param{const wxString\& }{source}, \param{int }{pos}, \param{int }{end\_pos}, \param{wxHtmlTagsCache* }{cache}}
Constructor. You will probably never have to construct a wxHtmlTag object
yourself. Feel free to ignore the constructor parameters.
Have a look at src/html/htmlpars.cpp if you're interested in creating it.
\membersection{wxHtmlTag::GetAllParams}\label{wxhtmltaggetallparams}
\constfunc{const wxString\&}{GetAllParams}{\void}
Returns a string containing all parameters.
Example : tag contains {\tt <FONT SIZE=+2 COLOR="\#000000">}. Call to
tag.GetAllParams() would return {\tt SIZE=+2 COLOR="\#000000"}.
\membersection{wxHtmlTag::GetBeginPos}\label{wxhtmltaggetbeginpos}
\constfunc{int}{GetBeginPos}{\void}
Returns beginning position of the text {\it between} this tag and paired
ending tag.
See explanation (returned position is marked with `|'):
\begin{verbatim}
bla bla bla <MYTAG> bla bla internal text</MYTAG> bla bla
|
\end{verbatim}
\membersection{wxHtmlTag::GetEndPos1}\label{wxhtmltaggetendpos1}
\constfunc{int}{GetEndPos1}{\void}
Returns ending position of the text {\it between} this tag and paired
ending tag.
See explanation (returned position is marked with `|'):
\begin{verbatim}
bla bla bla <MYTAG> bla bla internal text</MYTAG> bla bla
|
\end{verbatim}
\membersection{wxHtmlTag::GetEndPos2}\label{wxhtmltaggetendpos2}
\constfunc{int}{GetEndPos2}{\void}
Returns ending position 2 of the text {\it between} this tag and paired
ending tag.
See explanation (returned position is marked with `|'):
\begin{verbatim}
bla bla bla <MYTAG> bla bla internal text</MYTAG> bla bla
|
\end{verbatim}
\membersection{wxHtmlTag::GetName}\label{wxhtmltaggetname}
\constfunc{wxString}{GetName}{\void}
Returns tag's name. The name is always in uppercase and it doesn't contain
'<' or '/' characters. (So the name of {\tt <FONT SIZE=+2>} tag is "FONT"
and name of {\tt </table>} is "TABLE")
\membersection{wxHtmlTag::GetParam}\label{wxhtmltaggetparam}
\constfunc{wxString}{GetParam}{\param{const wxString\& }{par}, \param{bool }{with\_commas = false}}
Returns the value of the parameter. You should check whether the
parameter exists or not (use \helpref{HasParam}{wxhtmltaghasparam}) first.
\wxheading{Parameters}
\docparam{par}{The parameter's name.}
\docparam{with\_commas}{true if you want to get commas as well. See example.}
\wxheading{Example}
\begin{verbatim}
...
/* you have wxHtmlTag variable tag which is equal to
HTML tag <FONT SIZE=+2 COLOR="#0000FF"> */
dummy = tag.GetParam("SIZE");
// dummy == "+2"
dummy = tag.GetParam("COLOR");
// dummy == "#0000FF"
dummy = tag.GetParam("COLOR", true);
// dummy == "\"#0000FF\"" -- see the difference!!
\end{verbatim}
\membersection{wxHtmlTag::GetParamAsColour}\label{wxhtmltaggetparamascolour}
\constfunc{bool}{GetParamAsColour}{\param{const wxString\& }{par}, \param{wxColour *}{clr}}
Interprets tag parameter {\it par} as colour specification and saves its value
into wxColour variable pointed by {\it clr}.
Returns true on success and false if {\it par} is not colour specification or
if the tag has no such parameter.
\membersection{wxHtmlTag::GetParamAsInt}\label{wxhtmltaggetparamasint}
\constfunc{bool}{GetParamAsInt}{\param{const wxString\& }{par}, \param{int *}{value}}
Interprets tag parameter {\it par} as an integer and saves its value
into int variable pointed by {\it value}.
Returns true on success and false if {\it par} is not an integer or
if the tag has no such parameter.
\membersection{wxHtmlTag::HasEnding}\label{wxhtmltaghasending}
\constfunc{bool}{HasEnding}{\void}
Returns true if this tag is paired with ending tag, false otherwise.
See the example of HTML document:
\begin{verbatim}
<html><body>
Hello<p>
How are you?
<p align=center>This is centered...</p>
Oops<br>Oooops!
</body></html>
\end{verbatim}
In this example tags HTML and BODY have ending tags, first P and BR
doesn't have ending tag while the second P has. The third P tag (which
is ending itself) of course doesn't have ending tag.
\membersection{wxHtmlTag::HasParam}\label{wxhtmltaghasparam}
\constfunc{bool}{HasParam}{\param{const wxString\& }{par}}
Returns true if the tag has a parameter of the given name.
Example : {\tt <FONT SIZE=+2 COLOR="\#FF00FF">} has two parameters named
"SIZE" and "COLOR".
\wxheading{Parameters}
\docparam{par}{the parameter you're looking for.}
\membersection{wxHtmlTag::IsEnding}\label{wxhtmltagisending}
\constfunc{bool}{IsEnding}{\void}
Returns true if this tag is ending one.
({\tt </FONT>} is ending tag, {\tt <FONT>} is not)
\membersection{wxHtmlTag::ScanParam}\label{wxhtmltagscanparam}
\constfunc{wxString}{ScanParam}{\param{const wxString\& }{par}, \param{const wxChar *}{format}, \param{void *}{value}}
This method scans the given parameter. Usage is exactly the same as sscanf's
usage except that you don't pass a string but a parameter name as the first
argument
and you can only retrieve one value (i.e. you can use only one "\%" element
in {\it format}).
\wxheading{Parameters}
\docparam{par}{The name of the tag you want to query}
\docparam{format}{scanf()-like format string.}
\docparam{value}{pointer to a variable to store the value in }

View File

@@ -1,91 +0,0 @@
%
% automatically generated by HelpGen from
% htmltaghandler.tex at 18/Mar/99 19:20:29
%
\section{\class{wxHtmlTagHandler}}\label{wxhtmltaghandler}
\wxheading{Derived from}
\helpref{wxObject}{wxobject}
\wxheading{Include files}
<wx/html/htmlpars.h>
\wxheading{See Also}
\helpref{Overview}{handlers},
\helpref{wxHtmlTag}{wxhtmltag}
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxHtmlTagHandler::m\_Parser}\label{wxhtmltaghandlermparser}
{\bf wxHtmlParser* m\_Parser}
This attribute is used to access parent parser. It is protected so that
it can't be accessed by user but can be accessed from derived classes.
\membersection{wxHtmlTagHandler::wxHtmlTagHandler}\label{wxhtmltaghandlerwxhtmltaghandler}
\func{}{wxHtmlTagHandler}{\void}
Constructor.
\membersection{wxHtmlTagHandler::GetSupportedTags}\label{wxhtmltaghandlergetsupportedtags}
\func{virtual wxString}{GetSupportedTags}{\void}
Returns list of supported tags. The list is in uppercase and tags
are delimited by ','. Example : {\tt "I,B,FONT,P" }
\membersection{wxHtmlTagHandler::HandleTag}\label{wxhtmltaghandlerhandletag}
\func{virtual bool}{HandleTag}{\param{const wxHtmlTag\& }{tag}}
This is the core method of each handler. It is called each time
one of supported tags is detected. {\it tag} contains all necessary
info (see \helpref{wxHtmlTag}{wxhtmltag} for details).
\wxheading{Return value}
true if \helpref{ParseInner}{wxhtmltaghandlerparseinner} was called,
false otherwise.
\wxheading{Example}
\begin{verbatim}
bool MyHandler::HandleTag(const wxHtmlTag& tag)
{
...
// change state of parser (e.g. set bold face)
ParseInner(tag);
...
// restore original state of parser
}
\end{verbatim}
You shouldn't call ParseInner if the tag is not paired with an ending one.
\membersection{wxHtmlTagHandler::ParseInner}\label{wxhtmltaghandlerparseinner}
\func{void}{ParseInner}{\param{const wxHtmlTag\& }{tag}}
This method calls parser's \helpref{DoParsing}{wxhtmlparserdoparsing} method
for the string between this tag and the paired ending tag:
\begin{verbatim}
...<A HREF="x.htm">Hello, world!</A>...
\end{verbatim}
In this example, a call to ParseInner (with {\it tag} pointing to A tag)
will parse 'Hello, world!'.
\membersection{wxHtmlTagHandler::SetParser}\label{wxhtmltaghandlersetparser}
\func{virtual void}{SetParser}{\param{wxHtmlParser }{*parser}}
Assigns {\it parser} to this handler. Each {\bf instance} of handler
is guaranteed to be called only from the parser.

View File

@@ -1,43 +0,0 @@
%
% automatically generated by HelpGen from
% htmltagsmodule.tex at 14/Mar/99 20:13:37
\section{\class{wxHtmlTagsModule}}\label{wxhtmltagsmodule}
This class provides easy way of filling wxHtmlWinParser's table of
tag handlers. It is used almost exclusively together with the set of
\helpref{TAGS\_MODULE\_* macros}{handlers}
\wxheading{Derived from}
\helpref{wxModule}{wxmodule}
\wxheading{Include files}
<wx/html/winpars.h>
\wxheading{See Also}
\helpref{Tag Handlers}{handlers},
\helpref{wxHtmlTagHandler}{wxhtmltaghandler},
\helpref{wxHtmlWinTagHandler}{wxhtmlwintaghandler},
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxHtmlTagsModule::FillHandlersTable}\label{wxhtmltagsmodulefillhandlerstable}
\func{virtual void}{FillHandlersTable}{\param{wxHtmlWinParser }{*parser}}
You must override this method. In most common case its body consists
only of lines of the following type:
\begin{verbatim}
parser -> AddTagHandler(new MyHandler);
\end{verbatim}
I recommend using the {\bf TAGS\_MODULE\_*} macros.
\wxheading{Paremeters}
\docparam{parser}{Pointer to the parser that requested tables filling.}

View File

@@ -1,70 +0,0 @@
\section{\class{wxHTTP}}\label{wxhttp}
\wxheading{Derived from}
\helpref{wxProtocol}{wxprotocol}
\wxheading{Include files}
<wx/protocol/http.h>
\wxheading{See also}
\helpref{wxSocketBase}{wxsocketbase}, \helpref{wxURL}{wxurl}
% ----------------------------------------------------------------------------
% Members
% ----------------------------------------------------------------------------
% ----------------------------------------------------------------------------
\membersection{wxHTTP::GetInputStream}\label{wxhttpgetinputstream}
\func{wxInputStream *}{GetInputStream}{\param{const wxString\&}{ path}}
Creates a new input stream on the the specified path. You can use all except the seek
functionality of wxStream. Seek isn't available on all streams. For example,
http or ftp streams doesn't deal with it. Other functions like Tell and SeekI
for this sort of stream.
You will be notified when the EOF is reached by an error.
\wxheading{Note}
You can know the size of the file you are getting using \helpref{wxStreamBase::GetSize()}{wxstreambasegetsize}.
But there is a limitation: as HTTP servers aren't obliged to pass the size of
the file, in some case, you will be returned 0xfffffff by GetSize(). In these
cases, you should use the value returned by \helpref{wxInputStream::LastRead()}{wxinputstreamlastread}:
this value will be 0 when the stream is finished.
\wxheading{Return value}
Returns the initialized stream. You will have to delete it yourself once you
don't use it anymore. The destructor closes the network connection.
The next time you will try to get a file the network connection will have
to be reestablished: but you don't have to take care of this wxHTTP reestablishes it automatically.
\wxheading{See also}
\helpref{wxInputStream}{wxinputstream}
% ----------------------------------------------------------------------------
\membersection{wxHTTP::SetHeader}
\func{void}{SetHeader}{\param{const wxString\&}{ header}, \param{const wxString\&}{ h\_data}}
It sets data of a field to be sent during the next request to the HTTP server. The field
name is specified by {\it header} and the content by {\it h\_data}.
This is a low level function and it assumes that you know what you are doing.
\membersection{wxHTTP::GetHeader}
\func{wxString}{GetHeader}{\param{const wxString\&}{ header}}
Returns the data attached with a field whose name is specified by {\it header}.
If the field doesn't exist, it will return an empty string and not a NULL string.
\wxheading{Note}
The header is not case-sensitive: I mean that "CONTENT-TYPE" and "content-type"
represent the same header.

View File

@@ -1,37 +0,0 @@
%
% automatically generated by HelpGen from
% htmlcell.h at 14/Apr/99 20:12:40
%
\section{\class{wxHtmlWidgetCell}}\label{wxhtmlwidgetcell}
wxHtmlWidgetCell is a class that provides a connection between HTML cells and widgets (an object derived
from wxWindow). You can use it to display things like forms, input boxes etc. in an HTML window.
wxHtmlWidgetCell takes care of resizing and moving window.
\wxheading{Derived from}
\helpref{wxHtmlCell}{wxhtmlcell}
\wxheading{Include files}
<wx/html/htmlcell.h>
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxHtmlWidgetCell::wxHtmlWidgetCell}\label{wxhtmlwidgetcellwxhtmlwidgetcell}
\func{}{wxHtmlWidgetCell}{\param{wxWindow* }{wnd}, \param{int }{w = 0}}
Constructor.
\wxheading{Parameters}
\docparam{wnd}{Connected window. It is parent window {\bf must} be the wxHtmlWindow object within
which it is displayed!}
\docparam{w}{Floating width. If non-zero width of {\it wnd} window is adjusted so that it is
always {\it w} percents of parent container's width. (For example w = 100 means that the window
will always have same width as parent container)}

View File

@@ -1,383 +0,0 @@
%
% automatically generated by HelpGen from
% htmlwindow.tex at 14/Mar/99 20:13:37
%
\section{\class{wxHtmlWindow}}\label{wxhtmlwindow}
wxHtmlWindow is probably the only class you will directly use
unless you want to do something special (like adding new tag
handlers or MIME filters).
The purpose of this class is to display HTML pages (either local
file or downloaded via HTTP protocol) in a window. The width
of the window is constant - given in the constructor - and virtual height
is changed dynamically depending on page size.
Once the window is created you can set its content by calling
\helpref{SetPage(text)}{wxhtmlwindowsetpage},
\helpref{LoadPage(filename)}{wxhtmlwindowloadpage} or
\helpref{LoadFile}{wxhtmlwindowloadfile}.
\wxheading{Note}
wxHtmlWindow uses the \helpref{wxImage}{wximage} class for displaying images.
Don't forget to initialize all image formats you need before loading any page!
(See \helpref{wxInitAllImageHandlers}{wxinitallimagehandlers} and
\helpref{wxImage::AddHandler}{wximageaddhandler}.)
\wxheading{Derived from}
\helpref{wxScrolledWindow}{wxscrolledwindow}
\wxheading{Include files}
<wx/html/htmlwin.h>
\membersection{wxHtmlWindow::wxHtmlWindow}\label{wxhtmlwindowwxhtmlwindow}
\func{}{wxHtmlWindow}{\void}
Default constructor.
\func{}{wxHtmlWindow}{\param{wxWindow }{*parent}, \param{wxWindowID }{id = -1}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{long }{style = wxHW\_SCROLLBAR\_AUTO}, \param{const wxString\& }{name = "htmlWindow"}}
Constructor. The parameters are the same as for the \helpref{wxScrolledWindow}{wxscrolledwindow} constructor.
\wxheading{Parameters}
\docparam{style}{wxHW\_SCROLLBAR\_NEVER, or wxHW\_SCROLLBAR\_AUTO.
Affects the appearance of vertical scrollbar in the window.}
\membersection{wxHtmlWindow::AddFilter}\label{wxhtmlwindowaddfilter}
\func{static void}{AddFilter}{\param{wxHtmlFilter }{*filter}}
Adds \helpref{input filter}{filters} to the static list of available
filters. These filters are present by default:
\begin{itemize}\itemsep=0pt
\item {\tt text/html} MIME type
\item {\tt image/*} MIME types
\item Plain Text filter (this filter is used if no other filter matches)
\end{itemize}
\membersection{wxHtmlWindow::AppendToPage}\label{wxhtmlwindowappendtopage}
\func{bool}{AppendToPage}{\param{const wxString\& }{source}}
Appends HTML fragment to currently displayed text and refreshes the window.
\wxheading{Parameters}
\docparam{source}{HTML code fragment}
\wxheading{Return value}
false if an error occurred, true otherwise.
\membersection{wxHtmlWindow::GetInternalRepresentation}\label{wxhtmlwindowgetinternalrepresentation}
\constfunc{wxHtmlContainerCell*}{GetInternalRepresentation}{\void}
Returns pointer to the top-level container.
See also: \helpref{Cells Overview}{cells},
\helpref{Printing Overview}{printing}
\membersection{wxHtmlWindow::GetOpenedAnchor}\label{wxhtmlwindowgetopenedanchor}
\func{wxString}{GetOpenedAnchor}{\void}
Returns anchor within currently opened page
(see \helpref{GetOpenedPage}{wxhtmlwindowgetopenedpage}).
If no page is opened or if the displayed page wasn't
produced by call to LoadPage, empty string is returned.
\membersection{wxHtmlWindow::GetOpenedPage}\label{wxhtmlwindowgetopenedpage}
\func{wxString}{GetOpenedPage}{\void}
Returns full location of the opened page. If no page is opened or if the displayed page wasn't
produced by call to LoadPage, empty string is returned.
\membersection{wxHtmlWindow::GetOpenedPageTitle}\label{wxhtmlwindowgetopenedpagetitle}
\func{wxString}{GetOpenedPageTitle}{\void}
Returns title of the opened page or wxEmptyString if current page does not contain {\tt <TITLE>} tag.
\membersection{wxHtmlWindow::GetRelatedFrame}\label{wxhtmlwindowgetrelatedframe}
\constfunc{wxFrame*}{GetRelatedFrame}{\void}
Returns the related frame.
\membersection{wxHtmlWindow::HistoryBack}\label{wxhtmlwindowhistoryback}
\func{bool}{HistoryBack}{\void}
Moves back to the previous page. (each page displayed using
\helpref{LoadPage}{wxhtmlwindowloadpage} is stored in history list.)
\membersection{wxHtmlWindow::HistoryCanBack}\label{wxhtmlwindowhistorycanback}
\func{bool}{HistoryCanBack}{\void}
Returns true if it is possible to go back in the history (i.e. HistoryBack()
won't fail).
\membersection{wxHtmlWindow::HistoryCanForward}\label{wxhtmlwindowhistorycanforward}
\func{bool}{HistoryCanForward}{\void}
Returns true if it is possible to go forward in the history (i.e. HistoryBack()
won't fail).
\membersection{wxHtmlWindow::HistoryClear}\label{wxhtmlwindowhistoryclear}
\func{void}{HistoryClear}{\void}
Clears history.
\membersection{wxHtmlWindow::HistoryForward}\label{wxhtmlwindowhistoryforward}
\func{bool}{HistoryForward}{\void}
Moves to next page in history.
\membersection{wxHtmlWindow::LoadFile}\label{wxhtmlwindowloadfile}
\func{virtual bool}{LoadFile}{\param{const wxFileName\& }{filename}}
Loads HTML page from file and displays it.
\wxheading{Return value}
false if an error occurred, true otherwise
\wxheading{See also}
\helpref{LoadPage}{wxhtmlwindowloadpage}
\membersection{wxHtmlWindow::LoadPage}\label{wxhtmlwindowloadpage}
\func{virtual bool}{LoadPage}{\param{const wxString\& }{location}}
Unlike SetPage this function first loads HTML page from {\it location}
and then displays it. See example:
\begin{verbatim}
htmlwin->LoadPage("help/myproject/index.htm");
\end{verbatim}
\wxheading{Parameters}
\docparam{location}{The address of document. See \helpref{wxFileSystem}{wxfilesystem} for details on address format and behaviour of "opener".}
\wxheading{Return value}
false if an error occurred, true otherwise
\wxheading{See also}
\helpref{LoadFile}{wxhtmlwindowloadfile}
\membersection{wxHtmlWindow::OnCellClicked}\label{wxhtmlwindowoncellclicked}
\func{virtual void}{OnCellClicked}{\param{wxHtmlCell }{*cell}, \param{wxCoord }{x}, \param{wxCoord }{y}, \param{const wxMouseEvent\& }{event}}
This method is called when a mouse button is clicked inside wxHtmlWindow.
The default behaviour is to call
\helpref{OnLinkClicked}{wxhtmlwindowonlinkclicked} if the cell contains a
hypertext link.
\wxheading{Parameters}
\docparam{cell}{The cell inside which the mouse was clicked, always a simple
(i.e. non container) cell}
\docparam{x, y}{The logical coordinates of the click point}
\docparam{event}{The mouse event containing other information about the click}
\membersection{wxHtmlWindow::OnCellMouseHover}\label{wxhtmlwindowoncellmousehover}
\func{virtual void}{OnCellMouseHover}{\param{wxHtmlCell }{*cell}, \param{wxCoord }{x}, \param{wxCoord }{y}}
This method is called when a mouse moves over an HTML cell.
\wxheading{Parameters}
\docparam{cell}{The cell inside which the mouse is currently, always a simple
(i.e. non container) cell}
\docparam{x, y}{The logical coordinates of the click point}
\membersection{wxHtmlWindow::OnLinkClicked}\label{wxhtmlwindowonlinkclicked}
\func{virtual void}{OnLinkClicked}{\param{const wxHtmlLinkInfo\& }{link}}
Called when user clicks on hypertext link. Default behaviour is to call
\helpref{LoadPage}{wxhtmlwindowloadpage} and do nothing else.
Also see \helpref{wxHtmlLinkInfo}{wxhtmllinkinfo}.
\membersection{wxHtmlWindow::OnOpeningURL}\label{wxhtmlwindowonopeningurl}
\func{virtual wxHtmlOpeningStatus}{OnOpeningURL}{\param{wxHtmlURLType }{type},\param{const wxString\& }{url}, \param{wxString *}{redirect}}
Called when an URL is being opened (either when the user clicks on a link or
an image is loaded). The URL will be opened only if OnOpeningURL returns
{\tt wxHTML\_OPEN}. This method is called by
\helpref{wxHtmlParser::OpenURL}{wxhtmlparseropenurl}.
You can override OnOpeningURL to selectively block some
URLs (e.g. for security reasons) or to redirect them elsewhere. Default
behaviour is to always return {\tt wxHTML\_OPEN}.
\wxheading{Parameters}
\docparam{type}{Indicates type of the resource. Is one of
\begin{twocollist}\itemsep=0pt
\twocolitem{{\bf wxHTML\_URL\_PAGE}}{Opening a HTML page.}
\twocolitem{{\bf wxHTML\_URL\_IMAGE}}{Opening an image.}
\twocolitem{{\bf wxHTML\_URL\_OTHER}}{Opening a resource that doesn't fall into
any other category.}
\end{twocollist}}
\docparam{url}{URL being opened.}
\docparam{redirect}{Pointer to wxString variable that must be filled with an
URL if OnOpeningURL returns {\tt wxHTML\_REDIRECT}.}
\wxheading{Return value}
\begin{twocollist}\itemsep=0pt
\twocolitem{{\bf wxHTML\_OPEN}}{Open the URL.}
\twocolitem{{\bf wxHTML\_BLOCK}}{Deny access to the URL, \helpref{wxHtmlParser::OpenURL}{wxhtmlparseropenurl} will return NULL.}
\twocolitem{{\bf wxHTML\_REDIRECT}}{Don't open {\it url}, redirect to another
URL. OnOpeningURL must fill {\it *redirect} with the new URL. OnOpeningURL will
be called again on returned URL.}
\end{twocollist}
\membersection{wxHtmlWindow::OnSetTitle}\label{wxhtmlwindowonsettitle}
\func{virtual void}{OnSetTitle}{\param{const wxString\& }{title}}
Called on parsing {\tt <TITLE>} tag.
\membersection{wxHtmlWindow::ReadCustomization}\label{wxhtmlwindowreadcustomization}
\func{virtual void}{ReadCustomization}{\param{wxConfigBase }{*cfg}, \param{wxString }{path = wxEmptyString}}
This reads custom settings from wxConfig. It uses the path 'path'
if given, otherwise it saves info into currently selected path.
The values are stored in sub-path {\tt wxHtmlWindow}
Read values: all things set by SetFonts, SetBorders.
\wxheading{Parameters}
\docparam{cfg}{wxConfig from which you want to read the configuration.}
\docparam{path}{Optional path in config tree. If not given current path is used.}
\membersection{wxHtmlWindow::SetBorders}\label{wxhtmlwindowsetborders}
\func{void}{SetBorders}{\param{int }{b}}
This function sets the space between border of window and HTML contents. See image:
\helponly{\image{}{border.bmp}}
\wxheading{Parameters}
\docparam{b}{indentation from borders in pixels}
\membersection{wxHtmlWindow::SetFonts}\label{wxhtmlwindowsetfonts}
\func{void}{SetFonts}{\param{wxString }{normal\_face}, \param{wxString }{fixed\_face}, \param{const int }{*sizes = NULL}}
This function sets font sizes and faces.
\wxheading{Parameters}
\docparam{normal\_face}{This is face name for normal (i.e. non-fixed) font.
It can be either empty string (then the default face is chosen) or
platform-specific face name. Examples are "helvetica" under Unix or
"Times New Roman" under Windows.}
\docparam{fixed\_face}{The same thing for fixed face ( <TT>..</TT> )}
\docparam{sizes}{This is an array of 7 items of {\it int} type.
The values represent size of font with HTML size from -2 to +4
( <FONT SIZE=-2> to <FONT SIZE=+4> ). Default sizes are used if {\it sizes}
is NULL.}
\wxheading{Defaults}
Default font sizes are defined by constants wxHTML\_FONT\_SIZE\_1,
wxHTML\_FONT\_SIZE\_2, ..., wxHTML\_FONT\_SIZE\_7. Note that they differ among
platforms. Default face names are empty strings.
\membersection{wxHtmlWindow::SetPage}\label{wxhtmlwindowsetpage}
\func{bool}{SetPage}{\param{const wxString\& }{source}}
Sets HTML page and display it. This won't {\bf load} the page!!
It will display the {\it source}. See example:
\begin{verbatim}
htmlwin -> SetPage("<html><body>Hello, world!</body></html>");
\end{verbatim}
If you want to load a document from some location use
\helpref{LoadPage}{wxhtmlwindowloadpage} instead.
\wxheading{Parameters}
\docparam{source}{The HTML document source to be displayed.}
\wxheading{Return value}
false if an error occurred, true otherwise.
\membersection{wxHtmlWindow::SetRelatedFrame}\label{wxhtmlwindowsetrelatedframe}
\func{void}{SetRelatedFrame}{\param{wxFrame* }{frame}, \param{const wxString\& }{format}}
Sets the frame in which page title will be displayed. {\it format} is format of
frame title, e.g. "HtmlHelp : \%s". It must contain exactly one \%s. This
\%s is substituted with HTML page title.
\membersection{wxHtmlWindow::SetRelatedStatusBar}\label{wxhtmlwindowsetrelatedstatusbar}
\func{void}{SetRelatedStatusBar}{\param{int }{bar}}
{\bf After} calling \helpref{SetRelatedFrame}{wxhtmlwindowsetrelatedframe},
this sets statusbar slot where messages will be displayed.
(Default is -1 = no messages.)
\wxheading{Parameters}
\docparam{bar}{statusbar slot number (0..n)}
\membersection{wxHtmlWindow::WriteCustomization}\label{wxhtmlwindowwritecustomization}
\func{virtual void}{WriteCustomization}{\param{wxConfigBase }{*cfg}, \param{wxString }{path = wxEmptyString}}
Saves custom settings into wxConfig. It uses the path 'path'
if given, otherwise it saves info into currently selected path.
Regardless of whether the path is given or not, the function creates sub-path
{\tt wxHtmlWindow}.
Saved values: all things set by SetFonts, SetBorders.
\wxheading{Parameters}
\docparam{cfg}{wxConfig to which you want to save the configuration.}
\docparam{path}{Optional path in config tree. If not given, the current path is used.}

View File

@@ -1,31 +0,0 @@
%
% automatically generated by HelpGen from
% htmlwintaghandler.tex at 14/Mar/99 20:13:37
%
\section{\class{wxHtmlWinTagHandler}}\label{wxhtmlwintaghandler}
This is basically wxHtmlTagHandler except that
it is extended with protected member m\_WParser pointing to
the wxHtmlWinParser object (value of this member is identical
to wxHtmlParser's m\_Parser).
\wxheading{Derived from}
\helpref{wxHtmlTagHandler}{wxhtmltaghandler}
\wxheading{Include files}
<wx/html/winpars.h>
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxHtmlWinTagHandler::m\_WParser}\label{wxhtmlwintaghandlerwxhtmlwintaghandlermwparser}
{\bf wxHtmlWinParser* m\_WParser}
Value of this attribute is identical to value of m\_Parser. The only different
is that m\_WParser points to wxHtmlWinParser object while m\_Parser
points to wxHtmlParser object. (The same object, but overcast.)

View File

@@ -1,298 +0,0 @@
%
% automatically generated by HelpGen from
% htmlwinparser.tex at 14/Mar/99 20:13:37
%
\section{\class{wxHtmlWinParser}}\label{wxhtmlwinparser}
This class is derived from \helpref{wxHtmlParser}{wxhtmlparser} and
its main goal is to parse HTML input so that it can be displayed in
\helpref{wxHtmlWindow}{wxhtmlwindow}. It uses a special
\helpref{wxHtmlWinTagHandler}{wxhtmlwintaghandler}.
\wxheading{Notes}
The product of parsing is a wxHtmlCell (resp. wxHtmlContainer) object.
\wxheading{Derived from}
\helpref{wxHtmlParser}{wxhtmlparser}
\wxheading{Include files}
<wx/html/winpars.h>
\wxheading{See Also}
\helpref{Handlers overview}{handlers}
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxHtmlWinParser::wxHtmlWinParser}\label{wxhtmlwinparserwxhtmlwinparser}
\func{}{wxHtmlWinParser}{\void}
\func{}{wxHtmlWinParser}{\param{wxHtmlWindow }{*wnd}}
Constructor. Don't use the default one, use constructor with
{\it wnd} parameter ({\it wnd} is pointer to associated \helpref{wxHtmlWindow}{wxhtmlwindow})
\membersection{wxHtmlWinParser::AddModule}\label{wxhtmlwinparseraddmodule}
\func{static void}{AddModule}{\param{wxHtmlTagsModule }{*module}}
Adds \helpref{module}{handlers} to the list of wxHtmlWinParser tag handler.
\membersection{wxHtmlWinParser::CloseContainer}\label{wxhtmlwinparserclosecontainer}
\func{wxHtmlContainerCell*}{CloseContainer}{\void}
Closes the container, sets actual container to the parent one
and returns pointer to it (see \helpref{Overview}{cells}).
\membersection{wxHtmlWinParser::CreateCurrentFont}\label{wxhtmlwinparsercreatecurrentfont}
\func{virtual wxFont*}{CreateCurrentFont}{\void}
Creates font based on current setting (see
\helpref{SetFontSize}{wxhtmlwinparsersetfontsize},
\helpref{SetFontBold}{wxhtmlwinparsersetfontbold},
\helpref{SetFontItalic}{wxhtmlwinparsersetfontitalic},
\helpref{SetFontFixed}{wxhtmlwinparsersetfontfixed},
\helpref{SetFontUnderlined}{wxhtmlwinparsersetfontunderlined})
and returns pointer to it.
If the font was already created only a pointer is returned.
\membersection{wxHtmlWinParser::GetActualColor}\label{wxhtmlwinparsergetactualcolor}
\constfunc{const wxColour\&}{GetActualColor}{\void}
Returns actual text colour.
\membersection{wxHtmlWinParser::GetAlign}\label{wxhtmlwinparsergetalign}
\constfunc{int}{GetAlign}{\void}
Returns default horizontal alignment.
\membersection{wxHtmlWinParser::GetCharHeight}\label{wxhtmlwinparsergetcharheight}
\constfunc{int}{GetCharHeight}{\void}
Returns (average) char height in standard font. It is used as DC-independent metrics.
{\bf Note:} This function doesn't return the {\it actual} height. If you want to
know the height of the current font, call {\tt GetDC -> GetCharHeight()}.
\membersection{wxHtmlWinParser::GetCharWidth}\label{wxhtmlwinparsergetcharwidth}
\constfunc{int}{GetCharWidth}{\void}
Returns average char width in standard font. It is used as DC-independent metrics.
{\bf Note:} This function doesn't return the {\it actual} width. If you want to
know the height of the current font, call {\tt GetDC -> GetCharWidth()}
\membersection{wxHtmlWinParser::GetContainer}\label{wxhtmlwinparsergetcontainer}
\constfunc{wxHtmlContainerCell*}{GetContainer}{\void}
Returns pointer to the currently opened container (see \helpref{Overview}{cells}).
Common use:
\begin{verbatim}
m_WParser -> GetContainer() -> InsertCell(new ...);
\end{verbatim}
\membersection{wxHtmlWinParser::GetDC}\label{wxhtmlwinparsergetdc}
\func{wxDC*}{GetDC}{\void}
Returns pointer to the DC used during parsing.
\membersection{wxHtmlWinParser::GetEncodingConverter}\label{wxhtmlwinparsergetencodingconverter}
\constfunc{wxEncodingConverter *}{GetEncodingConverter}{\void}
Returns \helpref{wxEncodingConverter}{wxencodingconverter} class used
to do conversion between \helpref{input encoding}{wxhtmlwinparsergetinputencoding}
and \helpref{output encoding}{wxhtmlwinparsergetoutputencoding}.
\membersection{wxHtmlWinParser::GetFontBold}\label{wxhtmlwinparsergetfontbold}
\constfunc{int}{GetFontBold}{\void}
Returns true if actual font is bold, false otherwise.
\membersection{wxHtmlWinParser::GetFontFace}\label{wxhtmlwinparsergetfontface}
\constfunc{wxString}{GetFontFace}{\void}
Returns actual font face name.
\membersection{wxHtmlWinParser::GetFontFixed}\label{wxhtmlwinparsergetfontfixed}
\constfunc{int}{GetFontFixed}{\void}
Returns true if actual font is fixed face, false otherwise.
\membersection{wxHtmlWinParser::GetFontItalic}\label{wxhtmlwinparsergetfontitalic}
\constfunc{int}{GetFontItalic}{\void}
Returns true if actual font is italic, false otherwise.
\membersection{wxHtmlWinParser::GetFontSize}\label{wxhtmlwinparsergetfontsize}
\constfunc{int}{GetFontSize}{\void}
Returns actual font size (HTML size varies from -2 to +4)
\membersection{wxHtmlWinParser::GetFontUnderlined}\label{wxhtmlwinparsergetfontunderlined}
\constfunc{int}{GetFontUnderlined}{\void}
Returns true if actual font is underlined, false otherwise.
\membersection{wxHtmlWinParser::GetInputEncoding}\label{wxhtmlwinparsergetinputencoding}
\constfunc{wxFontEncoding}{GetInputEncoding}{\void}
Returns input encoding.
\membersection{wxHtmlWinParser::GetLink}\label{wxhtmlwinparsergetlink}
\constfunc{const wxHtmlLinkInfo\&}{GetLink}{\void}
Returns actual hypertext link. (This value has a non-empty
\helpref{Href}{wxhtmllinkinfogethref} string
if the parser is between {\tt <A>} and {\tt </A>} tags,
wxEmptyString otherwise.)
\membersection{wxHtmlWinParser::GetLinkColor}\label{wxhtmlwinparsergetlinkcolor}
\constfunc{const wxColour\&}{GetLinkColor}{\void}
Returns the colour of hypertext link text.
\membersection{wxHtmlWinParser::GetOutputEncoding}\label{wxhtmlwinparsergetoutputencoding}
\constfunc{wxFontEncoding}{GetOutputEncoding}{\void}
Returns output encoding, i.e. closest match to document's input encoding
that is supported by operating system.
\membersection{wxHtmlWinParser::GetWindow}\label{wxhtmlwinparsergetwindow}
\func{wxHtmlWindow*}{GetWindow}{\void}
Returns associated window (wxHtmlWindow). This may be NULL! (You should always
test if it is non-NULL. For example {\tt TITLE} handler sets window
title only if some window is associated, otherwise it does nothing)
\membersection{wxHtmlWinParser::OpenContainer}\label{wxhtmlwinparseropencontainer}
\func{wxHtmlContainerCell*}{OpenContainer}{\void}
Opens new container and returns pointer to it (see \helpref{Overview}{cells}).
\membersection{wxHtmlWinParser::SetActualColor}\label{wxhtmlwinparsersetactualcolor}
\func{void}{SetActualColor}{\param{const wxColour\& }{clr}}
Sets actual text colour. Note: this DOESN'T change the colour!
You must create \helpref{wxHtmlColourCell}{wxhtmlcolourcell} yourself.
\membersection{wxHtmlWinParser::SetAlign}\label{wxhtmlwinparsersetalign}
\func{void}{SetAlign}{\param{int }{a}}
Sets default horizontal alignment (see
\helpref{wxHtmlContainerCell::SetAlignHor}{wxhtmlcontainercellsetalignhor}.)
Alignment of newly opened container is set to this value.
\membersection{wxHtmlWinParser::SetContainer}\label{wxhtmlwinparsersetcontainer}
\func{wxHtmlContainerCell*}{SetContainer}{\param{wxHtmlContainerCell *}{c}}
Allows you to directly set opened container. This is not recommended - you should use OpenContainer
wherever possible.
\membersection{wxHtmlWinParser::SetDC}\label{wxhtmlwinparsersetdc}
\func{virtual void}{SetDC}{\param{wxDC }{*dc}, \param{double }{pixel\_scale = 1.0}}
Sets the DC. This must be called before \helpref{Parse}{wxhtmlparserparse}!
{\it pixel\_scale} can be used when rendering to high-resolution
DCs (e.g. printer) to adjust size of pixel metrics. (Many dimensions in
HTML are given in pixels -- e.g. image sizes. 300x300 image would be only one
inch wide on typical printer. With pixel\_scale = 3.0 it would be 3 inches.)
\membersection{wxHtmlWinParser::SetFontBold}\label{wxhtmlwinparsersetfontbold}
\func{void}{SetFontBold}{\param{int }{x}}
Sets bold flag of actualfont. {\it x} is either true of false.
\membersection{wxHtmlWinParser::SetFontFace}\label{wxhtmlwinparsersetfontface}
\func{void}{SetFontFace}{\param{const wxString\& }{face}}
Sets current font face to {\it face}. This affects either fixed size
font or proportional, depending on context (whether the parser is
inside {\tt <TT>} tag or not).
\membersection{wxHtmlWinParser::SetFontFixed}\label{wxhtmlwinparsersetfontfixed}
\func{void}{SetFontFixed}{\param{int }{x}}
Sets fixed face flag of actualfont. {\it x} is either true of false.
\membersection{wxHtmlWinParser::SetFontItalic}\label{wxhtmlwinparsersetfontitalic}
\func{void}{SetFontItalic}{\param{int }{x}}
Sets italic flag of actualfont. {\it x} is either true of false.
\membersection{wxHtmlWinParser::SetFontSize}\label{wxhtmlwinparsersetfontsize}
\func{void}{SetFontSize}{\param{int }{s}}
Sets actual font size (HTML size varies from 1 to 7)
\membersection{wxHtmlWinParser::SetFontUnderlined}\label{wxhtmlwinparsersetfontunderlined}
\func{void}{SetFontUnderlined}{\param{int }{x}}
Sets underlined flag of actualfont. {\it x} is either true of false.
\membersection{wxHtmlWinParser::SetFonts}\label{wxhtmlwinparsersetfonts}
\func{void}{SetFonts}{\param{wxString }{normal\_face}, \param{wxString }{fixed\_face}, \param{const int }{*sizes = NULL}}
Sets fonts. See \helpref{wxHtmlWindow::SetFonts}{wxhtmlwindowsetfonts} for
detailed description.
\membersection{wxHtmlWinParser::SetInputEncoding}\label{wxhtmlwinparsersetinputencoding}
\func{void}{SetInputEncoding}{\param{wxFontEncoding }{enc}}
Sets input encoding. The parser uses this information to build conversion
tables from document's encoding to some encoding supported by operating
system.
\membersection{wxHtmlWinParser::SetLink}\label{wxhtmlwinparsersetlink}
\func{void}{SetLink}{\param{const wxHtmlLinkInfo\& }{link}}
Sets actual hypertext link. Empty link is represented
by \helpref{wxHtmlLinkInfo}{wxhtmllinkinfo} with {\it Href} equal
to wxEmptyString.
\membersection{wxHtmlWinParser::SetLinkColor}\label{wxhtmlwinparsersetlinkcolor}
\func{void}{SetLinkColor}{\param{const wxColour\& }{clr}}
Sets colour of hypertext link.

View File

@@ -1,73 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: forcelnk.h
// Purpose: see bellow
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
/*
DESCRPITON:
mod_*.cpp files contain handlers for tags. These files are modules - they contain
one wxTagModule class and it's OnInit() method is called from wxApp's init method.
The module is called even if you only link it into the executable, so everything
seems wonderful.
The problem is that we have these modules in LIBRARY and mod_*.cpp files contain
no method nor class which is known out of the module. So the linker won't
link these .o/.obj files into executable because it detected that it is not used
by the program.
To workaround this I introduced set of macros FORCE_LINK_ME and FORCE_LINK. These
macros are generic and are not limited to mod_*.cpp files. You may find them quite
useful somewhere else...
How to use them:
let's suppose you want to always link file foo.cpp and that you have module
always.cpp that is certainly always linked (e.g. the one with main() function
or htmlwin.cpp in wxHtml library).
Place FORCE_LINK_ME(foo) somewhere in foo.cpp and FORCE_LINK(foo) somewhere
in always.cpp
See mod_*.cpp and htmlwin.cpp for example :-)
*/
#ifndef _WX_FORCELNK_H_
#define _WX_FORCELNK_H_
// This must be part of the module you want to force:
#define FORCE_LINK_ME(module_name) \
int _link_dummy_func_##module_name (); \
int _link_dummy_func_##module_name () \
{ \
return 1; \
}
// And this must be somewhere where it certainly will be linked:
#define FORCE_LINK(module_name) \
extern int _link_dummy_func_##module_name (); \
static int _link_dummy_var_##module_name = \
_link_dummy_func_##module_name ();
#define FORCE_WXHTML_MODULES() \
FORCE_LINK(m_layout) \
FORCE_LINK(m_fonts) \
FORCE_LINK(m_image) \
FORCE_LINK(m_list) \
FORCE_LINK(m_dflist) \
FORCE_LINK(m_pre) \
FORCE_LINK(m_hline) \
FORCE_LINK(m_links) \
FORCE_LINK(m_tables) \
FORCE_LINK(m_style)
#endif // _WX_FORCELNK_H_

View File

@@ -1,108 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: helpctrl.h
// Purpose: wxHtmlHelpController
// Notes: Based on htmlhelp.cpp, implementing a monolithic
// HTML Help controller class, by Vaclav Slavik
// Author: Harm van der Heijden and Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) Harm van der Heijden and Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_HELPCTRL_H_
#define _WX_HELPCTRL_H_
#include "wx/defs.h"
#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "helpctrl.h"
#endif
#if wxUSE_WXHTML_HELP
#include "wx/html/helpfrm.h"
#include "wx/helpbase.h"
#define wxID_HTML_HELPFRAME (wxID_HIGHEST + 1)
class WXDLLEXPORT wxHtmlHelpController : public wxHelpControllerBase // wxEvtHandler
{
DECLARE_DYNAMIC_CLASS(wxHtmlHelpController)
public:
wxHtmlHelpController(int style = wxHF_DEFAULT_STYLE);
virtual ~wxHtmlHelpController();
void SetTitleFormat(const wxString& format);
void SetTempDir(const wxString& path) { m_helpData.SetTempDir(path); }
bool AddBook(const wxString& book_url, bool show_wait_msg = FALSE);
bool AddBook(const wxFileName& book_file, bool show_wait_msg = FALSE);
bool Display(const wxString& x);
bool Display(int id);
bool DisplayContents();
bool DisplayIndex();
bool KeywordSearch(const wxString& keyword);
wxHtmlHelpFrame* GetFrame() { return m_helpFrame; }
void UseConfig(wxConfigBase *config, const wxString& rootpath = wxEmptyString);
// Assigns config object to the Ctrl. This config is then
// used in subsequent calls to Read/WriteCustomization of both help
// Ctrl and it's wxHtmlWindow
virtual void ReadCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString);
virtual void WriteCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString);
//// Backward compatibility with wxHelpController API
virtual bool Initialize(const wxString& file, int WXUNUSED(server) ) { return Initialize(file); }
virtual bool Initialize(const wxString& file);
virtual void SetViewer(const wxString& WXUNUSED(viewer), long WXUNUSED(flags) = 0) {}
virtual bool LoadFile(const wxString& file = wxT(""));
virtual bool DisplaySection(int sectionNo);
virtual bool DisplaySection(const wxString& section) { return Display(section); }
virtual bool DisplayBlock(long blockNo) { return DisplaySection(blockNo); }
virtual bool DisplayTextPopup(const wxString& text, const wxPoint& pos);
virtual void SetFrameParameters(const wxString& title,
const wxSize& size,
const wxPoint& pos = wxDefaultPosition,
bool newFrameEachTime = FALSE);
/// Obtains the latest settings used by the help frame and the help
/// frame.
virtual wxFrame *GetFrameParameters(wxSize *size = NULL,
wxPoint *pos = NULL,
bool *newFrameEachTime = NULL);
// Get direct access to help data:
wxHtmlHelpData *GetHelpData() { return &m_helpData; }
virtual bool Quit() ;
virtual void OnQuit() {};
void OnCloseFrame(wxCloseEvent& evt);
// Make the help controller's frame 'modal' if
// needed
void AddGrabIfNeeded();
protected:
virtual wxHtmlHelpFrame* CreateHelpFrame(wxHtmlHelpData *data);
virtual void CreateHelpWindow();
virtual void DestroyHelpWindow();
wxHtmlHelpData m_helpData;
wxHtmlHelpFrame* m_helpFrame;
wxConfigBase * m_Config;
wxString m_ConfigRoot;
wxString m_titleFormat;
int m_FrameStyle;
// DECLARE_EVENT_TABLE()
DECLARE_NO_COPY_CLASS(wxHtmlHelpController)
};
#endif // wxUSE_WXHTML_HELP
#endif // _WX_HELPCTRL_H_

View File

@@ -1,218 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: helpdata.h
// Purpose: wxHtmlHelpData
// Notes: Based on htmlhelp.cpp, implementing a monolithic
// HTML Help controller class, by Vaclav Slavik
// Author: Harm van der Heijden and Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) Harm van der Heijden and Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_HELPDATA_H_
#define _WX_HELPDATA_H_
#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "helpdata.h"
#endif
#include "wx/defs.h"
#if wxUSE_HTML
#include "wx/object.h"
#include "wx/string.h"
#include "wx/filesys.h"
#include "wx/dynarray.h"
#include "wx/font.h"
class WXDLLEXPORT wxHtmlHelpData;
//--------------------------------------------------------------------------------
// helper classes & structs
//--------------------------------------------------------------------------------
class WXDLLEXPORT wxHtmlBookRecord
{
public:
wxHtmlBookRecord(const wxString& bookfile, const wxString& basepath,
const wxString& title, const wxString& start)
{
m_BookFile = bookfile;
m_BasePath = basepath;
m_Title = title;
m_Start = start;
// for debugging, give the contents index obvious default values
m_ContentsStart = m_ContentsEnd = -1;
}
wxString GetBookFile() const { return m_BookFile; }
wxString GetTitle() const { return m_Title; }
wxString GetStart() const { return m_Start; }
wxString GetBasePath() const { return m_BasePath; }
/* SetContentsRange: store in the bookrecord where in the index/contents lists the
* book's records are stored. This to facilitate searching in a specific book.
* This code will have to be revised when loading/removing books becomes dynamic.
* (as opposed to appending only)
* Note that storing index range is pointless, because the index is alphab. sorted. */
void SetContentsRange(int start, int end) { m_ContentsStart = start; m_ContentsEnd = end; }
int GetContentsStart() const { return m_ContentsStart; }
int GetContentsEnd() const { return m_ContentsEnd; }
void SetTitle(const wxString& title) { m_Title = title; }
void SetBasePath(const wxString& path) { m_BasePath = path; }
void SetStart(const wxString& start) { m_Start = start; }
// returns full filename of page (which is part of the book),
// i.e. with book's basePath prepended. If page is already absolute
// path, basePath is _not_ prepended.
wxString GetFullPath(const wxString &page) const;
protected:
wxString m_BookFile;
wxString m_BasePath;
wxString m_Title;
wxString m_Start;
int m_ContentsStart;
int m_ContentsEnd;
};
WX_DECLARE_EXPORTED_OBJARRAY(wxHtmlBookRecord, wxHtmlBookRecArray);
struct wxHtmlContentsItem
{
short int m_Level;
int m_ID;
wxChar* m_Name;
wxChar* m_Page;
wxHtmlBookRecord *m_Book;
// returns full filename of m_Page, i.e. with book's basePath prepended
wxString GetFullPath() const { return m_Book->GetFullPath(m_Page); }
};
//------------------------------------------------------------------------------
// wxHtmlSearchEngine
// This class takes input streams and scans them for occurence
// of keyword(s)
//------------------------------------------------------------------------------
class WXDLLEXPORT wxHtmlSearchEngine : public wxObject
{
public:
wxHtmlSearchEngine() : wxObject() {m_Keyword = NULL; }
~wxHtmlSearchEngine() {if (m_Keyword) delete[] m_Keyword; }
// Sets the keyword we will be searching for
virtual void LookFor(const wxString& keyword, bool case_sensitive, bool whole_words_only);
// Scans the stream for the keyword.
// Returns TRUE if the stream contains keyword, fALSE otherwise
virtual bool Scan(const wxFSFile& file);
private:
wxChar *m_Keyword;
bool m_CaseSensitive;
bool m_WholeWords;
DECLARE_NO_COPY_CLASS(wxHtmlSearchEngine)
};
// State information of a search action. I'd have prefered to make this a nested
// class inside wxHtmlHelpData, but that's against coding standards :-(
// Never construct this class yourself, obtain a copy from
// wxHtmlHelpData::PrepareKeywordSearch(const wxString& key)
class WXDLLEXPORT wxHtmlSearchStatus
{
public:
// constructor; supply wxHtmlHelpData ptr, the keyword and (optionally) the
// title of the book to search. By default, all books are searched.
wxHtmlSearchStatus(wxHtmlHelpData* base, const wxString& keyword,
bool case_sensitive, bool whole_words_only,
const wxString& book = wxEmptyString);
bool Search(); // do the next iteration
bool IsActive() { return m_Active; }
int GetCurIndex() { return m_CurIndex; }
int GetMaxIndex() { return m_MaxIndex; }
const wxString& GetName() { return m_Name; }
wxHtmlContentsItem* GetContentsItem() { return m_ContentsItem; }
private:
wxHtmlHelpData* m_Data;
wxHtmlSearchEngine m_Engine;
wxString m_Keyword, m_Name;
wxChar *m_LastPage;
wxHtmlContentsItem* m_ContentsItem;
bool m_Active; // search is not finished
int m_CurIndex; // where we are now
int m_MaxIndex; // number of files we search
// For progress bar: 100*curindex/maxindex = % complete
DECLARE_NO_COPY_CLASS(wxHtmlSearchStatus)
};
class WXDLLEXPORT wxHtmlHelpData : public wxObject
{
DECLARE_DYNAMIC_CLASS(wxHtmlHelpData)
friend class wxHtmlSearchStatus;
public:
wxHtmlHelpData();
~wxHtmlHelpData();
// Sets directory where temporary files are stored.
// These temp files are index & contents file in binary (much faster to read)
// form. These files are NOT deleted on program's exit.
void SetTempDir(const wxString& path);
// Adds new book. 'book' is location of .htb file (stands for "html book").
// See documentation for details on its format.
// Returns success.
bool AddBook(const wxString& book);
bool AddBookParam(const wxFSFile& bookfile,
wxFontEncoding encoding,
const wxString& title, const wxString& contfile,
const wxString& indexfile = wxEmptyString,
const wxString& deftopic = wxEmptyString,
const wxString& path = wxEmptyString);
// Some accessing stuff:
// returns URL of page on basis of (file)name
wxString FindPageByName(const wxString& page);
// returns URL of page on basis of MS id
wxString FindPageById(int id);
const wxHtmlBookRecArray& GetBookRecArray() { return m_BookRecords; }
wxHtmlContentsItem* GetContents() { return m_Contents; }
int GetContentsCnt() { return m_ContentsCnt; }
wxHtmlContentsItem* GetIndex() { return m_Index; }
int GetIndexCnt() { return m_IndexCnt; }
protected:
wxString m_TempPath;
wxHtmlBookRecArray m_BookRecords;
// each book has one record in this array:
wxHtmlContentsItem* m_Contents;
int m_ContentsCnt;
wxHtmlContentsItem* m_Index; // list of all available books and pages.
int m_IndexCnt; // list of index items
protected:
// Imports .hhp files (MS HTML Help Workshop)
bool LoadMSProject(wxHtmlBookRecord *book, wxFileSystem& fsys,
const wxString& indexfile, const wxString& contentsfile);
// Reads binary book
bool LoadCachedBook(wxHtmlBookRecord *book, wxInputStream *f);
// Writes binary book
bool SaveCachedBook(wxHtmlBookRecord *book, wxOutputStream *f);
DECLARE_NO_COPY_CLASS(wxHtmlHelpData)
};
#endif
#endif

View File

@@ -1,239 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: helpfrm.h
// Purpose: wxHtmlHelpFrame
// Notes: Based on htmlhelp.cpp, implementing a monolithic
// HTML Help controller class, by Vaclav Slavik
// Author: Harm van der Heijden and Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) Harm van der Heijden and Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_HELPFRM_H_
#define _WX_HELPFRM_H_
#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "helpfrm.h"
#endif
#include "wx/defs.h"
#if wxUSE_WXHTML_HELP
#include "wx/html/helpdata.h"
#include "wx/window.h"
#include "wx/frame.h"
#include "wx/config.h"
#include "wx/splitter.h"
#include "wx/notebook.h"
#include "wx/listbox.h"
#include "wx/choice.h"
#include "wx/combobox.h"
#include "wx/checkbox.h"
#include "wx/stattext.h"
#include "wx/html/htmlwin.h"
#include "wx/html/htmprint.h"
class WXDLLEXPORT wxButton;
class WXDLLEXPORT wxTextCtrl;
// style flags for the Help Frame
#define wxHF_TOOLBAR 0x0001
#define wxHF_CONTENTS 0x0002
#define wxHF_INDEX 0x0004
#define wxHF_SEARCH 0x0008
#define wxHF_BOOKMARKS 0x0010
#define wxHF_OPEN_FILES 0x0020
#define wxHF_PRINT 0x0040
#define wxHF_FLAT_TOOLBAR 0x0080
#define wxHF_MERGE_BOOKS 0x0100
#define wxHF_ICONS_BOOK 0x0200
#define wxHF_ICONS_BOOK_CHAPTER 0x0400
#define wxHF_ICONS_FOLDER 0x0000 // this is 0 since it is default
#define wxHF_DEFAULT_STYLE (wxHF_TOOLBAR | wxHF_CONTENTS | \
wxHF_INDEX | wxHF_SEARCH | \
wxHF_BOOKMARKS | wxHF_PRINT)
//compatibility:
#define wxHF_OPENFILES wxHF_OPEN_FILES
#define wxHF_FLATTOOLBAR wxHF_FLAT_TOOLBAR
#define wxHF_DEFAULTSTYLE wxHF_DEFAULT_STYLE
struct wxHtmlHelpFrameCfg
{
int x, y, w, h;
long sashpos;
bool navig_on;
};
class WXDLLEXPORT wxHelpControllerBase;
class WXDLLEXPORT wxHtmlHelpFrame : public wxFrame
{
DECLARE_DYNAMIC_CLASS(wxHtmlHelpFrame)
public:
wxHtmlHelpFrame(wxHtmlHelpData* data = NULL) { Init(data); }
wxHtmlHelpFrame(wxWindow* parent, wxWindowID wxWindowID,
const wxString& title = wxEmptyString,
int style = wxHF_DEFAULT_STYLE, wxHtmlHelpData* data = NULL);
bool Create(wxWindow* parent, wxWindowID id, const wxString& title = wxEmptyString,
int style = wxHF_DEFAULT_STYLE);
~wxHtmlHelpFrame();
wxHtmlHelpData* GetData() { return m_Data; }
wxHelpControllerBase* GetController() const { return m_helpController; }
void SetController(wxHelpControllerBase* controller) { m_helpController = controller; }
// Sets format of title of the frame. Must contain exactly one "%s"
// (for title of displayed HTML page)
void SetTitleFormat(const wxString& format);
// Displays page x. If not found it will offect the user a choice of
// searching books.
// Looking for the page runs in these steps:
// 1. try to locate file named x (if x is for example "doc/howto.htm")
// 2. try to open starting page of book x
// 3. try to find x in contents (if x is for example "How To ...")
// 4. try to find x in index (if x is for example "How To ...")
bool Display(const wxString& x);
// Alternative version that works with numeric ID.
// (uses extension to MS format, <param name="ID" value=id>, see docs)
bool Display(const int id);
// Displays help window and focuses contents.
bool DisplayContents();
// Displays help window and focuses index.
bool DisplayIndex();
// Searches for keyword. Returns TRUE and display page if found, return
// FALSE otherwise
// Syntax of keyword is Altavista-like:
// * words are separated by spaces
// (but "\"hello world\"" is only one world "hello world")
// * word may be pretended by + or -
// (+ : page must contain the word ; - : page can't contain the word)
// * if there is no + or - before the word, + is default
bool KeywordSearch(const wxString& keyword);
void UseConfig(wxConfigBase *config, const wxString& rootpath = wxEmptyString)
{
m_Config = config;
m_ConfigRoot = rootpath;
ReadCustomization(config, rootpath);
}
// Saves custom settings into cfg config. it will use the path 'path'
// if given, otherwise it will save info into currently selected path.
// saved values : things set by SetFonts, SetBorders.
void ReadCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString);
void WriteCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString);
// call this to let wxHtmlHelpFrame know page changed
void NotifyPageChanged();
// Refreshes Contents and Index tabs
void RefreshLists();
protected:
void Init(wxHtmlHelpData* data = NULL);
// Adds items to m_Contents tree control
void CreateContents();
// Adds items to m_IndexList
void CreateIndex();
// Add books to search choice panel
void CreateSearch();
// Add custom buttons to toolbar
virtual void AddToolbarButtons(wxToolBar *toolBar, int style);
// Displays options dialog (fonts etc.)
virtual void OptionsDialog();
void OnToolbar(wxCommandEvent& event);
void OnContentsSel(wxTreeEvent& event);
void OnIndexSel(wxCommandEvent& event);
void OnIndexFind(wxCommandEvent& event);
void OnIndexAll(wxCommandEvent& event);
void OnSearchSel(wxCommandEvent& event);
void OnSearch(wxCommandEvent& event);
void OnBookmarksSel(wxCommandEvent& event);
void OnCloseWindow(wxCloseEvent& event);
void OnActivate(wxActivateEvent& event);
#ifdef __WXMAC__
void OnClose(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
#endif
// Images:
enum {
IMG_Book = 0,
IMG_Folder,
IMG_Page
};
protected:
wxHtmlHelpData* m_Data;
bool m_DataCreated; // m_Data created by frame, or supplied?
wxString m_TitleFormat; // title of the help frame
// below are various pointers to GUI components
wxHtmlWindow *m_HtmlWin;
wxSplitterWindow *m_Splitter;
wxPanel *m_NavigPan;
wxNotebook *m_NavigNotebook;
wxTreeCtrl *m_ContentsBox;
wxTextCtrl *m_IndexText;
wxButton *m_IndexButton;
wxButton *m_IndexButtonAll;
wxListBox *m_IndexList;
wxTextCtrl *m_SearchText;
wxButton *m_SearchButton;
wxListBox *m_SearchList;
wxChoice *m_SearchChoice;
wxStaticText *m_IndexCountInfo;
wxCheckBox *m_SearchCaseSensitive;
wxCheckBox *m_SearchWholeWords;
wxComboBox *m_Bookmarks;
wxArrayString m_BookmarksNames, m_BookmarksPages;
wxHtmlHelpFrameCfg m_Cfg;
wxConfigBase *m_Config;
wxString m_ConfigRoot;
// pagenumbers of controls in notebook (usually 0,1,2)
int m_ContentsPage;
int m_IndexPage;
int m_SearchPage;
// lists of available fonts (used in options dialog)
wxArrayString *m_NormalFonts, *m_FixedFonts;
int m_FontSize; // 0,1,2 = small,medium,big
wxString m_NormalFace, m_FixedFace;
bool m_UpdateContents;
#if wxUSE_PRINTING_ARCHITECTURE
wxHtmlEasyPrinting *m_Printer;
#endif
wxHashTable *m_PagesHash;
wxHelpControllerBase* m_helpController;
int m_hfStyle;
DECLARE_EVENT_TABLE()
DECLARE_NO_COPY_CLASS(wxHtmlHelpFrame)
};
#endif // wxUSE_WXHTML_HELP
#endif

View File

@@ -1,382 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: htmlcell.h
// Purpose: wxHtmlCell class is used by wxHtmlWindow/wxHtmlWinParser
// as a basic visual element of HTML page
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_HTMLCELL_H_
#define _WX_HTMLCELL_H_
#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "htmlcell.h"
#endif
#include "wx/defs.h"
#if wxUSE_HTML
#include "wx/html/htmltag.h"
#include "wx/html/htmldefs.h"
#include "wx/window.h"
class WXDLLEXPORT wxHtmlLinkInfo;
class WXDLLEXPORT wxHtmlCell;
class WXDLLEXPORT wxHtmlContainerCell;
//--------------------------------------------------------------------------------
// wxHtmlCell
// Internal data structure. It represents fragments of parsed HTML
// page - a word, picture, table, horizontal line and so on.
// It is used by wxHtmlWindow to represent HTML page in memory.
//--------------------------------------------------------------------------------
class WXDLLEXPORT wxHtmlCell : public wxObject
{
public:
wxHtmlCell();
virtual ~wxHtmlCell();
void SetParent(wxHtmlContainerCell *p) {m_Parent = p;}
wxHtmlContainerCell *GetParent() const {return m_Parent;}
int GetPosX() const {return m_PosX;}
int GetPosY() const {return m_PosY;}
int GetWidth() const {return m_Width;}
int GetHeight() const {return m_Height;}
int GetDescent() const {return m_Descent;}
const wxString& GetId() const { return m_id; }
void SetId(const wxString& id) { m_id = id; }
// returns the link associated with this cell. The position is position within
// the cell so it varies from 0 to m_Width, from 0 to m_Height
virtual wxHtmlLinkInfo* GetLink(int WXUNUSED(x) = 0, int WXUNUSED(y) = 0) const
{ return m_Link; }
// members access methods
wxHtmlCell *GetNext() const {return m_Next;}
// members writing methods
virtual void SetPos(int x, int y) {m_PosX = x, m_PosY = y;}
void SetLink(const wxHtmlLinkInfo& link);
void SetNext(wxHtmlCell *cell) {m_Next = cell;}
// 1. adjust cell's width according to the fact that maximal possible width is w.
// (this has sense when working with horizontal lines, tables etc.)
// 2. prepare layout (=fill-in m_PosX, m_PosY (and sometime m_Height) members)
// = place items to fit window, according to the width w
virtual void Layout(int w);
// renders the cell
virtual void Draw(wxDC& WXUNUSED(dc), int WXUNUSED(x), int WXUNUSED(y), int WXUNUSED(view_y1), int WXUNUSED(view_y2)) {}
// proceed drawing actions in case the cell is not visible (scrolled out of screen).
// This is needed to change fonts, colors and so on
virtual void DrawInvisible(wxDC& WXUNUSED(dc), int WXUNUSED(x), int WXUNUSED(y)) {}
// This method returns pointer to the FIRST cell for that
// the condition
// is true. It first checks if the condition is true for this
// cell and then calls m_Next->Find(). (Note: it checks
// all subcells if the cell is container)
// Condition is unique condition identifier (see htmldefs.h)
// (user-defined condition IDs should start from 10000)
// and param is optional parameter
// Example : m_Cell->Find(wxHTML_COND_ISANCHOR, "news");
// returns pointer to anchor news
virtual const wxHtmlCell* Find(int condition, const void* param) const;
// This function is called when mouse button is clicked over the cell.
//
// Parent is pointer to wxHtmlWindow that generated the event
// HINT: if this handling is not enough for you you should use
// wxHtmlWidgetCell
virtual void OnMouseClick(wxWindow *parent, int x, int y, const wxMouseEvent& event);
// This method used to adjust pagebreak position. The parameter is
// variable that contains y-coordinate of page break (= horizontal line that
// should not be crossed by words, images etc.). If this cell cannot be divided
// into two pieces (each one on another page) then it moves the pagebreak
// few pixels up.
//
// Returned value : true if pagebreak was modified, false otherwise
// Usage : while (container->AdjustPagebreak(&p)) {}
virtual bool AdjustPagebreak(int *pagebreak, int *known_pagebreaks = NULL, int number_of_pages = 0) const;
// Sets cell's behaviour on pagebreaks (see AdjustPagebreak). Default
// is true - the cell can be split on two pages
void SetCanLiveOnPagebreak(bool can) { m_CanLiveOnPagebreak = can; }
// Returns y-coordinates that contraint the cell, i.e. left is highest
// and right lowest coordinate such that the cell lays between then.
// Note: this method does not return meaningful values if you haven't
// called Layout() before!
virtual void GetHorizontalConstraints(int *left, int *right) const;
// Returns true for simple == terminal cells, i.e. not composite ones.
// This if for internal usage only and may disappear in future versions!
virtual bool IsTerminalCell() const { return TRUE; }
// Find the terminal cell inside this cell at the given position (relative
// to this cell)
//
// Returns NULL if not found
virtual wxHtmlCell *FindCellByPos(wxCoord x, wxCoord y) const;
protected:
wxHtmlCell *m_Next;
// pointer to the next cell
wxHtmlContainerCell *m_Parent;
// pointer to parent cell
long m_Width, m_Height, m_Descent;
// dimensions of fragment
// m_Descent is used to position text&images..
long m_PosX, m_PosY;
// position where the fragment is drawn
wxHtmlLinkInfo *m_Link;
// destination address if this fragment is hypertext link, NULL otherwise
bool m_CanLiveOnPagebreak;
// true if this cell can be placed on pagebreak, false otherwise
wxString m_id;
// unique identifier of the cell, generated from "id" property of tags
DECLARE_NO_COPY_CLASS(wxHtmlCell)
};
//--------------------------------------------------------------------------------
// Inherited cells:
//--------------------------------------------------------------------------------
//--------------------------------------------------------------------------------
// wxHtmlWordCell
// Single word in input stream.
//--------------------------------------------------------------------------------
class WXDLLEXPORT wxHtmlWordCell : public wxHtmlCell
{
public:
wxHtmlWordCell(const wxString& word, wxDC& dc);
void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2);
protected:
wxString m_Word;
};
//--------------------------------------------------------------------------------
// wxHtmlContainerCell
// Container - it contains other cells. Basic of layout algorithm.
//--------------------------------------------------------------------------------
class WXDLLEXPORT wxHtmlContainerCell : public wxHtmlCell
{
public:
wxHtmlContainerCell(wxHtmlContainerCell *parent);
~wxHtmlContainerCell();
virtual void Layout(int w);
virtual void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2);
virtual void DrawInvisible(wxDC& dc, int x, int y);
virtual bool AdjustPagebreak(int *pagebreak, int *known_pagebreaks = NULL, int number_of_pages = 0) const;
// insert cell at the end of m_Cells list
void InsertCell(wxHtmlCell *cell);
// sets horizontal/vertical alignment
void SetAlignHor(int al) {m_AlignHor = al; m_LastLayout = -1;}
int GetAlignHor() const {return m_AlignHor;}
void SetAlignVer(int al) {m_AlignVer = al; m_LastLayout = -1;}
int GetAlignVer() const {return m_AlignVer;}
// sets left-border indentation. units is one of wxHTML_UNITS_* constants
// what is combination of wxHTML_INDENT_*
void SetIndent(int i, int what, int units = wxHTML_UNITS_PIXELS);
// returns the indentation. ind is one of wxHTML_INDENT_* constants
int GetIndent(int ind) const;
// returns type of value returned by GetIndent(ind)
int GetIndentUnits(int ind) const;
// sets alignment info based on given tag's params
void SetAlign(const wxHtmlTag& tag);
// sets floating width adjustment
// (examples : 32 percent of parent container,
// -15 pixels percent (this means 100 % - 15 pixels)
void SetWidthFloat(int w, int units) {m_WidthFloat = w; m_WidthFloatUnits = units; m_LastLayout = -1;}
void SetWidthFloat(const wxHtmlTag& tag, double pixel_scale = 1.0);
// sets minimal height of this container.
void SetMinHeight(int h, int align = wxHTML_ALIGN_TOP) {m_MinHeight = h; m_MinHeightAlign = align; m_LastLayout = -1;}
void SetBackgroundColour(const wxColour& clr) {m_UseBkColour = TRUE; m_BkColour = clr;}
// returns background colour (of wxNullColour if none set), so that widgets can
// adapt to it:
wxColour GetBackgroundColour();
void SetBorder(const wxColour& clr1, const wxColour& clr2) {m_UseBorder = TRUE; m_BorderColour1 = clr1, m_BorderColour2 = clr2;}
virtual wxHtmlLinkInfo* GetLink(int x = 0, int y = 0) const;
virtual const wxHtmlCell* Find(int condition, const void* param) const;
virtual void OnMouseClick(wxWindow *parent, int x, int y, const wxMouseEvent& event);
virtual void GetHorizontalConstraints(int *left, int *right) const;
// returns pointer to the first cell in container or NULL
wxHtmlCell* GetFirstCell() const {return m_Cells;}
// see comment in wxHtmlCell about this method
virtual bool IsTerminalCell() const { return FALSE; }
virtual wxHtmlCell *FindCellByPos(wxCoord x, wxCoord y) const;
protected:
int m_IndentLeft, m_IndentRight, m_IndentTop, m_IndentBottom;
// indentation of subcells. There is always m_Indent pixels
// big space between given border of the container and the subcells
// it m_Indent < 0 it is in PERCENTS, otherwise it is in pixels
int m_MinHeight, m_MinHeightAlign;
// minimal height.
wxHtmlCell *m_Cells, *m_LastCell;
// internal cells, m_Cells points to the first of them, m_LastCell to the last one.
// (LastCell is needed only to speed-up InsertCell)
int m_AlignHor, m_AlignVer;
// alignment horizontal and vertical (left, center, right)
int m_WidthFloat, m_WidthFloatUnits;
// width float is used in adjustWidth
bool m_UseBkColour;
wxColour m_BkColour;
// background color of this container
bool m_UseBorder;
wxColour m_BorderColour1, m_BorderColour2;
// borders color of this container
int m_LastLayout;
// if != -1 then call to Layout may be no-op
// if previous call to Layout has same argument
DECLARE_NO_COPY_CLASS(wxHtmlContainerCell)
};
//--------------------------------------------------------------------------------
// wxHtmlColourCell
// Color changer.
//--------------------------------------------------------------------------------
class WXDLLEXPORT wxHtmlColourCell : public wxHtmlCell
{
public:
wxHtmlColourCell(const wxColour& clr, int flags = wxHTML_CLR_FOREGROUND) : wxHtmlCell() {m_Colour = clr; m_Flags = flags;}
virtual void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2);
virtual void DrawInvisible(wxDC& dc, int x, int y);
protected:
wxColour m_Colour;
unsigned m_Flags;
};
//--------------------------------------------------------------------------------
// wxHtmlFontCell
// Sets actual font used for text rendering
//--------------------------------------------------------------------------------
class WXDLLEXPORT wxHtmlFontCell : public wxHtmlCell
{
public:
wxHtmlFontCell(wxFont *font) : wxHtmlCell() { m_Font = (*font); }
virtual void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2);
virtual void DrawInvisible(wxDC& dc, int x, int y);
protected:
wxFont m_Font;
};
//--------------------------------------------------------------------------------
// wxHtmlwidgetCell
// This cell is connected with wxWindow object
// You can use it to insert windows into HTML page
// (buttons, input boxes etc.)
//--------------------------------------------------------------------------------
class WXDLLEXPORT wxHtmlWidgetCell : public wxHtmlCell
{
public:
// !!! wnd must have correct parent!
// if w != 0 then the m_Wnd has 'floating' width - it adjust
// it's width according to parent container's width
// (w is percent of parent's width)
wxHtmlWidgetCell(wxWindow *wnd, int w = 0);
~wxHtmlWidgetCell() { m_Wnd->Destroy(); }
virtual void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2);
virtual void DrawInvisible(wxDC& dc, int x, int y);
virtual void Layout(int w);
protected:
wxWindow* m_Wnd;
int m_WidthFloat;
// width float is used in adjustWidth (it is in percents)
DECLARE_NO_COPY_CLASS(wxHtmlWidgetCell)
};
//--------------------------------------------------------------------------------
// wxHtmlLinkInfo
// Internal data structure. It represents hypertext link
//--------------------------------------------------------------------------------
class WXDLLEXPORT wxHtmlLinkInfo : public wxObject
{
public:
wxHtmlLinkInfo() : wxObject()
{ m_Href = m_Target = wxEmptyString; m_Event = NULL, m_Cell = NULL; }
wxHtmlLinkInfo(const wxString& href, const wxString& target = wxEmptyString) : wxObject()
{ m_Href = href; m_Target = target; m_Event = NULL, m_Cell = NULL; }
wxHtmlLinkInfo(const wxHtmlLinkInfo& l) : wxObject()
{ m_Href = l.m_Href, m_Target = l.m_Target, m_Event = l.m_Event;
m_Cell = l.m_Cell; }
wxHtmlLinkInfo& operator=(const wxHtmlLinkInfo& l)
{ m_Href = l.m_Href, m_Target = l.m_Target, m_Event = l.m_Event;
m_Cell = l.m_Cell; return *this; }
void SetEvent(const wxMouseEvent *e) { m_Event = e; }
void SetHtmlCell(const wxHtmlCell *e) { m_Cell = e; }
wxString GetHref() const { return m_Href; }
wxString GetTarget() const { return m_Target; }
const wxMouseEvent* GetEvent() const { return m_Event; }
const wxHtmlCell* GetHtmlCell() const { return m_Cell; }
private:
wxString m_Href, m_Target;
const wxMouseEvent *m_Event;
const wxHtmlCell *m_Cell;
};
#endif // wxUSE_HTML
#endif // _WX_HTMLCELL_H_

View File

@@ -1,157 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: htmldefs.h
// Purpose: constants for wxhtml library
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_HTMLDEFS_H_
#define _WX_HTMLDEFS_H_
#include "wx/defs.h"
#if wxUSE_HTML
//--------------------------------------------------------------------------------
// ALIGNMENTS
// Describes alignment of text etc. in containers
//--------------------------------------------------------------------------------
#define wxHTML_ALIGN_LEFT 0x0000
#define wxHTML_ALIGN_RIGHT 0x0002
#define wxHTML_ALIGN_JUSTIFY 0x0010
#define wxHTML_ALIGN_TOP 0x0004
#define wxHTML_ALIGN_BOTTOM 0x0008
#define wxHTML_ALIGN_CENTER 0x0001
//--------------------------------------------------------------------------------
// COLOR MODES
// Used by wxHtmlColourCell to determine clr of what is changing
//--------------------------------------------------------------------------------
#define wxHTML_CLR_FOREGROUND 0x0001
#define wxHTML_CLR_BACKGROUND 0x0002
//--------------------------------------------------------------------------------
// UNITS
// Used to specify units
//--------------------------------------------------------------------------------
#define wxHTML_UNITS_PIXELS 0x0001
#define wxHTML_UNITS_PERCENT 0x0002
//--------------------------------------------------------------------------------
// INDENTS
// Used to specify indetation relatives
//--------------------------------------------------------------------------------
#define wxHTML_INDENT_LEFT 0x0010
#define wxHTML_INDENT_RIGHT 0x0020
#define wxHTML_INDENT_TOP 0x0040
#define wxHTML_INDENT_BOTTOM 0x0080
#define wxHTML_INDENT_HORIZONTAL wxHTML_INDENT_LEFT | wxHTML_INDENT_RIGHT
#define wxHTML_INDENT_VERTICAL wxHTML_INDENT_TOP | wxHTML_INDENT_BOTTOM
#define wxHTML_INDENT_ALL wxHTML_INDENT_VERTICAL | wxHTML_INDENT_HORIZONTAL
//--------------------------------------------------------------------------------
// FIND CONDITIONS
// Identifiers of wxHtmlCell's Find() conditions
//--------------------------------------------------------------------------------
#define wxHTML_COND_ISANCHOR 1
// Finds the anchor of 'param' name (pointer to wxString).
#define wxHTML_COND_ISIMAGEMAP 2
// Finds imagemap of 'param' name (pointer to wxString).
// (used exclusively by m_image.cpp)
#define wxHTML_COND_USER 10000
// User-defined conditions should start from this number
//--------------------------------------------------------------------------------
// INTERNALS
// wxHTML internal constants
//--------------------------------------------------------------------------------
#define wxHTML_SCROLL_STEP 16
/* size of one scroll step of wxHtmlWindow in pixels */
#define wxHTML_BUFLEN 1024
/* size of temporary buffer used during parsing */
#define wxHTML_REALLOC_STEP 32
/* steps of array reallocation */
#define wxHTML_PRINT_MAX_PAGES 999
/* maximum number of pages printable via html printing */
/* default font sizes */
#ifdef __WXMSW__
#define wxHTML_FONT_SIZE_1 7
#define wxHTML_FONT_SIZE_2 8
#define wxHTML_FONT_SIZE_3 10
#define wxHTML_FONT_SIZE_4 12
#define wxHTML_FONT_SIZE_5 16
#define wxHTML_FONT_SIZE_6 22
#define wxHTML_FONT_SIZE_7 30
#elif defined(__WXMAC__)
#define wxHTML_FONT_SIZE_1 9
#define wxHTML_FONT_SIZE_2 12
#define wxHTML_FONT_SIZE_3 14
#define wxHTML_FONT_SIZE_4 18
#define wxHTML_FONT_SIZE_5 24
#define wxHTML_FONT_SIZE_6 30
#define wxHTML_FONT_SIZE_7 36
#else
#define wxHTML_FONT_SIZE_1 10
#define wxHTML_FONT_SIZE_2 12
#define wxHTML_FONT_SIZE_3 14
#define wxHTML_FONT_SIZE_4 16
#define wxHTML_FONT_SIZE_5 19
#define wxHTML_FONT_SIZE_6 24
#define wxHTML_FONT_SIZE_7 32
#endif
#if WXWIN_COMPATIBILITY_2
#define HTML_ALIGN_LEFT wxHTML_ALIGN_LEFT
#define HTML_ALIGN_RIGHT wxHTML_ALIGN_RIGHT
#define HTML_ALIGN_TOP wxHTML_ALIGN_TOP
#define HTML_ALIGN_BOTTOM wxHTML_ALIGN_BOTTOM
#define HTML_ALIGN_CENTER wxHTML_ALIGN_CENTER
#define HTML_CLR_FOREGROUND wxHTML_CLR_FOREGROUND
#define HTML_CLR_BACKGROUND wxHTML_CLR_BACKGROUND
#define HTML_UNITS_PIXELS wxHTML_UNITS_PIXELS
#define HTML_UNITS_PERCENT wxHTML_UNITS_PERCENT
#define HTML_INDENT_LEFT wxHTML_INDENT_LEFT
#define HTML_INDENT_RIGHT wxHTML_INDENT_RIGHT
#define HTML_INDENT_TOP wxHTML_INDENT_TOP
#define HTML_INDENT_BOTTOM wxHTML_INDENT_BOTTOM
#define HTML_INDENT_HORIZONTAL wxHTML_INDENT_HORIZONTAL
#define HTML_INDENT_VERTICAL wxHTML_INDENT_VERTICAL
#define HTML_INDENT_ALL wxHTML_INDENT_ALL
#define HTML_COND_ISANCHOR wxHTML_COND_ISANCHOR
#define HTML_COND_ISIMAGEMAP wxHTML_COND_ISIMAGEMAP
#define HTML_COND_USER wxHTML_COND_USER
#endif
#endif
#endif

View File

@@ -1,87 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: htmlfilt.h
// Purpose: filters
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_HTMLFILT_H_
#define _WX_HTMLFILT_H_
#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "htmlfilt.h"
#endif
#include "wx/defs.h"
#if wxUSE_HTML
#include "wx/filesys.h"
//--------------------------------------------------------------------------------
// wxHtmlFilter
// This class is input filter. It can "translate" files
// in non-HTML format to HTML format
// interface to access certain
// kinds of files (HTPP, FTP, local, tar.gz etc..)
//--------------------------------------------------------------------------------
class WXDLLEXPORT wxHtmlFilter : public wxObject
{
DECLARE_ABSTRACT_CLASS(wxHtmlFilter)
public:
wxHtmlFilter() : wxObject() {}
virtual ~wxHtmlFilter() {}
// returns TRUE if this filter is able to open&read given file
virtual bool CanRead(const wxFSFile& file) const = 0;
// Reads given file and returns HTML document.
// Returns empty string if opening failed
virtual wxString ReadFile(const wxFSFile& file) const = 0;
};
//--------------------------------------------------------------------------------
// wxHtmlFilterPlainText
// This filter is used as default filter if no other can
// be used (= uknown type of file). It is used by
// wxHtmlWindow itself.
//--------------------------------------------------------------------------------
class WXDLLEXPORT wxHtmlFilterPlainText : public wxHtmlFilter
{
DECLARE_DYNAMIC_CLASS(wxHtmlFilterPlainText)
public:
virtual bool CanRead(const wxFSFile& file) const;
virtual wxString ReadFile(const wxFSFile& file) const;
};
//--------------------------------------------------------------------------------
// wxHtmlFilterHTML
// filter for text/html
//--------------------------------------------------------------------------------
class wxHtmlFilterHTML : public wxHtmlFilter
{
DECLARE_DYNAMIC_CLASS(wxHtmlFilterHTML)
public:
virtual bool CanRead(const wxFSFile& file) const;
virtual wxString ReadFile(const wxFSFile& file) const;
};
#endif // wxUSE_HTML
#endif // _WX_HTMLFILT_H_

View File

@@ -1,278 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: htmlpars.h
// Purpose: wxHtmlParser class (generic parser)
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_HTMLPARS_H_
#define _WX_HTMLPARS_H_
#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "htmlpars.h"
#endif
#include "wx/defs.h"
#if wxUSE_HTML
#include "wx/html/htmltag.h"
#include "wx/filesys.h"
#include "wx/hash.h"
#include "wx/fontenc.h"
class WXDLLEXPORT wxMBConv;
class WXDLLEXPORT wxHtmlParser;
class WXDLLEXPORT wxHtmlTagHandler;
class WXDLLEXPORT wxHtmlEntitiesParser;
class wxHtmlTextPieces;
class wxHtmlParserState;
enum wxHtmlURLType
{
wxHTML_URL_PAGE,
wxHTML_URL_IMAGE,
wxHTML_URL_OTHER
};
// This class handles generic parsing of HTML document : it scans
// the document and divide it into blocks of tags (where one block
// consists of starting and ending tag and of text between these
// 2 tags.
class WXDLLEXPORT wxHtmlParser : public wxObject
{
DECLARE_ABSTRACT_CLASS(wxHtmlParser)
public:
wxHtmlParser();
virtual ~wxHtmlParser();
// Sets the class which will be used for opening files
void SetFS(wxFileSystem *fs) { m_FS = fs; }
wxFileSystem* GetFS() const { return m_FS; }
// Opens file if the parser is allowed to open given URL (may be forbidden
// for security reasons)
virtual wxFSFile *OpenURL(wxHtmlURLType type, const wxString& url) const;
// You can simply call this method when you need parsed output.
// This method does these things:
// 1. call InitParser(source);
// 2. call DoParsing();
// 3. call GetProduct(); (it's return value is then returned)
// 4. call DoneParser();
wxObject* Parse(const wxString& source);
// Sets the source. This must be called before running Parse() method.
virtual void InitParser(const wxString& source);
// This must be called after Parse().
virtual void DoneParser();
// May be called during parsing to immediately return from Parse().
virtual void StopParsing() { m_stopParsing = TRUE; }
// Parses the m_Source from begin_pos to end_pos-1.
// (in noparams version it parses whole m_Source)
void DoParsing(int begin_pos, int end_pos);
void DoParsing();
// Returns pointer to the tag at parser's current position
wxHtmlTag *GetCurrentTag() const { return m_CurTag; }
// Returns product of parsing
// Returned value is result of parsing of the part. The type of this result
// depends on internal representation in derived parser
// (see wxHtmlWinParser for details).
virtual wxObject* GetProduct() = 0;
// adds handler to the list & hash table of handlers.
virtual void AddTagHandler(wxHtmlTagHandler *handler);
// Forces the handler to handle additional tags (not returned by GetSupportedTags).
// The handler should already be in use by this parser.
// Example: you want to parse following pseudo-html structure:
// <myitems>
// <it name="one" value="1">
// <it name="two" value="2">
// </myitems>
// <it> This last it has different meaning, we don't want it to be parsed by myitems handler!
// handler can handle only 'myitems' (e.g. it's GetSupportedTags returns "MYITEMS")
// you can call PushTagHandler(handler, "IT") when you find <myitems>
// and call PopTagHandler() when you find </myitems>
void PushTagHandler(wxHtmlTagHandler *handler, wxString tags);
// Restores state before last call to PushTagHandler
void PopTagHandler();
wxString* GetSource() {return &m_Source;}
void SetSource(const wxString& src);
// Sets HTML source and remebers current parser's state so that it can
// later be restored. This is useful for on-line modifications of
// HTML source (for example, <pre> handler replaces spaces with &nbsp;
// and newlines with <br>)
virtual void SetSourceAndSaveState(const wxString& src);
// Restores parser's state from stack or returns FALSE if the stack is
// empty
virtual bool RestoreState();
// Parses HTML string 'markup' and extracts charset info from <meta> tag
// if present. Returns empty string if the tag is missing.
// For wxHTML's internal use.
static wxString ExtractCharsetInformation(const wxString& markup);
protected:
// DOM structure
void CreateDOMTree();
void DestroyDOMTree();
void CreateDOMSubTree(wxHtmlTag *cur,
int begin_pos, int end_pos,
wxHtmlTagsCache *cache);
// Adds text to the output.
// This is called from Parse() and must be overriden in derived classes.
// txt is not guaranteed to be only one word. It is largest continuous part of text
// (= not broken by tags)
// NOTE : using char* because of speed improvements
virtual void AddText(const wxChar* txt) = 0;
// Adds tag and proceeds it. Parse() may (and usually is) called from this method.
// This is called from Parse() and may be overriden.
// Default behavior is that it looks for proper handler in m_Handlers. The tag is
// ignored if no hander is found.
// Derived class is *responsible* for filling in m_Handlers table.
virtual void AddTag(const wxHtmlTag& tag);
// Returns entity parser object, used to substitute HTML &entities;
wxHtmlEntitiesParser *GetEntitiesParser() const { return m_entitiesParser; }
protected:
// DOM tree:
wxHtmlTag *m_CurTag;
wxHtmlTag *m_Tags;
wxHtmlTextPieces *m_TextPieces;
size_t m_CurTextPiece;
wxString m_Source;
wxHtmlParserState *m_SavedStates;
// handlers that handle particular tags. The table is accessed by
// key = tag's name.
// This attribute MUST be filled by derived class otherwise it would
// be empty and no tags would be recognized
// (see wxHtmlWinParser for details about filling it)
// m_HandlersHash is for random access based on knowledge of tag name (BR, P, etc.)
// it may (and often does) contain more references to one object
// m_HandlersList is list of all handlers and it is guaranteed to contain
// only one reference to each handler instance.
wxList m_HandlersList;
wxHashTable m_HandlersHash;
DECLARE_NO_COPY_CLASS(wxHtmlParser)
// class for opening files (file system)
wxFileSystem *m_FS;
// handlers stack used by PushTagHandler and PopTagHandler
wxList *m_HandlersStack;
// entity parse
wxHtmlEntitiesParser *m_entitiesParser;
// flag indicating that the parser should stop
bool m_stopParsing;
};
// This class (and derived classes) cooperates with wxHtmlParser.
// Each recognized tag is passed to handler which is capable
// of handling it. Each tag is handled in 3 steps:
// 1. Handler will modifies state of parser
// (using it's public methods)
// 2. Parser parses source between starting and ending tag
// 3. Handler restores original state of the parser
class WXDLLEXPORT wxHtmlTagHandler : public wxObject
{
DECLARE_ABSTRACT_CLASS(wxHtmlTagHandler)
public:
wxHtmlTagHandler() : wxObject () { m_Parser = NULL; }
// Sets the parser.
// NOTE : each _instance_ of handler is guaranteed to be called
// only by one parser. This means you don't have to care about
// reentrancy.
virtual void SetParser(wxHtmlParser *parser)
{ m_Parser = parser; }
// Returns list of supported tags. The list is in uppercase and
// tags are delimited by ','.
// Example : "I,B,FONT,P"
// is capable of handling italic, bold, font and paragraph tags
virtual wxString GetSupportedTags() = 0;
// This is hadling core method. It does all the Steps 1-3.
// To process step 2, you can call ParseInner()
// returned value : TRUE if it called ParseInner(),
// FALSE etherwise
virtual bool HandleTag(const wxHtmlTag& tag) = 0;
protected:
// parses input between beginning and ending tag.
// m_Parser must be set.
void ParseInner(const wxHtmlTag& tag)
{ m_Parser->DoParsing(tag.GetBeginPos(), tag.GetEndPos1()); }
wxHtmlParser *m_Parser;
DECLARE_NO_COPY_CLASS(wxHtmlTagHandler)
};
// This class is used to parse HTML entities in strings. It can handle
// both named entities and &#xxxx entries where xxxx is Unicode code.
class WXDLLEXPORT wxHtmlEntitiesParser : public wxObject
{
DECLARE_DYNAMIC_CLASS(wxHtmlEntitiesParser)
public:
wxHtmlEntitiesParser();
virtual ~wxHtmlEntitiesParser();
// Sets encoding of output string.
// Has no effect if wxUSE_WCHAR_T==0 or wxUSE_UNICODE==1
void SetEncoding(wxFontEncoding encoding);
// Parses entities in input and replaces them with respective characters
// (with respect to output encoding)
wxString Parse(const wxString& input);
// Returns character for given entity or 0 if the enity is unknown
wxChar GetEntityChar(const wxString& entity);
// Returns character that represents given Unicode code
#if wxUSE_UNICODE
wxChar GetCharForCode(unsigned code) { return (wxChar)code; }
#else
wxChar GetCharForCode(unsigned code);
#endif
protected:
#if wxUSE_WCHAR_T && !wxUSE_UNICODE
wxMBConv *m_conv;
wxFontEncoding m_encoding;
#endif
DECLARE_NO_COPY_CLASS(wxHtmlEntitiesParser)
};
#endif
#endif // _WX_HTMLPARS_H_

View File

@@ -1,64 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: htmlprep.h
// Purpose: HTML processor
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 2001 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_HTMLPREP_H_
#define _WX_HTMLPREP_H_
#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "htmlproc.h"
// (implementation is in htmlwin.cpp, there's no htmlprep.cpp!)
#endif
#include "wx/defs.h"
#if wxUSE_HTML
#include "wx/string.h"
// Priority of preprocessor in the chain. The higher, the earlier it is used
enum
{
wxHTML_PRIORITY_DONTCARE = 128, // if the order doesn't matter, use this
// priority
wxHTML_PRIORITY_SYSTEM = 256 // >=256 is only for wxHTML's internals
};
// Classes derived from this class serve as simple text processors for
// wxHtmlWindow. wxHtmlWindow runs HTML markup through all registered
// processors before displaying it, thus allowing for on-the-fly
// modifications of the markup.
class WXDLLEXPORT wxHtmlProcessor : public wxObject
{
DECLARE_ABSTRACT_CLASS(wxHtmlProcessor)
public:
wxHtmlProcessor() : wxObject(), m_enabled(TRUE) {}
virtual ~wxHtmlProcessor() {}
// Process input text and return processed result
virtual wxString Process(const wxString& text) const = 0;
// Return priority value of this processor. The higher, the sooner
// is the processor applied to the text.
virtual int GetPriority() const { return wxHTML_PRIORITY_DONTCARE; }
// Enable/disable the processor. wxHtmlWindow won't use a disabled
// processor even if it is in its processors queue.
virtual void Enable(bool enable = TRUE) { m_enabled = enable; }
bool IsEnabled() const { return m_enabled; }
protected:
bool m_enabled;
};
#endif // wxUSE_HTML
#endif // _WX_HTMLPROC_H_

View File

@@ -1,158 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: htmltag.h
// Purpose: wxHtmlTag class (represents single tag)
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_HTMLTAG_H_
#define _WX_HTMLTAG_H_
#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "htmltag.h"
#endif
#include "wx/defs.h"
#if wxUSE_HTML
#include "wx/object.h"
class WXDLLEXPORT wxColour;
class WXDLLEXPORT wxHtmlEntitiesParser;
//-----------------------------------------------------------------------------
// wxHtmlTagsCache
// - internal wxHTML class, do not use!
//-----------------------------------------------------------------------------
struct wxHtmlCacheItem;
class WXDLLEXPORT wxHtmlTagsCache : public wxObject
{
DECLARE_DYNAMIC_CLASS(wxHtmlTagsCache)
private:
wxHtmlCacheItem *m_Cache;
int m_CacheSize;
int m_CachePos;
public:
wxHtmlTagsCache() : wxObject() {m_CacheSize = 0; m_Cache = NULL;}
wxHtmlTagsCache(const wxString& source);
~wxHtmlTagsCache() {free(m_Cache);}
// Finds parameters for tag starting at at and fills the variables
void QueryTag(int at, int* end1, int* end2);
DECLARE_NO_COPY_CLASS(wxHtmlTagsCache)
};
//--------------------------------------------------------------------------------
// wxHtmlTag
// This represents single tag. It is used as internal structure
// by wxHtmlParser.
//--------------------------------------------------------------------------------
class WXDLLEXPORT wxHtmlTag : public wxObject
{
DECLARE_CLASS(wxHtmlTag)
protected:
// constructs wxHtmlTag object based on HTML tag.
// The tag begins (with '<' character) at position pos in source
// end_pos is position where parsing ends (usually end of document)
wxHtmlTag(wxHtmlTag *parent,
const wxString& source, int pos, int end_pos,
wxHtmlTagsCache *cache,
wxHtmlEntitiesParser *entParser);
friend class wxHtmlParser;
public:
~wxHtmlTag();
wxHtmlTag *GetParent() const {return m_Parent;}
wxHtmlTag *GetFirstSibling() const;
wxHtmlTag *GetLastSibling() const;
wxHtmlTag *GetChildren() const { return m_FirstChild; }
wxHtmlTag *GetPreviousSibling() const { return m_Prev; }
wxHtmlTag *GetNextSibling() const {return m_Next; }
// Return next tag, as if tree had been flattened
wxHtmlTag *GetNextTag() const;
// Returns tag's name in uppercase.
inline wxString GetName() const {return m_Name;}
// Returns TRUE if the tag has given parameter. Parameter
// should always be in uppercase.
// Example : <IMG SRC="test.jpg"> HasParam("SRC") returns TRUE
bool HasParam(const wxString& par) const;
// Returns value of the param. Value is in uppercase unless it is
// enclosed with "
// Example : <P align=right> GetParam("ALIGN") returns (RIGHT)
// <P IMG SRC="WhaT.jpg"> GetParam("SRC") returns (WhaT.jpg)
// (or ("WhaT.jpg") if with_commas == TRUE)
wxString GetParam(const wxString& par, bool with_commas = FALSE) const;
// Convenience functions:
bool GetParamAsColour(const wxString& par, wxColour *clr) const;
bool GetParamAsInt(const wxString& par, int *clr) const;
// Scans param like scanf() functions family does.
// Example : ScanParam("COLOR", "\"#%X\"", &clr);
// This is always with with_commas=FALSE
// Returns number of scanned values
// (like sscanf() does)
// NOTE: unlike scanf family, this function only accepts
// *one* parameter !
int ScanParam(const wxString& par, const wxChar *format, void *param) const;
// Returns string containing all params.
wxString GetAllParams() const;
#if WXWIN_COMPATIBILITY_2_2
// return TRUE if this is ending tag (</something>) or FALSE
// if it isn't (<something>)
inline bool IsEnding() const {return FALSE;}
#endif
// return TRUE if this there is matching ending tag
inline bool HasEnding() const {return m_End1 >= 0;}
// returns beginning position of _internal_ block of text
// See explanation (returned value is marked with *):
// bla bla bla <MYTAG>* bla bla intenal text</MYTAG> bla bla
inline int GetBeginPos() const {return m_Begin;}
// returns ending position of _internal_ block of text.
// bla bla bla <MYTAG> bla bla intenal text*</MYTAG> bla bla
inline int GetEndPos1() const {return m_End1;}
// returns end position 2 :
// bla bla bla <MYTAG> bla bla internal text</MYTAG>* bla bla
inline int GetEndPos2() const {return m_End2;}
private:
wxString m_Name;
int m_Begin, m_End1, m_End2;
wxArrayString m_ParamNames, m_ParamValues;
// DOM tree relations:
wxHtmlTag *m_Next;
wxHtmlTag *m_Prev;
wxHtmlTag *m_FirstChild, *m_LastChild;
wxHtmlTag *m_Parent;
DECLARE_NO_COPY_CLASS(wxHtmlTag)
};
#endif
#endif // _WX_HTMLTAG_H_

View File

@@ -1,284 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: htmlwin.h
// Purpose: wxHtmlWindow class for parsing & displaying HTML
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_HTMLWIN_H_
#define _WX_HTMLWIN_H_
#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "htmlwin.h"
#endif
#include "wx/defs.h"
#if wxUSE_HTML
#include "wx/window.h"
#include "wx/scrolwin.h"
#include "wx/config.h"
#include "wx/treectrl.h"
#include "wx/html/winpars.h"
#include "wx/html/htmlcell.h"
#include "wx/filesys.h"
#include "wx/html/htmlfilt.h"
#include "wx/filename.h"
class wxHtmlProcessor;
class wxHtmlWinModule;
class wxHtmlHistoryArray;
class wxHtmlProcessorList;
// wxHtmlWindow flags:
#define wxHW_SCROLLBAR_NEVER 0x0002
#define wxHW_SCROLLBAR_AUTO 0x0004
// enums for wxHtmlWindow::OnOpeningURL
enum wxHtmlOpeningStatus
{
wxHTML_OPEN,
wxHTML_BLOCK,
wxHTML_REDIRECT
};
//--------------------------------------------------------------------------------
// wxHtmlWindow
// (This is probably the only class you will directly use.)
// Purpose of this class is to display HTML page (either local
// file or downloaded via HTTP protocol) in a window. Width
// of window is constant - given in constructor - virtual height
// is changed dynamicly depending on page size.
// Once the window is created you can set it's content by calling
// SetPage(text) or LoadPage(filename).
//--------------------------------------------------------------------------------
class WXDLLEXPORT wxHtmlWindow : public wxScrolledWindow
{
DECLARE_DYNAMIC_CLASS(wxHtmlWindow)
friend class wxHtmlWinModule;
public:
wxHtmlWindow() { Init(); }
wxHtmlWindow(wxWindow *parent, wxWindowID id = -1,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxHW_SCROLLBAR_AUTO,
const wxString& name = wxT("htmlWindow"))
{
Init();
Create(parent, id, pos, size, style, name);
}
~wxHtmlWindow();
bool Create(wxWindow *parent, wxWindowID id = -1,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxHW_SCROLLBAR_AUTO,
const wxString& name = wxT("htmlWindow"));
// Set HTML page and display it. !! source is HTML document itself,
// it is NOT address/filename of HTML document. If you want to
// specify document location, use LoadPage() istead
// Return value : FALSE if an error occured, TRUE otherwise
bool SetPage(const wxString& source);
// Append to current page
bool AppendToPage(const wxString& source);
// Load HTML page from given location. Location can be either
// a) /usr/wxGTK2/docs/html/wx.htm
// b) http://www.somewhere.uk/document.htm
// c) ftp://ftp.somesite.cz/pub/something.htm
// In case there is no prefix (http:,ftp:), the method
// will try to find it itself (1. local file, then http or ftp)
// After the page is loaded, the method calls SetPage() to display it.
// Note : you can also use path relative to previously loaded page
// Return value : same as SetPage
virtual bool LoadPage(const wxString& location);
// Loads HTML page from file
bool LoadFile(const wxFileName& filename);
// Returns full location of opened page
wxString GetOpenedPage() const {return m_OpenedPage;}
// Returns anchor within opened page
wxString GetOpenedAnchor() const {return m_OpenedAnchor;}
// Returns <TITLE> of opened page or empty string otherwise
wxString GetOpenedPageTitle() const {return m_OpenedPageTitle;}
// Sets frame in which page title will be displayed. Format is format of
// frame title, e.g. "HtmlHelp : %s". It must contain exactly one %s
void SetRelatedFrame(wxFrame* frame, const wxString& format);
wxFrame* GetRelatedFrame() const {return m_RelatedFrame;}
// After(!) calling SetRelatedFrame, this sets statusbar slot where messages
// will be displayed. Default is -1 = no messages.
void SetRelatedStatusBar(int bar);
// Sets fonts to be used when displaying HTML page.
void SetFonts(wxString normal_face, wxString fixed_face,
const int *sizes = NULL);
// Sets space between text and window borders.
void SetBorders(int b) {m_Borders = b;}
// Saves custom settings into cfg config. it will use the path 'path'
// if given, otherwise it will save info into currently selected path.
// saved values : things set by SetFonts, SetBorders.
virtual void ReadCustomization(wxConfigBase *cfg, wxString path = wxEmptyString);
// ...
virtual void WriteCustomization(wxConfigBase *cfg, wxString path = wxEmptyString);
// Goes to previous/next page (in browsing history)
// Returns TRUE if successful, FALSE otherwise
bool HistoryBack();
bool HistoryForward();
bool HistoryCanBack();
bool HistoryCanForward();
// Resets history
void HistoryClear();
// Returns pointer to conteiners/cells structure.
// It should be used ONLY when printing
wxHtmlContainerCell* GetInternalRepresentation() const {return m_Cell;}
// Adds input filter
static void AddFilter(wxHtmlFilter *filter);
// Returns a pointer to the parser.
wxHtmlWinParser *GetParser() const { return m_Parser; }
// Adds HTML processor to this instance of wxHtmlWindow:
void AddProcessor(wxHtmlProcessor *processor);
// Adds HTML processor to wxHtmlWindow class as whole:
static void AddGlobalProcessor(wxHtmlProcessor *processor);
// what would we do with it?
virtual bool AcceptsFocusFromKeyboard() const { return FALSE; }
// -- Callbacks --
// Sets the title of the window
// (depending on the information passed to SetRelatedFrame() method)
virtual void OnSetTitle(const wxString& title);
// Called when the mouse hovers over a cell: (x, y) are logical coords
// Default behaviour is to do nothing at all
virtual void OnCellMouseHover(wxHtmlCell *cell, wxCoord x, wxCoord y);
// Called when user clicks on a cell. Default behavior is to call
// OnLinkClicked() if this cell corresponds to a hypertext link
virtual void OnCellClicked(wxHtmlCell *cell,
wxCoord x, wxCoord y,
const wxMouseEvent& event);
// Called when user clicked on hypertext link. Default behavior is to
// call LoadPage(loc)
virtual void OnLinkClicked(const wxHtmlLinkInfo& link);
// Called when wxHtmlWindow wants to fetch data from an URL (e.g. when
// loading a page or loading an image). The data are downloaded if and only if
// OnOpeningURL returns TRUE. If OnOpeningURL returns wxHTML_REDIRECT,
// it must set *redirect to the new URL
virtual wxHtmlOpeningStatus OnOpeningURL(wxHtmlURLType WXUNUSED(type),
const wxString& WXUNUSED(url),
wxString *WXUNUSED(redirect)) const
{ return wxHTML_OPEN; }
protected:
void Init();
// Scrolls to anchor of this name. (Anchor is #news
// or #features etc. it is part of address sometimes:
// http://www.ms.mff.cuni.cz/~vsla8348/wxhtml/index.html#news)
// Return value : TRUE if anchor exists, FALSE otherwise
bool ScrollToAnchor(const wxString& anchor);
// Prepares layout (= fill m_PosX, m_PosY for fragments) based on
// actual size of window. This method also setup scrollbars
void CreateLayout();
void OnDraw(wxDC& dc);
void OnSize(wxSizeEvent& event);
void OnMouseEvent(wxMouseEvent& event);
void OnIdle(wxIdleEvent& event);
// Returns new filter (will be stored into m_DefaultFilter variable)
virtual wxHtmlFilter *GetDefaultFilter() {return new wxHtmlFilterPlainText;}
// cleans static variables
static void CleanUpStatics();
protected:
// This is pointer to the first cell in parsed data.
// (Note: the first cell is usually top one = all other cells are sub-cells of this one)
wxHtmlContainerCell *m_Cell;
// parser which is used to parse HTML input.
// Each wxHtmlWindow has it's own parser because sharing one global
// parser would be problematic (because of reentrancy)
wxHtmlWinParser *m_Parser;
// contains name of actualy opened page or empty string if no page opened
wxString m_OpenedPage;
// contains name of current anchor within m_OpenedPage
wxString m_OpenedAnchor;
// contains title of actualy opened page or empty string if no <TITLE> tag
wxString m_OpenedPageTitle;
// class for opening files (file system)
wxFileSystem* m_FS;
wxFrame *m_RelatedFrame;
wxString m_TitleFormat;
// frame in which page title should be displayed & number of it's statusbar
// reserved for usage with this html window
int m_RelatedStatusBar;
// borders (free space between text and window borders)
// defaults to 10 pixels.
int m_Borders;
int m_Style;
private:
// a flag indicated if mouse moved
// (if TRUE we will try to change cursor in last call to OnIdle)
bool m_tmpMouseMoved;
// contains last link name
wxHtmlLinkInfo *m_tmpLastLink;
// contains the last (terminal) cell which contained the mouse
wxHtmlCell *m_tmpLastCell;
// if >0 contents of the window is not redrawn
// (in order to avoid ugly blinking)
int m_tmpCanDrawLocks;
// list of HTML filters
static wxList m_Filters;
// this filter is used when no filter is able to read some file
static wxHtmlFilter *m_DefaultFilter;
static wxCursor *s_cur_hand;
static wxCursor *s_cur_arrow;
wxHtmlHistoryArray *m_History;
// browser history
int m_HistoryPos;
// if this FLAG is false, items are not added to history
bool m_HistoryOn;
// html processors array:
wxHtmlProcessorList *m_Processors;
static wxHtmlProcessorList *m_GlobalProcessors;
DECLARE_EVENT_TABLE()
DECLARE_NO_COPY_CLASS(wxHtmlWindow)
};
#endif
#endif // _WX_HTMLWIN_H_

View File

@@ -1,258 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: htmprint.h
// Purpose: html printing classes
// Author: Vaclav Slavik
// Created: 25/09/99
// RCS-ID: $Id$
// Copyright: (c)
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_HTMPRINT_H_
#define _WX_HTMPRINT_H_
#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "htmprint.h"
#endif
#include "wx/defs.h"
#if wxUSE_HTML & wxUSE_PRINTING_ARCHITECTURE
#include "wx/html/htmlcell.h"
#include "wx/html/winpars.h"
#include "wx/print.h"
#include "wx/printdlg.h"
#include <limits.h> // INT_MAX
//--------------------------------------------------------------------------------
// wxHtmlDCRenderer
// This class is capable of rendering HTML into specified
// portion of DC
//--------------------------------------------------------------------------------
class WXDLLEXPORT wxHtmlDCRenderer : public wxObject
{
public:
wxHtmlDCRenderer();
~wxHtmlDCRenderer();
// Following 3 methods *must* be called before any call to Render:
// Assign DC to this render
void SetDC(wxDC *dc, double pixel_scale = 1.0);
// Sets size of output rectangle, in pixels. Note that you *can't* change
// width of the rectangle between calls to Render! (You can freely change height.)
void SetSize(int width, int height);
// Sets the text to be displayed.
// Basepath is base directory (html string would be stored there if it was in
// file). It is used to determine path for loading images, for example.
// isdir is FALSE if basepath is filename, TRUE if it is directory name
// (see wxFileSystem for detailed explanation)
void SetHtmlText(const wxString& html, const wxString& basepath = wxEmptyString, bool isdir = TRUE);
// Sets fonts to be used when displaying HTML page. (if size null then default sizes used).
void SetFonts(wxString normal_face, wxString fixed_face, const int *sizes = NULL);
// [x,y] is position of upper-left corner of printing rectangle (see SetSize)
// from is y-coordinate of the very first visible cell
// to is y-coordinate of the next following page break, if any
// Returned value is y coordinate of first cell than didn't fit onto page.
// Use this value as 'from' in next call to Render in order to print multiple pages
// document
// If dont_render is TRUE then nothing is rendered into DC and it only counts
// pixels and return y coord of the next page
//
// known_pagebreaks and number_of_pages are used only when counting pages;
// otherwise, their default values should be used. Their purpose is to
// support pagebreaks using a subset of CSS2's <DIV>. The <DIV> handler
// needs to know what pagebreaks have already been set so that it doesn't
// set the same pagebreak twice.
//
// CAUTION! Render() changes DC's user scale and does NOT restore it!
int Render(int x, int y, int from = 0, int dont_render = FALSE, int to = INT_MAX,
int *known_pagebreaks = NULL, int number_of_pages = 0);
// returns total height of the html document
// (compare Render's return value with this)
int GetTotalHeight();
private:
wxDC *m_DC;
wxHtmlWinParser *m_Parser;
wxFileSystem *m_FS;
wxHtmlContainerCell *m_Cells;
int m_MaxWidth, m_Width, m_Height;
DECLARE_NO_COPY_CLASS(wxHtmlDCRenderer)
};
enum {
wxPAGE_ODD,
wxPAGE_EVEN,
wxPAGE_ALL
};
//--------------------------------------------------------------------------------
// wxHtmlPrintout
// This class is derived from standard wxWindows printout class
// and is used to print HTML documents.
//--------------------------------------------------------------------------------
class WXDLLEXPORT wxHtmlPrintout : public wxPrintout
{
public:
wxHtmlPrintout(const wxString& title = wxT("Printout"));
~wxHtmlPrintout();
void SetHtmlText(const wxString& html, const wxString &basepath = wxEmptyString, bool isdir = TRUE);
// prepares the class for printing this html document.
// Must be called before using the class, in fact just after constructor
//
// basepath is base directory (html string would be stored there if it was in
// file). It is used to determine path for loading images, for example.
// isdir is FALSE if basepath is filename, TRUE if it is directory name
// (see wxFileSystem for detailed explanation)
void SetHtmlFile(const wxString &htmlfile);
// same as SetHtmlText except that it takes regular file as the parameter
void SetHeader(const wxString& header, int pg = wxPAGE_ALL);
void SetFooter(const wxString& footer, int pg = wxPAGE_ALL);
// sets header/footer for the document. The argument is interpreted as HTML document.
// You can use macros in it:
// @PAGENUM@ is replaced by page number
// @PAGESCNT@ is replaced by total number of pages
//
// pg is one of wxPAGE_ODD, wxPAGE_EVEN and wx_PAGE_ALL constants.
// You can set different header/footer for odd and even pages
// Sets fonts to be used when displaying HTML page. (if size null then default sizes used).
void SetFonts(wxString normal_face, wxString fixed_face, const int *sizes = NULL);
void SetMargins(float top = 25.2, float bottom = 25.2, float left = 25.2, float right = 25.2,
float spaces = 5);
// sets margins in milimeters. Defaults to 1 inch for margins and 0.5cm for space
// between text and header and/or footer
// wxPrintout stuff:
bool OnPrintPage(int page);
bool HasPage(int page);
void GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo);
bool OnBeginDocument(int startPage, int endPage);
private:
void RenderPage(wxDC *dc, int page);
// renders one page into dc
wxString TranslateHeader(const wxString& instr, int page);
// substitute @PAGENUM@ and @PAGESCNT@ by real values
void CountPages();
// counts pages and fills m_NumPages and m_PageBreaks
private:
int m_NumPages;
int m_PageBreaks[wxHTML_PRINT_MAX_PAGES];
wxString m_Document, m_BasePath;
bool m_BasePathIsDir;
wxString m_Headers[2], m_Footers[2];
int m_HeaderHeight, m_FooterHeight;
wxHtmlDCRenderer *m_Renderer, *m_RendererHdr;
float m_MarginTop, m_MarginBottom, m_MarginLeft, m_MarginRight, m_MarginSpace;
DECLARE_NO_COPY_CLASS(wxHtmlPrintout)
};
//--------------------------------------------------------------------------------
// wxHtmlEasyPrinting
// This class provides very simple interface to printing
// architecture. It allows you to print HTML documents only
// with very few commands.
//
// Note : do not create this class on stack only.
// You should create an instance on app startup and
// use this instance for all printing. Why? The class
// stores page&printer settings in it.
//--------------------------------------------------------------------------------
class WXDLLEXPORT wxHtmlEasyPrinting : public wxObject
{
public:
wxHtmlEasyPrinting(const wxString& name = wxT("Printing"), wxFrame *parent_frame = NULL);
~wxHtmlEasyPrinting();
bool PreviewFile(const wxString &htmlfile);
bool PreviewText(const wxString &htmltext, const wxString& basepath = wxEmptyString);
// Preview file / html-text for printing
// (and offers printing)
// basepath is base directory for opening subsequent files (e.g. from <img> tag)
bool PrintFile(const wxString &htmlfile);
bool PrintText(const wxString &htmltext, const wxString& basepath = wxEmptyString);
// Print file / html-text w/o preview
void PrinterSetup();
void PageSetup();
// pop up printer or page setup dialog
void SetHeader(const wxString& header, int pg = wxPAGE_ALL);
void SetFooter(const wxString& footer, int pg = wxPAGE_ALL);
// sets header/footer for the document. The argument is interpreted as HTML document.
// You can use macros in it:
// @PAGENUM@ is replaced by page number
// @PAGESCNT@ is replaced by total number of pages
//
// pg is one of wxPAGE_ODD, wxPAGE_EVEN and wx_PAGE_ALL constants.
// You can set different header/footer for odd and even pages
void SetFonts(wxString normal_face, wxString fixed_face, const int *sizes = 0);
// Sets fonts to be used when displaying HTML page. (if size null then default sizes used)
wxPrintData *GetPrintData() {return m_PrintData;}
wxPageSetupDialogData *GetPageSetupData() {return m_PageSetupData;}
// return page setting data objects.
// (You can set their parameters.)
protected:
virtual wxHtmlPrintout *CreatePrintout();
virtual bool DoPreview(wxHtmlPrintout *printout1, wxHtmlPrintout *printout2);
virtual bool DoPrint(wxHtmlPrintout *printout);
private:
wxPrintData *m_PrintData;
wxPageSetupDialogData *m_PageSetupData;
wxString m_Name;
int m_FontsSizesArr[7];
int *m_FontsSizes;
wxString m_FontFaceFixed, m_FontFaceNormal;
wxString m_Headers[2], m_Footers[2];
wxFrame *m_Frame;
DECLARE_NO_COPY_CLASS(wxHtmlEasyPrinting)
};
#endif // wxUSE_HTML & wxUSE_PRINTING_ARCHITECTURE
#endif // _WX_HTMPRINT_H_

View File

@@ -1,84 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: m_templ.h
// Purpose: Modules template file
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
/*
DESCRIPTION:
This is set of macros for easier writing of tag handlers. How to use it?
See mod_fonts.cpp for example...
Attention! This is quite strange C++ bastard. Before using it,
I STRONGLY recommend reading and understanding these macros!!
*/
#ifndef _WX_M_TEMPL_H_
#define _WX_M_TEMPL_H_
#include "wx/defs.h"
#if wxUSE_HTML
#include "wx/html/winpars.h"
#define TAG_HANDLER_BEGIN(name,tags) \
class HTML_Handler_##name : public wxHtmlWinTagHandler \
{ \
public: \
wxString GetSupportedTags() {return wxT(tags);}
#define TAG_HANDLER_VARS \
private:
#define TAG_HANDLER_CONSTR(name) \
public: \
HTML_Handler_##name () : wxHtmlWinTagHandler()
#define TAG_HANDLER_PROC(varib) \
public: \
bool HandleTag(const wxHtmlTag& varib)
#define TAG_HANDLER_END(name) \
};
#define TAGS_MODULE_BEGIN(name) \
class HTML_Module##name : public wxHtmlTagsModule \
{ \
DECLARE_DYNAMIC_CLASS(HTML_Module##name ) \
public: \
void FillHandlersTable(wxHtmlWinParser *parser) \
{
#define TAGS_MODULE_ADD(handler) \
parser->AddTagHandler(new HTML_Handler_##handler);
#define TAGS_MODULE_END(name) \
} \
}; \
IMPLEMENT_DYNAMIC_CLASS(HTML_Module##name , wxHtmlTagsModule)
#endif
#endif

View File

@@ -1,252 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: winpars.h
// Purpose: wxHtmlWinParser class (parser to be used with wxHtmlWindow)
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_WINPARS_H_
#define _WX_WINPARS_H_
#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "winpars.h"
#endif
#include "wx/defs.h"
#if wxUSE_HTML
#include "wx/module.h"
#include "wx/font.h"
#include "wx/html/htmlpars.h"
#include "wx/html/htmlcell.h"
#include "wx/encconv.h"
class WXDLLEXPORT wxHtmlWindow;
class WXDLLEXPORT wxHtmlWinParser;
class WXDLLEXPORT wxHtmlWinTagHandler;
class WXDLLEXPORT wxHtmlTagsModule;
//--------------------------------------------------------------------------------
// wxHtmlWinParser
// This class is derived from wxHtmlParser and its mail goal
// is to parse HTML input so that it can be displayed in
// wxHtmlWindow. It uses special wxHtmlWinTagHandler.
//--------------------------------------------------------------------------------
class WXDLLEXPORT wxHtmlWinParser : public wxHtmlParser
{
friend class wxHtmlWindow;
public:
wxHtmlWinParser(wxHtmlWindow *wnd = NULL);
~wxHtmlWinParser();
virtual void InitParser(const wxString& source);
virtual void DoneParser();
virtual wxObject* GetProduct();
virtual wxFSFile *OpenURL(wxHtmlURLType type, const wxString& url) const;
// Set's the DC used for parsing. If SetDC() is not called,
// parsing won't proceed
virtual void SetDC(wxDC *dc, double pixel_scale = 1.0)
{ m_DC = dc; m_PixelScale = pixel_scale; }
wxDC *GetDC() {return m_DC;}
double GetPixelScale() {return m_PixelScale;}
int GetCharHeight() const {return m_CharHeight;}
int GetCharWidth() const {return m_CharWidth;}
// NOTE : these functions do _not_ return _actual_
// height/width. They return h/w of default font
// for this DC. If you want actual values, call
// GetDC()->GetChar...()
// returns associated wxWindow
wxHtmlWindow *GetWindow() {return m_Window;}
// Sets fonts to be used when displaying HTML page. (if size null then default sizes used).
void SetFonts(wxString normal_face, wxString fixed_face, const int *sizes = NULL);
// Adds tags module. see wxHtmlTagsModule for details.
static void AddModule(wxHtmlTagsModule *module);
static void RemoveModule(wxHtmlTagsModule *module);
// parsing-related methods. These methods are called by tag handlers:
// Returns pointer to actual container. Common use in tag handler is :
// m_WParser->GetContainer()->InsertCell(new ...);
wxHtmlContainerCell *GetContainer() const {return m_Container;}
// opens new container. This container is sub-container of opened
// container. Sets GetContainer to newly created container
// and returns it.
wxHtmlContainerCell *OpenContainer();
// works like OpenContainer except that new container is not created
// but c is used. You can use this to directly set actual container
wxHtmlContainerCell *SetContainer(wxHtmlContainerCell *c);
// closes the container and sets actual Container to upper-level
// container
wxHtmlContainerCell *CloseContainer();
int GetFontSize() const {return m_FontSize;}
void SetFontSize(int s);
int GetFontBold() const {return m_FontBold;}
void SetFontBold(int x) {m_FontBold = x;}
int GetFontItalic() const {return m_FontItalic;}
void SetFontItalic(int x) {m_FontItalic = x;}
int GetFontUnderlined() const {return m_FontUnderlined;}
void SetFontUnderlined(int x) {m_FontUnderlined = x;}
int GetFontFixed() const {return m_FontFixed;}
void SetFontFixed(int x) {m_FontFixed = x;}
wxString GetFontFace() const {return GetFontFixed() ? m_FontFaceFixed : m_FontFaceNormal;}
void SetFontFace(const wxString& face);
int GetAlign() const {return m_Align;}
void SetAlign(int a) {m_Align = a;}
const wxColour& GetLinkColor() const { return m_LinkColor; }
void SetLinkColor(const wxColour& clr) { m_LinkColor = clr; }
const wxColour& GetActualColor() const { return m_ActualColor; }
void SetActualColor(const wxColour& clr) { m_ActualColor = clr ;}
const wxHtmlLinkInfo& GetLink() const { return m_Link; }
void SetLink(const wxHtmlLinkInfo& link);
#if !wxUSE_UNICODE
void SetInputEncoding(wxFontEncoding enc);
wxFontEncoding GetInputEncoding() const { return m_InputEnc; }
wxFontEncoding GetOutputEncoding() const { return m_OutputEnc; }
wxEncodingConverter *GetEncodingConverter() const { return m_EncConv; }
#endif
// creates font depending on m_Font* members.
virtual wxFont* CreateCurrentFont();
protected:
virtual void AddText(const wxChar* txt);
private:
bool m_tmpLastWasSpace;
wxChar *m_tmpStrBuf;
size_t m_tmpStrBufSize;
// temporary variables used by AddText
wxHtmlWindow *m_Window;
// window we're parsing for
double m_PixelScale;
wxDC *m_DC;
// Device Context we're parsing for
static wxList m_Modules;
// list of tags modules (see wxHtmlTagsModule for details)
// This list is used to initialize m_Handlers member.
wxHtmlContainerCell *m_Container;
// actual container. See Open/CloseContainer for details.
int m_FontBold, m_FontItalic, m_FontUnderlined, m_FontFixed; // this is not TRUE,FALSE but 1,0, we need it for indexing
int m_FontSize; /* -2 to +4, 0 is default */
wxColour m_LinkColor;
wxColour m_ActualColor;
// basic font parameters.
wxHtmlLinkInfo m_Link;
// actual hypertext link or empty string
bool m_UseLink;
// TRUE if m_Link is not empty
long m_CharHeight, m_CharWidth;
// average height of normal-sized text
int m_Align;
// actual alignment
wxFont* m_FontsTable[2][2][2][2][7];
wxString m_FontsFacesTable[2][2][2][2][7];
#if !wxUSE_UNICODE
wxFontEncoding m_FontsEncTable[2][2][2][2][7];
#endif
// table of loaded fonts. 1st four indexes are 0 or 1, depending on on/off
// state of these flags (from left to right):
// [bold][italic][underlined][fixed_size]
// last index is font size : from 0 to 6 (remapped from html sizes 1 to 7)
// Note : this table covers all possible combinations of fonts, but not
// all of them are used, so many items in table are usually NULL.
int m_FontsSizes[7];
wxString m_FontFaceFixed, m_FontFaceNormal;
// html font sizes and faces of fixed and proportional fonts
DECLARE_NO_COPY_CLASS(wxHtmlWinParser)
#if !wxUSE_UNICODE
wxFontEncoding m_InputEnc, m_OutputEnc;
// I/O font encodings
wxEncodingConverter *m_EncConv;
#endif
};
//--------------------------------------------------------------------------------
// wxHtmlWinTagHandler
// This is basicly wxHtmlTagHandler except
// it is extended with protected member m_Parser pointing to
// the wxHtmlWinParser object
//--------------------------------------------------------------------------------
class WXDLLEXPORT wxHtmlWinTagHandler : public wxHtmlTagHandler
{
DECLARE_ABSTRACT_CLASS(wxHtmlWinTagHandler)
public:
wxHtmlWinTagHandler() : wxHtmlTagHandler() {};
virtual void SetParser(wxHtmlParser *parser) {wxHtmlTagHandler::SetParser(parser); m_WParser = (wxHtmlWinParser*) parser;};
protected:
wxHtmlWinParser *m_WParser; // same as m_Parser, but overcasted
DECLARE_NO_COPY_CLASS(wxHtmlWinTagHandler)
};
//--------------------------------------------------------------------------------
// wxHtmlTagsModule
// This is basic of dynamic tag handlers binding.
// The class provides methods for filling parser's handlers
// hash table.
// (See documentation for details)
//--------------------------------------------------------------------------------
class WXDLLEXPORT wxHtmlTagsModule : public wxModule
{
DECLARE_DYNAMIC_CLASS(wxHtmlTagsModule)
public:
wxHtmlTagsModule() : wxModule() {};
virtual bool OnInit();
virtual void OnExit();
// This is called by wxHtmlWinParser.
// The method must simply call parser->AddTagHandler(new <handler_class_name>);
// for each handler
virtual void FillHandlersTable(wxHtmlWinParser * WXUNUSED(parser)) { }
};
#endif
#endif // _WX_WINPARS_H_

View File

@@ -1,331 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: helpctrl.cpp
// Purpose: wxHtmlHelpController
// Notes: Based on htmlhelp.cpp, implementing a monolithic
// HTML Help controller class, by Vaclav Slavik
// Author: Harm van der Heijden and Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) Harm van der Heijden and Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "helpctrl.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#if wxUSE_WXHTML_HELP
#ifndef WX_PRECOMP
#include "wx/app.h"
#include "wx/intl.h"
#endif // WX_PRECOMP
#include "wx/html/helpctrl.h"
#include "wx/busyinfo.h"
#ifdef __WXGTK__
// for the hack in AddGrabIfNeeded()
#include "wx/dialog.h"
#endif // __WXGTK__
#if wxUSE_HELP
#include "wx/tipwin.h"
#endif
IMPLEMENT_DYNAMIC_CLASS(wxHtmlHelpController, wxHelpControllerBase)
wxHtmlHelpController::wxHtmlHelpController(int style)
{
m_helpFrame = NULL;
m_Config = NULL;
m_ConfigRoot = wxEmptyString;
m_titleFormat = _("Help: %s");
m_FrameStyle = style;
}
wxHtmlHelpController::~wxHtmlHelpController()
{
if (m_Config)
WriteCustomization(m_Config, m_ConfigRoot);
if (m_helpFrame)
DestroyHelpWindow();
}
void wxHtmlHelpController::DestroyHelpWindow()
{
//if (m_Config) WriteCustomization(m_Config, m_ConfigRoot);
if (m_helpFrame)
m_helpFrame->Destroy();
}
void wxHtmlHelpController::OnCloseFrame(wxCloseEvent& evt)
{
evt.Skip();
OnQuit();
m_helpFrame->SetController((wxHelpControllerBase*) NULL);
m_helpFrame = NULL;
}
void wxHtmlHelpController::SetTitleFormat(const wxString& title)
{
m_titleFormat = title;
if (m_helpFrame)
m_helpFrame->SetTitleFormat(title);
}
bool wxHtmlHelpController::AddBook(const wxFileName& book_file, bool show_wait_msg)
{
return AddBook(wxFileSystem::FileNameToURL(book_file), show_wait_msg);
}
bool wxHtmlHelpController::AddBook(const wxString& book, bool show_wait_msg)
{
wxBusyCursor cur;
#if wxUSE_BUSYINFO
wxBusyInfo* busy = NULL;
wxString info;
if (show_wait_msg)
{
info.Printf(_("Adding book %s"), book.c_str());
busy = new wxBusyInfo(info);
}
#endif
bool retval = m_helpData.AddBook(book);
#if wxUSE_BUSYINFO
if (show_wait_msg)
delete busy;
#endif
if (m_helpFrame)
m_helpFrame->RefreshLists();
return retval;
}
wxHtmlHelpFrame *wxHtmlHelpController::CreateHelpFrame(wxHtmlHelpData *data)
{
return new wxHtmlHelpFrame(data);
}
void wxHtmlHelpController::CreateHelpWindow()
{
if (m_helpFrame)
{
m_helpFrame->Raise();
return ;
}
if (m_Config == NULL)
{
m_Config = wxConfigBase::Get(FALSE);
if (m_Config != NULL)
m_ConfigRoot = _T("wxWindows/wxHtmlHelpController");
}
m_helpFrame = CreateHelpFrame(&m_helpData);
m_helpFrame->SetController(this);
if (m_Config)
m_helpFrame->UseConfig(m_Config, m_ConfigRoot);
m_helpFrame->Create(NULL, wxID_HTML_HELPFRAME, wxEmptyString, m_FrameStyle);
m_helpFrame->SetTitleFormat(m_titleFormat);
m_helpFrame->Show(TRUE);
}
void wxHtmlHelpController::ReadCustomization(wxConfigBase* cfg, const wxString& path)
{
/* should not be called by the user; call UseConfig, and the controller
* will do the rest */
if (m_helpFrame && cfg)
m_helpFrame->ReadCustomization(cfg, path);
}
void wxHtmlHelpController::WriteCustomization(wxConfigBase* cfg, const wxString& path)
{
/* typically called by the controllers OnCloseFrame handler */
if (m_helpFrame && cfg)
m_helpFrame->WriteCustomization(cfg, path);
}
void wxHtmlHelpController::UseConfig(wxConfigBase *config, const wxString& rootpath)
{
m_Config = config;
m_ConfigRoot = rootpath;
if (m_helpFrame) m_helpFrame->UseConfig(config, rootpath);
ReadCustomization(config, rootpath);
}
//// Backward compatibility with wxHelpController API
bool wxHtmlHelpController::Initialize(const wxString& file)
{
wxString dir, filename, ext;
wxSplitPath(file, & dir, & filename, & ext);
if (!dir.IsEmpty())
dir = dir + wxFILE_SEP_PATH;
// Try to find a suitable file
wxString actualFilename = dir + filename + wxString(wxT(".zip"));
if (!wxFileExists(actualFilename))
{
actualFilename = dir + filename + wxString(wxT(".htb"));
if (!wxFileExists(actualFilename))
{
actualFilename = dir + filename + wxString(wxT(".hhp"));
if (!wxFileExists(actualFilename))
return FALSE;
}
}
return AddBook(wxFileName(actualFilename));
}
bool wxHtmlHelpController::LoadFile(const wxString& WXUNUSED(file))
{
// Don't reload the file or we'll have it appear again, presumably.
return TRUE;
}
bool wxHtmlHelpController::DisplaySection(int sectionNo)
{
return Display(sectionNo);
}
bool wxHtmlHelpController::DisplayTextPopup(const wxString& text, const wxPoint& WXUNUSED(pos))
{
#if wxUSE_TIPWINDOW
static wxTipWindow* s_tipWindow = NULL;
if (s_tipWindow)
{
// Prevent s_tipWindow being nulled in OnIdle,
// thereby removing the chance for the window to be closed by ShowHelp
s_tipWindow->SetTipWindowPtr(NULL);
s_tipWindow->Close();
}
s_tipWindow = NULL;
if ( !text.empty() )
{
s_tipWindow = new wxTipWindow(wxTheApp->GetTopWindow(), text, 100, & s_tipWindow);
return TRUE;
}
#endif // wxUSE_TIPWINDOW
return FALSE;
}
void wxHtmlHelpController::SetFrameParameters(const wxString& title,
const wxSize& size,
const wxPoint& pos,
bool WXUNUSED(newFrameEachTime))
{
SetTitleFormat(title);
if (m_helpFrame)
{
m_helpFrame->SetSize(pos.x, pos.y, size.x, size.y);
}
}
wxFrame* wxHtmlHelpController::GetFrameParameters(wxSize *size,
wxPoint *pos,
bool *newFrameEachTime)
{
if (newFrameEachTime)
(* newFrameEachTime) = FALSE;
if (size && m_helpFrame)
(* size) = m_helpFrame->GetSize();
if (pos && m_helpFrame)
(* pos) = m_helpFrame->GetPosition();
return m_helpFrame;
}
bool wxHtmlHelpController::Quit()
{
DestroyHelpWindow();
return TRUE;
}
// Make the help controller's frame 'modal' if
// needed
void wxHtmlHelpController::AddGrabIfNeeded()
{
// So far, wxGTK only
#ifdef __WXGTK__
bool needGrab = FALSE;
// Check if there are any modal windows present,
// in which case we need to add a grab.
for ( wxWindowList::Node * node = wxTopLevelWindows.GetFirst();
node;
node = node->GetNext() )
{
wxWindow *win = node->GetData();
wxDialog *dialog = wxDynamicCast(win, wxDialog);
if (dialog && dialog->IsModal())
needGrab = TRUE;
}
if (needGrab && m_helpFrame)
m_helpFrame->AddGrab();
#endif // __WXGTK__
}
bool wxHtmlHelpController::Display(const wxString& x)
{
CreateHelpWindow();
bool success = m_helpFrame->Display(x);
AddGrabIfNeeded();
return success;
}
bool wxHtmlHelpController::Display(int id)
{
CreateHelpWindow();
bool success = m_helpFrame->Display(id);
AddGrabIfNeeded();
return success;
}
bool wxHtmlHelpController::DisplayContents()
{
CreateHelpWindow();
bool success = m_helpFrame->DisplayContents();
AddGrabIfNeeded();
return success;
}
bool wxHtmlHelpController::DisplayIndex()
{
CreateHelpWindow();
bool success = m_helpFrame->DisplayIndex();
AddGrabIfNeeded();
return success;
}
bool wxHtmlHelpController::KeywordSearch(const wxString& keyword)
{
CreateHelpWindow();
bool success = m_helpFrame->KeywordSearch(keyword);
AddGrabIfNeeded();
return success;
}
#endif // wxUSE_WXHTML_HELP

View File

@@ -1,881 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: helpdata.cpp
// Purpose: wxHtmlHelpData
// Notes: Based on htmlhelp.cpp, implementing a monolithic
// HTML Help controller class, by Vaclav Slavik
// Author: Harm van der Heijden and Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) Harm van der Heijden and Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "helpdata.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "wx/defs.h"
#if wxUSE_HTML && wxUSE_STREAMS
#ifndef WXPRECOMP
#include "wx/intl.h"
#include "wx/log.h"
#endif
#include <ctype.h>
#include "wx/html/helpdata.h"
#include "wx/tokenzr.h"
#include "wx/wfstream.h"
#include "wx/busyinfo.h"
#include "wx/encconv.h"
#include "wx/fontmap.h"
#include "wx/log.h"
#include "wx/html/htmlpars.h"
#include "wx/html/htmldefs.h"
#include "wx/html/htmlfilt.h"
#include "wx/filename.h"
#include "wx/arrimpl.cpp"
WX_DEFINE_OBJARRAY(wxHtmlBookRecArray)
//-----------------------------------------------------------------------------
// static helper functions
//-----------------------------------------------------------------------------
// Reads one line, stores it into buf and returns pointer to new line or NULL.
static const wxChar* ReadLine(const wxChar *line, wxChar *buf, size_t bufsize)
{
wxChar *writeptr = buf;
wxChar *endptr = buf + bufsize - 1;
const wxChar *readptr = line;
while (*readptr != 0 && *readptr != _T('\r') && *readptr != _T('\n') &&
writeptr != endptr)
*(writeptr++) = *(readptr++);
*writeptr = 0;
while (*readptr == _T('\r') || *readptr == _T('\n'))
readptr++;
if (*readptr == 0)
return NULL;
else
return readptr;
}
extern "C" int LINKAGEMODE
wxHtmlHelpIndexCompareFunc(const void *a, const void *b)
{
return wxStricmp(((wxHtmlContentsItem*)a)->m_Name, ((wxHtmlContentsItem*)b)->m_Name);
}
//-----------------------------------------------------------------------------
// HP_Parser
//-----------------------------------------------------------------------------
class HP_Parser : public wxHtmlParser
{
public:
wxObject* GetProduct() { return NULL; }
protected:
virtual void AddText(const wxChar* WXUNUSED(txt)) {}
};
//-----------------------------------------------------------------------------
// HP_TagHandler
//-----------------------------------------------------------------------------
class HP_TagHandler : public wxHtmlTagHandler
{
private:
wxString m_Name, m_Page;
int m_Level;
int m_ID;
int m_Index;
wxHtmlContentsItem *m_Items;
int m_ItemsCnt;
wxHtmlBookRecord *m_Book;
public:
HP_TagHandler(wxHtmlBookRecord *b) : wxHtmlTagHandler()
{ m_Book = b; m_Items = NULL; m_ItemsCnt = 0; m_Name = m_Page = wxEmptyString;
m_Level = 0; m_ID = -1; }
wxString GetSupportedTags() { return wxT("UL,OBJECT,PARAM"); }
bool HandleTag(const wxHtmlTag& tag);
void WriteOut(wxHtmlContentsItem*& array, int& size);
void ReadIn(wxHtmlContentsItem* array, int size);
DECLARE_NO_COPY_CLASS(HP_TagHandler)
};
bool HP_TagHandler::HandleTag(const wxHtmlTag& tag)
{
if (tag.GetName() == wxT("UL"))
{
m_Level++;
ParseInner(tag);
m_Level--;
return TRUE;
}
else if (tag.GetName() == wxT("OBJECT"))
{
m_Name = m_Page = wxEmptyString;
ParseInner(tag);
#if 0
if (!m_Page.IsEmpty())
/* Valid HHW's file may contain only two object tags:
<OBJECT type="text/site properties">
<param name="ImageType" value="Folder">
</OBJECT>
or
<OBJECT type="text/sitemap">
<param name="Name" value="main page">
<param name="Local" value="another.htm">
</OBJECT>
We're interested in the latter. !m_Page.IsEmpty() is valid
condition because text/site properties does not contain Local param
*/
#endif
if (tag.GetParam(wxT("TYPE")) == wxT("text/sitemap"))
{
if (m_ItemsCnt % wxHTML_REALLOC_STEP == 0)
m_Items = (wxHtmlContentsItem*) realloc(m_Items,
(m_ItemsCnt + wxHTML_REALLOC_STEP) *
sizeof(wxHtmlContentsItem));
m_Items[m_ItemsCnt].m_Level = m_Level;
m_Items[m_ItemsCnt].m_ID = m_ID;
m_Items[m_ItemsCnt].m_Page = new wxChar[m_Page.Length() + 1];
wxStrcpy(m_Items[m_ItemsCnt].m_Page, m_Page.c_str());
m_Items[m_ItemsCnt].m_Name = new wxChar [m_Name.Length() + 1];
wxStrcpy(m_Items[m_ItemsCnt].m_Name, m_Name.c_str());
m_Items[m_ItemsCnt].m_Book = m_Book;
m_ItemsCnt++;
}
return TRUE;
}
else
{ // "PARAM"
if (m_Name == wxEmptyString && tag.GetParam(wxT("NAME")) == wxT("Name"))
m_Name = tag.GetParam(wxT("VALUE"));
if (tag.GetParam(wxT("NAME")) == wxT("Local"))
m_Page = tag.GetParam(wxT("VALUE"));
if (tag.GetParam(wxT("NAME")) == wxT("ID"))
tag.GetParamAsInt(wxT("VALUE"), &m_ID);
return FALSE;
}
}
void HP_TagHandler::WriteOut(wxHtmlContentsItem*& array, int& size)
{
array = m_Items;
size = m_ItemsCnt;
m_Items = NULL;
m_ItemsCnt = 0;
}
void HP_TagHandler::ReadIn(wxHtmlContentsItem* array, int size)
{
m_Items = array;
m_ItemsCnt = size;
}
//-----------------------------------------------------------------------------
// wxHtmlHelpData
//-----------------------------------------------------------------------------
wxString wxHtmlBookRecord::GetFullPath(const wxString &page) const
{
if (wxIsAbsolutePath(page))
return page;
else
return m_BasePath + page;
}
IMPLEMENT_DYNAMIC_CLASS(wxHtmlHelpData, wxObject)
wxHtmlHelpData::wxHtmlHelpData()
{
m_TempPath = wxEmptyString;
m_Contents = NULL;
m_ContentsCnt = 0;
m_Index = NULL;
m_IndexCnt = 0;
}
wxHtmlHelpData::~wxHtmlHelpData()
{
int i;
m_BookRecords.Empty();
if (m_Contents)
{
for (i = 0; i < m_ContentsCnt; i++)
{
delete[] m_Contents[i].m_Page;
delete[] m_Contents[i].m_Name;
}
free(m_Contents);
}
if (m_Index)
{
for (i = 0; i < m_IndexCnt; i++)
{
delete[] m_Index[i].m_Page;
delete[] m_Index[i].m_Name;
}
free(m_Index);
}
}
bool wxHtmlHelpData::LoadMSProject(wxHtmlBookRecord *book, wxFileSystem& fsys, const wxString& indexfile, const wxString& contentsfile)
{
wxFSFile *f;
wxHtmlFilterHTML filter;
wxString buf;
wxString string;
HP_Parser parser;
HP_TagHandler *handler = new HP_TagHandler(book);
parser.AddTagHandler(handler);
f = ( contentsfile.IsEmpty() ? (wxFSFile*) NULL : fsys.OpenFile(contentsfile) );
if (f)
{
buf.clear();
buf = filter.ReadFile(*f);
delete f;
handler->ReadIn(m_Contents, m_ContentsCnt);
parser.Parse(buf);
handler->WriteOut(m_Contents, m_ContentsCnt);
}
else
{
wxLogError(_("Cannot open contents file: %s"), contentsfile.c_str());
}
f = ( indexfile.IsEmpty() ? (wxFSFile*) NULL : fsys.OpenFile(indexfile) );
if (f)
{
buf.clear();
buf = filter.ReadFile(*f);
delete f;
handler->ReadIn(m_Index, m_IndexCnt);
parser.Parse(buf);
handler->WriteOut(m_Index, m_IndexCnt);
}
else if (!indexfile.IsEmpty())
{
wxLogError(_("Cannot open index file: %s"), indexfile.c_str());
}
return TRUE;
}
inline static void CacheWriteInt32(wxOutputStream *f, wxInt32 value)
{
wxInt32 x = wxINT32_SWAP_ON_BE(value);
f->Write(&x, sizeof(x));
}
inline static wxInt32 CacheReadInt32(wxInputStream *f)
{
wxInt32 x;
f->Read(&x, sizeof(x));
return wxINT32_SWAP_ON_BE(x);
}
inline static void CacheWriteString(wxOutputStream *f, const wxChar *str)
{
#if wxUSE_UNICODE
wxWX2MBbuf mbstr(wxConvUTF8.cWX2MB(str));
#else
const wxChar *mbstr = str;
#endif
size_t len = strlen(mbstr)+1;
CacheWriteInt32(f, len);
f->Write(mbstr, len);
}
inline static wxChar* CacheReadString(wxInputStream *f)
{
char *str;
size_t len = (size_t)CacheReadInt32(f);
str = new char[len];
f->Read(str, len);
#if !wxUSE_UNICODE
return str;
#else
wxMB2WXbuf wxstr(wxConvUTF8.cMB2WX(str));
wxChar *outstr = new wxChar[wxStrlen(wxstr)+1];
wxStrcpy(outstr, wxstr);
return outstr;
#endif
}
#define CURRENT_CACHED_BOOK_VERSION 4
// Additional flags to detect incompatibilities of the runtime environment:
#define CACHED_BOOK_FORMAT_FLAGS \
(wxUSE_UNICODE << 0)
bool wxHtmlHelpData::LoadCachedBook(wxHtmlBookRecord *book, wxInputStream *f)
{
int i, st;
wxInt32 version;
/* load header - version info : */
version = CacheReadInt32(f);
if (version != CURRENT_CACHED_BOOK_VERSION)
{
// NB: We can just silently return FALSE here and don't worry about
// it anymore, because AddBookParam will load the MS project in
// absence of (properly versioned) .cached file and automatically
// create new .cached file immediately afterward.
return FALSE;
}
if (CacheReadInt32(f) != CACHED_BOOK_FORMAT_FLAGS)
return FALSE;
/* load contents : */
st = m_ContentsCnt;
m_ContentsCnt += CacheReadInt32(f);
m_Contents = (wxHtmlContentsItem*) realloc(m_Contents,
(m_ContentsCnt / wxHTML_REALLOC_STEP + 1) *
wxHTML_REALLOC_STEP * sizeof(wxHtmlContentsItem));
for (i = st; i < m_ContentsCnt; i++)
{
m_Contents[i].m_Level = CacheReadInt32(f);
m_Contents[i].m_ID = CacheReadInt32(f);
m_Contents[i].m_Name = CacheReadString(f);
m_Contents[i].m_Page = CacheReadString(f);
m_Contents[i].m_Book = book;
}
/* load index : */
st = m_IndexCnt;
m_IndexCnt += CacheReadInt32(f);
m_Index = (wxHtmlContentsItem*) realloc(m_Index, (m_IndexCnt / wxHTML_REALLOC_STEP + 1) *
wxHTML_REALLOC_STEP * sizeof(wxHtmlContentsItem));
for (i = st; i < m_IndexCnt; i++)
{
m_Index[i].m_Name = CacheReadString(f);
m_Index[i].m_Page = CacheReadString(f);
m_Index[i].m_Book = book;
}
return TRUE;
}
bool wxHtmlHelpData::SaveCachedBook(wxHtmlBookRecord *book, wxOutputStream *f)
{
int i;
wxInt32 cnt;
/* save header - version info : */
CacheWriteInt32(f, CURRENT_CACHED_BOOK_VERSION);
CacheWriteInt32(f, CACHED_BOOK_FORMAT_FLAGS);
/* save contents : */
for (cnt = 0, i = 0; i < m_ContentsCnt; i++)
if (m_Contents[i].m_Book == book && m_Contents[i].m_Level > 0)
cnt++;
CacheWriteInt32(f, cnt);
for (i = 0; i < m_ContentsCnt; i++)
{
if (m_Contents[i].m_Book != book || m_Contents[i].m_Level == 0)
continue;
CacheWriteInt32(f, m_Contents[i].m_Level);
CacheWriteInt32(f, m_Contents[i].m_ID);
CacheWriteString(f, m_Contents[i].m_Name);
CacheWriteString(f, m_Contents[i].m_Page);
}
/* save index : */
for (cnt = 0, i = 0; i < m_IndexCnt; i++)
if (m_Index[i].m_Book == book && m_Index[i].m_Level > 0)
cnt++;
CacheWriteInt32(f, cnt);
for (i = 0; i < m_IndexCnt; i++)
{
if (m_Index[i].m_Book != book || m_Index[i].m_Level == 0)
continue;
CacheWriteString(f, m_Index[i].m_Name);
CacheWriteString(f, m_Index[i].m_Page);
}
return TRUE;
}
void wxHtmlHelpData::SetTempDir(const wxString& path)
{
if (path == wxEmptyString) m_TempPath = path;
else
{
if (wxIsAbsolutePath(path)) m_TempPath = path;
else m_TempPath = wxGetCwd() + _T("/") + path;
if (m_TempPath[m_TempPath.Length() - 1] != _T('/'))
m_TempPath << _T('/');
}
}
static wxString SafeFileName(const wxString& s)
{
wxString res(s);
res.Replace(wxT("#"), wxT("_"));
res.Replace(wxT(":"), wxT("_"));
res.Replace(wxT("\\"), wxT("_"));
res.Replace(wxT("/"), wxT("_"));
return res;
}
bool wxHtmlHelpData::AddBookParam(const wxFSFile& bookfile,
wxFontEncoding encoding,
const wxString& title, const wxString& contfile,
const wxString& indexfile, const wxString& deftopic,
const wxString& path)
{
wxFileSystem fsys;
wxFSFile *fi;
wxHtmlBookRecord *bookr;
int IndexOld = m_IndexCnt,
ContentsOld = m_ContentsCnt;
if (!path.IsEmpty())
fsys.ChangePathTo(path, TRUE);
size_t booksCnt = m_BookRecords.GetCount();
for (size_t i = 0; i < booksCnt; i++)
{
if ( m_BookRecords[i].GetBookFile() == bookfile.GetLocation() )
return TRUE; // book is (was) loaded
}
bookr = new wxHtmlBookRecord(bookfile.GetLocation(), fsys.GetPath(), title, deftopic);
if (m_ContentsCnt % wxHTML_REALLOC_STEP == 0)
m_Contents = (wxHtmlContentsItem*) realloc(m_Contents, (m_ContentsCnt + wxHTML_REALLOC_STEP) * sizeof(wxHtmlContentsItem));
m_Contents[m_ContentsCnt].m_Level = 0;
m_Contents[m_ContentsCnt].m_ID = 0;
m_Contents[m_ContentsCnt].m_Page = new wxChar[deftopic.Length() + 1];
wxStrcpy(m_Contents[m_ContentsCnt].m_Page, deftopic.c_str());
m_Contents[m_ContentsCnt].m_Name = new wxChar [title.Length() + 1];
wxStrcpy(m_Contents[m_ContentsCnt].m_Name, title.c_str());
m_Contents[m_ContentsCnt].m_Book = bookr;
// store the contents index for later
int cont_start = m_ContentsCnt++;
// Try to find cached binary versions:
// 1. save file as book, but with .hhp.cached extension
// 2. same as 1. but in temp path
// 3. otherwise or if cache load failed, load it from MS.
fi = fsys.OpenFile(bookfile.GetLocation() + wxT(".cached"));
if (fi == NULL ||
#if wxUSE_DATETIME
fi->GetModificationTime() < bookfile.GetModificationTime() ||
#endif // wxUSE_DATETIME
!LoadCachedBook(bookr, fi->GetStream()))
{
if (fi != NULL) delete fi;
fi = fsys.OpenFile(m_TempPath + wxFileNameFromPath(bookfile.GetLocation()) + wxT(".cached"));
if (m_TempPath == wxEmptyString || fi == NULL ||
#if wxUSE_DATETIME
fi->GetModificationTime() < bookfile.GetModificationTime() ||
#endif // wxUSE_DATETIME
!LoadCachedBook(bookr, fi->GetStream()))
{
LoadMSProject(bookr, fsys, indexfile, contfile);
if (m_TempPath != wxEmptyString)
{
wxFileOutputStream *outs = new wxFileOutputStream(m_TempPath +
SafeFileName(wxFileNameFromPath(bookfile.GetLocation())) + wxT(".cached"));
SaveCachedBook(bookr, outs);
delete outs;
}
}
}
if (fi != NULL) delete fi;
// Now store the contents range
bookr->SetContentsRange(cont_start, m_ContentsCnt);
// Convert encoding, if neccessary:
if (encoding != wxFONTENCODING_SYSTEM)
{
wxFontEncodingArray a = wxEncodingConverter::GetPlatformEquivalents(encoding);
if (a.GetCount() != 0 && a[0] != encoding)
{
int i;
wxEncodingConverter conv;
conv.Init(encoding, a[0]);
for (i = IndexOld; i < m_IndexCnt; i++)
conv.Convert(m_Index[i].m_Name);
for (i = ContentsOld; i < m_ContentsCnt; i++)
conv.Convert(m_Contents[i].m_Name);
}
}
m_BookRecords.Add(bookr);
if (m_IndexCnt > 0)
qsort(m_Index, m_IndexCnt, sizeof(wxHtmlContentsItem), wxHtmlHelpIndexCompareFunc);
return TRUE;
}
bool wxHtmlHelpData::AddBook(const wxString& book)
{
if (book.Right(4).Lower() == wxT(".zip") ||
book.Right(4).Lower() == wxT(".htb") /*html book*/)
{
wxFileSystem fsys;
wxString s;
bool rt = FALSE;
s = fsys.FindFirst(book + wxT("#zip:") + wxT("*.hhp"), wxFILE);
while (!s.IsEmpty())
{
if (AddBook(s)) rt = TRUE;
s = fsys.FindNext();
}
return rt;
}
else
{
wxFSFile *fi;
wxFileSystem fsys;
wxString title = _("noname"),
safetitle,
start = wxEmptyString,
contents = wxEmptyString,
index = wxEmptyString,
charset = wxEmptyString;
fi = fsys.OpenFile(book);
if (fi == NULL)
{
wxLogError(_("Cannot open HTML help book: %s"), book.c_str());
return FALSE;
}
fsys.ChangePathTo(book);
const wxChar *lineptr;
wxChar linebuf[300];
wxString tmp;
wxHtmlFilterPlainText filter;
tmp = filter.ReadFile(*fi);
lineptr = tmp.c_str();
do
{
lineptr = ReadLine(lineptr, linebuf, 300);
for (wxChar *ch = linebuf; *ch != wxT('\0') && *ch != wxT('='); ch++)
*ch = tolower(*ch);
if (wxStrstr(linebuf, _T("title=")) == linebuf)
title = linebuf + wxStrlen(_T("title="));
if (wxStrstr(linebuf, _T("default topic=")) == linebuf)
start = linebuf + wxStrlen(_T("default topic="));
if (wxStrstr(linebuf, _T("index file=")) == linebuf)
index = linebuf + wxStrlen(_T("index file="));
if (wxStrstr(linebuf, _T("contents file=")) == linebuf)
contents = linebuf + wxStrlen(_T("contents file="));
if (wxStrstr(linebuf, _T("charset=")) == linebuf)
charset = linebuf + wxStrlen(_T("charset="));
} while (lineptr != NULL);
wxFontEncoding enc;
if (charset == wxEmptyString) enc = wxFONTENCODING_SYSTEM;
else enc = wxFontMapper::Get()->CharsetToEncoding(charset);
bool rtval = AddBookParam(*fi, enc,
title, contents, index, start, fsys.GetPath());
delete fi;
return rtval;
}
}
wxString wxHtmlHelpData::FindPageByName(const wxString& x)
{
int cnt;
int i;
wxFileSystem fsys;
wxFSFile *f;
wxString url(wxEmptyString);
/* 1. try to open given file: */
cnt = m_BookRecords.GetCount();
for (i = 0; i < cnt; i++)
{
f = fsys.OpenFile(m_BookRecords[i].GetFullPath(x));
if (f)
{
url = m_BookRecords[i].GetFullPath(x);
delete f;
return url;
}
}
/* 2. try to find a book: */
for (i = 0; i < cnt; i++)
{
if (m_BookRecords[i].GetTitle() == x)
{
url = m_BookRecords[i].GetFullPath(m_BookRecords[i].GetStart());
return url;
}
}
/* 3. try to find in contents: */
cnt = m_ContentsCnt;
for (i = 0; i < cnt; i++)
{
if (wxStrcmp(m_Contents[i].m_Name, x) == 0)
{
url = m_Contents[i].GetFullPath();
return url;
}
}
/* 4. try to find in index: */
cnt = m_IndexCnt;
for (i = 0; i < cnt; i++)
{
if (wxStrcmp(m_Index[i].m_Name, x) == 0)
{
url = m_Index[i].GetFullPath();
return url;
}
}
return url;
}
wxString wxHtmlHelpData::FindPageById(int id)
{
int i;
wxString url(wxEmptyString);
for (i = 0; i < m_ContentsCnt; i++)
{
if (m_Contents[i].m_ID == id)
{
url = m_Contents[i].GetFullPath();
return url;
}
}
return url;
}
//----------------------------------------------------------------------------------
// wxHtmlSearchStatus functions
//----------------------------------------------------------------------------------
wxHtmlSearchStatus::wxHtmlSearchStatus(wxHtmlHelpData* data, const wxString& keyword,
bool case_sensitive, bool whole_words_only,
const wxString& book)
{
m_Data = data;
m_Keyword = keyword;
wxHtmlBookRecord* bookr = NULL;
if (book != wxEmptyString)
{
// we have to search in a specific book. Find it first
int i, cnt = data->m_BookRecords.GetCount();
for (i = 0; i < cnt; i++)
if (data->m_BookRecords[i].GetTitle() == book)
{
bookr = &(data->m_BookRecords[i]);
m_CurIndex = bookr->GetContentsStart();
m_MaxIndex = bookr->GetContentsEnd();
break;
}
// check; we won't crash if the book doesn't exist, but it's Bad Anyway.
wxASSERT(bookr);
}
if (! bookr)
{
// no book specified; search all books
m_CurIndex = 0;
m_MaxIndex = m_Data->m_ContentsCnt;
}
m_Engine.LookFor(keyword, case_sensitive, whole_words_only);
m_Active = (m_CurIndex < m_MaxIndex);
m_LastPage = NULL;
}
bool wxHtmlSearchStatus::Search()
{
wxFSFile *file;
int i = m_CurIndex; // shortcut
bool found = FALSE;
wxChar *thepage;
if (!m_Active)
{
// sanity check. Illegal use, but we'll try to prevent a crash anyway
wxASSERT(m_Active);
return FALSE;
}
m_Name = wxEmptyString;
m_ContentsItem = NULL;
thepage = m_Data->m_Contents[i].m_Page;
m_Active = (++m_CurIndex < m_MaxIndex);
// check if it is same page with different anchor:
if (m_LastPage != NULL)
{
wxChar *p1, *p2;
for (p1 = thepage, p2 = m_LastPage;
*p1 != 0 && *p1 != _T('#') && *p1 == *p2; p1++, p2++) {}
m_LastPage = thepage;
if (*p1 == 0 || *p1 == _T('#'))
return FALSE;
}
else m_LastPage = thepage;
wxFileSystem fsys;
file = fsys.OpenFile(m_Data->m_Contents[i].m_Book->GetFullPath(thepage));
if (file)
{
if (m_Engine.Scan(*file))
{
m_Name = m_Data->m_Contents[i].m_Name;
m_ContentsItem = m_Data->m_Contents + i;
found = TRUE;
}
delete file;
}
return found;
}
//--------------------------------------------------------------------------------
// wxHtmlSearchEngine
//--------------------------------------------------------------------------------
void wxHtmlSearchEngine::LookFor(const wxString& keyword, bool case_sensitive, bool whole_words_only)
{
m_CaseSensitive = case_sensitive;
m_WholeWords = whole_words_only;
if (m_Keyword) delete[] m_Keyword;
m_Keyword = new wxChar[keyword.Length() + 1];
wxStrcpy(m_Keyword, keyword.c_str());
if (!m_CaseSensitive)
{
for (int i = wxStrlen(m_Keyword) - 1; i >= 0; i--)
{
if ((m_Keyword[i] >= wxT('A')) && (m_Keyword[i] <= wxT('Z')))
m_Keyword[i] += wxT('a') - wxT('A');
}
}
}
static inline bool WHITESPACE(wxChar c)
{
return c == _T(' ') || c == _T('\n') || c == _T('\r') || c == _T('\t');
}
bool wxHtmlSearchEngine::Scan(const wxFSFile& file)
{
wxASSERT_MSG(m_Keyword != NULL, wxT("wxHtmlSearchEngine::LookFor must be called before scanning!"));
int i, j;
int wrd = wxStrlen(m_Keyword);
bool found = FALSE;
wxHtmlFilterHTML filter;
wxString tmp = filter.ReadFile(file);
int lng = tmp.length();
const wxChar *buf = tmp.c_str();
if (!m_CaseSensitive)
for (i = 0; i < lng; i++)
tmp[(size_t)i] = (wxChar)wxTolower(tmp[(size_t)i]);
if (m_WholeWords)
{
for (i = 0; i < lng - wrd; i++)
{
if (WHITESPACE(buf[i])) continue;
j = 0;
while ((j < wrd) && (buf[i + j] == m_Keyword[j])) j++;
if (j == wrd && WHITESPACE(buf[i + j])) { found = TRUE; break; }
}
}
else
{
for (i = 0; i < lng - wrd; i++)
{
j = 0;
while ((j < wrd) && (buf[i + j] == m_Keyword[j])) j++;
if (j == wrd) { found = TRUE; break; }
}
}
return found;
}
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,728 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: htmlcell.cpp
// Purpose: wxHtmlCell - basic element of HTML output
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "htmlcell.h"
#endif
#include "wx/wxprec.h"
#include "wx/defs.h"
#if wxUSE_HTML && wxUSE_STREAMS
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WXPRECOMP
#include "wx/brush.h"
#include "wx/colour.h"
#include "wx/dc.h"
#endif
#include "wx/html/htmlcell.h"
#include "wx/html/htmlwin.h"
#include <stdlib.h>
//-----------------------------------------------------------------------------
// wxHtmlCell
//-----------------------------------------------------------------------------
wxHtmlCell::wxHtmlCell() : wxObject()
{
m_Next = NULL;
m_Parent = NULL;
m_Width = m_Height = m_Descent = 0;
m_CanLiveOnPagebreak = TRUE;
m_Link = NULL;
}
wxHtmlCell::~wxHtmlCell()
{
delete m_Link;
}
void wxHtmlCell::OnMouseClick(wxWindow *parent, int x, int y,
const wxMouseEvent& event)
{
wxHtmlLinkInfo *lnk = GetLink(x, y);
if (lnk != NULL)
{
wxHtmlLinkInfo lnk2(*lnk);
lnk2.SetEvent(&event);
lnk2.SetHtmlCell(this);
// note : this cast is legal because parent is *always* wxHtmlWindow
wxStaticCast(parent, wxHtmlWindow)->OnLinkClicked(lnk2);
}
}
bool wxHtmlCell::AdjustPagebreak(int *pagebreak, int* WXUNUSED(known_pagebreaks), int WXUNUSED(number_of_pages)) const
{
if ((!m_CanLiveOnPagebreak) &&
m_PosY < *pagebreak && m_PosY + m_Height > *pagebreak)
{
*pagebreak = m_PosY;
return TRUE;
}
return FALSE;
}
void wxHtmlCell::SetLink(const wxHtmlLinkInfo& link)
{
if (m_Link) delete m_Link;
m_Link = NULL;
if (link.GetHref() != wxEmptyString)
m_Link = new wxHtmlLinkInfo(link);
}
void wxHtmlCell::Layout(int WXUNUSED(w))
{
SetPos(0, 0);
}
void wxHtmlCell::GetHorizontalConstraints(int *left, int *right) const
{
if (left)
*left = m_PosX;
if (right)
*right = m_PosX + m_Width;
}
const wxHtmlCell* wxHtmlCell::Find(int WXUNUSED(condition), const void* WXUNUSED(param)) const
{
return NULL;
}
wxHtmlCell *wxHtmlCell::FindCellByPos(wxCoord x, wxCoord y) const
{
if ( x >= 0 && x < m_Width && y >= 0 && y < m_Height )
return wxConstCast(this, wxHtmlCell);
return NULL;
}
//-----------------------------------------------------------------------------
// wxHtmlWordCell
//-----------------------------------------------------------------------------
wxHtmlWordCell::wxHtmlWordCell(const wxString& word, wxDC& dc) : wxHtmlCell()
{
m_Word = word;
dc.GetTextExtent(m_Word, &m_Width, &m_Height, &m_Descent);
SetCanLiveOnPagebreak(FALSE);
}
void wxHtmlWordCell::Draw(wxDC& dc, int x, int y, int WXUNUSED(view_y1), int WXUNUSED(view_y2))
{
dc.DrawText(m_Word, x + m_PosX, y + m_PosY);
}
//-----------------------------------------------------------------------------
// wxHtmlContainerCell
//-----------------------------------------------------------------------------
wxHtmlContainerCell::wxHtmlContainerCell(wxHtmlContainerCell *parent) : wxHtmlCell()
{
m_Cells = m_LastCell = NULL;
m_Parent = parent;
if (m_Parent) m_Parent->InsertCell(this);
m_AlignHor = wxHTML_ALIGN_LEFT;
m_AlignVer = wxHTML_ALIGN_BOTTOM;
m_IndentLeft = m_IndentRight = m_IndentTop = m_IndentBottom = 0;
m_WidthFloat = 100; m_WidthFloatUnits = wxHTML_UNITS_PERCENT;
m_UseBkColour = FALSE;
m_UseBorder = FALSE;
m_MinHeight = 0;
m_MinHeightAlign = wxHTML_ALIGN_TOP;
m_LastLayout = -1;
}
wxHtmlContainerCell::~wxHtmlContainerCell()
{
wxHtmlCell *cell = m_Cells;
while ( cell )
{
wxHtmlCell *cellNext = cell->GetNext();
delete cell;
cell = cellNext;
}
}
void wxHtmlContainerCell::SetIndent(int i, int what, int units)
{
int val = (units == wxHTML_UNITS_PIXELS) ? i : -i;
if (what & wxHTML_INDENT_LEFT) m_IndentLeft = val;
if (what & wxHTML_INDENT_RIGHT) m_IndentRight = val;
if (what & wxHTML_INDENT_TOP) m_IndentTop = val;
if (what & wxHTML_INDENT_BOTTOM) m_IndentBottom = val;
m_LastLayout = -1;
}
int wxHtmlContainerCell::GetIndent(int ind) const
{
if (ind & wxHTML_INDENT_LEFT) return m_IndentLeft;
else if (ind & wxHTML_INDENT_RIGHT) return m_IndentRight;
else if (ind & wxHTML_INDENT_TOP) return m_IndentTop;
else if (ind & wxHTML_INDENT_BOTTOM) return m_IndentBottom;
else return -1; /* BUG! Should not be called... */
}
int wxHtmlContainerCell::GetIndentUnits(int ind) const
{
bool p = FALSE;
if (ind & wxHTML_INDENT_LEFT) p = m_IndentLeft < 0;
else if (ind & wxHTML_INDENT_RIGHT) p = m_IndentRight < 0;
else if (ind & wxHTML_INDENT_TOP) p = m_IndentTop < 0;
else if (ind & wxHTML_INDENT_BOTTOM) p = m_IndentBottom < 0;
if (p) return wxHTML_UNITS_PERCENT;
else return wxHTML_UNITS_PIXELS;
}
bool wxHtmlContainerCell::AdjustPagebreak(int *pagebreak, int* known_pagebreaks, int number_of_pages) const
{
if (!m_CanLiveOnPagebreak)
return wxHtmlCell::AdjustPagebreak(pagebreak, known_pagebreaks, number_of_pages);
else
{
wxHtmlCell *c = GetFirstCell();
bool rt = FALSE;
int pbrk = *pagebreak - m_PosY;
while (c)
{
if (c->AdjustPagebreak(&pbrk, known_pagebreaks, number_of_pages))
rt = TRUE;
c = c->GetNext();
}
if (rt)
*pagebreak = pbrk + m_PosY;
return rt;
}
}
void wxHtmlContainerCell::Layout(int w)
{
wxHtmlCell::Layout(w);
if (m_LastLayout == w) return;
// VS: Any attempt to layout with negative or zero width leads to hell,
// but we can't ignore such attempts completely, since it sometimes
// happen (e.g. when trying how small a table can be). The best thing we
// can do is to set the width of child cells to zero
if (w < 1)
{
m_Width = 0;
for (wxHtmlCell *cell = m_Cells; cell; cell = cell->GetNext())
cell->Layout(0);
// this does two things: it recursively calls this code on all
// child contrainers and resets children's position to (0,0)
return;
}
wxHtmlCell *cell = m_Cells, *line = m_Cells;
long xpos = 0, ypos = m_IndentTop;
int xdelta = 0, ybasicpos = 0, ydiff;
int s_width, s_indent;
int ysizeup = 0, ysizedown = 0;
int MaxLineWidth = 0;
int xcnt = 0;
/*
WIDTH ADJUSTING :
*/
if (m_WidthFloatUnits == wxHTML_UNITS_PERCENT)
{
if (m_WidthFloat < 0) m_Width = (100 + m_WidthFloat) * w / 100;
else m_Width = m_WidthFloat * w / 100;
}
else
{
if (m_WidthFloat < 0) m_Width = w + m_WidthFloat;
else m_Width = m_WidthFloat;
}
if (m_Cells)
{
int l = (m_IndentLeft < 0) ? (-m_IndentLeft * m_Width / 100) : m_IndentLeft;
int r = (m_IndentRight < 0) ? (-m_IndentRight * m_Width / 100) : m_IndentRight;
for (wxHtmlCell *cell = m_Cells; cell; cell = cell->GetNext())
cell->Layout(m_Width - (l + r));
}
/*
LAYOUTING :
*/
// adjust indentation:
s_indent = (m_IndentLeft < 0) ? (-m_IndentLeft * m_Width / 100) : m_IndentLeft;
s_width = m_Width - s_indent - ((m_IndentRight < 0) ? (-m_IndentRight * m_Width / 100) : m_IndentRight);
// my own layouting:
while (cell != NULL)
{
switch (m_AlignVer)
{
case wxHTML_ALIGN_TOP : ybasicpos = 0; break;
case wxHTML_ALIGN_BOTTOM : ybasicpos = - cell->GetHeight(); break;
case wxHTML_ALIGN_CENTER : ybasicpos = - cell->GetHeight() / 2; break;
}
ydiff = cell->GetHeight() + ybasicpos;
if (cell->GetDescent() + ydiff > ysizedown) ysizedown = cell->GetDescent() + ydiff;
if (ybasicpos + cell->GetDescent() < -ysizeup) ysizeup = - (ybasicpos + cell->GetDescent());
cell->SetPos(xpos, ybasicpos + cell->GetDescent());
xpos += cell->GetWidth();
cell = cell->GetNext();
xcnt++;
// force new line if occured:
if ((cell == NULL) || (xpos + cell->GetWidth() > s_width))
{
if (xpos > MaxLineWidth) MaxLineWidth = xpos;
if (ysizeup < 0) ysizeup = 0;
if (ysizedown < 0) ysizedown = 0;
switch (m_AlignHor) {
case wxHTML_ALIGN_LEFT :
case wxHTML_ALIGN_JUSTIFY :
xdelta = 0;
break;
case wxHTML_ALIGN_RIGHT :
xdelta = 0 + (s_width - xpos);
break;
case wxHTML_ALIGN_CENTER :
xdelta = 0 + (s_width - xpos) / 2;
break;
}
if (xdelta < 0) xdelta = 0;
xdelta += s_indent;
ypos += ysizeup;
if (m_AlignHor != wxHTML_ALIGN_JUSTIFY || cell == NULL)
while (line != cell)
{
line->SetPos(line->GetPosX() + xdelta,
ypos + line->GetPosY());
line = line->GetNext();
}
else
{
int counter = 0;
int step = (s_width - xpos);
if (step < 0) step = 0;
xcnt--;
if (xcnt > 0) while (line != cell)
{
line->SetPos(line->GetPosX() + s_indent +
(counter++ * step / xcnt),
ypos + line->GetPosY());
line = line->GetNext();
}
xcnt++;
}
ypos += ysizedown;
xpos = xcnt = 0;
ysizeup = ysizedown = 0;
line = cell;
}
}
// setup height & width, depending on container layout:
m_Height = ypos + (ysizedown + ysizeup) + m_IndentBottom;
if (m_Height < m_MinHeight)
{
if (m_MinHeightAlign != wxHTML_ALIGN_TOP)
{
int diff = m_MinHeight - m_Height;
if (m_MinHeightAlign == wxHTML_ALIGN_CENTER) diff /= 2;
cell = m_Cells;
while (cell)
{
cell->SetPos(cell->GetPosX(), cell->GetPosY() + diff);
cell = cell->GetNext();
}
}
m_Height = m_MinHeight;
}
MaxLineWidth += s_indent + ((m_IndentRight < 0) ? (-m_IndentRight * m_Width / 100) : m_IndentRight);
if (m_Width < MaxLineWidth) m_Width = MaxLineWidth;
m_LastLayout = w;
}
#define mMin(a, b) (((a) < (b)) ? (a) : (b))
#define mMax(a, b) (((a) < (b)) ? (b) : (a))
void wxHtmlContainerCell::Draw(wxDC& dc, int x, int y, int view_y1, int view_y2)
{
// container visible, draw it:
if ((y + m_PosY <= view_y2) && (y + m_PosY + m_Height > view_y1))
{
if (m_UseBkColour)
{
wxBrush myb = wxBrush(m_BkColour, wxSOLID);
int real_y1 = mMax(y + m_PosY, view_y1);
int real_y2 = mMin(y + m_PosY + m_Height - 1, view_y2);
dc.SetBrush(myb);
dc.SetPen(*wxTRANSPARENT_PEN);
dc.DrawRectangle(x + m_PosX, real_y1, m_Width, real_y2 - real_y1 + 1);
}
if (m_UseBorder)
{
wxPen mypen1(m_BorderColour1, 1, wxSOLID);
wxPen mypen2(m_BorderColour2, 1, wxSOLID);
dc.SetPen(mypen1);
dc.DrawLine(x + m_PosX, y + m_PosY, x + m_PosX, y + m_PosY + m_Height - 1);
dc.DrawLine(x + m_PosX, y + m_PosY, x + m_PosX + m_Width, y + m_PosY);
dc.SetPen(mypen2);
dc.DrawLine(x + m_PosX + m_Width - 1, y + m_PosY, x + m_PosX + m_Width - 1, y + m_PosY + m_Height - 1);
dc.DrawLine(x + m_PosX, y + m_PosY + m_Height - 1, x + m_PosX + m_Width, y + m_PosY + m_Height - 1);
}
if (m_Cells)
{
for (wxHtmlCell *cell = m_Cells; cell; cell = cell->GetNext())
cell->Draw(dc, x + m_PosX, y + m_PosY, view_y1, view_y2);
}
}
// container invisible, just proceed font+color changing:
else
{
if (m_Cells)
{
for (wxHtmlCell *cell = m_Cells; cell; cell = cell->GetNext())
cell->DrawInvisible(dc, x + m_PosX, y + m_PosY);
}
}
}
void wxHtmlContainerCell::DrawInvisible(wxDC& dc, int x, int y)
{
if (m_Cells)
{
for (wxHtmlCell *cell = m_Cells; cell; cell = cell->GetNext())
cell->DrawInvisible(dc, x + m_PosX, y + m_PosY);
}
}
wxColour wxHtmlContainerCell::GetBackgroundColour()
{
if (m_UseBkColour)
return m_BkColour;
else
return wxNullColour;
}
wxHtmlLinkInfo *wxHtmlContainerCell::GetLink(int x, int y) const
{
wxHtmlCell *cell = FindCellByPos(x, y);
// VZ: I don't know if we should pass absolute or relative coords to
// wxHtmlCell::GetLink()? As the base class version just ignores them
// anyhow, it hardly matters right now but should still be clarified
return cell ? cell->GetLink(x, y) : NULL;
}
void wxHtmlContainerCell::InsertCell(wxHtmlCell *f)
{
if (!m_Cells) m_Cells = m_LastCell = f;
else
{
m_LastCell->SetNext(f);
m_LastCell = f;
if (m_LastCell) while (m_LastCell->GetNext()) m_LastCell = m_LastCell->GetNext();
}
f->SetParent(this);
m_LastLayout = -1;
}
void wxHtmlContainerCell::SetAlign(const wxHtmlTag& tag)
{
if (tag.HasParam(wxT("ALIGN")))
{
wxString alg = tag.GetParam(wxT("ALIGN"));
alg.MakeUpper();
if (alg == wxT("CENTER"))
SetAlignHor(wxHTML_ALIGN_CENTER);
else if (alg == wxT("LEFT"))
SetAlignHor(wxHTML_ALIGN_LEFT);
else if (alg == wxT("JUSTIFY"))
SetAlignHor(wxHTML_ALIGN_JUSTIFY);
else if (alg == wxT("RIGHT"))
SetAlignHor(wxHTML_ALIGN_RIGHT);
m_LastLayout = -1;
}
}
void wxHtmlContainerCell::SetWidthFloat(const wxHtmlTag& tag, double pixel_scale)
{
if (tag.HasParam(wxT("WIDTH")))
{
int wdi;
wxString wd = tag.GetParam(wxT("WIDTH"));
if (wd[wd.Length()-1] == wxT('%'))
{
wxSscanf(wd.c_str(), wxT("%i%%"), &wdi);
SetWidthFloat(wdi, wxHTML_UNITS_PERCENT);
}
else
{
wxSscanf(wd.c_str(), wxT("%i"), &wdi);
SetWidthFloat((int)(pixel_scale * (double)wdi), wxHTML_UNITS_PIXELS);
}
m_LastLayout = -1;
}
}
const wxHtmlCell* wxHtmlContainerCell::Find(int condition, const void* param) const
{
if (m_Cells)
{
const wxHtmlCell *r = NULL;
for (wxHtmlCell *cell = m_Cells; cell; cell = cell->GetNext())
{
r = cell->Find(condition, param);
if (r) return r;
}
}
return NULL;
}
wxHtmlCell *wxHtmlContainerCell::FindCellByPos(wxCoord x, wxCoord y) const
{
for ( const wxHtmlCell *cell = m_Cells; cell; cell = cell->GetNext() )
{
int cx = cell->GetPosX(),
cy = cell->GetPosY();
if ( (cx <= x) && (cx + cell->GetWidth() > x) &&
(cy <= y) && (cy + cell->GetHeight() > y) )
{
return cell->FindCellByPos(x - cx, y - cy);
}
}
return NULL;
}
void wxHtmlContainerCell::OnMouseClick(wxWindow *parent, int x, int y, const wxMouseEvent& event)
{
wxHtmlCell *cell = FindCellByPos(x, y);
if ( cell )
cell->OnMouseClick(parent, x, y, event);
}
void wxHtmlContainerCell::GetHorizontalConstraints(int *left, int *right) const
{
int cleft = m_PosX + m_Width, cright = m_PosX; // worst case
int l, r;
for (wxHtmlCell *cell = m_Cells; cell; cell = cell->GetNext())
{
cell->GetHorizontalConstraints(&l, &r);
if (l < cleft)
cleft = l;
if (r > cright)
cright = r;
}
cleft -= (m_IndentLeft < 0) ? (-m_IndentLeft * m_Width / 100) : m_IndentLeft;
cright += (m_IndentRight < 0) ? (-m_IndentRight * m_Width / 100) : m_IndentRight;
if (left)
*left = cleft;
if (right)
*right = cright;
}
//--------------------------------------------------------------------------------
// wxHtmlColourCell
//--------------------------------------------------------------------------------
void wxHtmlColourCell::Draw(wxDC& dc, int WXUNUSED(x), int WXUNUSED(y), int WXUNUSED(view_y1), int WXUNUSED(view_y2))
{
if (m_Flags & wxHTML_CLR_FOREGROUND)
dc.SetTextForeground(m_Colour);
if (m_Flags & wxHTML_CLR_BACKGROUND)
{
dc.SetBackground(wxBrush(m_Colour, wxSOLID));
dc.SetTextBackground(m_Colour);
}
}
void wxHtmlColourCell::DrawInvisible(wxDC& dc, int WXUNUSED(x), int WXUNUSED(y))
{
if (m_Flags & wxHTML_CLR_FOREGROUND)
dc.SetTextForeground(m_Colour);
if (m_Flags & wxHTML_CLR_BACKGROUND)
{
dc.SetBackground(wxBrush(m_Colour, wxSOLID));
dc.SetTextBackground(m_Colour);
}
}
//--------------------------------------------------------------------------------
// wxHtmlFontCell
//--------------------------------------------------------------------------------
void wxHtmlFontCell::Draw(wxDC& dc, int WXUNUSED(x), int WXUNUSED(y), int WXUNUSED(view_y1), int WXUNUSED(view_y2))
{
dc.SetFont(m_Font);
}
void wxHtmlFontCell::DrawInvisible(wxDC& dc, int WXUNUSED(x), int WXUNUSED(y))
{
dc.SetFont(m_Font);
}
//--------------------------------------------------------------------------------
// wxHtmlWidgetCell
//--------------------------------------------------------------------------------
wxHtmlWidgetCell::wxHtmlWidgetCell(wxWindow *wnd, int w)
{
int sx, sy;
m_Wnd = wnd;
m_Wnd->GetSize(&sx, &sy);
m_Width = sx, m_Height = sy;
m_WidthFloat = w;
}
void wxHtmlWidgetCell::Draw(wxDC& WXUNUSED(dc), int WXUNUSED(x), int WXUNUSED(y), int WXUNUSED(view_y1), int WXUNUSED(view_y2))
{
int absx = 0, absy = 0, stx, sty;
wxHtmlCell *c = this;
while (c)
{
absx += c->GetPosX();
absy += c->GetPosY();
c = c->GetParent();
}
((wxScrolledWindow*)(m_Wnd->GetParent()))->GetViewStart(&stx, &sty);
m_Wnd->SetSize(absx - wxHTML_SCROLL_STEP * stx, absy - wxHTML_SCROLL_STEP * sty, m_Width, m_Height);
}
void wxHtmlWidgetCell::DrawInvisible(wxDC& WXUNUSED(dc), int WXUNUSED(x), int WXUNUSED(y))
{
int absx = 0, absy = 0, stx, sty;
wxHtmlCell *c = this;
while (c)
{
absx += c->GetPosX();
absy += c->GetPosY();
c = c->GetParent();
}
((wxScrolledWindow*)(m_Wnd->GetParent()))->GetViewStart(&stx, &sty);
m_Wnd->SetSize(absx - wxHTML_SCROLL_STEP * stx, absy - wxHTML_SCROLL_STEP * sty, m_Width, m_Height);
}
void wxHtmlWidgetCell::Layout(int w)
{
if (m_WidthFloat != 0)
{
m_Width = (w * m_WidthFloat) / 100;
m_Wnd->SetSize(m_Width, m_Height);
}
wxHtmlCell::Layout(w);
}
#endif

View File

@@ -1,229 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: htmlfilt.cpp
// Purpose: wxHtmlFilter - input filter for translating into HTML format
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "htmlfilt.h"
#endif
#include "wx/wxprec.h"
#include "wx/defs.h"
#if wxUSE_HTML && wxUSE_STREAMS
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WXPRECOMP
#include "wx/log.h"
#include "wx/intl.h"
#endif
#include "wx/strconv.h"
#include "wx/html/htmlfilt.h"
#include "wx/html/htmlwin.h"
// utility function: read a wxString from a wxInputStream
static void ReadString(wxString& str, wxInputStream* s, wxMBConv& conv)
{
size_t streamSize = s->GetSize();
if (streamSize == ~(size_t)0)
{
const size_t bufSize = 4095;
char buffer[bufSize+1];
size_t lastRead;
do
{
s->Read(buffer, bufSize);
lastRead = s->LastRead();
buffer[lastRead] = 0;
str.Append(wxString(buffer, conv));
}
while (lastRead == bufSize);
}
else
{
char* src = new char[streamSize+1];
s->Read(src, streamSize);
src[streamSize] = 0;
str = wxString(src, conv);
delete[] src;
}
}
/*
There is code for several default filters:
*/
IMPLEMENT_ABSTRACT_CLASS(wxHtmlFilter, wxObject)
//--------------------------------------------------------------------------------
// wxHtmlFilterPlainText
// filter for text/plain or uknown
//--------------------------------------------------------------------------------
IMPLEMENT_DYNAMIC_CLASS(wxHtmlFilterPlainText, wxHtmlFilter)
bool wxHtmlFilterPlainText::CanRead(const wxFSFile& WXUNUSED(file)) const
{
return TRUE;
}
wxString wxHtmlFilterPlainText::ReadFile(const wxFSFile& file) const
{
wxInputStream *s = file.GetStream();
wxString doc, doc2;
if (s == NULL) return wxEmptyString;
ReadString(doc, s, wxConvISO8859_1);
doc.Replace(wxT("&"), wxT("&amp;"), TRUE);
doc.Replace(wxT("<"), wxT("&lt;"), TRUE);
doc.Replace(wxT(">"), wxT("&gt;"), TRUE);
doc2 = wxT("<HTML><BODY><PRE>\n") + doc + wxT("\n</PRE></BODY></HTML>");
return doc2;
}
//--------------------------------------------------------------------------------
// wxHtmlFilterImage
// filter for image/*
//--------------------------------------------------------------------------------
class wxHtmlFilterImage : public wxHtmlFilter
{
DECLARE_DYNAMIC_CLASS(wxHtmlFilterImage)
public:
virtual bool CanRead(const wxFSFile& file) const;
virtual wxString ReadFile(const wxFSFile& file) const;
};
IMPLEMENT_DYNAMIC_CLASS(wxHtmlFilterImage, wxHtmlFilter)
bool wxHtmlFilterImage::CanRead(const wxFSFile& file) const
{
return (file.GetMimeType().Left(6) == wxT("image/"));
}
wxString wxHtmlFilterImage::ReadFile(const wxFSFile& file) const
{
wxString res = wxT("<HTML><BODY><IMG SRC=\"") + file.GetLocation() + wxT("\"></BODY></HTML>");
return res;
}
//--------------------------------------------------------------------------------
// wxHtmlFilterHTML
// filter for text/html
//--------------------------------------------------------------------------------
IMPLEMENT_DYNAMIC_CLASS(wxHtmlFilterHTML, wxHtmlFilter)
bool wxHtmlFilterHTML::CanRead(const wxFSFile& file) const
{
// return (file.GetMimeType() == "text/html");
// This is true in most case but some page can return:
// "text/html; char-encoding=...."
// So we use Find instead
return (file.GetMimeType().Find(wxT("text/html")) == 0);
}
wxString wxHtmlFilterHTML::ReadFile(const wxFSFile& file) const
{
wxInputStream *s = file.GetStream();
wxString doc;
if (s == NULL)
{
wxLogError(_("Cannot open HTML document: %s"), file.GetLocation().c_str());
return wxEmptyString;
}
// NB: We convert input file to wchar_t here in Unicode mode, based on
// either Content-Type header or <meta> tags. In ANSI mode, we don't
// do it as it is done by wxHtmlParser (for this reason, we add <meta>
// tag if we used Content-Type header).
#if wxUSE_UNICODE
int charsetPos;
if ((charsetPos = file.GetMimeType().Find(_T("; charset="))) != wxNOT_FOUND)
{
wxString charset = file.GetMimeType().Mid(charsetPos + 10);
wxCSConv conv(charset);
ReadString(doc, s, conv);
}
else
{
wxString tmpdoc;
ReadString(tmpdoc, s, wxConvISO8859_1);
wxString charset = wxHtmlParser::ExtractCharsetInformation(tmpdoc);
if (charset.empty())
doc = tmpdoc;
else
{
wxCSConv conv(charset);
doc = wxString(tmpdoc.mb_str(wxConvISO8859_1), conv);
}
}
#else // !wxUSE_UNICODE
ReadString(doc, s, wxConvLibc);
// add meta tag if we obtained this through http:
if (!file.GetMimeType().empty())
{
wxString hdr;
wxString mime = file.GetMimeType();
hdr.Printf(_T("<meta http-equiv=\"Content-Type\" content=\"%s\">"), mime.c_str());
return hdr+doc;
}
#endif
return doc;
}
///// Module:
class wxHtmlFilterModule : public wxModule
{
DECLARE_DYNAMIC_CLASS(wxHtmlFilterModule)
public:
virtual bool OnInit()
{
wxHtmlWindow::AddFilter(new wxHtmlFilterHTML);
wxHtmlWindow::AddFilter(new wxHtmlFilterImage);
return TRUE;
}
virtual void OnExit() {}
};
IMPLEMENT_DYNAMIC_CLASS(wxHtmlFilterModule, wxModule)
#endif

View File

@@ -1,900 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: htmlpars.cpp
// Purpose: wxHtmlParser class (generic parser)
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "htmlpars.h"
#endif
#include "wx/wxprec.h"
#include "wx/defs.h"
#if wxUSE_HTML && wxUSE_STREAMS
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WXPRECOMP
#include "wx/log.h"
#include "wx/intl.h"
#endif
#include "wx/tokenzr.h"
#include "wx/wfstream.h"
#include "wx/url.h"
#include "wx/fontmap.h"
#include "wx/html/htmldefs.h"
#include "wx/html/htmlpars.h"
#include "wx/dynarray.h"
#include "wx/arrimpl.cpp"
//-----------------------------------------------------------------------------
// wxHtmlParser helpers
//-----------------------------------------------------------------------------
class wxHtmlTextPiece
{
public:
wxHtmlTextPiece(int pos, int lng) : m_pos(pos), m_lng(lng) {}
int m_pos, m_lng;
};
WX_DECLARE_OBJARRAY(wxHtmlTextPiece, wxHtmlTextPieces);
WX_DEFINE_OBJARRAY(wxHtmlTextPieces);
class wxHtmlParserState
{
public:
wxHtmlTag *m_curTag;
wxHtmlTag *m_tags;
wxHtmlTextPieces *m_textPieces;
int m_curTextPiece;
wxString m_source;
wxHtmlParserState *m_nextState;
};
//-----------------------------------------------------------------------------
// wxHtmlParser
//-----------------------------------------------------------------------------
IMPLEMENT_ABSTRACT_CLASS(wxHtmlParser,wxObject)
wxHtmlParser::wxHtmlParser()
: wxObject(), m_HandlersHash(wxKEY_STRING),
m_FS(NULL), m_HandlersStack(NULL)
{
m_entitiesParser = new wxHtmlEntitiesParser;
m_Tags = NULL;
m_CurTag = NULL;
m_TextPieces = NULL;
m_CurTextPiece = 0;
m_SavedStates = NULL;
}
wxHtmlParser::~wxHtmlParser()
{
while (RestoreState()) {}
DestroyDOMTree();
delete m_HandlersStack;
m_HandlersHash.Clear();
m_HandlersList.DeleteContents(TRUE);
m_HandlersList.Clear();
delete m_entitiesParser;
}
wxObject* wxHtmlParser::Parse(const wxString& source)
{
InitParser(source);
DoParsing();
wxObject *result = GetProduct();
DoneParser();
return result;
}
void wxHtmlParser::InitParser(const wxString& source)
{
SetSource(source);
m_stopParsing = FALSE;
}
void wxHtmlParser::DoneParser()
{
DestroyDOMTree();
}
void wxHtmlParser::SetSource(const wxString& src)
{
DestroyDOMTree();
m_Source = src;
CreateDOMTree();
m_CurTag = NULL;
m_CurTextPiece = 0;
}
void wxHtmlParser::CreateDOMTree()
{
wxHtmlTagsCache cache(m_Source);
m_TextPieces = new wxHtmlTextPieces;
CreateDOMSubTree(NULL, 0, m_Source.Length(), &cache);
m_CurTextPiece = 0;
}
extern bool wxIsCDATAElement(const wxChar *tag);
void wxHtmlParser::CreateDOMSubTree(wxHtmlTag *cur,
int begin_pos, int end_pos,
wxHtmlTagsCache *cache)
{
if (end_pos <= begin_pos) return;
wxChar c;
int i = begin_pos;
int textBeginning = begin_pos;
// If the tag contains CDATA text, we include the text between beginning
// and ending tag verbosely. Setting i=end_pos will skip to the very
// end of this function where text piece is added, bypassing any child
// tags parsing (CDATA element can't have child elements by definition):
if (cur != NULL && wxIsCDATAElement(cur->GetName().c_str()))
{
i = end_pos;
}
while (i < end_pos)
{
c = m_Source.GetChar(i);
if (c == wxT('<'))
{
// add text to m_TextPieces:
if (i - textBeginning > 0)
m_TextPieces->Add(
wxHtmlTextPiece(textBeginning, i - textBeginning));
// if it is a comment, skip it:
if (i < end_pos-6 && m_Source.GetChar(i+1) == wxT('!') &&
m_Source.GetChar(i+2) == wxT('-') &&
m_Source.GetChar(i+3) == wxT('-'))
{
// Comments begin with "<!--" and end with "--[ \t\r\n]*>"
// according to HTML 4.0
int dashes = 0;
i += 4;
while (i < end_pos)
{
c = m_Source.GetChar(i++);
if ((c == wxT(' ') || c == wxT('\n') ||
c == wxT('\r') || c == wxT('\t')) && dashes >= 2) {}
else if (c == wxT('>') && dashes >= 2)
{
textBeginning = i;
break;
}
else if (c == wxT('-'))
dashes++;
else
dashes = 0;
}
}
// add another tag to the tree:
else if (i < end_pos-1 && m_Source.GetChar(i+1) != wxT('/'))
{
wxHtmlTag *chd;
if (cur)
chd = new wxHtmlTag(cur, m_Source,
i, end_pos, cache, m_entitiesParser);
else
{
chd = new wxHtmlTag(NULL, m_Source,
i, end_pos, cache, m_entitiesParser);
if (!m_Tags)
{
// if this is the first tag to be created make the root
// m_Tags point to it:
m_Tags = chd;
}
else
{
// if there is already a root tag add this tag as
// the last sibling:
chd->m_Prev = m_Tags->GetLastSibling();
chd->m_Prev->m_Next = chd;
}
}
if (chd->HasEnding())
{
CreateDOMSubTree(chd,
chd->GetBeginPos(), chd->GetEndPos1(),
cache);
i = chd->GetEndPos2();
}
else
i = chd->GetBeginPos();
textBeginning = i;
}
// ... or skip ending tag:
else
{
while (i < end_pos && m_Source.GetChar(i) != wxT('>')) i++;
textBeginning = i+1;
}
}
else i++;
}
// add remaining text to m_TextPieces:
if (end_pos - textBeginning > 0)
m_TextPieces->Add(
wxHtmlTextPiece(textBeginning, end_pos - textBeginning));
}
void wxHtmlParser::DestroyDOMTree()
{
wxHtmlTag *t1, *t2;
t1 = m_Tags;
while (t1)
{
t2 = t1->GetNextSibling();
delete t1;
t1 = t2;
}
m_Tags = m_CurTag = NULL;
delete m_TextPieces;
m_TextPieces = NULL;
}
void wxHtmlParser::DoParsing()
{
m_CurTag = m_Tags;
m_CurTextPiece = 0;
DoParsing(0, m_Source.Length());
}
void wxHtmlParser::DoParsing(int begin_pos, int end_pos)
{
if (end_pos <= begin_pos) return;
wxHtmlTextPieces& pieces = *m_TextPieces;
size_t piecesCnt = pieces.GetCount();
while (begin_pos < end_pos)
{
while (m_CurTag && m_CurTag->GetBeginPos() < begin_pos)
m_CurTag = m_CurTag->GetNextTag();
while (m_CurTextPiece < piecesCnt &&
pieces[m_CurTextPiece].m_pos < begin_pos)
m_CurTextPiece++;
if (m_CurTextPiece < piecesCnt &&
(!m_CurTag ||
pieces[m_CurTextPiece].m_pos < m_CurTag->GetBeginPos()))
{
// Add text:
AddText(GetEntitiesParser()->Parse(
m_Source.Mid(pieces[m_CurTextPiece].m_pos,
pieces[m_CurTextPiece].m_lng)));
begin_pos = pieces[m_CurTextPiece].m_pos +
pieces[m_CurTextPiece].m_lng;
m_CurTextPiece++;
}
else if (m_CurTag)
{
// Add tag:
if (m_CurTag)
{
if (m_CurTag->HasEnding())
begin_pos = m_CurTag->GetEndPos2();
else
begin_pos = m_CurTag->GetBeginPos();
}
wxHtmlTag *t = m_CurTag;
m_CurTag = m_CurTag->GetNextTag();
AddTag(*t);
if (m_stopParsing)
return;
}
else break;
}
}
void wxHtmlParser::AddTag(const wxHtmlTag& tag)
{
wxHtmlTagHandler *h;
bool inner = FALSE;
h = (wxHtmlTagHandler*) m_HandlersHash.Get(tag.GetName());
if (h)
{
inner = h->HandleTag(tag);
if (m_stopParsing)
return;
}
if (!inner)
{
if (tag.HasEnding())
DoParsing(tag.GetBeginPos(), tag.GetEndPos1());
}
}
void wxHtmlParser::AddTagHandler(wxHtmlTagHandler *handler)
{
wxString s(handler->GetSupportedTags());
wxStringTokenizer tokenizer(s, wxT(", "));
while (tokenizer.HasMoreTokens())
m_HandlersHash.Put(tokenizer.GetNextToken(), handler);
if (m_HandlersList.IndexOf(handler) == wxNOT_FOUND)
m_HandlersList.Append(handler);
handler->SetParser(this);
}
void wxHtmlParser::PushTagHandler(wxHtmlTagHandler *handler, wxString tags)
{
wxStringTokenizer tokenizer(tags, wxT(", "));
wxString key;
if (m_HandlersStack == NULL)
{
m_HandlersStack = new wxList;
m_HandlersStack->DeleteContents(TRUE);
}
m_HandlersStack->Insert(new wxHashTable(m_HandlersHash));
while (tokenizer.HasMoreTokens())
{
key = tokenizer.GetNextToken();
m_HandlersHash.Delete(key);
m_HandlersHash.Put(key, handler);
}
}
void wxHtmlParser::PopTagHandler()
{
wxNode *first;
if (m_HandlersStack == NULL ||
(first = m_HandlersStack->GetFirst()) == NULL)
{
wxLogWarning(_("Warning: attempt to remove HTML tag handler from empty stack."));
return;
}
m_HandlersHash = *((wxHashTable*) first->GetData());
m_HandlersStack->DeleteNode(first);
}
void wxHtmlParser::SetSourceAndSaveState(const wxString& src)
{
wxHtmlParserState *s = new wxHtmlParserState;
s->m_curTag = m_CurTag;
s->m_tags = m_Tags;
s->m_textPieces = m_TextPieces;
s->m_curTextPiece = m_CurTextPiece;
s->m_source = m_Source;
s->m_nextState = m_SavedStates;
m_SavedStates = s;
m_CurTag = NULL;
m_Tags = NULL;
m_TextPieces = NULL;
m_CurTextPiece = 0;
m_Source = wxEmptyString;
SetSource(src);
}
bool wxHtmlParser::RestoreState()
{
if (!m_SavedStates) return FALSE;
DestroyDOMTree();
wxHtmlParserState *s = m_SavedStates;
m_SavedStates = s->m_nextState;
m_CurTag = s->m_curTag;
m_Tags = s->m_tags;
m_TextPieces = s->m_textPieces;
m_CurTextPiece = s->m_curTextPiece;
m_Source = s->m_source;
delete s;
return TRUE;
}
//-----------------------------------------------------------------------------
// wxHtmlTagHandler
//-----------------------------------------------------------------------------
IMPLEMENT_ABSTRACT_CLASS(wxHtmlTagHandler,wxObject)
//-----------------------------------------------------------------------------
// wxHtmlEntitiesParser
//-----------------------------------------------------------------------------
IMPLEMENT_DYNAMIC_CLASS(wxHtmlEntitiesParser,wxObject)
wxHtmlEntitiesParser::wxHtmlEntitiesParser()
#if wxUSE_WCHAR_T && !wxUSE_UNICODE
: m_conv(NULL), m_encoding(wxFONTENCODING_SYSTEM)
#endif
{
}
wxHtmlEntitiesParser::~wxHtmlEntitiesParser()
{
#if wxUSE_WCHAR_T && !wxUSE_UNICODE
delete m_conv;
#endif
}
void wxHtmlEntitiesParser::SetEncoding(wxFontEncoding encoding)
{
#if wxUSE_WCHAR_T && !wxUSE_UNICODE
if (encoding == m_encoding)
return;
delete m_conv;
m_encoding = encoding;
if (m_encoding == wxFONTENCODING_SYSTEM)
m_conv = NULL;
else
m_conv = new wxCSConv(wxFontMapper::GetEncodingName(m_encoding));
#else
(void) encoding;
#endif
}
wxString wxHtmlEntitiesParser::Parse(const wxString& input)
{
const wxChar *c, *last;
const wxChar *in_str = input.c_str();
wxString output;
output.reserve(input.length());
for (c = in_str, last = in_str; *c != wxT('\0'); c++)
{
if (*c == wxT('&'))
{
if (c - last > 0)
output.append(last, c - last);
if (++c == wxT('\0')) break;
wxString entity;
const wxChar *ent_s = c;
wxChar entity_char;
for (; (*c >= wxT('a') && *c <= wxT('z')) ||
(*c >= wxT('A') && *c <= wxT('Z')) ||
(*c >= wxT('0') && *c <= wxT('9')) ||
*c == wxT('_') || *c == wxT('#'); c++) {}
entity.append(ent_s, c - ent_s);
if (*c != wxT(';')) c--;
last = c+1;
entity_char = GetEntityChar(entity);
if (entity_char)
output << entity_char;
else
{
output.append(ent_s-1, c-ent_s+2);
wxLogDebug(wxT("Unrecognized HTML entity: '%s'"), entity.c_str());
}
}
}
if (*last != wxT('\0'))
output.append(last);
return output;
}
struct wxHtmlEntityInfo
{
const wxChar *name;
unsigned code;
};
extern "C" int LINKAGEMODE wxHtmlEntityCompare(const void *key, const void *item)
{
return wxStrcmp((wxChar*)key, ((wxHtmlEntityInfo*)item)->name);
}
#if !wxUSE_UNICODE
wxChar wxHtmlEntitiesParser::GetCharForCode(unsigned code)
{
#if wxUSE_WCHAR_T
char buf[2];
wchar_t wbuf[2];
wbuf[0] = (wchar_t)code;
wbuf[1] = 0;
wxMBConv *conv = m_conv ? m_conv : &wxConvLocal;
if (conv->WC2MB(buf, wbuf, 2) == (size_t)-1)
return '?';
return buf[0];
#else
return (code < 256) ? (wxChar)code : '?';
#endif
}
#endif
wxChar wxHtmlEntitiesParser::GetEntityChar(const wxString& entity)
{
unsigned code = 0;
if (entity[0] == wxT('#'))
{
const wxChar *ent_s = entity.c_str();
const wxChar *format;
if (ent_s[1] == wxT('x') || ent_s[1] == wxT('X'))
{
format = wxT("%x");
ent_s++;
}
else
format = wxT("%u");
ent_s++;
if (wxSscanf(ent_s, format, &code) != 1)
code = 0;
}
else
{
static wxHtmlEntityInfo substitutions[] = {
{ wxT("AElig"),198 },
{ wxT("Aacute"),193 },
{ wxT("Acirc"),194 },
{ wxT("Agrave"),192 },
{ wxT("Alpha"),913 },
{ wxT("Aring"),197 },
{ wxT("Atilde"),195 },
{ wxT("Auml"),196 },
{ wxT("Beta"),914 },
{ wxT("Ccedil"),199 },
{ wxT("Chi"),935 },
{ wxT("Dagger"),8225 },
{ wxT("Delta"),916 },
{ wxT("ETH"),208 },
{ wxT("Eacute"),201 },
{ wxT("Ecirc"),202 },
{ wxT("Egrave"),200 },
{ wxT("Epsilon"),917 },
{ wxT("Eta"),919 },
{ wxT("Euml"),203 },
{ wxT("Gamma"),915 },
{ wxT("Iacute"),205 },
{ wxT("Icirc"),206 },
{ wxT("Igrave"),204 },
{ wxT("Iota"),921 },
{ wxT("Iuml"),207 },
{ wxT("Kappa"),922 },
{ wxT("Lambda"),923 },
{ wxT("Mu"),924 },
{ wxT("Ntilde"),209 },
{ wxT("Nu"),925 },
{ wxT("OElig"),338 },
{ wxT("Oacute"),211 },
{ wxT("Ocirc"),212 },
{ wxT("Ograve"),210 },
{ wxT("Omega"),937 },
{ wxT("Omicron"),927 },
{ wxT("Oslash"),216 },
{ wxT("Otilde"),213 },
{ wxT("Ouml"),214 },
{ wxT("Phi"),934 },
{ wxT("Pi"),928 },
{ wxT("Prime"),8243 },
{ wxT("Psi"),936 },
{ wxT("Rho"),929 },
{ wxT("Scaron"),352 },
{ wxT("Sigma"),931 },
{ wxT("THORN"),222 },
{ wxT("Tau"),932 },
{ wxT("Theta"),920 },
{ wxT("Uacute"),218 },
{ wxT("Ucirc"),219 },
{ wxT("Ugrave"),217 },
{ wxT("Upsilon"),933 },
{ wxT("Uuml"),220 },
{ wxT("Xi"),926 },
{ wxT("Yacute"),221 },
{ wxT("Yuml"),376 },
{ wxT("Zeta"),918 },
{ wxT("aacute"),225 },
{ wxT("acirc"),226 },
{ wxT("acute"),180 },
{ wxT("aelig"),230 },
{ wxT("agrave"),224 },
{ wxT("alefsym"),8501 },
{ wxT("alpha"),945 },
{ wxT("amp"),38 },
{ wxT("and"),8743 },
{ wxT("ang"),8736 },
{ wxT("aring"),229 },
{ wxT("asymp"),8776 },
{ wxT("atilde"),227 },
{ wxT("auml"),228 },
{ wxT("bdquo"),8222 },
{ wxT("beta"),946 },
{ wxT("brvbar"),166 },
{ wxT("bull"),8226 },
{ wxT("cap"),8745 },
{ wxT("ccedil"),231 },
{ wxT("cedil"),184 },
{ wxT("cent"),162 },
{ wxT("chi"),967 },
{ wxT("circ"),710 },
{ wxT("clubs"),9827 },
{ wxT("cong"),8773 },
{ wxT("copy"),169 },
{ wxT("crarr"),8629 },
{ wxT("cup"),8746 },
{ wxT("curren"),164 },
{ wxT("dArr"),8659 },
{ wxT("dagger"),8224 },
{ wxT("darr"),8595 },
{ wxT("deg"),176 },
{ wxT("delta"),948 },
{ wxT("diams"),9830 },
{ wxT("divide"),247 },
{ wxT("eacute"),233 },
{ wxT("ecirc"),234 },
{ wxT("egrave"),232 },
{ wxT("empty"),8709 },
{ wxT("emsp"),8195 },
{ wxT("ensp"),8194 },
{ wxT("epsilon"),949 },
{ wxT("equiv"),8801 },
{ wxT("eta"),951 },
{ wxT("eth"),240 },
{ wxT("euml"),235 },
{ wxT("euro"),8364 },
{ wxT("exist"),8707 },
{ wxT("fnof"),402 },
{ wxT("forall"),8704 },
{ wxT("frac12"),189 },
{ wxT("frac14"),188 },
{ wxT("frac34"),190 },
{ wxT("frasl"),8260 },
{ wxT("gamma"),947 },
{ wxT("ge"),8805 },
{ wxT("gt"),62 },
{ wxT("hArr"),8660 },
{ wxT("harr"),8596 },
{ wxT("hearts"),9829 },
{ wxT("hellip"),8230 },
{ wxT("iacute"),237 },
{ wxT("icirc"),238 },
{ wxT("iexcl"),161 },
{ wxT("igrave"),236 },
{ wxT("image"),8465 },
{ wxT("infin"),8734 },
{ wxT("int"),8747 },
{ wxT("iota"),953 },
{ wxT("iquest"),191 },
{ wxT("isin"),8712 },
{ wxT("iuml"),239 },
{ wxT("kappa"),954 },
{ wxT("lArr"),8656 },
{ wxT("lambda"),955 },
{ wxT("lang"),9001 },
{ wxT("laquo"),171 },
{ wxT("larr"),8592 },
{ wxT("lceil"),8968 },
{ wxT("ldquo"),8220 },
{ wxT("le"),8804 },
{ wxT("lfloor"),8970 },
{ wxT("lowast"),8727 },
{ wxT("loz"),9674 },
{ wxT("lrm"),8206 },
{ wxT("lsaquo"),8249 },
{ wxT("lsquo"),8216 },
{ wxT("lt"),60 },
{ wxT("macr"),175 },
{ wxT("mdash"),8212 },
{ wxT("micro"),181 },
{ wxT("middot"),183 },
{ wxT("minus"),8722 },
{ wxT("mu"),956 },
{ wxT("nabla"),8711 },
{ wxT("nbsp"),160 },
{ wxT("ndash"),8211 },
{ wxT("ne"),8800 },
{ wxT("ni"),8715 },
{ wxT("not"),172 },
{ wxT("notin"),8713 },
{ wxT("nsub"),8836 },
{ wxT("ntilde"),241 },
{ wxT("nu"),957 },
{ wxT("oacute"),243 },
{ wxT("ocirc"),244 },
{ wxT("oelig"),339 },
{ wxT("ograve"),242 },
{ wxT("oline"),8254 },
{ wxT("omega"),969 },
{ wxT("omicron"),959 },
{ wxT("oplus"),8853 },
{ wxT("or"),8744 },
{ wxT("ordf"),170 },
{ wxT("ordm"),186 },
{ wxT("oslash"),248 },
{ wxT("otilde"),245 },
{ wxT("otimes"),8855 },
{ wxT("ouml"),246 },
{ wxT("para"),182 },
{ wxT("part"),8706 },
{ wxT("permil"),8240 },
{ wxT("perp"),8869 },
{ wxT("phi"),966 },
{ wxT("pi"),960 },
{ wxT("piv"),982 },
{ wxT("plusmn"),177 },
{ wxT("pound"),163 },
{ wxT("prime"),8242 },
{ wxT("prod"),8719 },
{ wxT("prop"),8733 },
{ wxT("psi"),968 },
{ wxT("quot"),34 },
{ wxT("rArr"),8658 },
{ wxT("radic"),8730 },
{ wxT("rang"),9002 },
{ wxT("raquo"),187 },
{ wxT("rarr"),8594 },
{ wxT("rceil"),8969 },
{ wxT("rdquo"),8221 },
{ wxT("real"),8476 },
{ wxT("reg"),174 },
{ wxT("rfloor"),8971 },
{ wxT("rho"),961 },
{ wxT("rlm"),8207 },
{ wxT("rsaquo"),8250 },
{ wxT("rsquo"),8217 },
{ wxT("sbquo"),8218 },
{ wxT("scaron"),353 },
{ wxT("sdot"),8901 },
{ wxT("sect"),167 },
{ wxT("shy"),173 },
{ wxT("sigma"),963 },
{ wxT("sigmaf"),962 },
{ wxT("sim"),8764 },
{ wxT("spades"),9824 },
{ wxT("sub"),8834 },
{ wxT("sube"),8838 },
{ wxT("sum"),8721 },
{ wxT("sup"),8835 },
{ wxT("sup1"),185 },
{ wxT("sup2"),178 },
{ wxT("sup3"),179 },
{ wxT("supe"),8839 },
{ wxT("szlig"),223 },
{ wxT("tau"),964 },
{ wxT("there4"),8756 },
{ wxT("theta"),952 },
{ wxT("thetasym"),977 },
{ wxT("thinsp"),8201 },
{ wxT("thorn"),254 },
{ wxT("tilde"),732 },
{ wxT("times"),215 },
{ wxT("trade"),8482 },
{ wxT("uArr"),8657 },
{ wxT("uacute"),250 },
{ wxT("uarr"),8593 },
{ wxT("ucirc"),251 },
{ wxT("ugrave"),249 },
{ wxT("uml"),168 },
{ wxT("upsih"),978 },
{ wxT("upsilon"),965 },
{ wxT("uuml"),252 },
{ wxT("weierp"),8472 },
{ wxT("xi"),958 },
{ wxT("yacute"),253 },
{ wxT("yen"),165 },
{ wxT("yuml"),255 },
{ wxT("zeta"),950 },
{ wxT("zwj"),8205 },
{ wxT("zwnj"),8204 },
{NULL, 0}};
static size_t substitutions_cnt = 0;
if (substitutions_cnt == 0)
while (substitutions[substitutions_cnt].code != 0)
substitutions_cnt++;
wxHtmlEntityInfo *info;
info = (wxHtmlEntityInfo*) bsearch(entity.c_str(), substitutions,
substitutions_cnt,
sizeof(wxHtmlEntityInfo),
wxHtmlEntityCompare);
if (info)
code = info->code;
}
if (code == 0)
return 0;
else
return GetCharForCode(code);
}
wxFSFile *wxHtmlParser::OpenURL(wxHtmlURLType WXUNUSED(type),
const wxString& url) const
{
return GetFS()->OpenFile(url);
}
//-----------------------------------------------------------------------------
// wxHtmlParser::ExtractCharsetInformation
//-----------------------------------------------------------------------------
class wxMetaTagParser : public wxHtmlParser
{
public:
wxObject* GetProduct() { return NULL; }
protected:
virtual void AddText(const wxChar* WXUNUSED(txt)) {}
};
class wxMetaTagHandler : public wxHtmlTagHandler
{
public:
wxMetaTagHandler(wxString *retval) : wxHtmlTagHandler(), m_retval(retval) {}
wxString GetSupportedTags() { return wxT("META,BODY"); }
bool HandleTag(const wxHtmlTag& tag);
private:
wxString *m_retval;
};
bool wxMetaTagHandler::HandleTag(const wxHtmlTag& tag)
{
if (tag.GetName() == _T("BODY"))
{
m_Parser->StopParsing();
return FALSE;
}
if (tag.HasParam(_T("HTTP-EQUIV")) &&
tag.GetParam(_T("HTTP-EQUIV")) == _T("Content-Type") &&
tag.HasParam(_T("CONTENT")))
{
wxString content = tag.GetParam(_T("CONTENT"));
if (content.Left(19) == _T("text/html; charset="))
{
*m_retval = content.Mid(19);
m_Parser->StopParsing();
}
}
return FALSE;
}
/*static*/
wxString wxHtmlParser::ExtractCharsetInformation(const wxString& markup)
{
wxString charset;
wxMetaTagParser parser;
parser.AddTagHandler(new wxMetaTagHandler(&charset));
parser.Parse(markup);
return charset;
}
#endif

View File

@@ -1,497 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: htmltag.cpp
// Purpose: wxHtmlTag class (represents single tag)
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "htmltag.h"
#endif
#include "wx/wxprec.h"
#include "wx/defs.h"
#if wxUSE_HTML
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WXPRECOMP
#endif
#include "wx/html/htmltag.h"
#include "wx/html/htmlpars.h"
#include "wx/colour.h"
#include <stdio.h> // for vsscanf
#include <stdarg.h>
//-----------------------------------------------------------------------------
// wxHtmlTagsCache
//-----------------------------------------------------------------------------
struct wxHtmlCacheItem
{
// this is "pos" value passed to wxHtmlTag's constructor.
// it is position of '<' character of the tag
int Key;
// end positions for the tag:
// end1 is '<' of ending tag,
// end2 is '>' or both are
// -1 if there is no ending tag for this one...
// or -2 if this is ending tag </...>
int End1, End2;
// name of this tag
wxChar *Name;
};
IMPLEMENT_CLASS(wxHtmlTagsCache,wxObject)
#define CACHE_INCREMENT 64
bool wxIsCDATAElement(const wxChar *tag)
{
return (wxStrcmp(tag, _T("SCRIPT")) == 0) ||
(wxStrcmp(tag, _T("STYLE")) == 0);
}
wxHtmlTagsCache::wxHtmlTagsCache(const wxString& source)
{
const wxChar *src = source.c_str();
int tg, stpos;
int lng = source.Length();
wxChar tagBuffer[256];
m_Cache = NULL;
m_CacheSize = 0;
m_CachePos = 0;
int pos = 0;
while (pos < lng)
{
if (src[pos] == wxT('<')) // tag found:
{
if (m_CacheSize % CACHE_INCREMENT == 0)
m_Cache = (wxHtmlCacheItem*) realloc(m_Cache, (m_CacheSize + CACHE_INCREMENT) * sizeof(wxHtmlCacheItem));
tg = m_CacheSize++;
m_Cache[tg].Key = stpos = pos++;
int i;
for ( i = 0;
pos < lng && i < (int)WXSIZEOF(tagBuffer) - 1 &&
src[pos] != wxT('>') && !wxIsspace(src[pos]);
i++, pos++ )
{
tagBuffer[i] = wxToupper(src[pos]);
}
tagBuffer[i] = _T('\0');
m_Cache[tg].Name = new wxChar[i+1];
memcpy(m_Cache[tg].Name, tagBuffer, (i+1)*sizeof(wxChar));
while (pos < lng && src[pos] != wxT('>')) pos++;
if (src[stpos+1] == wxT('/')) // ending tag:
{
m_Cache[tg].End1 = m_Cache[tg].End2 = -2;
// find matching begin tag:
for (i = tg; i >= 0; i--)
if ((m_Cache[i].End1 == -1) && (wxStrcmp(m_Cache[i].Name, tagBuffer+1) == 0))
{
m_Cache[i].End1 = stpos;
m_Cache[i].End2 = pos + 1;
break;
}
}
else
{
m_Cache[tg].End1 = m_Cache[tg].End2 = -1;
if (wxIsCDATAElement(tagBuffer))
{
// find next matching tag
int tag_len = wxStrlen(tagBuffer);
while (pos < lng)
{
// find the ending tag
while (pos + 1 < lng &&
(src[pos] != '<' || src[pos+1] != '/'))
++pos;
if (src[pos] == '<')
++pos;
// see if it matches
int match_pos = 0;
while (pos < lng && match_pos < tag_len && src[pos] != '>' && src[pos] != '<') {
if (wxToupper(src[pos]) == tagBuffer[match_pos]) {
++match_pos;
}
else if (src[pos] == wxT(' ') || src[pos] == wxT('\n') ||
src[pos] == wxT('\r') || src[pos] == wxT('\t')) {
// need to skip over these
}
else {
match_pos = 0;
}
++pos;
}
// found a match
if (match_pos == tag_len) {
pos = pos - tag_len - 3;
stpos = pos;
break;
}
else {
++pos;
}
}
}
}
}
pos++;
}
// ok, we're done, now we'll free .Name members of cache - we don't need it anymore:
for (int i = 0; i < m_CacheSize; i++)
{
delete[] m_Cache[i].Name;
m_Cache[i].Name = NULL;
}
}
void wxHtmlTagsCache::QueryTag(int at, int* end1, int* end2)
{
if (m_Cache == NULL) return;
if (m_Cache[m_CachePos].Key != at)
{
int delta = (at < m_Cache[m_CachePos].Key) ? -1 : 1;
do
{
m_CachePos += delta;
}
while (m_Cache[m_CachePos].Key != at);
}
*end1 = m_Cache[m_CachePos].End1;
*end2 = m_Cache[m_CachePos].End2;
}
//-----------------------------------------------------------------------------
// wxHtmlTag
//-----------------------------------------------------------------------------
IMPLEMENT_CLASS(wxHtmlTag,wxObject)
wxHtmlTag::wxHtmlTag(wxHtmlTag *parent,
const wxString& source, int pos, int end_pos,
wxHtmlTagsCache *cache,
wxHtmlEntitiesParser *entParser) : wxObject()
{
/* Setup DOM relations */
m_Next = NULL;
m_FirstChild = m_LastChild = NULL;
m_Parent = parent;
if (parent)
{
m_Prev = m_Parent->m_LastChild;
if (m_Prev == NULL)
m_Parent->m_FirstChild = this;
else
m_Prev->m_Next = this;
m_Parent->m_LastChild = this;
}
else
m_Prev = NULL;
/* Find parameters and their values: */
int i;
wxChar c;
// fill-in name, params and begin pos:
i = pos+1;
// find tag's name and convert it to uppercase:
while ((i < end_pos) &&
((c = source[i++]) != wxT(' ') && c != wxT('\r') &&
c != wxT('\n') && c != wxT('\t') &&
c != wxT('>')))
{
if ((c >= wxT('a')) && (c <= wxT('z')))
c -= (wxT('a') - wxT('A'));
m_Name << c;
}
// if the tag has parameters, read them and "normalize" them,
// i.e. convert to uppercase, replace whitespaces by spaces and
// remove whitespaces around '=':
if (source[i-1] != wxT('>'))
{
#define IS_WHITE(c) (c == wxT(' ') || c == wxT('\r') || \
c == wxT('\n') || c == wxT('\t'))
wxString pname, pvalue;
wxChar quote;
enum
{
ST_BEFORE_NAME = 1,
ST_NAME,
ST_BEFORE_EQ,
ST_BEFORE_VALUE,
ST_VALUE
} state;
quote = 0;
state = ST_BEFORE_NAME;
while (i < end_pos)
{
c = source[i++];
if (c == wxT('>') && !(state == ST_VALUE && quote != 0))
{
if (state == ST_BEFORE_EQ || state == ST_NAME)
{
m_ParamNames.Add(pname);
m_ParamValues.Add(wxEmptyString);
}
else if (state == ST_VALUE && quote == 0)
{
m_ParamNames.Add(pname);
if (entParser)
m_ParamValues.Add(entParser->Parse(pvalue));
else
m_ParamValues.Add(pvalue);
}
break;
}
switch (state)
{
case ST_BEFORE_NAME:
if (!IS_WHITE(c))
{
pname = c;
state = ST_NAME;
}
break;
case ST_NAME:
if (IS_WHITE(c))
state = ST_BEFORE_EQ;
else if (c == wxT('='))
state = ST_BEFORE_VALUE;
else
pname << c;
break;
case ST_BEFORE_EQ:
if (c == wxT('='))
state = ST_BEFORE_VALUE;
else if (!IS_WHITE(c))
{
m_ParamNames.Add(pname);
m_ParamValues.Add(wxEmptyString);
pname = c;
state = ST_NAME;
}
break;
case ST_BEFORE_VALUE:
if (!IS_WHITE(c))
{
if (c == wxT('"') || c == wxT('\''))
quote = c, pvalue = wxEmptyString;
else
quote = 0, pvalue = c;
state = ST_VALUE;
}
break;
case ST_VALUE:
if ((quote != 0 && c == quote) ||
(quote == 0 && IS_WHITE(c)))
{
m_ParamNames.Add(pname);
if (quote == 0)
{
// VS: backward compatibility, no real reason,
// but wxHTML code relies on this... :(
pvalue.MakeUpper();
}
if (entParser)
m_ParamValues.Add(entParser->Parse(pvalue));
else
m_ParamValues.Add(pvalue);
state = ST_BEFORE_NAME;
}
else
pvalue << c;
break;
}
}
#undef IS_WHITE
}
m_Begin = i;
cache->QueryTag(pos, &m_End1, &m_End2);
if (m_End1 > end_pos) m_End1 = end_pos;
if (m_End2 > end_pos) m_End2 = end_pos;
}
wxHtmlTag::~wxHtmlTag()
{
wxHtmlTag *t1, *t2;
t1 = m_FirstChild;
while (t1)
{
t2 = t1->GetNextSibling();
delete t1;
t1 = t2;
}
}
bool wxHtmlTag::HasParam(const wxString& par) const
{
return (m_ParamNames.Index(par, FALSE) != wxNOT_FOUND);
}
wxString wxHtmlTag::GetParam(const wxString& par, bool with_commas) const
{
int index = m_ParamNames.Index(par, FALSE);
if (index == wxNOT_FOUND)
return wxEmptyString;
if (with_commas)
{
// VS: backward compatibility, seems to be never used by wxHTML...
wxString s;
s << wxT('"') << m_ParamValues[index] << wxT('"');
return s;
}
else
return m_ParamValues[index];
}
int wxHtmlTag::ScanParam(const wxString& par,
const wxChar *format,
void *param) const
{
wxString parval = GetParam(par);
return wxSscanf(parval, format, param);
}
bool wxHtmlTag::GetParamAsColour(const wxString& par, wxColour *clr) const
{
wxString str = GetParam(par);
if (str.IsEmpty()) return FALSE;
if (str.GetChar(0) == wxT('#'))
{
unsigned long tmp;
if (ScanParam(par, wxT("#%lX"), &tmp) != 1)
return FALSE;
*clr = wxColour((unsigned char)((tmp & 0xFF0000) >> 16),
(unsigned char)((tmp & 0x00FF00) >> 8),
(unsigned char)(tmp & 0x0000FF));
return TRUE;
}
else
{
// Handle colours defined in HTML 4.0:
#define HTML_COLOUR(name,r,g,b) \
if (str.IsSameAs(wxT(name), FALSE)) \
{ *clr = wxColour(r,g,b); return TRUE; }
HTML_COLOUR("black", 0x00,0x00,0x00)
HTML_COLOUR("silver", 0xC0,0xC0,0xC0)
HTML_COLOUR("gray", 0x80,0x80,0x80)
HTML_COLOUR("white", 0xFF,0xFF,0xFF)
HTML_COLOUR("maroon", 0x80,0x00,0x00)
HTML_COLOUR("red", 0xFF,0x00,0x00)
HTML_COLOUR("purple", 0x80,0x00,0x80)
HTML_COLOUR("fuchsia", 0xFF,0x00,0xFF)
HTML_COLOUR("green", 0x00,0x80,0x00)
HTML_COLOUR("lime", 0x00,0xFF,0x00)
HTML_COLOUR("olive", 0x80,0x80,0x00)
HTML_COLOUR("yellow", 0xFF,0xFF,0x00)
HTML_COLOUR("navy", 0x00,0x00,0x80)
HTML_COLOUR("blue", 0x00,0x00,0xFF)
HTML_COLOUR("teal", 0x00,0x80,0x80)
HTML_COLOUR("aqua", 0x00,0xFF,0xFF)
#undef HTML_COLOUR
}
return FALSE;
}
bool wxHtmlTag::GetParamAsInt(const wxString& par, int *clr) const
{
if (!HasParam(par)) return FALSE;
long i;
bool succ = GetParam(par).ToLong(&i);
*clr = (int)i;
return succ;
}
wxString wxHtmlTag::GetAllParams() const
{
// VS: this function is for backward compatiblity only,
// never used by wxHTML
wxString s;
size_t cnt = m_ParamNames.GetCount();
for (size_t i = 0; i < cnt; i++)
{
s << m_ParamNames[i];
s << wxT('=');
if (m_ParamValues[i].Find(wxT('"')) != wxNOT_FOUND)
s << wxT('\'') << m_ParamValues[i] << wxT('\'');
else
s << wxT('"') << m_ParamValues[i] << wxT('"');
}
return s;
}
wxHtmlTag *wxHtmlTag::GetFirstSibling() const
{
if (m_Parent)
return m_Parent->m_FirstChild;
else
{
wxHtmlTag *cur = (wxHtmlTag*)this;
while (cur->m_Prev)
cur = cur->m_Prev;
return cur;
}
}
wxHtmlTag *wxHtmlTag::GetLastSibling() const
{
if (m_Parent)
return m_Parent->m_LastChild;
else
{
wxHtmlTag *cur = (wxHtmlTag*)this;
while (cur->m_Next)
cur = cur->m_Next;
return cur;
}
}
wxHtmlTag *wxHtmlTag::GetNextTag() const
{
if (m_FirstChild) return m_FirstChild;
if (m_Next) return m_Next;
wxHtmlTag *cur = m_Parent;
if (!cur) return NULL;
while (cur->m_Parent && !cur->m_Next)
cur = cur->m_Parent;
return cur->m_Next;
}
#endif

View File

@@ -1,798 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: htmlwin.cpp
// Purpose: wxHtmlWindow class for parsing & displaying HTML (implementation)
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "htmlwin.h"
#pragma implementation "htmlproc.h"
#endif
#include "wx/wxprec.h"
#include "wx/defs.h"
#if wxUSE_HTML && wxUSE_STREAMS
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WXPRECOMP
#include "wx/log.h"
#include "wx/intl.h"
#include "wx/dcclient.h"
#include "wx/frame.h"
#endif
#include "wx/html/htmlwin.h"
#include "wx/html/htmlproc.h"
#include "wx/list.h"
#include "wx/arrimpl.cpp"
#include "wx/listimpl.cpp"
//-----------------------------------------------------------------------------
// wxHtmlHistoryItem
//-----------------------------------------------------------------------------
// item of history list
class WXDLLEXPORT wxHtmlHistoryItem
{
public:
wxHtmlHistoryItem(const wxString& p, const wxString& a) {m_Page = p, m_Anchor = a, m_Pos = 0;}
int GetPos() const {return m_Pos;}
void SetPos(int p) {m_Pos = p;}
const wxString& GetPage() const {return m_Page;}
const wxString& GetAnchor() const {return m_Anchor;}
private:
wxString m_Page;
wxString m_Anchor;
int m_Pos;
};
//-----------------------------------------------------------------------------
// our private arrays:
//-----------------------------------------------------------------------------
WX_DECLARE_OBJARRAY(wxHtmlHistoryItem, wxHtmlHistoryArray);
WX_DEFINE_OBJARRAY(wxHtmlHistoryArray);
WX_DECLARE_LIST(wxHtmlProcessor, wxHtmlProcessorList);
WX_DEFINE_LIST(wxHtmlProcessorList);
//-----------------------------------------------------------------------------
// wxHtmlWindow
//-----------------------------------------------------------------------------
void wxHtmlWindow::Init()
{
m_tmpMouseMoved = FALSE;
m_tmpLastLink = NULL;
m_tmpLastCell = NULL;
m_tmpCanDrawLocks = 0;
m_FS = new wxFileSystem();
m_RelatedStatusBar = -1;
m_RelatedFrame = NULL;
m_TitleFormat = wxT("%s");
m_OpenedPage = m_OpenedAnchor = m_OpenedPageTitle = wxEmptyString;
m_Cell = NULL;
m_Parser = new wxHtmlWinParser(this);
m_Parser->SetFS(m_FS);
m_HistoryPos = -1;
m_HistoryOn = TRUE;
m_History = new wxHtmlHistoryArray;
m_Processors = NULL;
m_Style = 0;
SetBorders(10);
}
bool wxHtmlWindow::Create(wxWindow *parent, wxWindowID id,
const wxPoint& pos, const wxSize& size,
long style, const wxString& name)
{
if (!wxScrolledWindow::Create(parent, id, pos, size,
style | wxVSCROLL | wxHSCROLL, name))
return FALSE;
m_Style = style;
SetPage(wxT("<html><body></body></html>"));
return TRUE;
}
wxHtmlWindow::~wxHtmlWindow()
{
HistoryClear();
if (m_Cell) delete m_Cell;
delete m_Parser;
delete m_FS;
delete m_History;
delete m_Processors;
}
void wxHtmlWindow::SetRelatedFrame(wxFrame* frame, const wxString& format)
{
m_RelatedFrame = frame;
m_TitleFormat = format;
}
void wxHtmlWindow::SetRelatedStatusBar(int bar)
{
m_RelatedStatusBar = bar;
}
void wxHtmlWindow::SetFonts(wxString normal_face, wxString fixed_face, const int *sizes)
{
wxString op = m_OpenedPage;
m_Parser->SetFonts(normal_face, fixed_face, sizes);
// fonts changed => contents invalid, so reload the page:
SetPage(wxT("<html><body></body></html>"));
if (!op.IsEmpty()) LoadPage(op);
}
bool wxHtmlWindow::SetPage(const wxString& source)
{
wxString newsrc(source);
// pass HTML through registered processors:
if (m_Processors || m_GlobalProcessors)
{
wxHtmlProcessorList::Node *nodeL, *nodeG;
int prL, prG;
nodeL = (m_Processors) ? m_Processors->GetFirst() : NULL;
nodeG = (m_GlobalProcessors) ? m_GlobalProcessors->GetFirst() : NULL;
// VS: there are two lists, global and local, both of them sorted by
// priority. Since we have to go through _both_ lists with
// decreasing priority, we "merge-sort" the lists on-line by
// processing that one of the two heads that has higher priority
// in every iteration
while (nodeL || nodeG)
{
prL = (nodeL) ? nodeL->GetData()->GetPriority() : -1;
prG = (nodeG) ? nodeG->GetData()->GetPriority() : -1;
if (prL > prG)
{
if (nodeL->GetData()->IsEnabled())
newsrc = nodeL->GetData()->Process(newsrc);
nodeL = nodeL->GetNext();
}
else // prL <= prG
{
if (nodeG->GetData()->IsEnabled())
newsrc = nodeG->GetData()->Process(newsrc);
nodeG = nodeG->GetNext();
}
}
}
// ...and run the parser on it:
wxClientDC *dc = new wxClientDC(this);
dc->SetMapMode(wxMM_TEXT);
SetBackgroundColour(wxColour(0xFF, 0xFF, 0xFF));
m_OpenedPage = m_OpenedAnchor = m_OpenedPageTitle = wxEmptyString;
m_Parser->SetDC(dc);
if (m_Cell)
{
delete m_Cell;
m_Cell = NULL;
}
m_Cell = (wxHtmlContainerCell*) m_Parser->Parse(newsrc);
delete dc;
m_Cell->SetIndent(m_Borders, wxHTML_INDENT_ALL, wxHTML_UNITS_PIXELS);
m_Cell->SetAlignHor(wxHTML_ALIGN_CENTER);
CreateLayout();
if (m_tmpCanDrawLocks == 0)
Refresh();
return TRUE;
}
bool wxHtmlWindow::AppendToPage(const wxString& source)
{
return SetPage(*(GetParser()->GetSource()) + source);
}
bool wxHtmlWindow::LoadPage(const wxString& location)
{
wxBusyCursor busyCursor;
wxFSFile *f;
bool rt_val;
bool needs_refresh = FALSE;
m_tmpCanDrawLocks++;
if (m_HistoryOn && (m_HistoryPos != -1))
{
// store scroll position into history item:
int x, y;
GetViewStart(&x, &y);
(*m_History)[m_HistoryPos].SetPos(y);
}
if (location[0] == wxT('#'))
{
// local anchor:
wxString anch = location.Mid(1) /*1 to end*/;
m_tmpCanDrawLocks--;
rt_val = ScrollToAnchor(anch);
m_tmpCanDrawLocks++;
}
else if (location.Find(wxT('#')) != wxNOT_FOUND && location.BeforeFirst(wxT('#')) == m_OpenedPage)
{
wxString anch = location.AfterFirst(wxT('#'));
m_tmpCanDrawLocks--;
rt_val = ScrollToAnchor(anch);
m_tmpCanDrawLocks++;
}
else if (location.Find(wxT('#')) != wxNOT_FOUND &&
(m_FS->GetPath() + location.BeforeFirst(wxT('#'))) == m_OpenedPage)
{
wxString anch = location.AfterFirst(wxT('#'));
m_tmpCanDrawLocks--;
rt_val = ScrollToAnchor(anch);
m_tmpCanDrawLocks++;
}
else
{
needs_refresh = TRUE;
// load&display it:
if (m_RelatedStatusBar != -1)
{
m_RelatedFrame->SetStatusText(_("Connecting..."), m_RelatedStatusBar);
Refresh(FALSE);
}
f = m_Parser->OpenURL(wxHTML_URL_PAGE, location);
// try to interpret 'location' as filename instead of URL:
if (f == NULL)
{
wxFileName fn(location);
wxString location2 = wxFileSystem::FileNameToURL(fn);
f = m_Parser->OpenURL(wxHTML_URL_PAGE, location2);
}
if (f == NULL)
{
wxLogError(_("Unable to open requested HTML document: %s"), location.c_str());
m_tmpCanDrawLocks--;
return FALSE;
}
else
{
wxNode *node;
wxString src = wxEmptyString;
if (m_RelatedStatusBar != -1)
{
wxString msg = _("Loading : ") + location;
m_RelatedFrame->SetStatusText(msg, m_RelatedStatusBar);
Refresh(FALSE);
}
node = m_Filters.GetFirst();
while (node)
{
wxHtmlFilter *h = (wxHtmlFilter*) node->GetData();
if (h->CanRead(*f))
{
src = h->ReadFile(*f);
break;
}
node = node->GetNext();
}
if (src == wxEmptyString)
{
if (m_DefaultFilter == NULL) m_DefaultFilter = GetDefaultFilter();
src = m_DefaultFilter->ReadFile(*f);
}
m_FS->ChangePathTo(f->GetLocation());
rt_val = SetPage(src);
m_OpenedPage = f->GetLocation();
if (f->GetAnchor() != wxEmptyString)
{
ScrollToAnchor(f->GetAnchor());
}
delete f;
if (m_RelatedStatusBar != -1) m_RelatedFrame->SetStatusText(_("Done"), m_RelatedStatusBar);
}
}
if (m_HistoryOn) // add this page to history there:
{
int c = m_History->GetCount() - (m_HistoryPos + 1);
if (m_HistoryPos < 0 ||
(*m_History)[m_HistoryPos].GetPage() != m_OpenedPage ||
(*m_History)[m_HistoryPos].GetAnchor() != m_OpenedAnchor)
{
m_HistoryPos++;
for (int i = 0; i < c; i++)
m_History->RemoveAt(m_HistoryPos);
m_History->Add(new wxHtmlHistoryItem(m_OpenedPage, m_OpenedAnchor));
}
}
if (m_OpenedPageTitle == wxEmptyString)
OnSetTitle(wxFileNameFromPath(m_OpenedPage));
if (needs_refresh)
{
m_tmpCanDrawLocks--;
Refresh();
}
else
m_tmpCanDrawLocks--;
return rt_val;
}
bool wxHtmlWindow::LoadFile(const wxFileName& filename)
{
wxString url = wxFileSystem::FileNameToURL(filename);
return LoadPage(url);
}
bool wxHtmlWindow::ScrollToAnchor(const wxString& anchor)
{
const wxHtmlCell *c = m_Cell->Find(wxHTML_COND_ISANCHOR, &anchor);
if (!c)
{
wxLogWarning(_("HTML anchor %s does not exist."), anchor.c_str());
return FALSE;
}
else
{
int y;
for (y = 0; c != NULL; c = c->GetParent()) y += c->GetPosY();
Scroll(-1, y / wxHTML_SCROLL_STEP);
m_OpenedAnchor = anchor;
return TRUE;
}
}
void wxHtmlWindow::OnSetTitle(const wxString& title)
{
if (m_RelatedFrame)
{
wxString tit;
tit.Printf(m_TitleFormat, title.c_str());
m_RelatedFrame->SetTitle(tit);
}
m_OpenedPageTitle = title;
}
void wxHtmlWindow::CreateLayout()
{
int ClientWidth, ClientHeight;
if (!m_Cell) return;
if (m_Style & wxHW_SCROLLBAR_NEVER)
{
SetScrollbars(wxHTML_SCROLL_STEP, 1, m_Cell->GetWidth() / wxHTML_SCROLL_STEP, 0); // always off
GetClientSize(&ClientWidth, &ClientHeight);
m_Cell->Layout(ClientWidth);
}
else {
GetClientSize(&ClientWidth, &ClientHeight);
m_Cell->Layout(ClientWidth);
if (ClientHeight < m_Cell->GetHeight() + GetCharHeight())
{
SetScrollbars(
wxHTML_SCROLL_STEP, wxHTML_SCROLL_STEP,
m_Cell->GetWidth() / wxHTML_SCROLL_STEP,
(m_Cell->GetHeight() + GetCharHeight()) / wxHTML_SCROLL_STEP
/*cheat: top-level frag is always container*/);
}
else /* we fit into window, no need for scrollbars */
{
SetScrollbars(wxHTML_SCROLL_STEP, 1, m_Cell->GetWidth() / wxHTML_SCROLL_STEP, 0); // disable...
GetClientSize(&ClientWidth, &ClientHeight);
m_Cell->Layout(ClientWidth); // ...and relayout
}
}
}
void wxHtmlWindow::ReadCustomization(wxConfigBase *cfg, wxString path)
{
wxString oldpath;
wxString tmp;
int p_fontsizes[7];
wxString p_fff, p_ffn;
if (path != wxEmptyString)
{
oldpath = cfg->GetPath();
cfg->SetPath(path);
}
m_Borders = cfg->Read(wxT("wxHtmlWindow/Borders"), m_Borders);
p_fff = cfg->Read(wxT("wxHtmlWindow/FontFaceFixed"), m_Parser->m_FontFaceFixed);
p_ffn = cfg->Read(wxT("wxHtmlWindow/FontFaceNormal"), m_Parser->m_FontFaceNormal);
for (int i = 0; i < 7; i++)
{
tmp.Printf(wxT("wxHtmlWindow/FontsSize%i"), i);
p_fontsizes[i] = cfg->Read(tmp, m_Parser->m_FontsSizes[i]);
}
SetFonts(p_ffn, p_fff, p_fontsizes);
if (path != wxEmptyString)
cfg->SetPath(oldpath);
}
void wxHtmlWindow::WriteCustomization(wxConfigBase *cfg, wxString path)
{
wxString oldpath;
wxString tmp;
if (path != wxEmptyString)
{
oldpath = cfg->GetPath();
cfg->SetPath(path);
}
cfg->Write(wxT("wxHtmlWindow/Borders"), (long) m_Borders);
cfg->Write(wxT("wxHtmlWindow/FontFaceFixed"), m_Parser->m_FontFaceFixed);
cfg->Write(wxT("wxHtmlWindow/FontFaceNormal"), m_Parser->m_FontFaceNormal);
for (int i = 0; i < 7; i++)
{
tmp.Printf(wxT("wxHtmlWindow/FontsSize%i"), i);
cfg->Write(tmp, (long) m_Parser->m_FontsSizes[i]);
}
if (path != wxEmptyString)
cfg->SetPath(oldpath);
}
bool wxHtmlWindow::HistoryBack()
{
wxString a, l;
if (m_HistoryPos < 1) return FALSE;
// store scroll position into history item:
int x, y;
GetViewStart(&x, &y);
(*m_History)[m_HistoryPos].SetPos(y);
// go to previous position:
m_HistoryPos--;
l = (*m_History)[m_HistoryPos].GetPage();
a = (*m_History)[m_HistoryPos].GetAnchor();
m_HistoryOn = FALSE;
m_tmpCanDrawLocks++;
if (a == wxEmptyString) LoadPage(l);
else LoadPage(l + wxT("#") + a);
m_HistoryOn = TRUE;
m_tmpCanDrawLocks--;
Scroll(0, (*m_History)[m_HistoryPos].GetPos());
Refresh();
return TRUE;
}
bool wxHtmlWindow::HistoryCanBack()
{
if (m_HistoryPos < 1) return FALSE;
return TRUE ;
}
bool wxHtmlWindow::HistoryForward()
{
wxString a, l;
if (m_HistoryPos == -1) return FALSE;
if (m_HistoryPos >= (int)m_History->GetCount() - 1)return FALSE;
m_OpenedPage = wxEmptyString; // this will disable adding new entry into history in LoadPage()
m_HistoryPos++;
l = (*m_History)[m_HistoryPos].GetPage();
a = (*m_History)[m_HistoryPos].GetAnchor();
m_HistoryOn = FALSE;
m_tmpCanDrawLocks++;
if (a == wxEmptyString) LoadPage(l);
else LoadPage(l + wxT("#") + a);
m_HistoryOn = TRUE;
m_tmpCanDrawLocks--;
Scroll(0, (*m_History)[m_HistoryPos].GetPos());
Refresh();
return TRUE;
}
bool wxHtmlWindow::HistoryCanForward()
{
if (m_HistoryPos == -1) return FALSE;
if (m_HistoryPos >= (int)m_History->GetCount() - 1)return FALSE;
return TRUE ;
}
void wxHtmlWindow::HistoryClear()
{
m_History->Empty();
m_HistoryPos = -1;
}
void wxHtmlWindow::AddProcessor(wxHtmlProcessor *processor)
{
if (!m_Processors)
{
m_Processors = new wxHtmlProcessorList;
m_Processors->DeleteContents(TRUE);
}
wxHtmlProcessorList::Node *node;
for (node = m_Processors->GetFirst(); node; node = node->GetNext())
{
if (processor->GetPriority() > node->GetData()->GetPriority())
{
m_Processors->Insert(node, processor);
return;
}
}
m_Processors->Append(processor);
}
/*static */ void wxHtmlWindow::AddGlobalProcessor(wxHtmlProcessor *processor)
{
if (!m_GlobalProcessors)
{
m_GlobalProcessors = new wxHtmlProcessorList;
m_GlobalProcessors->DeleteContents(TRUE);
}
wxHtmlProcessorList::Node *node;
for (node = m_GlobalProcessors->GetFirst(); node; node = node->GetNext())
{
if (processor->GetPriority() > node->GetData()->GetPriority())
{
m_GlobalProcessors->Insert(node, processor);
return;
}
}
m_GlobalProcessors->Append(processor);
}
wxList wxHtmlWindow::m_Filters;
wxHtmlFilter *wxHtmlWindow::m_DefaultFilter = NULL;
wxCursor *wxHtmlWindow::s_cur_hand = NULL;
wxCursor *wxHtmlWindow::s_cur_arrow = NULL;
wxHtmlProcessorList *wxHtmlWindow::m_GlobalProcessors = NULL;
void wxHtmlWindow::CleanUpStatics()
{
wxDELETE(m_DefaultFilter);
m_Filters.DeleteContents(TRUE);
m_Filters.Clear();
wxDELETE(m_GlobalProcessors);
wxDELETE(s_cur_hand);
wxDELETE(s_cur_arrow);
}
void wxHtmlWindow::AddFilter(wxHtmlFilter *filter)
{
m_Filters.Append(filter);
}
void wxHtmlWindow::OnLinkClicked(const wxHtmlLinkInfo& link)
{
LoadPage(link.GetHref());
}
void wxHtmlWindow::OnCellClicked(wxHtmlCell *cell,
wxCoord x, wxCoord y,
const wxMouseEvent& event)
{
wxCHECK_RET( cell, _T("can't be called with NULL cell") );
cell->OnMouseClick(this, x, y, event);
}
void wxHtmlWindow::OnCellMouseHover(wxHtmlCell * WXUNUSED(cell),
wxCoord WXUNUSED(x), wxCoord WXUNUSED(y))
{
// do nothing here
}
void wxHtmlWindow::OnDraw(wxDC& dc)
{
if (m_tmpCanDrawLocks > 0 || m_Cell == NULL) return;
int x, y;
wxRect rect = GetUpdateRegion().GetBox();
dc.SetMapMode(wxMM_TEXT);
dc.SetBackgroundMode(wxTRANSPARENT);
GetViewStart(&x, &y);
m_Cell->Draw(dc, 0, 0,
y * wxHTML_SCROLL_STEP + rect.GetTop(),
y * wxHTML_SCROLL_STEP + rect.GetBottom());
}
void wxHtmlWindow::OnSize(wxSizeEvent& event)
{
wxScrolledWindow::OnSize(event);
CreateLayout();
Refresh();
}
void wxHtmlWindow::OnMouseEvent(wxMouseEvent& event)
{
m_tmpMouseMoved = TRUE;
if (event.ButtonDown())
{
SetFocus();
if ( m_Cell )
{
int sx, sy;
GetViewStart(&sx, &sy);
sx *= wxHTML_SCROLL_STEP;
sy *= wxHTML_SCROLL_STEP;
wxPoint pos = event.GetPosition();
pos.x += sx;
pos.y += sy;
wxHtmlCell *cell = m_Cell->FindCellByPos(pos.x, pos.y);
// VZ: is it possible that we don't find anything at all?
// VS: yes. FindCellByPos returns terminal cell and
// containers may have empty borders
if ( cell )
OnCellClicked(cell, pos.x, pos.y, event);
}
}
}
void wxHtmlWindow::OnIdle(wxIdleEvent& WXUNUSED(event))
{
if (s_cur_hand == NULL)
{
s_cur_hand = new wxCursor(wxCURSOR_HAND);
s_cur_arrow = new wxCursor(wxCURSOR_ARROW);
}
if (m_tmpMouseMoved && (m_Cell != NULL))
{
int sx, sy;
GetViewStart(&sx, &sy);
sx *= wxHTML_SCROLL_STEP;
sy *= wxHTML_SCROLL_STEP;
int x, y;
wxGetMousePosition(&x, &y);
ScreenToClient(&x, &y);
x += sx;
y += sy;
wxHtmlCell *cell = m_Cell->FindCellByPos(x, y);
if ( cell != m_tmpLastCell )
{
wxHtmlLinkInfo *lnk = cell ? cell->GetLink(x, y) : NULL;
if (lnk != m_tmpLastLink)
{
if (lnk == NULL)
{
SetCursor(*s_cur_arrow);
if (m_RelatedStatusBar != -1)
m_RelatedFrame->SetStatusText(wxEmptyString, m_RelatedStatusBar);
}
else
{
SetCursor(*s_cur_hand);
if (m_RelatedStatusBar != -1)
m_RelatedFrame->SetStatusText(lnk->GetHref(), m_RelatedStatusBar);
}
m_tmpLastLink = lnk;
}
m_tmpLastCell = cell;
}
else // mouse moved but stayed in the same cell
{
if ( cell )
OnCellMouseHover(cell, x, y);
}
m_tmpMouseMoved = FALSE;
}
}
IMPLEMENT_ABSTRACT_CLASS(wxHtmlProcessor,wxObject)
IMPLEMENT_DYNAMIC_CLASS(wxHtmlWindow,wxScrolledWindow)
BEGIN_EVENT_TABLE(wxHtmlWindow, wxScrolledWindow)
EVT_SIZE(wxHtmlWindow::OnSize)
EVT_LEFT_DOWN(wxHtmlWindow::OnMouseEvent)
EVT_RIGHT_DOWN(wxHtmlWindow::OnMouseEvent)
EVT_MOTION(wxHtmlWindow::OnMouseEvent)
EVT_IDLE(wxHtmlWindow::OnIdle)
END_EVENT_TABLE()
// A module to allow initialization/cleanup
// without calling these functions from app.cpp or from
// the user's application.
class wxHtmlWinModule: public wxModule
{
DECLARE_DYNAMIC_CLASS(wxHtmlWinModule)
public:
wxHtmlWinModule() : wxModule() {}
bool OnInit() { return TRUE; }
void OnExit() { wxHtmlWindow::CleanUpStatics(); }
};
IMPLEMENT_DYNAMIC_CLASS(wxHtmlWinModule, wxModule)
// This hack forces the linker to always link in m_* files
// (wxHTML doesn't work without handlers from these files)
#include "wx/html/forcelnk.h"
FORCE_WXHTML_MODULES()
#endif

View File

@@ -1,633 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: htmprint.cpp
// Purpose: html printing classes
// Author: Vaclav Slavik
// Created: 25/09/99
// RCS-ID: $Id$
// Copyright: (c) Vaclav Slavik, 1999
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "htmprint.h"
#endif
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#include "wx/defs.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/log.h"
#include "wx/intl.h"
#include "wx/dc.h"
#endif
#if wxUSE_HTML && wxUSE_PRINTING_ARCHITECTURE && wxUSE_STREAMS
#include "wx/dc.h"
#include "wx/print.h"
#include "wx/printdlg.h"
#include "wx/html/htmprint.h"
#include "wx/wxhtml.h"
#include "wx/wfstream.h"
//--------------------------------------------------------------------------------
// wxHtmlDCRenderer
//--------------------------------------------------------------------------------
wxHtmlDCRenderer::wxHtmlDCRenderer() : wxObject()
{
m_DC = NULL;
m_Width = m_Height = 0;
m_Cells = NULL;
m_Parser = new wxHtmlWinParser(NULL);
m_FS = new wxFileSystem();
m_Parser->SetFS(m_FS);
}
wxHtmlDCRenderer::~wxHtmlDCRenderer()
{
if (m_Cells) delete m_Cells;
if (m_Parser) delete m_Parser;
if (m_FS) delete m_FS;
}
void wxHtmlDCRenderer::SetDC(wxDC *dc, double pixel_scale)
{
m_DC = dc;
m_Parser->SetDC(m_DC, pixel_scale);
}
void wxHtmlDCRenderer::SetSize(int width, int height)
{
m_Width = width;
m_Height = height;
}
void wxHtmlDCRenderer::SetHtmlText(const wxString& html, const wxString& basepath, bool isdir)
{
if (m_DC == NULL) return;
if (m_Cells != NULL) delete m_Cells;
m_FS->ChangePathTo(basepath, isdir);
m_Cells = (wxHtmlContainerCell*) m_Parser->Parse(html);
m_Cells->SetIndent(0, wxHTML_INDENT_ALL, wxHTML_UNITS_PIXELS);
m_Cells->Layout(m_Width);
}
void wxHtmlDCRenderer::SetFonts(wxString normal_face, wxString fixed_face,
const int *sizes)
{
m_Parser->SetFonts(normal_face, fixed_face, sizes);
if (m_DC == NULL && m_Cells != NULL) m_Cells->Layout(m_Width);
}
int wxHtmlDCRenderer::Render(int x, int y, int from, int dont_render, int to, int *known_pagebreaks, int number_of_pages)
{
int pbreak, hght;
if (m_Cells == NULL || m_DC == NULL) return 0;
pbreak = (int)(from + m_Height);
while (m_Cells->AdjustPagebreak(&pbreak, known_pagebreaks, number_of_pages)) {}
hght = pbreak - from;
if(to < hght)
hght = to;
if (!dont_render)
{
m_DC->SetBrush(*wxWHITE_BRUSH);
m_DC->SetClippingRegion(x, y, m_Width, hght);
m_Cells->Draw(*m_DC,
x, (y - from),
y, pbreak + (y /*- from*/));
m_DC->DestroyClippingRegion();
}
if (pbreak < m_Cells->GetHeight()) return pbreak;
else return GetTotalHeight();
}
int wxHtmlDCRenderer::GetTotalHeight()
{
if (m_Cells) return m_Cells->GetHeight();
else return 0;
}
//--------------------------------------------------------------------------------
// wxHtmlPrintout
//--------------------------------------------------------------------------------
wxHtmlPrintout::wxHtmlPrintout(const wxString& title) : wxPrintout(title)
{
m_Renderer = new wxHtmlDCRenderer;
m_RendererHdr = new wxHtmlDCRenderer;
m_NumPages = wxHTML_PRINT_MAX_PAGES;
m_Document = m_BasePath = wxEmptyString; m_BasePathIsDir = TRUE;
m_Headers[0] = m_Headers[1] = wxEmptyString;
m_Footers[0] = m_Footers[1] = wxEmptyString;
m_HeaderHeight = m_FooterHeight = 0;
SetMargins(); // to default values
}
wxHtmlPrintout::~wxHtmlPrintout()
{
delete m_Renderer;
delete m_RendererHdr;
}
bool wxHtmlPrintout::OnBeginDocument(int startPage, int endPage)
{
int pageWidth, pageHeight, mm_w, mm_h, scr_w, scr_h, dc_w, dc_h;
float ppmm_h, ppmm_v;
if (!wxPrintout::OnBeginDocument(startPage, endPage)) return FALSE;
GetPageSizePixels(&pageWidth, &pageHeight);
GetPageSizeMM(&mm_w, &mm_h);
ppmm_h = (float)pageWidth / mm_w;
ppmm_v = (float)pageHeight / mm_h;
int ppiPrinterX, ppiPrinterY;
GetPPIPrinter(&ppiPrinterX, &ppiPrinterY);
int ppiScreenX, ppiScreenY;
GetPPIScreen(&ppiScreenX, &ppiScreenY);
wxDisplaySize(&scr_w, &scr_h);
GetDC()->GetSize(&dc_w, &dc_h);
GetDC()->SetUserScale((double)dc_w / (double)pageWidth, (double)dc_w / (double)pageWidth);
/* prepare headers/footers renderer: */
m_RendererHdr->SetDC(GetDC(), (double)ppiPrinterY / (double)ppiScreenY);
m_RendererHdr->SetSize((int) (ppmm_h * (mm_w - m_MarginLeft - m_MarginRight)),
(int) (ppmm_v * (mm_h - m_MarginTop - m_MarginBottom)));
if (m_Headers[0] != wxEmptyString)
{
m_RendererHdr->SetHtmlText(TranslateHeader(m_Headers[0], 1));
m_HeaderHeight = m_RendererHdr->GetTotalHeight();
}
else if (m_Headers[1] != wxEmptyString)
{
m_RendererHdr->SetHtmlText(TranslateHeader(m_Headers[1], 1));
m_HeaderHeight = m_RendererHdr->GetTotalHeight();
}
if (m_Footers[0] != wxEmptyString)
{
m_RendererHdr->SetHtmlText(TranslateHeader(m_Footers[0], 1));
m_FooterHeight = m_RendererHdr->GetTotalHeight();
}
else if (m_Footers[1] != wxEmptyString)
{
m_RendererHdr->SetHtmlText(TranslateHeader(m_Footers[1], 1));
m_FooterHeight = m_RendererHdr->GetTotalHeight();
}
/* prepare main renderer: */
m_Renderer->SetDC(GetDC(), (double)ppiPrinterY / (double)ppiScreenY);
m_Renderer->SetSize((int) (ppmm_h * (mm_w - m_MarginLeft - m_MarginRight)),
(int) (ppmm_v * (mm_h - m_MarginTop - m_MarginBottom) -
m_FooterHeight - m_HeaderHeight -
((m_HeaderHeight == 0) ? 0 : m_MarginSpace * ppmm_v) -
((m_FooterHeight == 0) ? 0 : m_MarginSpace * ppmm_v)
));
m_Renderer->SetHtmlText(m_Document, m_BasePath, m_BasePathIsDir);
CountPages();
return TRUE;
}
bool wxHtmlPrintout::OnPrintPage(int page)
{
wxDC *dc = GetDC();
if (dc)
{
if (HasPage(page))
RenderPage(dc, page);
return TRUE;
}
else return FALSE;
}
void wxHtmlPrintout::GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo)
{
*minPage = 1;
*maxPage = wxHTML_PRINT_MAX_PAGES;
*selPageFrom = 1;
*selPageTo = wxHTML_PRINT_MAX_PAGES;
}
bool wxHtmlPrintout::HasPage(int pageNum)
{
return (pageNum >= 1 && pageNum <= m_NumPages);
}
void wxHtmlPrintout::SetHtmlText(const wxString& html, const wxString &basepath, bool isdir)
{
m_Document = html;
m_BasePath = basepath;
m_BasePathIsDir = isdir;
}
void wxHtmlPrintout::SetHtmlFile(const wxString& htmlfile)
{
wxFileSystem fs;
wxFSFile *ff = fs.OpenFile(htmlfile);
if (ff == NULL)
{
wxLogError(htmlfile + _(": file does not exist!"));
return;
}
wxHtmlFilterHTML filter;
wxString doc = filter.ReadFile(*ff);
SetHtmlText(doc, htmlfile, FALSE);
delete ff;
}
void wxHtmlPrintout::SetHeader(const wxString& header, int pg)
{
if (pg == wxPAGE_ALL || pg == wxPAGE_EVEN)
m_Headers[0] = header;
if (pg == wxPAGE_ALL || pg == wxPAGE_ODD)
m_Headers[1] = header;
}
void wxHtmlPrintout::SetFooter(const wxString& footer, int pg)
{
if (pg == wxPAGE_ALL || pg == wxPAGE_EVEN)
m_Footers[0] = footer;
if (pg == wxPAGE_ALL || pg == wxPAGE_ODD)
m_Footers[1] = footer;
}
void wxHtmlPrintout::CountPages()
{
wxBusyCursor wait;
int pageWidth, pageHeight, mm_w, mm_h;
float ppmm_h, ppmm_v;
GetPageSizePixels(&pageWidth, &pageHeight);
GetPageSizeMM(&mm_w, &mm_h);
ppmm_h = (float)pageWidth / mm_w;
ppmm_v = (float)pageHeight / mm_h;
int pos = 0;
m_NumPages = 0;
m_PageBreaks[0] = 0;
do
{
pos = m_Renderer->Render((int)( ppmm_h * m_MarginLeft),
(int) (ppmm_v * (m_MarginTop + (m_HeaderHeight == 0 ? 0 : m_MarginSpace)) + m_HeaderHeight),
pos, TRUE, INT_MAX, m_PageBreaks, m_NumPages);
m_PageBreaks[++m_NumPages] = pos;
} while (pos < m_Renderer->GetTotalHeight());
}
void wxHtmlPrintout::RenderPage(wxDC *dc, int page)
{
wxBusyCursor wait;
int pageWidth, pageHeight, mm_w, mm_h, scr_w, scr_h, dc_w, dc_h;
float ppmm_h, ppmm_v;
GetPageSizePixels(&pageWidth, &pageHeight);
GetPageSizeMM(&mm_w, &mm_h);
ppmm_h = (float)pageWidth / mm_w;
ppmm_v = (float)pageHeight / mm_h;
wxDisplaySize(&scr_w, &scr_h);
dc->GetSize(&dc_w, &dc_h);
int ppiPrinterX, ppiPrinterY;
GetPPIPrinter(&ppiPrinterX, &ppiPrinterY);
int ppiScreenX, ppiScreenY;
GetPPIScreen(&ppiScreenX, &ppiScreenY);
dc->SetUserScale((double)dc_w / (double)pageWidth, (double)dc_w / (double)pageWidth);
m_Renderer->SetDC(dc, (double)ppiPrinterY / (double)ppiScreenY);
dc->SetBackgroundMode(wxTRANSPARENT);
m_Renderer->Render((int) (ppmm_h * m_MarginLeft),
(int) (ppmm_v * (m_MarginTop + (m_HeaderHeight == 0 ? 0 : m_MarginSpace)) + m_HeaderHeight),
m_PageBreaks[page-1], FALSE, m_PageBreaks[page]-m_PageBreaks[page-1]);
m_RendererHdr->SetDC(dc, (double)ppiPrinterY / (double)ppiScreenY);
if (m_Headers[page % 2] != wxEmptyString)
{
m_RendererHdr->SetHtmlText(TranslateHeader(m_Headers[page % 2], page));
m_RendererHdr->Render((int) (ppmm_h * m_MarginLeft), (int) (ppmm_v * m_MarginTop));
}
if (m_Footers[page % 2] != wxEmptyString)
{
m_RendererHdr->SetHtmlText(TranslateHeader(m_Footers[page % 2], page));
m_RendererHdr->Render((int) (ppmm_h * m_MarginLeft), (int) (pageHeight - ppmm_v * m_MarginBottom - m_FooterHeight));
}
}
wxString wxHtmlPrintout::TranslateHeader(const wxString& instr, int page)
{
wxString r = instr;
wxString num;
num.Printf(wxT("%i"), page);
r.Replace(wxT("@PAGENUM@"), num);
num.Printf(wxT("%i"), m_NumPages);
r.Replace(wxT("@PAGESCNT@"), num);
return r;
}
void wxHtmlPrintout::SetMargins(float top, float bottom, float left, float right, float spaces)
{
m_MarginTop = top;
m_MarginBottom = bottom;
m_MarginLeft = left;
m_MarginRight = right;
m_MarginSpace = spaces;
}
void wxHtmlPrintout::SetFonts(wxString normal_face, wxString fixed_face,
const int *sizes)
{
m_Renderer->SetFonts(normal_face, fixed_face, sizes);
m_RendererHdr->SetFonts(normal_face, fixed_face, sizes);
}
//----------------------------------------------------------------------------
// wxHtmlEasyPrinting
//----------------------------------------------------------------------------
wxHtmlEasyPrinting::wxHtmlEasyPrinting(const wxString& name, wxFrame *parent_frame)
{
m_Frame = parent_frame;
m_Name = name;
m_PrintData = new wxPrintData;
m_PageSetupData = new wxPageSetupDialogData;
m_Headers[0] = m_Headers[1] = m_Footers[0] = m_Footers[1] = wxEmptyString;
m_PageSetupData->EnableMargins(TRUE);
m_PageSetupData->SetMarginTopLeft(wxPoint(25, 25));
m_PageSetupData->SetMarginBottomRight(wxPoint(25, 25));
SetFonts(wxEmptyString, wxEmptyString, NULL);
}
wxHtmlEasyPrinting::~wxHtmlEasyPrinting()
{
delete m_PrintData;
delete m_PageSetupData;
}
bool wxHtmlEasyPrinting::PreviewFile(const wxString &htmlfile)
{
wxHtmlPrintout *p1 = CreatePrintout();
p1->SetHtmlFile(htmlfile);
wxHtmlPrintout *p2 = CreatePrintout();
p2->SetHtmlFile(htmlfile);
return DoPreview(p1, p2);
}
bool wxHtmlEasyPrinting::PreviewText(const wxString &htmltext, const wxString &basepath)
{
wxHtmlPrintout *p1 = CreatePrintout();
p1->SetHtmlText(htmltext, basepath, TRUE);
wxHtmlPrintout *p2 = CreatePrintout();
p2->SetHtmlText(htmltext, basepath, TRUE);
return DoPreview(p1, p2);
}
bool wxHtmlEasyPrinting::PrintFile(const wxString &htmlfile)
{
wxHtmlPrintout *p = CreatePrintout();
p->SetHtmlFile(htmlfile);
bool ret = DoPrint(p);
delete p;
return ret;
}
bool wxHtmlEasyPrinting::PrintText(const wxString &htmltext, const wxString &basepath)
{
wxHtmlPrintout *p = CreatePrintout();
p->SetHtmlText(htmltext, basepath, TRUE);
bool ret = DoPrint(p);
delete p;
return ret;
}
bool wxHtmlEasyPrinting::DoPreview(wxHtmlPrintout *printout1, wxHtmlPrintout *printout2)
{
// Pass two printout objects: for preview, and possible printing.
wxPrintDialogData printDialogData(*m_PrintData);
wxPrintPreview *preview = new wxPrintPreview(printout1, printout2, &printDialogData);
if (!preview->Ok())
{
delete preview;
return FALSE;
}
wxPreviewFrame *frame = new wxPreviewFrame(preview, m_Frame,
m_Name + _(" Preview"),
wxPoint(100, 100), wxSize(650, 500));
frame->Centre(wxBOTH);
frame->Initialize();
frame->Show(TRUE);
return TRUE;
}
bool wxHtmlEasyPrinting::DoPrint(wxHtmlPrintout *printout)
{
wxPrintDialogData printDialogData(*m_PrintData);
wxPrinter printer(&printDialogData);
if (!printer.Print(m_Frame, printout, TRUE))
{
return FALSE;
}
(*m_PrintData) = printer.GetPrintDialogData().GetPrintData();
return TRUE;
}
void wxHtmlEasyPrinting::PrinterSetup()
{
wxPrintDialogData printDialogData(*m_PrintData);
wxPrintDialog printerDialog(m_Frame, &printDialogData);
printerDialog.GetPrintDialogData().SetSetupDialog(TRUE);
if (printerDialog.ShowModal() == wxID_OK)
(*m_PrintData) = printerDialog.GetPrintDialogData().GetPrintData();
}
void wxHtmlEasyPrinting::PageSetup()
{
if (!m_PrintData->Ok())
{
wxLogError(_("There was a problem during page setup: you may need to set a default printer."));
return;
}
m_PageSetupData->SetPrintData(*m_PrintData);
wxPageSetupDialog pageSetupDialog(m_Frame, m_PageSetupData);
if (pageSetupDialog.ShowModal() == wxID_OK)
{
(*m_PrintData) = pageSetupDialog.GetPageSetupData().GetPrintData();
(*m_PageSetupData) = pageSetupDialog.GetPageSetupData();
}
}
void wxHtmlEasyPrinting::SetHeader(const wxString& header, int pg)
{
if (pg == wxPAGE_ALL || pg == wxPAGE_EVEN)
m_Headers[0] = header;
if (pg == wxPAGE_ALL || pg == wxPAGE_ODD)
m_Headers[1] = header;
}
void wxHtmlEasyPrinting::SetFooter(const wxString& footer, int pg)
{
if (pg == wxPAGE_ALL || pg == wxPAGE_EVEN)
m_Footers[0] = footer;
if (pg == wxPAGE_ALL || pg == wxPAGE_ODD)
m_Footers[1] = footer;
}
void wxHtmlEasyPrinting::SetFonts(wxString normal_face, wxString fixed_face,
const int *sizes)
{
m_FontFaceNormal = normal_face;
m_FontFaceFixed = fixed_face;
if (sizes)
{
m_FontsSizes = m_FontsSizesArr;
for (int i = 0; i < 7; i++) m_FontsSizes[i] = sizes[i];
}
else
m_FontsSizes = NULL;
}
wxHtmlPrintout *wxHtmlEasyPrinting::CreatePrintout()
{
wxHtmlPrintout *p = new wxHtmlPrintout(m_Name);
p->SetFonts(m_FontFaceNormal, m_FontFaceFixed, m_FontsSizes);
p->SetHeader(m_Headers[0], wxPAGE_EVEN);
p->SetHeader(m_Headers[1], wxPAGE_ODD);
p->SetFooter(m_Footers[0], wxPAGE_EVEN);
p->SetFooter(m_Footers[1], wxPAGE_ODD);
p->SetMargins(m_PageSetupData->GetMarginTopLeft().y,
m_PageSetupData->GetMarginBottomRight().y,
m_PageSetupData->GetMarginTopLeft().x,
m_PageSetupData->GetMarginBottomRight().x);
return p;
}
// This hack forces the linker to always link in m_* files
// (wxHTML doesn't work without handlers from these files)
#include "wx/html/forcelnk.h"
FORCE_WXHTML_MODULES()
#endif // wxUSE_HTML & wxUSE_PRINTING_ARCHITECTURE

View File

@@ -1,90 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: m_dflist.cpp
// Purpose: wxHtml module for definition lists (DL,DT,DD)
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation
#endif
#include "wx/wxprec.h"
#include "wx/defs.h"
#if wxUSE_HTML && wxUSE_STREAMS
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WXPRECOMP
#endif
#include "wx/html/forcelnk.h"
#include "wx/html/m_templ.h"
#include "wx/html/htmlcell.h"
FORCE_LINK_ME(m_dflist)
TAG_HANDLER_BEGIN(DEFLIST, "DL,DT,DD" )
TAG_HANDLER_PROC(tag)
{
wxHtmlContainerCell *c;
if (tag.GetName() == wxT("DL"))
{
if (m_WParser->GetContainer()->GetFirstCell() != NULL)
{
m_WParser->CloseContainer();
m_WParser->OpenContainer();
}
m_WParser->GetContainer()->SetIndent(m_WParser->GetCharHeight(), wxHTML_INDENT_TOP);
ParseInner(tag);
if (m_WParser->GetContainer()->GetFirstCell() != NULL)
{
m_WParser->CloseContainer();
m_WParser->OpenContainer();
}
m_WParser->GetContainer()->SetIndent(m_WParser->GetCharHeight(), wxHTML_INDENT_TOP);
return TRUE;
}
else if (tag.GetName() == wxT("DT"))
{
m_WParser->CloseContainer();
c = m_WParser->OpenContainer();
c->SetAlignHor(wxHTML_ALIGN_LEFT);
c->SetMinHeight(m_WParser->GetCharHeight());
return FALSE;
}
else // "DD"
{
m_WParser->CloseContainer();
c = m_WParser->OpenContainer();
c->SetIndent(5 * m_WParser->GetCharWidth(), wxHTML_INDENT_LEFT);
return FALSE;
}
}
TAG_HANDLER_END(DEFLIST)
TAGS_MODULE_BEGIN(DefinitionList)
TAGS_MODULE_ADD(DEFLIST)
TAGS_MODULE_END(DefinitionList)
#endif

View File

@@ -1,321 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: m_fonts.cpp
// Purpose: wxHtml module for fonts & colors of fonts
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation
#endif
#include "wx/wxprec.h"
#include "wx/defs.h"
#if wxUSE_HTML && wxUSE_STREAMS
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WXPRECOMP
#endif
#include "wx/html/forcelnk.h"
#include "wx/html/m_templ.h"
#include "wx/fontenum.h"
#include "wx/tokenzr.h"
FORCE_LINK_ME(m_fonts)
TAG_HANDLER_BEGIN(FONT, "FONT" )
TAG_HANDLER_VARS
wxArrayString m_Faces;
TAG_HANDLER_PROC(tag)
{
wxColour oldclr = m_WParser->GetActualColor();
int oldsize = m_WParser->GetFontSize();
wxString oldface = m_WParser->GetFontFace();
if (tag.HasParam(wxT("COLOR")))
{
wxColour clr;
if (tag.GetParamAsColour(wxT("COLOR"), &clr))
{
m_WParser->SetActualColor(clr);
m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(clr));
}
}
if (tag.HasParam(wxT("SIZE")))
{
int tmp = 0;
wxChar c = tag.GetParam(wxT("SIZE")).GetChar(0);
if (tag.GetParamAsInt(wxT("SIZE"), &tmp))
{
if (c == wxT('+') || c == wxT('-'))
m_WParser->SetFontSize(oldsize+tmp);
else
m_WParser->SetFontSize(tmp);
m_WParser->GetContainer()->InsertCell(
new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
}
}
if (tag.HasParam(wxT("FACE")))
{
if (m_Faces.GetCount() == 0)
{
wxFontEnumerator enu;
enu.EnumerateFacenames();
m_Faces = *enu.GetFacenames();
}
wxStringTokenizer tk(tag.GetParam(wxT("FACE")), wxT(","));
int index;
while (tk.HasMoreTokens())
{
if ((index = m_Faces.Index(tk.GetNextToken(), FALSE)) != wxNOT_FOUND)
{
m_WParser->SetFontFace(m_Faces[index]);
m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
break;
}
}
}
ParseInner(tag);
if (oldface != m_WParser->GetFontFace())
{
m_WParser->SetFontFace(oldface);
m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
}
if (oldsize != m_WParser->GetFontSize())
{
m_WParser->SetFontSize(oldsize);
m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
}
if (oldclr != m_WParser->GetActualColor())
{
m_WParser->SetActualColor(oldclr);
m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(oldclr));
}
return TRUE;
}
TAG_HANDLER_END(FONT)
TAG_HANDLER_BEGIN(FACES_U, "U,STRIKE")
TAG_HANDLER_PROC(tag)
{
int underlined = m_WParser->GetFontUnderlined();
m_WParser->SetFontUnderlined(TRUE);
m_WParser->GetContainer()->InsertCell(
new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
ParseInner(tag);
m_WParser->SetFontUnderlined(underlined);
m_WParser->GetContainer()->InsertCell(
new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
return TRUE;
}
TAG_HANDLER_END(FACES_U)
TAG_HANDLER_BEGIN(FACES_B, "B,STRONG")
TAG_HANDLER_PROC(tag)
{
int bold = m_WParser->GetFontBold();
m_WParser->SetFontBold(TRUE);
m_WParser->GetContainer()->InsertCell(
new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
ParseInner(tag);
m_WParser->SetFontBold(bold);
m_WParser->GetContainer()->InsertCell(
new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
return TRUE;
}
TAG_HANDLER_END(FACES_B)
TAG_HANDLER_BEGIN(FACES_I, "I,EM,CITE,ADDRESS")
TAG_HANDLER_PROC(tag)
{
int italic = m_WParser->GetFontItalic();
m_WParser->SetFontItalic(TRUE);
m_WParser->GetContainer()->InsertCell(
new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
ParseInner(tag);
m_WParser->SetFontItalic(italic);
m_WParser->GetContainer()->InsertCell(
new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
return TRUE;
}
TAG_HANDLER_END(FACES_I)
TAG_HANDLER_BEGIN(FACES_TT, "TT,CODE,KBD,SAMP")
TAG_HANDLER_PROC(tag)
{
int fixed = m_WParser->GetFontFixed();
m_WParser->SetFontFixed(TRUE);
m_WParser->GetContainer()->InsertCell(
new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
ParseInner(tag);
m_WParser->SetFontFixed(fixed);
m_WParser->GetContainer()->InsertCell(
new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
return TRUE;
}
TAG_HANDLER_END(FACES_TT)
TAG_HANDLER_BEGIN(Hx, "H1,H2,H3,H4,H5,H6")
TAG_HANDLER_PROC(tag)
{
int old_size, old_b, old_i, old_u, old_f, old_al;
wxHtmlContainerCell *c;
old_size = m_WParser->GetFontSize();
old_b = m_WParser->GetFontBold();
old_i = m_WParser->GetFontItalic();
old_u = m_WParser->GetFontUnderlined();
old_f = m_WParser->GetFontFixed();
old_al = m_WParser->GetAlign();
m_WParser->SetFontBold(TRUE);
m_WParser->SetFontItalic(FALSE);
m_WParser->SetFontUnderlined(FALSE);
m_WParser->SetFontFixed(FALSE);
if (tag.GetName() == wxT("H1"))
m_WParser->SetFontSize(7);
else if (tag.GetName() == wxT("H2"))
m_WParser->SetFontSize(6);
else if (tag.GetName() == wxT("H3"))
m_WParser->SetFontSize(5);
else if (tag.GetName() == wxT("H4"))
{
m_WParser->SetFontSize(5);
m_WParser->SetFontItalic(TRUE);
m_WParser->SetFontBold(FALSE);
}
else if (tag.GetName() == wxT("H5"))
m_WParser->SetFontSize(4);
else if (tag.GetName() == wxT("H6"))
{
m_WParser->SetFontSize(4);
m_WParser->SetFontItalic(TRUE);
m_WParser->SetFontBold(FALSE);
}
c = m_WParser->GetContainer();
if (c->GetFirstCell())
{
m_WParser->CloseContainer();
m_WParser->OpenContainer();
c = m_WParser->GetContainer();
}
c = m_WParser->GetContainer();
c->SetAlign(tag);
c->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
c->SetIndent(m_WParser->GetCharHeight(), wxHTML_INDENT_TOP);
m_WParser->SetAlign(c->GetAlignHor());
ParseInner(tag);
m_WParser->SetFontSize(old_size);
m_WParser->SetFontBold(old_b);
m_WParser->SetFontItalic(old_i);
m_WParser->SetFontUnderlined(old_u);
m_WParser->SetFontFixed(old_f);
m_WParser->SetAlign(old_al);
m_WParser->GetContainer()->InsertCell(
new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
m_WParser->CloseContainer();
m_WParser->OpenContainer();
c = m_WParser->GetContainer();
c->SetIndent(m_WParser->GetCharHeight(), wxHTML_INDENT_TOP);
return TRUE;
}
TAG_HANDLER_END(Hx)
TAG_HANDLER_BEGIN(BIGSMALL, "BIG,SMALL")
TAG_HANDLER_PROC(tag)
{
int oldsize = m_WParser->GetFontSize();
int sz = (tag.GetName() == wxT("BIG")) ? +1 : -1;
m_WParser->SetFontSize(sz);
m_WParser->GetContainer()->InsertCell(
new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
ParseInner(tag);
m_WParser->SetFontSize(oldsize);
m_WParser->GetContainer()->InsertCell(
new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
return TRUE;
}
TAG_HANDLER_END(BIGSMALL)
TAGS_MODULE_BEGIN(Fonts)
TAGS_MODULE_ADD(FONT)
TAGS_MODULE_ADD(FACES_U)
TAGS_MODULE_ADD(FACES_I)
TAGS_MODULE_ADD(FACES_B)
TAGS_MODULE_ADD(FACES_TT)
TAGS_MODULE_ADD(Hx)
TAGS_MODULE_ADD(BIGSMALL)
TAGS_MODULE_END(Fonts)
#endif

View File

@@ -1,110 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: m_hline.cpp
// Purpose: wxHtml module for horizontal line (HR tag)
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation
#endif
#include "wx/wxprec.h"
#include "wx/defs.h"
#if wxUSE_HTML && wxUSE_STREAMS
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WXPRECOMP
#include "wx/brush.h"
#include "wx/pen.h"
#include "wx/dc.h"
#endif
#include "wx/html/forcelnk.h"
#include "wx/html/m_templ.h"
#include "wx/html/htmlcell.h"
FORCE_LINK_ME(m_hline)
//-----------------------------------------------------------------------------
// wxHtmlLineCell
//-----------------------------------------------------------------------------
class wxHtmlLineCell : public wxHtmlCell
{
public:
wxHtmlLineCell(int size, bool shading) : wxHtmlCell() {m_Height = size; m_HasShading = shading;}
void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2);
void Layout(int w)
{ m_Width = w; wxHtmlCell::Layout(w); }
private:
// Should we draw 3-D shading or not
bool m_HasShading;
};
void wxHtmlLineCell::Draw(wxDC& dc, int x, int y, int WXUNUSED(view_y1), int WXUNUSED(view_y2))
{
wxBrush mybrush(wxT("GREY"), (m_HasShading) ? wxTRANSPARENT : wxSOLID);
wxPen mypen(wxT("GREY"), 1, wxSOLID);
dc.SetBrush(mybrush);
dc.SetPen(mypen);
dc.DrawRectangle(x + m_PosX, y + m_PosY, m_Width, m_Height);
}
//-----------------------------------------------------------------------------
// The list handler:
//-----------------------------------------------------------------------------
TAG_HANDLER_BEGIN(HR, "HR")
TAG_HANDLER_PROC(tag)
{
wxHtmlContainerCell *c;
int sz;
bool HasShading;
m_WParser->CloseContainer();
c = m_WParser->OpenContainer();
c->SetIndent(m_WParser->GetCharHeight(), wxHTML_INDENT_VERTICAL);
c->SetAlignHor(wxHTML_ALIGN_CENTER);
c->SetAlign(tag);
c->SetWidthFloat(tag);
sz = 1;
tag.GetParamAsInt(wxT("SIZE"), &sz);
HasShading = !(tag.HasParam(wxT("NOSHADE")));
c->InsertCell(new wxHtmlLineCell((int)((double)sz * m_WParser->GetPixelScale()), HasShading));
m_WParser->CloseContainer();
m_WParser->OpenContainer();
return FALSE;
}
TAG_HANDLER_END(HR)
TAGS_MODULE_BEGIN(HLine)
TAGS_MODULE_ADD(HR)
TAGS_MODULE_END(HLine)
#endif

View File

@@ -1,692 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: m_image.cpp
// Purpose: wxHtml module for displaying images
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik, Joel Lucsy
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation
#endif
#include "wx/wxprec.h"
#include "wx/defs.h"
#if wxUSE_HTML && wxUSE_STREAMS
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WXPRECOMP
#include "wx/dc.h"
#include "wx/scrolwin.h"
#include "wx/timer.h"
#include "wx/dcmemory.h"
#endif
#include "wx/html/forcelnk.h"
#include "wx/html/m_templ.h"
#include "wx/html/htmlwin.h"
#include "wx/image.h"
#include "wx/gifdecod.h"
#include "wx/dynarray.h"
#include "wx/log.h"
#include "wx/artprov.h"
#include <math.h>
#include <float.h>
FORCE_LINK_ME(m_image)
WX_DECLARE_OBJARRAY(int, CoordArray);
#include "wx/arrimpl.cpp" // this is a magic incantation which must be done!
WX_DEFINE_OBJARRAY(CoordArray);
//--------------------------------------------------------------------------------
// wxHtmlImageMapAreaCell
// 0-width, 0-height cell that represents single area in imagemap
// (it's GetLink is called from wxHtmlImageCell's)
//--------------------------------------------------------------------------------
class wxHtmlImageMapAreaCell : public wxHtmlCell
{
public:
enum celltype { CIRCLE, RECT, POLY };
protected:
CoordArray coords;
celltype type;
int radius;
public:
wxHtmlImageMapAreaCell( celltype t, wxString &coords, double pixel_scale = 1.0);
virtual wxHtmlLinkInfo *GetLink( int x = 0, int y = 0 ) const;
};
wxHtmlImageMapAreaCell::wxHtmlImageMapAreaCell( wxHtmlImageMapAreaCell::celltype t, wxString &incoords, double pixel_scale )
{
int i;
wxString x = incoords, y;
type = t;
while ((i = x.Find( ',' )) != -1)
{
coords.Add( (int)(pixel_scale * (double)wxAtoi( x.Left( i ).c_str())) );
x = x.Mid( i + 1 );
}
coords.Add( (int)(pixel_scale * (double)wxAtoi( x.c_str())) );
}
wxHtmlLinkInfo *wxHtmlImageMapAreaCell::GetLink( int x, int y ) const
{
switch (type)
{
case RECT:
{
int l, t, r, b;
l = coords[ 0 ];
t = coords[ 1 ];
r = coords[ 2 ];
b = coords[ 3 ];
if (x >= l && x <= r && y >= t && y <= b)
{
return m_Link;
}
break;
}
case CIRCLE:
{
int l, t, r;
double d;
l = coords[ 0 ];
t = coords[ 1 ];
r = coords[ 2 ];
d = sqrt( (double) (((x - l) * (x - l)) + ((y - t) * (y - t))) );
if (d < (double)r)
{
return m_Link;
}
}
break;
case POLY:
{
if (coords.GetCount() >= 6)
{
int intersects = 0;
int wherex = x;
int wherey = y;
int totalv = coords.GetCount() / 2;
int totalc = totalv * 2;
int xval = coords[totalc - 2];
int yval = coords[totalc - 1];
int end = totalc;
int pointer = 1;
if ((yval >= wherey) != (coords[pointer] >= wherey))
{
if ((xval >= wherex) == (coords[0] >= wherex))
{
intersects += (xval >= wherex) ? 1 : 0;
}
else
{
intersects += ((xval - (yval - wherey) *
(coords[0] - xval) /
(coords[pointer] - yval)) >= wherex) ? 1 : 0;
}
}
while (pointer < end)
{
yval = coords[pointer];
pointer += 2;
if (yval >= wherey)
{
while ((pointer < end) && (coords[pointer] >= wherey))
{
pointer += 2;
}
if (pointer >= end)
{
break;
}
if ((coords[pointer - 3] >= wherex) ==
(coords[pointer - 1] >= wherex)) {
intersects += (coords[pointer - 3] >= wherex) ? 1 : 0;
}
else
{
intersects +=
((coords[pointer - 3] - (coords[pointer - 2] - wherey) *
(coords[pointer - 1] - coords[pointer - 3]) /
(coords[pointer] - coords[pointer - 2])) >= wherex) ? 1 : 0;
}
}
else
{
while ((pointer < end) && (coords[pointer] < wherey))
{
pointer += 2;
}
if (pointer >= end)
{
break;
}
if ((coords[pointer - 3] >= wherex) ==
(coords[pointer - 1] >= wherex))
{
intersects += (coords[pointer - 3] >= wherex) ? 1 : 0;
}
else
{
intersects +=
((coords[pointer - 3] - (coords[pointer - 2] - wherey) *
(coords[pointer - 1] - coords[pointer - 3]) /
(coords[pointer] - coords[pointer - 2])) >= wherex) ? 1 : 0;
}
}
}
if ((intersects & 1) != 0)
{
return m_Link;
}
}
}
break;
}
if (m_Next)
{
wxHtmlImageMapAreaCell *a = (wxHtmlImageMapAreaCell*)m_Next;
return a->GetLink( x, y );
}
return NULL;
}
//--------------------------------------------------------------------------------
// wxHtmlImageMapCell
// 0-width, 0-height cell that represents map from imagemaps
// it is always placed before wxHtmlImageMapAreaCells
// It responds to Find(wxHTML_COND_ISIMAGEMAP)
//--------------------------------------------------------------------------------
class wxHtmlImageMapCell : public wxHtmlCell
{
public:
wxHtmlImageMapCell( wxString &name );
protected:
wxString m_Name;
public:
virtual wxHtmlLinkInfo *GetLink( int x = 0, int y = 0 ) const;
virtual const wxHtmlCell *Find( int cond, const void *param ) const;
};
wxHtmlImageMapCell::wxHtmlImageMapCell( wxString &name )
{
m_Name = name ;
}
wxHtmlLinkInfo *wxHtmlImageMapCell::GetLink( int x, int y ) const
{
wxHtmlImageMapAreaCell *a = (wxHtmlImageMapAreaCell*)m_Next;
if (a)
return a->GetLink( x, y );
return wxHtmlCell::GetLink( x, y );
}
const wxHtmlCell *wxHtmlImageMapCell::Find( int cond, const void *param ) const
{
if (cond == wxHTML_COND_ISIMAGEMAP)
{
if (m_Name == *((wxString*)(param)))
return this;
}
return wxHtmlCell::Find(cond, param);
}
//--------------------------------------------------------------------------------
// wxHtmlImageCell
// Image/bitmap
//--------------------------------------------------------------------------------
class wxHtmlImageCell : public wxHtmlCell
{
public:
wxHtmlImageCell(wxWindow *window,
wxFSFile *input, int w = -1, int h = -1,
double scale = 1.0, int align = wxHTML_ALIGN_BOTTOM,
const wxString& mapname = wxEmptyString);
~wxHtmlImageCell();
void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2);
virtual wxHtmlLinkInfo *GetLink(int x = 0, int y = 0) const;
void SetImage(const wxImage& img);
#if wxUSE_GIF && wxUSE_TIMER
void AdvanceAnimation(wxTimer *timer);
virtual void Layout(int w);
#endif
private:
wxBitmap *m_bitmap;
int m_bmpW, m_bmpH;
bool m_showFrame:1;
wxScrolledWindow *m_window;
#if wxUSE_GIF && wxUSE_TIMER
wxGIFDecoder *m_gifDecoder;
wxTimer *m_gifTimer;
int m_physX, m_physY;
#endif
double m_scale;
wxHtmlImageMapCell *m_imageMap;
wxString m_mapName;
DECLARE_NO_COPY_CLASS(wxHtmlImageCell)
};
#if wxUSE_GIF && wxUSE_TIMER
class wxGIFTimer : public wxTimer
{
public:
wxGIFTimer(wxHtmlImageCell *cell) : m_cell(cell) {}
virtual void Notify()
{
m_cell->AdvanceAnimation(this);
}
private:
wxHtmlImageCell *m_cell;
DECLARE_NO_COPY_CLASS(wxGIFTimer)
};
#endif
//----------------------------------------------------------------------------
// wxHtmlImageCell
//----------------------------------------------------------------------------
wxHtmlImageCell::wxHtmlImageCell(wxWindow *window, wxFSFile *input,
int w, int h, double scale, int align,
const wxString& mapname) : wxHtmlCell()
{
m_window = window ? wxStaticCast(window, wxScrolledWindow) : NULL;
m_scale = scale;
m_showFrame = FALSE;
m_bitmap = NULL;
m_bmpW = w;
m_bmpH = h;
m_imageMap = NULL;
m_mapName = mapname;
SetCanLiveOnPagebreak(FALSE);
#if wxUSE_GIF && wxUSE_TIMER
m_gifDecoder = NULL;
m_gifTimer = NULL;
m_physX = m_physY = -1;
#endif
if ( m_bmpW && m_bmpH )
{
if ( input )
{
wxInputStream *s = input->GetStream();
if ( s )
{
bool readImg = TRUE;
#if wxUSE_GIF && wxUSE_TIMER
if ( (input->GetLocation().Matches(wxT("*.gif")) ||
input->GetLocation().Matches(wxT("*.GIF"))) && m_window )
{
m_gifDecoder = new wxGIFDecoder(s, TRUE);
if ( m_gifDecoder->ReadGIF() == wxGIF_OK )
{
wxImage img;
if ( m_gifDecoder->ConvertToImage(&img) )
SetImage(img);
readImg = FALSE;
if ( m_gifDecoder->IsAnimation() )
{
m_gifTimer = new wxGIFTimer(this);
m_gifTimer->Start(m_gifDecoder->GetDelay(), TRUE);
}
else
{
wxDELETE(m_gifDecoder);
}
}
else
{
wxDELETE(m_gifDecoder);
}
}
if ( readImg )
#endif // wxUSE_GIF && wxUSE_TIMER
{
wxImage image(*s, wxBITMAP_TYPE_ANY);
if ( image.Ok() )
SetImage(image);
}
}
}
else // input==NULL, use "broken image" bitmap
{
if ( m_bmpW == -1 && m_bmpH == -1 )
{
m_bmpW = 29;
m_bmpH = 31;
}
else
{
m_showFrame = TRUE;
if ( m_bmpW == -1 ) m_bmpW = 31;
if ( m_bmpH == -1 ) m_bmpH = 33;
}
m_bitmap =
new wxBitmap(wxArtProvider::GetBitmap(wxART_MISSING_IMAGE));
}
}
//else: ignore the 0-sized images used sometimes on the Web pages
m_Width = (int)(scale * (double)m_bmpW);
m_Height = (int)(scale * (double)m_bmpH);
switch (align)
{
case wxHTML_ALIGN_TOP :
m_Descent = m_Height;
break;
case wxHTML_ALIGN_CENTER :
m_Descent = m_Height / 2;
break;
case wxHTML_ALIGN_BOTTOM :
default :
m_Descent = 0;
break;
}
}
void wxHtmlImageCell::SetImage(const wxImage& img)
{
if ( img.Ok() )
{
delete m_bitmap;
int ww, hh;
ww = img.GetWidth();
hh = img.GetHeight();
if ( m_bmpW == -1 )
m_bmpW = ww;
if ( m_bmpH == -1 )
m_bmpH = hh;
if ((m_bmpW != ww) || (m_bmpH != hh))
{
wxImage img2 = img.Scale(m_bmpW, m_bmpH);
m_bitmap = new wxBitmap(img2);
}
else
m_bitmap = new wxBitmap(img);
}
}
#if wxUSE_GIF && wxUSE_TIMER
void wxHtmlImageCell::AdvanceAnimation(wxTimer *timer)
{
wxImage img;
m_gifDecoder->GoNextFrame(TRUE);
if ( m_physX == -1 )
{
m_physX = m_physY = 0;
for (wxHtmlCell *cell = this; cell; cell = cell->GetParent())
{
m_physX += cell->GetPosX();
m_physY += cell->GetPosY();
}
}
int x, y;
m_window->CalcScrolledPosition(m_physX, m_physY, &x, &y);
wxRect rect(x, y, m_Width, m_Height);
if ( m_window->GetClientRect().Intersects(rect) &&
m_gifDecoder->ConvertToImage(&img) )
{
if ( (int)m_gifDecoder->GetWidth() != m_Width ||
(int)m_gifDecoder->GetHeight() != m_Height ||
m_gifDecoder->GetLeft() != 0 || m_gifDecoder->GetTop() != 0 )
{
wxBitmap bmp(img);
wxMemoryDC dc;
dc.SelectObject(*m_bitmap);
dc.DrawBitmap(bmp, m_gifDecoder->GetLeft(), m_gifDecoder->GetTop());
}
else
SetImage(img);
m_window->Refresh(img.HasMask(), &rect);
}
timer->Start(m_gifDecoder->GetDelay(), TRUE);
}
void wxHtmlImageCell::Layout(int w)
{
wxHtmlCell::Layout(w);
m_physX = m_physY = -1;
}
#endif
wxHtmlImageCell::~wxHtmlImageCell()
{
delete m_bitmap;
#if wxUSE_GIF && wxUSE_TIMER
delete m_gifTimer;
delete m_gifDecoder;
#endif
}
void wxHtmlImageCell::Draw(wxDC& dc, int x, int y, int WXUNUSED(view_y1), int WXUNUSED(view_y2))
{
if ( m_showFrame )
{
dc.SetBrush(*wxTRANSPARENT_BRUSH);
dc.SetPen(*wxBLACK_PEN);
dc.DrawRectangle(x + m_PosX, y + m_PosY, m_Width, m_Height);
x++, y++;
}
if ( m_bitmap )
{
double us_x, us_y;
dc.GetUserScale(&us_x, &us_y);
dc.SetUserScale(us_x * m_scale, us_y * m_scale);
dc.DrawBitmap(*m_bitmap, (int) ((x + m_PosX) / m_scale),
(int) ((y + m_PosY) / m_scale), TRUE);
dc.SetUserScale(us_x, us_y);
}
}
wxHtmlLinkInfo *wxHtmlImageCell::GetLink( int x, int y ) const
{
if (m_mapName.IsEmpty())
return wxHtmlCell::GetLink( x, y );
if (!m_imageMap)
{
wxHtmlContainerCell *p, *op;
op = p = GetParent();
while (p)
{
op = p;
p = p->GetParent();
}
p = op;
wxHtmlCell *cell = (wxHtmlCell*)p->Find(wxHTML_COND_ISIMAGEMAP,
(const void*)(&m_mapName));
if (!cell)
{
((wxString&)m_mapName).Clear();
return wxHtmlCell::GetLink( x, y );
}
{ // dirty hack, ask Joel why he fills m_ImageMap in this place
// THE problem is that we're in const method and we can't modify m_ImageMap
wxHtmlImageMapCell **cx = (wxHtmlImageMapCell**)(&m_imageMap);
*cx = (wxHtmlImageMapCell*)cell;
}
}
return m_imageMap->GetLink(x, y);
}
//--------------------------------------------------------------------------------
// tag handler
//--------------------------------------------------------------------------------
TAG_HANDLER_BEGIN(IMG, "IMG,MAP,AREA")
TAG_HANDLER_PROC(tag)
{
if (tag.GetName() == wxT("IMG"))
{
if (tag.HasParam(wxT("SRC")))
{
int w = -1, h = -1;
int al;
wxFSFile *str;
wxString tmp = tag.GetParam(wxT("SRC"));
wxString mn = wxEmptyString;
str = m_WParser->OpenURL(wxHTML_URL_IMAGE, tmp);
if (tag.HasParam(wxT("WIDTH")))
tag.GetParamAsInt(wxT("WIDTH"), &w);
if (tag.HasParam(wxT("HEIGHT")))
tag.GetParamAsInt(wxT("HEIGHT"), &h);
al = wxHTML_ALIGN_BOTTOM;
if (tag.HasParam(wxT("ALIGN")))
{
wxString alstr = tag.GetParam(wxT("ALIGN"));
alstr.MakeUpper(); // for the case alignment was in ".."
if (alstr == wxT("TEXTTOP"))
al = wxHTML_ALIGN_TOP;
else if ((alstr == wxT("CENTER")) || (alstr == wxT("ABSCENTER")))
al = wxHTML_ALIGN_CENTER;
}
if (tag.HasParam(wxT("USEMAP")))
{
mn = tag.GetParam( wxT("USEMAP") );
if (mn.GetChar(0) == wxT('#'))
{
mn = mn.Mid( 1 );
}
}
wxHtmlImageCell *cel = new wxHtmlImageCell(
m_WParser->GetWindow(),
str, w, h,
m_WParser->GetPixelScale(),
al, mn);
cel->SetLink(m_WParser->GetLink());
cel->SetId(tag.GetParam(wxT("id"))); // may be empty
m_WParser->GetContainer()->InsertCell(cel);
if (str)
delete str;
}
}
if (tag.GetName() == wxT("MAP"))
{
m_WParser->CloseContainer();
m_WParser->OpenContainer();
if (tag.HasParam(wxT("NAME")))
{
wxString tmp = tag.GetParam(wxT("NAME"));
wxHtmlImageMapCell *cel = new wxHtmlImageMapCell( tmp );
m_WParser->GetContainer()->InsertCell( cel );
}
ParseInner( tag );
m_WParser->CloseContainer();
m_WParser->OpenContainer();
}
if (tag.GetName() == wxT("AREA"))
{
if (tag.HasParam(wxT("SHAPE")))
{
wxString tmp = tag.GetParam(wxT("SHAPE"));
wxString coords = wxEmptyString;
tmp.MakeUpper();
wxHtmlImageMapAreaCell *cel = NULL;
if (tag.HasParam(wxT("COORDS")))
{
coords = tag.GetParam(wxT("COORDS"));
}
if (tmp == wxT("POLY"))
{
cel = new wxHtmlImageMapAreaCell( wxHtmlImageMapAreaCell::POLY, coords, m_WParser->GetPixelScale() );
}
else if (tmp == wxT("CIRCLE"))
{
cel = new wxHtmlImageMapAreaCell( wxHtmlImageMapAreaCell::CIRCLE, coords, m_WParser->GetPixelScale() );
}
else if (tmp == wxT("RECT"))
{
cel = new wxHtmlImageMapAreaCell( wxHtmlImageMapAreaCell::RECT, coords, m_WParser->GetPixelScale() );
}
if (cel != NULL && tag.HasParam(wxT("HREF")))
{
wxString tmp = tag.GetParam(wxT("HREF"));
wxString target = wxEmptyString;
if (tag.HasParam(wxT("TARGET"))) target = tag.GetParam(wxT("TARGET"));
cel->SetLink( wxHtmlLinkInfo(tmp, target));
}
if (cel != NULL) m_WParser->GetContainer()->InsertCell( cel );
}
}
return FALSE;
}
TAG_HANDLER_END(IMG)
TAGS_MODULE_BEGIN(Image)
TAGS_MODULE_ADD(IMG)
TAGS_MODULE_END(Image)
#endif

View File

@@ -1,369 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: m_layout.cpp
// Purpose: wxHtml module for basic paragraphs/layout handling
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation
#endif
#include "wx/wxprec.h"
#include "wx/defs.h"
#if wxUSE_HTML && wxUSE_STREAMS
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WXPRECOMP
#endif
#include "wx/html/forcelnk.h"
#include "wx/html/m_templ.h"
#include "wx/html/htmlwin.h"
FORCE_LINK_ME(m_layout)
#include <stdlib.h> // bsearch()
//-----------------------------------------------------------------------------
// wxHtmlPageBreakCell
//-----------------------------------------------------------------------------
// Since html isn't a page-layout language, it doesn't support page
// page breaks directly--that requires CSS2 support. But a page-break
// facility is handy, and has been requested more than once on the
// mailing lists. This wxHtml tag handler implements just enough of
// CSS2 to support a page break by recognizing only
// <div style="page-break-before:always">
//
// wxHtml maintains page breaks in wxHtmlPrintout::m_PageBreaks. The
// tag handler below adds appropriate offsets to that array member.
// wxHtmlDCRenderer::Render() accesses that array and makes a new page
// begin after each page-break tag.
// The page-break handler does all its work in AdjustPagebreak(). For
// all tag handlers, that function adjusts the page-break position.
// For other tags, it determines whether the html element can fit on
// the remainder of the page; if it cannot fit, but must not be split,
// then the function moves the page break provided in the argument up,
// and returns 'true' to inform the caller that the argument was
// modified.
//
// Due to its special purpose, the page-break facility differs from
// other tags. It takes up no space, but it behaves as though there is
// never enough room to fit it on the remainder of the page--it always
// forces a page break. Therefore, unlike other elements that trigger
// a page break, it would never 'fit' on the following page either.
// Therefore it's necessary to compare each pagebreak candidate to the
// array wxHtmlPrintout::m_PageBreaks of pagebreaks already set, and
// set a new one only if it's not in that array.
class WXDLLEXPORT wxHtmlPageBreakCell : public wxHtmlCell
{
public:
wxHtmlPageBreakCell() {}
bool AdjustPagebreak(int* pagebreak, int* known_pagebreaks = NULL, int number_of_pages = 0) const;
private:
DECLARE_NO_COPY_CLASS(wxHtmlPageBreakCell)
};
// Comparison routine for bsearch into an int* array of pagebreaks.
static int integer_compare(void const* i0, void const* i1)
{
return *(int*)i0 - *(int*)i1;
}
bool wxHtmlPageBreakCell::AdjustPagebreak(int* pagebreak, int* known_pagebreaks, int number_of_pages) const
{
// When we are counting pages, 'known_pagebreaks' is non-NULL.
// That's the only time we change 'pagebreak'. Otherwise, pages
// were already counted, 'known_pagebreaks' is NULL, and we don't
// do anything except return FALSE.
//
// We also simply return FALSE if the 'pagebreak' argument is
// less than (vertically above) or the same as the current
// vertical position. Otherwise we'd be setting a pagebreak above
// the current cell, which is incorrect, or duplicating a
// pagebreak that has already been set.
if(NULL == known_pagebreaks || *pagebreak <= m_PosY)
{
return FALSE;
}
// m_PosY is only the vertical offset from the parent. The pagebreak
// required here is the total page offset, so m_PosY must be added
// to the parent's offset and height.
int total_height = m_PosY + GetParent()->GetPosY() + GetParent()->GetHeight();
// Search the array of pagebreaks to see whether we've already set
// a pagebreak here. The standard bsearch() function is appropriate
// because the array of pagebreaks through known_pagebreaks[number_of_pages]
// is known to be sorted in strictly increasing order. '1 + number_of_pages'
// is used as a bsearch() argument because the array contains a leading
// zero plus one element for each page.
int* where = (int*) bsearch(&total_height, known_pagebreaks,
1 + number_of_pages, sizeof(int),
integer_compare);
// Add a pagebreak only if there isn't one already set here.
if(NULL != where)
{
return FALSE;
}
else
{
*pagebreak = m_PosY;
return TRUE;
}
}
TAG_HANDLER_BEGIN(P, "P")
TAG_HANDLER_PROC(tag)
{
if (m_WParser->GetContainer()->GetFirstCell() != NULL)
{
m_WParser->CloseContainer();
m_WParser->OpenContainer();
}
m_WParser->GetContainer()->SetIndent(m_WParser->GetCharHeight(), wxHTML_INDENT_TOP);
m_WParser->GetContainer()->SetAlign(tag);
return FALSE;
}
TAG_HANDLER_END(P)
TAG_HANDLER_BEGIN(BR, "BR")
TAG_HANDLER_PROC(tag)
{
int al = m_WParser->GetContainer()->GetAlignHor();
wxHtmlContainerCell *c;
m_WParser->CloseContainer();
c = m_WParser->OpenContainer();
c->SetAlignHor(al);
c->SetAlign(tag);
c->SetMinHeight(m_WParser->GetCharHeight());
return FALSE;
}
TAG_HANDLER_END(BR)
TAG_HANDLER_BEGIN(CENTER, "CENTER")
TAG_HANDLER_PROC(tag)
{
int old = m_WParser->GetAlign();
wxHtmlContainerCell *c = m_WParser->GetContainer();
m_WParser->SetAlign(wxHTML_ALIGN_CENTER);
if (c->GetFirstCell() != NULL)
{
m_WParser->CloseContainer();
m_WParser->OpenContainer();
}
else
c->SetAlignHor(wxHTML_ALIGN_CENTER);
if (tag.HasEnding())
{
ParseInner(tag);
m_WParser->SetAlign(old);
if (c->GetFirstCell() != NULL)
{
m_WParser->CloseContainer();
m_WParser->OpenContainer();
}
else
c->SetAlignHor(old);
return TRUE;
}
else return FALSE;
}
TAG_HANDLER_END(CENTER)
TAG_HANDLER_BEGIN(DIV, "DIV")
TAG_HANDLER_PROC(tag)
{
if(tag.HasParam(wxT("STYLE")))
{
if(tag.GetParam(wxT("STYLE")).IsSameAs(wxT("PAGE-BREAK-BEFORE:ALWAYS"), FALSE))
{
m_WParser->CloseContainer();
m_WParser->OpenContainer()->InsertCell(new wxHtmlPageBreakCell);
m_WParser->CloseContainer();
m_WParser->OpenContainer();
return FALSE;
}
else
{
// Treat other STYLE parameters here when they're supported.
return FALSE;
}
}
else if(tag.HasParam(wxT("ALIGN")))
{
int old = m_WParser->GetAlign();
wxHtmlContainerCell *c = m_WParser->GetContainer();
if (c->GetFirstCell() != NULL)
{
m_WParser->CloseContainer();
m_WParser->OpenContainer();
c = m_WParser->GetContainer();
c->SetAlign(tag);
m_WParser->SetAlign(c->GetAlignHor());
}
else
{
c->SetAlign(tag);
m_WParser->SetAlign(c->GetAlignHor());
}
ParseInner(tag);
m_WParser->SetAlign(old);
if (c->GetFirstCell() != NULL)
{
m_WParser->CloseContainer();
m_WParser->OpenContainer();
}
else
c->SetAlignHor(old);
return TRUE;
}
else
{
return FALSE;
}
}
TAG_HANDLER_END(DIV)
TAG_HANDLER_BEGIN(TITLE, "TITLE")
TAG_HANDLER_PROC(tag)
{
if (m_WParser->GetWindow())
{
wxHtmlWindow *wfr = (wxHtmlWindow*)(m_WParser->GetWindow());
if (wfr)
{
const wxString& src = *m_WParser->GetSource();
wfr->OnSetTitle(src.Mid(tag.GetBeginPos(),
tag.GetEndPos1()-tag.GetBeginPos()));
}
}
return TRUE;
}
TAG_HANDLER_END(TITLE)
TAG_HANDLER_BEGIN(BODY, "BODY")
TAG_HANDLER_PROC(tag)
{
wxColour clr;
if (tag.GetParamAsColour(wxT("TEXT"), &clr))
{
m_WParser->SetActualColor(clr);
m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(clr));
}
if (tag.GetParamAsColour(wxT("LINK"), &clr))
m_WParser->SetLinkColor(clr);
if (tag.GetParamAsColour(wxT("BGCOLOR"), &clr))
{
m_WParser->GetContainer()->InsertCell(
new wxHtmlColourCell(clr, wxHTML_CLR_BACKGROUND));
if (m_WParser->GetWindow() != NULL)
m_WParser->GetWindow()->SetBackgroundColour(clr);
}
return FALSE;
}
TAG_HANDLER_END(BODY)
TAG_HANDLER_BEGIN(BLOCKQUOTE, "BLOCKQUOTE")
TAG_HANDLER_PROC(tag)
{
wxHtmlContainerCell *c;
m_WParser->CloseContainer();
c = m_WParser->OpenContainer();
if (c->GetAlignHor() == wxHTML_ALIGN_RIGHT)
c->SetIndent(5 * m_WParser->GetCharWidth(), wxHTML_INDENT_RIGHT);
else
c->SetIndent(5 * m_WParser->GetCharWidth(), wxHTML_INDENT_LEFT);
c->SetIndent(m_WParser->GetCharHeight(), wxHTML_INDENT_TOP);
m_WParser->OpenContainer();
ParseInner(tag);
c = m_WParser->CloseContainer();
c->SetIndent(m_WParser->GetCharHeight(), wxHTML_INDENT_BOTTOM);
m_WParser->CloseContainer();
m_WParser->OpenContainer();
return TRUE;
}
TAG_HANDLER_END(BLOCKQUOTE)
// Tag handler for tags that we have to ignore, otherwise non-text data
// would show up as text:
TAG_HANDLER_BEGIN(DoNothing, "SCRIPT")
TAG_HANDLER_PROC(tag)
{
return true;
}
TAG_HANDLER_END(DoNothing)
TAGS_MODULE_BEGIN(Layout)
TAGS_MODULE_ADD(P)
TAGS_MODULE_ADD(BR)
TAGS_MODULE_ADD(CENTER)
TAGS_MODULE_ADD(DIV)
TAGS_MODULE_ADD(TITLE)
TAGS_MODULE_ADD(BODY)
TAGS_MODULE_ADD(BLOCKQUOTE)
TAGS_MODULE_ADD(DoNothing)
TAGS_MODULE_END(Layout)
#endif

View File

@@ -1,98 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: m_links.cpp
// Purpose: wxHtml module for links & anchors
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation
#endif
#include "wx/wxprec.h"
#include "wx/defs.h"
#if wxUSE_HTML && wxUSE_STREAMS
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WXPRECOMP
#endif
#include "wx/html/forcelnk.h"
#include "wx/html/m_templ.h"
FORCE_LINK_ME(m_links)
class wxHtmlAnchorCell : public wxHtmlCell
{
private:
wxString m_AnchorName;
public:
wxHtmlAnchorCell(const wxString& name) : wxHtmlCell() {m_AnchorName = name;}
virtual const wxHtmlCell* Find(int condition, const void* param) const
{
if ((condition == wxHTML_COND_ISANCHOR) && (m_AnchorName == (*((const wxString*)param))))
return this;
else
return wxHtmlCell::Find(condition, param);
}
};
TAG_HANDLER_BEGIN(A, "A")
TAG_HANDLER_PROC(tag)
{
if (tag.HasParam( wxT("NAME") ))
{
m_WParser->GetContainer()->InsertCell(new wxHtmlAnchorCell(tag.GetParam( wxT("NAME") )));
}
if (tag.HasParam( wxT("HREF") ))
{
wxHtmlLinkInfo oldlnk = m_WParser->GetLink();
wxColour oldclr = m_WParser->GetActualColor();
int oldund = m_WParser->GetFontUnderlined();
wxString name(tag.GetParam( wxT("HREF") )), target;
if (tag.HasParam( wxT("TARGET") )) target = tag.GetParam( wxT("TARGET") );
m_WParser->SetActualColor(m_WParser->GetLinkColor());
m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(m_WParser->GetLinkColor()));
m_WParser->SetFontUnderlined(TRUE);
m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
m_WParser->SetLink(wxHtmlLinkInfo(name, target));
ParseInner(tag);
m_WParser->SetLink(oldlnk);
m_WParser->SetFontUnderlined(oldund);
m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
m_WParser->SetActualColor(oldclr);
m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(oldclr));
return TRUE;
}
else return FALSE;
}
TAG_HANDLER_END(A)
TAGS_MODULE_BEGIN(Links)
TAGS_MODULE_ADD(A)
TAGS_MODULE_END(Links)
#endif

View File

@@ -1,170 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: m_list.cpp
// Purpose: wxHtml module for lists
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation
#endif
#include "wx/wxprec.h"
#include "wx/defs.h"
#if wxUSE_HTML && wxUSE_STREAMS
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WXPRECOMP
#include "wx/brush.h"
#include "wx/dc.h"
#endif
#include "wx/html/forcelnk.h"
#include "wx/html/m_templ.h"
#include "wx/html/htmlcell.h"
FORCE_LINK_ME(m_list)
//-----------------------------------------------------------------------------
// wxHtmlListmarkCell
//-----------------------------------------------------------------------------
class wxHtmlListmarkCell : public wxHtmlCell
{
private:
wxBrush m_Brush;
public:
wxHtmlListmarkCell(wxDC *dc, const wxColour& clr);
void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2);
};
wxHtmlListmarkCell::wxHtmlListmarkCell(wxDC* dc, const wxColour& clr) : wxHtmlCell(), m_Brush(clr, wxSOLID)
{
m_Width = dc->GetCharHeight();
m_Height = dc->GetCharHeight();
m_Descent = 0;
}
void wxHtmlListmarkCell::Draw(wxDC& dc, int x, int y, int WXUNUSED(view_y1), int WXUNUSED(view_y2))
{
dc.SetBrush(m_Brush);
dc.DrawEllipse(x + m_PosX + m_Width / 3, y + m_PosY + m_Height / 3,
(m_Width / 3), (m_Width / 3));
}
//-----------------------------------------------------------------------------
// The list handler:
//-----------------------------------------------------------------------------
TAG_HANDLER_BEGIN(OLULLI, "OL,UL,LI")
TAG_HANDLER_VARS
int m_Numbering;
// this is number of actual item of list or 0 for dots
TAG_HANDLER_CONSTR(OLULLI)
{
m_Numbering = 0;
}
TAG_HANDLER_PROC(tag)
{
wxHtmlContainerCell *c;
// List Item:
if (tag.GetName() == wxT("LI"))
{
m_WParser->GetContainer()->SetIndent(0, wxHTML_INDENT_TOP);
// this is to prevent indetation in <li><p> case
m_WParser->CloseContainer();
m_WParser->CloseContainer();
c = m_WParser->OpenContainer();
c->SetWidthFloat(2 * m_WParser->GetCharWidth(), wxHTML_UNITS_PIXELS);
if (m_Numbering == 0)
{
// Centering gives more space after the bullet
c->SetAlignHor(wxHTML_ALIGN_CENTER);
c->InsertCell(new wxHtmlListmarkCell(m_WParser->GetDC(), m_WParser->GetActualColor()));
}
else
{
c->SetAlignHor(wxHTML_ALIGN_RIGHT);
wxString mark;
mark.Printf(wxT("%i."), m_Numbering);
c->InsertCell(new wxHtmlWordCell(mark, *(m_WParser->GetDC())));
}
m_WParser->CloseContainer();
c = m_WParser->OpenContainer();
c->SetIndent(m_WParser->GetCharWidth() / 4, wxHTML_INDENT_LEFT);
c->SetWidthFloat(-2 * m_WParser->GetCharWidth(), wxHTML_UNITS_PIXELS);
m_WParser->OpenContainer();
if (m_Numbering != 0) m_Numbering++;
return FALSE;
}
// Begin of List (not-numbered): "UL", "OL"
else
{
int oldnum = m_Numbering;
if (tag.GetName() == wxT("UL")) m_Numbering = 0;
else m_Numbering = 1;
c = m_WParser->GetContainer();
if (c->GetFirstCell() != NULL)
{
m_WParser->CloseContainer();
m_WParser->OpenContainer();
c = m_WParser->GetContainer();
}
c->SetAlignHor(wxHTML_ALIGN_LEFT);
c->SetIndent(2 * m_WParser->GetCharWidth(), wxHTML_INDENT_LEFT);
m_WParser->OpenContainer()->SetAlignVer(wxHTML_ALIGN_TOP);
m_WParser->OpenContainer();
m_WParser->OpenContainer();
ParseInner(tag);
m_WParser->GetContainer()->SetIndent(0, wxHTML_INDENT_TOP);
// this is to prevent indetation in <li><p> case
m_WParser->CloseContainer();
m_WParser->CloseContainer();
m_WParser->CloseContainer();
m_WParser->CloseContainer();
m_WParser->OpenContainer();
m_Numbering = oldnum;
return TRUE;
}
}
TAG_HANDLER_END(OLULLI)
TAGS_MODULE_BEGIN(List)
TAGS_MODULE_ADD(OLULLI)
TAGS_MODULE_END(List)
#endif

View File

@@ -1,130 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: m_pre.cpp
// Purpose: wxHtml module for <PRE> ... </PRE> tag (code citation)
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation
#endif
#include "wx/wxprec.h"
#include "wx/defs.h"
#if wxUSE_HTML && wxUSE_STREAMS
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WXPRECOMP
#endif
#include "wx/html/forcelnk.h"
#include "wx/html/m_templ.h"
#include "wx/html/htmlcell.h"
#include "wx/tokenzr.h"
#include "wx/encconv.h"
FORCE_LINK_ME(m_pre)
// replaces '\t', ' ' and '\n' with HTML markup:
static wxString LINKAGEMODE HtmlizeWhitespaces(const wxString& str)
{
wxString out;
size_t i = 0, j = 0, len = str.Len();
for (i = 0; i < len; i++)
{
switch (str[i])
{
case wxT('<'):
while (i < len && str[i] != wxT('>'))
out << str[i++];
out << wxT('>');
break;
case wxT(' '):
out << wxT("&nbsp;");
break;
case wxT('\n'):
out << wxT("<br>");
break;
case wxT('\t'):
for (j = 8 - i%8; j > 0; j--) out << wxT("&nbsp;");
break;
default:
out << str[i];
break;
}
}
return out;
}
//-----------------------------------------------------------------------------
// The list handler:
//-----------------------------------------------------------------------------
TAG_HANDLER_BEGIN(PRE, "PRE")
TAG_HANDLER_PROC(tag)
{
wxHtmlContainerCell *c;
int fixed = m_WParser->GetFontFixed(),
italic = m_WParser->GetFontItalic(),
underlined = m_WParser->GetFontUnderlined(),
bold = m_WParser->GetFontBold(),
fsize = m_WParser->GetFontSize();
c = m_WParser->GetContainer();
m_WParser->SetFontUnderlined(FALSE);
m_WParser->SetFontBold(FALSE);
m_WParser->SetFontItalic(FALSE);
m_WParser->SetFontFixed(TRUE);
m_WParser->SetFontSize(3);
c->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
m_WParser->CloseContainer();
c = m_WParser->OpenContainer();
c->SetAlignHor(wxHTML_ALIGN_LEFT);
c->SetIndent(m_WParser->GetCharHeight(), wxHTML_INDENT_TOP);
wxString srcMid =
m_WParser->GetSource()->Mid(tag.GetBeginPos(),
tag.GetEndPos1() - tag.GetBeginPos());
// It is safe to temporarily change the source being parsed,
// provided we restore the state back after parsing
m_Parser->SetSourceAndSaveState(HtmlizeWhitespaces(srcMid));
m_Parser->DoParsing();
m_Parser->RestoreState();
m_WParser->CloseContainer();
c = m_WParser->OpenContainer();
m_WParser->SetFontUnderlined(underlined);
m_WParser->SetFontBold(bold);
m_WParser->SetFontItalic(italic);
m_WParser->SetFontFixed(fixed);
m_WParser->SetFontSize(fsize);
c->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
return TRUE;
}
TAG_HANDLER_END(PRE)
TAGS_MODULE_BEGIN(Pre)
TAGS_MODULE_ADD(PRE)
TAGS_MODULE_END(Pre)
#endif

View File

@@ -1,51 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: m_style.cpp
// Purpose: wxHtml module for parsing <style> tag
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 2002 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation
#endif
#include "wx/wxprec.h"
#include "wx/defs.h"
#if wxUSE_HTML && wxUSE_STREAMS
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WXPRECOMP
#endif
#include "wx/html/forcelnk.h"
#include "wx/html/m_templ.h"
FORCE_LINK_ME(m_style)
TAG_HANDLER_BEGIN(STYLE, "STYLE")
TAG_HANDLER_PROC(WXUNUSED(tag))
{
// VS: Ignore styles for now. We must have this handler present,
// because CSS style text would be rendered verbatim otherwise
return TRUE;
}
TAG_HANDLER_END(STYLE)
TAGS_MODULE_BEGIN(StyleTag)
TAGS_MODULE_ADD(STYLE)
TAGS_MODULE_END(StyleTag)
#endif

View File

@@ -1,623 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: m_tables.cpp
// Purpose: wxHtml module for tables
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation
#endif
#include "wx/wxprec.h"
#include "wx/defs.h"
#if wxUSE_HTML && wxUSE_STREAMS
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WXPRECOMP
#endif
/*
REMARKS:
1. This version of m_tables doesn't support auto-layout algorithm.
This means that all columns are of same width unless explicitly specified.
*/
#include "wx/html/forcelnk.h"
#include "wx/html/m_templ.h"
#include "wx/html/htmlcell.h"
FORCE_LINK_ME(m_tables)
#define TABLE_BORDER_CLR_1 wxColour(0xC5, 0xC2, 0xC5)
#define TABLE_BORDER_CLR_2 wxColour(0x62, 0x61, 0x62)
//-----------------------------------------------------------------------------
// wxHtmlTableCell
//-----------------------------------------------------------------------------
struct colStruct
{
int width, units;
// width of the column either in pixels or percents
// ('width' is the number, 'units' determines its meaning)
int minWidth, maxWidth;
// minimal/maximal column width. This is needed by HTML 4.0
// layouting algorithm and can be determined by trying to
// layout table cells with width=1 and width=infinity
int leftpos, pixwidth, maxrealwidth;
// temporary (depends on actual width of table)
};
enum cellState
{
cellSpan,
cellUsed,
cellFree
};
struct cellStruct
{
wxHtmlContainerCell *cont;
int colspan, rowspan;
int minheight, valign;
cellState flag;
};
class wxHtmlTableCell : public wxHtmlContainerCell
{
protected:
/* These are real attributes: */
// should we draw borders or not?
bool m_HasBorders;
// number of columns; rows
int m_NumCols, m_NumRows;
// array of column information
colStruct *m_ColsInfo;
// 2D array of all cells in the table : m_CellInfo[row][column]
cellStruct **m_CellInfo;
// spaces between cells
int m_Spacing;
// cells internal indentation
int m_Padding;
private:
/* ...and these are valid only when parsing the table: */
// number of actual column (ranging from 0..m_NumCols)
int m_ActualCol, m_ActualRow;
// default values (for table and row):
wxColour m_tBkg, m_rBkg;
wxString m_tValign, m_rValign;
double m_PixelScale;
public:
wxHtmlTableCell(wxHtmlContainerCell *parent, const wxHtmlTag& tag, double pixel_scale = 1.0);
~wxHtmlTableCell();
virtual void Layout(int w);
void AddRow(const wxHtmlTag& tag);
void AddCell(wxHtmlContainerCell *cell, const wxHtmlTag& tag);
private:
// Reallocates memory to given number of cols/rows
// and changes m_NumCols/m_NumRows value to reflect this change
// NOTE! You CAN'T change m_NumCols/m_NumRows before calling this!!
void ReallocCols(int cols);
void ReallocRows(int rows);
// Computes minimal and maximal widths of columns. Needs to be called
// only once, before first Layout().
void ComputeMinMaxWidths();
DECLARE_NO_COPY_CLASS(wxHtmlTableCell)
};
wxHtmlTableCell::wxHtmlTableCell(wxHtmlContainerCell *parent, const wxHtmlTag& tag, double pixel_scale)
: wxHtmlContainerCell(parent)
{
m_PixelScale = pixel_scale;
m_HasBorders =
(tag.HasParam(wxT("BORDER")) && tag.GetParam(wxT("BORDER")) != wxT("0"));
m_ColsInfo = NULL;
m_NumCols = m_NumRows = 0;
m_CellInfo = NULL;
m_ActualCol = m_ActualRow = -1;
/* scan params: */
if (tag.HasParam(wxT("BGCOLOR")))
tag.GetParamAsColour(wxT("BGCOLOR"), &m_tBkg);
if (tag.HasParam(wxT("VALIGN")))
m_tValign = tag.GetParam(wxT("VALIGN"));
else
m_tValign = wxEmptyString;
if (!tag.GetParamAsInt(wxT("CELLSPACING"), &m_Spacing))
m_Spacing = 2;
if (!tag.GetParamAsInt(wxT("CELLPADDING"), &m_Padding))
m_Padding = 3;
m_Spacing = (int)(m_PixelScale * (double)m_Spacing);
m_Padding = (int)(m_PixelScale * (double)m_Padding);
if (m_HasBorders)
SetBorder(TABLE_BORDER_CLR_1, TABLE_BORDER_CLR_2);
}
wxHtmlTableCell::~wxHtmlTableCell()
{
if (m_ColsInfo) free(m_ColsInfo);
if (m_CellInfo)
{
for (int i = 0; i < m_NumRows; i++)
free(m_CellInfo[i]);
free(m_CellInfo);
}
}
void wxHtmlTableCell::ReallocCols(int cols)
{
int i,j;
for (i = 0; i < m_NumRows; i++)
{
m_CellInfo[i] = (cellStruct*) realloc(m_CellInfo[i], sizeof(cellStruct) * cols);
for (j = m_NumCols; j < cols; j++)
m_CellInfo[i][j].flag = cellFree;
}
m_ColsInfo = (colStruct*) realloc(m_ColsInfo, sizeof(colStruct) * cols);
for (j = m_NumCols; j < cols; j++)
{
m_ColsInfo[j].width = 0;
m_ColsInfo[j].units = wxHTML_UNITS_PERCENT;
m_ColsInfo[j].minWidth = m_ColsInfo[j].maxWidth = -1;
}
m_NumCols = cols;
}
void wxHtmlTableCell::ReallocRows(int rows)
{
m_CellInfo = (cellStruct**) realloc(m_CellInfo, sizeof(cellStruct*) * rows);
for (int row = m_NumRows; row < rows ; row++)
{
if (m_NumCols == 0)
m_CellInfo[row] = NULL;
else
{
m_CellInfo[row] = (cellStruct*) malloc(sizeof(cellStruct) * m_NumCols);
for (int col = 0; col < m_NumCols; col++)
m_CellInfo[row][col].flag = cellFree;
}
}
m_NumRows = rows;
}
void wxHtmlTableCell::AddRow(const wxHtmlTag& tag)
{
m_ActualCol = -1;
// VS: real allocation of row entry is done in AddCell in order
// to correctly handle empty rows (i.e. "<tr></tr>")
// m_ActualCol == -1 indicates that AddCell has to allocate new row.
// scan params:
m_rBkg = m_tBkg;
if (tag.HasParam(wxT("BGCOLOR")))
tag.GetParamAsColour(wxT("BGCOLOR"), &m_rBkg);
if (tag.HasParam(wxT("VALIGN")))
m_rValign = tag.GetParam(wxT("VALIGN"));
else
m_rValign = m_tValign;
}
void wxHtmlTableCell::AddCell(wxHtmlContainerCell *cell, const wxHtmlTag& tag)
{
// Is this cell in new row?
// VS: we can't do it in AddRow, see my comment there
if (m_ActualCol == -1)
{
if (m_ActualRow + 1 > m_NumRows - 1)
ReallocRows(m_ActualRow + 2);
m_ActualRow++;
}
// cells & columns:
do
{
m_ActualCol++;
} while ((m_ActualCol < m_NumCols) &&
(m_CellInfo[m_ActualRow][m_ActualCol].flag != cellFree));
if (m_ActualCol > m_NumCols - 1)
ReallocCols(m_ActualCol + 1);
int r = m_ActualRow, c = m_ActualCol;
m_CellInfo[r][c].cont = cell;
m_CellInfo[r][c].colspan = 1;
m_CellInfo[r][c].rowspan = 1;
m_CellInfo[r][c].flag = cellUsed;
m_CellInfo[r][c].minheight = 0;
m_CellInfo[r][c].valign = wxHTML_ALIGN_TOP;
/* scan for parameters: */
// width:
{
if (tag.HasParam(wxT("WIDTH")))
{
wxString wd = tag.GetParam(wxT("WIDTH"));
if (wd[wd.Length()-1] == wxT('%'))
{
wxSscanf(wd.c_str(), wxT("%i%%"), &m_ColsInfo[c].width);
m_ColsInfo[c].units = wxHTML_UNITS_PERCENT;
}
else
{
wxSscanf(wd.c_str(), wxT("%i"), &m_ColsInfo[c].width);
m_ColsInfo[c].width = (int)(m_PixelScale * (double)m_ColsInfo[c].width);
m_ColsInfo[c].units = wxHTML_UNITS_PIXELS;
}
}
}
// spanning:
{
tag.GetParamAsInt(wxT("COLSPAN"), &m_CellInfo[r][c].colspan);
tag.GetParamAsInt(wxT("ROWSPAN"), &m_CellInfo[r][c].rowspan);
// VS: the standard says this about col/rowspan:
// "This attribute specifies the number of rows spanned by the
// current cell. The default value of this attribute is one ("1").
// The value zero ("0") means that the cell spans all rows from the
// current row to the last row of the table." All mainstream
// browsers act as if 0==1, though, and so does wxHTML.
if (m_CellInfo[r][c].colspan < 1)
m_CellInfo[r][c].colspan = 1;
if (m_CellInfo[r][c].rowspan < 1)
m_CellInfo[r][c].rowspan = 1;
if ((m_CellInfo[r][c].colspan > 1) || (m_CellInfo[r][c].rowspan > 1))
{
int i, j;
if (r + m_CellInfo[r][c].rowspan > m_NumRows)
ReallocRows(r + m_CellInfo[r][c].rowspan);
if (c + m_CellInfo[r][c].colspan > m_NumCols)
ReallocCols(c + m_CellInfo[r][c].colspan);
for (i = r; i < r + m_CellInfo[r][c].rowspan; i++)
for (j = c; j < c + m_CellInfo[r][c].colspan; j++)
m_CellInfo[i][j].flag = cellSpan;
m_CellInfo[r][c].flag = cellUsed;
}
}
//background color:
{
wxColour bk = m_rBkg;
if (tag.HasParam(wxT("BGCOLOR")))
tag.GetParamAsColour(wxT("BGCOLOR"), &bk);
if (bk.Ok())
cell->SetBackgroundColour(bk);
}
if (m_HasBorders)
cell->SetBorder(TABLE_BORDER_CLR_2, TABLE_BORDER_CLR_1);
// vertical alignment:
{
wxString valign;
if (tag.HasParam(wxT("VALIGN")))
valign = tag.GetParam(wxT("VALIGN"));
else
valign = m_tValign;
valign.MakeUpper();
if (valign == wxT("TOP"))
m_CellInfo[r][c].valign = wxHTML_ALIGN_TOP;
else if (valign == wxT("BOTTOM"))
m_CellInfo[r][c].valign = wxHTML_ALIGN_BOTTOM;
else m_CellInfo[r][c].valign = wxHTML_ALIGN_CENTER;
}
cell->SetIndent(m_Padding, wxHTML_INDENT_ALL, wxHTML_UNITS_PIXELS);
}
void wxHtmlTableCell::ComputeMinMaxWidths()
{
if (m_NumCols == 0 || m_ColsInfo[0].minWidth != -1) return;
int left, right, width;
for (int c = 0; c < m_NumCols; c++)
{
for (int r = 0; r < m_NumRows; r++)
{
cellStruct& cell = m_CellInfo[r][c];
if (cell.flag == cellUsed)
{
cell.cont->Layout(2*m_Padding + 1);
cell.cont->GetHorizontalConstraints(&left, &right);
width = right - left;
width -= (cell.colspan-1) * m_Spacing;
// HTML 4.0 says it is acceptable to distribute min/max
// width of spanning cells evently
width /= cell.colspan;
for (int j = 0; j < cell.colspan; j++)
if (width > m_ColsInfo[c+j].minWidth)
m_ColsInfo[c+j].minWidth = width;
}
}
}
// FIXME -- compute maxWidth as well. Not needed yet, so there's no
// point in computing it.
}
void wxHtmlTableCell::Layout(int w)
{
ComputeMinMaxWidths();
wxHtmlCell::Layout(w);
/*
WIDTH ADJUSTING :
*/
if (m_WidthFloatUnits == wxHTML_UNITS_PERCENT)
{
if (m_WidthFloat < 0) m_Width = (100 + m_WidthFloat) * w / 100;
else m_Width = m_WidthFloat * w / 100;
}
else
{
if (m_WidthFloat < 0) m_Width = w + m_WidthFloat;
else m_Width = m_WidthFloat;
}
/*
LAYOUTING :
*/
/* 1. setup columns widths: */
{
int wpix = m_Width - (m_NumCols + 1) * m_Spacing;
int i, j;
// 1a. setup fixed-width columns:
for (i = 0; i < m_NumCols; i++)
if (m_ColsInfo[i].units == wxHTML_UNITS_PIXELS)
{
m_ColsInfo[i].pixwidth = wxMax(m_ColsInfo[i].width,
m_ColsInfo[i].minWidth);
wpix -= m_ColsInfo[i].pixwidth;
}
// 1b. setup floating-width columns:
int wtemp = 0;
for (i = 0; i < m_NumCols; i++)
if ((m_ColsInfo[i].units == wxHTML_UNITS_PERCENT) && (m_ColsInfo[i].width != 0))
{
m_ColsInfo[i].pixwidth = wxMax(m_ColsInfo[i].width * wpix / 100,
m_ColsInfo[i].minWidth);
wtemp += m_ColsInfo[i].pixwidth;
}
wpix -= wtemp;
// 1c. setup defalut columns (no width specification supplied):
// NOTE! This algorithm doesn't conform to HTML standard : it assigns equal widths
// instead of optimal
for (i = j = 0; i < m_NumCols; i++)
if (m_ColsInfo[i].width == 0) j++;
for (i = 0; i < m_NumCols; i++)
if (m_ColsInfo[i].width == 0)
m_ColsInfo[i].pixwidth = wpix / j;
}
/* 2. compute positions of columns: */
{
int wpos = m_Spacing;
for (int i = 0; i < m_NumCols; i++)
{
m_ColsInfo[i].leftpos = wpos;
wpos += m_ColsInfo[i].pixwidth + m_Spacing;
}
}
/* 3. sub-layout all cells: */
{
int *ypos = new int[m_NumRows + 1];
int actcol, actrow;
int fullwid;
wxHtmlContainerCell *actcell;
ypos[0] = m_Spacing;
for (actrow = 1; actrow <= m_NumRows; actrow++) ypos[actrow] = -1;
for (actrow = 0; actrow < m_NumRows; actrow++)
{
if (ypos[actrow] == -1) ypos[actrow] = ypos[actrow-1];
// 3a. sub-layout and detect max height:
for (actcol = 0; actcol < m_NumCols; actcol++) {
if (m_CellInfo[actrow][actcol].flag != cellUsed) continue;
actcell = m_CellInfo[actrow][actcol].cont;
fullwid = 0;
for (int i = actcol; i < m_CellInfo[actrow][actcol].colspan + actcol; i++)
fullwid += m_ColsInfo[i].pixwidth;
fullwid += (m_CellInfo[actrow][actcol].colspan - 1) * m_Spacing;
actcell->SetMinHeight(m_CellInfo[actrow][actcol].minheight, m_CellInfo[actrow][actcol].valign);
actcell->Layout(fullwid);
if (ypos[actrow] + actcell->GetHeight() + m_CellInfo[actrow][actcol].rowspan * m_Spacing > ypos[actrow + m_CellInfo[actrow][actcol].rowspan])
ypos[actrow + m_CellInfo[actrow][actcol].rowspan] =
ypos[actrow] + actcell->GetHeight() + m_CellInfo[actrow][actcol].rowspan * m_Spacing;
}
}
for (actrow = 0; actrow < m_NumRows; actrow++)
{
// 3b. place cells in row & let'em all have same height:
for (actcol = 0; actcol < m_NumCols; actcol++)
{
if (m_CellInfo[actrow][actcol].flag != cellUsed) continue;
actcell = m_CellInfo[actrow][actcol].cont;
actcell->SetMinHeight(
ypos[actrow + m_CellInfo[actrow][actcol].rowspan] - ypos[actrow] - m_Spacing,
m_CellInfo[actrow][actcol].valign);
fullwid = 0;
for (int i = actcol; i < m_CellInfo[actrow][actcol].colspan + actcol; i++)
fullwid += m_ColsInfo[i].pixwidth;
fullwid += (m_CellInfo[actrow][actcol].colspan - 1) * m_Spacing;
actcell->Layout(fullwid);
actcell->SetPos(m_ColsInfo[actcol].leftpos, ypos[actrow]);
}
}
m_Height = ypos[m_NumRows];
delete[] ypos;
}
}
//-----------------------------------------------------------------------------
// The tables handler:
//-----------------------------------------------------------------------------
TAG_HANDLER_BEGIN(TABLE, "TABLE,TR,TD,TH")
TAG_HANDLER_VARS
wxHtmlTableCell* m_Table;
wxString m_tAlign, m_rAlign;
TAG_HANDLER_CONSTR(TABLE)
{
m_Table = NULL;
m_tAlign = m_rAlign = wxEmptyString;
}
TAG_HANDLER_PROC(tag)
{
wxHtmlContainerCell *c;
// new table started, backup upper-level table (if any) and create new:
if (tag.GetName() == wxT("TABLE"))
{
wxHtmlTableCell *oldt = m_Table;
wxHtmlContainerCell *oldcont;
oldcont = c = m_WParser->OpenContainer();
c->SetWidthFloat(tag, m_WParser->GetPixelScale());
m_Table = new wxHtmlTableCell(c, tag, m_WParser->GetPixelScale());
int oldAlign = m_WParser->GetAlign();
m_tAlign = wxEmptyString;
if (tag.HasParam(wxT("ALIGN")))
m_tAlign = tag.GetParam(wxT("ALIGN"));
ParseInner(tag);
m_WParser->SetAlign(oldAlign);
m_WParser->SetContainer(oldcont);
m_WParser->CloseContainer();
m_Table = oldt;
return TRUE;
}
else if (m_Table)
{
// new row in table
if (tag.GetName() == wxT("TR"))
{
m_Table->AddRow(tag);
m_rAlign = m_tAlign;
if (tag.HasParam(wxT("ALIGN")))
m_rAlign = tag.GetParam(wxT("ALIGN"));
}
// new cell
else
{
c = m_WParser->SetContainer(new wxHtmlContainerCell(m_Table));
m_Table->AddCell(c, tag);
m_WParser->OpenContainer();
if (tag.GetName() == wxT("TH")) /*header style*/
m_WParser->SetAlign(wxHTML_ALIGN_CENTER);
else
m_WParser->SetAlign(wxHTML_ALIGN_LEFT);
wxString als;
als = m_rAlign;
if (tag.HasParam(wxT("ALIGN")))
als = tag.GetParam(wxT("ALIGN"));
als.MakeUpper();
if (als == wxT("RIGHT"))
m_WParser->SetAlign(wxHTML_ALIGN_RIGHT);
else if (als == wxT("LEFT"))
m_WParser->SetAlign(wxHTML_ALIGN_LEFT);
else if (als == wxT("CENTER"))
m_WParser->SetAlign(wxHTML_ALIGN_CENTER);
m_WParser->OpenContainer();
}
}
return FALSE;
}
TAG_HANDLER_END(TABLE)
TAGS_MODULE_BEGIN(Tables)
TAGS_MODULE_ADD(TABLE)
TAGS_MODULE_END(Tables)
#endif

View File

@@ -1,519 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: winpars.cpp
// Purpose: wxHtmlParser class (generic parser)
// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "winpars.h"
#endif
#include "wx/wxprec.h"
#include "wx/defs.h"
#if wxUSE_HTML && wxUSE_STREAMS
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WXPRECOMP
#include "wx/intl.h"
#include "wx/dc.h"
#endif
#include "wx/html/htmldefs.h"
#include "wx/html/winpars.h"
#include "wx/html/htmlwin.h"
#include "wx/fontmap.h"
#include "wx/log.h"
//-----------------------------------------------------------------------------
// wxHtmlWinParser
//-----------------------------------------------------------------------------
wxList wxHtmlWinParser::m_Modules;
wxHtmlWinParser::wxHtmlWinParser(wxHtmlWindow *wnd) : wxHtmlParser()
{
m_tmpStrBuf = NULL;
m_tmpStrBufSize = 0;
m_Window = wnd;
m_Container = NULL;
m_DC = NULL;
m_CharHeight = m_CharWidth = 0;
m_UseLink = FALSE;
#if !wxUSE_UNICODE
m_EncConv = NULL;
m_InputEnc = wxFONTENCODING_ISO8859_1;
m_OutputEnc = wxFONTENCODING_DEFAULT;
#endif
{
int i, j, k, l, m;
for (i = 0; i < 2; i++)
for (j = 0; j < 2; j++)
for (k = 0; k < 2; k++)
for (l = 0; l < 2; l++)
for (m = 0; m < 7; m++)
{
m_FontsTable[i][j][k][l][m] = NULL;
m_FontsFacesTable[i][j][k][l][m] = wxEmptyString;
#if !wxUSE_UNICODE
m_FontsEncTable[i][j][k][l][m] = wxFONTENCODING_DEFAULT;
#endif
}
SetFonts(wxEmptyString, wxEmptyString, NULL);
}
// fill in wxHtmlParser's tables:
wxNode *node = m_Modules.GetFirst();
while (node)
{
wxHtmlTagsModule *mod = (wxHtmlTagsModule*) node->GetData();
mod->FillHandlersTable(this);
node = node->GetNext();
}
}
wxHtmlWinParser::~wxHtmlWinParser()
{
int i, j, k, l, m;
for (i = 0; i < 2; i++)
for (j = 0; j < 2; j++)
for (k = 0; k < 2; k++)
for (l = 0; l < 2; l++)
for (m = 0; m < 7; m++)
{
if (m_FontsTable[i][j][k][l][m] != NULL)
delete m_FontsTable[i][j][k][l][m];
}
#if !wxUSE_UNICODE
delete m_EncConv;
#endif
delete[] m_tmpStrBuf;
}
void wxHtmlWinParser::AddModule(wxHtmlTagsModule *module)
{
m_Modules.Append(module);
}
void wxHtmlWinParser::RemoveModule(wxHtmlTagsModule *module)
{
m_Modules.DeleteObject(module);
}
void wxHtmlWinParser::SetFonts(wxString normal_face, wxString fixed_face,
const int *sizes)
{
static int default_sizes[7] =
{
wxHTML_FONT_SIZE_1,
wxHTML_FONT_SIZE_2,
wxHTML_FONT_SIZE_3,
wxHTML_FONT_SIZE_4,
wxHTML_FONT_SIZE_5,
wxHTML_FONT_SIZE_6,
wxHTML_FONT_SIZE_7
};
if (sizes == NULL) sizes = default_sizes;
int i, j, k, l, m;
for (i = 0; i < 7; i++) m_FontsSizes[i] = sizes[i];
m_FontFaceFixed = fixed_face;
m_FontFaceNormal = normal_face;
#if !wxUSE_UNICODE
SetInputEncoding(m_InputEnc);
#endif
for (i = 0; i < 2; i++)
for (j = 0; j < 2; j++)
for (k = 0; k < 2; k++)
for (l = 0; l < 2; l++)
for (m = 0; m < 7; m++) {
if (m_FontsTable[i][j][k][l][m] != NULL)
{
delete m_FontsTable[i][j][k][l][m];
m_FontsTable[i][j][k][l][m] = NULL;
}
}
}
void wxHtmlWinParser::InitParser(const wxString& source)
{
wxHtmlParser::InitParser(source);
wxASSERT_MSG(m_DC != NULL, wxT("no DC assigned to wxHtmlWinParser!!"));
m_FontBold = m_FontItalic = m_FontUnderlined = m_FontFixed = FALSE;
m_FontSize = 3; //default one
CreateCurrentFont(); // we're selecting default font into
m_DC->GetTextExtent( wxT("H"), &m_CharWidth, &m_CharHeight);
/* NOTE : we're not using GetCharWidth/Height() because
of differences under X and win
*/
m_UseLink = FALSE;
m_Link = wxHtmlLinkInfo( wxT(""), wxT("") );
m_LinkColor.Set(0, 0, 0xFF);
m_ActualColor.Set(0, 0, 0);
m_Align = wxHTML_ALIGN_LEFT;
m_tmpLastWasSpace = FALSE;
OpenContainer();
OpenContainer();
#if !wxUSE_UNICODE
wxString charset = ExtractCharsetInformation(source);
if (!charset.empty())
{
wxFontEncoding enc = wxFontMapper::Get()->CharsetToEncoding(charset);
if (enc != wxFONTENCODING_SYSTEM)
SetInputEncoding(enc);
}
#endif
m_Container->InsertCell(new wxHtmlColourCell(m_ActualColor));
m_Container->InsertCell(new wxHtmlFontCell(CreateCurrentFont()));
}
void wxHtmlWinParser::DoneParser()
{
m_Container = NULL;
#if !wxUSE_UNICODE
SetInputEncoding(wxFONTENCODING_ISO8859_1); // for next call
#endif
wxHtmlParser::DoneParser();
}
wxObject* wxHtmlWinParser::GetProduct()
{
wxHtmlContainerCell *top;
CloseContainer();
OpenContainer();
top = m_Container;
while (top->GetParent()) top = top->GetParent();
return top;
}
wxFSFile *wxHtmlWinParser::OpenURL(wxHtmlURLType type,
const wxString& url) const
{
// FIXME - normalize the URL to full path before passing to
// OnOpeningURL!!
if ( m_Window )
{
wxString myurl(url);
wxHtmlOpeningStatus status;
for (;;)
{
wxString redirect;
status = m_Window->OnOpeningURL(type, myurl, &redirect);
if ( status != wxHTML_REDIRECT )
break;
myurl = redirect;
}
if ( status == wxHTML_BLOCK )
return NULL;
return GetFS()->OpenFile(myurl);
}
return wxHtmlParser::OpenURL(type, url);
}
void wxHtmlWinParser::AddText(const wxChar* txt)
{
wxHtmlCell *c;
size_t i = 0,
x,
lng = wxStrlen(txt);
register wxChar d;
int templen = 0;
wxChar nbsp = GetEntitiesParser()->GetCharForCode(160 /* nbsp */);
if (lng+1 > m_tmpStrBufSize)
{
delete[] m_tmpStrBuf;
m_tmpStrBuf = new wxChar[lng+1];
m_tmpStrBufSize = lng+1;
}
wxChar *temp = m_tmpStrBuf;
if (m_tmpLastWasSpace)
{
while ((i < lng) &&
((txt[i] == wxT('\n')) || (txt[i] == wxT('\r')) || (txt[i] == wxT(' ')) ||
(txt[i] == wxT('\t')))) i++;
}
while (i < lng)
{
x = 0;
d = temp[templen++] = txt[i];
if ((d == wxT('\n')) || (d == wxT('\r')) || (d == wxT(' ')) || (d == wxT('\t')))
{
i++, x++;
while ((i < lng) && ((txt[i] == wxT('\n')) || (txt[i] == wxT('\r')) ||
(txt[i] == wxT(' ')) || (txt[i] == wxT('\t')))) i++, x++;
}
else i++;
if (x)
{
temp[templen-1] = wxT(' ');
temp[templen] = 0;
#if 0 // VS - WHY was this here?!
if (templen == 1) continue;
#endif
templen = 0;
#if !wxUSE_UNICODE
if (m_EncConv)
m_EncConv->Convert(temp);
#endif
size_t len = wxStrlen(temp);
for (size_t j = 0; j < len; j++)
if (temp[j] == nbsp)
temp[j] = wxT(' ');
c = new wxHtmlWordCell(temp, *(GetDC()));
if (m_UseLink)
c->SetLink(m_Link);
m_Container->InsertCell(c);
m_tmpLastWasSpace = TRUE;
}
}
if (templen && (templen > 1 || temp[0] != wxT(' ')))
{
temp[templen] = 0;
#if !wxUSE_UNICODE
if (m_EncConv)
m_EncConv->Convert(temp);
#endif
size_t len = wxStrlen(temp);
for (size_t j = 0; j < len; j++)
if (temp[j] == nbsp)
temp[j] = wxT(' ');
c = new wxHtmlWordCell(temp, *(GetDC()));
if (m_UseLink)
c->SetLink(m_Link);
m_Container->InsertCell(c);
m_tmpLastWasSpace = FALSE;
}
}
wxHtmlContainerCell* wxHtmlWinParser::OpenContainer()
{
m_Container = new wxHtmlContainerCell(m_Container);
m_Container->SetAlignHor(m_Align);
m_tmpLastWasSpace = TRUE;
/* to avoid space being first character in paragraph */
return m_Container;
}
wxHtmlContainerCell* wxHtmlWinParser::SetContainer(wxHtmlContainerCell *c)
{
m_tmpLastWasSpace = TRUE;
/* to avoid space being first character in paragraph */
return m_Container = c;
}
wxHtmlContainerCell* wxHtmlWinParser::CloseContainer()
{
m_Container = m_Container->GetParent();
return m_Container;
}
void wxHtmlWinParser::SetFontSize(int s)
{
if (s < 1) s = 1;
else if (s > 7) s = 7;
m_FontSize = s;
}
wxFont* wxHtmlWinParser::CreateCurrentFont()
{
int fb = GetFontBold(),
fi = GetFontItalic(),
fu = GetFontUnderlined(),
ff = GetFontFixed(),
fs = GetFontSize() - 1 /*remap from <1;7> to <0;6>*/ ;
wxString face = ff ? m_FontFaceFixed : m_FontFaceNormal;
wxString *faceptr = &(m_FontsFacesTable[fb][fi][fu][ff][fs]);
wxFont **fontptr = &(m_FontsTable[fb][fi][fu][ff][fs]);
#if !wxUSE_UNICODE
wxFontEncoding *encptr = &(m_FontsEncTable[fb][fi][fu][ff][fs]);
#endif
if (*fontptr != NULL && (*faceptr != face
#if !wxUSE_UNICODE
|| *encptr != m_OutputEnc
#endif
))
{
delete *fontptr;
*fontptr = NULL;
}
if (*fontptr == NULL)
{
*faceptr = face;
*fontptr = new wxFont(
(int) (m_FontsSizes[fs] * m_PixelScale),
ff ? wxMODERN : wxSWISS,
fi ? wxITALIC : wxNORMAL,
fb ? wxBOLD : wxNORMAL,
fu ? TRUE : FALSE, face
#if wxUSE_UNICODE
);
#else
, m_OutputEnc);
*encptr = m_OutputEnc;
#endif
}
m_DC->SetFont(**fontptr);
return (*fontptr);
}
void wxHtmlWinParser::SetLink(const wxHtmlLinkInfo& link)
{
m_Link = link;
m_UseLink = (link.GetHref() != wxEmptyString);
}
void wxHtmlWinParser::SetFontFace(const wxString& face)
{
if (GetFontFixed()) m_FontFaceFixed = face;
else m_FontFaceNormal = face;
#if !wxUSE_UNICODE
if (m_InputEnc != wxFONTENCODING_DEFAULT)
SetInputEncoding(m_InputEnc);
#endif
}
#if !wxUSE_UNICODE
void wxHtmlWinParser::SetInputEncoding(wxFontEncoding enc)
{
m_InputEnc = m_OutputEnc = wxFONTENCODING_DEFAULT;
if (m_EncConv)
{
delete m_EncConv;
m_EncConv = NULL;
}
if (enc == wxFONTENCODING_DEFAULT) return;
wxFontEncoding altfix, altnorm;
bool availfix, availnorm;
// exact match?
availnorm = wxFontMapper::Get()->IsEncodingAvailable(enc, m_FontFaceNormal);
availfix = wxFontMapper::Get()->IsEncodingAvailable(enc, m_FontFaceFixed);
if (availnorm && availfix)
m_OutputEnc = enc;
// alternatives?
else if (wxFontMapper::Get()->GetAltForEncoding(enc, &altnorm, m_FontFaceNormal, FALSE) &&
wxFontMapper::Get()->GetAltForEncoding(enc, &altfix, m_FontFaceFixed, FALSE) &&
altnorm == altfix)
m_OutputEnc = altnorm;
// at least normal face?
else if (availnorm)
m_OutputEnc = enc;
else if (wxFontMapper::Get()->GetAltForEncoding(enc, &altnorm, m_FontFaceNormal, FALSE))
m_OutputEnc = altnorm;
// okay, let convert to ISO_8859-1, available always
else
m_OutputEnc = wxFONTENCODING_DEFAULT;
m_InputEnc = enc;
if (m_OutputEnc == wxFONTENCODING_DEFAULT)
GetEntitiesParser()->SetEncoding(wxFONTENCODING_SYSTEM);
else
GetEntitiesParser()->SetEncoding(m_OutputEnc);
if (m_InputEnc == m_OutputEnc) return;
m_EncConv = new wxEncodingConverter();
if (!m_EncConv->Init(m_InputEnc,
(m_OutputEnc == wxFONTENCODING_DEFAULT) ?
wxFONTENCODING_ISO8859_1 : m_OutputEnc,
wxCONVERT_SUBSTITUTE))
{ // total failture :-(
wxLogError(_("Failed to display HTML document in %s encoding"),
wxFontMapper::GetEncodingName(enc).c_str());
m_InputEnc = m_OutputEnc = wxFONTENCODING_DEFAULT;
delete m_EncConv;
m_EncConv = NULL;
}
}
#endif
//-----------------------------------------------------------------------------
// wxHtmlWinTagHandler
//-----------------------------------------------------------------------------
IMPLEMENT_ABSTRACT_CLASS(wxHtmlWinTagHandler, wxHtmlTagHandler)
//-----------------------------------------------------------------------------
// wxHtmlTagsModule
//-----------------------------------------------------------------------------
// NB: This is *NOT* winpars.cpp's initialization and shutdown code!!
// This module is an ancestor for tag handlers modules defined
// in m_*.cpp files with TAGS_MODULE_BEGIN...TAGS_MODULE_END construct.
//
// Do not add any winpars.cpp shutdown or initialization code to it,
// create a new module instead!
IMPLEMENT_DYNAMIC_CLASS(wxHtmlTagsModule, wxModule)
bool wxHtmlTagsModule::OnInit()
{
wxHtmlWinParser::AddModule(this);
return TRUE;
}
void wxHtmlTagsModule::OnExit()
{
wxHtmlWinParser::RemoveModule(this);
}
#endif

View File

@@ -1,83 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xh_html.cpp
// Purpose: XRC 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/xrc/xh_html.h"
#if wxUSE_HTML
#include "wx/html/htmlwin.h"
#include "wx/filesys.h"
wxHtmlWindowXmlHandler::wxHtmlWindowXmlHandler()
: wxXmlResourceHandler()
{
XRC_ADD_STYLE(wxHW_SCROLLBAR_NEVER);
XRC_ADD_STYLE(wxHW_SCROLLBAR_AUTO);
AddWindowStyles();
}
wxObject *wxHtmlWindowXmlHandler::DoCreateResource()
{
XRC_MAKE_INSTANCE(control, wxHtmlWindow)
control->Create(m_parentAsWindow,
GetID(),
GetPosition(), GetSize(),
GetStyle(wxT("style"), wxHW_SCROLLBAR_AUTO),
GetName());
if (HasParam(wxT("borders")))
{
control->SetBorders(GetDimension(wxT("borders")));
}
if (HasParam(wxT("url")))
{
wxString url = GetParamValue(wxT("url"));
wxFileSystem& fsys = GetCurFileSystem();
wxFSFile *f = fsys.OpenFile(url);
if (f)
{
control->LoadPage(f->GetLocation());
delete f;
}
else
control->LoadPage(url);
}
else if (HasParam(wxT("htmlcode")))
{
control->SetPage(GetText(wxT("htmlcode")));
}
SetupWindow(control);
return control;
}
bool wxHtmlWindowXmlHandler::CanHandle(wxXmlNode *node)
{
return IsOfClass(node, wxT("wxHtmlWindow"));
}
#endif // wxUSE_HTML

2
wxPython/.cvsignore Normal file
View File

@@ -0,0 +1,2 @@
.emacs.desktop
build.local

166
wxPython/BUILD.txt Normal file
View File

@@ -0,0 +1,166 @@
Build Instructions
------------------
I used SWIG (http://www.swig.org) to create the source code for the
extension module. This enabled me to only have to deal with a small
amount of code and only have to bother with the exceptional issues.
SWIG takes care of the rest and generates all the repetative code for
me. You don't need SWIG to build the extension module as all the
generated C++ code is included under the src directory.
I added a few minor features to SWIG to control some of the code
generation. If you want to play around with this you will need to get
a recent version of SWIG from their CVS or from a daily build. See
http://www.swig.org/ for details.
wxPython is organized as a Python package. This means that the
directory containing the results of the build process should be a
subdirectory of a directory on the PYTHONPATH. (And preferably should
be named wxPython.) You can control where the build process will dump
wxPython by setting the TARGETDIR variable for the build utility, (see
below.)
1. Build and install wxWindows as described in its BuildCVS.txt or
INSTALL.txt file.
1a. Building wxWindows on Unix/Linux/Etc.
For *nix systems I run configure with these flags:
--with-gtk
--with-libjpeg
--with-opengl
--without-odbc
--enable-unicode=no
--enable-threads=yes
--enable-socket=yes
--enable-static=no
--enable-shared=yes
--disable-std_iostreams
--enable-newgrid
You can use whatever flags you want, but these work for me. If you
want debug libraries, then you should add the "--enable-debug
--enable-mem_tracing" flags. I reccommend creating an empty build
directory, and then running make and configure from there. This
makes it easy to experiment with different configure options
without losing old builds.
Be sure to run "make install" to install the wxWindows headers and
shared library. You can check where the wxPython build will expect
to find them by running "wx-config --cflags" and "wx-config --libs"
1b. Building wxWindows on Win32.
For Win32 systems I use Visual C++ 6.0, but 5.0 should work. The
wxPython build utility currently does not support any other win32
compilers. Be sure to copy include/wx/msw/setup0.h to
include/wx/msw/setup.h and edit it for the options you want. At a
minimum you should set the following:
wxUSE_NEW_GRID 1
wxUSE_GLOBAL_MEMORY_OPERATORS 0
wxUSE_LIBTIFF 1
wxUSE_GLCANVAS 1
I also change these:
wxUSE_DIALUP_MANAGER 0
wxUSE_DYNLIB_CLASS 0
wxUSE_DOC_VIEW_ARCHITECTURE 0
wxUSE_MDI_ARCHITECTURE 0
wxUSE_PLOT 0
wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW 0
There are probably other flags that can be disabled to remove
things not being used in wxPython, but I havn't investigated all
the potential configurations yet.
I find it easiest to build wxWindows using the makefiles, that way
I don't have to worry about what the IDE might be doing behind the
scenes that might screw things up. Simply go to the src/msw
directory and run:
nmake -f makefile.vc CRTFLAG=/MD EXTRAFLAGS=-D__NO_VC_CRTDBG__ dll pch
If you want to make a release build, add FINAL=1 to the nmake
command, as well as to build.local for wxPython, (see below.)
2. For either platform, you should be sure to set an environment
variable named WXWIN to be the path to the top of the wxWindows
tree.
3. If you are working from a copy of the code retrieved from CVS, then
you will find wxPython in $WXWIN/wxPython. If you are working from
the tar.gz or .zip files then you will probably want to unpack
wxPython in the $WXWIN directory and rename the new directory to
wxPython (or use a symlink.) If you want to keep it in a separate
directory then you can change where the build.py tool expects to
find it by creating a file named build.local (see step 7 for more
examples about build.local,) containing something like this:
WXPSRCDIR = "~/MyStuff/wxPython-2.1.15/src"
4. At this point you may want to make an alias, symlink, script,
batch file, or whatever on the PATH that invokes
$WXWIN/wxPython/distrib/build.py to help simplify matters somewhat.
For example, on my win32 system I have a file named build.bat in a
directory on the PATH that contains:
python %WXWIN%/wxPython/distrib/build.py %1 %2 %3 %4 %5 %6
5. Change into the $(WXWIN)/utils/wxPython/src directory.
6. If you don't use SWIG, or don't have a new enough version
installed, you may have to update the timestamps of the files it
generates so the make utility won't think they are out of date and
try to run SWIG to update them. The standard touch utility can do
this for you:
touch gtk/*.cpp gtk/*.py
or
touch msw\*.cpp msw\*.py
7. Type "build -b" to build wxPython and "build -i" to install it.
The build.py script actually generates a Makefile based on what it
finds on your system and information found in the build.cfg file.
If you have troubles building or you want it built or installed in
a different way, take a look at the doc-string in build.py. You may
be able to override configuration options in a file named
build.local. For example, you can set a new TARGETDIR (the
installation directory) just by creating a file named build.local
in your wxPython source directory and assign a value to it, like
this:
TARGETDIR = "/usr/local/lib/python1.5/site-packages/wxPython"
The build.local file is executed as Python code so you can do very
creative things there if you need to.
8. To build and install the add-on modules, change to the appropriate
directory under $WXWIN/wxPython/contrib and run the build utility
again.
9. Change to the $WXWIN/utils/wxPython/demo directory.
10. Try executing the demo program. For example:
python demo.py
To run it without requiring a console on win32, you can use the
pythonw.exe version of Python either from the command line or from
a shortcut.

655
wxPython/CHANGES.txt Normal file
View File

@@ -0,0 +1,655 @@
CHANGES.txt for wxPython
----------------------------------------------------------------------
New in 2.1.16
-------------
Added an attribute named labelDelta to the generic buttons that
specifies how far to offset the label when the button is in the
depressed state.
Added wxTipProvider and friends. See the demo for an example.
wxGrid can now change the cell highlight colour.
Added wxDragImage.
Fixed printing on wxGTK.
Added wxDateTime, wxTimeSpan, and wxDateSpan to wxPython.utils.
Added wxCalendarCtrl.
WARNING: A while back I asked what should be done about the Magic
Method Names. (Methods that are automatically turned into event
handlers by virtue of their name.) The consensus was that it is more
confusing to have them than to try and expand them to have greater
coverage. I am finally getting around to removing the code that
generates the event binding. This means that if you are using any of
the following method names without a EVT_* call that you need to
modify your code to add the EVT_* to hook the event to the method.
OnChar
OnSize
OnEraseBackground
OnSysColourChanged
OnInitDialog
OnPaint
OnIdle
OnActivate
OnMenuHighlight
OnCloseWindow
OnScroll
Added wxSpinCtrl.
New in 2.1.15
-------------
Fixed wxTreeCtrl.HitTest to return both the tree item as well as the
flags that clairify where the click was in relation to the item.
Fixed thread state problem in wxTreeCtrl.GetBoundingBox and
GetSelections.
Fixed some problems in OGL. Also wxShape.SetClientData and
.GetClientData can now deal with Python objects.
Added wxListCtrl.SortItems and changed the demo to show how to use it.
Plugged a memory leak.
Wrapped the new wxGrid and friends. The old wxGrid class is no longer
available. There are some incompatibilities, and unfortunately the
new classes are not documented yet, (however the methods are more
consistent with each other now so you may be able to guess pretty
good...)
Updated filebrowsebutton.py and calendar.py with changes from their
authors. There is now a FileBrowseButtonWithHistory class (what a
mouthful!) and wxCalendar has printing support.
Added ActiveXWrapper to the library, and some good demos of it too.
It works great for embedding a COM (a.k.a OCX, a.k.a ActiveX) control
in a window and calling its methods. It actually creates a new class
on the fly that derives from wxWindow, the COM CoClass and others
needed to make it all work. The resulting class can be instantiated
just like wxWindow, used in sizers, etc. It also responds to all COM
method calls, properties, etc., and if the class or a mix-in has
matching method names, then the COM events will be propogated back to
them.
Created a typemap that allows a string to be used for parameters
expecting a wxColour type. The string is either a colour name as
defined in the wxColourDatabase, or a colour spec of the form
"#RRGGBB". See the wxStyledTextCtrl demo for an example.
I almost forgot to mention the wxStyledTextCtrl! Yes, the
wxStyledTextCtrl is finally in wxPython!! (And the crowd goes
wild...) There's no documentaTion yet (the crowd boos and hisses...)
but I've included a very readable source file in the
wxPython/demo/data directory, a couple fairly good examples, and you
can also refer to the Scintilla documentaion at
http://www.scintilla.org/ScintillaDoc.html to help fill in the gaps
until the docs are done. (The croud murmers contentedly as the tool
provider smiles convincingly and removes his flame-proof suit.)
What's new in 2.1.13
--------------------
Skipped a version number to match what has been released for wxGTK.
Updated wxMVCTree and added a demo for it, also fixed layout on GTK
and some flicker problems.
Added a wrapper class for the Visualization ToolKit (or VTK) in the
wxPython.lib.vtk module. (http://www.kitware.com/)
Fixed wxTreeCtrl.SetItemImage and GetItemImage to recognise the new
"which" parameter.
Added wxPython.lib.spashscreen from Mike Fletcher.
Added wxPython.lib.filebrowsebutton also from Mike Fletcher.
Renamed wxTreeCtrl.GetParent to GetItemParent to avoid a name clash
with wxWindow.GetParent.
Added wxIntersectRect to compute the intersection of two wxRect's.
It is used like this:
intersect = wxIntersectRect(rect1, rect2)
If r1 and r2 don't intersect then None is returned, otherwise the
rectangle representing the intersection is returned.
Some bug fixes for Clipboard and Drag-n-Drop.
Rotated text!!! WooHoo! (See wxDC.DrawRotatedText())
Added a set of Generic Buttons to the library. These are simple
window classes that look and act like native buttons, but you can have
a bit more control over them. The bezel width can be set in addition
to colours, fonts, etc. There is a ToggleButton as well as Bitmap
versions too. They should also serve as a good example of how to
create your own classes derived from wxControl.
The C++ wxToolBar classes have been redone, and so have the wxPython
wrappers. There have been slight modifications to some of the methods
but shouldn't impact anybody too much. I took the opportunity to add
support for setting user data on each toolbar tool. The new AddTool
methods look like this:
def AddTool(ID,
bitmap,
pushedBitmap = wxNullBitmap,
toggle = FALSE,
clientData = NULL,
shortHelpString = "",
longHelpString = "")
def AddSimpleTool(ID,
bitmap,
shortHelpString = "",
longHelpString = "",
toggle=FALSE)
There are also coresponding InsertTool and InsertSimpleTool methods
that additionally take an integer position as the first parameter.
Added a wrapper for the new PCX and TIFF ImageHandlers.
wxRect now simulates attributes named left, right, top and bottom.
Removed all non wx stuff from the glcanvas module since DA's PyOpenGL
is better and compatible with the wxGLCanvas. You can get it at
http://starship.python.net:9673/crew/da/Code/PyOpenGL.
Added some missing EVT_ functions.
Added Dirk Holtwic's editor classes to the wxPython.lib.editor
package.
Changed all the "LIST" parameter names to "choices" to match the docs.
More fixes for the wxFloatBar, and it now works on wxGTK even better
than wxMSW! (The feat is accomplished by using the wxTB_DOCKABLE
style flag instead of trying to float it ourselves.)
What's new in 2.1.11
--------------------
Skipped a few version numbers so wxMSW, wxGTK and wxPython are all
syncronized.
wxImage.SetData now makes a copy of the image data before giving it to
wxImage. I mistakenly thought that wxImage would copy the data
itself.
Fixed wxMSW's notebook so the pages get their size set as they are
being added. This should remove the need for our
wxNotebook.ResizeChildren hack.
wxPanels now support AutoLayout, and wxNotebooks and wxSplitterWindows
no longer tell their children to Layout() themselves. This will
probably only effect you if you have a wxWindow with AutoLayout inside
a notebook or splitter. If so, either change it to a wxPanel or add
an EVT_SIZE handler that calls Layout().
Fixed deadlock problem that happened when using threads.
Added new HTML printing classes.
Added wxWindow.GetHandle
Apparently wxMouseEvent.Position has been depreciated in wxWindows as
it is no longer available by default. You can use GetPositionTuple
(returning a tuple with x,y) instead, or GetPosition (returning a
wxPoint.)
Added wxPostEvent function that allows events to be posted and then
processed later. This is a thread-safe way to interact with the GUI
thread from other threads.
Added Clipboard and Drag-and-Drop classes.
Added wxFontEnumerator.
Many updates to wxMenu, wxMenuBar.
wxPyEvent and wxPyCommandEvent derived classes now give you the actual
Python object in the event handler instead of a new shadow.
Added a Calendar widget from Lorne White to the library.
Made some fixes to the wxFloatbar. It still has some troubles on
wxGTK...
Added an MVC tree control from Bryn Keller to the library.
What's new in 2.1.5
-------------------
This is a quick bug-fix release to take care of a few nasties that
crept in at the last minute before 2.1.4 was called done. No new
major features.
What's new in 2.1.4
--------------------
This release is NOT syncronized with a snapshot release of wxGTK or
wxMSW. For MSW this isn't much of a problem since you can get the
binaries from the web site. For other platforms you'll have to build
wxGTK from CVS. (See http://web.ukonline.co.uk/julian.smart/wxwin/cvs.htm)
To get the same set of sources from CVS that I used, checkout using
the wxPy-2-1-4 tag.
Now back to what's new...
Much more support for event-less callbacks and add-on modules.
Created add-on module with wxOGL classes.
Added wxWindow.GetChildren(). Be careful of this. It returns a *copy*
of the list of the window's children. While you are using the list if
anything changes in the real list (a child is deleted, etc.) then the
list you are holding will suddenly have window references to garbage
memory and your app will likely crash. But if you are careful it works
great!
Added a bunch of new and missing methods to wxTreeCrtl. The
SortChildren method is now supported, but currently only for the
default sort order.
Added typemaps for wxSize, wxPoint, wxRealPoint, and wxRect that allow
either the actual objects or Python sequence values to be used. For
example, the following are equivallent:
win = wxWindow(parent, size = wxSize(100, 100))
win = wxWindow(parent, size = (100, 100))
Super-charged the wxHtml module. You can now create your own tag
handlers and also have access to the parser and cell classes. There
is a tag handler in the library at wxPython.lib.wxpTag that
understands the WXP tag and is able to place wxPython windows on HTML
pages. See the demo for an example.
A bunch of the methods of wxMenuBar were previously ifdef'd out for
wxGTK. Added them back in since the methods exist now.
Wrapped the wxHtmlHelpController and related classes.
Wrapped the C++ versions of wxSizer and friends. The Python-only
versions are still in the library, but depreciated. (You will get a
warning message if you try to use them, but the warning can be
disabled.) The usage of the C++ versions is slightly different, and
the functionality of wxBorderSizer is now part of wxBoxSizer. I have
added a few methods to wxSizer to try and make the transition as
smooth as possible, I combined all Add methods into a single method
that handles all cases, added an AddMany method, etc. One step I did
not take was to make the default value of flag in the Add method be
wxGROW. This would have made it more backward compatible, but less
portable to and from wxWin C++ code. Please see the docs and demo for
further details.
Added wxPyEvent and wxPyCommandEvent classes, derived from wxEvent and
wxCommandEvent. Each of them has SetPyData and GetPyData methods that
accept or return a single Python object. You can use these classes
directly or derive from them to create your own types of event objects
that can pass through the wxWindows event system without loosing their
Python parts (as long as they are stored with SetPyData.) Stay tuned
for more info and examples in future releases.
Added wxPython.lib.grids as an example of how to derive a new sizer
from the C++ sizers. In this module you will find wxGridSizer and
wxFlexGridSizer. wxGridSizer arrainges its items in a grid in which
all the widths and heights are the same. wxFlexgridSizer allows
different widths and heights, and you can also specify rows and/or
columns that are growable. See the demo for a couple examples for how
to use them.
Added the wxValidator class, and created a class named wxPyValidator
that should be used for the base class of any Python validators. See
the demo for an example. Please note that you MUST implement a Clone
method in your validator classes because of the way some things work
in the underlying C++ library. I did not add wxTextValidator because
of some issues of how it transfers data to and from a wxString, which
in wxPython is automatically translated to and from Python strings, so
there would never be a concrete wxString that would hang around long
enough for the validator to do its job. On the other hand, it should
be real easy to duplicate the functionality of wxTextValidator in a
pure Python class derived from wxPyValidator.
I've finally added a feature that has been on my list for close to two
years! Ever wondered what that zero is for when you create your app
object? Well now you can leave it out or explicitly set it to a true
value. This value now controls what is to be done with sys.stdout and
sys.stderr. A false value leaves them alone, and a true value sets
them to an instance of wxPyOnDemandOutputWindow. (On windows the
default is true, on unix platforms the default is false.) This class
creates a frame containing a wxTextCtrl as soon as anything is written
to sys.stdout or sys.stderr. If you close the window it will come
back again the next time something is written. (You can call
app.RestoreStdio to turn this off.) If you would rather that the stdio be
redirected to a file, you can provide a second parameter to your app
object's constructor that is a filename. If you want to use your own
class instead of wxPyOnDemandOutputWindow you can either implement
RedirectStdio() in you app class or change the value of
wxApp.outputWindowClass like this:
class MyApp(wxApp):
outputWindowClass = MyClass
def OnInit(self):
frame = MyFrame()
self.SetTopWindow(frame)
return true
Please see the implementation of wxPyOnDemandOutputWindow and wxApp in
wx.py for more details. A few words of caution: if you are running
your app in a debugger, changing sys.stdout and sys.stderr is likely
to really screw things up.
Added wxCaret. Unfortunately it's author has still not documented it
in the wxWindows docs...
Some new 3rd party contributions in wxPython.lib. PyShell, in
shell.py is an interesting implementaion of an interactive Python
shell in wxWindows. floatbar.py has a class derived from wxToolBar
that can sense mouse drags and then reparent itself into another
frame. Moving the new frame close to where it came from puts the tool
bar back into the original parent. (Unfortunately there is currently
a bug in wxGTK's wxFrame.SetToolBar so the FloatBar has some
problems...)
What's new in 2.1b3
--------------------
This release is syncronized with release 2.1 snapshot 9 of wxWindows.
Switched to using SWIG from CVS (see http://swig.cs.uchicago.edu/cvs.html)
for some of the new features and such. Also they have encorporated my
patches so there is really no reason to stick with the current (very
old) release... This version of SWIG gives the following new
features:
1. Keyword arguments. You no longer have to specify all the
parameters with defaults to a method just to specify a
non-default value on the end. You can now do this instead:
win = wxWindow(parent, -1, style = mystyle)
2. There is now an an equivalence between Python's None and C++'s
NULL. This means that any methods that might return NULL will
now return None and you can use none where wxWindows might be
expecting NULL. This makes things much more snake-ish.
There is a new build system based on a new Python program instead of
raw makefiles. Now wxPython builds are virtually the same on MSW or
Unix systems. See the end of this file for new build instructions and
see distrib/build.py for more details.
wxDC.Bilt now includes the useMask parameter, and has been split into
two different versions. wxDC.BlitXY is like what was there before and
takes raw coordinants and sizes, and the new wxDC.Blit is for the new
interface using wxPoints and a wxSize.
What's new in 2.1b2
--------------------
Added the missing wxWindow.GetUpdateRegion() method.
Made a new change in SWIG (update your patches everybody) that
provides a fix for global shadow objects that get an exception in
their __del__ when their extension module has already been deleted.
It was only a 1 line change in .../SWIG/Modules/pycpp.cxx at about
line 496 if you want to do it by hand.
It is now possible to run through MainLoop more than once in any one
process. The cleanup that used to happen as MainLoop completed (and
prevented it from running again) has been delayed until the wxc module
is being unloaded by Python.
I fixed a bunch of stuff in the C++ version of wxGrid so it wouldn't
make wxPython look bad.
wxWindow.PopupMenu() now takes a wxPoint instead of x,y. Added
wxWindow.PopupMenuXY to be consistent with some other methods.
Added wxGrid.SetEditInPlace and wxGrid.GetEditInPlace.
You can now provide your own app.MainLoop method. See
wxPython/demo/demoMainLoop.py for an example and some explaination.
Got the in-place-edit for the wxTreeCtrl fixed and added some demo
code to show how to use it.
Put the wxIcon constructor back in for GTK as it now has one that
matches MSW's.
Added wxGrid.GetCells
Added wxSystemSettings static methods as functions with names like
wxSystemSettings_GetSystemColour.
Removed wxPyMenu since using menu callbacks have been depreciated in
wxWindows. Use wxMenu and events instead.
Added alternate wxBitmap constructor (for MSW only) as
wxBitmapFromData(data, type, width, height, depth = 1)
Added a helper function named wxPyTypeCast that can convert shadow
objects of one type into shadow objects of another type. (Like doing
a down-cast.) See the implementation in wx.py for some docs.
Fixed wxImage GetData and SetData to properly use String objects for
data transfer.
Added access methods to wxGridEvent.
New Makefile/Setup files supporting multiple dynamic extension modules
for unix systems.
Fixes for the wxGLCanvas demo to work around a strange bug in gtk.
SWIG support routines now compiled separately instead of being bundled
in wx.cpp.
What's new in 2.1b1
--------------------
Fixed wxComboBox.SetSelection so that it actually sets the selected
item. (Actually just removed it from wxPython and let it default to
wxChoice.SetSelection which was already doing the right thing.)
Added the Printing Framework.
Switched back to using the wxWindows DLL for the pre-built Win32
version. The problem was needing to reinitialize static class info
data after loading each extension module.
Lots of little tweaks and additions to reflect changes to various
wxWindows classes.
Fixed a bug with attaching objects to tree items. Actually was a
symptom of a larger problem with not obtaining the interpreter lock
when doing any Py_DECREFs.
wxSizer and friends. Sizers are layout tools that manage a colection
of windows and sizers. Different types of sizers apply different
types of layout algorithms. You saw it here first! These classes are
not even in the wxWindows C++ library yet!
What's new in 2.0b9
-------------------
Bug fix for ListCtrl in test4.py (Was a missing file... DSM!)
Bug fix for occassional GPF on Win32 systems upon termination of a
wxPython application.
Added wxListBox.GetSelections returning selections as a Tuple.
Added a wxTreeItemData that is able to hold any Python object and be
associated with items in a wxTreeCtrl. Added test pytree.py to show
this feature off.
Added wxSafeYield function.
OpenGL Canvas can be optionally compiled in to wxPython.
Awesome new Demo Framework for showing off wxPython and for learning
how it all works.
The pre-built Win32 version is no longer distributing the wxWindows
DLL. It is statically linked with the wxWindows library instead.
Added a couple missing items from the docs.
Added wxImage, wxImageHandler, wxPNGHandler, wxJPEGHandler,
wxGIFHandler and wxBMPHandler.
Added new methods to wxTextCtrl.
Fixed some problems with how SWIG was wrapping some wxTreeCtrl
methods.
What's new in 2.0b8
-------------------
Support for using Python threads in wxPython apps.
Several missing methods from various classes.
Various bug fixes.
What's new in 2.0b7
-------------------
Added DLG_PNT and DLG_SZE convienience methods to wxWindow class.
Added missing constructor and other methods for wxMenuItem.
What's new in 2.0b6
-------------------
Just a quickie update to fix the self-installer to be compatible with
Python 1.5.2b2's Registry settings.
What's new in 2.0b5
-------------------
Well obviously the numbering scheme has changed. I did this to
reflect the fact that this truly is the second major revision of
wxPython, (well the third actually if you count the one I did for
wxWindows 1.68 and then threw away...) and also that it is associated
with the 2.0 version of wxWindows.
I have finally started documenting wxPython. There are several pages
in the wxWindows documentation tree specifically about wxPython, and I
have added notes within the class references about where and how wxPython
diverges from wxWindows.
Added wxWindow_FromHWND(hWnd) for wxMSW to construct a wxWindow from a
window handle. If you can get the window handle into the python code,
it should just work... More news on this later.
Added wxImageList, wxToolTip.
Re-enabled wxConfig.DeleteAll() since it is reportedly fixed for the
wxRegConfig class.
As usual, some bug fixes, tweaks, etc.
What's new in 0.5.3
-------------------
Added wxSashWindow, wxSashEvent, wxLayoutAlgorithm, etc.
Various cleanup, tweaks, minor additions, etc. to maintain
compatibility with the current wxWindows.
What's new in 0.5.0
-------------------
Changed the import semantics from "from wxPython import *" to "from
wxPython.wx import *" This is for people who are worried about
namespace pollution, they can use "from wxPython import wx" and then
prefix all the wxPython identifiers with "wx."
Added wxTaskbarIcon for wxMSW.
Made the events work for wxGrid.
Added wxConfig.
Added wxMiniFrame for wxGTK.
Changed many of the args and return values that were pointers to gdi
objects to references to reflect changes in the wxWindows API.
Other assorted fixes and additions.
What's new in 0.4.2
-------------------
wxPython on wxGTK works!!! Both dynamic and static on Linux and
static on Solaris have been tested. Many thanks go to Harm
<H.v.d.Heijden@phys.tue.nl> for his astute detective work on tracking
down a nasty DECREF bug. Okay so I have to confess that it was just a
DSM (Dumb Stupid Mistake) on my part but it was nasty none the less
because the behavior was so different on different platforms.
The dynamicly loaded module on Solaris is still segfaulting, so it
must have been a different issue all along...
What's New in 0.4
-----------------
1. Worked on wxGTK compatibility. It is partially working. On a
Solaris/Sparc box wxPython is working but only when it is statically
linked with the Python interpreter. When built as a dyamically loaded
extension module, things start acting weirdly and it soon seg-faults.
And on Linux both the statically linked and the dynamically linked
version segfault shortly after starting up.
2. Added Toolbar, StatusBar and SplitterWindow classes.
3. Varioius bug fixes, enhancements, etc.
----------------------------------------------------------------------

84
wxPython/README.txt Normal file
View File

@@ -0,0 +1,84 @@
wxPython README
---------------
Welcome to the wonderful world of wxPython!
Once you have installed the wxPython extension module, you can try it
out by going to the [install dir]\wxPython\demo directory and typing:
python demo.py
There are also some other sample files there for you to play with and
learn from.
If you selected to install the documentation then point your browser
to [install dir]\wxPython\docs\index.htm and you will then be looking
at the docs for wxWindows. For the most part you can use the C++ docs
as most classes and methods are used identically. Where there are
differences they are documented with a "wxPython Note."
On Win32 systems the binary self-installer creates a program group on
the Start Menu that contains a link to running the demo and a link to
the help file. To help you save disk space I'm now using Microsoft's
HTML Help format. If your system doesn't know what to do with the help
file, you can install the HTML Help Viewer as part of IE 4+, NT
Service Pack 4+, or the HTML Workshop at
http://msdn.microsoft.com/workshop/author/htmlhelp/download.asp.
For some features, the latest common controls library from microsoft
is required. You can get this by installing IE 5.0 or Office 2000.
You can also get it independently from here:
http://download.microsoft.com/download/platformsdk/Comctl32/5.80.2614.3600/W9XNT4/EN-US/50comupd.exe
Windows 95 users may also need the WinSock 2.0 and OpenGL libraries.
These can be found at these sites:
http://www.microsoft.com/windows95/downloads/contents/wuadmintools/s_wunetworkingtools/w95sockets2/default.asp
http://www.opengl.org/Downloads/Downloads.html
Getting Help
------------
Since wxPython is a blending of multiple technologies, help comes from
multiple sources. See the http://alldunn.com/wxPython for details on
various sources of help, but probably the best source is the
wxPython-users mail list. You can view the archive or subscribe by
going to
http://wxwindows.org/mailman/listinfo/wxpython-users
Or you can send mail directly to the list using this address:
wxpython-users@wxwindows.org
Other Info
----------
Please also see the following files in this directory:
CHANGES.txt Information about new features, fixes, etc. in
each release.
BUILD.txt Instructions for building wxPython on various
platforms.
licence.txt Text of the wxWindows license.
----------------
Robin Dunn
robin@alldunn.com

11
wxPython/buildall Executable file
View File

@@ -0,0 +1,11 @@
#!/bin/bash
cd src
python ../distrib/build.py $*
if [ "$?" != "0" ]; then
exit 1
fi
cd ../contrib
python buildall.py $*
cd ..

10
wxPython/buildall.bat Executable file
View File

@@ -0,0 +1,10 @@
cd src
python ..\distrib\build.py %1 %2 %3 %4 %5 %6 %7 %8 %9
cd ..\contrib
python .\buildall.py %1 %2 %3 %4 %5 %6 %7 %8 %9
cd ..

View File

@@ -0,0 +1 @@
update.log

3
wxPython/contrib/README Normal file
View File

@@ -0,0 +1,3 @@
These sub directories contain add-on modules that are not part of the
core wxPython, either because of licensing issues, optional code in
wxWindows, contrib code in wxWindows, or whatever.

31
wxPython/contrib/buildall.py Executable file
View File

@@ -0,0 +1,31 @@
#!/usr/bin/env python
#----------------------------------------------------------------------------
# Name: buildall.py
# Purpose: Invokes the build script for all modules defined in
# MODULELIST
#
# Author: Robin Dunn
#
# Created: 18-Aug-1999
# RCS-ID: $Id$
# Copyright: (c) 1999 by Total Control Software
# Licence: wxWindows license
#----------------------------------------------------------------------------
import sys, os
sys.path.insert(0, '../distrib')
import build
MODULELIST = ['glcanvas', 'ogl', 'stc', ]
sys.argv[0] = '../../distrib/build.py'
for module in MODULELIST:
cwd = os.getcwd()
print "**** Building %s ****" % module
err = build.main([sys.argv[0], '-C', module] + sys.argv[1:])
os.chdir(cwd)
if err:
break
sys.exit(err)

View File

@@ -0,0 +1,14 @@
*.exp
*.lib
*.obj
*.pch
Makefile
Makefile.pre
Setup
build.local
config.c
glcanvas.h
glcanvasc.ilk
glcanvasc.pyd
sedscript

View File

@@ -0,0 +1,25 @@
# -*- python -*-
import sys
MODULE = 'glcanvasc'
SWIGFILES = ['glcanvas.i', ]
if sys.platform == 'win32':
# SOURCES = ['_glcanvas.cpp']
# OTHERLIBS = 'glu32.lib opengl32.lib'
# OTHERCFLAGS = '-DwxUSE_GLCANVAS=1'
# OTHERRULES = '''
#_glcanvas.cpp : $(WXDIR)\src\msw\glcanvas.cpp
# copy $(WXDIR)\src\msw\glcanvas.cpp _glcanvas.cpp
#'''
pass
else:
#print "Warning: Assuming MesaGL libraries. Override OTHERLIBS in build.local\n"\
# " if you have native GL!"
#OTHERLIBS = "-lwx_gtk_gl -lMesaGL -lMesaGLU"
OTHERLIBS = "-lwx_gtk_gl -lGL -lGLU"

View File

@@ -0,0 +1,108 @@
/////////////////////////////////////////////////////////////////////////////
// Name: glcanvas.i
// Purpose: SWIG definitions for the OpenGL wxWindows classes
//
// Author: Robin Dunn
//
// Created: 15-Mar-1999
// RCS-ID: $Id$
// Copyright: (c) 1998 by Total Control Software
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
%module glcanvas
%{
#include "helpers.h"
#include <wx/glcanvas.h>
%}
//---------------------------------------------------------------------------
%include typemaps.i
%include my_typemaps.i
%extern wx.i
%extern windows.i
%extern windows2.i
%extern windows3.i
%extern frames.i
%extern _defs.i
%extern misc.i
%extern gdi.i
%extern controls.i
%extern events.i
%{
#if defined(__WXMSW__)
static wxString wxPyEmptyStr("");
static wxPoint wxPyDefaultPosition(-1, -1);
static wxSize wxPyDefaultSize(-1, -1);
#endif
%}
%pragma(python) code = "import wx"
//---------------------------------------------------------------------------
class wxPalette;
class wxWindow;
class wxSize;
class wxPoint;
class wxGLCanvas;
//---------------------------------------------------------------------------
class wxGLContext {
public:
wxGLContext(bool isRGB, wxGLCanvas *win, const wxPalette& palette = wxNullPalette);
~wxGLContext();
void SetCurrent();
void SetColour(const char *colour);
void SwapBuffers();
#ifdef __WXGTK__
void SetupPixelFormat();
void SetupPalette(const wxPalette& palette);
wxPalette CreateDefaultPalette();
wxPalette* GetPalette();
#endif
wxWindow* GetWindow();
};
//---------------------------------------------------------------------------
class wxGLCanvas : public wxScrolledWindow {
public:
wxGLCanvas(wxWindow *parent, wxWindowID id = -1,
const wxPoint& pos = wxPyDefaultPosition,
const wxSize& size = wxPyDefaultSize, long style = 0,
const char* name = "GLCanvas",
int *attribList = 0,
const wxPalette& palette = wxNullPalette);
%pragma(python) addtomethod = "__init__:#wx._StdWindowCallbacks(self)"
void SetCurrent();
void SetColour(const char *colour);
void SwapBuffers();
wxGLContext* GetContext();
};
//---------------------------------------------------------------------------
%init %{
wxClassInfo::CleanUpClasses();
wxClassInfo::InitializeClasses();
%}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------

View File

@@ -0,0 +1,2 @@
EXPORTS
initglcanvasc

View File

@@ -0,0 +1,2 @@
*~
_glcanvas.cpp

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,117 @@
# This file was created automatically by SWIG.
import glcanvasc
from misc import *
from misc2 import *
from windows import *
from gdi import *
from clip_dnd import *
from events import *
from mdi import *
from frames import *
from stattool import *
from controls import *
from controls2 import *
from windows2 import *
from cmndlgs import *
from windows3 import *
from image import *
from printfw import *
from sizers import *
import wx
class wxGLContextPtr :
def __init__(self,this):
self.this = this
self.thisown = 0
def __del__(self,glcanvasc=glcanvasc):
if self.thisown == 1 :
glcanvasc.delete_wxGLContext(self)
def SetCurrent(self, *_args, **_kwargs):
val = apply(glcanvasc.wxGLContext_SetCurrent,(self,) + _args, _kwargs)
return val
def SetColour(self, *_args, **_kwargs):
val = apply(glcanvasc.wxGLContext_SetColour,(self,) + _args, _kwargs)
return val
def SwapBuffers(self, *_args, **_kwargs):
val = apply(glcanvasc.wxGLContext_SwapBuffers,(self,) + _args, _kwargs)
return val
def SetupPixelFormat(self, *_args, **_kwargs):
val = apply(glcanvasc.wxGLContext_SetupPixelFormat,(self,) + _args, _kwargs)
return val
def SetupPalette(self, *_args, **_kwargs):
val = apply(glcanvasc.wxGLContext_SetupPalette,(self,) + _args, _kwargs)
return val
def CreateDefaultPalette(self, *_args, **_kwargs):
val = apply(glcanvasc.wxGLContext_CreateDefaultPalette,(self,) + _args, _kwargs)
if val: val = wxPalettePtr(val) ; val.thisown = 1
return val
def GetPalette(self, *_args, **_kwargs):
val = apply(glcanvasc.wxGLContext_GetPalette,(self,) + _args, _kwargs)
if val: val = wxPalettePtr(val)
return val
def GetWindow(self, *_args, **_kwargs):
val = apply(glcanvasc.wxGLContext_GetWindow,(self,) + _args, _kwargs)
if val: val = wxWindowPtr(val)
return val
def __repr__(self):
return "<C wxGLContext instance at %s>" % (self.this,)
class wxGLContext(wxGLContextPtr):
def __init__(self,*_args,**_kwargs):
self.this = apply(glcanvasc.new_wxGLContext,_args,_kwargs)
self.thisown = 1
class wxGLCanvasPtr(wxScrolledWindowPtr):
def __init__(self,this):
self.this = this
self.thisown = 0
def SetCurrent(self, *_args, **_kwargs):
val = apply(glcanvasc.wxGLCanvas_SetCurrent,(self,) + _args, _kwargs)
return val
def SetColour(self, *_args, **_kwargs):
val = apply(glcanvasc.wxGLCanvas_SetColour,(self,) + _args, _kwargs)
return val
def SwapBuffers(self, *_args, **_kwargs):
val = apply(glcanvasc.wxGLCanvas_SwapBuffers,(self,) + _args, _kwargs)
return val
def GetContext(self, *_args, **_kwargs):
val = apply(glcanvasc.wxGLCanvas_GetContext,(self,) + _args, _kwargs)
if val: val = wxGLContextPtr(val)
return val
def __repr__(self):
return "<C wxGLCanvas instance at %s>" % (self.this,)
class wxGLCanvas(wxGLCanvasPtr):
def __init__(self,*_args,**_kwargs):
self.this = apply(glcanvasc.new_wxGLCanvas,_args,_kwargs)
self.thisown = 1
#wx._StdWindowCallbacks(self)
#-------------- FUNCTION WRAPPERS ------------------
#-------------- VARIABLE WRAPPERS ------------------

View File

@@ -0,0 +1 @@
*~

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,103 @@
# This file was created automatically by SWIG.
import glcanvasc
from misc import *
from misc2 import *
from windows import *
from gdi import *
from clip_dnd import *
from events import *
from mdi import *
from frames import *
from stattool import *
from controls import *
from controls2 import *
from windows2 import *
from cmndlgs import *
from windows3 import *
from image import *
from printfw import *
from sizers import *
import wx
class wxGLContextPtr :
def __init__(self,this):
self.this = this
self.thisown = 0
def __del__(self,glcanvasc=glcanvasc):
if self.thisown == 1 :
glcanvasc.delete_wxGLContext(self)
def SetCurrent(self, *_args, **_kwargs):
val = apply(glcanvasc.wxGLContext_SetCurrent,(self,) + _args, _kwargs)
return val
def SetColour(self, *_args, **_kwargs):
val = apply(glcanvasc.wxGLContext_SetColour,(self,) + _args, _kwargs)
return val
def SwapBuffers(self, *_args, **_kwargs):
val = apply(glcanvasc.wxGLContext_SwapBuffers,(self,) + _args, _kwargs)
return val
def GetWindow(self, *_args, **_kwargs):
val = apply(glcanvasc.wxGLContext_GetWindow,(self,) + _args, _kwargs)
if val: val = wxWindowPtr(val)
return val
def __repr__(self):
return "<C wxGLContext instance at %s>" % (self.this,)
class wxGLContext(wxGLContextPtr):
def __init__(self,*_args,**_kwargs):
self.this = apply(glcanvasc.new_wxGLContext,_args,_kwargs)
self.thisown = 1
class wxGLCanvasPtr(wxScrolledWindowPtr):
def __init__(self,this):
self.this = this
self.thisown = 0
def SetCurrent(self, *_args, **_kwargs):
val = apply(glcanvasc.wxGLCanvas_SetCurrent,(self,) + _args, _kwargs)
return val
def SetColour(self, *_args, **_kwargs):
val = apply(glcanvasc.wxGLCanvas_SetColour,(self,) + _args, _kwargs)
return val
def SwapBuffers(self, *_args, **_kwargs):
val = apply(glcanvasc.wxGLCanvas_SwapBuffers,(self,) + _args, _kwargs)
return val
def GetContext(self, *_args, **_kwargs):
val = apply(glcanvasc.wxGLCanvas_GetContext,(self,) + _args, _kwargs)
if val: val = wxGLContextPtr(val)
return val
def __repr__(self):
return "<C wxGLCanvas instance at %s>" % (self.this,)
class wxGLCanvas(wxGLCanvasPtr):
def __init__(self,*_args,**_kwargs):
self.this = apply(glcanvasc.new_wxGLCanvas,_args,_kwargs)
self.thisown = 1
#wx._StdWindowCallbacks(self)
#-------------- FUNCTION WRAPPERS ------------------
#-------------- VARIABLE WRAPPERS ------------------

View File

@@ -0,0 +1,5 @@
Makefile
oglc.exp
oglc.ilk
oglc.pch
oglc.pyd

View File

@@ -0,0 +1,7 @@
Since OGL is not always bundled with distributions of wxWindows, in
order for it to be a standard part of wxPython I need to bundle it
here. The contents of the contrib directory are copies of the
relevant parts of the main contrib directory in wxWindows. The
build.py script in this directory will also build the needed files
from there, so you no longer have to worry about aquiring and building
additional libraries beyond wxWindows itself.

View File

@@ -0,0 +1,36 @@
wxShapeCanvas = wxPyShapeCanvas
wxShapeEvtHandler = wxPyShapeEvtHandler
wxShape = wxPyShape
wxRectangleShape = wxPyRectangleShape
wxBitmapShape = wxPyBitmapShape
wxDrawnShape = wxPyDrawnShape
wxCompositeShape = wxPyCompositeShape
wxDividedShape = wxPyDividedShape
wxDivisionShape = wxPyDivisionShape
wxEllipseShape = wxPyEllipseShape
wxCircleShape = wxPyCircleShape
wxLineShape = wxPyLineShape
wxPolygonShape = wxPyPolygonShape
wxTextShape = wxPyTextShape
wxControlPoint = wxPyControlPoint
# Stuff these names into the wx namespace so wxPyConstructObject can find them
import wx
wx.wxPyShapeCanvasPtr = wxPyShapeCanvasPtr
wx.wxPyShapeEvtHandlerPtr = wxPyShapeEvtHandlerPtr
wx.wxPyShapePtr = wxPyShapePtr
wx.wxPyRectangleShapePtr = wxPyRectangleShapePtr
wx.wxPyBitmapShapePtr = wxPyBitmapShapePtr
wx.wxPyDrawnShapePtr = wxPyDrawnShapePtr
wx.wxPyCompositeShapePtr = wxPyCompositeShapePtr
wx.wxPyDividedShapePtr = wxPyDividedShapePtr
wx.wxPyDivisionShapePtr = wxPyDivisionShapePtr
wx.wxPyEllipseShapePtr = wxPyEllipseShapePtr
wx.wxPyCircleShapePtr = wxPyCircleShapePtr
wx.wxPyLineShapePtr = wxPyLineShapePtr
wx.wxPyPolygonShapePtr = wxPyPolygonShapePtr
wx.wxPyTextShapePtr = wxPyTextShapePtr
wx.wxShapeRegionPtr = wxShapeRegionPtr
wx.wxOGLConstraintPtr = wxOGLConstraintPtr
wx.wxControlPointPtr = wxPyControlPointPtr

View File

@@ -0,0 +1,63 @@
/////////////////////////////////////////////////////////////////////////////
// Name: _ogldefs.i
// Purpose: SWIG definitions for the wxWindows Object Graphics Library
//
// Author: Robin Dunn
//
// Created: 27-Aug-1999
// RCS-ID: $Id$
// Copyright: (c) 1998 by Total Control Software
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
//---------------------------------------------------------------------------
class wxOGLConstraint;
class wxBitmapShape;
class wxDiagram;
class wxDrawnShape;
class wxCircleShape;
class wxCompositeShape;
class wxDividedShape;
class wxDivisionShape;
class wxEllipseShape;
class wxLineShape;
class wxPolygonShape;
class wxRectangleShape;
class wxPseudoMetaFile;
class wxShape;
class wxShapeCanvas;
class wxShapeEvtHandler;
class wxTextShape;
class wxControlPoint;
class wxPyOGLConstraint;
class wxPyBitmapShape;
class wxPyDiagram;
class wxPyDrawnShape;
class wxPyCircleShape;
class wxPyCompositeShape;
class wxPyDividedShape;
class wxPyDivisionShape;
class wxPyEllipseShape;
class wxPyLineShape;
class wxPyPolygonShape;
class wxPyRectangleShape;
class wxPyPseudoMetaFile;
class wxPyShape;
class wxPyShapeCanvas;
class wxPyShapeEvtHandler;
class wxPyTextShape;
class wxPyControlPoint;
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------

View File

@@ -0,0 +1,52 @@
# -*- python -*-
import sys
MODULE = 'oglc'
SWIGFILES = ['ogl.i', 'oglbasic.i', 'oglshapes.i', 'oglshapes2.i', 'oglcanvas.i']
SOURCES = ['oglhelpers.cpp']
OTHERCFLAGS = '-I$(STCLOC)/contrib/include'
SOURCES = SOURCES + [
'$(STCLOC)/contrib/src/ogl/basic.cpp',
'$(STCLOC)/contrib/src/ogl/bmpshape.cpp',
'$(STCLOC)/contrib/src/ogl/composit.cpp',
'$(STCLOC)/contrib/src/ogl/divided.cpp',
'$(STCLOC)/contrib/src/ogl/lines.cpp',
'$(STCLOC)/contrib/src/ogl/misc.cpp',
'$(STCLOC)/contrib/src/ogl/basic2.cpp',
'$(STCLOC)/contrib/src/ogl/canvas.cpp',
'$(STCLOC)/contrib/src/ogl/constrnt.cpp',
'$(STCLOC)/contrib/src/ogl/drawn.cpp',
'$(STCLOC)/contrib/src/ogl/mfutils.cpp',
'$(STCLOC)/contrib/src/ogl/ogldiag.cpp',
]
if sys.platform == 'win32':
OTHERDEFS = 'STCLOC = $(WXWIN)'
OTHERRULES = '''
{$(WXWIN)/contrib/src/ogl}.cpp{}.obj:
$(cc) @<<
$(CPPFLAGS) /c /Tp $<
<<
'''
else:
OTHERCFLAGS = '-Icontrib/include'
DEFAULTRULE = 'default: contrib $(GENCODEDIR) $(TARGET) $(BUILDDIR)/$(TARGET) bldpycfiles'
OTHERRULES = """
%.o : contrib/src/ogl/%.cpp
$(CCC) $(CCSHARED) $(CFLAGS) $(OTHERCFLAGS) -c $<
contrib :
ln -s $(WXWIN)/contrib contrib
"""
SWIGDEPS = '_ogldefs.i'
OTHERDEPS = 'oglhelpers.h $(WXPSRCDIR)/helpers.h'
# There are no platform differences so we don't need separate code directories
GENCODEDIR='.'
SWIGTOOLKITFLAG=''

View File

@@ -0,0 +1,730 @@
/*
* FILE : ./ogl.cpp
*
* This file was automatically generated by :
* Simplified Wrapper and Interface Generator (SWIG)
* Version 1.1 (Build 810)
*
* Portions Copyright (c) 1995-1998
* The University of Utah and The Regents of the University of California.
* Permission is granted to distribute this file in any manner provided
* this notice remains intact.
*
* Do not make changes to this file--changes will be lost!
*
*/
#define SWIGCODE
/* Implementation : PYTHON */
#define SWIGPYTHON
#include <string.h>
#include <stdlib.h>
/* Definitions for Windows/Unix exporting */
#if defined(__WIN32__)
# if defined(_MSC_VER)
# define SWIGEXPORT(a) __declspec(dllexport) a
# else
# if defined(__BORLANDC__)
# define SWIGEXPORT(a) a _export
# else
# define SWIGEXPORT(a) a
# endif
# endif
#else
# define SWIGEXPORT(a) a
#endif
#ifdef __cplusplus
extern "C" {
#endif
#include "Python.h"
extern void SWIG_MakePtr(char *, void *, char *);
extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *));
extern char *SWIG_GetPtr(char *, void **, char *);
extern char *SWIG_GetPtrObj(PyObject *, void **, char *);
extern void SWIG_addvarlink(PyObject *, char *, PyObject *(*)(void), int (*)(PyObject *));
extern PyObject *SWIG_newvarlink(void);
#ifdef __cplusplus
}
#endif
#define SWIG_init initoglc
#define SWIG_name "oglc"
#include "helpers.h"
#include "oglhelpers.h"
static PyObject* l_output_helper(PyObject* target, PyObject* o) {
PyObject* o2;
PyObject* o3;
if (!target) {
target = o;
} else if (target == Py_None) {
Py_DECREF(Py_None);
target = o;
} else {
if (!PyList_Check(target)) {
o2 = target;
target = PyList_New(0);
PyList_Append(target, o2);
Py_XDECREF(o2);
}
PyList_Append(target,o);
Py_XDECREF(o);
}
return target;
}
static PyObject* t_output_helper(PyObject* target, PyObject* o) {
PyObject* o2;
PyObject* o3;
if (!target) {
target = o;
} else if (target == Py_None) {
Py_DECREF(Py_None);
target = o;
} else {
if (!PyTuple_Check(target)) {
o2 = target;
target = PyTuple_New(1);
PyTuple_SetItem(target, 0, o2);
}
o3 = PyTuple_New(1);
PyTuple_SetItem(o3, 0, o);
o2 = target;
target = PySequence_Concat(o2, o3);
Py_DECREF(o2);
Py_DECREF(o3);
}
return target;
}
static char* wxStringErrorMsg = "string type is required for parameter";
#if defined(__WXMSW__)
wxString wxPyEmptyStr("");
wxPoint wxPyDefaultPosition(-1, -1);
wxSize wxPyDefaultSize(-1, -1);
#endif
extern "C" SWIGEXPORT(void) initoglbasicc();
extern "C" SWIGEXPORT(void) initoglshapesc();
extern "C" SWIGEXPORT(void) initoglshapes2c();
extern "C" SWIGEXPORT(void) initoglcanvasc();
#ifdef __cplusplus
extern "C" {
#endif
static PyObject *_wrap_wxOGLInitialize(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
char *_kwnames[] = { NULL };
self = self;
if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxOGLInitialize",_kwnames))
return NULL;
{
wxPy_BEGIN_ALLOW_THREADS;
wxOGLInitialize();
wxPy_END_ALLOW_THREADS;
} Py_INCREF(Py_None);
_resultobj = Py_None;
return _resultobj;
}
static PyObject *_wrap_wxOGLCleanUp(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
char *_kwnames[] = { NULL };
self = self;
if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxOGLCleanUp",_kwnames))
return NULL;
{
wxPy_BEGIN_ALLOW_THREADS;
wxOGLCleanUp();
wxPy_END_ALLOW_THREADS;
} Py_INCREF(Py_None);
_resultobj = Py_None;
return _resultobj;
}
static PyMethodDef oglcMethods[] = {
{ "wxOGLCleanUp", (PyCFunction) _wrap_wxOGLCleanUp, METH_VARARGS | METH_KEYWORDS },
{ "wxOGLInitialize", (PyCFunction) _wrap_wxOGLInitialize, METH_VARARGS | METH_KEYWORDS },
{ NULL, NULL }
};
#ifdef __cplusplus
}
#endif
/*
* This table is used by the pointer type-checker
*/
static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
{ "_wxAcceleratorTable","_class_wxAcceleratorTable",0},
{ "_wxEvent","_class_wxEvent",0},
{ "_class_wxActivateEvent","_wxActivateEvent",0},
{ "_signed_long","_long",0},
{ "_wxMenuEvent","_class_wxMenuEvent",0},
{ "_class_wxJPEGHandler","_wxJPEGHandler",0},
{ "_wxPyBitmapDataObject","_class_wxPyBitmapDataObject",0},
{ "_wxBitmapDataObject","_class_wxBitmapDataObject",0},
{ "_class_wxPyCommandEvent","_wxPyCommandEvent",0},
{ "_wxBMPHandler","_class_wxBMPHandler",0},
{ "_wxImage","_class_wxImage",0},
{ "_wxFlexGridSizer","_class_wxFlexGridSizer",0},
{ "_wxPrintQuality","_wxCoord",0},
{ "_wxPrintQuality","_int",0},
{ "_wxPrintQuality","_signed_int",0},
{ "_wxPrintQuality","_unsigned_int",0},
{ "_wxPrintQuality","_wxWindowID",0},
{ "_wxPrintQuality","_uint",0},
{ "_wxPrintQuality","_EBool",0},
{ "_wxPrintQuality","_size_t",0},
{ "_class_wxCustomDataObject","_wxCustomDataObject",0},
{ "_wxFontData","_class_wxFontData",0},
{ "_class_wxRegionIterator","_wxRegionIterator",0},
{ "_class_wxPyTextDropTarget","_wxPyTextDropTarget",0},
{ "_class_wxMenuBar","_wxMenuBar",0},
{ "_class_wxPyTreeItemData","_wxPyTreeItemData",0},
{ "_class_wxStaticBoxSizer","_wxStaticBoxSizer",0},
{ "_class_wxEvtHandler","_wxEvtHandler",0},
{ "_wxPaintEvent","_class_wxPaintEvent",0},
{ "_wxGIFHandler","_class_wxGIFHandler",0},
{ "_wxPySizer","_class_wxPySizer",0},
{ "_wxPyCompositeShape","_class_wxPyCompositeShape",0},
{ "_wxIndividualLayoutConstraint","_class_wxIndividualLayoutConstraint",0},
{ "_wxCursor","_class_wxCursor",0},
{ "_wxNotifyEvent","_class_wxNotifyEvent",0},
{ "_wxImageHandler","_class_wxImageHandler",0},
{ "_class_wxPyRectangleShape","_wxPyRectangleShape",0},
{ "_class_wxToolBarBase","_wxToolBarBase",0},
{ "_class_wxTreeCtrl","_wxTreeCtrl",0},
{ "_wxMask","_class_wxMask",0},
{ "_wxToolTip","_class_wxToolTip",0},
{ "_wxPNGHandler","_class_wxPNGHandler",0},
{ "_class_wxOGLConstraint","_wxOGLConstraint",0},
{ "_class_wxColourData","_wxColourData",0},
{ "_class_wxPageSetupDialogData","_wxPageSetupDialogData",0},
{ "_wxPrinter","_class_wxPrinter",0},
{ "_wxPseudoMetaFile","_class_wxPseudoMetaFile",0},
{ "_class_wxArrowHead","_wxArrowHead",0},
{ "_wxPen","_class_wxPen",0},
{ "_wxUpdateUIEvent","_class_wxUpdateUIEvent",0},
{ "_class_wxNotebookSizer","_wxNotebookSizer",0},
{ "_byte","_unsigned_char",0},
{ "_wxDataObject","_class_wxDataObject",0},
{ "_class_wxPyFontEnumerator","_wxPyFontEnumerator",0},
{ "_wxStaticBox","_class_wxStaticBox",0},
{ "_wxPyDataObjectSimple","_class_wxPyDataObjectSimple",0},
{ "_wxPyDropSource","_class_wxPyDropSource",0},
{ "_wxChoice","_class_wxChoice",0},
{ "_wxSlider","_class_wxSlider",0},
{ "_wxNotebookEvent","_class_wxNotebookEvent",0},
{ "_wxPyPrintout","_class_wxPyPrintout",0},
{ "_wxShapeRegion","_class_wxShapeRegion",0},
{ "_long","_unsigned_long",0},
{ "_long","_signed_long",0},
{ "_wxImageList","_class_wxImageList",0},
{ "_wxDataObjectSimple","_class_wxDataObjectSimple",0},
{ "_wxDropFilesEvent","_class_wxDropFilesEvent",0},
{ "_wxBitmapButton","_class_wxBitmapButton",0},
{ "_wxSashWindow","_class_wxSashWindow",0},
{ "_class_wxSizer","_wxSizer",0},
{ "_class_wxTIFFHandler","_wxTIFFHandler",0},
{ "_class_wxPrintDialogData","_wxPrintDialogData",0},
{ "_wxGridSizer","_class_wxGridSizer",0},
{ "_class_wxAcceleratorTable","_wxAcceleratorTable",0},
{ "_class_wxClipboard","_wxClipboard",0},
{ "_class_wxGauge","_wxGauge",0},
{ "_class_wxSashEvent","_wxSashEvent",0},
{ "_wxDC","_class_wxDC",0},
{ "_wxSizerItem","_class_wxSizerItem",0},
{ "_class_wxBitmapDataObject","_wxBitmapDataObject",0},
{ "_wxListEvent","_class_wxListEvent",0},
{ "_class_wxSingleChoiceDialog","_wxSingleChoiceDialog",0},
{ "_wxProgressDialog","_class_wxProgressDialog",0},
{ "_class_wxBMPHandler","_wxBMPHandler",0},
{ "_wxPrintPreview","_class_wxPrintPreview",0},
{ "_class_wxFlexGridSizer","_wxFlexGridSizer",0},
{ "_wxSpinEvent","_class_wxSpinEvent",0},
{ "_wxSashLayoutWindow","_class_wxSashLayoutWindow",0},
{ "_wxPyBitmapShape","_class_wxPyBitmapShape",0},
{ "_class_wxPyEllipseShape","_wxPyEllipseShape",0},
{ "_size_t","_wxCoord",0},
{ "_size_t","_wxPrintQuality",0},
{ "_size_t","_unsigned_int",0},
{ "_size_t","_int",0},
{ "_size_t","_wxWindowID",0},
{ "_size_t","_uint",0},
{ "_class_wxRealPoint","_wxRealPoint",0},
{ "_wxNavigationKeyEvent","_class_wxNavigationKeyEvent",0},
{ "_wxPNMHandler","_class_wxPNMHandler",0},
{ "_wxWindowCreateEvent","_class_wxWindowCreateEvent",0},
{ "_class_wxPyShapeEvtHandler","_wxPyShapeEvtHandler",0},
{ "_class_wxMenuItem","_wxMenuItem",0},
{ "_class_wxPaintEvent","_wxPaintEvent",0},
{ "_wxSysColourChangedEvent","_class_wxSysColourChangedEvent",0},
{ "_class_wxStatusBar","_wxStatusBar",0},
{ "_class_wxGIFHandler","_wxGIFHandler",0},
{ "_class_wxPySizer","_wxPySizer",0},
{ "_class_wxPyCompositeShape","_wxPyCompositeShape",0},
{ "_wxPyPolygonShape","_class_wxPyPolygonShape",0},
{ "_class_wxPostScriptDC","_wxPostScriptDC",0},
{ "_wxPanel","_class_wxPanel",0},
{ "_wxInitDialogEvent","_class_wxInitDialogEvent",0},
{ "_wxCheckBox","_class_wxCheckBox",0},
{ "_wxPyEvent","_class_wxPyEvent",0},
{ "_wxTextCtrl","_class_wxTextCtrl",0},
{ "_class_wxMask","_wxMask",0},
{ "_wxTextDataObject","_class_wxTextDataObject",0},
{ "_class_wxKeyEvent","_wxKeyEvent",0},
{ "_class_wxToolTip","_wxToolTip",0},
{ "_class_wxPNGHandler","_wxPNGHandler",0},
{ "_wxColour","_class_wxColour",0},
{ "_class_wxDialog","_wxDialog",0},
{ "_wxBusyCursor","_class_wxBusyCursor",0},
{ "_wxPageSetupDialog","_class_wxPageSetupDialog",0},
{ "_class_wxPrinter","_wxPrinter",0},
{ "_class_wxFileDataObject","_wxFileDataObject",0},
{ "_wxIdleEvent","_class_wxIdleEvent",0},
{ "_class_wxUpdateUIEvent","_wxUpdateUIEvent",0},
{ "_wxToolBar","_class_wxToolBar",0},
{ "_class_wxDataObject","_wxDataObject",0},
{ "_wxCaret","_class_wxCaret",0},
{ "_wxStaticLine","_class_wxStaticLine",0},
{ "_class_wxLayoutAlgorithm","_wxLayoutAlgorithm",0},
{ "_wxBrush","_class_wxBrush",0},
{ "_wxMiniFrame","_class_wxMiniFrame",0},
{ "_class_wxNotebookEvent","_wxNotebookEvent",0},
{ "_class_wxPyPrintout","_wxPyPrintout",0},
{ "_wxDataFormat","_class_wxDataFormat",0},
{ "_class_wxDataObjectSimple","_wxDataObjectSimple",0},
{ "_class_wxSashWindow","_wxSashWindow",0},
{ "_wxShowEvent","_class_wxShowEvent",0},
{ "_class_wxPyDivisionShape","_wxPyDivisionShape",0},
{ "_uint","_wxCoord",0},
{ "_uint","_wxPrintQuality",0},
{ "_uint","_size_t",0},
{ "_uint","_unsigned_int",0},
{ "_uint","_int",0},
{ "_uint","_wxWindowID",0},
{ "_wxPyValidator","_class_wxPyValidator",0},
{ "_class_wxEvent","_wxEvent",0},
{ "_wxCheckListBox","_class_wxCheckListBox",0},
{ "_wxSplitterEvent","_class_wxSplitterEvent",0},
{ "_wxRect","_class_wxRect",0},
{ "_wxCommandEvent","_class_wxCommandEvent",0},
{ "_wxPyShapeCanvas","_class_wxPyShapeCanvas",0},
{ "_wxSizeEvent","_class_wxSizeEvent",0},
{ "_class_wxImage","_wxImage",0},
{ "_wxPoint","_class_wxPoint",0},
{ "_class_wxSashLayoutWindow","_wxSashLayoutWindow",0},
{ "_class_wxPyBitmapShape","_wxPyBitmapShape",0},
{ "_class_wxButton","_wxButton",0},
{ "_wxRadioBox","_class_wxRadioBox",0},
{ "_class_wxFontData","_wxFontData",0},
{ "_class_wxPNMHandler","_wxPNMHandler",0},
{ "_wxBoxSizer","_class_wxBoxSizer",0},
{ "_wxBitmap","_class_wxBitmap",0},
{ "_wxPrintDialog","_class_wxPrintDialog",0},
{ "_wxPyControlPoint","_class_wxPyControlPoint",0},
{ "_wxPyTimer","_class_wxPyTimer",0},
{ "_wxWindowDC","_class_wxWindowDC",0},
{ "_wxScrollBar","_class_wxScrollBar",0},
{ "_wxSpinButton","_class_wxSpinButton",0},
{ "_wxColourDialog","_class_wxColourDialog",0},
{ "_wxPrintData","_class_wxPrintData",0},
{ "_class_wxIndividualLayoutConstraint","_wxIndividualLayoutConstraint",0},
{ "_class_wxNotifyEvent","_wxNotifyEvent",0},
{ "_wxMessageDialog","_class_wxMessageDialog",0},
{ "_class_wxValidator","_wxValidator",0},
{ "_class_wxPyEvent","_wxPyEvent",0},
{ "_wxTextEntryDialog","_class_wxTextEntryDialog",0},
{ "_class_wxIconizeEvent","_wxIconizeEvent",0},
{ "_class_wxStaticBitmap","_wxStaticBitmap",0},
{ "_class_wxPyDrawnShape","_wxPyDrawnShape",0},
{ "_class_wxBusyCursor","_wxBusyCursor",0},
{ "_wxToolBarSimple","_class_wxToolBarSimple",0},
{ "_wxMDIChildFrame","_class_wxMDIChildFrame",0},
{ "_wxListItem","_class_wxListItem",0},
{ "_class_wxPseudoMetaFile","_wxPseudoMetaFile",0},
{ "_class_wxToolBar","_wxToolBar",0},
{ "_wxDropTarget","_class_wxDropTarget",0},
{ "_class_wxStaticLine","_wxStaticLine",0},
{ "_wxScrollEvent","_class_wxScrollEvent",0},
{ "_wxToolBarToolBase","_class_wxToolBarToolBase",0},
{ "_wxCalculateLayoutEvent","_class_wxCalculateLayoutEvent",0},
{ "_class_wxShapeRegion","_wxShapeRegion",0},
{ "_EBool","_wxCoord",0},
{ "_EBool","_wxPrintQuality",0},
{ "_EBool","_signed_int",0},
{ "_EBool","_int",0},
{ "_EBool","_wxWindowID",0},
{ "_class_wxRegion","_wxRegion",0},
{ "_class_wxDataFormat","_wxDataFormat",0},
{ "_class_wxDropFilesEvent","_wxDropFilesEvent",0},
{ "_wxWindowDestroyEvent","_class_wxWindowDestroyEvent",0},
{ "_class_wxPreviewFrame","_wxPreviewFrame",0},
{ "_wxStaticText","_class_wxStaticText",0},
{ "_wxFont","_class_wxFont",0},
{ "_class_wxPyDropTarget","_wxPyDropTarget",0},
{ "_wxCloseEvent","_class_wxCloseEvent",0},
{ "_class_wxSplitterEvent","_wxSplitterEvent",0},
{ "_wxNotebook","_class_wxNotebook",0},
{ "_unsigned_long","_long",0},
{ "_class_wxRect","_wxRect",0},
{ "_class_wxDC","_wxDC",0},
{ "_wxScrollWinEvent","_class_wxScrollWinEvent",0},
{ "_wxPyCircleShape","_class_wxPyCircleShape",0},
{ "_class_wxPyShapeCanvas","_wxPyShapeCanvas",0},
{ "_wxGenericDragImage","_class_wxGenericDragImage",0},
{ "_class_wxProgressDialog","_wxProgressDialog",0},
{ "_wxQueryNewPaletteEvent","_class_wxQueryNewPaletteEvent",0},
{ "_wxPyApp","_class_wxPyApp",0},
{ "_class_wxWindowCreateEvent","_wxWindowCreateEvent",0},
{ "_wxMDIParentFrame","_class_wxMDIParentFrame",0},
{ "_class_wxTreeEvent","_wxTreeEvent",0},
{ "_class_wxDirDialog","_wxDirDialog",0},
{ "_wxPyLineShape","_class_wxPyLineShape",0},
{ "_class_wxPyTimer","_wxPyTimer",0},
{ "_wxFocusEvent","_class_wxFocusEvent",0},
{ "_wxMaximizeEvent","_class_wxMaximizeEvent",0},
{ "_class_wxSpinButton","_wxSpinButton",0},
{ "_class_wxPyPolygonShape","_wxPyPolygonShape",0},
{ "_wxAcceleratorEntry","_class_wxAcceleratorEntry",0},
{ "_class_wxPanel","_wxPanel",0},
{ "_class_wxCheckBox","_wxCheckBox",0},
{ "_wxComboBox","_class_wxComboBox",0},
{ "_wxRadioButton","_class_wxRadioButton",0},
{ "_class_wxMessageDialog","_wxMessageDialog",0},
{ "_signed_int","_wxCoord",0},
{ "_signed_int","_wxPrintQuality",0},
{ "_signed_int","_EBool",0},
{ "_signed_int","_wxWindowID",0},
{ "_signed_int","_int",0},
{ "_class_wxTextCtrl","_wxTextCtrl",0},
{ "_class_wxListItemAttr","_wxListItemAttr",0},
{ "_wxLayoutConstraints","_class_wxLayoutConstraints",0},
{ "_class_wxTextDataObject","_wxTextDataObject",0},
{ "_wxMenu","_class_wxMenu",0},
{ "_class_wxMoveEvent","_wxMoveEvent",0},
{ "_wxListBox","_class_wxListBox",0},
{ "_wxScreenDC","_class_wxScreenDC",0},
{ "_class_wxToolBarSimple","_wxToolBarSimple",0},
{ "_class_wxMDIChildFrame","_wxMDIChildFrame",0},
{ "_wxArrowHead","_class_wxArrowHead",0},
{ "_WXTYPE","_short",0},
{ "_WXTYPE","_signed_short",0},
{ "_WXTYPE","_unsigned_short",0},
{ "_wxFileDialog","_class_wxFileDialog",0},
{ "_class_wxDropTarget","_wxDropTarget",0},
{ "_class_wxCaret","_wxCaret",0},
{ "_class_wxMDIClientWindow","_wxMDIClientWindow",0},
{ "_class_wxBrush","_wxBrush",0},
{ "_wxTipProvider","_class_wxTipProvider",0},
{ "_unsigned_short","_WXTYPE",0},
{ "_unsigned_short","_short",0},
{ "_class_wxWindow","_wxWindow",0},
{ "_wxSplitterWindow","_class_wxSplitterWindow",0},
{ "_class_wxStaticText","_wxStaticText",0},
{ "_wxPrintDialogData","_class_wxPrintDialogData",0},
{ "_class_wxFont","_wxFont",0},
{ "_wxClipboard","_class_wxClipboard",0},
{ "_class_wxPyValidator","_wxPyValidator",0},
{ "_class_wxCloseEvent","_wxCloseEvent",0},
{ "_wxSashEvent","_class_wxSashEvent",0},
{ "_wxBusyInfo","_class_wxBusyInfo",0},
{ "_class_wxMenuEvent","_wxMenuEvent",0},
{ "_wxPaletteChangedEvent","_class_wxPaletteChangedEvent",0},
{ "_class_wxPyBitmapDataObject","_wxPyBitmapDataObject",0},
{ "_class_wxPyCircleShape","_wxPyCircleShape",0},
{ "_wxClientDC","_class_wxClientDC",0},
{ "_wxMouseEvent","_class_wxMouseEvent",0},
{ "_class_wxGenericDragImage","_wxGenericDragImage",0},
{ "_wxListCtrl","_class_wxListCtrl",0},
{ "_wxSingleChoiceDialog","_class_wxSingleChoiceDialog",0},
{ "_wxPyDividedShape","_class_wxPyDividedShape",0},
{ "_class_wxPoint","_wxPoint",0},
{ "_wxRealPoint","_class_wxRealPoint",0},
{ "_class_wxRadioBox","_wxRadioBox",0},
{ "_class_wxBoxSizer","_wxBoxSizer",0},
{ "_signed_short","_WXTYPE",0},
{ "_signed_short","_short",0},
{ "_wxMemoryDC","_class_wxMemoryDC",0},
{ "_wxPyTextDataObject","_class_wxPyTextDataObject",0},
{ "_class_wxPrintDialog","_wxPrintDialog",0},
{ "_class_wxPyControlPoint","_wxPyControlPoint",0},
{ "_wxPaintDC","_class_wxPaintDC",0},
{ "_class_wxWindowDC","_wxWindowDC",0},
{ "_class_wxFocusEvent","_wxFocusEvent",0},
{ "_class_wxMaximizeEvent","_wxMaximizeEvent",0},
{ "_wxStatusBar","_class_wxStatusBar",0},
{ "_class_wxAcceleratorEntry","_wxAcceleratorEntry",0},
{ "_class_wxCursor","_wxCursor",0},
{ "_wxPostScriptDC","_class_wxPostScriptDC",0},
{ "_wxPyFileDropTarget","_class_wxPyFileDropTarget",0},
{ "_class_wxImageHandler","_wxImageHandler",0},
{ "_wxPyShape","_class_wxPyShape",0},
{ "_wxScrolledWindow","_class_wxScrolledWindow",0},
{ "_wxTreeItemId","_class_wxTreeItemId",0},
{ "_unsigned_char","_byte",0},
{ "_class_wxMenu","_wxMenu",0},
{ "_wxControl","_class_wxControl",0},
{ "_class_wxListBox","_wxListBox",0},
{ "_unsigned_int","_wxCoord",0},
{ "_unsigned_int","_wxPrintQuality",0},
{ "_unsigned_int","_size_t",0},
{ "_unsigned_int","_uint",0},
{ "_unsigned_int","_wxWindowID",0},
{ "_unsigned_int","_int",0},
{ "_wxIcon","_class_wxIcon",0},
{ "_wxDialog","_class_wxDialog",0},
{ "_class_wxListItem","_wxListItem",0},
{ "_class_wxPen","_wxPen",0},
{ "_class_wxFileDialog","_wxFileDialog",0},
{ "_wxQueryLayoutInfoEvent","_class_wxQueryLayoutInfoEvent",0},
{ "_short","_WXTYPE",0},
{ "_short","_unsigned_short",0},
{ "_short","_signed_short",0},
{ "_class_wxStaticBox","_wxStaticBox",0},
{ "_wxLayoutAlgorithm","_class_wxLayoutAlgorithm",0},
{ "_wxPyTextShape","_class_wxPyTextShape",0},
{ "_class_wxPyDataObjectSimple","_wxPyDataObjectSimple",0},
{ "_class_wxPyDropSource","_wxPyDropSource",0},
{ "_class_wxScrollEvent","_wxScrollEvent",0},
{ "_wxJoystickEvent","_class_wxJoystickEvent",0},
{ "_class_wxChoice","_wxChoice",0},
{ "_class_wxSlider","_wxSlider",0},
{ "_class_wxCalculateLayoutEvent","_wxCalculateLayoutEvent",0},
{ "_class_wxImageList","_wxImageList",0},
{ "_class_wxBitmapButton","_wxBitmapButton",0},
{ "_wxPyTipProvider","_class_wxPyTipProvider",0},
{ "_wxFrame","_class_wxFrame",0},
{ "_wxPCXHandler","_class_wxPCXHandler",0},
{ "_class_wxGridSizer","_wxGridSizer",0},
{ "_wxPyDivisionShape","_class_wxPyDivisionShape",0},
{ "_class_wxPaletteChangedEvent","_wxPaletteChangedEvent",0},
{ "_class_wxNotebook","_wxNotebook",0},
{ "_wxJPEGHandler","_class_wxJPEGHandler",0},
{ "_wxWindowID","_wxCoord",0},
{ "_wxWindowID","_wxPrintQuality",0},
{ "_wxWindowID","_size_t",0},
{ "_wxWindowID","_EBool",0},
{ "_wxWindowID","_uint",0},
{ "_wxWindowID","_int",0},
{ "_wxWindowID","_signed_int",0},
{ "_wxWindowID","_unsigned_int",0},
{ "_class_wxScrollWinEvent","_wxScrollWinEvent",0},
{ "_class_wxSizerItem","_wxSizerItem",0},
{ "_int","_wxCoord",0},
{ "_int","_wxPrintQuality",0},
{ "_int","_size_t",0},
{ "_int","_EBool",0},
{ "_int","_uint",0},
{ "_int","_wxWindowID",0},
{ "_int","_unsigned_int",0},
{ "_int","_signed_int",0},
{ "_class_wxMouseEvent","_wxMouseEvent",0},
{ "_wxPyCommandEvent","_class_wxPyCommandEvent",0},
{ "_class_wxListEvent","_wxListEvent",0},
{ "_class_wxPrintPreview","_wxPrintPreview",0},
{ "_class_wxSpinEvent","_wxSpinEvent",0},
{ "_class_wxQueryNewPaletteEvent","_wxQueryNewPaletteEvent",0},
{ "_class_wxNavigationKeyEvent","_wxNavigationKeyEvent",0},
{ "_wxButton","_class_wxButton",0},
{ "_class_wxPyApp","_wxPyApp",0},
{ "_wxSize","_class_wxSize",0},
{ "_wxRegionIterator","_class_wxRegionIterator",0},
{ "_class_wxPyTextDataObject","_wxPyTextDataObject",0},
{ "_class_wxMDIParentFrame","_wxMDIParentFrame",0},
{ "_wxPyTreeItemData","_class_wxPyTreeItemData",0},
{ "_wxStaticBoxSizer","_class_wxStaticBoxSizer",0},
{ "_class_wxPyLineShape","_wxPyLineShape",0},
{ "_class_wxPaintDC","_wxPaintDC",0},
{ "_class_wxSysColourChangedEvent","_wxSysColourChangedEvent",0},
{ "_class_wxPyFileDropTarget","_wxPyFileDropTarget",0},
{ "_class_wxInitDialogEvent","_wxInitDialogEvent",0},
{ "_class_wxComboBox","_wxComboBox",0},
{ "_class_wxRadioButton","_wxRadioButton",0},
{ "_class_wxPyShape","_wxPyShape",0},
{ "_wxValidator","_class_wxValidator",0},
{ "_wxToolBarBase","_class_wxToolBarBase",0},
{ "_class_wxTreeItemId","_wxTreeItemId",0},
{ "_wxTreeCtrl","_class_wxTreeCtrl",0},
{ "_class_wxLayoutConstraints","_wxLayoutConstraints",0},
{ "_wxIconizeEvent","_class_wxIconizeEvent",0},
{ "_class_wxControl","_wxControl",0},
{ "_wxStaticBitmap","_class_wxStaticBitmap",0},
{ "_wxPyDrawnShape","_class_wxPyDrawnShape",0},
{ "_class_wxIcon","_wxIcon",0},
{ "_class_wxColour","_wxColour",0},
{ "_class_wxScreenDC","_wxScreenDC",0},
{ "_class_wxPageSetupDialog","_wxPageSetupDialog",0},
{ "_wxPalette","_class_wxPalette",0},
{ "_class_wxIdleEvent","_wxIdleEvent",0},
{ "_wxCoord","_int",0},
{ "_wxCoord","_signed_int",0},
{ "_wxCoord","_unsigned_int",0},
{ "_wxCoord","_wxWindowID",0},
{ "_wxCoord","_uint",0},
{ "_wxCoord","_EBool",0},
{ "_wxCoord","_size_t",0},
{ "_wxCoord","_wxPrintQuality",0},
{ "_wxEraseEvent","_class_wxEraseEvent",0},
{ "_wxDataObjectComposite","_class_wxDataObjectComposite",0},
{ "_class_wxJoystickEvent","_wxJoystickEvent",0},
{ "_class_wxTipProvider","_wxTipProvider",0},
{ "_class_wxMiniFrame","_wxMiniFrame",0},
{ "_wxFontDialog","_class_wxFontDialog",0},
{ "_wxRegion","_class_wxRegion",0},
{ "_class_wxSplitterWindow","_wxSplitterWindow",0},
{ "_wxPreviewFrame","_class_wxPreviewFrame",0},
{ "_wxSizer","_class_wxSizer",0},
{ "_class_wxShowEvent","_wxShowEvent",0},
{ "_class_wxPyTipProvider","_wxPyTipProvider",0},
{ "_class_wxPCXHandler","_wxPCXHandler",0},
{ "_wxTIFFHandler","_class_wxTIFFHandler",0},
{ "_wxDiagram","_class_wxDiagram",0},
{ "_wxPyDropTarget","_class_wxPyDropTarget",0},
{ "_wxActivateEvent","_class_wxActivateEvent",0},
{ "_wxGauge","_class_wxGauge",0},
{ "_class_wxCheckListBox","_wxCheckListBox",0},
{ "_class_wxBusyInfo","_wxBusyInfo",0},
{ "_class_wxCommandEvent","_wxCommandEvent",0},
{ "_class_wxClientDC","_wxClientDC",0},
{ "_class_wxSizeEvent","_wxSizeEvent",0},
{ "_class_wxListCtrl","_wxListCtrl",0},
{ "_class_wxPyDividedShape","_wxPyDividedShape",0},
{ "_wxPyEllipseShape","_class_wxPyEllipseShape",0},
{ "_wxCustomDataObject","_class_wxCustomDataObject",0},
{ "_class_wxSize","_wxSize",0},
{ "_class_wxBitmap","_wxBitmap",0},
{ "_class_wxMemoryDC","_wxMemoryDC",0},
{ "_wxPyTextDropTarget","_class_wxPyTextDropTarget",0},
{ "_wxMenuBar","_class_wxMenuBar",0},
{ "_wxTreeEvent","_class_wxTreeEvent",0},
{ "_wxDirDialog","_class_wxDirDialog",0},
{ "_wxPyShapeEvtHandler","_class_wxPyShapeEvtHandler",0},
{ "_wxEvtHandler","_class_wxEvtHandler",0},
{ "_wxMenuItem","_class_wxMenuItem",0},
{ "_class_wxScrollBar","_wxScrollBar",0},
{ "_class_wxColourDialog","_wxColourDialog",0},
{ "_class_wxPrintData","_wxPrintData",0},
{ "_wxPyRectangleShape","_class_wxPyRectangleShape",0},
{ "_class_wxScrolledWindow","_wxScrolledWindow",0},
{ "_wxListItemAttr","_class_wxListItemAttr",0},
{ "_class_wxTextEntryDialog","_wxTextEntryDialog",0},
{ "_wxKeyEvent","_class_wxKeyEvent",0},
{ "_wxMoveEvent","_class_wxMoveEvent",0},
{ "_wxOGLConstraint","_class_wxOGLConstraint",0},
{ "_wxColourData","_class_wxColourData",0},
{ "_wxPageSetupDialogData","_class_wxPageSetupDialogData",0},
{ "_class_wxPalette","_wxPalette",0},
{ "_wxFileDataObject","_class_wxFileDataObject",0},
{ "_class_wxQueryLayoutInfoEvent","_wxQueryLayoutInfoEvent",0},
{ "_wxNotebookSizer","_class_wxNotebookSizer",0},
{ "_class_wxEraseEvent","_wxEraseEvent",0},
{ "_wxPyFontEnumerator","_class_wxPyFontEnumerator",0},
{ "_wxMDIClientWindow","_class_wxMDIClientWindow",0},
{ "_class_wxPyTextShape","_wxPyTextShape",0},
{ "_class_wxDataObjectComposite","_wxDataObjectComposite",0},
{ "_class_wxToolBarToolBase","_wxToolBarToolBase",0},
{ "_class_wxFontDialog","_wxFontDialog",0},
{ "_wxWindow","_class_wxWindow",0},
{ "_class_wxWindowDestroyEvent","_wxWindowDestroyEvent",0},
{ "_class_wxFrame","_wxFrame",0},
{ "_class_wxDiagram","_wxDiagram",0},
{0,0,0}};
static PyObject *SWIG_globals;
#ifdef __cplusplus
extern "C"
#endif
SWIGEXPORT(void) initoglc() {
PyObject *m, *d;
SWIG_globals = SWIG_newvarlink();
m = Py_InitModule("oglc", oglcMethods);
d = PyModule_GetDict(m);
PyDict_SetItemString(d,"KEY_SHIFT", PyInt_FromLong((long) KEY_SHIFT));
PyDict_SetItemString(d,"KEY_CTRL", PyInt_FromLong((long) KEY_CTRL));
PyDict_SetItemString(d,"ARROW_NONE", PyInt_FromLong((long) ARROW_NONE));
PyDict_SetItemString(d,"ARROW_END", PyInt_FromLong((long) ARROW_END));
PyDict_SetItemString(d,"ARROW_BOTH", PyInt_FromLong((long) ARROW_BOTH));
PyDict_SetItemString(d,"ARROW_MIDDLE", PyInt_FromLong((long) ARROW_MIDDLE));
PyDict_SetItemString(d,"ARROW_START", PyInt_FromLong((long) ARROW_START));
PyDict_SetItemString(d,"ARROW_HOLLOW_CIRCLE", PyInt_FromLong((long) ARROW_HOLLOW_CIRCLE));
PyDict_SetItemString(d,"ARROW_FILLED_CIRCLE", PyInt_FromLong((long) ARROW_FILLED_CIRCLE));
PyDict_SetItemString(d,"ARROW_ARROW", PyInt_FromLong((long) ARROW_ARROW));
PyDict_SetItemString(d,"ARROW_SINGLE_OBLIQUE", PyInt_FromLong((long) ARROW_SINGLE_OBLIQUE));
PyDict_SetItemString(d,"ARROW_DOUBLE_OBLIQUE", PyInt_FromLong((long) ARROW_DOUBLE_OBLIQUE));
PyDict_SetItemString(d,"ARROW_METAFILE", PyInt_FromLong((long) ARROW_METAFILE));
PyDict_SetItemString(d,"ARROW_POSITION_END", PyInt_FromLong((long) ARROW_POSITION_END));
PyDict_SetItemString(d,"ARROW_POSITION_START", PyInt_FromLong((long) ARROW_POSITION_START));
PyDict_SetItemString(d,"CONTROL_POINT_VERTICAL", PyInt_FromLong((long) CONTROL_POINT_VERTICAL));
PyDict_SetItemString(d,"CONTROL_POINT_HORIZONTAL", PyInt_FromLong((long) CONTROL_POINT_HORIZONTAL));
PyDict_SetItemString(d,"CONTROL_POINT_DIAGONAL", PyInt_FromLong((long) CONTROL_POINT_DIAGONAL));
PyDict_SetItemString(d,"CONTROL_POINT_ENDPOINT_TO", PyInt_FromLong((long) CONTROL_POINT_ENDPOINT_TO));
PyDict_SetItemString(d,"CONTROL_POINT_ENDPOINT_FROM", PyInt_FromLong((long) CONTROL_POINT_ENDPOINT_FROM));
PyDict_SetItemString(d,"CONTROL_POINT_LINE", PyInt_FromLong((long) CONTROL_POINT_LINE));
PyDict_SetItemString(d,"FORMAT_NONE", PyInt_FromLong((long) FORMAT_NONE));
PyDict_SetItemString(d,"FORMAT_CENTRE_HORIZ", PyInt_FromLong((long) FORMAT_CENTRE_HORIZ));
PyDict_SetItemString(d,"FORMAT_CENTRE_VERT", PyInt_FromLong((long) FORMAT_CENTRE_VERT));
PyDict_SetItemString(d,"FORMAT_SIZE_TO_CONTENTS", PyInt_FromLong((long) FORMAT_SIZE_TO_CONTENTS));
PyDict_SetItemString(d,"LINE_ALIGNMENT_HORIZ", PyInt_FromLong((long) LINE_ALIGNMENT_HORIZ));
PyDict_SetItemString(d,"LINE_ALIGNMENT_VERT", PyInt_FromLong((long) LINE_ALIGNMENT_VERT));
PyDict_SetItemString(d,"LINE_ALIGNMENT_TO_NEXT_HANDLE", PyInt_FromLong((long) LINE_ALIGNMENT_TO_NEXT_HANDLE));
PyDict_SetItemString(d,"LINE_ALIGNMENT_NONE", PyInt_FromLong((long) LINE_ALIGNMENT_NONE));
PyDict_SetItemString(d,"SHADOW_NONE", PyInt_FromLong((long) SHADOW_NONE));
PyDict_SetItemString(d,"SHADOW_LEFT", PyInt_FromLong((long) SHADOW_LEFT));
PyDict_SetItemString(d,"SHADOW_RIGHT", PyInt_FromLong((long) SHADOW_RIGHT));
PyDict_SetItemString(d,"OP_CLICK_LEFT", PyInt_FromLong((long) OP_CLICK_LEFT));
PyDict_SetItemString(d,"OP_CLICK_RIGHT", PyInt_FromLong((long) OP_CLICK_RIGHT));
PyDict_SetItemString(d,"OP_DRAG_LEFT", PyInt_FromLong((long) OP_DRAG_LEFT));
PyDict_SetItemString(d,"OP_DRAG_RIGHT", PyInt_FromLong((long) OP_DRAG_RIGHT));
PyDict_SetItemString(d,"OP_ALL", PyInt_FromLong((long) OP_ALL));
PyDict_SetItemString(d,"ATTACHMENT_MODE_NONE", PyInt_FromLong((long) ATTACHMENT_MODE_NONE));
PyDict_SetItemString(d,"ATTACHMENT_MODE_EDGE", PyInt_FromLong((long) ATTACHMENT_MODE_EDGE));
PyDict_SetItemString(d,"ATTACHMENT_MODE_BRANCHING", PyInt_FromLong((long) ATTACHMENT_MODE_BRANCHING));
PyDict_SetItemString(d,"BRANCHING_ATTACHMENT_NORMAL", PyInt_FromLong((long) BRANCHING_ATTACHMENT_NORMAL));
PyDict_SetItemString(d,"BRANCHING_ATTACHMENT_BLOB", PyInt_FromLong((long) BRANCHING_ATTACHMENT_BLOB));
PyDict_SetItemString(d,"gyCONSTRAINT_CENTRED_VERTICALLY", PyInt_FromLong((long) gyCONSTRAINT_CENTRED_VERTICALLY));
PyDict_SetItemString(d,"gyCONSTRAINT_CENTRED_HORIZONTALLY", PyInt_FromLong((long) gyCONSTRAINT_CENTRED_HORIZONTALLY));
PyDict_SetItemString(d,"gyCONSTRAINT_CENTRED_BOTH", PyInt_FromLong((long) gyCONSTRAINT_CENTRED_BOTH));
PyDict_SetItemString(d,"gyCONSTRAINT_LEFT_OF", PyInt_FromLong((long) gyCONSTRAINT_LEFT_OF));
PyDict_SetItemString(d,"gyCONSTRAINT_RIGHT_OF", PyInt_FromLong((long) gyCONSTRAINT_RIGHT_OF));
PyDict_SetItemString(d,"gyCONSTRAINT_ABOVE", PyInt_FromLong((long) gyCONSTRAINT_ABOVE));
PyDict_SetItemString(d,"gyCONSTRAINT_BELOW", PyInt_FromLong((long) gyCONSTRAINT_BELOW));
PyDict_SetItemString(d,"gyCONSTRAINT_ALIGNED_TOP", PyInt_FromLong((long) gyCONSTRAINT_ALIGNED_TOP));
PyDict_SetItemString(d,"gyCONSTRAINT_ALIGNED_BOTTOM", PyInt_FromLong((long) gyCONSTRAINT_ALIGNED_BOTTOM));
PyDict_SetItemString(d,"gyCONSTRAINT_ALIGNED_LEFT", PyInt_FromLong((long) gyCONSTRAINT_ALIGNED_LEFT));
PyDict_SetItemString(d,"gyCONSTRAINT_ALIGNED_RIGHT", PyInt_FromLong((long) gyCONSTRAINT_ALIGNED_RIGHT));
PyDict_SetItemString(d,"gyCONSTRAINT_MIDALIGNED_TOP", PyInt_FromLong((long) gyCONSTRAINT_MIDALIGNED_TOP));
PyDict_SetItemString(d,"gyCONSTRAINT_MIDALIGNED_BOTTOM", PyInt_FromLong((long) gyCONSTRAINT_MIDALIGNED_BOTTOM));
PyDict_SetItemString(d,"gyCONSTRAINT_MIDALIGNED_LEFT", PyInt_FromLong((long) gyCONSTRAINT_MIDALIGNED_LEFT));
PyDict_SetItemString(d,"gyCONSTRAINT_MIDALIGNED_RIGHT", PyInt_FromLong((long) gyCONSTRAINT_MIDALIGNED_RIGHT));
PyDict_SetItemString(d,"DIVISION_SIDE_NONE", PyInt_FromLong((long) DIVISION_SIDE_NONE));
PyDict_SetItemString(d,"DIVISION_SIDE_LEFT", PyInt_FromLong((long) DIVISION_SIDE_LEFT));
PyDict_SetItemString(d,"DIVISION_SIDE_TOP", PyInt_FromLong((long) DIVISION_SIDE_TOP));
PyDict_SetItemString(d,"DIVISION_SIDE_RIGHT", PyInt_FromLong((long) DIVISION_SIDE_RIGHT));
PyDict_SetItemString(d,"DIVISION_SIDE_BOTTOM", PyInt_FromLong((long) DIVISION_SIDE_BOTTOM));
initoglbasicc();
initoglshapesc();
initoglshapes2c();
initoglcanvasc();
wxClassInfo::CleanUpClasses();
wxClassInfo::InitializeClasses();
{
int i;
for (i = 0; _swig_mapping[i].n1; i++)
SWIG_RegisterMapping(_swig_mapping[i].n1,_swig_mapping[i].n2,_swig_mapping[i].pcnv);
}
}

175
wxPython/contrib/ogl/ogl.i Normal file
View File

@@ -0,0 +1,175 @@
/////////////////////////////////////////////////////////////////////////////
// Name: ogl.i
// Purpose: SWIG definitions for the wxWindows Object Graphics Library
//
// Author: Robin Dunn
//
// Created: 30-June-1999
// RCS-ID: $Id$
// Copyright: (c) 1998 by Total Control Software
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
%module ogl
%{
#include "helpers.h"
#include "oglhelpers.h"
%}
//---------------------------------------------------------------------------
%include typemaps.i
%include my_typemaps.i
%extern wx.i
%import windows.i
%extern _defs.i
%extern misc.i
%extern gdi.i
%include _ogldefs.i
%import oglbasic.i
%import oglshapes.i
%import oglshapes2.i
%import oglcanvas.i
%{
#if defined(__WXMSW__)
wxString wxPyEmptyStr("");
wxPoint wxPyDefaultPosition(-1, -1);
wxSize wxPyDefaultSize(-1, -1);
#endif
%}
%pragma(python) code = "import wx"
//---------------------------------------------------------------------------
enum {
KEY_SHIFT,
KEY_CTRL,
ARROW_NONE,
ARROW_END,
ARROW_BOTH,
ARROW_MIDDLE,
ARROW_START,
ARROW_HOLLOW_CIRCLE,
ARROW_FILLED_CIRCLE,
ARROW_ARROW,
ARROW_SINGLE_OBLIQUE,
ARROW_DOUBLE_OBLIQUE,
ARROW_METAFILE,
ARROW_POSITION_END,
ARROW_POSITION_START,
CONTROL_POINT_VERTICAL,
CONTROL_POINT_HORIZONTAL,
CONTROL_POINT_DIAGONAL,
CONTROL_POINT_ENDPOINT_TO,
CONTROL_POINT_ENDPOINT_FROM,
CONTROL_POINT_LINE,
FORMAT_NONE,
FORMAT_CENTRE_HORIZ,
FORMAT_CENTRE_VERT,
FORMAT_SIZE_TO_CONTENTS,
LINE_ALIGNMENT_HORIZ,
LINE_ALIGNMENT_VERT,
LINE_ALIGNMENT_TO_NEXT_HANDLE,
LINE_ALIGNMENT_NONE,
SHADOW_NONE,
SHADOW_LEFT,
SHADOW_RIGHT,
// SHAPE_BASIC,
// SHAPE_RECTANGLE,
// SHAPE_ELLIPSE,
// SHAPE_POLYGON,
// SHAPE_CIRCLE,
// SHAPE_LINE,
// SHAPE_DIVIDED_RECTANGLE,
// SHAPE_COMPOSITE,
// SHAPE_CONTROL_POINT,
// SHAPE_DRAWN,
// SHAPE_DIVISION,
// SHAPE_LABEL_OBJECT,
// SHAPE_BITMAP,
// SHAPE_DIVIDED_OBJECT_CONTROL_POINT,
// OBJECT_REGION,
OP_CLICK_LEFT,
OP_CLICK_RIGHT,
OP_DRAG_LEFT,
OP_DRAG_RIGHT,
OP_ALL,
ATTACHMENT_MODE_NONE,
ATTACHMENT_MODE_EDGE,
ATTACHMENT_MODE_BRANCHING,
BRANCHING_ATTACHMENT_NORMAL,
BRANCHING_ATTACHMENT_BLOB,
gyCONSTRAINT_CENTRED_VERTICALLY,
gyCONSTRAINT_CENTRED_HORIZONTALLY,
gyCONSTRAINT_CENTRED_BOTH,
gyCONSTRAINT_LEFT_OF,
gyCONSTRAINT_RIGHT_OF,
gyCONSTRAINT_ABOVE,
gyCONSTRAINT_BELOW,
gyCONSTRAINT_ALIGNED_TOP,
gyCONSTRAINT_ALIGNED_BOTTOM,
gyCONSTRAINT_ALIGNED_LEFT,
gyCONSTRAINT_ALIGNED_RIGHT,
gyCONSTRAINT_MIDALIGNED_TOP,
gyCONSTRAINT_MIDALIGNED_BOTTOM,
gyCONSTRAINT_MIDALIGNED_LEFT,
gyCONSTRAINT_MIDALIGNED_RIGHT,
DIVISION_SIDE_NONE,
DIVISION_SIDE_LEFT,
DIVISION_SIDE_TOP,
DIVISION_SIDE_RIGHT,
DIVISION_SIDE_BOTTOM,
};
//---------------------------------------------------------------------------
void wxOGLInitialize();
void wxOGLCleanUp();
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
%{
extern "C" SWIGEXPORT(void) initoglbasicc();
extern "C" SWIGEXPORT(void) initoglshapesc();
extern "C" SWIGEXPORT(void) initoglshapes2c();
extern "C" SWIGEXPORT(void) initoglcanvasc();
%}
%init %{
initoglbasicc();
initoglshapesc();
initoglshapes2c();
initoglcanvasc();
wxClassInfo::CleanUpClasses();
wxClassInfo::InitializeClasses();
%}
//----------------------------------------------------------------------
// And this gets appended to the shadow class file.
//----------------------------------------------------------------------
%pragma(python) include="_extras.py";
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------

159
wxPython/contrib/ogl/ogl.py Normal file
View File

@@ -0,0 +1,159 @@
# This file was created automatically by SWIG.
import oglc
from misc import *
from misc2 import *
from windows import *
from gdi import *
from clip_dnd import *
from events import *
from mdi import *
from frames import *
from stattool import *
from controls import *
from controls2 import *
from windows2 import *
from cmndlgs import *
from windows3 import *
from image import *
from printfw import *
from sizers import *
from oglbasic import *
from oglshapes import *
from oglshapes2 import *
from oglcanvas import *
import wx
#-------------- FUNCTION WRAPPERS ------------------
wxOGLInitialize = oglc.wxOGLInitialize
wxOGLCleanUp = oglc.wxOGLCleanUp
#-------------- VARIABLE WRAPPERS ------------------
KEY_SHIFT = oglc.KEY_SHIFT
KEY_CTRL = oglc.KEY_CTRL
ARROW_NONE = oglc.ARROW_NONE
ARROW_END = oglc.ARROW_END
ARROW_BOTH = oglc.ARROW_BOTH
ARROW_MIDDLE = oglc.ARROW_MIDDLE
ARROW_START = oglc.ARROW_START
ARROW_HOLLOW_CIRCLE = oglc.ARROW_HOLLOW_CIRCLE
ARROW_FILLED_CIRCLE = oglc.ARROW_FILLED_CIRCLE
ARROW_ARROW = oglc.ARROW_ARROW
ARROW_SINGLE_OBLIQUE = oglc.ARROW_SINGLE_OBLIQUE
ARROW_DOUBLE_OBLIQUE = oglc.ARROW_DOUBLE_OBLIQUE
ARROW_METAFILE = oglc.ARROW_METAFILE
ARROW_POSITION_END = oglc.ARROW_POSITION_END
ARROW_POSITION_START = oglc.ARROW_POSITION_START
CONTROL_POINT_VERTICAL = oglc.CONTROL_POINT_VERTICAL
CONTROL_POINT_HORIZONTAL = oglc.CONTROL_POINT_HORIZONTAL
CONTROL_POINT_DIAGONAL = oglc.CONTROL_POINT_DIAGONAL
CONTROL_POINT_ENDPOINT_TO = oglc.CONTROL_POINT_ENDPOINT_TO
CONTROL_POINT_ENDPOINT_FROM = oglc.CONTROL_POINT_ENDPOINT_FROM
CONTROL_POINT_LINE = oglc.CONTROL_POINT_LINE
FORMAT_NONE = oglc.FORMAT_NONE
FORMAT_CENTRE_HORIZ = oglc.FORMAT_CENTRE_HORIZ
FORMAT_CENTRE_VERT = oglc.FORMAT_CENTRE_VERT
FORMAT_SIZE_TO_CONTENTS = oglc.FORMAT_SIZE_TO_CONTENTS
LINE_ALIGNMENT_HORIZ = oglc.LINE_ALIGNMENT_HORIZ
LINE_ALIGNMENT_VERT = oglc.LINE_ALIGNMENT_VERT
LINE_ALIGNMENT_TO_NEXT_HANDLE = oglc.LINE_ALIGNMENT_TO_NEXT_HANDLE
LINE_ALIGNMENT_NONE = oglc.LINE_ALIGNMENT_NONE
SHADOW_NONE = oglc.SHADOW_NONE
SHADOW_LEFT = oglc.SHADOW_LEFT
SHADOW_RIGHT = oglc.SHADOW_RIGHT
OP_CLICK_LEFT = oglc.OP_CLICK_LEFT
OP_CLICK_RIGHT = oglc.OP_CLICK_RIGHT
OP_DRAG_LEFT = oglc.OP_DRAG_LEFT
OP_DRAG_RIGHT = oglc.OP_DRAG_RIGHT
OP_ALL = oglc.OP_ALL
ATTACHMENT_MODE_NONE = oglc.ATTACHMENT_MODE_NONE
ATTACHMENT_MODE_EDGE = oglc.ATTACHMENT_MODE_EDGE
ATTACHMENT_MODE_BRANCHING = oglc.ATTACHMENT_MODE_BRANCHING
BRANCHING_ATTACHMENT_NORMAL = oglc.BRANCHING_ATTACHMENT_NORMAL
BRANCHING_ATTACHMENT_BLOB = oglc.BRANCHING_ATTACHMENT_BLOB
gyCONSTRAINT_CENTRED_VERTICALLY = oglc.gyCONSTRAINT_CENTRED_VERTICALLY
gyCONSTRAINT_CENTRED_HORIZONTALLY = oglc.gyCONSTRAINT_CENTRED_HORIZONTALLY
gyCONSTRAINT_CENTRED_BOTH = oglc.gyCONSTRAINT_CENTRED_BOTH
gyCONSTRAINT_LEFT_OF = oglc.gyCONSTRAINT_LEFT_OF
gyCONSTRAINT_RIGHT_OF = oglc.gyCONSTRAINT_RIGHT_OF
gyCONSTRAINT_ABOVE = oglc.gyCONSTRAINT_ABOVE
gyCONSTRAINT_BELOW = oglc.gyCONSTRAINT_BELOW
gyCONSTRAINT_ALIGNED_TOP = oglc.gyCONSTRAINT_ALIGNED_TOP
gyCONSTRAINT_ALIGNED_BOTTOM = oglc.gyCONSTRAINT_ALIGNED_BOTTOM
gyCONSTRAINT_ALIGNED_LEFT = oglc.gyCONSTRAINT_ALIGNED_LEFT
gyCONSTRAINT_ALIGNED_RIGHT = oglc.gyCONSTRAINT_ALIGNED_RIGHT
gyCONSTRAINT_MIDALIGNED_TOP = oglc.gyCONSTRAINT_MIDALIGNED_TOP
gyCONSTRAINT_MIDALIGNED_BOTTOM = oglc.gyCONSTRAINT_MIDALIGNED_BOTTOM
gyCONSTRAINT_MIDALIGNED_LEFT = oglc.gyCONSTRAINT_MIDALIGNED_LEFT
gyCONSTRAINT_MIDALIGNED_RIGHT = oglc.gyCONSTRAINT_MIDALIGNED_RIGHT
DIVISION_SIDE_NONE = oglc.DIVISION_SIDE_NONE
DIVISION_SIDE_LEFT = oglc.DIVISION_SIDE_LEFT
DIVISION_SIDE_TOP = oglc.DIVISION_SIDE_TOP
DIVISION_SIDE_RIGHT = oglc.DIVISION_SIDE_RIGHT
DIVISION_SIDE_BOTTOM = oglc.DIVISION_SIDE_BOTTOM
#-------------- USER INCLUDE -----------------------
wxShapeCanvas = wxPyShapeCanvas
wxShapeEvtHandler = wxPyShapeEvtHandler
wxShape = wxPyShape
wxRectangleShape = wxPyRectangleShape
wxBitmapShape = wxPyBitmapShape
wxDrawnShape = wxPyDrawnShape
wxCompositeShape = wxPyCompositeShape
wxDividedShape = wxPyDividedShape
wxDivisionShape = wxPyDivisionShape
wxEllipseShape = wxPyEllipseShape
wxCircleShape = wxPyCircleShape
wxLineShape = wxPyLineShape
wxPolygonShape = wxPyPolygonShape
wxTextShape = wxPyTextShape
wxControlPoint = wxPyControlPoint
# Stuff these names into the wx namespace so wxPyConstructObject can find them
import wx
wx.wxPyShapeCanvasPtr = wxPyShapeCanvasPtr
wx.wxPyShapeEvtHandlerPtr = wxPyShapeEvtHandlerPtr
wx.wxPyShapePtr = wxPyShapePtr
wx.wxPyRectangleShapePtr = wxPyRectangleShapePtr
wx.wxPyBitmapShapePtr = wxPyBitmapShapePtr
wx.wxPyDrawnShapePtr = wxPyDrawnShapePtr
wx.wxPyCompositeShapePtr = wxPyCompositeShapePtr
wx.wxPyDividedShapePtr = wxPyDividedShapePtr
wx.wxPyDivisionShapePtr = wxPyDivisionShapePtr
wx.wxPyEllipseShapePtr = wxPyEllipseShapePtr
wx.wxPyCircleShapePtr = wxPyCircleShapePtr
wx.wxPyLineShapePtr = wxPyLineShapePtr
wx.wxPyPolygonShapePtr = wxPyPolygonShapePtr
wx.wxPyTextShapePtr = wxPyTextShapePtr
wx.wxShapeRegionPtr = wxShapeRegionPtr
wx.wxOGLConstraintPtr = wxOGLConstraintPtr
wx.wxControlPointPtr = wxPyControlPointPtr

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,401 @@
/////////////////////////////////////////////////////////////////////////////
// Name: oglbasic.i
// Purpose: SWIG definitions for the wxWindows Object Graphics Library
//
// Author: Robin Dunn
//
// Created: 3-Sept-1999
// RCS-ID: $Id$
// Copyright: (c) 1998 by Total Control Software
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
%module oglbasic
%{
#include "helpers.h"
#include "oglhelpers.h"
%}
//---------------------------------------------------------------------------
%include typemaps.i
%include my_typemaps.i
%extern wx.i
%import windows.i
%extern _defs.i
%extern misc.i
%extern gdi.i
%include _ogldefs.i
//%extern oglcanvas.i
%pragma(python) code = "import wx"
%pragma(python) code = "from oglcanvas import wxPyShapeCanvasPtr"
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
class wxShapeRegion {
public:
wxShapeRegion();
//~wxShapeRegion();
void SetText(const wxString& s);
void SetFont(wxFont *f);
void SetMinSize(double w, double h);
void SetSize(double w, double h);
void SetPosition(double x, double y);
void SetProportions(double x, double y);
void SetFormatMode(int mode);
void SetName(const wxString& s);
void SetColour(const wxString& col);
wxString GetText();
wxFont *GetFont();
void GetMinSize(double *OUTPUT, double *OUTPUT);
void GetProportion(double *OUTPUT, double *OUTPUT);
void GetSize(double *OUTPUT, double *OUTPUT);
void GetPosition(double *OUTPUT, double *OUTPUT);
int GetFormatMode();
wxString GetName();
wxString GetColour();
wxColour *GetActualColourObject();
wxList& GetFormattedText();
wxString GetPenColour();
int GetPenStyle();
void SetPenStyle(int style);
void SetPenColour(const wxString& col);
wxPen *GetActualPen();
double GetWidth();
double GetHeight();
void ClearText();
};
//---------------------------------------------------------------------------
%{
WXSHAPE_IMP_CALLBACKS(wxPyShapeEvtHandler,wxShapeEvtHandler);
%}
class wxPyShapeEvtHandler {
public:
wxPyShapeEvtHandler(wxPyShapeEvtHandler *prev = NULL,
wxPyShape *shape = NULL);
void _setSelf(PyObject* self, PyObject* _class);
%pragma(python) addtomethod = "__init__:self._setSelf(self, wxPyShapeEvtHandler)"
%addmethods {
void Destroy() { delete self; }
}
void SetShape(wxPyShape *sh);
wxPyShape *GetShape();
void SetPreviousHandler(wxPyShapeEvtHandler* handler);
wxPyShapeEvtHandler* GetPreviousHandler();
wxPyShapeEvtHandler* CreateNewCopy();
void base_OnDelete();
void base_OnDraw(wxDC& dc);
void base_OnDrawContents(wxDC& dc);
void base_OnDrawBranches(wxDC& dc, bool erase = FALSE);
void base_OnMoveLinks(wxDC& dc);
void base_OnErase(wxDC& dc);
void base_OnEraseContents(wxDC& dc);
void base_OnHighlight(wxDC& dc);
void base_OnLeftClick(double x, double y, int keys = 0, int attachment = 0);
void base_OnLeftDoubleClick(double x, double y, int keys = 0, int attachment = 0);
void base_OnRightClick(double x, double y, int keys = 0, int attachment = 0);
void base_OnSize(double x, double y);
bool base_OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
void base_OnMovePost(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
void base_OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0);
void base_OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0);
void base_OnEndDragLeft(double x, double y, int keys=0, int attachment = 0);
void base_OnDragRight(bool draw, double x, double y, int keys=0, int attachment = 0);
void base_OnBeginDragRight(double x, double y, int keys=0, int attachment = 0);
void base_OnEndDragRight(double x, double y, int keys=0, int attachment = 0);
void base_OnDrawOutline(wxDC& dc, double x, double y, double w, double h);
void base_OnDrawControlPoints(wxDC& dc);
void base_OnEraseControlPoints(wxDC& dc);
void base_OnMoveLink(wxDC& dc, bool moveControlPoints = TRUE);
void base_OnSizingDragLeft(wxPyControlPoint* pt, bool draw, double x, double y, int keys=0, int attachment = 0);
void base_OnSizingBeginDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
void base_OnSizingEndDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
void base_OnBeginSize(double w, double h);
void base_OnEndSize(double w, double h);
// void base_OnChangeAttachment(int attachment, wxPyLineShape* line, wxList& ordering);
};
//---------------------------------------------------------------------------
%{
WXSHAPE_IMP_CALLBACKS(wxPyShape, wxShape);
%}
class wxPyShape : public wxPyShapeEvtHandler {
public:
// wxPyShape(wxPyShapeCanvas *can = NULL); abstract base class...
void _setSelf(PyObject* self, PyObject* _class);
%pragma(python) addtomethod = "__init__:self._setSelf(self, wxPyShape)"
%addmethods {
void Destroy() { delete self; }
}
void GetBoundingBoxMax(double *OUTPUT, double *OUTPUT);
void GetBoundingBoxMin(double *OUTPUT, double *OUTPUT);
bool GetPerimeterPoint(double x1, double y1,
double x2, double y2,
double *OUTPUT, double *OUTPUT);
wxPyShapeCanvas *GetCanvas();
void SetCanvas(wxPyShapeCanvas *the_canvas);
void AddToCanvas(wxPyShapeCanvas *the_canvas, wxPyShape *addAfter = NULL);
void InsertInCanvas(wxPyShapeCanvas *the_canvas);
void RemoveFromCanvas(wxPyShapeCanvas *the_canvas);
double GetX();
double GetY();
void SetX(double x);
void SetY(double y);
wxPyShape *GetParent();
void SetParent(wxPyShape *p);
wxPyShape *GetTopAncestor();
// wxList& GetChildren();
%addmethods {
PyObject* GetChildren() {
wxList& list = self->GetChildren();
return wxPy_ConvertList(&list, "wxPyShape");
}
}
void Unlink();
void SetDrawHandles(bool drawH);
bool GetDrawHandles();
void MakeControlPoints();
void DeleteControlPoints(wxDC *dc = NULL);
void ResetControlPoints();
wxPyShapeEvtHandler *GetEventHandler();
void SetEventHandler(wxPyShapeEvtHandler *handler);
void MakeMandatoryControlPoints();
void ResetMandatoryControlPoints();
bool Recompute();
void CalculateSize();
void Select(bool select = TRUE, wxDC* dc = NULL);
void SetHighlight(bool hi = TRUE, bool recurse = FALSE);
bool IsHighlighted() ;
bool Selected();
bool AncestorSelected();
void SetSensitivityFilter(int sens = OP_ALL, bool recursive = FALSE);
int GetSensitivityFilter();
void SetDraggable(bool drag, bool recursive = FALSE);
void SetFixedSize(bool x, bool y);
void GetFixedSize(bool *OUTPUT, bool *OUTPUT) ;
bool GetFixedWidth();
bool GetFixedHeight();
void SetSpaceAttachments(bool sp);
bool GetSpaceAttachments() ;
void SetShadowMode(int mode, bool redraw = FALSE);
int GetShadowMode();
bool HitTest(double x, double y, int *OUTPUT, double *OUTPUT);
void SetCentreResize(bool cr);
bool GetCentreResize();
void SetMaintainAspectRatio(bool ar);
bool GetMaintainAspectRatio();
// wxList& GetLines();
%addmethods {
PyObject* GetLines() {
wxList& list = self->GetLines();
return wxPy_ConvertList(&list, "wxPyLineShape");
}
}
void SetDisableLabel(bool flag);
bool GetDisableLabel();
void SetAttachmentMode(int mode);
int GetAttachmentMode();
void SetId(long i);
long GetId();
void SetPen(wxPen *pen);
void SetBrush(wxBrush *brush);
// void SetClientData(wxObject *client_data);
// wxObject *GetClientData();
%addmethods {
void SetClientData(PyObject* userData) {
wxPyUserData* data = NULL;
if (userData)
data = new wxPyUserData(userData);
self->SetClientData(data);
}
PyObject* GetClientData() {
wxPyUserData* data = (wxPyUserData*)self->GetClientData();
if (data) {
Py_INCREF(data->m_obj);
return data->m_obj;
} else {
Py_INCREF(Py_None);
return Py_None;
}
}
}
void Show(bool show);
bool IsShown();
void Move(wxDC& dc, double x1, double y1, bool display = TRUE);
void Erase(wxDC& dc);
void EraseContents(wxDC& dc);
void Draw(wxDC& dc);
void Flash();
void MoveLinks(wxDC& dc);
void DrawContents(wxDC& dc);
void SetSize(double x, double y, bool recursive = TRUE);
void SetAttachmentSize(double x, double y);
void Attach(wxPyShapeCanvas *can);
void Detach();
bool Constrain();
void AddLine(wxPyLineShape *line, wxPyShape *other,
int attachFrom = 0, int attachTo = 0,
int positionFrom = -1, int positionTo = -1);
int GetLinePosition(wxPyLineShape* line);
void AddText(const wxString& string);
wxPen *GetPen();
wxBrush *GetBrush();
void SetDefaultRegionSize();
void FormatText(wxDC& dc, const wxString& s, int regionId = 0);
void SetFormatMode(int mode, int regionId = 0);
int GetFormatMode(int regionId = 0);
void SetFont(wxFont *font, int regionId = 0);
wxFont *GetFont(int regionId = 0);
void SetTextColour(const wxString& colour, int regionId = 0);
wxString GetTextColour(int regionId = 0);
int GetNumberOfTextRegions();
void SetRegionName(const wxString& name, int regionId = 0);
wxString GetRegionName(int regionId);
int GetRegionId(const wxString& name);
void NameRegions(const wxString& parentName = "");
// wxList& GetRegions();
%addmethods {
PyObject* GetRegions() {
wxList& list = self->GetRegions();
return wxPy_ConvertList(&list, "wxShapeRegion");
}
}
void AddRegion(wxShapeRegion *region);
void ClearRegions();
void AssignNewIds();
wxPyShape *FindRegion(const wxString& regionName, int *OUTPUT);
void FindRegionNames(wxStringList& list);
void ClearText(int regionId = 0);
void RemoveLine(wxPyLineShape *line);
#ifdef PROLOGIO
void WriteAttributes(wxExpr *clause);
void ReadAttributes(wxExpr *clause);
void ReadConstraints(wxExpr *clause, wxExprDatabase *database);
void WriteRegions(wxExpr *clause);
void ReadRegions(wxExpr *clause);
#endif
bool GetAttachmentPosition(int attachment, double *OUTPUT, double *OUTPUT,
int nth = 0, int no_arcs = 1, wxPyLineShape *line = NULL);
int GetNumberOfAttachments();
bool AttachmentIsValid(int attachment);
bool GetAttachmentPositionEdge(int attachment, double *OUTPUT, double *OUTPUT,
int nth = 0, int no_arcs = 1, wxPyLineShape *line = NULL);
wxRealPoint CalcSimpleAttachment(const wxRealPoint& pt1, const wxRealPoint& pt2,
int nth, int noArcs, wxPyLineShape* line);
bool AttachmentSortTest(int attachmentPoint, const wxRealPoint& pt1, const wxRealPoint& pt2);
void EraseLinks(wxDC& dc, int attachment = -1, bool recurse = FALSE);
void DrawLinks(wxDC& dc, int attachment = -1, bool recurse = FALSE);
bool MoveLineToNewAttachment(wxDC& dc, wxPyLineShape *to_move,
double x, double y);
//void ApplyAttachmentOrdering(wxList& linesToSort);
%addmethods {
void ApplyAttachmentOrdering(PyObject* linesToSort) {
wxList* list = wxPy_wxListHelper(linesToSort, "_wxPyLineShape_p");
self->ApplyAttachmentOrdering(*list);
delete list;
}
}
wxRealPoint GetBranchingAttachmentRoot(int attachment);
bool GetBranchingAttachmentInfo(int attachment, wxRealPoint& root, wxRealPoint& neck,
wxRealPoint& shoulder1, wxRealPoint& shoulder2);
bool GetBranchingAttachmentPoint(int attachment, int n, wxRealPoint& attachmentPoint,
wxRealPoint& stemPoint);
int GetAttachmentLineCount(int attachment);
void SetBranchNeckLength(int len);
int GetBranchNeckLength();
void SetBranchStemLength(int len);
int GetBranchStemLength();
void SetBranchSpacing(int len);
int GetBranchSpacing();
void SetBranchStyle(long style);
long GetBranchStyle();
int PhysicalToLogicalAttachment(int physicalAttachment);
int LogicalToPhysicalAttachment(int logicalAttachment);
bool Draggable();
bool HasDescendant(wxPyShape *image);
wxPyShape *CreateNewCopy(bool resetMapping = TRUE, bool recompute = TRUE);
void Copy(wxPyShape& copy);
void CopyWithHandler(wxPyShape& copy);
void Rotate(double x, double y, double theta);
double GetRotation();
void ClearAttachments();
void Recentre(wxDC& dc);
void ClearPointList(wxList& list);
void base_OnDelete();
void base_OnDraw(wxDC& dc);
void base_OnDrawContents(wxDC& dc);
void base_OnDrawBranches(wxDC& dc, bool erase = FALSE);
void base_OnMoveLinks(wxDC& dc);
void base_OnErase(wxDC& dc);
void base_OnEraseContents(wxDC& dc);
void base_OnHighlight(wxDC& dc);
void base_OnLeftClick(double x, double y, int keys = 0, int attachment = 0);
void base_OnLeftDoubleClick(double x, double y, int keys = 0, int attachment = 0);
void base_OnRightClick(double x, double y, int keys = 0, int attachment = 0);
void base_OnSize(double x, double y);
bool base_OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
void base_OnMovePost(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
void base_OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0);
void base_OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0);
void base_OnEndDragLeft(double x, double y, int keys=0, int attachment = 0);
void base_OnDragRight(bool draw, double x, double y, int keys=0, int attachment = 0);
void base_OnBeginDragRight(double x, double y, int keys=0, int attachment = 0);
void base_OnEndDragRight(double x, double y, int keys=0, int attachment = 0);
void base_OnDrawOutline(wxDC& dc, double x, double y, double w, double h);
void base_OnDrawControlPoints(wxDC& dc);
void base_OnEraseControlPoints(wxDC& dc);
void base_OnMoveLink(wxDC& dc, bool moveControlPoints = TRUE);
void base_OnSizingDragLeft(wxPyControlPoint* pt, bool draw, double x, double y, int keys=0, int attachment = 0);
void base_OnSizingBeginDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
void base_OnSizingEndDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
void base_OnBeginSize(double w, double h);
void base_OnEndSize(double w, double h);
// void base_OnChangeAttachment(int attachment, wxPyLineShape* line, wxList& ordering);
};
//---------------------------------------------------------------------------

View File

@@ -0,0 +1,791 @@
# This file was created automatically by SWIG.
import oglbasicc
from misc import *
from misc2 import *
from windows import *
from gdi import *
from clip_dnd import *
from events import *
from mdi import *
from frames import *
from stattool import *
from controls import *
from controls2 import *
from windows2 import *
from cmndlgs import *
from windows3 import *
from image import *
from printfw import *
from sizers import *
import wx
from oglcanvas import wxPyShapeCanvasPtr
class wxShapeRegionPtr :
def __init__(self,this):
self.this = this
self.thisown = 0
def SetText(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_SetText,(self,) + _args, _kwargs)
return val
def SetFont(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_SetFont,(self,) + _args, _kwargs)
return val
def SetMinSize(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_SetMinSize,(self,) + _args, _kwargs)
return val
def SetSize(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_SetSize,(self,) + _args, _kwargs)
return val
def SetPosition(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_SetPosition,(self,) + _args, _kwargs)
return val
def SetProportions(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_SetProportions,(self,) + _args, _kwargs)
return val
def SetFormatMode(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_SetFormatMode,(self,) + _args, _kwargs)
return val
def SetName(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_SetName,(self,) + _args, _kwargs)
return val
def SetColour(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_SetColour,(self,) + _args, _kwargs)
return val
def GetText(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_GetText,(self,) + _args, _kwargs)
return val
def GetFont(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_GetFont,(self,) + _args, _kwargs)
if val: val = wxFontPtr(val)
return val
def GetMinSize(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_GetMinSize,(self,) + _args, _kwargs)
return val
def GetProportion(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_GetProportion,(self,) + _args, _kwargs)
return val
def GetSize(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_GetSize,(self,) + _args, _kwargs)
return val
def GetPosition(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_GetPosition,(self,) + _args, _kwargs)
return val
def GetFormatMode(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_GetFormatMode,(self,) + _args, _kwargs)
return val
def GetName(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_GetName,(self,) + _args, _kwargs)
return val
def GetColour(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_GetColour,(self,) + _args, _kwargs)
return val
def GetActualColourObject(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_GetActualColourObject,(self,) + _args, _kwargs)
if val: val = wxColourPtr(val)
return val
def GetFormattedText(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_GetFormattedText,(self,) + _args, _kwargs)
return val
def GetPenColour(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_GetPenColour,(self,) + _args, _kwargs)
return val
def GetPenStyle(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_GetPenStyle,(self,) + _args, _kwargs)
return val
def SetPenStyle(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_SetPenStyle,(self,) + _args, _kwargs)
return val
def SetPenColour(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_SetPenColour,(self,) + _args, _kwargs)
return val
def GetActualPen(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_GetActualPen,(self,) + _args, _kwargs)
if val: val = wxPenPtr(val)
return val
def GetWidth(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_GetWidth,(self,) + _args, _kwargs)
return val
def GetHeight(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_GetHeight,(self,) + _args, _kwargs)
return val
def ClearText(self, *_args, **_kwargs):
val = apply(oglbasicc.wxShapeRegion_ClearText,(self,) + _args, _kwargs)
return val
def __repr__(self):
return "<C wxShapeRegion instance at %s>" % (self.this,)
class wxShapeRegion(wxShapeRegionPtr):
def __init__(self,*_args,**_kwargs):
self.this = apply(oglbasicc.new_wxShapeRegion,_args,_kwargs)
self.thisown = 1
class wxPyShapeEvtHandlerPtr :
def __init__(self,this):
self.this = this
self.thisown = 0
def _setSelf(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler__setSelf,(self,) + _args, _kwargs)
return val
def Destroy(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_Destroy,(self,) + _args, _kwargs)
return val
def SetShape(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_SetShape,(self,) + _args, _kwargs)
return val
def GetShape(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_GetShape,(self,) + _args, _kwargs)
if val: val = wxPyShapePtr(val)
return val
def SetPreviousHandler(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_SetPreviousHandler,(self,) + _args, _kwargs)
return val
def GetPreviousHandler(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_GetPreviousHandler,(self,) + _args, _kwargs)
if val: val = wxPyShapeEvtHandlerPtr(val)
return val
def CreateNewCopy(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_CreateNewCopy,(self,) + _args, _kwargs)
if val: val = wxPyShapeEvtHandlerPtr(val)
return val
def base_OnDelete(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnDelete,(self,) + _args, _kwargs)
return val
def base_OnDraw(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnDraw,(self,) + _args, _kwargs)
return val
def base_OnDrawContents(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnDrawContents,(self,) + _args, _kwargs)
return val
def base_OnDrawBranches(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnDrawBranches,(self,) + _args, _kwargs)
return val
def base_OnMoveLinks(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnMoveLinks,(self,) + _args, _kwargs)
return val
def base_OnErase(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnErase,(self,) + _args, _kwargs)
return val
def base_OnEraseContents(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnEraseContents,(self,) + _args, _kwargs)
return val
def base_OnHighlight(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnHighlight,(self,) + _args, _kwargs)
return val
def base_OnLeftClick(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnLeftClick,(self,) + _args, _kwargs)
return val
def base_OnLeftDoubleClick(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnLeftDoubleClick,(self,) + _args, _kwargs)
return val
def base_OnRightClick(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnRightClick,(self,) + _args, _kwargs)
return val
def base_OnSize(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnSize,(self,) + _args, _kwargs)
return val
def base_OnMovePre(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnMovePre,(self,) + _args, _kwargs)
return val
def base_OnMovePost(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnMovePost,(self,) + _args, _kwargs)
return val
def base_OnDragLeft(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnDragLeft,(self,) + _args, _kwargs)
return val
def base_OnBeginDragLeft(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnBeginDragLeft,(self,) + _args, _kwargs)
return val
def base_OnEndDragLeft(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnEndDragLeft,(self,) + _args, _kwargs)
return val
def base_OnDragRight(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnDragRight,(self,) + _args, _kwargs)
return val
def base_OnBeginDragRight(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnBeginDragRight,(self,) + _args, _kwargs)
return val
def base_OnEndDragRight(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnEndDragRight,(self,) + _args, _kwargs)
return val
def base_OnDrawOutline(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnDrawOutline,(self,) + _args, _kwargs)
return val
def base_OnDrawControlPoints(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnDrawControlPoints,(self,) + _args, _kwargs)
return val
def base_OnEraseControlPoints(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnEraseControlPoints,(self,) + _args, _kwargs)
return val
def base_OnMoveLink(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnMoveLink,(self,) + _args, _kwargs)
return val
def base_OnSizingDragLeft(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnSizingDragLeft,(self,) + _args, _kwargs)
return val
def base_OnSizingBeginDragLeft(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnSizingBeginDragLeft,(self,) + _args, _kwargs)
return val
def base_OnSizingEndDragLeft(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnSizingEndDragLeft,(self,) + _args, _kwargs)
return val
def base_OnBeginSize(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnBeginSize,(self,) + _args, _kwargs)
return val
def base_OnEndSize(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShapeEvtHandler_base_OnEndSize,(self,) + _args, _kwargs)
return val
def __repr__(self):
return "<C wxPyShapeEvtHandler instance at %s>" % (self.this,)
class wxPyShapeEvtHandler(wxPyShapeEvtHandlerPtr):
def __init__(self,*_args,**_kwargs):
self.this = apply(oglbasicc.new_wxPyShapeEvtHandler,_args,_kwargs)
self.thisown = 1
self._setSelf(self, wxPyShapeEvtHandler)
class wxPyShapePtr(wxPyShapeEvtHandlerPtr):
def __init__(self,this):
self.this = this
self.thisown = 0
def _setSelf(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape__setSelf,(self,) + _args, _kwargs)
return val
def Destroy(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_Destroy,(self,) + _args, _kwargs)
return val
def GetBoundingBoxMax(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetBoundingBoxMax,(self,) + _args, _kwargs)
return val
def GetBoundingBoxMin(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetBoundingBoxMin,(self,) + _args, _kwargs)
return val
def GetPerimeterPoint(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetPerimeterPoint,(self,) + _args, _kwargs)
return val
def GetCanvas(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetCanvas,(self,) + _args, _kwargs)
if val: val = wxPyShapeCanvasPtr(val)
return val
def SetCanvas(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetCanvas,(self,) + _args, _kwargs)
return val
def AddToCanvas(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_AddToCanvas,(self,) + _args, _kwargs)
return val
def InsertInCanvas(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_InsertInCanvas,(self,) + _args, _kwargs)
return val
def RemoveFromCanvas(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_RemoveFromCanvas,(self,) + _args, _kwargs)
return val
def GetX(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetX,(self,) + _args, _kwargs)
return val
def GetY(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetY,(self,) + _args, _kwargs)
return val
def SetX(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetX,(self,) + _args, _kwargs)
return val
def SetY(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetY,(self,) + _args, _kwargs)
return val
def GetParent(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetParent,(self,) + _args, _kwargs)
if val: val = wxPyShapePtr(val)
return val
def SetParent(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetParent,(self,) + _args, _kwargs)
return val
def GetTopAncestor(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetTopAncestor,(self,) + _args, _kwargs)
if val: val = wxPyShapePtr(val)
return val
def GetChildren(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetChildren,(self,) + _args, _kwargs)
return val
def Unlink(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_Unlink,(self,) + _args, _kwargs)
return val
def SetDrawHandles(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetDrawHandles,(self,) + _args, _kwargs)
return val
def GetDrawHandles(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetDrawHandles,(self,) + _args, _kwargs)
return val
def MakeControlPoints(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_MakeControlPoints,(self,) + _args, _kwargs)
return val
def DeleteControlPoints(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_DeleteControlPoints,(self,) + _args, _kwargs)
return val
def ResetControlPoints(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_ResetControlPoints,(self,) + _args, _kwargs)
return val
def GetEventHandler(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetEventHandler,(self,) + _args, _kwargs)
if val: val = wxPyShapeEvtHandlerPtr(val)
return val
def SetEventHandler(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetEventHandler,(self,) + _args, _kwargs)
return val
def MakeMandatoryControlPoints(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_MakeMandatoryControlPoints,(self,) + _args, _kwargs)
return val
def ResetMandatoryControlPoints(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_ResetMandatoryControlPoints,(self,) + _args, _kwargs)
return val
def Recompute(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_Recompute,(self,) + _args, _kwargs)
return val
def CalculateSize(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_CalculateSize,(self,) + _args, _kwargs)
return val
def Select(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_Select,(self,) + _args, _kwargs)
return val
def SetHighlight(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetHighlight,(self,) + _args, _kwargs)
return val
def IsHighlighted(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_IsHighlighted,(self,) + _args, _kwargs)
return val
def Selected(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_Selected,(self,) + _args, _kwargs)
return val
def AncestorSelected(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_AncestorSelected,(self,) + _args, _kwargs)
return val
def SetSensitivityFilter(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetSensitivityFilter,(self,) + _args, _kwargs)
return val
def GetSensitivityFilter(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetSensitivityFilter,(self,) + _args, _kwargs)
return val
def SetDraggable(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetDraggable,(self,) + _args, _kwargs)
return val
def SetFixedSize(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetFixedSize,(self,) + _args, _kwargs)
return val
def GetFixedSize(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetFixedSize,(self,) + _args, _kwargs)
return val
def GetFixedWidth(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetFixedWidth,(self,) + _args, _kwargs)
return val
def GetFixedHeight(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetFixedHeight,(self,) + _args, _kwargs)
return val
def SetSpaceAttachments(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetSpaceAttachments,(self,) + _args, _kwargs)
return val
def GetSpaceAttachments(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetSpaceAttachments,(self,) + _args, _kwargs)
return val
def SetShadowMode(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetShadowMode,(self,) + _args, _kwargs)
return val
def GetShadowMode(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetShadowMode,(self,) + _args, _kwargs)
return val
def HitTest(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_HitTest,(self,) + _args, _kwargs)
return val
def SetCentreResize(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetCentreResize,(self,) + _args, _kwargs)
return val
def GetCentreResize(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetCentreResize,(self,) + _args, _kwargs)
return val
def SetMaintainAspectRatio(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetMaintainAspectRatio,(self,) + _args, _kwargs)
return val
def GetMaintainAspectRatio(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetMaintainAspectRatio,(self,) + _args, _kwargs)
return val
def GetLines(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetLines,(self,) + _args, _kwargs)
return val
def SetDisableLabel(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetDisableLabel,(self,) + _args, _kwargs)
return val
def GetDisableLabel(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetDisableLabel,(self,) + _args, _kwargs)
return val
def SetAttachmentMode(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetAttachmentMode,(self,) + _args, _kwargs)
return val
def GetAttachmentMode(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetAttachmentMode,(self,) + _args, _kwargs)
return val
def SetId(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetId,(self,) + _args, _kwargs)
return val
def GetId(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetId,(self,) + _args, _kwargs)
return val
def SetPen(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetPen,(self,) + _args, _kwargs)
return val
def SetBrush(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetBrush,(self,) + _args, _kwargs)
return val
def SetClientData(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetClientData,(self,) + _args, _kwargs)
return val
def GetClientData(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetClientData,(self,) + _args, _kwargs)
return val
def Show(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_Show,(self,) + _args, _kwargs)
return val
def IsShown(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_IsShown,(self,) + _args, _kwargs)
return val
def Move(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_Move,(self,) + _args, _kwargs)
return val
def Erase(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_Erase,(self,) + _args, _kwargs)
return val
def EraseContents(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_EraseContents,(self,) + _args, _kwargs)
return val
def Draw(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_Draw,(self,) + _args, _kwargs)
return val
def Flash(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_Flash,(self,) + _args, _kwargs)
return val
def MoveLinks(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_MoveLinks,(self,) + _args, _kwargs)
return val
def DrawContents(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_DrawContents,(self,) + _args, _kwargs)
return val
def SetSize(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetSize,(self,) + _args, _kwargs)
return val
def SetAttachmentSize(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetAttachmentSize,(self,) + _args, _kwargs)
return val
def Attach(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_Attach,(self,) + _args, _kwargs)
return val
def Detach(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_Detach,(self,) + _args, _kwargs)
return val
def Constrain(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_Constrain,(self,) + _args, _kwargs)
return val
def AddLine(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_AddLine,(self,) + _args, _kwargs)
return val
def GetLinePosition(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetLinePosition,(self,) + _args, _kwargs)
return val
def AddText(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_AddText,(self,) + _args, _kwargs)
return val
def GetPen(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetPen,(self,) + _args, _kwargs)
if val: val = wxPenPtr(val)
return val
def GetBrush(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetBrush,(self,) + _args, _kwargs)
if val: val = wxBrushPtr(val)
return val
def SetDefaultRegionSize(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetDefaultRegionSize,(self,) + _args, _kwargs)
return val
def FormatText(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_FormatText,(self,) + _args, _kwargs)
return val
def SetFormatMode(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetFormatMode,(self,) + _args, _kwargs)
return val
def GetFormatMode(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetFormatMode,(self,) + _args, _kwargs)
return val
def SetFont(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetFont,(self,) + _args, _kwargs)
return val
def GetFont(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetFont,(self,) + _args, _kwargs)
if val: val = wxFontPtr(val)
return val
def SetTextColour(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetTextColour,(self,) + _args, _kwargs)
return val
def GetTextColour(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetTextColour,(self,) + _args, _kwargs)
return val
def GetNumberOfTextRegions(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetNumberOfTextRegions,(self,) + _args, _kwargs)
return val
def SetRegionName(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetRegionName,(self,) + _args, _kwargs)
return val
def GetRegionName(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetRegionName,(self,) + _args, _kwargs)
return val
def GetRegionId(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetRegionId,(self,) + _args, _kwargs)
return val
def NameRegions(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_NameRegions,(self,) + _args, _kwargs)
return val
def GetRegions(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetRegions,(self,) + _args, _kwargs)
return val
def AddRegion(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_AddRegion,(self,) + _args, _kwargs)
return val
def ClearRegions(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_ClearRegions,(self,) + _args, _kwargs)
return val
def AssignNewIds(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_AssignNewIds,(self,) + _args, _kwargs)
return val
def FindRegion(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_FindRegion,(self,) + _args, _kwargs)
return val
def FindRegionNames(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_FindRegionNames,(self,) + _args, _kwargs)
return val
def ClearText(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_ClearText,(self,) + _args, _kwargs)
return val
def RemoveLine(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_RemoveLine,(self,) + _args, _kwargs)
return val
def GetAttachmentPosition(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetAttachmentPosition,(self,) + _args, _kwargs)
return val
def GetNumberOfAttachments(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetNumberOfAttachments,(self,) + _args, _kwargs)
return val
def AttachmentIsValid(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_AttachmentIsValid,(self,) + _args, _kwargs)
return val
def GetAttachmentPositionEdge(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetAttachmentPositionEdge,(self,) + _args, _kwargs)
return val
def CalcSimpleAttachment(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_CalcSimpleAttachment,(self,) + _args, _kwargs)
if val: val = wxRealPointPtr(val) ; val.thisown = 1
return val
def AttachmentSortTest(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_AttachmentSortTest,(self,) + _args, _kwargs)
return val
def EraseLinks(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_EraseLinks,(self,) + _args, _kwargs)
return val
def DrawLinks(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_DrawLinks,(self,) + _args, _kwargs)
return val
def MoveLineToNewAttachment(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_MoveLineToNewAttachment,(self,) + _args, _kwargs)
return val
def ApplyAttachmentOrdering(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_ApplyAttachmentOrdering,(self,) + _args, _kwargs)
return val
def GetBranchingAttachmentRoot(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetBranchingAttachmentRoot,(self,) + _args, _kwargs)
if val: val = wxRealPointPtr(val) ; val.thisown = 1
return val
def GetBranchingAttachmentInfo(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetBranchingAttachmentInfo,(self,) + _args, _kwargs)
return val
def GetBranchingAttachmentPoint(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetBranchingAttachmentPoint,(self,) + _args, _kwargs)
return val
def GetAttachmentLineCount(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetAttachmentLineCount,(self,) + _args, _kwargs)
return val
def SetBranchNeckLength(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetBranchNeckLength,(self,) + _args, _kwargs)
return val
def GetBranchNeckLength(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetBranchNeckLength,(self,) + _args, _kwargs)
return val
def SetBranchStemLength(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetBranchStemLength,(self,) + _args, _kwargs)
return val
def GetBranchStemLength(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetBranchStemLength,(self,) + _args, _kwargs)
return val
def SetBranchSpacing(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetBranchSpacing,(self,) + _args, _kwargs)
return val
def GetBranchSpacing(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetBranchSpacing,(self,) + _args, _kwargs)
return val
def SetBranchStyle(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_SetBranchStyle,(self,) + _args, _kwargs)
return val
def GetBranchStyle(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetBranchStyle,(self,) + _args, _kwargs)
return val
def PhysicalToLogicalAttachment(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_PhysicalToLogicalAttachment,(self,) + _args, _kwargs)
return val
def LogicalToPhysicalAttachment(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_LogicalToPhysicalAttachment,(self,) + _args, _kwargs)
return val
def Draggable(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_Draggable,(self,) + _args, _kwargs)
return val
def HasDescendant(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_HasDescendant,(self,) + _args, _kwargs)
return val
def CreateNewCopy(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_CreateNewCopy,(self,) + _args, _kwargs)
if val: val = wxPyShapePtr(val)
return val
def Copy(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_Copy,(self,) + _args, _kwargs)
return val
def CopyWithHandler(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_CopyWithHandler,(self,) + _args, _kwargs)
return val
def Rotate(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_Rotate,(self,) + _args, _kwargs)
return val
def GetRotation(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_GetRotation,(self,) + _args, _kwargs)
return val
def ClearAttachments(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_ClearAttachments,(self,) + _args, _kwargs)
return val
def Recentre(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_Recentre,(self,) + _args, _kwargs)
return val
def ClearPointList(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_ClearPointList,(self,) + _args, _kwargs)
return val
def base_OnDelete(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnDelete,(self,) + _args, _kwargs)
return val
def base_OnDraw(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnDraw,(self,) + _args, _kwargs)
return val
def base_OnDrawContents(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnDrawContents,(self,) + _args, _kwargs)
return val
def base_OnDrawBranches(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnDrawBranches,(self,) + _args, _kwargs)
return val
def base_OnMoveLinks(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnMoveLinks,(self,) + _args, _kwargs)
return val
def base_OnErase(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnErase,(self,) + _args, _kwargs)
return val
def base_OnEraseContents(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnEraseContents,(self,) + _args, _kwargs)
return val
def base_OnHighlight(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnHighlight,(self,) + _args, _kwargs)
return val
def base_OnLeftClick(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnLeftClick,(self,) + _args, _kwargs)
return val
def base_OnLeftDoubleClick(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnLeftDoubleClick,(self,) + _args, _kwargs)
return val
def base_OnRightClick(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnRightClick,(self,) + _args, _kwargs)
return val
def base_OnSize(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnSize,(self,) + _args, _kwargs)
return val
def base_OnMovePre(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnMovePre,(self,) + _args, _kwargs)
return val
def base_OnMovePost(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnMovePost,(self,) + _args, _kwargs)
return val
def base_OnDragLeft(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnDragLeft,(self,) + _args, _kwargs)
return val
def base_OnBeginDragLeft(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnBeginDragLeft,(self,) + _args, _kwargs)
return val
def base_OnEndDragLeft(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnEndDragLeft,(self,) + _args, _kwargs)
return val
def base_OnDragRight(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnDragRight,(self,) + _args, _kwargs)
return val
def base_OnBeginDragRight(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnBeginDragRight,(self,) + _args, _kwargs)
return val
def base_OnEndDragRight(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnEndDragRight,(self,) + _args, _kwargs)
return val
def base_OnDrawOutline(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnDrawOutline,(self,) + _args, _kwargs)
return val
def base_OnDrawControlPoints(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnDrawControlPoints,(self,) + _args, _kwargs)
return val
def base_OnEraseControlPoints(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnEraseControlPoints,(self,) + _args, _kwargs)
return val
def base_OnMoveLink(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnMoveLink,(self,) + _args, _kwargs)
return val
def base_OnSizingDragLeft(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnSizingDragLeft,(self,) + _args, _kwargs)
return val
def base_OnSizingBeginDragLeft(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnSizingBeginDragLeft,(self,) + _args, _kwargs)
return val
def base_OnSizingEndDragLeft(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnSizingEndDragLeft,(self,) + _args, _kwargs)
return val
def base_OnBeginSize(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnBeginSize,(self,) + _args, _kwargs)
return val
def base_OnEndSize(self, *_args, **_kwargs):
val = apply(oglbasicc.wxPyShape_base_OnEndSize,(self,) + _args, _kwargs)
return val
def __repr__(self):
return "<C wxPyShape instance at %s>" % (self.this,)
class wxPyShape(wxPyShapePtr):
def __init__(self,this):
self.this = this
#-------------- FUNCTION WRAPPERS ------------------
#-------------- VARIABLE WRAPPERS ------------------

View File

@@ -0,0 +1,2 @@
EXPORTS
initoglc

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,157 @@
/////////////////////////////////////////////////////////////////////////////
// Name: oglcanvas.i
// Purpose: SWIG definitions for the wxWindows Object Graphics Library
//
// Author: Robin Dunn
//
// Created: 7-Sept-1999
// RCS-ID: $Id$
// Copyright: (c) 1998 by Total Control Software
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
%module oglcanvas
%{
#include "helpers.h"
#include "oglhelpers.h"
%}
//---------------------------------------------------------------------------
%include typemaps.i
%include my_typemaps.i
%extern wx.i
%import windows.i
%extern _defs.i
%extern misc.i
%extern gdi.i
%include _ogldefs.i
%extern oglbasic.i
%pragma(python) code = "import wx"
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
class wxDiagram {
public:
wxDiagram();
~wxDiagram();
void AddShape(wxPyShape*shape, wxPyShape *addAfter = NULL);
void Clear(wxDC& dc);
void DeleteAllShapes();
void DrawOutline(wxDC& dc, double x1, double y1, double x2, double y2);
wxPyShape* FindShape(long id);
wxPyShapeCanvas* GetCanvas();
int GetCount();
double GetGridSpacing();
int GetMouseTolerance();
// wxList* GetShapeList();
%addmethods {
PyObject* GetShapeList() {
wxList* list = self->GetShapeList();
return wxPy_ConvertList(list, "wxPyShape");
}
}
bool GetQuickEditMode();
bool GetSnapToGrid();
void InsertShape(wxPyShape *shape);
bool LoadFile(const wxString& filename);
// **** Have to deal with wxExpr and wxExprDatabase first...
//void OnDatabaseLoad(wxExprDatabase& database);
//void OnDatabaseSave(wxExprDatabase& database);
//bool OnHeaderLoad(wxExprDatabase& database, wxExpr& expr);
//bool OnHeaderSave(wxExprDatabase& database, wxExpr& expr);
//bool OnShapeLoad(wxExprDatabase& database, wxPyShape& shape, wxExpr& expr);
//bool OnShapeSave(wxExprDatabase& database, wxPyShape& shape, wxExpr& expr);
void ReadContainerGeometry(wxExprDatabase& database);
void ReadLines(wxExprDatabase& database);
void ReadNodes(wxExprDatabase& database);
void RecentreAll(wxDC& dc);
void Redraw(wxDC& dc);
void RemoveAllShapes();
void RemoveShape(wxPyShape* shape);
bool SaveFile(const wxString& filename);
void SetCanvas(wxPyShapeCanvas* canvas);
void SetGridSpacing(double spacing);
void SetMouseTolerance(int tolerance);
void SetQuickEditMode(bool mode);
void SetSnapToGrid(bool snap);
void ShowAll(bool show);
void Snap(double *OUTPUT, double *OUTPUT);
};
//---------------------------------------------------------------------------
%{
IMP_PYCALLBACK__2DBLINT(wxPyShapeCanvas, wxShapeCanvas, OnBeginDragLeft);
IMP_PYCALLBACK__2DBLINT(wxPyShapeCanvas, wxShapeCanvas, OnBeginDragRight);
IMP_PYCALLBACK__2DBLINT(wxPyShapeCanvas, wxShapeCanvas, OnEndDragLeft);
IMP_PYCALLBACK__2DBLINT(wxPyShapeCanvas, wxShapeCanvas, OnEndDragRight);
IMP_PYCALLBACK__BOOL2DBLINT(wxPyShapeCanvas, wxShapeCanvas, OnDragLeft);
IMP_PYCALLBACK__BOOL2DBLINT(wxPyShapeCanvas, wxShapeCanvas, OnDragRight);
IMP_PYCALLBACK__2DBLINT(wxPyShapeCanvas, wxShapeCanvas, OnLeftClick);
IMP_PYCALLBACK__2DBLINT(wxPyShapeCanvas, wxShapeCanvas, OnRightClick);
%}
class wxPyShapeCanvas : public wxScrolledWindow {
public:
wxPyShapeCanvas(wxWindow* parent = NULL, wxWindowID id = -1,
const wxPoint& pos = wxPyDefaultPosition,
const wxSize& size = wxPyDefaultSize,
long style = wxBORDER);
void _setSelf(PyObject* self, PyObject* _class);
%pragma(python) addtomethod = "__init__:self._setSelf(self, wxPyShapeCanvas)"
%pragma(python) addtomethod = "__init__:#wx._StdWindowCallbacks(self)"
%pragma(python) addtomethod = "__init__:#wx._StdOnScrollCallbacks(self)"
void AddShape(wxPyShape *shape, wxPyShape *addAfter = NULL);
// **** Need a typemap for wxClassInfo, or implement wxObject, etc.....
wxPyShape* FindShape(double x1, double y, int *OUTPUT,
wxClassInfo *info = NULL, wxPyShape* notImage = NULL);
wxPyShape * FindFirstSensitiveShape(double x1, double y, int *OUTPUT, int op);
wxDiagram* GetDiagram();
bool GetQuickEditMode();
void InsertShape(wxPyShape* shape);
void base_OnBeginDragLeft(double x, double y, int keys = 0);
void base_OnBeginDragRight(double x, double y, int keys = 0);
void base_OnEndDragLeft(double x, double y, int keys = 0);
void base_OnEndDragRight(double x, double y, int keys = 0);
void base_OnDragLeft(bool draw, double x, double y, int keys = 0);
void base_OnDragRight(bool draw, double x, double y, int keys = 0);
void base_OnLeftClick(double x, double y, int keys = 0);
void base_OnRightClick(double x, double y, int keys = 0);
void Redraw(wxDC& dc);
void RemoveShape(wxPyShape *shape);
void SetDiagram(wxDiagram *diagram);
void Snap(double *OUTPUT, double *OUTPUT);
};
//---------------------------------------------------------------------------

View File

@@ -0,0 +1,226 @@
# This file was created automatically by SWIG.
import oglcanvasc
from misc import *
from misc2 import *
from windows import *
from gdi import *
from clip_dnd import *
from events import *
from mdi import *
from frames import *
from stattool import *
from controls import *
from controls2 import *
from windows2 import *
from cmndlgs import *
from windows3 import *
from image import *
from printfw import *
from sizers import *
import wx
class wxDiagramPtr :
def __init__(self,this):
self.this = this
self.thisown = 0
def __del__(self,oglcanvasc=oglcanvasc):
if self.thisown == 1 :
oglcanvasc.delete_wxDiagram(self)
def AddShape(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_AddShape,(self,) + _args, _kwargs)
return val
def Clear(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_Clear,(self,) + _args, _kwargs)
return val
def DeleteAllShapes(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_DeleteAllShapes,(self,) + _args, _kwargs)
return val
def DrawOutline(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_DrawOutline,(self,) + _args, _kwargs)
return val
def FindShape(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_FindShape,(self,) + _args, _kwargs)
if val: val = wxPyShapePtr(val)
return val
def GetCanvas(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_GetCanvas,(self,) + _args, _kwargs)
if val: val = wxPyShapeCanvasPtr(val)
return val
def GetCount(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_GetCount,(self,) + _args, _kwargs)
return val
def GetGridSpacing(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_GetGridSpacing,(self,) + _args, _kwargs)
return val
def GetMouseTolerance(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_GetMouseTolerance,(self,) + _args, _kwargs)
return val
def GetShapeList(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_GetShapeList,(self,) + _args, _kwargs)
return val
def GetQuickEditMode(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_GetQuickEditMode,(self,) + _args, _kwargs)
return val
def GetSnapToGrid(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_GetSnapToGrid,(self,) + _args, _kwargs)
return val
def InsertShape(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_InsertShape,(self,) + _args, _kwargs)
return val
def LoadFile(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_LoadFile,(self,) + _args, _kwargs)
return val
def ReadContainerGeometry(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_ReadContainerGeometry,(self,) + _args, _kwargs)
return val
def ReadLines(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_ReadLines,(self,) + _args, _kwargs)
return val
def ReadNodes(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_ReadNodes,(self,) + _args, _kwargs)
return val
def RecentreAll(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_RecentreAll,(self,) + _args, _kwargs)
return val
def Redraw(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_Redraw,(self,) + _args, _kwargs)
return val
def RemoveAllShapes(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_RemoveAllShapes,(self,) + _args, _kwargs)
return val
def RemoveShape(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_RemoveShape,(self,) + _args, _kwargs)
return val
def SaveFile(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_SaveFile,(self,) + _args, _kwargs)
return val
def SetCanvas(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_SetCanvas,(self,) + _args, _kwargs)
return val
def SetGridSpacing(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_SetGridSpacing,(self,) + _args, _kwargs)
return val
def SetMouseTolerance(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_SetMouseTolerance,(self,) + _args, _kwargs)
return val
def SetQuickEditMode(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_SetQuickEditMode,(self,) + _args, _kwargs)
return val
def SetSnapToGrid(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_SetSnapToGrid,(self,) + _args, _kwargs)
return val
def ShowAll(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_ShowAll,(self,) + _args, _kwargs)
return val
def Snap(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxDiagram_Snap,(self,) + _args, _kwargs)
return val
def __repr__(self):
return "<C wxDiagram instance at %s>" % (self.this,)
class wxDiagram(wxDiagramPtr):
def __init__(self,*_args,**_kwargs):
self.this = apply(oglcanvasc.new_wxDiagram,_args,_kwargs)
self.thisown = 1
class wxPyShapeCanvasPtr(wxScrolledWindowPtr):
def __init__(self,this):
self.this = this
self.thisown = 0
def _setSelf(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxPyShapeCanvas__setSelf,(self,) + _args, _kwargs)
return val
def AddShape(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxPyShapeCanvas_AddShape,(self,) + _args, _kwargs)
return val
def FindShape(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxPyShapeCanvas_FindShape,(self,) + _args, _kwargs)
return val
def FindFirstSensitiveShape(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxPyShapeCanvas_FindFirstSensitiveShape,(self,) + _args, _kwargs)
return val
def GetDiagram(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxPyShapeCanvas_GetDiagram,(self,) + _args, _kwargs)
if val: val = wxDiagramPtr(val)
return val
def GetQuickEditMode(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxPyShapeCanvas_GetQuickEditMode,(self,) + _args, _kwargs)
return val
def InsertShape(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxPyShapeCanvas_InsertShape,(self,) + _args, _kwargs)
return val
def base_OnBeginDragLeft(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxPyShapeCanvas_base_OnBeginDragLeft,(self,) + _args, _kwargs)
return val
def base_OnBeginDragRight(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxPyShapeCanvas_base_OnBeginDragRight,(self,) + _args, _kwargs)
return val
def base_OnEndDragLeft(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxPyShapeCanvas_base_OnEndDragLeft,(self,) + _args, _kwargs)
return val
def base_OnEndDragRight(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxPyShapeCanvas_base_OnEndDragRight,(self,) + _args, _kwargs)
return val
def base_OnDragLeft(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxPyShapeCanvas_base_OnDragLeft,(self,) + _args, _kwargs)
return val
def base_OnDragRight(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxPyShapeCanvas_base_OnDragRight,(self,) + _args, _kwargs)
return val
def base_OnLeftClick(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxPyShapeCanvas_base_OnLeftClick,(self,) + _args, _kwargs)
return val
def base_OnRightClick(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxPyShapeCanvas_base_OnRightClick,(self,) + _args, _kwargs)
return val
def Redraw(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxPyShapeCanvas_Redraw,(self,) + _args, _kwargs)
return val
def RemoveShape(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxPyShapeCanvas_RemoveShape,(self,) + _args, _kwargs)
return val
def SetDiagram(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxPyShapeCanvas_SetDiagram,(self,) + _args, _kwargs)
return val
def Snap(self, *_args, **_kwargs):
val = apply(oglcanvasc.wxPyShapeCanvas_Snap,(self,) + _args, _kwargs)
return val
def __repr__(self):
return "<C wxPyShapeCanvas instance at %s>" % (self.this,)
class wxPyShapeCanvas(wxPyShapeCanvasPtr):
def __init__(self,*_args,**_kwargs):
self.this = apply(oglcanvasc.new_wxPyShapeCanvas,_args,_kwargs)
self.thisown = 1
self._setSelf(self, wxPyShapeCanvas)
#wx._StdWindowCallbacks(self)
#wx._StdOnScrollCallbacks(self)
#-------------- FUNCTION WRAPPERS ------------------
#-------------- VARIABLE WRAPPERS ------------------

View File

@@ -0,0 +1,103 @@
/////////////////////////////////////////////////////////////////////////////
// Name: oglhelpers.cpp
// Purpose: Some Helper functions to help in data conversions in OGL
//
// Author: Robin Dunn
//
// Created: 3-Sept-1999
// RCS-ID: $Id$
// Copyright: (c) 1998 by Total Control Software
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#include <Python.h>
#include "helpers.h"
//---------------------------------------------------------------------------
// This one will work for any class for the VERY generic cases, but beyond that
// the helper needs to know more about the type.
wxList* wxPy_wxListHelper(PyObject* pyList, char* className) {
bool doSave = wxPyRestoreThread();
if (!PyList_Check(pyList)) {
PyErr_SetString(PyExc_TypeError, "Expected a list object.");
wxPySaveThread(doSave);
return NULL;
}
int count = PyList_Size(pyList);
wxList* list = new wxList;
if (! list) {
PyErr_SetString(PyExc_MemoryError, "Unable to allocate wxList object");
wxPySaveThread(doSave);
return NULL;
}
for (int x=0; x<count; x++) {
PyObject* pyo = PyList_GetItem(pyList, x);
wxObject* wxo = NULL;
if (SWIG_GetPtrObj(pyo, (void **)&wxo, className)) {
char errmsg[1024];
sprintf(errmsg, "Type error, expected list of %s objects", className);
PyErr_SetString(PyExc_TypeError, errmsg);
wxPySaveThread(doSave);
return NULL;
}
list->Append(wxo);
}
wxPySaveThread(doSave);
return list;
}
//---------------------------------------------------------------------------
wxList* wxPy_wxRealPoint_ListHelper(PyObject* pyList) {
bool doSave = wxPyRestoreThread();
if (!PyList_Check(pyList)) {
PyErr_SetString(PyExc_TypeError, "Expected a list object.");
wxPySaveThread(doSave);
return NULL;
}
int count = PyList_Size(pyList);
wxList* list = new wxList;
if (! list) {
PyErr_SetString(PyExc_MemoryError, "Unable to allocate wxList object");
wxPySaveThread(doSave);
return NULL;
}
for (int x=0; x<count; x++) {
PyObject* pyo = PyList_GetItem(pyList, x);
if (PyTuple_Check(pyo)) {
PyObject* o1 = PyNumber_Float(PyTuple_GetItem(pyo, 0));
PyObject* o2 = PyNumber_Float(PyTuple_GetItem(pyo, 1));
double val1 = (o1 ? PyFloat_AsDouble(o1) : 0.0);
double val2 = (o2 ? PyFloat_AsDouble(o2) : 0.0);
list->Append((wxObject*) new wxRealPoint(val1, val2));
} else {
wxRealPoint* wxo = NULL;
if (SWIG_GetPtrObj(pyo, (void **)&wxo, "_wxRealPoint_p")) {
PyErr_SetString(PyExc_TypeError, "Type error, expected list of wxRealPoint objects or 2-tuples");
wxPySaveThread(doSave);
return NULL;
}
list->Append((wxObject*) new wxRealPoint(*wxo));
}
}
wxPySaveThread(doSave);
return list;
}
//---------------------------------------------------------------------------

View File

@@ -0,0 +1,262 @@
/////////////////////////////////////////////////////////////////////////////
// Name: oglhelpers.h
// Purpose: Some Helper functions to help in data conversions in OGL
//
// Author: Robin Dunn
//
// Created: 9-Sept-1999
// RCS-ID: $Id$
// Copyright: (c) 1998 by Total Control Software
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#ifndef __wxp_ogl_helpers__
#define __wxp_ogl_helpers__
#include <wx/ogl/ogl.h>
#include <wx/ogl/basicp.h>
#include <wx/ogl/constrnt.h>
#include <wx/ogl/bmpshape.h>
#include <wx/ogl/drawn.h>
//---------------------------------------------------------------------------
// Define a macro that will be used in the class definintions below
#define WXSHAPE_DEC_CALLBACKS() \
DEC_PYCALLBACK__ (OnDelete); \
DEC_PYCALLBACK__DC (OnDraw); \
DEC_PYCALLBACK__DC (OnDrawContents); \
DEC_PYCALLBACK__DCBOOL (OnDrawBranches); \
DEC_PYCALLBACK__DC (OnMoveLinks); \
DEC_PYCALLBACK__DC (OnErase); \
DEC_PYCALLBACK__DC (OnEraseContents); \
DEC_PYCALLBACK__DC (OnHighlight); \
DEC_PYCALLBACK__2DBL2INT (OnLeftClick); \
DEC_PYCALLBACK__2DBL2INT (OnLeftDoubleClick); \
DEC_PYCALLBACK__2DBL2INT (OnRightClick); \
DEC_PYCALLBACK__2DBL (OnSize); \
DEC_PYCALLBACK_BOOL_DC4DBLBOOL (OnMovePre); \
DEC_PYCALLBACK__DC4DBLBOOL (OnMovePost); \
DEC_PYCALLBACK__BOOL2DBL2INT (OnDragLeft); \
DEC_PYCALLBACK__2DBL2INT (OnBeginDragLeft); \
DEC_PYCALLBACK__2DBL2INT (OnEndDragLeft); \
DEC_PYCALLBACK__BOOL2DBL2INT (OnDragRight); \
DEC_PYCALLBACK__2DBL2INT (OnBeginDragRight); \
DEC_PYCALLBACK__2DBL2INT (OnEndDragRight); \
DEC_PYCALLBACK__DC4DBL (OnDrawOutline); \
DEC_PYCALLBACK__DC (OnDrawControlPoints); \
DEC_PYCALLBACK__DC (OnEraseControlPoints); \
DEC_PYCALLBACK__DCBOOL (OnMoveLink); \
DEC_PYCALLBACK__WXCPBOOL2DBL2INT(OnSizingDragLeft); \
DEC_PYCALLBACK__WXCP2DBL2INT (OnSizingBeginDragLeft);\
DEC_PYCALLBACK__WXCP2DBL2INT (OnSizingEndDragLeft); \
DEC_PYCALLBACK__2DBL (OnBeginSize); \
DEC_PYCALLBACK__2DBL (OnEndSize); \
\
PYPRIVATE;
#define WXSHAPE_IMP_CALLBACKS(CLASS, PARENT) \
IMP_PYCALLBACK__ (CLASS, PARENT, OnDelete); \
IMP_PYCALLBACK__DC (CLASS, PARENT, OnDraw); \
IMP_PYCALLBACK__DC (CLASS, PARENT, OnDrawContents); \
IMP_PYCALLBACK__DCBOOL (CLASS, PARENT, OnDrawBranches); \
IMP_PYCALLBACK__DC (CLASS, PARENT, OnMoveLinks); \
IMP_PYCALLBACK__DC (CLASS, PARENT, OnErase); \
IMP_PYCALLBACK__DC (CLASS, PARENT, OnEraseContents); \
IMP_PYCALLBACK__DC (CLASS, PARENT, OnHighlight); \
IMP_PYCALLBACK__2DBL2INT (CLASS, PARENT, OnLeftClick); \
IMP_PYCALLBACK__2DBL2INT (CLASS, PARENT, OnLeftDoubleClick); \
IMP_PYCALLBACK__2DBL2INT (CLASS, PARENT, OnRightClick); \
IMP_PYCALLBACK__2DBL (CLASS, PARENT, OnSize); \
IMP_PYCALLBACK_BOOL_DC4DBLBOOL (CLASS, PARENT, OnMovePre); \
IMP_PYCALLBACK__DC4DBLBOOL (CLASS, PARENT, OnMovePost); \
IMP_PYCALLBACK__BOOL2DBL2INT (CLASS, PARENT, OnDragLeft); \
IMP_PYCALLBACK__2DBL2INT (CLASS, PARENT, OnBeginDragLeft); \
IMP_PYCALLBACK__2DBL2INT (CLASS, PARENT, OnEndDragLeft); \
IMP_PYCALLBACK__BOOL2DBL2INT (CLASS, PARENT, OnDragRight); \
IMP_PYCALLBACK__2DBL2INT (CLASS, PARENT, OnBeginDragRight); \
IMP_PYCALLBACK__2DBL2INT (CLASS, PARENT, OnEndDragRight); \
IMP_PYCALLBACK__DC4DBL (CLASS, PARENT, OnDrawOutline); \
IMP_PYCALLBACK__DC (CLASS, PARENT, OnDrawControlPoints); \
IMP_PYCALLBACK__DC (CLASS, PARENT, OnEraseControlPoints); \
IMP_PYCALLBACK__DCBOOL (CLASS, PARENT, OnMoveLink); \
IMP_PYCALLBACK__WXCPBOOL2DBL2INT(CLASS, PARENT, OnSizingDragLeft); \
IMP_PYCALLBACK__WXCP2DBL2INT (CLASS, PARENT, OnSizingBeginDragLeft);\
IMP_PYCALLBACK__WXCP2DBL2INT (CLASS, PARENT, OnSizingEndDragLeft); \
IMP_PYCALLBACK__2DBL (CLASS, PARENT, OnBeginSize); \
IMP_PYCALLBACK__2DBL (CLASS, PARENT, OnEndSize); \
// This one may be difficult...
//PYCALLBACK__??????? (PARENT, OnChangeAttachment);
//---------------------------------------------------------------------------
// These are prototypes of some helper functions found in oglhelpers.cpp
wxList* wxPy_wxListHelper(PyObject* pyList, char* className);
wxList* wxPy_wxRealPoint_ListHelper(PyObject* pyList);
//---------------------------------------------------------------------------
// Classes that derive from the shapes and such, but which know how to turn
// virtual callbacks into Python callbacks.
class wxPyShapeCanvas : public wxShapeCanvas {
public:
wxPyShapeCanvas(wxWindow* parent = NULL, wxWindowID id = -1,
const wxPoint& pos = wxPyDefaultPosition,
const wxSize& size = wxPyDefaultSize,
long style = wxBORDER)
: wxShapeCanvas(parent, id, pos, size, style) {}
DEC_PYCALLBACK__2DBLINT(OnBeginDragLeft);
DEC_PYCALLBACK__2DBLINT(OnBeginDragRight);
DEC_PYCALLBACK__2DBLINT(OnEndDragLeft);
DEC_PYCALLBACK__2DBLINT(OnEndDragRight);
DEC_PYCALLBACK__BOOL2DBLINT(OnDragLeft);
DEC_PYCALLBACK__BOOL2DBLINT(OnDragRight);
DEC_PYCALLBACK__2DBLINT(OnLeftClick);
DEC_PYCALLBACK__2DBLINT(OnRightClick);
PYPRIVATE;
};
class wxPyShapeEvtHandler : public wxShapeEvtHandler {
public:
wxPyShapeEvtHandler(wxShapeEvtHandler *prev = NULL, wxShape *shape = NULL)
: wxShapeEvtHandler(prev, shape) {}
WXSHAPE_DEC_CALLBACKS();
};
class wxPyShape : public wxShape {
public:
wxPyShape(wxPyShapeCanvas *can = NULL)
: wxShape(can) {}
WXSHAPE_DEC_CALLBACKS();
};
class wxPyRectangleShape : public wxRectangleShape {
public:
wxPyRectangleShape(double width = 0.0, double height = 0.0)
: wxRectangleShape(width, height) {}
WXSHAPE_DEC_CALLBACKS();
};
class wxPyControlPoint : public wxControlPoint {
public:
wxPyControlPoint(wxPyShapeCanvas *the_canvas = NULL,
wxPyShape *object = NULL,
double size = 0.0, double the_xoffset = 0.0,
double the_yoffset = 0.0, int the_type = 0)
: wxControlPoint(the_canvas, object, size,
the_xoffset, the_yoffset, the_type) {}
WXSHAPE_DEC_CALLBACKS();
};
class wxPyBitmapShape : public wxBitmapShape {
public:
wxPyBitmapShape() : wxBitmapShape() {}
WXSHAPE_DEC_CALLBACKS();
};
class wxPyDrawnShape : public wxDrawnShape {
public:
wxPyDrawnShape() : wxDrawnShape() {}
WXSHAPE_DEC_CALLBACKS();
};
class wxPyCompositeShape : public wxCompositeShape {
public:
wxPyCompositeShape() : wxCompositeShape() {}
WXSHAPE_DEC_CALLBACKS();
};
class wxPyDividedShape : public wxDividedShape {
public:
wxPyDividedShape(double width = 0.0, double height = 0.0)
: wxDividedShape(width, height) {}
WXSHAPE_DEC_CALLBACKS();
};
class wxPyDivisionShape : public wxDivisionShape {
public:
wxPyDivisionShape() : wxDivisionShape() {}
WXSHAPE_DEC_CALLBACKS();
};
class wxPyEllipseShape : public wxEllipseShape {
public:
wxPyEllipseShape(double width = 0.0, double height = 0.0)
: wxEllipseShape(width, height) {}
WXSHAPE_DEC_CALLBACKS();
};
class wxPyCircleShape : public wxCircleShape {
public:
wxPyCircleShape(double width = 0.0)
: wxCircleShape(width) {}
WXSHAPE_DEC_CALLBACKS();
};
class wxPyLineShape : public wxLineShape {
public:
wxPyLineShape() : wxLineShape() {}
WXSHAPE_DEC_CALLBACKS();
};
class wxPyPolygonShape : public wxPolygonShape {
public:
wxPyPolygonShape() : wxPolygonShape() {}
WXSHAPE_DEC_CALLBACKS();
};
class wxPyTextShape : public wxTextShape {
public:
wxPyTextShape(double width = 0.0, double height = 0.0)
: wxTextShape(width, height) {}
WXSHAPE_DEC_CALLBACKS();
};
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#endif

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