From a660d684eda27638bca0384b2058911a31c8e845 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Karsten=20Ball=C3=BCder?= Date: Wed, 20 May 1998 14:25:30 +0000 Subject: [PATCH] I've now added the documentation files. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/latex/porting/back.gif | Bin 0 -> 225 bytes docs/latex/porting/books.bmp | Bin 0 -> 1222 bytes docs/latex/porting/books.gif | Bin 0 -> 433 bytes docs/latex/porting/bullet.bmp | Bin 0 -> 198 bytes docs/latex/porting/contents.gif | Bin 0 -> 231 bytes docs/latex/porting/forward.gif | Bin 0 -> 164 bytes docs/latex/porting/porting.hpj | 17 + docs/latex/porting/porting.tex | 390 +++++ docs/latex/porting/tex2rtf.ini | 28 + docs/latex/porting/texhelp.sty | 289 ++++ docs/latex/porting/up.gif | Bin 0 -> 137 bytes docs/latex/wx/activevt.tex | 56 + docs/latex/wx/app.tex | 395 +++++ docs/latex/wx/back.gif | Bin 0 -> 225 bytes docs/latex/wx/bbutton.tex | 223 +++ docs/latex/wx/bitmap.tex | 683 ++++++++ docs/latex/wx/body.tex | 924 ++++++++++ docs/latex/wx/book1.bmp | Bin 0 -> 566 bytes docs/latex/wx/books.bmp | Bin 0 -> 1222 bytes docs/latex/wx/books.gif | Bin 0 -> 438 bytes docs/latex/wx/brush.tex | 343 ++++ docs/latex/wx/bullet.bmp | Bin 0 -> 198 bytes docs/latex/wx/button.tex | 126 ++ docs/latex/wx/category.tex | 334 ++++ docs/latex/wx/checkbox.tex | 96 ++ docs/latex/wx/choice.tex | 193 +++ docs/latex/wx/clasinfo.tex | 76 + docs/latex/wx/classes.tex | 163 ++ docs/latex/wx/clientdc.tex | 31 + docs/latex/wx/clipbrd.tex | 103 ++ docs/latex/wx/closeevt.tex | 57 + docs/latex/wx/cmdevent.tex | 177 ++ docs/latex/wx/cmdproc.tex | 106 ++ docs/latex/wx/colordlg.tex | 48 + docs/latex/wx/colour.tex | 266 +++ docs/latex/wx/combobox.tex | 313 ++++ docs/latex/wx/command.tex | 85 + docs/latex/wx/contents.gif | Bin 0 -> 231 bytes docs/latex/wx/control.tex | 37 + docs/latex/wx/cpp.bmp | Bin 0 -> 630 bytes docs/latex/wx/cursor.tex | 169 ++ docs/latex/wx/database.tex | 272 +++ docs/latex/wx/date.tex | 348 ++++ docs/latex/wx/dc.tex | 696 ++++++++ docs/latex/wx/ddeclint.tex | 67 + docs/latex/wx/ddeconn.tex | 166 ++ docs/latex/wx/ddeservr.tex | 45 + docs/latex/wx/debugcxt.tex | 251 +++ docs/latex/wx/dialog.tex | 310 ++++ docs/latex/wx/dirdlg.tex | 86 + docs/latex/wx/docchfrm.tex | 88 + docs/latex/wx/docmanag.tex | 335 ++++ docs/latex/wx/docprfrm.tex | 78 + docs/latex/wx/doctempl.tex | 233 +++ docs/latex/wx/document.tex | 327 ++++ docs/latex/wx/dropevt.tex | 72 + docs/latex/wx/eraseevt.tex | 48 + docs/latex/wx/event.tex | 141 ++ docs/latex/wx/evthand.tex | 269 +++ docs/latex/wx/expr.tex | 505 ++++++ docs/latex/wx/file.tex | 169 ++ docs/latex/wx/filedlg.tex | 179 ++ docs/latex/wx/filehist.tex | 93 + docs/latex/wx/focusevt.tex | 34 + docs/latex/wx/font.tex | 277 +++ docs/latex/wx/fontdlg.tex | 187 +++ docs/latex/wx/fontlist.tex | 48 + docs/latex/wx/forward.gif | Bin 0 -> 164 bytes docs/latex/wx/frame.tex | 445 +++++ docs/latex/wx/function.tex | 1665 ++++++++++++++++++ docs/latex/wx/gauge.tex | 178 ++ docs/latex/wx/gdiobj.tex | 26 + docs/latex/wx/grid.tex | 517 ++++++ docs/latex/wx/grid1.bmp | Bin 0 -> 68518 bytes docs/latex/wx/grid1.eps | 771 +++++++++ docs/latex/wx/grid1.gif | Bin 0 -> 4801 bytes docs/latex/wx/hand1.bmp | Bin 0 -> 454 bytes docs/latex/wx/hash.tex | 118 ++ docs/latex/wx/hellow.bmp | Bin 0 -> 55918 bytes docs/latex/wx/hellow.gif | Bin 0 -> 8689 bytes docs/latex/wx/hellox.bmp | Bin 0 -> 64118 bytes docs/latex/wx/hellox.gif | Bin 0 -> 8928 bytes docs/latex/wx/helpinst.tex | 130 ++ docs/latex/wx/icon.tex | 397 +++++ docs/latex/wx/idleevt.tex | 59 + docs/latex/wx/ilayout.tex | 133 ++ docs/latex/wx/imaglist.tex | 160 ++ docs/latex/wx/indlgevt.tex | 34 + docs/latex/wx/keyevent.tex | 197 +++ docs/latex/wx/layout.tex | 94 ++ docs/latex/wx/list.tex | 217 +++ docs/latex/wx/listbox.tex | 346 ++++ docs/latex/wx/listctrl.tex | 511 ++++++ docs/latex/wx/listevt.tex | 87 + docs/latex/wx/manual.tex | 124 ++ docs/latex/wx/mask.tex | 76 + docs/latex/wx/mdi.tex | 515 ++++++ docs/latex/wx/memorydc.tex | 57 + docs/latex/wx/menu.tex | 611 +++++++ docs/latex/wx/menuevt.tex | 53 + docs/latex/wx/menuitem.tex | 186 ++ docs/latex/wx/metafile.tex | 125 ++ docs/latex/wx/minifram.tex | 108 ++ docs/latex/wx/mltchdlg.tex | 21 + docs/latex/wx/module.tex | 85 + docs/latex/wx/mouseevt.tex | 327 ++++ docs/latex/wx/moveevt.tex | 38 + docs/latex/wx/msgdlg.tex | 63 + docs/latex/wx/node.tex | 41 + docs/latex/wx/object.tex | 213 +++ docs/latex/wx/pagedlg.tex | 242 +++ docs/latex/wx/paintdc.tex | 31 + docs/latex/wx/paintevt.tex | 31 + docs/latex/wx/palette.tex | 164 ++ docs/latex/wx/panel.tex | 118 ++ docs/latex/wx/pantabv.tex | 69 + docs/latex/wx/pathlist.tex | 75 + docs/latex/wx/pen.tex | 380 +++++ docs/latex/wx/plug.bmp | Bin 0 -> 2102 bytes docs/latex/wx/point.tex | 37 + docs/latex/wx/postscpt.tex | 34 + docs/latex/wx/prevwin.tex | 177 ++ docs/latex/wx/print.tex | 650 +++++++ docs/latex/wx/psbox.tex | 520 ++++++ docs/latex/wx/query.tex | 206 +++ docs/latex/wx/radiobox.tex | 218 +++ docs/latex/wx/radiobut.tex | 95 ++ docs/latex/wx/realpoin.tex | 31 + docs/latex/wx/recrdset.tex | 599 +++++++ docs/latex/wx/rect.tex | 159 ++ docs/latex/wx/referenc.tex | 73 + docs/latex/wx/refs.bib | 59 + docs/latex/wx/region.tex | 182 ++ docs/latex/wx/screendc.tex | 55 + docs/latex/wx/scrolbar.tex | 295 ++++ docs/latex/wx/scrolevt.tex | 71 + docs/latex/wx/scrolwin.tex | 337 ++++ docs/latex/wx/settings.tex | 141 ++ docs/latex/wx/shelves.bmp | Bin 0 -> 630 bytes docs/latex/wx/size.tex | 60 + docs/latex/wx/sizeevt.tex | 37 + docs/latex/wx/slider.tex | 352 ++++ docs/latex/wx/sngchdlg.tex | 94 ++ docs/latex/wx/spinbutt.tex | 164 ++ docs/latex/wx/splitter.bmp | Bin 0 -> 56518 bytes docs/latex/wx/splitter.eps | 301 ++++ docs/latex/wx/splitter.gif | Bin 0 -> 5093 bytes docs/latex/wx/splitter.tex | 340 ++++ docs/latex/wx/statbmp.tex | 92 + docs/latex/wx/statbox.tex | 72 + docs/latex/wx/stattext.tex | 84 + docs/latex/wx/statusbr.tex | 241 +++ docs/latex/wx/strlist.tex | 68 + docs/latex/wx/sysclevt.tex | 40 + docs/latex/wx/t2rtf32.ini | 21 + docs/latex/wx/tab.tex | 568 +++++++ docs/latex/wx/tabctrl.tex | 95 ++ docs/latex/wx/tapp.tex | 56 + docs/latex/wx/taskbar.tex | 90 + docs/latex/wx/tbitmap.tex | 85 + docs/latex/wx/tcommdlg.tex | 212 +++ docs/latex/wx/tconstr.tex | 160 ++ docs/latex/wx/tdb.tex | 240 +++ docs/latex/wx/tdc.tex | 42 + docs/latex/wx/tdebug.tex | 104 ++ docs/latex/wx/tdelwin.tex | 130 ++ docs/latex/wx/tdialog.tex | 31 + docs/latex/wx/tdocview.tex | 318 ++++ docs/latex/wx/tevent.tex | 188 +++ docs/latex/wx/tex2rtf.ini | 28 + docs/latex/wx/texhelp.sty | 292 ++++ docs/latex/wx/texpr.tex | 203 +++ docs/latex/wx/text.tex | 427 +++++ docs/latex/wx/textdlg.tex | 64 + docs/latex/wx/tfont.tex | 36 + docs/latex/wx/tgrid.tex | 40 + docs/latex/wx/tguide.tex | 56 + docs/latex/wx/timaglst.tex | 6 + docs/latex/wx/time.tex | 17 + docs/latex/wx/timer.tex | 59 + docs/latex/wx/tipc.tex | 177 ++ docs/latex/wx/tlistctl.tex | 6 + docs/latex/wx/toolbar.tex | 770 +++++++++ docs/latex/wx/topics.tex | 37 + docs/latex/wx/tprint.tex | 59 + docs/latex/wx/treectrl.tex | 387 +++++ docs/latex/wx/treeevt.tex | 67 + docs/latex/wx/tresourc.tex | 337 ++++ docs/latex/wx/truntime.tex | 93 + docs/latex/wx/tscroll.tex | 90 + docs/latex/wx/tsplittr.tex | 65 + docs/latex/wx/tstring.tex | 1079 ++++++++++++ docs/latex/wx/tstyles.tex | 14 + docs/latex/wx/ttab.tex | 219 +++ docs/latex/wx/ttoolbar.tex | 128 ++ docs/latex/wx/ttreectl.tex | 6 + docs/latex/wx/tusage.tex | 22 + docs/latex/wx/tvalidat.tex | 116 ++ docs/latex/wx/up.gif | Bin 0 -> 137 bytes docs/latex/wx/upditer.tex | 57 + docs/latex/wx/upduievt.tex | 141 ++ docs/latex/wx/validatr.tex | 90 + docs/latex/wx/valtext.tex | 125 ++ docs/latex/wx/view.tex | 178 ++ docs/latex/wx/window.tex | 1917 +++++++++++++++++++++ docs/latex/wx/windowdc.tex | 33 + docs/latex/wx/wx.cnt | 2710 ++++++++++++++++++++++++++++++ docs/latex/wx/wx.hpj | 17 + docs/latex/wx/wxstring.tex | 593 +++++++ docs/latex/wx/wxtab1.bmp | Bin 0 -> 73718 bytes docs/latex/wx/wxtab1.eps | 1086 ++++++++++++ docs/latex/wx/wxtab1.gif | Bin 0 -> 5890 bytes utils/dialoged/docs/alignb.bmp | Bin 0 -> 238 bytes utils/dialoged/docs/alignb.eps | 161 ++ utils/dialoged/docs/alignb.gif | Bin 0 -> 132 bytes utils/dialoged/docs/alignl.bmp | Bin 0 -> 238 bytes utils/dialoged/docs/alignl.eps | 161 ++ utils/dialoged/docs/alignl.gif | Bin 0 -> 124 bytes utils/dialoged/docs/alignr.bmp | Bin 0 -> 238 bytes utils/dialoged/docs/alignr.eps | 161 ++ utils/dialoged/docs/alignr.gif | Bin 0 -> 126 bytes utils/dialoged/docs/alignt.bmp | Bin 0 -> 238 bytes utils/dialoged/docs/alignt.eps | 161 ++ utils/dialoged/docs/alignt.gif | Bin 0 -> 131 bytes utils/dialoged/docs/arrow.bmp | Bin 0 -> 566 bytes utils/dialoged/docs/arrow.eps | 174 ++ utils/dialoged/docs/arrow.gif | Bin 0 -> 193 bytes utils/dialoged/docs/back.gif | Bin 0 -> 225 bytes utils/dialoged/docs/bmpbuttn.bmp | Bin 0 -> 566 bytes utils/dialoged/docs/bmpbuttn.eps | 174 ++ utils/dialoged/docs/bmpbuttn.gif | Bin 0 -> 216 bytes utils/dialoged/docs/body.tex | 197 +++ utils/dialoged/docs/books.bmp | Bin 0 -> 1222 bytes utils/dialoged/docs/books.gif | Bin 0 -> 438 bytes utils/dialoged/docs/bugs.tex | 15 + utils/dialoged/docs/bullet.bmp | Bin 0 -> 138 bytes utils/dialoged/docs/button.bmp | Bin 0 -> 566 bytes utils/dialoged/docs/button.eps | 174 ++ utils/dialoged/docs/button.gif | Bin 0 -> 201 bytes utils/dialoged/docs/changes.tex | 63 + utils/dialoged/docs/check.bmp | Bin 0 -> 566 bytes utils/dialoged/docs/check.eps | 174 ++ utils/dialoged/docs/check.gif | Bin 0 -> 215 bytes utils/dialoged/docs/choice.bmp | Bin 0 -> 566 bytes utils/dialoged/docs/choice.eps | 174 ++ utils/dialoged/docs/choice.gif | Bin 0 -> 217 bytes utils/dialoged/docs/classes.tex | 1759 +++++++++++++++++++ utils/dialoged/docs/contents.gif | Bin 0 -> 231 bytes utils/dialoged/docs/copysize.bmp | Bin 0 -> 238 bytes utils/dialoged/docs/copysize.eps | 161 ++ utils/dialoged/docs/copysize.gif | Bin 0 -> 132 bytes utils/dialoged/docs/dialog.bmp | Bin 0 -> 566 bytes utils/dialoged/docs/dialog.eps | 174 ++ utils/dialoged/docs/dialog.gif | Bin 0 -> 233 bytes utils/dialoged/docs/dialoged.hpj | 17 + utils/dialoged/docs/dialoged.tex | 61 + utils/dialoged/docs/forward.gif | Bin 0 -> 164 bytes utils/dialoged/docs/gauge.bmp | Bin 0 -> 566 bytes utils/dialoged/docs/gauge.eps | 174 ++ utils/dialoged/docs/gauge.gif | Bin 0 -> 212 bytes utils/dialoged/docs/group.bmp | Bin 0 -> 566 bytes utils/dialoged/docs/group.eps | 174 ++ utils/dialoged/docs/group.gif | Bin 0 -> 212 bytes utils/dialoged/docs/help.bmp | Bin 0 -> 238 bytes utils/dialoged/docs/help.eps | 161 ++ utils/dialoged/docs/help.gif | Bin 0 -> 129 bytes utils/dialoged/docs/horiz.bmp | Bin 0 -> 238 bytes utils/dialoged/docs/horiz.eps | 161 ++ utils/dialoged/docs/horiz.gif | Bin 0 -> 126 bytes utils/dialoged/docs/listbox.bmp | Bin 0 -> 566 bytes utils/dialoged/docs/listbox.eps | 174 ++ utils/dialoged/docs/listbox.gif | Bin 0 -> 213 bytes utils/dialoged/docs/load.bmp | Bin 0 -> 238 bytes utils/dialoged/docs/load.eps | 161 ++ utils/dialoged/docs/load.gif | Bin 0 -> 139 bytes utils/dialoged/docs/message.bmp | Bin 0 -> 566 bytes utils/dialoged/docs/message.eps | 174 ++ utils/dialoged/docs/message.gif | Bin 0 -> 208 bytes utils/dialoged/docs/mtext.bmp | Bin 0 -> 566 bytes utils/dialoged/docs/mtext.eps | 174 ++ utils/dialoged/docs/mtext.gif | Bin 0 -> 229 bytes utils/dialoged/docs/new.bmp | Bin 0 -> 238 bytes utils/dialoged/docs/new.eps | 161 ++ utils/dialoged/docs/new.gif | Bin 0 -> 131 bytes utils/dialoged/docs/notes.txt | 16 + utils/dialoged/docs/open.bmp | Bin 0 -> 238 bytes utils/dialoged/docs/open.eps | 161 ++ utils/dialoged/docs/open.gif | Bin 0 -> 137 bytes utils/dialoged/docs/picture.bmp | Bin 0 -> 566 bytes utils/dialoged/docs/picture.eps | 176 ++ utils/dialoged/docs/picture.gif | Bin 0 -> 224 bytes utils/dialoged/docs/radio.bmp | Bin 0 -> 566 bytes utils/dialoged/docs/radio.eps | 174 ++ utils/dialoged/docs/radio.gif | Bin 0 -> 215 bytes utils/dialoged/docs/readme.txt | 39 + utils/dialoged/docs/save.bmp | Bin 0 -> 238 bytes utils/dialoged/docs/save.eps | 161 ++ utils/dialoged/docs/save.gif | Bin 0 -> 137 bytes utils/dialoged/docs/scroll.bmp | Bin 0 -> 566 bytes utils/dialoged/docs/scroll.eps | 174 ++ utils/dialoged/docs/scroll.gif | Bin 0 -> 212 bytes utils/dialoged/docs/slider.bmp | Bin 0 -> 566 bytes utils/dialoged/docs/slider.eps | 174 ++ utils/dialoged/docs/slider.gif | Bin 0 -> 204 bytes utils/dialoged/docs/tech.tex | 97 ++ utils/dialoged/docs/tex2rtf.ini | 21 + utils/dialoged/docs/text.bmp | Bin 0 -> 566 bytes utils/dialoged/docs/text.eps | 178 ++ utils/dialoged/docs/text.gif | Bin 0 -> 226 bytes utils/dialoged/docs/toback.bmp | Bin 0 -> 238 bytes utils/dialoged/docs/toback.eps | 161 ++ utils/dialoged/docs/toback.gif | Bin 0 -> 137 bytes utils/dialoged/docs/tofront.bmp | Bin 0 -> 238 bytes utils/dialoged/docs/tofront.eps | 161 ++ utils/dialoged/docs/tofront.gif | Bin 0 -> 137 bytes utils/dialoged/docs/up.gif | Bin 0 -> 137 bytes utils/dialoged/docs/vert.bmp | Bin 0 -> 238 bytes utils/dialoged/docs/vert.eps | 161 ++ utils/dialoged/docs/vert.gif | Bin 0 -> 131 bytes utils/wxprop/docs/back.gif | Bin 0 -> 225 bytes utils/wxprop/docs/body.tex | 106 ++ utils/wxprop/docs/books.bmp | Bin 0 -> 1222 bytes utils/wxprop/docs/books.gif | Bin 0 -> 438 bytes utils/wxprop/docs/bullet.bmp | Bin 0 -> 138 bytes utils/wxprop/docs/changes.tex | 22 + utils/wxprop/docs/classes.tex | 1756 +++++++++++++++++++ utils/wxprop/docs/contents.gif | Bin 0 -> 231 bytes utils/wxprop/docs/forward.gif | Bin 0 -> 164 bytes utils/wxprop/docs/prop.hpj | 17 + utils/wxprop/docs/prop.tex | 55 + utils/wxprop/docs/prop1.bmp | Bin 0 -> 29238 bytes utils/wxprop/docs/prop1.eps | 539 ++++++ utils/wxprop/docs/prop1.gif | Bin 0 -> 3042 bytes utils/wxprop/docs/prop2.bmp | Bin 0 -> 42526 bytes utils/wxprop/docs/prop2.eps | 664 ++++++++ utils/wxprop/docs/prop2.gif | Bin 0 -> 4296 bytes utils/wxprop/docs/readme.txt | 39 + utils/wxprop/docs/tex2rtf.ini | 21 + utils/wxprop/docs/up.gif | Bin 0 -> 137 bytes utils/wxprop/docs/wxprop.hpj | 17 + 340 files changed, 51526 insertions(+) create mode 100644 docs/latex/porting/back.gif create mode 100644 docs/latex/porting/books.bmp create mode 100644 docs/latex/porting/books.gif create mode 100644 docs/latex/porting/bullet.bmp create mode 100644 docs/latex/porting/contents.gif create mode 100644 docs/latex/porting/forward.gif create mode 100644 docs/latex/porting/porting.hpj create mode 100644 docs/latex/porting/porting.tex create mode 100644 docs/latex/porting/tex2rtf.ini create mode 100644 docs/latex/porting/texhelp.sty create mode 100644 docs/latex/porting/up.gif create mode 100644 docs/latex/wx/activevt.tex create mode 100644 docs/latex/wx/app.tex create mode 100644 docs/latex/wx/back.gif create mode 100644 docs/latex/wx/bbutton.tex create mode 100644 docs/latex/wx/bitmap.tex create mode 100644 docs/latex/wx/body.tex create mode 100644 docs/latex/wx/book1.bmp create mode 100644 docs/latex/wx/books.bmp create mode 100644 docs/latex/wx/books.gif create mode 100644 docs/latex/wx/brush.tex create mode 100644 docs/latex/wx/bullet.bmp create mode 100644 docs/latex/wx/button.tex create mode 100644 docs/latex/wx/category.tex create mode 100644 docs/latex/wx/checkbox.tex create mode 100644 docs/latex/wx/choice.tex create mode 100644 docs/latex/wx/clasinfo.tex create mode 100644 docs/latex/wx/classes.tex create mode 100644 docs/latex/wx/clientdc.tex create mode 100644 docs/latex/wx/clipbrd.tex create mode 100644 docs/latex/wx/closeevt.tex create mode 100644 docs/latex/wx/cmdevent.tex create mode 100644 docs/latex/wx/cmdproc.tex create mode 100644 docs/latex/wx/colordlg.tex create mode 100644 docs/latex/wx/colour.tex create mode 100644 docs/latex/wx/combobox.tex create mode 100644 docs/latex/wx/command.tex create mode 100644 docs/latex/wx/contents.gif create mode 100644 docs/latex/wx/control.tex create mode 100644 docs/latex/wx/cpp.bmp create mode 100644 docs/latex/wx/cursor.tex create mode 100644 docs/latex/wx/database.tex create mode 100644 docs/latex/wx/date.tex create mode 100644 docs/latex/wx/dc.tex create mode 100644 docs/latex/wx/ddeclint.tex create mode 100644 docs/latex/wx/ddeconn.tex create mode 100644 docs/latex/wx/ddeservr.tex create mode 100644 docs/latex/wx/debugcxt.tex create mode 100644 docs/latex/wx/dialog.tex create mode 100644 docs/latex/wx/dirdlg.tex create mode 100644 docs/latex/wx/docchfrm.tex create mode 100644 docs/latex/wx/docmanag.tex create mode 100644 docs/latex/wx/docprfrm.tex create mode 100644 docs/latex/wx/doctempl.tex create mode 100644 docs/latex/wx/document.tex create mode 100644 docs/latex/wx/dropevt.tex create mode 100644 docs/latex/wx/eraseevt.tex create mode 100644 docs/latex/wx/event.tex create mode 100644 docs/latex/wx/evthand.tex create mode 100644 docs/latex/wx/expr.tex create mode 100644 docs/latex/wx/file.tex create mode 100644 docs/latex/wx/filedlg.tex create mode 100644 docs/latex/wx/filehist.tex create mode 100644 docs/latex/wx/focusevt.tex create mode 100644 docs/latex/wx/font.tex create mode 100644 docs/latex/wx/fontdlg.tex create mode 100644 docs/latex/wx/fontlist.tex create mode 100644 docs/latex/wx/forward.gif create mode 100644 docs/latex/wx/frame.tex create mode 100644 docs/latex/wx/function.tex create mode 100644 docs/latex/wx/gauge.tex create mode 100644 docs/latex/wx/gdiobj.tex create mode 100644 docs/latex/wx/grid.tex create mode 100644 docs/latex/wx/grid1.bmp create mode 100644 docs/latex/wx/grid1.eps create mode 100644 docs/latex/wx/grid1.gif create mode 100644 docs/latex/wx/hand1.bmp create mode 100644 docs/latex/wx/hash.tex create mode 100644 docs/latex/wx/hellow.bmp create mode 100644 docs/latex/wx/hellow.gif create mode 100644 docs/latex/wx/hellox.bmp create mode 100644 docs/latex/wx/hellox.gif create mode 100644 docs/latex/wx/helpinst.tex create mode 100644 docs/latex/wx/icon.tex create mode 100644 docs/latex/wx/idleevt.tex create mode 100644 docs/latex/wx/ilayout.tex create mode 100644 docs/latex/wx/imaglist.tex create mode 100644 docs/latex/wx/indlgevt.tex create mode 100644 docs/latex/wx/keyevent.tex create mode 100644 docs/latex/wx/layout.tex create mode 100644 docs/latex/wx/list.tex create mode 100644 docs/latex/wx/listbox.tex create mode 100644 docs/latex/wx/listctrl.tex create mode 100644 docs/latex/wx/listevt.tex create mode 100644 docs/latex/wx/manual.tex create mode 100644 docs/latex/wx/mask.tex create mode 100644 docs/latex/wx/mdi.tex create mode 100644 docs/latex/wx/memorydc.tex create mode 100644 docs/latex/wx/menu.tex create mode 100644 docs/latex/wx/menuevt.tex create mode 100644 docs/latex/wx/menuitem.tex create mode 100644 docs/latex/wx/metafile.tex create mode 100644 docs/latex/wx/minifram.tex create mode 100644 docs/latex/wx/mltchdlg.tex create mode 100644 docs/latex/wx/module.tex create mode 100644 docs/latex/wx/mouseevt.tex create mode 100644 docs/latex/wx/moveevt.tex create mode 100644 docs/latex/wx/msgdlg.tex create mode 100644 docs/latex/wx/node.tex create mode 100644 docs/latex/wx/object.tex create mode 100644 docs/latex/wx/pagedlg.tex create mode 100644 docs/latex/wx/paintdc.tex create mode 100644 docs/latex/wx/paintevt.tex create mode 100644 docs/latex/wx/palette.tex create mode 100644 docs/latex/wx/panel.tex create mode 100644 docs/latex/wx/pantabv.tex create mode 100644 docs/latex/wx/pathlist.tex create mode 100644 docs/latex/wx/pen.tex create mode 100644 docs/latex/wx/plug.bmp create mode 100644 docs/latex/wx/point.tex create mode 100644 docs/latex/wx/postscpt.tex create mode 100644 docs/latex/wx/prevwin.tex create mode 100644 docs/latex/wx/print.tex create mode 100644 docs/latex/wx/psbox.tex create mode 100644 docs/latex/wx/query.tex create mode 100644 docs/latex/wx/radiobox.tex create mode 100644 docs/latex/wx/radiobut.tex create mode 100644 docs/latex/wx/realpoin.tex create mode 100644 docs/latex/wx/recrdset.tex create mode 100644 docs/latex/wx/rect.tex create mode 100644 docs/latex/wx/referenc.tex create mode 100644 docs/latex/wx/refs.bib create mode 100644 docs/latex/wx/region.tex create mode 100644 docs/latex/wx/screendc.tex create mode 100644 docs/latex/wx/scrolbar.tex create mode 100644 docs/latex/wx/scrolevt.tex create mode 100644 docs/latex/wx/scrolwin.tex create mode 100644 docs/latex/wx/settings.tex create mode 100644 docs/latex/wx/shelves.bmp create mode 100644 docs/latex/wx/size.tex create mode 100644 docs/latex/wx/sizeevt.tex create mode 100644 docs/latex/wx/slider.tex create mode 100644 docs/latex/wx/sngchdlg.tex create mode 100644 docs/latex/wx/spinbutt.tex create mode 100644 docs/latex/wx/splitter.bmp create mode 100644 docs/latex/wx/splitter.eps create mode 100644 docs/latex/wx/splitter.gif create mode 100644 docs/latex/wx/splitter.tex create mode 100644 docs/latex/wx/statbmp.tex create mode 100644 docs/latex/wx/statbox.tex create mode 100644 docs/latex/wx/stattext.tex create mode 100644 docs/latex/wx/statusbr.tex create mode 100644 docs/latex/wx/strlist.tex create mode 100644 docs/latex/wx/sysclevt.tex create mode 100644 docs/latex/wx/t2rtf32.ini create mode 100644 docs/latex/wx/tab.tex create mode 100644 docs/latex/wx/tabctrl.tex create mode 100644 docs/latex/wx/tapp.tex create mode 100644 docs/latex/wx/taskbar.tex create mode 100644 docs/latex/wx/tbitmap.tex create mode 100644 docs/latex/wx/tcommdlg.tex create mode 100644 docs/latex/wx/tconstr.tex create mode 100644 docs/latex/wx/tdb.tex create mode 100644 docs/latex/wx/tdc.tex create mode 100644 docs/latex/wx/tdebug.tex create mode 100644 docs/latex/wx/tdelwin.tex create mode 100644 docs/latex/wx/tdialog.tex create mode 100644 docs/latex/wx/tdocview.tex create mode 100644 docs/latex/wx/tevent.tex create mode 100644 docs/latex/wx/tex2rtf.ini create mode 100644 docs/latex/wx/texhelp.sty create mode 100644 docs/latex/wx/texpr.tex create mode 100644 docs/latex/wx/text.tex create mode 100644 docs/latex/wx/textdlg.tex create mode 100644 docs/latex/wx/tfont.tex create mode 100644 docs/latex/wx/tgrid.tex create mode 100644 docs/latex/wx/tguide.tex create mode 100644 docs/latex/wx/timaglst.tex create mode 100644 docs/latex/wx/time.tex create mode 100644 docs/latex/wx/timer.tex create mode 100644 docs/latex/wx/tipc.tex create mode 100644 docs/latex/wx/tlistctl.tex create mode 100644 docs/latex/wx/toolbar.tex create mode 100644 docs/latex/wx/topics.tex create mode 100644 docs/latex/wx/tprint.tex create mode 100644 docs/latex/wx/treectrl.tex create mode 100644 docs/latex/wx/treeevt.tex create mode 100644 docs/latex/wx/tresourc.tex create mode 100644 docs/latex/wx/truntime.tex create mode 100644 docs/latex/wx/tscroll.tex create mode 100644 docs/latex/wx/tsplittr.tex create mode 100644 docs/latex/wx/tstring.tex create mode 100644 docs/latex/wx/tstyles.tex create mode 100644 docs/latex/wx/ttab.tex create mode 100644 docs/latex/wx/ttoolbar.tex create mode 100644 docs/latex/wx/ttreectl.tex create mode 100644 docs/latex/wx/tusage.tex create mode 100644 docs/latex/wx/tvalidat.tex create mode 100644 docs/latex/wx/up.gif create mode 100644 docs/latex/wx/upditer.tex create mode 100644 docs/latex/wx/upduievt.tex create mode 100644 docs/latex/wx/validatr.tex create mode 100644 docs/latex/wx/valtext.tex create mode 100644 docs/latex/wx/view.tex create mode 100644 docs/latex/wx/window.tex create mode 100644 docs/latex/wx/windowdc.tex create mode 100644 docs/latex/wx/wx.cnt create mode 100644 docs/latex/wx/wx.hpj create mode 100644 docs/latex/wx/wxstring.tex create mode 100644 docs/latex/wx/wxtab1.bmp create mode 100644 docs/latex/wx/wxtab1.eps create mode 100644 docs/latex/wx/wxtab1.gif create mode 100644 utils/dialoged/docs/alignb.bmp create mode 100644 utils/dialoged/docs/alignb.eps create mode 100644 utils/dialoged/docs/alignb.gif create mode 100644 utils/dialoged/docs/alignl.bmp create mode 100644 utils/dialoged/docs/alignl.eps create mode 100644 utils/dialoged/docs/alignl.gif create mode 100644 utils/dialoged/docs/alignr.bmp create mode 100644 utils/dialoged/docs/alignr.eps create mode 100644 utils/dialoged/docs/alignr.gif create mode 100644 utils/dialoged/docs/alignt.bmp create mode 100644 utils/dialoged/docs/alignt.eps create mode 100644 utils/dialoged/docs/alignt.gif create mode 100644 utils/dialoged/docs/arrow.bmp create mode 100644 utils/dialoged/docs/arrow.eps create mode 100644 utils/dialoged/docs/arrow.gif create mode 100644 utils/dialoged/docs/back.gif create mode 100644 utils/dialoged/docs/bmpbuttn.bmp create mode 100644 utils/dialoged/docs/bmpbuttn.eps create mode 100644 utils/dialoged/docs/bmpbuttn.gif create mode 100644 utils/dialoged/docs/body.tex create mode 100644 utils/dialoged/docs/books.bmp create mode 100644 utils/dialoged/docs/books.gif create mode 100644 utils/dialoged/docs/bugs.tex create mode 100644 utils/dialoged/docs/bullet.bmp create mode 100644 utils/dialoged/docs/button.bmp create mode 100644 utils/dialoged/docs/button.eps create mode 100644 utils/dialoged/docs/button.gif create mode 100644 utils/dialoged/docs/changes.tex create mode 100644 utils/dialoged/docs/check.bmp create mode 100644 utils/dialoged/docs/check.eps create mode 100644 utils/dialoged/docs/check.gif create mode 100644 utils/dialoged/docs/choice.bmp create mode 100644 utils/dialoged/docs/choice.eps create mode 100644 utils/dialoged/docs/choice.gif create mode 100644 utils/dialoged/docs/classes.tex create mode 100644 utils/dialoged/docs/contents.gif create mode 100644 utils/dialoged/docs/copysize.bmp create mode 100644 utils/dialoged/docs/copysize.eps create mode 100644 utils/dialoged/docs/copysize.gif create mode 100644 utils/dialoged/docs/dialog.bmp create mode 100644 utils/dialoged/docs/dialog.eps create mode 100644 utils/dialoged/docs/dialog.gif create mode 100644 utils/dialoged/docs/dialoged.hpj create mode 100644 utils/dialoged/docs/dialoged.tex create mode 100644 utils/dialoged/docs/forward.gif create mode 100644 utils/dialoged/docs/gauge.bmp create mode 100644 utils/dialoged/docs/gauge.eps create mode 100644 utils/dialoged/docs/gauge.gif create mode 100644 utils/dialoged/docs/group.bmp create mode 100644 utils/dialoged/docs/group.eps create mode 100644 utils/dialoged/docs/group.gif create mode 100644 utils/dialoged/docs/help.bmp create mode 100644 utils/dialoged/docs/help.eps create mode 100644 utils/dialoged/docs/help.gif create mode 100644 utils/dialoged/docs/horiz.bmp create mode 100644 utils/dialoged/docs/horiz.eps create mode 100644 utils/dialoged/docs/horiz.gif create mode 100644 utils/dialoged/docs/listbox.bmp create mode 100644 utils/dialoged/docs/listbox.eps create mode 100644 utils/dialoged/docs/listbox.gif create mode 100644 utils/dialoged/docs/load.bmp create mode 100644 utils/dialoged/docs/load.eps create mode 100644 utils/dialoged/docs/load.gif create mode 100644 utils/dialoged/docs/message.bmp create mode 100644 utils/dialoged/docs/message.eps create mode 100644 utils/dialoged/docs/message.gif create mode 100644 utils/dialoged/docs/mtext.bmp create mode 100644 utils/dialoged/docs/mtext.eps create mode 100644 utils/dialoged/docs/mtext.gif create mode 100644 utils/dialoged/docs/new.bmp create mode 100644 utils/dialoged/docs/new.eps create mode 100644 utils/dialoged/docs/new.gif create mode 100644 utils/dialoged/docs/notes.txt create mode 100644 utils/dialoged/docs/open.bmp create mode 100644 utils/dialoged/docs/open.eps create mode 100644 utils/dialoged/docs/open.gif create mode 100644 utils/dialoged/docs/picture.bmp create mode 100644 utils/dialoged/docs/picture.eps create mode 100644 utils/dialoged/docs/picture.gif create mode 100644 utils/dialoged/docs/radio.bmp create mode 100644 utils/dialoged/docs/radio.eps create mode 100644 utils/dialoged/docs/radio.gif create mode 100644 utils/dialoged/docs/readme.txt create mode 100644 utils/dialoged/docs/save.bmp create mode 100644 utils/dialoged/docs/save.eps create mode 100644 utils/dialoged/docs/save.gif create mode 100644 utils/dialoged/docs/scroll.bmp create mode 100644 utils/dialoged/docs/scroll.eps create mode 100644 utils/dialoged/docs/scroll.gif create mode 100644 utils/dialoged/docs/slider.bmp create mode 100644 utils/dialoged/docs/slider.eps create mode 100644 utils/dialoged/docs/slider.gif create mode 100644 utils/dialoged/docs/tech.tex create mode 100644 utils/dialoged/docs/tex2rtf.ini create mode 100644 utils/dialoged/docs/text.bmp create mode 100644 utils/dialoged/docs/text.eps create mode 100644 utils/dialoged/docs/text.gif create mode 100644 utils/dialoged/docs/toback.bmp create mode 100644 utils/dialoged/docs/toback.eps create mode 100644 utils/dialoged/docs/toback.gif create mode 100644 utils/dialoged/docs/tofront.bmp create mode 100644 utils/dialoged/docs/tofront.eps create mode 100644 utils/dialoged/docs/tofront.gif create mode 100644 utils/dialoged/docs/up.gif create mode 100644 utils/dialoged/docs/vert.bmp create mode 100644 utils/dialoged/docs/vert.eps create mode 100644 utils/dialoged/docs/vert.gif create mode 100644 utils/wxprop/docs/back.gif create mode 100644 utils/wxprop/docs/body.tex create mode 100644 utils/wxprop/docs/books.bmp create mode 100644 utils/wxprop/docs/books.gif create mode 100644 utils/wxprop/docs/bullet.bmp create mode 100644 utils/wxprop/docs/changes.tex create mode 100644 utils/wxprop/docs/classes.tex create mode 100644 utils/wxprop/docs/contents.gif create mode 100644 utils/wxprop/docs/forward.gif create mode 100644 utils/wxprop/docs/prop.hpj create mode 100644 utils/wxprop/docs/prop.tex create mode 100644 utils/wxprop/docs/prop1.bmp create mode 100644 utils/wxprop/docs/prop1.eps create mode 100644 utils/wxprop/docs/prop1.gif create mode 100644 utils/wxprop/docs/prop2.bmp create mode 100644 utils/wxprop/docs/prop2.eps create mode 100644 utils/wxprop/docs/prop2.gif create mode 100644 utils/wxprop/docs/readme.txt create mode 100644 utils/wxprop/docs/tex2rtf.ini create mode 100644 utils/wxprop/docs/up.gif create mode 100644 utils/wxprop/docs/wxprop.hpj diff --git a/docs/latex/porting/back.gif b/docs/latex/porting/back.gif new file mode 100644 index 0000000000000000000000000000000000000000..8a61076d3ba74bdedc1d24f60c3d1f5a361a6cee GIT binary patch literal 225 zcmV<703QEGNk%v~VLt#E0Pz3-zrVld=jU&4Z(9HWEC2ui06zd20008IjE||y?GK}z zNf>~$-n{z{YJwGn=81mem9{RpmcUHc_KoNIPRH~B4DyD9p%LJl6@Sa4^Epcbno6kk zD5XxT&EQg7>t<(Iwfoo literal 0 HcmV?d00001 diff --git a/docs/latex/porting/books.bmp b/docs/latex/porting/books.bmp new file mode 100644 index 0000000000000000000000000000000000000000..cf1e148734c807052ec6359ad2eb1a3e8d43d43d GIT binary patch literal 1222 zcmb7?v2KGf5Qg0-f^PH?BCA8E<{c_a$x@Y}nZr;qXR5NnfE2boQZn^-S4x_%j?%%`Rfz!C$uHnGuoYEAr~D;JxHUzQYZhY(}{X$xY0SE&#JC# z5a%D|9QDv}6Qc3-Wv8+GlQ-*8<`8epNC>=NSLPUH1b$st*H{R=IXD*!fgA8x5Dt6l zUCo=!AsqI8={C$E9QGLr_q_i zFK;h=LxQhf>;v~gWIyoy(Zu$`w=UNZZuYl$t>-8&*n94Z?RTzqLWjlGhdMVK;w1@P zgX#l^|MHTQ1q9k0=J>%Sz9`L#Hix;bEVz#^(qoBse!qj(7b literal 0 HcmV?d00001 diff --git a/docs/latex/porting/books.gif b/docs/latex/porting/books.gif new file mode 100644 index 0000000000000000000000000000000000000000..d0d502eee828a8c16a557960081de1719971e924 GIT binary patch literal 433 zcmZ?wbhEHb)Mn6T*vtR|`@wiWnA#8I?caakz=4K_hW|kE{|x`Z6p#k8fI#sl3nK#q zJA)2LC&&y2mVX~kc&^@S@%pT_yTXfJi2|GDp6e!c+BKZ&%hNhxEdIWs;JKB{`SQ<< zPEHBjEDl_~+u5C@f_Kd_OY(VT@*wQ`^@ZOn?o==|n=f}d-eJDgYH!-kgw~pQIm^yJ zXXjvP=CI1BsxGLD%W7s3YHF40W?)U_XRRqLV(6RR*epGzV`f*;yy>Y6CaJQe#!Z{C zG>UD-^ymfsl8Zb1&6`&m_|BiWyJ*Ao%}m=4ZI5W$CBCQ1cE#btXOFO~5xrb_#{Jx* zoonY*JxIO&=++(K#Sd;geEISGLb2|JE2D3|`n+=W_r6@~gZ$Dxn*aVxe61F6#H#M4 z+#(G(M&FGcoR<~PT+2yhbBbrNeE0fzVUh`tc%sLY@Sv%-Tnh4iM`mzESx;fke0N#G zhwFr(q4BvrDU)5js(vjKIV-p&b=Q1{zHc=TUM!ikY^BWIkV&5=g{jIH2eop2JLI}4 V)i6YMM%m#@+X@~Z>t$fD1^{#N#6AE3 literal 0 HcmV?d00001 diff --git a/docs/latex/porting/bullet.bmp b/docs/latex/porting/bullet.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6481f5143b934b2b2fad561a9b39fb441944418a GIT binary patch literal 198 zcmZ?rJ;ne5Wk5;;h`FGck%0v)5dbE!5e*CsK*Z3{0HJ^+kjZf1zyTl)lK2ls4FCUw iSU?PfAR!PR1i)haVEO|{7|2Jb|1&`3;p$=f&}abvMLt>p literal 0 HcmV?d00001 diff --git a/docs/latex/porting/contents.gif b/docs/latex/porting/contents.gif new file mode 100644 index 0000000000000000000000000000000000000000..3dddfa3dd5f0c652e8b27cd6c29e1fdd49ced5a8 GIT binary patch literal 231 zcmVG0Pz3-zrVld=jU&4Z(9HWEC2ui06_p40008OjE||y?GK}z zO&EZ)-n{z{a)K3v=81;mmA0S4Fj_r^UyThZDG{h6k9m zHI_(7spd!5_$SH6m{Q-cu3}3Hu`2^Nfa3dZ+VyHW%gtsZ`jV7k@%j8Ij}~W) zc{NUP6)X3OWa^|{8nl?rh|gZ1@{(qofnsWu+nmFHSnaq>lB41zSVC9`a)_v*xHx0L S5h*!IS!o$ynW>ps0028f2}>3L literal 0 HcmV?d00001 diff --git a/docs/latex/porting/porting.hpj b/docs/latex/porting/porting.hpj new file mode 100644 index 0000000000..3676502238 --- /dev/null +++ b/docs/latex/porting/porting.hpj @@ -0,0 +1,17 @@ +[OPTIONS] +BMROOT=d:\wx2\docs/latex/porting ; Assume that bitmaps are where the source is +TITLE=wxWindows Porting Guide +CONTENTS=Contents +COMPRESS=HIGH + +[FILES] +porting.rtf + +[CONFIG] +CreateButton("Up", "&Up", "JumpId(`porting.hlp', `Contents')") +BrowseButtons() + +[MAP] + +[BITMAPS] + diff --git a/docs/latex/porting/porting.tex b/docs/latex/porting/porting.tex new file mode 100644 index 0000000000..6488144073 --- /dev/null +++ b/docs/latex/porting/porting.tex @@ -0,0 +1,390 @@ +\documentstyle[a4,makeidx,verbatim,texhelp,fancyhea,mysober,mytitle]{report} +\newcommand{\indexit}[1]{#1\index{#1}}% +\newcommand{\pipe}[0]{$\|$\ }% +\definecolour{black}{0}{0}{0}% +\definecolour{cyan}{0}{255}{255}% +\definecolour{green}{0}{255}{0}% +\definecolour{magenta}{255}{0}{255}% +\definecolour{red}{255}{0}{0}% +\definecolour{blue}{0}{0}{200}% +\definecolour{yellow}{255}{255}{0}% +\definecolour{white}{255}{255}{255}% +\input psbox.tex +\parskip=10pt +\parindent=0pt +\title{Guide to porting applications from wxWindows 1.xx to 2.0} +\author{Julian Smart} +\date{October 1997} +\makeindex +\begin{document} +\maketitle +\pagestyle{fancyplain} +\bibliographystyle{plain} +\setheader{{\it CONTENTS}}{}{}{}{}{{\it CONTENTS}} +\setfooter{\thepage}{}{}{}{}{\thepage}% +\pagenumbering{roman} +\tableofcontents +% +\chapter{About this document}\label{about} +\pagenumbering{arabic}% +\setheader{{\it Porting guide}}{}{}{}{}{{\it Porting guide}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% + +This document gives guidelines and tips for porting applications from +version 1.xx of wxWindows to version 2.0. + +The first section offers tips for writing 1.xx applications in a way to +minimize porting time. The following sections detail the changes and +how you can modify your application to be 2.0-compliant. + +You may be worrying that porting to 2.0 will be a lot of work, +particularly if you have only recently started using 1.xx. In fact, +the wxWindows 2.0 API has far more in common with 1.xx than it has differences. +With backward compatibility mode on, much of the conversion can be +done gradually. The main challenges are doing without the default +panel item layout, and the lack of automatic labels in some controls. +However, if you already use resource files (.wxr), or application-specific positioning, +or constraints, then even this will be quite painless. + +So please don't be freaked out by the jump to 2.0! For one thing, 1.xx is still available +and will be supported by the user community for some time. And when you have +changed to 2.0, we hope that you will appreciate the benefits in terms +of greater flexibility, better user interface aesthetics, improved C++ conformance, +improved compilation speed, and many other enhancements. The revised architecture +of 2.0 will ensure that wxWindows can continue to evolve for the forseeable +future. + +{\it Please note that this document is a work in progress.} + +\chapter{Preparing for version 2.0}\label{preparing} + +Even before compiling with version 2.0, there's also a lot you can do right now to make porting +relatively simple. Here are a few tips. + +\begin{itemize} +\item {\bf Use constraints or .wxr resources} for layout, rather than the default layout scheme. +Constraints should be the same in 2.0, and resources will be translated. +\item {\bf Use separate wxMessage items} instead of labels for wxText, wxMultiText, +wxChoice, wxComboBox. These labels will disappear in 2.0. Use separate +wxMessages whether you're creating controls programmatically or using +the dialog editor. The future dialog editor will be able to translate +from old to new more accurately if labels are separated out. +\item {\bf Parameterise functions that use wxDC} or derivatives, i.e. make the wxDC +an argument to all functions that do drawing. Minimise the use of +wxWindow::GetDC and definitely don't store wxDCs long-term +because in 2.0, you can't use GetDC() and wxDCs are not persistent. +You will use wxClientDC, wxPaintDC stack objects instead. Minimising +the use of GetDC() will ensure that there are very few places you +have to change drawing code for 2.0. +\item {\bf Don't set GDI objects} (wxPen, wxBrush etc.) in windows or wxCanvasDCs before they're +needed (e.g. in constructors) - do so within your drawing routine instead. In +2.0, these settings will only take effect between the construction and destruction +of temporary wxClient/PaintDC objects. +\item {\bf Don't rely} on arguments to wxDC functions being floating point - they will +be 32-bit integers in 2.0. +\item {\bf Don't use the wxCanvas member functions} that duplicate wxDC functions, such as SetPen and DrawLine, since +they are going. +\item {\bf Using member callbacks} called from global callback functions will make the transition +easier - see the FAQ +for some notes on using member functions for callbacks. wxWindows 2.0 will banish global +callback functions (and OnMenuCommand), and nearly all event handling will be done by functions taking a single event argument. +So in future you will have code like: + +{\small\begin{verbatim} +void MyFrame::OnOK(wxCommandEvent& event) +{ + ... +} +\end{verbatim} +}% + +You may find that writing the extra code to call a member function isn't worth it at this stage, +but the option is there. +\item {\bf Use wxString wherever possible.} 2.0 will replace char * with wxString +in most cases, and if you use wxString to receive strings returned from +wxWindows functions (except when you need to save the pointer if deallocation is required), there should +be no conversion problems later on. +\item Be aware that under Windows, {\bf font sizes will change} to match standard Windows +font sizes (for example, a 12-point font will appear bigger than before). Write your application +to be flexible where fonts are concerned. +Don't rely on fonts being similarly-sized across platforms, as they were (by chance) between +Windows and X under wxWindows 1.66. Yes, this is not easy... but I think it's better to conform to the +standards of each platform, and currently the size difference makes it difficult to +conform to Windows UI standards. You may eventually wish to build in a global 'fudge-factor' to compensate +for size differences. The old font sizing will still be available via wx\_setup.h, so do not panic... +\item {\bf Consider dropping wxForm usage}: an alternative is to be found in utils/wxprop. +wxPropertyFormView can be used in a wxForm-like way, except that you specify a pre-constructed panel +or dialog; or you can use a wxPropertyListView to show attributes in a scrolling list - you don't even need +to lay panel items out. + +Because wxForm uses a number of features to be dropped in wxWindows 2.0, it cannot be +supported in the future, at least in its present state. +\item {\bf When creating a wxListBox}, put the wxLB\_SINGLE, wxLB\_MULTIPLE, wxLB\_EXTENDED styles in the window style parameter, and put +zero in the {\it multiple} parameter. The {\it multiple} parameter will be removed in 2.0. +\item {\bf For MDI applications}, don't reply on MDI being run-time-switchable in the way that the +MDI sample is. In wxWindows 2.0, MDI functionality is separated into distinct classes. +\end{itemize} + +\chapter{The new event system}\label{eventsystem} + +The way that events are handled has been radically changed in wxWindows 2.0. Please +read the topic `Event handling overview' in the wxWindows 2.0 manual for background +on this. + +\section{Callbacks} + +Instead of callbacks for panel items, menu command events, control commands and other events are directed to +the originating window, or an ancestor, or an event handler that has been plugged into the window +or its ancestor. Event handlers always have one argument, a derivative of wxEvent. + +For menubar commands, the {\bf OnMenuCommand} member function will be replaced by a series of separate member functions, +each of which responds to a particular command. You need to add these (non-virtual) functions to your +frame class, add a DECLARE\_EVENT\_TABLE entry to the class, and then add an event table to +your implementation file, as a BEGIN\_EVENT\_TABLE and END\_EVENT\_TABLE block. The +individual event mapping macros will be of the form: + +\begin{verbatim} +BEGIN_EVENT_TABLE(MyFrame, wxFrame) + EVT_MENU(MYAPP_NEW, MyFrame::OnNew) + EVT_MENU(wxID_EXIT, MyFrame::OnExit) +END_EVENT_TABLE() +\end{verbatim} + +Control commands, such as button commands, can be routed to a derived button class, +the parent window, or even the frame. Here, you use a function of the form EVT\_BUTTON(id, func). +Similar macros exist for other control commands. + +\section{Other events} + +To intercept other events, you used to override virtual functions, such as OnSize. Now, while you can use +the OnSize name for such event handlers (or any other name of your choice), it has only a single argument +(wxSizeEvent) and must again be `mapped' using the EVT\_SIZE macro. The same goes for all other events, +including OnClose (although in fact you can still use the old, virtual form of OnClose for the time being). + +\chapter{Class hierarchy}\label{classhierarchy} + +The class hierarchy has changed somewhat. wxToolBar and wxButtonBar +classes have been split into several classes, and are derived from wxControl (which was +called wxItem). wxPanel derives from wxWindow instead of from wxCanvas, which has +disappeared in favour of wxScrolledWindow (since all windows are now effectively canvases +which can be drawn into). The status bar has become a class in its own right, wxStatusBar. + +There are new MDI classes so that wxFrame does not have to be overloaded with this +functionality. + +There are new device context classes, with wxPanelDC and wxCanvasDC disappearing. +See \helpref{Device contexts and painting}{dc}. + +\chapter{GDI objects}\label{gdiobjects} + +These objects - instances of classes such as wxPen, wxBrush, wxBitmap (but not wxColour) - +are now implemented with reference-counting. This makes assignment a very cheap operation, +and also means that management of the resource is largely automatic. You now pass {\it references} to +objects to functions such as wxDC::SetPen. The device context does not store a copy of the pen +itself, but takes a copy of it (via reference counting), and the object's data gets freed up +when the reference count goes to zero. The application does not have to worry so much about +who the object belongs to: it can pass the reference, then destroy the object without +leaving a dangling pointer inside the device context. + +For the purposes of code migration, you can use the old style of object management - maintaining +pointers to GDI objects, and using the FindOrCreate... functions. However, it is preferable to +keep this explicit management to a minimum, instead creating objects on the fly as needed, on the stack, +unless this causes too much of an overhead in your application. + +At a minimum, you will have to make sure that calls to SetPen, SetBrush etc. work. Some compilers +will do the conversion from pointer to reference automatically (via a constructor in the GDI +class) but you cannot rely on this being true for all compilers. Also, where you pass NULL to these +functions, you will need to either cast to the appropriate reference type, or instead +use an identifier such as wxNullPen or wxNullBrush. + +\chapter{Dialogs and controls}\label{dialogscontrols} + +\wxheading{Labels} + +Most controls no longer have labels and values as they used to in 1.xx. Instead, labels +should be created separately using wxStaticText (the new name for wxMessage). This will +need some reworking of dialogs, unfortunately; programmatic dialog creation that doesn't +use constraints will be especially hard-hit. Perhaps take this opportunity to make more +use of dialog resources or constraints. Or consider using the wxPropertyListView class +which can do away with dialog layout issues altogether by presenting a list of editable +properties. + +\wxheading{Constructors} + +All window constructors have two main changes, apart from the label issue mentioned above. +Windows now have integer identifiers; and position and size are now passed as wxPoint and +wxSize objects. In addition, some windows have a wxValidator argument. wxWindows 2.0 may provide +old-style constructors in WXWIN\_COMPATIBILITY mode for limited backward compatibility. + +\wxheading{Show versus ShowModal} + +If you have used or overridden the {\bf wxDialog::Show} function in the past, you may find +that modal dialogs no longer work as expected. This is because the function for modal showing +is now {\bf wxDialog:ShowModal}. This is part of a more fundamental change in which a +control may tell the dialog that it caused the dismissal of a dialog, by +calling {\bf wxDialog::EndModal} or {\bf wxWindow::SetReturnCode}. Using this +information, {\bf ShowModal} now returns the id of the control that caused dismissal, +giving greater feedback to the application than just TRUE or FALSE. + +If you overrode or called {\bf wxDialog::Show}, use {\bf ShowModal} and test for a returned identifier, +commonly wxID\_OK or wxID\_CANCEL. + +\wxheading{wxItem} + +This is renamed wxControl. + +\wxheading{wxText, wxMultiText and wxTextWindow} + +These classes no longer exist and are replaced by the single class wxTextCtrl. +Multi-line text items are created using the wxTE\_MULTILINE style. + +\wxheading{wxButton} + +Bitmap buttons are now a separate class, instead of being part of wxBitmap. + +\wxheading{wxMessage} + +Bitmap messages are now a separate class, wxStaticBitmap, and wxMessage +is renamed wxStaticText. + +\wxheading{wxGroupBox} + +wxGroupBox is renamed wxStaticBox. + +\wxheading{wxForm} + +Note that wxForm is no longer supported in wxWindows 2.0. Consider using the wxPropertyForm class +instead, which takes standard dialogs and panels and associates controls with property objects. +You may also find that the new validation method, combined with dialog resources, is easier +and more flexible than using wxForm. + +\chapter{Device contexts and painting}\label{dc} + +In wxWindows 2.0, device contexts are used for drawing into, as per 1.xx, but the way +they are accessed and constructed is a bit different. + +You no longer use {\bf GetDC} to access device contexts for panels, dialogs and canvases. +Instead, you create a temporary device context, which means that any window or control can be drawn +into. The sort of device context you create depends on where your code is called from. If +painting within an {\bf OnPaint} handler, you create a wxPaintDC. If not within an {\bf OnPaint} handler, +you use a wxClientDC or wxWindowDC. You can still parameterise your drawing code so that it +doesn't have to worry about what sort of device context to create - it uses the DC it is passed +from other parts of the program. + +You {\bf must } create a wxPaintDC if you define an OnPaint handler, even if you do not +actually use this device context, or painting will not work correctly under Windows. + +If you used device context functions with wxPoint or wxIntPoint before, please note +that wxPoint now contains integer members, and there is a new class wxRealPoint. wxIntPoint +no longer exists. + +\chapter{Miscellaneous} + +\section{Strings} + +wxString has replaced char* in the majority of cases. For passing strings into functions, +this should not normally require you to change your code if the syntax is otherwise the +same. This is because C++ will automatically convert a char* or const char* to a wxString by virtue +of appropriate wxString constructors. + +However, when a wxString is returned from a function in wxWindows 2.0 where a char* was +returned in wxWindows 1.xx, your application will need to be changed. Usually you can +simplify your application's allocation and deallocation of memory for the returned string, +and simply assign the result to a wxString object. For example, replace this: + +{\small\begin{verbatim} + char* s = wxFunctionThatReturnsString(); + s = copystring(s); // Take a copy in case it's temporary + .... // Do something with it + delete[] s; +\end{verbatim} +} + +with this: + +{\small\begin{verbatim} + wxString s = wxFunctionThatReturnsString(); + .... // Do something with it +\end{verbatim} +} + +To indicate an empty return value or a problem, a function may return either the +empty string (``") or a null string. You can check for a null string with wxString::IsNull(). + +\section{Use of const} + +The {\bf const} keyword is now used to denote constant functions that do not affect the +object, and for function arguments to denote that the object passed cannot be changed. + +This should not affect your application except for where you are overriding virtual functions +which now have a different signature. If functions are not being called which were previously, +check whether there is a parameter mismatch (or function type mismatch) involving consts. + +Try to use the {\bf const} keyword in your own code where possible. + +\chapter{Backward compatibility}\label{compat} + +Some wxWindows 1.xx functionality has been left to ease the transition to 2.0. This functionality +(usually) only works if you compile with WXWIN\_COMPATIBILITY set to 1. + +TODO + +OnMenuCommand, OnSize, OnActivate, OnPaint, others?? can all be prefixed with Old (e.g. OldOnMenuCommand) +and will work as before. You are encouraged to convert your code to the new forms, but +this will allow you to get your applications up and running a little more quickly. + +OnClose can be used as-is without an 'Old' prefix, but officially the OnCloseWindow event table handler should be +used instead. + +\chapter{Quick reference}\label{quickreference} + +This section allows you to quickly find features that +need to be converted. + +TODO + +\section{OnActivate} + +Rename to OldOnActivate, or replace arguments with one wxActivateEvent\& argument. + +\wxheading{See also} + +\helpref{Backward compatibility}{compat} + +\section{OnClose} + +This can either remain the same as before, or you can add an OnCloseWindow event +handler using an EVT\_CLOSE event table entry. + +\wxheading{See also} + +\helpref{Backward compatibility}{compat} + +\section{OnMenuCommand} + +Rename to OldOnMenuCommand, or replace with a series of functions, one for +each case of your old switch statement. Create an event table for your frame +containing EVT\_MENU macros, and insert DECLARE\_EVENT\_TABLE() in your frame class. + +\wxheading{See also} + +\helpref{Backward compatibility}{compat} + +\section{OnSize} + +Rename to OldOnSize, or replace arguments with one wxSizeEvent\& argument. + +\wxheading{See also} + +\helpref{Backward compatibility}{compat} + +\section{wxDialog::Show} + +If you used {\bf Show} to show a modal dialog, or to override the standard +modal dialog {\bf Show}, use {\bf ShowModal} instead. + +\wxheading{See also} + +\helpref{Dialogs and controls}{dialogscontrols} + +\end{document} diff --git a/docs/latex/porting/tex2rtf.ini b/docs/latex/porting/tex2rtf.ini new file mode 100644 index 0000000000..b156b28d0a --- /dev/null +++ b/docs/latex/porting/tex2rtf.ini @@ -0,0 +1,28 @@ +;;; Tex2RTF initialisation file for 16-bit Winhelp +runTwice = yes +titleFontSize = 12 +authorFontSize = 10 +authorFontSize = 10 +chapterFontSize = 12 +sectionFontSize = 12 +subsectionFontSize = 12 +contentsDepth = 2 +headerRule = yes +footerRule = yes +useHeadingStyles = yes +listItemIndent=40 +generateHPJ = yes +htmlBrowseButtons = bitmap +winHelpContents = yes +winHelpVersion = 3 ; 3 for Windows 3.x, 4 for Windows 95 +winHelpTitle = "wxWindows Porting Guide" +truncateFilenames = yes +combineSubSections = yes +\overview [2] {\rtfonly{See also }\settransparency{on}\sethotspotcolour{off}\sethotspotunderline{on}\winhelponly{\image{}{books.bmp}\settransparency{off}} +\htmlonly{\image{}{books.gif}}\helpref{#1}{#2} +\sethotspotcolour{on}\sethotspotunderline{on}} +\docparam [2]{\parskip{0}{\it #1}\par\parskip{10}\indented{1cm}{#2}} +\wxheading [1]{{\bf \fcol{blue}{#1}}} +\const [0] {{\bf const}} +\constfunc [3] {{\bf #1} {\bf #2}(#3) {\bf const}\index{#2}} + diff --git a/docs/latex/porting/texhelp.sty b/docs/latex/porting/texhelp.sty new file mode 100644 index 0000000000..81704b0575 --- /dev/null +++ b/docs/latex/porting/texhelp.sty @@ -0,0 +1,289 @@ +% LaTeX style file +% Name: texhelp.sty +% Author: Julian Smart +% +% Purpose +% ------- +% Style file to enable the simultaneous preparation of printed LaTeX and on-line +% hypertext manuals. +% Use in conjunction with Tex2RTF (see Tex2RTF documentation). +% +% Note that if a non-ASCII character starts a newline and there should be a space +% between the last word on the previous line and the first word on this line, +% you need to use \rtfsp to generate a space in Windows Help. \rtfsp is ignored +% in all other formats. +% +% Julian Smart +% Artificial Intelligence Applications Institute +% +% +% ============== C++/CLIPS Documentation Facilities ============== +% +% Each class definition should be typeset with e.g. +% +% \section{\class{Name}: Parent} +% +% followed by a description of the class. +% Each member should follow: +% +% \membersection{wxName::Member} +% +% with a description of what this member does. +% Then, one (or more if overloaded) member (function) in detail: +% +% \func{return type}{name}{args} +% or +% \member{type}{name} +% +% where args is a list of \param{type}{name}, ... + +% Function, e.g. +% e.g. to typeset +% +% void DoIt(char *string); +% +% write: +% +% \func{void}{DoIt}{\param{char *}{string}} +% + +\newcommand{\func}[3]{\hangafter=1\noindent\hangindent=10mm +{{\it #1} {\bf #2}\index{#2}}(#3)} + +% For function/type definition where the name is a pointer, +% e.g. to typeset +% +% typedef void (*wxFunction)(wxObject&) +% +% write: +% +% \pfunc{typedef void}{wxFunction}{param{wxObject&}} + +\newcommand{\pfunc}[3]{\hangafter=1\noindent\hangindent=10mm +{{\it #1} ({\bf *#2})\index{#2}}(#3)} + +% Use an ordinary \section command for class name definitions. + +% This is used for a member, such as wxBitmap: GetDepth +\newcommand{\membersection}[1]{\subsection*{#1}\index{#1}} + +% CLIPS function +\newcommand{\clipsfunc}[3]{\hangafter=1\noindent\hangindent=10mm +{{\bf #1} ({\bf #2}\index{#2}}#3)} + +\newcommand{\clipssection}[1]{\chapter{#1}} + +% This is used for a CLIPS function name +\newcommand{\functionsection}[1]{\subsection*{#1}} + +% Member: a type and a name +\newcommand{\member}[2]{{\bf #1 \it #2}} + +% C++ Parameter: a type and a name (no intervening space) +\newcommand{\param}[2]{{\it #1}{\bf #2}} + +% CLIPS Parameter: a type and a name (one intervening space) +\newcommand{\cparam}[2]{{\bf #1} {\it #2}} + +% Class: puts in index +\newcommand{\class}[1]{#1\index{#1}} + +% Void type +\newcommand{\void}{{\it void}} + +% Typeset destructor +\newcommand{\destruct}[1]{{$\sim$}#1} + +% Typeset insert/extract operators +\newcommand{\cinsert}{$<<$} +\newcommand{\cextract}{$>>$} + + +% =================== Hypertext facilities =================== +% +% To insert hyperlinks (or references, in Latex), \label the sections +% or membersections \label{ref-label} immediately after the section, on the same line, +% and use \helpref{text-to-show}{ref-label} to make a reference. +% + +% Type text with section reference +\newcommand{\helpref}[2]{{\it #1} (p.\ \pageref{#2}) } + +% Type text with URL in verbatim mode +\newcommand{\urlref}[2]{#1 (\verb$#2$)} + +% Don't typeset section number in LaTeX +\newcommand{\helprefn}[2]{{\it #1}} + +% Like helpref, but popup text in WinHelp instead of hyperlinked +\newcommand{\popref}[2]{{\it #1}} + +% Like footnote, but popup text. +\newcommand{\footnotepopup}[2]{{\it #1}\footnote{#2}} + +% =================== On-line help specific macros =================== +% + +% Global document font size/family, help only. +\newcommand{\helpfontsize}[1]{} +\newcommand{\helpfontfamily}[1]{} + +% Ignore in all on-line help +\newcommand{\helpignore}[1]{#1} +% Only print in all on-line help +\newcommand{\helponly}[1]{} + +% Ignore in LaTeX +\newcommand{\latexignore}[1]{} +% Only print in LaTeX +\newcommand{\latexonly}[1]{#1} + +% Ignore in linear RTF +\newcommand{\rtfignore}[1]{#1} +% Only print in linear RTF +\newcommand{\rtfonly}[1]{} + +% Ignore in WinHelp RTF +\newcommand{\winhelpignore}[1]{#1} +% Only print in WinHelp RTF +\newcommand{\winhelponly}[1]{} + +% Ignore in wxHelp +\newcommand{\xlpignore}[1]{#1} +% Only print in wxHelp +\newcommand{\xlponly}[1]{} + +% Ignore in HTML +\newcommand{\htmlignore}[1]{#1} +% Only print in HTML +\newcommand{\htmlonly}[1]{} + +% Input a file only for help system (binder thickness is not a limitation +% in help systems!) +\newcommand{\helpinput}[1]{} + +\newcommand{\rtfsp}{ } % Force a space in RTF, ignore in Latex + +% =================== Miscellaneous macros =================== +% +% Headings consistent with generated ones +\newcommand{\myheading}[1]{\vspace*{25pt} +\begin{flushleft} +{\LARGE \bf #1} +\end{flushleft} +\vskip 20pt +} + +% Heading with entry in contents page. +\newcommand{\chapterheading}[1]{\myheading{#1} +\addcontentsline{toc}{chapter}{#1}} + +\newcommand{\sectionheading}[1]{\myheading{#1} +\addcontentsline{toc}{section}{#1}} + +% Glossary environment +\newenvironment{helpglossary}{\newpage\chapterheading{Glossary}\begin{description}}{\end{description}} + +% Glossary entry +\newcommand{\gloss}[1]{\item[#1]\index{#1}} + +% Image: EPS in Latex, BMP or MF (whatever's available) in RTF. Requires psbox. +\newcommand{\image}[2]{\psboxto(#1){#2}} + +% Image, left aligned (HTML) +\newcommand{\imager}[2]{\psboxto(#1){#2}} + +% Image, right aligned (HTML) +\newcommand{\imagel}[2]{\psboxto(#1){#2}} + +% Imagemap: principally for HTML only. In Latex, +% acts like \image. +\newcommand{\imagemap}[3]{\psboxto(#1){#2}} + +% Headers and footers +% \setheader{EvenPageLeft}{EvenPageCentre}{EvenPageRight} +% {OddPageLeft}{OddPageCentre}{OddPageRight} +\newcommand{\setheader}[6]{ +\lhead[\fancyplain{}{#1}]{\fancyplain{}{#4}} +\chead[\fancyplain{}{#2}]{\fancyplain{}{#5}} +\rhead[\fancyplain{}{#3}]{\fancyplain{}{#6}} +} + +% \setfooter{EvenPageLeft}{EvenPageCentre}{EvenPageRight} +% {OddPageLeft}{OddPageCentre}{OddPageRight} +\newcommand{\setfooter}[6]{ +\lfoot[\fancyplain{#1}{#1}]{\fancyplain{#4}{#4}} +\cfoot[\fancyplain{#2}{#2}]{\fancyplain{#5}{#5}} +\rfoot[\fancyplain{#3}{#3}]{\fancyplain{#6}{#6}} +} + +% Needed for telling RTF where margin paragraph should go +% in mirrored margins mode. +\newcommand{\marginpareven}[1]{\hspace*{0pt}\marginpar{#1}} +\newcommand{\marginparodd}[1]{\hspace*{0pt}\marginpar{#1}} + +% Environment for two-column table popular in WinHelp and manuals. +\newcommand{\twocolwidtha}[1]{\def\twocolwidthaval{#1}} +\newcommand{\twocolwidthb}[1]{\def\twocolwidthbval{#1}} +\newcommand{\twocolspacing}[1]{\def\twocolspacingval{#1}} + +\twocolwidtha{3cm} +\twocolwidthb{8.5cm} +\twocolspacing{2} + +\newcommand{\twocolitem}[2]{#1 & #2\\} +\newcommand{\twocolitemruled}[2]{#1 & #2\\\hline} + +\newenvironment{twocollist}{\renewcommand{\arraystretch}{\twocolspacingval}\begin{tabular}{lp{\twocolwidthbval}}}% +{\end{tabular}\renewcommand{\arraystretch}{1}} + +% Specifying table rows for RTF compatibility +\newcommand{\row}[1]{#1\\} + +% Use for the last ruled row for correct RTF generation. +\newcommand{\ruledrow}[1]{#1\\\hline} + +% Indentation environment. Arg1 is left margin size +\newenvironment{indented}[1]{\begin{list}{}{\leftmargin=#1}\item[]}% +{\end{list}} + +% Framed box of text, normal formatting. +\newcommand{\normalbox}[1]{\fbox{\vbox{#1}}} +% Double-framed box of text. +\newcommand{\normalboxd}[1]{\fbox{\fbox{\vbox{#1}}}} + +% WITHDRAWN -- can't do in RTF, easily. +% Framed box of text, horizontally centred. Ragged right within box. +% \newcommand{\centeredbox}[2]{\begin{center}\fbox{\parbox{#1}{\raggedright#2}}\end{center}} +% Double-framed box of text, horizontally centred. Ragged right within box. +% \newcommand{\centeredboxd}[2]{\begin{center}\fbox{\fbox{\parbox{#1}{\raggedright#2}}}\end{center}} + +% toocomplex environment: simply prints the argument in LaTeX, +% comes out verbatim in all generated formats. +\newenvironment{toocomplex}{}{} + +% Colour: dummy commands since LaTeX doesn't support colour. +% \definecolour{name}{red}{blue}{green} +% \fcol{name}{text} ; Foreground +% \bcol{name}{text} ; Background +\newcommand{\definecolour}[4]{} +\newcommand{\definecolor}[4]{} +\newcommand{\fcol}[2]{#2} +\newcommand{\bcol}[2]{#2} +\newcommand{\sethotspotcolour}[1]{} +\newcommand{\sethotspotunderline}[1]{} +\newcommand{\settransparency}[1]{} +\newcommand{\backslashraw}[0]{} +\newcommand{\lbraceraw}[0]{} +\newcommand{\rbraceraw}[0]{} +\newcommand{\registered}[0]{(r)} +\newcommand{\background}[1]{} +\newcommand{\textcolour}[1]{} +\newcommand{\overview}[2]{See \helpref{#1}{#2}.} +\newcommand{\docparam}[2]{{\it #1}\begin{list}{}{\leftmargin=1cm}\item[] +#2% +\end{list}} +\newcommand{\wxheading}[1]{{\bf #1}} +\newcommand{\const}[0]{{\bf const}} +\newcommand{\constfunc}[3]{{\bf #1} {\bf #2}(#3) {\bf const}\index{#2}} + diff --git a/docs/latex/porting/up.gif b/docs/latex/porting/up.gif new file mode 100644 index 0000000000000000000000000000000000000000..617948f2a2702fe5e320cee3290ef6eb9e7f9bfd GIT binary patch literal 137 zcmV;40CxXJNk%v~VHyA!0Pz3-zrVld=jU&4Z(9HWEC2ui02%-o0007FjE||ytzv+j zv|1owxcuhWh0?c)Avp?`dTQw^q7qBdoDA6WKJ*l>%gtCeAWZlgxpoy|ZDMRPr_m>p rx}08pS4?)u<%PWProcessMessage(msg)) + return TRUE; + else + return CWinApp::PreTranslateMessage(msg); +} +\end{verbatim} + +\membersection{wxApp::SendIdleEvents}\label{wxappsendidleevents} + +\func{bool}{SendIdleEvents}{\void} + +Sends idle events to all top-level windows. + +\func{bool}{SendIdleEvents}{\param{wxWindow*}{ win}} + +Sends idle events to a window and its children. + +\wxheading{Remarks} + +These functions poll the top-level windows, and their children, for idle event processing. +If TRUE is returned, more OnIdle processing is requested by one or more window. + +\wxheading{See also} + +\helpref{wxApp::OnIdle}{wxapponidle}, \helpref{wxWindow::OnIdle}{wxwindowonidle}, \helpref{wxIdleEvent}{wxidleevent} + +\membersection{wxApp::SetAppName}\label{wxappsetappname} + +\func{void}{SetAppName}{\param{const wxString\& }{name}} + +Sets the name of the application. The name may be used in dialogs +(for example by the document/view framework). A default name is set by +wxWindows. + +\wxheading{See also} + +\helpref{wxApp::GetAppName}{wxappgetappname} + +\membersection{wxApp::SetAuto3D}\label{wxappsetauto3d} + +\func{void}{SetAuto3D}{\param{const bool}{ auto3D}} + +Switches automatic 3D controls on or off. + +\wxheading{Parameters} + +\docparam{auto3D}{If TRUE, all controls will be created with 3D appearances unless +overridden for a control or dialog. The default is TRUE} + +\wxheading{Remarks} + +This has an effect on Windows only. + +\wxheading{See also} + +\helpref{wxApp::GetAuto3D}{wxappgetauto3d} + +\membersection{wxApp::SetClassName}\label{wxappsetclassname} + +\func{void}{SetClassName}{\param{const wxString\& }{name}} + +Sets the class name of the application. This may be used in a platform specific +manner to refer to the application. + +\wxheading{See also} + +\helpref{wxApp::GetClassName}{wxappgetclassname} + +\membersection{wxApp::SetExitOnDelete}\label{wxappsetexitondelete} + +\func{void}{SetExitOnDelete}{\param{bool}{ flag}} + +Allows the programmer to specify whether the application will exit when the +top-level frame is deleted. + +\wxheading{Parameters} + +\docparam{flag}{If TRUE (the default), the application will exit when the top-level frame is +deleted. If FALSE, the application will continue to run.} + +\wxheading{Remarks} + +Currently, setting this to FALSE only has an effect under Windows. + +\membersection{wxApp::SetPrintMode}\label{wxappsetprintmode} + +\func{void}{SetPrintMode}{\param{int}{ mode}} + +Sets the print mode determining what printing facilities will be +used by the printing framework. + +\wxheading{Parameters} + +\docparam{mode}{This can be one of: + +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf wxPRINT\_WINDOWS}}{Under Windows, use Windows printing (wxPrinterDC). This is the +default under Windows.} +\twocolitem{{\bf wxPRINT\_POSTSCRIPT}}{Use PostScript printing (wxPostScriptDC). This is the +default for non-Windows platforms.} +\end{twocollist} +}% + +\membersection{wxApp::SetTopWindow}\label{wxappsettopwindow} + +\func{void}{SetTopWindow}{\param{wxWindow* }{window}} + +Sets the `top' window. You should normally call this from within \helpref{wxApp::OnInit}{wxapponinit} to +let wxWindows know which is the main window. + +\wxheading{Parameters} + +\docparam{window}{The new top window.} + +\wxheading{See also} + +\helpref{wxApp::GetTopWindow}{wxappgettopwindow}, \helpref{wxApp::OnInit}{wxapponinit} + diff --git a/docs/latex/wx/back.gif b/docs/latex/wx/back.gif new file mode 100644 index 0000000000000000000000000000000000000000..8a61076d3ba74bdedc1d24f60c3d1f5a361a6cee GIT binary patch literal 225 zcmV<703QEGNk%v~VLt#E0Pz3-zrVld=jU&4Z(9HWEC2ui06zd20008IjE||y?GK}z zNf>~$-n{z{YJwGn=81mem9{RpmcUHc_KoNIPRH~B4DyD9p%LJl6@Sa4^Epcbno6kk zD5XxT&EQg7>t<(Iwfoo literal 0 HcmV?d00001 diff --git a/docs/latex/wx/bbutton.tex b/docs/latex/wx/bbutton.tex new file mode 100644 index 0000000000..80d0eae278 --- /dev/null +++ b/docs/latex/wx/bbutton.tex @@ -0,0 +1,223 @@ +\section{\class{wxBitmapButton}}\label{wxbitmapbutton} + +A bitmap button is a control that contains a bitmap. +It may be placed on a \helpref{dialog box}{wxdialog} or \helpref{panel}{wxpanel}, or indeed +almost any other window. + +\wxheading{Derived from} + +\helpref{wxButton}{wxbutton}\\ +\helpref{wxControl}{wxcontrol}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Remarks} + +A bitmap button can be supplied with a single bitmap, and wxWindows will draw +all button states using this bitmap. If the application needs more control, additional bitmaps for +the selected state, unpressed focussed state, and greyed-out state may be supplied. + +\wxheading{Window styles} + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{wxBU\_AUTODRAW}}{If +this is specified, the button will be drawn automatically using the label bitmap only, providing +a 3D-look border. If this style is not specified, the button will be drawn without borders and using all +provided bitmaps.} +\end{twocollist} + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{See also} + +\helpref{wxButton}{wxbutton} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxBitmapButton::wxBitmapButton}\label{wxbitmapbuttonconstr} + +\func{}{wxBitmapButton}{\void} + +Default constructor. + +\func{}{wxBitmapButton}{\param{wxWindow* }{parent}, \param{const wxWindowID}{ id}, \param{const wxBitmap\& }{bitmap},\rtfsp +\param{const wxPoint\& }{pos}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long}{ style = wxBU\_AUTODRAW}, \param{const wxValidator\& }{validator}, \param{const wxString\& }{name = ``button"}} + +Constructor, creating and showing a button. + +\wxheading{Parameters} + +\docparam{parent}{Parent window. Must not be NULL.} + +\docparam{id}{Button identifier. A value of -1 indicates a default value.} + +\docparam{bitmap}{Bitmap to be displayed.} + +\docparam{pos}{Button position.} + +\docparam{size}{Button size. If the default size (-1, -1) is specified then the button is sized +appropriately for the bitmap.} + +\docparam{style}{Window style. See \helpref{wxBitmapButton}{wxbitmapbutton}.} + +\docparam{validator}{Window validator.} + +\docparam{name}{Window name.} + +\wxheading{Remarks} + +The {\it bitmap} parameter is normally the only bitmap you need to provide, and wxWindows will +draw the button correctly in its different states. If you want more control, call +any of the functions \helpref{wxBitmapButton::SetBitmapSelected}{wxbitmapbuttonsetbitmapselected},\rtfsp +\helpref{wxBitmapButton::SetBitmapFocus}{wxbitmapbuttonsetbitmapfocus},\rtfsp +\helpref{wxBitmapButton::SetBitmapDisabled}{wxbitmapbuttonsetbitmapdisabled}. + +Note that the bitmap passed is smaller than the actual button created. + +\wxheading{See also} + +\helpref{wxBitmapButton::Create}{wxbitmapbuttoncreate}, \helpref{wxValidator}{wxvalidator} + +\membersection{wxBitmapButton::\destruct{wxBitmapButton}} + +\func{}{\destruct{wxBitmapButton}}{\void} + +Destructor, destroying the button. + +\membersection{wxBitmapButton::Create}\label{wxbitmapbuttoncreate} + +\func{bool}{Create}{\param{wxWindow* }{parent}, \param{const wxWindowID}{ id}, \param{const wxBitmap\& }{bitmap},\rtfsp +\param{const wxPoint\& }{pos}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long}{ style = 0}, \param{const wxValidator\& }{validator}, \param{const wxString\& }{name = ``button"}} + +Button creation function for two-step creation. For more details, see \helpref{wxBitmapButton::wxBitmapButton}{wxbitmapbuttonconstr}. + +\membersection{wxBitmapButton::GetBitmapDisabled}\label{wxbitmapbuttongetbitmapdisabled} + +\constfunc{wxBitmap\&}{GetBitmapLabel}{\void} + +Returns the bitmap for the disabled state. + +\wxheading{Return value} + +A reference to the disabled state bitmap. + +\wxheading{See also} + +\helpref{wxBitmapButton::SetBitmapDisabled}{wxbitmapbuttonsetbitmapdisabled} + +\membersection{wxBitmapButton::GetBitmapFocus}\label{wxbitmapbuttongetbitmapfocus} + +\constfunc{wxBitmap\&}{GetBitmapFocus}{\void} + +Returns the bitmap for the focussed state. + +\wxheading{Return value} + +A reference to the focussed state bitmap. + +\wxheading{See also} + +\helpref{wxBitmapButton::SetBitmapFocus}{wxbitmapbuttonsetbitmapfocus} + +\membersection{wxBitmapButton::GetBitmapLabel}\label{wxbitmapbuttongetbitmaplabel} + +\constfunc{wxBitmap\&}{GetBitmapLabel}{\void} + +Returns the label bitmap (the one passed to the constructor). + +\wxheading{Return value} + +A reference to the button's label bitmap. + +\wxheading{See also} + +\helpref{wxBitmapButton::SetBitmapLabel}{wxbitmapbuttonsetbitmaplabel} + +\membersection{wxBitmapButton::GetBitmapSelected}\label{wxbitmapbuttongetbitmapselected} + +\constfunc{wxBitmap\&}{GetBitmapSelected}{\void} + +Returns the bitmap for the selected state. + +\wxheading{Return value} + +A reference to the selected state bitmap. + +\wxheading{See also} + +\helpref{wxBitmapButton::SetBitmapSelected}{wxbitmapbuttonsetbitmapselected} + +\membersection{wxBitmapButton::SetBitmapDisabled}\label{wxbitmapbuttonsetbitmapdisabled} + +\func{void}{SetBitmapDisabled}{\param{const wxBitmap\& }{bitmap}} + +Sets the bitmap for the disabled button appearance. + +\wxheading{Parameters} + +\docparam{bitmap}{The bitmap to set.} + +\wxheading{See also} + +\helpref{wxBitmapButton::GetBitmapDisabled}{wxbitmapbuttongetbitmapdisabled},\rtfsp +\helpref{wxBitmapButton::SetBitmapLabel}{wxbitmapbuttonsetbitmaplabel},\rtfsp +\helpref{wxBitmapButton::SetBitmapSelected}{wxbitmapbuttonsetbitmapselected},\rtfsp +\helpref{wxBitmapButton::SetBitmapFocus}{wxbitmapbuttonsetbitmapfocus} + +\membersection{wxBitmapButton::SetBitmapFocus}\label{wxbitmapbuttonsetbitmapfocus} + +\func{void}{SetBitmapFocus}{\param{const wxBitmap\& }{bitmap}} + +Sets the bitmap for the button appearance when it has the keyboard focus. + +\wxheading{Parameters} + +\docparam{bitmap}{The bitmap to set.} + +\wxheading{See also} + +\helpref{wxBitmapButton::GetBitmapFocus}{wxbitmapbuttongetbitmapfocus},\rtfsp +\helpref{wxBitmapButton::SetBitmapLabel}{wxbitmapbuttonsetbitmaplabel},\rtfsp +\helpref{wxBitmapButton::SetBitmapSelected}{wxbitmapbuttonsetbitmapselected},\rtfsp +\helpref{wxBitmapButton::SetBitmapDisabled}{wxbitmapbuttonsetbitmapdisabled} + +\membersection{wxBitmapButton::SetBitmapLabel}\label{wxbitmapbuttonsetbitmaplabel} + +\func{void}{SetBitmapLabel}{\param{const wxBitmap\& }{bitmap}} + +Sets the bitmap label for the button. + +\wxheading{Parameters} + +\docparam{bitmap}{The bitmap label to set.} + +\wxheading{Remarks} + +This is the bitmap used for the unselected state, and for all other states +if no other bitmaps are provided. + +\wxheading{See also} + +\helpref{wxBitmapButton::GetBitmapLabel}{wxbitmapbuttongetbitmaplabel} + +\membersection{wxBitmapButton::SetBitmapSelected}\label{wxbitmapbuttonsetbitmapselected} + +\func{void}{SetBitmapSelected}{\param{const wxBitmap\& }{bitmap}} + +Sets the bitmap for the selected (depressed) button appearance. + +\wxheading{Parameters} + +\docparam{bitmap}{The bitmap to set.} + +\wxheading{See also} + +\helpref{wxBitmapButton::GetBitmapSelected}{wxbitmapbuttongetbitmapselected},\rtfsp +\helpref{wxBitmapButton::SetBitmapLabel}{wxbitmapbuttonsetbitmaplabel},\rtfsp +\helpref{wxBitmapButton::SetBitmapFocus}{wxbitmapbuttonsetbitmapfocus},\rtfsp +\helpref{wxBitmapButton::SetBitmapDisabled}{wxbitmapbuttonsetbitmapdisabled} + diff --git a/docs/latex/wx/bitmap.tex b/docs/latex/wx/bitmap.tex new file mode 100644 index 0000000000..30a202a37e --- /dev/null +++ b/docs/latex/wx/bitmap.tex @@ -0,0 +1,683 @@ +\section{\class{wxBitmap}}\label{wxbitmap} + +%\overview{Overview}{wxbitmapoverview} +% +This class encapsulates the concept of a platform-dependent bitmap, +either monochrome or colour. + +\wxheading{Derived from} + +\helpref{wxGDIObject}{wxgdiobject}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxBitmap overview}{wxbitmapoverview}, \helpref{wxDC::Blit}{wxdcblit}, \helpref{wxIcon}{wxicon}, \helpref{wxCursor}{wxcursor}, \helpref{wxMemoryDC}{wxmemorydc} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxBitmap::wxBitmap}\label{wxbitmapconstr} + +\func{}{wxBitmap}{\void} + +Default constructor. + +\func{}{wxBitmap}{\param{const wxBitmap\& }{bitmap}} + +\func{}{wxBitmap}{\param{const wxBitmap* }{bitmap}} + +Copy constructors. + +\func{}{wxBitmap}{\param{void*}{ data}, \param{const int}{ type}, \param{const int}{ width}, \param{const int}{ height}, \param{const int}{ depth = -1}} + +Creates a bitmap from the given data, which can be of arbitrary type. + +\func{}{wxBitmap}{\param{const char}{ bits[]}, \param{const int}{ width}, \param{const int}{ height}\\ + \param{const int}{ depth = 1}} + +Creates a bitmap from an array of bits. + +\func{}{wxBitmap}{\param{const int}{ width}, \param{const int}{ height}, \param{const int}{ depth = -1}} + +Creates a new bitmap. + +\func{}{wxBitmap}{\param{const char**}{ bits}} + +Creates a bitmap from XPM data. + +\func{}{wxBitmap}{\param{const wxString\& }{name}, \param{const long}{ type}} + +Loads a bitmap from a file or resource. + +\wxheading{Parameters} + +\docparam{bits}{Specifies an array of pixel values.} + +\docparam{width}{Specifies the width of the bitmap.} + +\docparam{height}{Specifies the height of the bitmap.} + +\docparam{depth}{Specifies the depth of the bitmap. If this is omitted, the display depth of the +screen is used.} + +\docparam{name}{This can refer to a resource name under MS Windows, or a filename under MS Windows and X. +Its meaning is determined by the {\it flags} parameter.} + +\docparam{type}{May be one of the following: + +\twocolwidtha{5cm} +\begin{twocollist} +\twocolitem{{\bf \indexit{wxBITMAP\_TYPE\_BMP}}}{Load a Windows bitmap file.} +\twocolitem{{\bf \indexit{wxBITMAP\_TYPE\_BMP\_RESOURCE}}}{Load a Windows bitmap from the resource database.} +\twocolitem{{\bf \indexit{wxBITMAP\_TYPE\_GIF}}}{Load a GIF bitmap file.} +\twocolitem{{\bf \indexit{wxBITMAP\_TYPE\_XBM}}}{Load an X bitmap file.} +\twocolitem{{\bf \indexit{wxBITMAP\_TYPE\_XPM}}}{Load an XPM bitmap file.} +\twocolitem{{\bf \indexit{wxBITMAP\_TYPE\_RESOURCE}}}{Load a Windows resource name.} +\end{twocollist} + +The validity of these flags depends on the platform and wxWindows configuration. +If all possible wxWindows settings are used, the Windows platform supports BMP, BMP\_RESOURCE, +XPM\_DATA, and XPM. Under X, the available formats are BMP, GIF, XBM, and XPM.} + +\wxheading{Remarks} + +The first form constructs a bitmap object with no data; an assignment or another member function such as Create +or LoadFile must be called subsequently. + +The second and third forms provide copy constructors. Note that these do not copy the +bitmap data, but instead a pointer to the data, keeping a reference count. They are therefore +very efficient operations. + +The fourth form constructs a bitmap from data whose type and value depends on +the value of the {\it type} argument. + +The fifth form constructs a (usually monochrome) bitmap from an array of pixel values, under both +X and Windows. + +The sixth form constructs a new bitmap. + +The seventh form constructs a bitmap from pixmap (XPM) data, if wxWindows has been configured +to incorporate this feature. + +To use this constructor, you must first include an XPM file. For +example, assuming that the file {\tt mybitmap.xpm} contains an XPM array +of character pointers called mybitmap: + +\begin{verbatim} +#include "mybitmap.xpm" + +... + +wxBitmap *bitmap = new wxBitmap(mybitmap); +\end{verbatim} + +The eighth form constructs a bitmap from a file or resource. {\it name} can refer +to a resource name under MS Windows, or a filename under MS Windows and X. + +Under Windows, {\it type} defaults to wxBITMAP\_TYPE\_BMP\_RESOURCE. +Under X, {\it type} defaults to wxBITMAP\_TYPE\_XBM. + +\wxheading{See also} + +\helpref{wxBitmap::LoadFile}{wxbitmaploadfile} + +\membersection{wxBitmap::\destruct{wxBitmap}} + +\func{}{\destruct{wxBitmap}}{\void} + +Destroys the wxBitmap object and possibly the underlying bitmap data. +Because reference counting is used, the bitmap may not actually be +destroyed at this point - only when the reference count is zero will the +data be deleted. + +If the application omits to delete the bitmap explicitly, the bitmap will be +destroyed automatically by wxWindows when the application exits. + +Do not delete a bitmap that is selected into a memory device context. + +\membersection{wxBitmap::AddHandler}\label{wxbitmapaddhandler} + +\func{static void}{AddHandler}{\param{wxBitmapHandler*}{ handler}} + +Adds a handler to the end of the static list of format handlers. + +\docparam{handler}{A new bitmap format handler object. There is usually only one instance +of a given handler class in an application session.} + +\wxheading{See also} + +\helpref{wxBitmapHandler}{wxbitmaphandler} + +\membersection{wxBitmap::CleanUpHandlers} + +\func{static void}{CleanUpHandlers}{\void} + +Deletes all bitmap handlers. + +This function is called by wxWindows on exit. + +\membersection{wxBitmap::Create} + +\func{virtual bool}{Create}{\param{const int}{ width}, \param{const int}{ height}, \param{const int}{ depth = -1}} + +Creates a fresh bitmap. If the final argument is omitted, the display depth of +the screen is used. + +\func{virtual bool}{Create}{\param{void*}{ data}, \param{const int}{ type}, \param{const int}{ width}, \param{const int}{ height}, \param{const int}{ depth = -1}} + +Creates a bitmap from the given data, which can be of arbitrary type. + +\wxheading{Parameters} + +\docparam{width}{The width of the bitmap in pixels.} + +\docparam{height}{The height of the bitmap in pixels.} + +\docparam{depth}{The depth of the bitmap in pixels. If this is -1, the screen depth is used.} + +\docparam{data}{Data whose type depends on the value of {\it type}.} + +\docparam{type}{A bitmap type identifier - see \helpref{wxBitmap::wxBitmap}{wxbitmapconstr} for a list +of possible values.} + +\wxheading{Return value} + +TRUE if the call succeeded, FALSE otherwise. + +\wxheading{Remarks} + +The first form works on all platforms. The portability of the second form depends on the +type of data. + +\wxheading{See also} + +\helpref{wxBitmap::wxBitmap}{wxbitmapconstr} + +\membersection{wxBitmap::FindHandler} + +\func{static wxBitmapHandler*}{FindHandler}{\param{const wxString\& }{name}} + +Finds the handler with the given name. + +\func{static wxBitmapHandler*}{FindHandler}{\param{const wxString\& }{extension}, \param{long}{ bitmapType}} + +Finds the handler associated with the given extension and type. + +\func{static wxBitmapHandler*}{FindHandler}{\param{long }{bitmapType}} + +Finds the handler associated with the given bitmap type. + +\docparam{name}{The handler name.} + +\docparam{extension}{The file extension, such as ``bmp".} + +\docparam{bitmapType}{The bitmap type, such as wxBITMAP\_TYPE\_BMP.} + +\wxheading{Return value} + +A pointer to the handler if found, NULL otherwise. + +\wxheading{See also} + +\helpref{wxBitmapHandler}{wxbitmaphandler} + +\membersection{wxBitmap::GetDepth} + +\constfunc{int}{GetDepth}{\void} + +Gets the colour depth of the bitmap. A value of 1 indicates a +monochrome bitmap. + +\membersection{wxBitmap::GetHandlers} + +\func{static wxList\&}{GetHandlers}{\void} + +Returns the static list of bitmap format handlers. + +\wxheading{See also} + +\helpref{wxBitmapHandler}{wxbitmaphandler} + +\membersection{wxBitmap::GetHeight}\label{wxbitmapgetheight} + +\constfunc{int}{GetHeight}{\void} + +Gets the height of the bitmap in pixels. + +\membersection{wxBitmap::GetPalette}\label{wxbitmapgetpalette} + +\constfunc{wxPalette*}{GetPalette}{\void} + +Gets the associated palette (if any) which may have been loaded from a file +or set for the bitmap. + +\wxheading{See also} + +\helpref{wxPalette}{wxpalette} + +\membersection{wxBitmap::GetMask}\label{wxbitmapgetmask} + +\constfunc{wxMask*}{GetMask}{\void} + +Gets the associated mask if any) which may have been loaded from a file +or set for the bitmap. + +\wxheading{See also} + +\helpref{wxBitmap::SetMask}{wxbitmapsetmask}, \helpref{wxMask}{wxmask} + +\membersection{wxBitmap::GetWidth}\label{wxbitmapgetwidth} + +\constfunc{int}{GetWidth}{\void} + +Gets the width of the bitmap in pixels. + +\wxheading{See also} + +\helpref{wxBitmap::GetHeight}{wxbitmapgetheight} + +\membersection{wxBitmap::InitStandardHandlers} + +\func{static void}{InitStandardHandlers}{\void} + +Adds the standard bitmap format handlers, which, depending on wxWindows +configuration, can be handlers for Windows bitmap, Windows bitmap resource, and XPM. + +This function is called by wxWindows on startup. + +\wxheading{See also} + +\helpref{wxBitmapHandler}{wxbitmaphandler} + +\membersection{wxBitmap::InsertHandler} + +\func{static void}{InsertHandler}{\param{wxBitmapHandler*}{ handler}} + +Adds a handler at the start of the static list of format handlers. + +\docparam{handler}{A new bitmap format handler object. There is usually only one instance +of a given handler class in an application session.} + +\wxheading{See also} + +\helpref{wxBitmapHandler}{wxbitmaphandler} + +\membersection{wxBitmap::LoadFile}\label{wxbitmaploadfile} + +\func{bool}{LoadFile}{\param{const wxString\&}{ name}, \param{const long}{ type}} + +Loads a bitmap from a file or resource. + +\wxheading{Parameters} + +\docparam{name}{Either a filename or a Windows resource name. +The meaning of {\it name} is determined by the {\it type} parameter.} + +\docparam{type}{One of the following values: + +\twocolwidtha{5cm} +\begin{twocollist} +\twocolitem{{\bf wxBITMAP\_TYPE\_BMP}}{Load a Windows bitmap file.} +\twocolitem{{\bf wxBITMAP\_TYPE\_BMP\_RESOURCE}}{Load a Windows bitmap from the resource database.} +\twocolitem{{\bf wxBITMAP\_TYPE\_GIF}}{Load a GIF bitmap file.} +\twocolitem{{\bf wxBITMAP\_TYPE\_XBM}}{Load an X bitmap file.} +\twocolitem{{\bf wxBITMAP\_TYPE\_XPM}}{Load an XPM bitmap file.} +\end{twocollist} + +The validity of these flags depends on the platform and wxWindows configuration.} + +\wxheading{Return value} + +TRUE if the operation succeeded, FALSE otherwise. + +\wxheading{Remarks} + +A palette may be associated with the bitmap if one exists (especially for +colour Windows bitmaps), and if the code supports it. You can check +if one has been created by using the \helpref{GetPalette}{wxbitmapgetpalette} member. + +\wxheading{See also} + +\helpref{wxBitmap::SaveFile}{wxbitmapsavefile} + +\membersection{wxBitmap::Ok}\label{wxbitmapok} + +\constfunc{bool}{Ok}{\void} + +Returns TRUE if bitmap data is present. + +\membersection{wxBitmap::RemoveHandler} + +\func{static bool}{RemoveHandler}{\param{const wxString\& }{name}} + +Finds the handler with the given name, and removes it. The handler +is not deleted. + +\docparam{name}{The handler name.} + +\wxheading{Return value} + +TRUE if the handler was found and removed, FALSE otherwise. + +\wxheading{See also} + +\helpref{wxBitmapHandler}{wxbitmaphandler} + +\membersection{wxBitmap::SaveFile}\label{wxbitmapsavefile} + +\func{bool}{SaveFile}{\param{const wxString\& }{name}, \param{int}{ type}, \param{wxPalette* }{palette = NULL}} + +Saves a bitmap in the named file. + +\wxheading{Parameters} + +\docparam{name}{A filename. The meaning of {\it name} is determined by the {\it type} parameter.} + +\docparam{type}{One of the following values: + +\twocolwidtha{5cm} +\begin{twocollist} +\twocolitem{{\bf wxBITMAP\_TYPE\_BMP}}{Save a Windows bitmap file.} +\twocolitem{{\bf wxBITMAP\_TYPE\_GIF}}{Save a GIF bitmap file.} +\twocolitem{{\bf wxBITMAP\_TYPE\_XBM}}{Save an X bitmap file.} +\twocolitem{{\bf wxBITMAP\_TYPE\_XPM}}{Save an XPM bitmap file.} +\end{twocollist} + +The validity of these flags depends on the platform and wxWindows configuration.} + +\docparam{palette}{An optional palette used for saving the bitmap. TODO: this parameter should +probably be eliminated; instead the app should set the palette before saving.} + +\wxheading{Return value} + +TRUE if the operation succeeded, FALSE otherwise. + +\wxheading{Remarks} + +Depending on how wxWindows has been configured, not all formats may be available. + +\wxheading{See also} + +\helpref{wxBitmap::LoadFile}{wxbitmaploadfile} + +\membersection{wxBitmap::SetDepth}\label{wxbitmapsetdepth} + +\func{void}{SetDepth}{\param{int }{depth}} + +Sets the depth member (does not affect the bitmap data). + +\wxheading{Parameters} + +\docparam{depth}{Bitmap depth.} + +\membersection{wxBitmap::SetHeight}\label{wxbitmapsetheight} + +\func{void}{SetHeight}{\param{int }{height}} + +Sets the height member (does not affect the bitmap data). + +\wxheading{Parameters} + +\docparam{height}{Bitmap height in pixels.} + +\membersection{wxBitmap::SetMask}\label{wxbitmapsetmask} + +\func{void}{SetMask}{\param{wxMask* }{mask}} + +Sets the mask for this bitmap. + +\wxheading{Remarks} + +The bitmap object owns the mask once this has been called. + +\wxheading{See also} + +\helpref{wxBitmap::GetMask}{wxbitmapgetmask}, \helpref{wxMask}{wxmask} + +\membersection{wxBitmap::SetOk} + +\func{void}{SetOk}{\param{int }{isOk}} + +Sets the validity member (does not affect the bitmap data). + +\wxheading{Parameters} + +\docparam{isOk}{Validity flag.} + +\membersection{wxBitmap::SetPalette}\label{wxbitmapsetpalette} + +\func{void}{SetPalette}{\param{wxPalette* }{palette}} + +Sets the associated palette: it will be deleted in the wxBitmap +destructor, so if you do not wish it to be deleted automatically, +reset the palette to NULL before the bitmap is deleted. + +\wxheading{Parameters} + +\docparam{palette}{The palette to set.} + +\wxheading{Remarks} + +The bitmap object owns the palette once this has been called. + +\wxheading{See also} + +\helpref{wxPalette}{wxpalette} + +\membersection{wxBitmap::SetWidth} + +\func{void}{SetWidth}{\param{int }{width}} + +Sets the width member (does not affect the bitmap data). + +\wxheading{Parameters} + +\docparam{width}{Bitmap width in pixels.} + +\membersection{wxBitmap::operator $=$} + +\func{wxBitmap\& }{operator $=$}{\param{const wxBitmap\& }{bitmap}} + +Assignment operator. This operator does not copy any data, but instead +passes a pointer to the data in {\it bitmap} and increments a reference +counter. It is a fast operation. + +\wxheading{Parameters} + +\docparam{bitmap}{Bitmap to assign.} + +\wxheading{Return value} + +Returns 'this' object. + +\membersection{wxBitmap::operator $==$} + +\func{bool}{operator $==$}{\param{const wxBitmap\& }{bitmap}} + +Equality operator. This operator tests whether the internal data pointers are +equal (a fast test). + +\wxheading{Parameters} + +\docparam{bitmap}{Bitmap to compare with 'this'} + +\wxheading{Return value} + +Returns TRUE if the bitmaps were effectively equal, FALSE otherwise. + +\membersection{wxBitmap::operator $!=$} + +\func{bool}{operator $!=$}{\param{const wxBitmap\& }{bitmap}} + +Inequality operator. This operator tests whether the internal data pointers are +unequal (a fast test). + +\wxheading{Parameters} + +\docparam{bitmap}{Bitmap to compare with 'this'} + +\wxheading{Return value} + +Returns TRUE if the bitmaps were unequal, FALSE otherwise. + +\section{\class{wxBitmapHandler}}\label{wxbitmaphandler} + +\overview{Overview}{wxbitmapoverview} + +This is the base class for implementing bitmap file loading/saving, and bitmap creation from data. +It is used within wxBitmap and is not normally seen by the application. + +If you wish to extend the capabilities of wxBitmap, derive a class from wxBitmapHandler +and add the handler using \helpref{wxBitmap::AddHandler}{wxbitmapaddhandler} in your +application initialisation. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxBitmap}{wxbitmap}, \helpref{wxIcon}{wxicon}, \helpref{wxCursor}{wxcursor} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxBitmapHandler::wxBitmapHandler}\label{wxbitmaphandlerconstr} + +\func{}{wxBitmapHandler}{\void} + +Default constructor. In your own default constructor, initialise the members +m\_name, m\_extension and m\_type. + +\membersection{wxBitmapHandler::\destruct{wxBitmapHandler}} + +\func{}{\destruct{wxBitmapHandler}}{\void} + +Destroys the wxBitmapHandler object. + +\membersection{wxBitmapHandler::Create} + +\func{virtual bool}{Create}{\param{wxBitmap* }{bitmap}, \param{void*}{ data}, \param{const int}{ type}, \param{const int}{ width}, \param{const int}{ height}, \param{const int}{ depth = -1}} + +Creates a bitmap from the given data, which can be of arbitrary type. The wxBitmap object {\it bitmap} is +manipulated by this function. + +\wxheading{Parameters} + +\docparam{bitmap}{The wxBitmap object.} + +\docparam{width}{The width of the bitmap in pixels.} + +\docparam{height}{The height of the bitmap in pixels.} + +\docparam{depth}{The depth of the bitmap in pixels. If this is -1, the screen depth is used.} + +\docparam{data}{Data whose type depends on the value of {\it type}.} + +\docparam{type}{A bitmap type identifier - see \helpref{wxBitmapHandler::wxBitmapHandler}{wxbitmapconstr} for a list +of possible values.} + +\wxheading{Return value} + +TRUE if the call succeeded, FALSE otherwise (the default). + +\membersection{wxBitmapHandler::GetName} + +\constfunc{wxString}{GetName}{\void} + +Gets the name of this handler. + +\membersection{wxBitmapHandler::GetExtension} + +\constfunc{wxString}{GetExtension}{\void} + +Gets the file extension associated with this handler. + +\membersection{wxBitmapHandler::GetType} + +\constfunc{long}{GetType}{\void} + +Gets the bitmap type associated with this handler. + +\membersection{wxBitmapHandler::LoadFile}\label{wxbitmaphandlerloadfile} + +\func{bool}{LoadFile}{\param{wxBitmap* }{bitmap}, \param{const wxString\&}{ name}, \param{const long}{ type}} + +Loads a bitmap from a file or resource, putting the resulting data into {\it bitmap}. + +\wxheading{Parameters} + +\docparam{bitmap}{The bitmap object which is to be affected by this operation.} + +\docparam{name}{Either a filename or a Windows resource name. +The meaning of {\it name} is determined by the {\it type} parameter.} + +\docparam{type}{See \helpref{wxBitmap::wxBitmap}{wxbitmapconstr} for values this can take.} + +\wxheading{Return value} + +TRUE if the operation succeeded, FALSE otherwise. + +\wxheading{See also} + +\helpref{wxBitmap::LoadFile}{wxbitmaploadfile}\\ +\helpref{wxBitmap::SaveFile}{wxbitmapsavefile}\\ +\helpref{wxBitmapHandler::SaveFile}{wxbitmaphandlersavefile} + +\membersection{wxBitmapHandler::SaveFile}\label{wxbitmaphandlersavefile} + +\func{bool}{SaveFile}{\param{wxBitmap* }{bitmap}, \param{const wxString\& }{name}, \param{int}{ type}, \param{wxPalette* }{palette = NULL}} + +Saves a bitmap in the named file. + +\wxheading{Parameters} + +\docparam{bitmap}{The bitmap object which is to be affected by this operation.} + +\docparam{name}{A filename. The meaning of {\it name} is determined by the {\it type} parameter.} + +\docparam{type}{See \helpref{wxBitmap::wxBitmap}{wxbitmapconstr} for values this can take.} + +\docparam{palette}{An optional palette used for saving the bitmap. TODO: this parameter should +probably be eliminated; instead the app should set the palette before saving.} + +\wxheading{Return value} + +TRUE if the operation succeeded, FALSE otherwise. + +\wxheading{See also} + +\helpref{wxBitmap::LoadFile}{wxbitmaploadfile}\\ +\helpref{wxBitmap::SaveFile}{wxbitmapsavefile}\\ +\helpref{wxBitmapHandler::LoadFile}{wxbitmaphandlerloadfile} + +\membersection{wxBitmapHandler::SetName} + +\func{void}{SetName}{\param{const wxString\& }{name}} + +Sets the handler name. + +\wxheading{Parameters} + +\docparam{name}{Handler name.} + +\membersection{wxBitmapHandler::SetExtension} + +\func{void}{SetExtension}{\param{const wxString\& }{extension}} + +Sets the handler extension. + +\wxheading{Parameters} + +\docparam{extension}{Handler extension.} + +\membersection{wxBitmapHandler::SetType} + +\func{void}{SetType}{\param{long }{type}} + +Sets the handler type. + +\wxheading{Parameters} + +\docparam{name}{Handler type.} + + diff --git a/docs/latex/wx/body.tex b/docs/latex/wx/body.tex new file mode 100644 index 0000000000..8079fbc639 --- /dev/null +++ b/docs/latex/wx/body.tex @@ -0,0 +1,924 @@ +\chapter{Introduction}\label{introduction} +\pagenumbering{arabic}% +\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% + +\section{What is wxWindows?} + +wxWindows is a C++ framework providing GUI (Graphical User +Interface) and other facilities on more than one platform. It currently +supports subsets of Motif, Xt and MS Windows (16-bit, Windows 95 and Windows NT). + +wxWindows was originally developed at the Artificial Intelligence +Applications Institute, University of Edinburgh, for internal use. +wxWindows has been released into the public domain in the hope +that others will also find it useful. Version 2.0 is written and +maintained by Julian Smart and Markus Holzem, with support from users. + +This manual discusses wxWindows in the context of multi-platform +development.\helpignore{For more detail on the wxWindows version 2.0 API +(Application Programming Interface) please refer to the separate +wxWindows reference manual.} + +Please note that in the following, ``MS Windows" often refers to all +platforms related to Microsoft Windows, including 16-bit and 32-bit +variants, unless otherwise stated. All trademarks are acknowledged. + +\section{Why another cross-platform development tool?} + +wxWindows was developed to provide a cheap and flexible way to maximize +investment in GUI application development. While a number of commercial +class libraries already exist for cross-platform development, +none met all of the following criteria: + +\begin{enumerate}\itemsep=0pt +\item low price; +\item source availability; +\item simplicity of programming; +\item support for a wide range of compilers. +\end{enumerate} + +As public domain software and a project open to everyone, wxWindows has +benefited from comments, ideas, bug fixes, enhancements and the sheer +enthusiasm of users, especially via the Internet. This gives wxWindows a +certain advantage over its commercial brothers, and a robustness against +the transience of one individual or company. This openness and +availability of source code is especially important when the future of +thousands of lines of application code may depend upon the longevity of +the underlying class library. + +In writing wxWindows, completeness has sometimes been traded for +portability and simplicity of programming. Version 2.0 goes much +further than previous versions in terms of generality and features, +allowing applications to be produced +that are often indistinguishable from those produced using single-platform +toolkits +such as Motif and MFC. + +wxWindows 2.0 currently maps to two native APIs: Motif and +MS Windows. An Xt port is also in preparation. + +The importance of using a platform-independent class library cannot be +overstated, since GUI application development is very time-consuming, +and sustained popularity of particular GUIs cannot be guaranteed. +Code can very quickly become obsolete if it addresses the wrong +platform or audience. wxWindows helps to insulate the programmer from +these winds of change. Although wxWindows may not be suitable for +every application, it provides access to most of the functionality a +GUI program normally requires, plus some extras such as form +construction, interprocess communication and PostScript output, and +can of course be extended as needs dictate. As a bonus, it provides +a cleaner programming interface than the native +APIs. Programmers may find it worthwhile to use wxWindows even if they +are developing on only one platform. + +It is impossible to sum up the functionality of wxWindows in a few paragraphs, but +here are some of the benefits: + +\begin{itemize}\itemsep=0pt +\item Low cost (free, in fact!) +\item You get the source. +\item Several example programs. +\item Over 200 pages of printable and on-line documentation. +\item Simple-to-use, object-oriented API. +\item Graphics calls include splines, polylines, rounded rectangles, etc. +\item Constraint-based layout option. +\item Print/preview and document/view architectures. +\item Status line facility, toolbar +\item Easy, object-oriented interprocess comms (DDE subset) under UNIX and +MS Windows. +\item Encapsulated PostScript generation under UNIX, normal MS Windows printing on the +PC. +\item MDI support under Windows. +\item Can be used to create DLLs under Windows, dynamic libraries on the Sun. +\item Common dialogs for file browsing, printing, colour selection, etc. +\item Under MS Windows, support for creating metafiles and copying +them to the clipboard. +\item Hypertext help facility, with an API for invocation from applications. +\item Dialog Editor for building dialogs. +\end{itemize} + +\section{Changes from version 1.xx}\label{versionchanges} + +These are a few of the major differences between versions 1.xx and 2.0. + +Removals: + +\begin{itemize}\itemsep=0pt +\item XView is no longer supported; +\item Mac is not yet supported; +\item all controls (panel items) no longer have labels attached to them; +\item wxForm removed; +\item wxCanvasDC, wxPanelDC removed (replaced by wxClientDC, wxWindowDC, wxPaintDC which +can be used for any window); +\item wxMultiText, wxTextWindow, wxText removed and replaced by wxTextCtrl; +\item classes no longer divided into generic and platform-specific parts, for efficiency. +\end{itemize} + +Additions and changes: + +\begin{itemize}\itemsep=0pt +\item class hierarchy changed, and restrictions about subwindow nesting lifted; +\item header files reorganised to conform to normal C++ standards; +\item classes less dependent on each another, to reduce executable size; +\item wxString used instead of char* wherever possible; +\item the number of separate but mandatory utilities reduced; +\item the event system has been overhauled, with +virtual functions and callbacks being replaced with MFC-like event tables; +\item new controls, such as wxTreeCtrl, wxListCtrl, wxSpinButton; +\item less inconsistency about what events can be handled, so for example +mouse clicks or key presses on controls can now be intercepted; +\item the status bar is now a separate class, wxStatusBar, and is +implemented in generic wxWindows code; +\item some renaming of controls for greater consistency; +\item wxBitmap has the notion of bitmap handlers to allow for extension to new formats +without ifdefing; +\item new dialogs: wxPageSetupDialog, wxFileDialog, wxDirDialog, +wxMessageDialog, wxSingleChoiceDialog, wxTextEntryDialog; +\item GDI objects are reference-counted and are now passed to most functions +by reference, making memory management far easier; +\item wxSystemSettings class allows querying for various system-wide properties +such as dialog font, colours, user interface element sizes, and so on; +\item better platform look and feel conformance; +\item toolbar functionality now separated out into a family of classes with the +same API; +\item device contexts are no longer accessed using wxWindow::GetDC - they are created +temporarily with the window as an argument; +\item events from sliders and scrollbars can be handled more flexibly; +\item the handling of window close events has been changed in line with the new +event system, but backward {\bf OnClose} compatibility has been retained; +\item the concept of {\it validator} has been added to allow much easier coding of +the relationship between controls and application data; +\item the documentation has been revised, with more cross-referencing. +\end{itemize} + +Platform-specific changes: + +\begin{itemize}\itemsep=0pt +\item The Windows header file (windows.h) is no longer included by wxWindows headers; +\item wx.dll supported under Visual C++; +\item the full range of Windows 95 window decorations are supported, such as modal frame +borders; +\item MDI classes brought out of wxFrame into separate classes, and made more flexible. +\end{itemize} + +\section{wxWindows requirements}\label{requirements} + +To make use of wxWindows, you currently need one or both of the +following setups. + +(a) PC: + +\begin{enumerate}\itemsep=0pt +\item A 486 or higher PC running MS Windows. +\item One of Microsoft Visual C++, Borland C++, Watcom C++, MetroWerks C++, +Symantec C++, GNU-WIN32. +\item At least 30 MB of disk space. +\end{enumerate} + +(b) UNIX: + +\begin{enumerate}\itemsep=0pt +\item Almost any C++ compiler, including GNU C++. +\item Almost any UNIX workstation (VMS is supported too) and Motif 1.2 or higher (not necessary +for the Xt version) +\item At least 30 MB of disk space. +\end{enumerate} + +\section{Availability and location of wxWindows} + +wxWindows is currently available from the Artificial Intelligence +Applications Institute by anonymous FTP and World Wide Web: + +\begin{verbatim} + ftp://ftp.aiai.ed.ac.uk/pub/packages/wxwin + http://web.ukonline.co.uk/julian.smart/wxwin +\end{verbatim} + +\section{Acknowledgments} + +Thanks are due to the AIAI for being willing to release wxWindows into +the public domain, and to our patient wives Harriet and Tanja. + +The Internet has been an essential prop when coming up against tricky +problems. Thanks to those who answered our +queries or submitted bug fixes and enhancements; wxWindows is very +much a team effort. + +Hermann Dunkel contributed XPM support; Arthur Seaton wrote the memory +checking code; Olaf Klein and Patrick Halke wrote the ODBC classes; +Harri Pasanen and Robin Dunn wrote wxPython and contributed to the +wxExtend library. + +Markus Holzem write the Xt port. Jonathan Tonberg, Bill Hale, +Cecil Coupe, Thomaso Paoletti, Thomas Fettig, and others slaved away +writing the Mac port. Keith Gary Boyce ported wxWindows to the free +GNU-WIN32 compiler, refusing to give up when shortcuts were suggested. + +Many thanks also to: Timothy Peters, Jamshid Afshar, Patrick Albert, C. Buckley, +Robin Corbet, Harco de Hilster, Josep Fortiana, Torsten Liermann, Tatu +M\"{a}nnist\"{o}, Ian Perrigo, Giordano Pezzoli, Petr Smilauer, Neil Smith, +Kari Syst\"{a}, Jyrki Tuomi, Edward Zimmermann, Ian Brown, and many +others. + +`Graphplace', the basis for the wxGraphLayout library, is copyright Dr. Jos +T.J. van Eijndhoven of Eindhoven University of Technology. The code has +been used in wxGraphLayout with his permission. + +We also acknowledge the author of XFIG, the excellent UNIX drawing tool, +from the source of which we have borrowed some spline drawing code. +His copyright is included below. + +{\it XFig2.1 is copyright (c) 1985 by Supoj Sutanthavibul. Permission to +use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided +that the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of M.I.T. not be used in advertising or +publicity pertaining to distribution of the software without specific, +written prior permission. M.I.T. makes no representations about the +suitability of this software for any purpose. It is provided ``as is'' +without express or implied warranty.} + +\chapter{Multi-platform development with wxWindows}\label{multiplat} +\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% + +This chapter describes the practical details of using wxWindows. Please +see the file install.txt for up-to-date installation instructions, and +changes.txt for differences between versions. + +\section{Include files} + +The main include file is {\tt "wx.h"}; this includes the most commonly +used modules of wxWindows. + +To save on compilation time, include only those header files relevant to the +source file. If you are using precompiled headers, you should include +the following section before any other includes: + +\begin{verbatim} +// For compilers that support precompilation, includes "wx.h". +#include "wx_prec.h" + +#ifdef __BORLANDC__ +#pragma hdrstop +#endif + +#ifndef WX_PRECOMP +... include minimum set of files necessary here ... +#endif + +... now your other include files ... +\end{verbatim} + +The file {\tt "wx\_prec.h"} includes {\tt "wx.h"}. Although this incantation +may seem quirky, it is in fact the end result of a lot of experimentation, +and several Windows compilers to use precompilation (those tested are Microsoft Visual C++, Borland C++ +and Watcom C++). + +Borland precompilation is largely automatic. Visual C++ requires specification of {\tt "wx\_prec.h"} as +the file to use for precompilation. Watcom C++ is automatic apart from the specification of +the .pch file. Watcom C++ is strange in requiring the precompiled header to be used only for +object files compiled in the same directory as that in which the precompiled header was created. +Therefore, the wxWindows Watcom C++ makefiles go through hoops deleting and recreating +a single precompiled header file for each module, thus preventing an accumulation of many +multi-megabyte .pch files. + +\section{Libraries} + +Under UNIX, use the library libwx\_motif.a +(Motif). Under Windows, use the library wx.lib for stand-alone Windows +applications, or wxdll.lib for creating DLLs. + +\section{Configuration} + +The following lists the options configurable in the file +\rtfsp{\tt include/base/wx\_setup.h.} Some settings are a matter +of taste, some help with platform-specific problems, and +others can be set to minimize the size of the library. + +\subsection{General features} + +\begin{twocollist}\itemsep=0pt +\twocolitem{USE\_CLIPBOARD}{If 1, clipboard code is compiled (Windows only).} +\twocolitem{USE\_CONSTRAINTS}{If 1, the constaint-based window layout system is compiled.} +\twocolitem{USE\_DOC\_VIEW\_ARCHITECTURE}{If 1, wxDocument, wxView and related classes are compiled.} +\twocolitem{USE\_DYNAMIC\_CLASSES}{If 1, the run-time class macros and classes are compiled. Recommended, +and necessary for the document/view framework.} +\twocolitem{USE\_EXTENDED\_STATICS}{If 1, wxStaticItem code is compiled for enhanced panel decorative items. +Not rigorously tested, and not documented.} +\twocolitem{USE\_HELP}{If 1, interface to help system is compiled.} +\twocolitem{USE\_GAUGE}{If 1, the wxGauge class compiled.} +\twocolitem{USE\_GLOBAL\_MEMORY\_OPERATORS}{If 1, redefines global new and delete operators to be compatible +with the extended arguments of the debugging wxObject new and delete operators. If this causes problems +for your compiler, set to 0.} +\twocolitem{USE\_GNU\_WXSTRING}{If 1, the enhanced GNU wxString and regular expression class are compiled +in place of the normal wxString class. See contrib/wxstring for details.} +\twocolitem{USE\_IMAGE\_LOADING\_IN\_MSW}{Use code to allow dynamic .BMP loading +under MS Windows.} +\twocolitem{USE\_IMAGE\_LOADING\_IN\_X}{Use code in utils/image to allow dynamic .BMP/.GIF loading +under X.} +\twocolitem{USE\_RESOURCE\_LOADING\_IN\_MSW}{Use code to allow dynamic .ICO/.CUR loading +under MS Windows.} +\twocolitem{USE\_IPC}{If 1, interprocess communication code is compiled.} +\twocolitem{USE\_MEMORY\_TRACING}{If 1, enables debugging versions of wxObject::new and wxObject::delete +if the value of DEBUG is defined to more than 0.} +\twocolitem{USE\_METAFILE}{If 1, Windows Metafile code is compiled.} +\twocolitem{USE\_PANEL\_IN\_PANEL}{If 1, experimental panel-in-panel code is used +for common dialog boxes. Not recommended, since tab traversal can suffer.} +\twocolitem{USE\_POSTSCRIPT}{If 1, PostScript code is compiled.} +\twocolitem{USE\_POSTSCRIPT\_ARCHITECTURE\_IN\_MSW}{Set to 1 to enable the printing architecture +to make use of either native Windows printing facilities, or the wxPostScriptDC class depending +on the wxApp::SetPrintMode setting.} +\twocolitem{USE\_PRINTING\_ARCHITECTURE}{If 1, wxPrinter, wxPrintout and related classes are compiled +for the print/preview framework.} +\twocolitem{USE\_RESOURCES}{If 1, win.ini or .Xdefaults-style resource read/write code is compiled.} +\twocolitem{USE\_SCROLLBAR}{If 1, wxScrollBar class is compiled. Not rigorously tested, and not documented.} +\twocolitem{USE\_SPLINES}{If 1, spline code is compiled.} +\twocolitem{USE\_TOOLBAR}{If 1, the wxToolBar class is compiled.} +\twocolitem{USE\_TYPEDEFS}{If 1, a typedef will be used for wxPoint instead of +a class declaration, to reduce overhead and avoid a Microsoft C++ memory bug.} +\twocolitem{USE\_VLBOX}{If 1, wxVirtListBox code is compiled for a virtual listbox item. +Not rigorously tested, and not documented.} +\twocolitem{USE\_WX\_RESOURCES}{If 1, wxWindows resource file (.WXR) code is compiled.} +\twocolitem{USE\_XFIG\_SPLINE\_CODE}{If 1, XFig-derived code is used for spline +drawing. If 0, AIAI code is used, which is slower.} +\twocolitem{USE\_XPM\_IN\_X}{If 1, XPM (colour pixmap) facilities will be compiled and used +in wxBitmap under X.} +\twocolitem{USE\_XPM\_IN\_MSW}{If 1, XPM (colour pixmap) facilities will be compiled and used +in wxBitmap under MS Windows.} +\end{twocollist} + +\subsection{X features} + +\begin{twocollist} +\twocolitem{DEFAULT\_FILE\_SELECTOR\_SIZE}{Let Motif choose the size of +XmFileSelectionBox. Otherwise, size is 500x600.} +\twocolitem{PIXEL0\_DISABLE}{Define to disallow allocation of pixel 0 (wxXOR problem).} +\twocolitem{USE\_GADGETS}{Use gadgets where possible rather than Widgets for items. +Default is to use Gadgets.} +\twocolitem{USE\_BUTTON\_GADGET}{Use gadgets for buttons. This can intefere with +default button selection, so the default is zero.} +\end{twocollist} + +\subsection{Windows and NT features} + +\begin{twocollist} +\twocolitem{CTL3D}{CTL3D should only be used for 16-bit Windows programs. +On Windows 95 and NT, native 3D effects are used. If you want to +use it and don't already have CTL3D installed, copy the files in +contrib/ctl3d to appropriate places (ctl3dv2.lib/ctl3d32.lib into your compiler lib +directory, ctl3d.h into an include directory, and ctl3dv2.dll into +windows/system). You may need to find a compiler-specific version of ctl3dv2.lib +or ctl3d32.lib. Define CTL3D to be 1 in wx\_setup.h and link your executables with ctl3dv2.lib +or ctl3d32.lib.} +\twocolitem{USE\_ITSY\_BITSY}{If 1, compiles in code to support tiny window titlebars.} +\twocolitem{USE\_ODBC}{If 1, compiles wxDatabase and wxRecordSet classes for ODBC +access. Requires sql.h, sqlext.h files if set to 1 (see topic on database support).} +\end{twocollist} + +\section{Makefiles} + +At the moment there is no attempt to make UNIX makefiles and +PC makefiles compatible, i.e. one makefile is required for +each environment. + +Sample makefiles for UNIX (suffix .UNX), MS C++ (suffix .DOS and .NT), Borland +C++ (.BCC) and Symantec C++ (.SC) are included for the library, demos +and utilities. The NT, Borland and Symantec makefiles cannot be +guaranteed to be up-to-date since the author does not have +these compilers. + +The controlling makefile for wxWindows is in the platform-specific +directory, such as {\tt src/msw} or {\tt src/x}. This makefile will +recursively execute the makefile in {\tt src/base}. + +\subsection{Windows makefiles} + +For Microsoft C++, normally it is only necessary to type {\tt nmake -f +makefile.dos} (or an alias or batch file which does this). By default, +binaries are made with debugging information, and no optimization. Use +FINAL=1 on the command line to remove debugging information (this only +really necessary at the link stage), and DLL=1 to make a DLL version of +the library, if building a library. + +\subsection{UNIX makefiles} + +TODO. + +Debugging information is included by default; you may add DEBUG= as an +argument to make to compile without it, or use the UNIX {\bf strip} +command to remove debugging information from an executable. + +\normalbox{{\it Important note:} Most compiler flags are kept centrally in +src/make.env, which is included by all other makefiles. This is the +file to edit to tailor wxWindows compilation to your environment.} + +\section{Windows-specific files} + +wxWindows application compilation under MS Windows requires at least two +extra files, resource and module definition files. + +\subsection{Resource file}\label{resources} + +The least that must be defined in the Windows resource file (extension RC) +is the following statement: + +\begin{verbatim} +rcinclude wx.rc +\end{verbatim} + +which includes essential internal wxWindows definitions. The resource script +may also contain references to icons, cursors, etc., for example: + +\begin{verbatim} +wxicon icon wx.ico +\end{verbatim} + +The icon can then be referenced by name when creating a frame icon. See +the MS Windows SDK documentation. + +\normalbox{Note: include wx.rc {\it after} any ICON statements +so programs that search your executable for icons (such +as the Program Manager) find your application icon first.} + +\subsection{Module definition file} + +A module definition file (extension DEF) looks like the following: + +\begin{verbatim} +NAME Hello +DESCRIPTION 'Hello' +EXETYPE WINDOWS +STUB 'WINSTUB.EXE' +CODE PRELOAD MOVEABLE DISCARDABLE +DATA PRELOAD MOVEABLE MULTIPLE +HEAPSIZE 1024 +STACKSIZE 8192 +\end{verbatim} + +The only lines which will usually have to be changed per application are +NAME and DESCRIPTION. + +\section{Memory models and memory allocation}\label{memorymodels} + +Under UNIX, memory allocation isn't a problem. Under Windows, the only +really viable way to go is to use the large model, which uses the global +heap instead of the local heap for memory allocation. Unless more than +one read-write data segment is used,% (see \helpref{large data}{largedata} +large model programs may still have multiple instances under MS +C/C++ 7. Microsoft give the following guidelines for producing +multiple-instance large model programs: + +\begin{itemize}\itemsep=0pt +\item Do not use {\tt /ND} to name extra data segments unless the segment is READONLY. +\item Use the .DEF file to mark extra data segments READONLY. +\item Do not use \_\_far or FAR to mark data items. +\item Use {\tt /PACKDATA} to combine data segments. +\item Use {\tt /Gt65500 /Gx} to force all data into the default data segment. +\end{itemize} + +Even with the single-instance limitation, the productivity benefit is +worth it in the majority of cases. Note that some other multi-platform +class libraries also have this restriction. (If more than one instance +really is required, create several copies of the program with different +names.) + +Having chosen the large model, just use C++ `new', `delete' (and if +necessary `malloc' and `free') in the normal way. The only restrictions +now encountered are a maximum of 64 KB for a single program segment and +for a single data item, unless huge model is selected. + +For Borland users, use the data threshold switch, and the following is +also recommended: + +\begin{itemize}\itemsep=0pt +\item Check ``Automatic Far Data Segments" +\item Check ``Put Constant Strings into Code Segment" +\end{itemize} + +See also the Frequently Asked Questions document for further details +on using Borland with wxWindows. + +\subsection{Allocating and deleting wxWindows objects} + +In general, classes derived from wxWindow must dynamically allocated +with {\it new} and deleted with {\it delete}. If you delete a window, +all of its children and descendants will be automatically deleted, +so you don't need to delete these descendants explicitly. + +Don't statically create a window unless you know that the window +cannot be deleted dynamically. Modal dialogs, such as those used +in the {\tt dialogs} sample, can usually be created statically, +if you know that the OK or Cancel button does not destroy the dialog. + +Most drawing objects, such as wxPen, wxBrush, wxFont, and wxBitmap, should be +created dynamically. They are cleaned up automatically on program exit. +wxColourMap is an exception to this rule (currently). In particular, +do not attempt to create these objects globally before OnInit() has a chance +to be called, because wxWindows might not have done essential internal initialisation +(including creation of lists containing all instances of wxPen, wxBrush etc.) + +If you decide to allocate a C++ array of objects (such as wxBitmap) that may +be cleaned up by wxWindows, make sure you delete the array explicitly +before wxWindows has a chance to do so on exit, since calling {\it delete} on +array members will cause memory problems. + +wxColour can be created statically: it is not automatically cleaned +up and is unlikely to be shared between other objects; it is lightweight +enough for copies to be made. + +Beware of deleting objects such as a wxPen or wxBitmap if they are still in use. +Windows is particularly sensitive to this: so make sure you +make calls like wxDC::SetPen(NULL) or wxDC::SelectObject(NULL) before deleting +a drawing object that may be in use. Code that doesn't do this will probably work +fine on some platforms, and then fail under Windows. + +\section{Dynamic Link Libraries} + +wxWindows may be used to produce DLLs which run under MS Windows. Note that +this is not the same thing as having wxWindows as a DLL, which is not +currently possible. For Microsoft C++, use the makefile with the argument DLL=1 to produce +a version of the wxWindows library which may be used in a DLL application. +There is a bug in Microsoft C++ which makes the compiler complain about returned floats, +which goes away when the {\tt /Os} option is used, which is why that flag is +set in the makefile. + +For making wxWindows as a Sun dynamic library, there are comments in the +UNIX makefile for the appropriate flags for AT\&T C++. Sorry, I haven't +investigated the flags needed for other compilers. + +\section{Conditional compilation} + +One of the purposes of wxWindows is to reduce the need for conditional +compilation in source code, which can be messy and confusing to follow. +However, sometimes it is necessary to incorporate platform-specific +features (such as metafile use under MS Windows). The following identifiers +may be used for this purpose, along with any user-supplied ones: + +\begin{itemize} +\item {\tt wx\_x} - for code which should work under any X toolkit +\item {\tt wx\_motif} - for code which should work under Motif only +\item {\tt wx\_msw} - for code which should work under Microsoft Windows only +\item {\tt wx\_xt} - for code which should work under Xt only +\end{itemize} + +For example: + +\begin{verbatim} + ... +#ifdef wx_x + (void)wxMessageBox("Sorry, metafiles not available under X."); +#endif +#ifdef wx_msw + wxMetaFileDC dc; + DrawIt(dc); + wxMetaFile *mf = dc.Close(); + mf->SetClipboard(); + delete mf; +#endif + ... +\end{verbatim} + +\section{Building on-line help} + +wxWindows has its own help system from version 1.30: wxHelp. It can be +used to view the wxWindows class library reference, and also to provide +on-line help for your wxWindows applications. The API, made accessible +by including {\tt wx\_help.h}, allows you to load files and display +specific sections, using DDE to communicate between the application and +wxHelp. + +wxHelp files can be marked up by hand from ASCII files within wxHelp, +or may be generated from other files, as is the case with the wxWindows +documentation. + +It is possible to use the platform-specific help +system (e.g. WinHelp) instead of wxHelp. + +See {\tt install.txt}, the wxHelp documentation (in {\tt +utils/wxhelp/docs}) and \helpref{wxHelp}{wxhelp} for further details. + +\section{C++ issues} + +There are cases where a C++ program will compile and run fine under one +environment, and then fail to compile using a different compiler. Some +caveats are given below, from experience with the GNU C++ compiler (GCC) +and MS C/C++ compiler version 7. + +\subsection{Templates} + +wxWindows does not use templates for two main reasons: one, it is a +notoriously unportable feature, and two, the author is irrationally +suspicious of them and prefers to use casts. More compilers are +now implementing templates, and so it will probably be safe to use +them soon without fear of portability problems. + +\subsection{Precompiled headers} + +Some compilers, such as Borland C++ and Microsoft C++, support +precompiled headers. This can save a great deal of compiling time. The +recommended approach is to precompile {\tt ``wx.h''}, using this +precompiled header for compiling both wxWindows itself and any +wxWindows applications. For Windows compilers, two dummy source files +are provided (one for normal applications and one for creating DLLs) +to allow initial creation of the precompiled header. + +However, there are several downsides to using precompiled headers. One +is that to take advantage of the facility, you often need to include +more header files than would normally be the case. This means that +changing a header file will cause more recompilations (in the case of +wxWindows, everything needs to be recompiled since everything includes +{\tt ``wx.h''}!) + +A related problem is that for compilers that don't have precompiled +headers, including a lot of header files slows down compilation +considerably. For this reason, you will find (in the common +X and Windows parts of the library) conditional +compilation that under UNIX, includes a minimal set of headers; +and when using Visual C++, includes {\tt wx.h}. This should help provide +the optimal compilation for each compiler, although it is +biassed towards the precompiled headers facility available +in Microsoft C++. + +\section{File handling} + +When building an application which may be used under different +environments, one difficulty is coping with documents which may be +moved to different directories on other machines. Saving a file which +has pointers to full pathnames is going to be inherently unportable. One +approach is to store filenames on their own, with no directory +information. The application searches through a number of locally +defined directories to find the file. To support this, the class {\bf +wxPathList} makes adding directories and searching for files easy, and +the global function {\bf FileNameFromPath} allows the application to +strip off the filename from the path if the filename must be stored. +This has undesirable ramifications for people who have documents of the +same name in different directories. + +As regards the limitations of DOS 8+3 single-case filenames versus +unrestricted UNIX filenames, the best solution is to use DOS filenames +for your application, and also for document filenames {\it if} the user +is likely to be switching platforms regularly. Obviously this latter +choice is up to the application user to decide. Some programs (such as +YACC and LEX) generate filenames incompatible with DOS; the best +solution here is to have your UNIX makefile rename the generated files +to something more compatible before transferring the source to DOS. +Transferring DOS files to UNIX is no problem, of course, apart from EOL +conversion for which there should be a utility available (such as +dos2unix). + +See also the File Functions section of the reference manual for +descriptions of miscellaneous file handling functions. + +\chapter{Utilities supplied with wxWindows}\label{utilities} +\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% + +A number of `extras' are supplied with wxWindows, to complement +the GUI functionality in the main class library. These are found +below the utils directory and usually have their own source, library +and documentation directories. For larger user-contributed packages, +see the directory /pub/packages/wxwin/contrib. + +\section{wxHelp}\label{wxhelp} + +wxHelp is a stand-alone program, written using wxWindows, +for displaying hypertext help. It is necessary since not all target +systems (notably X) supply an adequate +standard for on-line help. wxHelp is modelled on the MS Windows help +system, with contents, search and browse buttons, but does not reformat +text to suit the size of window, as WinHelp does, and its input files +are uncompressed ASCII with some embedded font commands and an .xlp +extension. Most wxWindows documentation (user manuals and class +references) is supplied in wxHelp format, and also in Windows Help +format. + +Note that an application can be programmed to use Windows Help under +MS Windows, and wxHelp under X. An alternative help viewer under X is +Mosaic, a World Wide Web viewer that uses HTML as its native hypertext +format. However, this is not currently integrated with wxWindows +applications. + +wxHelp works in two modes---edit and end-user. In edit mode, an ASCII +file may be marked up with different fonts and colours, and divided into +sections. In end-user mode, no editing is possible, and the user browses +principally by clicking on highlighted blocks. + +When an application invokes wxHelp, subsequent sections, blocks or +files may be viewed using the same instance of wxHelp since the two +programs are linked using wxWindows interprocess communication +facilities. When the application exits, that application's instance of +wxHelp may be made to exit also. See the {\bf wxHelpInstance} entry in the +reference section for how an application controls wxHelp. + +\section{Tex2RTF}\label{textortf} + +Supplied with wxWindows is a utility called Tex2RTF for converting\rtfsp +\LaTeX\ manuals to the following formats: + +\begin{description} +\item[wxHelp] +wxWindows help system format (XLP). +\item[Linear RTF] +Rich Text Format suitable for importing into a word processor. +\item[Windows Help RTF] +Rich Text Format suitable for compiling into a WinHelp HLP file with the +help compiler. +\item[HTML] +HTML is the native format for Mosaic, the main hypertext viewer for +the World Wide Web. Since it is freely available it is a good candidate +for being the wxWindows help system under X, as an alternative to wxHelp. +\end{description} + +Tex2RTF is used for the wxWindows manuals and can be used independently +by authors wishing to create on-line and printed manuals from the same\rtfsp +\LaTeX\ source. Please see the separate documentation for Tex2RTF. + +\section{wxTreeLayout} + +This is a simple class library for drawing trees in a reasonably pretty +fashion. It provides only minimal default drawing capabilities, since +the algorithm is meant to be used for implementing custom tree-based +tools. + +Directed graphs may also be drawn using this library, if cycles are +removed before the nodes and arcs are passed to the algorithm. + +Tree displays are used in many applications: directory browsers, +hypertext systems, class browsers, and decision trees are a few +possibilities. + +See the separate manual and the directory utils/wxtree. + +\section{wxGraphLayout} + +The wxGraphLayout class is based on a tool called `graphplace' by Dr. +Jos T.J. van Eijndhoven of Eindhoven University of Technology. Given a +(possibly cyclic) directed graph, it does its best to lay out the nodes +in a sensible manner. There are many applications (such as diagramming) +where it is required to display a graph with no human intervention. Even +if manual repositioning is later required, this algorithm can make a good +first attempt. + +See the separate manual and the directory utils/wxgraph. + +\section{wxImage}\label{wximage} + +This is a collection of GIF/BMP/XBM bitmap loading and displaying +routines for X. + +\section{MFUTILS}\label{mfutils} + +A very modest step towards reading Windows metafiles on the +any platform. Julian Smart's ClockWorks program demonstrates +how extremely simple metafiles may be read and displayed (in this +case, to be used as clock hands). + +\section{Colours}\label{coloursampler} + +A colour sampler for viewing colours and their names on each +platform. + +% +\chapter{Tutorial}\label{tutorial} +\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% + +To be written. + +\chapter{Programming strategies}\label{strategies} +\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% + +This chapter is intended to list strategies that may be useful when +writing and debugging wxWindows programs. If you have any good tips, +please submit them for inclusion here. + +\section{Strategies for reducing programming errors} + +\subsection{Use ASSERT} + +Although I haven't done this myself within wxWindows, it is good +practice to use ASSERT statements liberally, that check for conditions that +should or should not hold, and print out appropriate error messages. +These can be compiled out of a non-debugging version of wxWindows +and your application. Using ASSERT is an example of `defensive programming': +it can alert you to problems later on. + +\subsection{Use wxString in preference to character arrays} + +Using wxString can be much safer and more convenient than using char *. +Again, I haven't practised what I'm preaching, but I'm now trying to use +wxString wherever possible. You can reduce the possibility of memory +leaks substantially, and it's much more convenient to use the overloaded +operators than functions such as strcmp. wxString won't add a significant +overhead to your program; the overhead is compensated for by easier +manipulation (which means less code). + +The same goes for other data types: use classes wherever possible. + +\section{Strategies for portability} + +\subsection{Use relative positioning or constraints} + +Don't use absolute panel item positioning if you can avoid it. Different GUIs have +very differently sized panel items. Consider using the constraint system, although this +can be complex to program. If you needs are simple, the default relative positioning +behaviour may be adequate (using default position values and wxPanel::NewLine). + +Alternatively, you could use alternative .wrc (wxWindows resource files) on different +platforms, with slightly different dimensions in each. Or space your panel items out +to avoid problems. + +\subsection{Use wxWindows resource files} + +Use .wrc (wxWindows resource files) where possible, because they can be easily changed +independently of source code. Bitmap resources can be set up to load different +kinds of bitmap depending on platform (see the section on resource files). + +\section{Strategies for debugging} + +\subsection{Positive thinking} + +It's common to blow up the problem in one's imagination, so that it seems to threaten +weeks, months or even years of work. The problem you face may seem insurmountable: +but almost never is. Once you have been programming for some time, you will be able +to remember similar incidents that threw you into the depths of despair. But +remember, you always solved the problem, somehow! + +Perseverance is often the key, even though a seemingly trivial problem +can take an apparently inordinate amount of time to solve. In the end, +you will probably wonder why you worried so much. That's not to say it +isn't painful at the time. Try not to worry -- there are many more important +things in life. + +\subsection{Simplify the problem} + +Reduce the code exhibiting the problem to the smallest program possible +that exhibits the problem. If it is not possible to reduce a large and +complex program to a very small program, then try to ensure your code +doesn't hide the problem (you may have attempted to minimize the problem +in some way: but now you want to expose it). + +With luck, you can add a small amount of code that causes the program +to go from functioning to non-functioning state. This should give a clue +to the problem. In some cases though, such as memory leaks or wrong +deallocation, this can still give totally spurious results! + +\subsection{Genetic mutation} + +If we had sophisticated genetic algorithm tools that could be applied +to programming, we could use them. Until then, a common -- if rather irrational -- +technique is to just make arbitrary changes to the code until something +different happens. You may have an intuition why a change will make a difference; +otherwise, just try altering the order of code, comment lines out, anything +to get over an impasse. Obviously, this is usually a last resort. + +\subsection{Use a debugger} + +This sounds like facetious advice, but it's surprising how often people +don't use a debugger. Often it's an overhead to install or learn how to +use a debugger, but it really is essential for anything but the most +trivial programs. Some platforms don't allow for debugging, such +as WIN32s under Windows 3.x. In this case, you might be advised to +debug under 16-bit Windows and when you're confident, compile for +WIN32s. In fact WIN32s can be very strict about bad memory handling, +so testing out under WIN32s is a good thing to do even if you're +not going to distribute this version. (Unless you've got a good memory checking, +utility, of course!) Tracking bugs under WIN32s can involve a lot of debug message +insertion and relinking, so make sure your compiler has a fast linker +(e.g. Watcom, Symantec). + +\subsection{Use tracing code} + +You can use wxDebugMsg statements (or the wxDebugStreamBuf class) to +output to a debugging window such as DBWIN under Windows, or standard +error under X. If compiling in DEBUG mode, you can use TRACE statements +that will be compiled out of the final build of your application. + +Using tracing statements may be more convenient than using the debugger +in some circumstances (such as when your debugger doesn't support a lot +of debugging code, or you wish to print a bunch of variables). + +\subsection{Use wxObject::Dump and the wxDebugContext class} + +It's good practice to implement the Dump member function for all +classes derived from wxObject. You can then make use of wxDebugContext +to dump out information on all objects in the program, if DEBUG is +defined to be more than zero. You can use wxDebugContext to check for +memory leaks and corrupt memory. See the debugging topic in the +reference manual for more information. + +\subsection{Check Windows debug messages} + +Under Windows, it's worth running your program with DBWIN running or +some other program that shows Windows-generated debug messages. It's +possible it'll show invalid handles being used. You may have fun seeing +what commercial programs cause these normally hidden errors! Microsoft +recommend using the debugging version of Windows, which shows up even +more problems. However, I doubt it's worth the hassle for most +applications. wxWindows is designed to minimize the possibility of such +errors, but they can still happen occasionally, slipping through unnoticed +because they are not severe enough to cause a crash. diff --git a/docs/latex/wx/book1.bmp b/docs/latex/wx/book1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..3aa28011b9a3079165313ef4364e96a4d11e56cc GIT binary patch literal 566 zcmb_YI}!ph2t~&k)8PRuEIok-u=hH~E_9nNSK1?O2OU1LA02B+_&j)!4EM)vPhFm{ zSLg+LhVJM9OEm7f>*fR-I*SnDlE~~}5z;u0@KNx7$vq+{PNV|=$b|Zr@Pa3*Jqw&_ zt(0W;Jf$x-N#HuTAemqTr=hq?l4>?%do>rfcs=TjK;_u%wO}hnC9-X+o3NIZ4`LS1 zZVO*M1ApqS(XV;sV^Wr+aNE2=xOrXs!R+s?@Av-S4x_%j?%%`Rfz!C$uHnGuoYEAr~D;JxHUzQYZhY(}{X$xY0SE&#JC# z5a%D|9QDv}6Qc3-Wv8+GlQ-*8<`8epNC>=NSLPUH1b$st*H{R=IXD*!fgA8x5Dt6l zUCo=!AsqI8={C$E9QGLr_q_i zFK;h=LxQhf>;v~gWIyoy(Zu$`w=UNZZuYl$t>-8&*n94Z?RTzqLWjlGhdMVK;w1@P zgX#l^|MHTQ1q9k0=J>%Sz9`L#Hix;bEVz#^(qoBse!qj(7b literal 0 HcmV?d00001 diff --git a/docs/latex/wx/books.gif b/docs/latex/wx/books.gif new file mode 100644 index 0000000000000000000000000000000000000000..a9a1e46844cb79b3a787ae9bb3e6e2d508bf03df GIT binary patch literal 438 zcmZ?wbhEHb)MwCR*vtR|`@wiWnA#8I?caakz=4K_hW|kE{|x`Z6p#k8fItVN1Ekl1 z<==-Bo~!p-yyo5|&a|OdBw-F)fK3h~M^48wm$P>4L6awSt};FJ_To-P0XGMs<;ov4 ztd2A;T@tqP#KXm!wQ-9sM_u`FGQKNQi?-84<=I2%h)`tYU$o^#sQZ1k`! zKE^lWdIOi}l1)t}Syx+_f~s;?oDtlyN%L%HQ2X>XLEHTv1+nE^UFm!x$w>R%`8~dA Y?R$Q+m%X#+np$@6?&;|+EDQ|R0RNK1DF6Tf literal 0 HcmV?d00001 diff --git a/docs/latex/wx/brush.tex b/docs/latex/wx/brush.tex new file mode 100644 index 0000000000..8fa085f78e --- /dev/null +++ b/docs/latex/wx/brush.tex @@ -0,0 +1,343 @@ +\section{\class{wxBrush}}\label{wxbrush} + +A brush is a drawing tool for filling in areas. It is used for painting +the background of rectangles, ellipses, etc. It has a colour and a +style. + +\wxheading{Derived from} + +\helpref{wxGDIObject}{wxgdiobject}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Remarks} + +On a monochrome display, wxWindows shows +all brushes as white unless the colour is really black. + +Do not initialize objects on the stack before the program commences, +since other required structures may not have been set up yet. Instead, +define global pointers to objects and create them in \helpref{wxApp::OnInit}{wxapponinit} or +when required. + +An application may wish to create brushes with different +characteristics dynamically, and there is the consequent danger that a +large number of duplicate brushes will be created. Therefore an +application may wish to get a pointer to a brush by using the global +list of brushes {\bf wxTheBrushList}, and calling the member function +\rtfsp{\bf FindOrCreateBrush}. + +wxBrush uses a reference counting system, so assignments between brushes are very +cheap. You can therefore use actual wxBrush objects instead of pointers without +efficiency problems. Bear in mind, though, that changing a brush's properties may +affect another brush which has been involved in an assignment with the first brush, +because of the way internal brush data is shared. + +TODO: an overview for wxBrush. + +\wxheading{See also} + +\helpref{wxBrushList}{wxbrushlist}, \helpref{wxDC}{wxdc}, \helpref{wxDC::SetBrush}{wxdcsetbrush} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxBrush::wxBrush} + +\func{}{wxBrush}{\void} + +Default constructor. The brush will be uninitialised, and \helpref{wxBrush::Ok}{wxbrushok} will +return FALSE. + +\func{}{wxBrush}{\param{const wxColour\&}{ colour}, \param{const int}{ style}} + +Constructs a brush from a colour object and style. + +\func{}{wxBrush}{\param{const wxString\& }{colourName}, \param{const int}{ style}} + +Constructs a brush from a colour name and style. + +\func{}{wxBrush}{\param{const wxBitmap\& }{stippleBitmap}} + +Constructs a stippled brush using a bitmap. + +\func{}{wxBrush}{\param{const wxBrush\&}{ brush}} + +Copy constructor. This uses reference counting so is a cheap operation. + +\func{}{wxBrush}{\param{const wxBrush*}{ brush}} + +Copy constructor. This uses reference counting so is a cheap operation. + +\wxheading{Parameters} + +\docparam{colour}{Colour object.} + +\docparam{colourName}{Colour name. The name will be looked up in the colour database.} + +\docparam{style}{One of: + +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf wxTRANSPARENT}}{Transparent (no fill).} +\twocolitem{{\bf wxSOLID}}{Solid.} +\twocolitem{{\bf wxBDIAGONAL\_HATCH}}{Backward diagonal hatch.} +\twocolitem{{\bf wxCROSSDIAG\_HATCH}}{Cross-diagonal hatch.} +\twocolitem{{\bf wxFDIAGONAL\_HATCH}}{Forward diagonal hatch.} +\twocolitem{{\bf wxCROSS\_HATCH}}{Cross hatch.} +\twocolitem{{\bf wxHORIZONTAL\_HATCH}}{Horizontal hatch.} +\twocolitem{{\bf wxVERTICAL\_HATCH}}{Vertical hatch.} +\end{twocollist}} + +\docparam{brush}{Pointer or reference to a brush to copy.} + +\docparam{stippleBitmap}{A bitmap to use for stippling.} + +\wxheading{Remarks} + +If a stipple brush is created, the brush style will be set to wxSTIPPLE. + +\wxheading{See also} + +\helpref{wxBrushList}{wxbrushlist}, \helpref{wxColour}{wxcolour}, \helpref{wxColourDatabase}{wxcolourdatabase} + +\membersection{wxBrush::\destruct{wxBrush}} + +\func{void}{\destruct{wxBrush}}{\void} + +Destructor. + +\wxheading{Remarks} + +The destructor may not delete the underlying brush object of the native windowing +system, since wxBrush uses a reference counting system for efficiency. + +Although all remaining brushes are deleted when the application exits, +the application should try to clean up all brushes itself. This is because +wxWindows cannot know if a pointer to the brush object is stored in an +application data structure, and there is a risk of double deletion. + +\membersection{wxBrush::GetColour}\label{wxbrushgetcolour} + +\constfunc{wxColour\&}{GetColour}{\void} + +Returns a reference to the brush colour. + +\wxheading{See also} + +\helpref{wxBrush::SetColour}{wxbrushsetcolour} + +\membersection{wxBrush::GetStipple}\label{wxbrushgetstipple} + +\constfunc{wxBitmap *}{GetStipple}{\void} + +Gets a pointer to the stipple bitmap. If the brush does not have a wxSTIPPLE style, +this bitmap may be non-NULL but uninitialised (\helpref{wxBitmap::Ok}{wxbitmapok} returns FALSE). + +\wxheading{See also} + +\helpref{wxBrush::SetStipple}{wxbrushsetstipple} + +\membersection{wxBrush::GetStyle}\label{wxbrushgetstyle} + +\constfunc{int}{GetStyle}{\void} + +Returns the brush style, one of: + +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf wxTRANSPARENT}}{Transparent (no fill).} +\twocolitem{{\bf wxSOLID}}{Solid.} +\twocolitem{{\bf wxBDIAGONAL\_HATCH}}{Backward diagonal hatch.} +\twocolitem{{\bf wxCROSSDIAG\_HATCH}}{Cross-diagonal hatch.} +\twocolitem{{\bf wxFDIAGONAL\_HATCH}}{Forward diagonal hatch.} +\twocolitem{{\bf wxCROSS\_HATCH}}{Cross hatch.} +\twocolitem{{\bf wxHORIZONTAL\_HATCH}}{Horizontal hatch.} +\twocolitem{{\bf wxVERTICAL\_HATCH}}{Vertical hatch.} +\twocolitem{{\bf wxSTIPPLE}}{Stippled using a bitmap.} +\end{twocollist} + +\wxheading{See also} + +\helpref{wxBrush::SetStyle}{wxbrushsetstyle}, \helpref{wxBrush::SetColour}{wxbrushsetcolour},\rtfsp +\helpref{wxBrush::SetStipple}{wxbrushsetstipple} + +\membersection{wxBrush::Ok}\label{wxbrushok} + +\constfunc{bool}{Ok}{\void} + +Returns TRUE if the brush is initialised. It will return FALSE if the default +constructor has been used (for example, the brush is a member of a class, or +NULL has been assigned to it). + +\membersection{wxBrush::SetColour}\label{wxbrushsetcolour} + +\func{void}{SetColour}{\param{wxColour\& }{colour}} + +Sets the brush colour using a reference to a colour object. + +\func{void}{SetColour}{\param{const wxString\& }{colourName}} + +Sets the brush colour using a colour name from the colour database. + +\func{void}{SetColour}{\param{const unsigned char}{ red}, \param{const unsigned char}{ green}, \param{const unsigned char}{ blue}} + +Sets the brush colour using red, green and blue values. + +\wxheading{See also} + +\helpref{wxBrush::GetColour}{wxbrushgetcolour} + +\membersection{wxBrush::SetStipple}\label{wxbrushsetstipple} + +\func{void}{SetStipple}{\param{const wxBitmap\&}{ bitmap}} + +Sets the stipple bitmap. + +\wxheading{Parameters} + +\docparam{bitmap}{The bitmap to use for stippling.} + +\wxheading{Remarks} + +The style will be set to wxSTIPPLE. + +Note that there is a big difference between stippling in X and Windows. +On X, the stipple is a mask between the wxBitmap and current colour. +On Windows, the current colour is ignored, and the bitmap colour is used. +However, for pre-defined modes like wxCROSS\_HATCH, the behaviour is the +same for both platforms. + +\wxheading{See also} + +\helpref{wxBitmap}{wxbitmap} + +\membersection{wxBrush::SetStyle}\label{wxbrushsetstyle} + +\func{void}{SetStyle}{\param{const int}{ style}} + +Sets the brush style. + +\docparam{style}{One of: + +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf wxTRANSPARENT}}{Transparent (no fill).} +\twocolitem{{\bf wxSOLID}}{Solid.} +\twocolitem{{\bf wxBDIAGONAL\_HATCH}}{Backward diagonal hatch.} +\twocolitem{{\bf wxCROSSDIAG\_HATCH}}{Cross-diagonal hatch.} +\twocolitem{{\bf wxFDIAGONAL\_HATCH}}{Forward diagonal hatch.} +\twocolitem{{\bf wxCROSS\_HATCH}}{Cross hatch.} +\twocolitem{{\bf wxHORIZONTAL\_HATCH}}{Horizontal hatch.} +\twocolitem{{\bf wxVERTICAL\_HATCH}}{Vertical hatch.} +\twocolitem{{\bf wxSTIPPLE}}{Stippled using a bitmap.} +\end{twocollist}} + +\wxheading{See also} + +\helpref{wxBrush::GetStyle}{wxbrushgetstyle} + +\membersection{wxBrush::operator $=$}\label{wxbrushassignment} + +\func{wxBrush\&}{operator $=$}{\param{const wxBrush\& }{brush}} + +Assignment operator, using reference counting. Returns a reference +to `this'. + +\membersection{wxBrush::operator $==$}\label{wxbrushequals} + +\func{bool}{operator $==$}{\param{const wxBrush\& }{brush}} + +Equality operator. Two brushes are equal if they contain pointers +to the same underlying brush data. It does not compare each attribute, +so two independently-created brushes using the same parameters will +fail the test. + +\membersection{wxBrush::operator $!=$}\label{wxbrushnotequals} + +\func{bool}{operator $!=$}{\param{const wxBrush\& }{brush}} + +Inequality operator. Two brushes are not equal if they contain pointers +to different underlying brush data. It does not compare each attribute. + +\section{\class{wxBrushList}}\label{wxbrushlist} + +A brush list is a list containing all brushes which have been created. + +\wxheading{Derived from} + +\helpref{wxList}{wxlist}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Remarks} + +There is only one instance of this class: {\bf wxTheBrushList}. Use +this object to search for a previously created brush of the desired +type and create it if not already found. In some windowing systems, +the brush may be a scarce resource, so it can pay to reuse old +resources if possible. When an application finishes, all brushes will +be deleted and their resources freed, eliminating the possibility of +`memory leaks'. However, it is best not to rely on this automatic +cleanup because it can lead to double deletion in some circumstances. + +There are two mechanisms in recent versions of wxWindows which make the +brush list less useful than it once was. Under Windows, scarce resources +are cleaned up internally if they are not being used. Also, a referencing +counting mechanism applied to all GDI objects means that some sharing +of underlying resources is possible. You don't have to keep track of pointers, +working out when it is safe delete a brush, because the referencing counting does +it for you. For example, you can set a brush in a device context, and then +immediately delete the brush you passed, because the brush is `copied'. + +So you may find it easier to ignore the brush list, and instead create +and copy brushes as you see fit. If your Windows resource meter suggests +your application is using too many resources, you can resort to using +GDI lists to share objects explicitly. + +The only compelling use for the brush list is for wxWindows to keep +track of brushes in order to clean them up on exit. It is also kept for +backward compatibility with earlier versions of wxWindows. + +\wxheading{See also} + +\helpref{wxBrush}{wxbrush} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxBrushList::wxBrushList}\label{wxbrushlistconstr} + +\func{void}{wxBrushList}{\void} + +Constructor. The application should not construct its own brush list: +use the object pointer {\bf wxTheBrushList}. + +\membersection{wxBrushList::AddBrush}\label{wxbrushlistaddbrush} + +\func{void}{AddBrush}{\param{wxBrush *}{brush}} + +Used internally by wxWindows to add a brush to the list. + +\membersection{wxBrushList::FindOrCreateBrush}\label{wxbrushlistfindorcreatebrush} + +\func{wxBrush *}{FindOrCreateBrush}{\param{const wxColour\& }{colour}, \param{const int}{ style}} + +Finds a brush with the specified attributes and returns it, else creates a new brush, adds it +to the brush list, and returns it. + +\func{wxBrush *}{FindOrCreateBrush}{\param{const wxString\& }{colourName}, \param{const int}{ style}} + +Finds a brush with the specified attributes and returns it, else creates a new brush, adds it +to the brush list, and returns it. + +Finds a brush of the given specification, or creates one and adds it to the list. + +\wxheading{Parameters} + +\docparam{colour}{Colour object.} + +\docparam{colourName}{Colour name, which should be in the colour database.} + +\docparam{style}{Brush style. See \helpref{wxBrush::SetStyle}{wxbrushsetstyle} for a list of styles.} + +\membersection{wxBrushList::RemoveBrush}\label{wxbrushlistremovebrush} + +\func{void}{RemoveBrush}{\param{wxBrush *}{brush}} + +Used by wxWindows to remove a brush from the list. + + diff --git a/docs/latex/wx/bullet.bmp b/docs/latex/wx/bullet.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6481f5143b934b2b2fad561a9b39fb441944418a GIT binary patch literal 198 zcmZ?rJ;ne5Wk5;;h`FGck%0v)5dbE!5e*CsK*Z3{0HJ^+kjZf1zyTl)lK2ls4FCUw iSU?PfAR!PR1i)haVEO|{7|2Jb|1&`3;p$=f&}abvMLt>p literal 0 HcmV?d00001 diff --git a/docs/latex/wx/button.tex b/docs/latex/wx/button.tex new file mode 100644 index 0000000000..e613d93f0d --- /dev/null +++ b/docs/latex/wx/button.tex @@ -0,0 +1,126 @@ +\section{\class{wxButton}}\label{wxbutton} + +A button is a control that contains a text string, +and is one of the commonest elements of a GUI. It may be placed on a +\rtfsp\helpref{dialog box}{wxdialog} or \helpref{panel}{wxpanel}, or indeed +almost any other window. + +\wxheading{Derived from} + +\helpref{wxControl}{wxcontrol}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +There are no special styles for wxButton. + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{See also} + +\helpref{wxBitmapButton}{wxbitmapbutton} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxButton::wxButton}\label{wxbuttonconstr} + +\func{}{wxButton}{\void} + +Default constructor. + +\func{}{wxButton}{\param{wxWindow* }{parent}, \param{const wxWindowID}{ id}, \param{const wxString\& }{label},\rtfsp +\param{const wxPoint\& }{pos}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long}{ style = 0}, \param{const wxValidator\& }{validator}, \param{const wxString\& }{name = ``button"}} + +Constructor, creating and showing a button. + +\wxheading{Parameters} + +\docparam{parent}{Parent window. Must not be NULL.} + +\docparam{id}{Button identifier. A value of -1 indicates a default value.} + +\docparam{label}{Text to be displayed on the button.} + +\docparam{pos}{Button position.} + +\docparam{size}{Button size. If the default size (-1, -1) is specified then the button is sized +appropriately for the text.} + +\docparam{style}{Window style. See \helpref{wxButton}{wxbutton}.} + +\docparam{validator}{Window validator.} + +\docparam{name}{Window name.} + +\wxheading{See also} + +\helpref{wxButton::Create}{wxbuttoncreate}, \helpref{wxValidator}{wxvalidator} + +\membersection{wxButton::\destruct{wxButton}} + +\func{}{\destruct{wxButton}}{\void} + +Destructor, destroying the button. + +\membersection{wxButton::Create}\label{wxbuttoncreate} + +\func{bool}{Create}{\param{wxWindow* }{parent}, \param{const wxWindowID}{ id}, \param{const wxString\& }{label},\rtfsp +\param{const wxPoint\& }{pos}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long}{ style = 0}, \param{const wxValidator\& }{validator}, \param{const wxString\& }{name = ``button"}} + +Button creation function for two-step creation. For more details, see \helpref{wxButton::wxButton}{wxbuttonconstr}. + +\membersection{wxButton::GetLabel}\label{wxbuttongetlabel} + +\constfunc{wxString}{GetLabel}{\void} + +Returns the string label for the button. + +\wxheading{Return value} + +The button's label. + +\wxheading{See also} + +\helpref{wxButton::SetLabel}{wxbuttonsetlabel} + +\membersection{wxButton::SetDefault}\label{wxbuttonsetdefault} + +\func{void}{SetDefault}{\void} + +This sets the button to be the default item for the panel or dialog +box. + +\wxheading{Remarks} + +Under Windows, only dialog box buttons respond to this function. As +normal under Windows and Motif, pressing return causes the default button to +be depressed when the return key is pressed. See also \helpref{wxWindow::SetFocus}{wxwindowsetfocus}\rtfsp +which sets the keyboard focus for windows and text panel items, \helpref{wxWindow::OnDefaultAction}{wxwindowondefaultaction}\rtfsp +and \helpref{wxWindow::GetDefaultItem}{wxwindowgetdefaultitem}. + +Note that under Motif, calling this function immediately after +creation of a button and before the creation of other buttons +will cause misalignment of the row of buttons, since default +buttons are larger. To get around this, call {\it SetDefault}\rtfsp +after you have created a row of buttons: wxWindows will +then set the size of all buttons currently on the panel to +the same size. + +\membersection{wxButton::SetLabel}\label{wxbuttonsetlabel} + +\func{void}{SetLabel}{\param{const wxString\& }{label}} + +Sets the string label for the button. + +\wxheading{Parameters} + +\docparam{label}{The label to set.} + +\wxheading{See also} + +\helpref{wxButton::GetLabel}{wxbuttongetlabel} + diff --git a/docs/latex/wx/category.tex b/docs/latex/wx/category.tex new file mode 100644 index 0000000000..246b9f7bb3 --- /dev/null +++ b/docs/latex/wx/category.tex @@ -0,0 +1,334 @@ +\chapter{Classes by category}\label{classesbycat} +\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% + +A classification of wxWindows classes by category. +\twocolwidtha{5cm} + +{\large {\bf Managed windows}} + +There are several types of window that are directly controlled by the +window manager (such as MS Windows, or the Motif Window Manager). +Frames may contain windows, and dialog boxes may directly contain controls. + +\begin{twocollist}\itemsep=0pt +\twocolitem{\helpref{wxDialog}{wxdialog}}{Dialog box} +\twocolitem{\helpref{wxFrame}{wxframe}}{Normal frame} +\twocolitem{\helpref{wxMDIParentFrame}{wxmdiparentframe}}{MDI parent frame} +\twocolitem{\helpref{wxMDIChildFrame}{wxmdichildframe}}{MDI child frame} +\twocolitem{\helpref{wxMiniFrame}{wxminiframe}}{A frame with a small title bar} +\twocolitem{\helpref{wxTabbedDialog}{wxtabbeddialog}}{Tabbed dialog} +\end{twocollist} + +See also {\bf Common dialogs}. + +{\large {\bf Miscellaneous windows}} + +The following are a variety of windows that are derived from wxWindow. + +\begin{twocollist}\itemsep=0pt +\twocolitem{\helpref{wxGrid}{wxgrid}}{A grid (table) window} +\twocolitem{\helpref{wxPanel}{wxpanel}}{A window whose colour changes according to current user settings} +\twocolitem{\helpref{wxScrolledWindow}{wxscrolledwindow}}{Window with automatically managed scrollbars} +\twocolitem{\helpref{wxSplitterWindow}{wxsplitterwindow}}{Window which can be split vertically or horizontally} +\twocolitem{\helpref{wxStatusBar}{wxstatusbar}}{Implements the status bar on a frame} +\twocolitem{\helpref{wxStatusBar95}{wxstatusbar95}}{Implements a Windows 95 status bar on a frame} +\twocolitem{\helpref{wxTabbedPanel}{wxtabbedpanel}}{Tabbed panel} +\end{twocollist} + +{\large {\bf Toolbar classes}} + +\overview{Overview}{wxtoolbaroverview} + +These are the toolbar classes. + +\begin{twocollist}\itemsep=0pt +\twocolitem{\helpref{wxToolBarBase}{wxtoolbarbase}}{Toolbar base class} +\twocolitem{\helpref{wxToolBarSimple}{wxtoolbarsimple}}{A simple, cross-platform toolbar class} +\twocolitem{\helpref{wxToolBarMSW}{wxtoolbarmsw}}{A Windows-only toolbar class} +\twocolitem{\helpref{wxToolBar95}{wxtoolbar95}}{A Windows 95-only toolbar class} +\end{twocollist} + +{\large {\bf Common dialogs}} + +\overview{Overview}{commondialogsoverview} + +Common dialogs are ready-made dialog classes which are frequently used +in an application. + +\begin{twocollist}\itemsep=0pt +\twocolitem{\helpref{wxDialog}{wxdialog}}{Base class for common dialogs} +\twocolitem{\helpref{wxColourDialog}{wxcolourdialog}}{Colour chooser dialog} +\twocolitem{\helpref{wxDirDialog}{wxdirdialog}}{Directory selector dialog} +\twocolitem{\helpref{wxFileDialog}{wxfiledialog}}{File selector dialog} +\twocolitem{\helpref{wxMultipleChoiceDialog}{wxmultiplechoicedialog}}{Dialog to get one or more selections from a list} +\twocolitem{\helpref{wxSingleChoiceDialog}{wxsinglechoicedialog}}{Dialog to get a single selection from a list and return the string} +\twocolitem{\helpref{wxTextEntryDialog}{wxtextentrydialog}}{Dialog to get a single line of text from the user} +\twocolitem{\helpref{wxFontDialog}{wxfontdialog}}{Font chooser dialog} +\twocolitem{\helpref{wxPageSetupDialog}{wxpagesetupdialog}}{Standard page setup dialog} +\twocolitem{\helpref{wxPrintDialog}{wxprintdialog}}{Standard print dialog} +\twocolitem{\helpref{wxMessageDialog}{wxmessagedialog}}{Simple message box dialog} +\end{twocollist} + +{\large {\bf Controls}} + +Typically, these are small windows which provide interaction with the user. Controls +that are not static can have \helpref{validators}{wxvalidator} associated with them. + +\begin{twocollist}\itemsep=0pt +\twocolitem{\helpref{wxControl}{wxcontrol}}{The base class for controls} +\twocolitem{\helpref{wxButton}{wxbutton}}{Push button control, displaying text} +\twocolitem{\helpref{wxBitmapButton}{wxbitmapbutton}}{Push button control, displaying a bitmap} +\twocolitem{\helpref{wxCheckBox}{wxcheckbox}}{Checkbox control} +\twocolitem{\helpref{wxCheckListBox}{wxchecklistbox}}{A listbox with a checkbox to the left of each item} +\twocolitem{\helpref{wxChoice}{wxchoice}}{Choice control (a combobox without the editable area)} +\twocolitem{\helpref{wxComboBox}{wxcombobox}}{A choice with an editable area} +\twocolitem{\helpref{wxGauge}{wxgauge}}{A control to represent a varying quantity, such as time remaining} +\twocolitem{\helpref{wxStaticBox}{wxstaticbox}}{A static, or group box for visually grouping related controls} +\twocolitem{\helpref{wxListBox}{wxlistbox}}{A list of strings for single or multiple selection} +\twocolitem{\helpref{wxListCtrl}{wxlistctrl}}{A control for displaying lists of strings and/or icons, plus a multicolumn report view} +\twocolitem{\helpref{wxTabCtrl}{wxtabctrl}}{Manages several tabs} +\twocolitem{\helpref{wxTextCtrl}{wxtextctrl}}{Single or multline text editing control} +\twocolitem{\helpref{wxTreeCtrl}{wxtreectrl}}{Tree (hierachy) control} +\twocolitem{\helpref{wxScrollBar}{wxscrollbar}}{Scrollbar control} +\twocolitem{\helpref{wxSpinButton}{wxspinbutton}}{A spin or `up-down' control} +\twocolitem{\helpref{wxStaticText}{wxstatictext}}{One or more lines of non-editable text} +\twocolitem{\helpref{wxStaticBitmap}{wxstaticbitmap}}{A control to display a bitmap} +\twocolitem{\helpref{wxRadioBox}{wxradiobox}}{A group of radio buttons} +\twocolitem{\helpref{wxRadioButton}{wxradiobutton}}{A round button to be used with others in a mutually exclusive way} +\twocolitem{\helpref{wxSlider}{wxslider}}{A slider that can be dragged by the user} +\end{twocollist} + +{\large {\bf Menus}} + +\begin{twocollist}\itemsep=0pt +\twocolitem{\helpref{wxMenu}{wxmenu}}{Displays a series of menu items for selection} +\twocolitem{\helpref{wxMenuBar}{wxmenubar}}{Contains a series of menus for use with a frame} +\twocolitem{\helpref{wxMenuItem}{wxmenuitem}}{Represents a single menu item} +\end{twocollist} + +{\large {\bf Window layout}} + +\overview{Overview}{constraintsoverview} + +These are the classes relevant to automated window layout. + +\begin{twocollist}\itemsep=0pt +\twocolitem{\helpref{wxIndividualLayoutConstraint}{wxindividuallayoutconstraint}}{Represents a single constraint dimension} +\twocolitem{\helpref{wxLayoutConstraints}{wxlayoutconstraints}}{Represents the constraints for a window class} +\end{twocollist} + +{\large {\bf Device contexts}} + +\overview{Overview}{dcoverview} + +Device contexts are surfaces that may be drawn on, and provide an +abstraction that allows parameterisation of your drawing code +by passing different device contexts. + +\begin{twocollist}\itemsep=0pt +\twocolitem{\helpref{wxClientDC}{wxclientdc}}{A device context to access the client area outside {\bf OnPaint} events} +\twocolitem{\helpref{wxPaintDC}{wxpaintdc}}{A device context to access the client area inside {\bf OnPaint} events} +\twocolitem{\helpref{wxWindowDC}{wxwindowdc}}{A device context to access the non-client area} +\twocolitem{\helpref{wxScreenDC}{wxscreendc}}{A device context to access the entire screen} +\twocolitem{\helpref{wxDC}{wxdc}}{The device context base class} +\twocolitem{\helpref{wxMemoryDC}{wxmemorydc}}{A device context for drawing into bitmaps} +\twocolitem{\helpref{wxMetaFileDC}{wxmetafiledc}}{A device context for drawing into metafiles} +\twocolitem{\helpref{wxPostScriptDC}{wxpostscriptdc}}{A device context for drawing into PostScript files} +\twocolitem{\helpref{wxPrinterDC}{wxprinterdc}}{A device context for drawing to printers} +\end{twocollist} + +{\large {\bf Graphics device interface}} + +\overview{Bitmaps overview}{wxbitmapoverview} + +These classes are related to drawing on device contexts and windows. + +\begin{twocollist}\itemsep=0pt +\twocolitem{\helpref{wxColour}{wxcolour}}{Represents the red, blue and green elements of a colour} +\twocolitem{\helpref{wxBitmap}{wxbitmap}}{Represents a bitmap} +\twocolitem{\helpref{wxBrush}{wxbrush}}{Used for filling areas on a device context} +\twocolitem{\helpref{wxBrushList}{wxbrushlist}}{The list of previously-created brushes} +\twocolitem{\helpref{wxCursor}{wxcursor}}{A small, transparent bitmap representing the cursor} +\twocolitem{\helpref{wxFont}{wxfont}}{Represents fonts} +\twocolitem{\helpref{wxFontList}{wxfontlist}}{The list of previously-created fonts} +\twocolitem{\helpref{wxIcon}{wxicon}}{A small, transparent bitmap for assigning to frames and drawing on device contexts} +\twocolitem{\helpref{wxImageList}{wximagelist}}{A list of images, used with some controls} +\twocolitem{\helpref{wxMask}{wxmask}}{Represents a mask to be used with a bitmap for transparent drawing} +\twocolitem{\helpref{wxPen}{wxpen}}{Used for drawing lines on a device context} +\twocolitem{\helpref{wxPenList}{wxpenlist}}{The list of previously-created pens} +\twocolitem{\helpref{wxPalette}{wxpalette}}{Represents a table of indices into RGB values} +\twocolitem{\helpref{wxRegion}{wxregion}}{Represents a simple or complex region on a window or device context} +\end{twocollist} + +{\large {\bf Events}} + +\overview{Overview}{eventhandlingoverview} + +An event object contains information about a specific event. Event handlers +(usually member functions) have a single, event argument. + +\begin{twocollist}\itemsep=0pt +\twocolitem{\helpref{wxActivateEvent}{wxactivateevent}}{A window or application activation event} +\twocolitem{\helpref{wxCloseEvent}{wxcloseevent}}{A close window or end session event} +\twocolitem{\helpref{wxCommandEvent}{wxcommandevent}}{An event from a variety of standard controls} +\twocolitem{\helpref{wxDropFilesEvent}{wxdropfilesevent}}{A drop files event} +\twocolitem{\helpref{wxEraseEvent}{wxeraseevent}}{An erase background event} +\twocolitem{\helpref{wxEvent}{wxevent}}{The event base class} +\twocolitem{\helpref{wxFocusEvent}{wxfocusevent}}{A window focus event} +\twocolitem{\helpref{wxKeyEvent}{wxkeyevent}}{A keypress event} +\twocolitem{\helpref{wxIdleEvent}{wxidleevent}}{An idle event} +\twocolitem{\helpref{wxInitDialogEvent}{wxinitdialogevent}}{A dialog initialisation event} +\twocolitem{\helpref{wxJoystickEvent}{wxjoystickevent}}{A joystick event} +\twocolitem{\helpref{wxListEvent}{wxlistevent}}{A list control event} +\twocolitem{\helpref{wxMenuEvent}{wxmenuevent}}{A menu event} +\twocolitem{\helpref{wxMouseEvent}{wxmouseevent}}{A mouse event} +\twocolitem{\helpref{wxMoveEvent}{wxmoveevent}}{A move event} +\twocolitem{\helpref{wxPaintEvent}{wxpaintevent}}{A paint event} +%\twocolitem{\helpref{wxSessionEvent}{wxsessionevent}}{A session ending event} +\twocolitem{\helpref{wxSizeEvent}{wxsizeevent}}{A size event} +\twocolitem{\helpref{wxSysColourChangedEvent}{wxsyscolourchangedevent}}{A system colour change event} +\twocolitem{\helpref{wxTreeEvent}{wxtreeevent}}{A tree control event} +\twocolitem{\helpref{wxUpdateUIEvent}{wxupdateuievent}}{A user interface update event} +\end{twocollist} + +{\large {\bf Validators}} + +These are the window validators, used for filtering and validating +user input. + +\begin{twocollist}\itemsep=0pt +\twocolitem{\helpref{wxValidator}{wxvalidator}}{Base validator class.} +\twocolitem{\helpref{wxTextValidator}{wxtextvalidator}}{Text control validator class.} +\end{twocollist} + +{\large {\bf Data structures}} + +These are the data structure classes supported by wxWindows. + +\begin{twocollist}\itemsep=0pt +\twocolitem{\helpref{wxExpr}{wxexpr}}{A class for flexible I/O} +\twocolitem{\helpref{wxExprDatabase}{wxexprdatabase}}{A class for flexible I/O} +\twocolitem{\helpref{wxDate}{wxdate}}{A class for date manipulation} +\twocolitem{\helpref{wxHashTable}{wxhashtable}}{A simple hash table implementation} +\twocolitem{\helpref{wxList}{wxlist}}{A simple linked list implementation} +\twocolitem{\helpref{wxNode}{wxnode}}{Represents a node in the wxList implementation} +\twocolitem{\helpref{wxObject}{wxobject}}{The root class for most wxWindows classes} +\twocolitem{\helpref{wxPathList}{wxpathlist}}{A class to help search multiple paths} +\twocolitem{\helpref{wxPoint}{wxpoint}}{Representation of a point} +\twocolitem{\helpref{wxRect}{wxrect}}{A class representing a rectangle} +\twocolitem{\helpref{wxRegion}{wxregion}}{A class representing a region} +\twocolitem{\helpref{wxString}{wxstring}}{A string class} +\twocolitem{\helpref{wxStringList}{wxstringlist}}{A class representing a list of strings} +\twocolitem{\helpref{wxRealPoint}{wxrealpoint}}{Representation of a point using floating point numbers} +\twocolitem{\helpref{wxSize}{wxsize}}{Representation of a size} +\twocolitem{\helpref{wxTime}{wxtime}}{A class for time manipulation} +\end{twocollist} + +{\large {\bf Run-time class information system}} + +\overview{Overview}{runtimeclassoverview} + +wxWindows supports run-time manipulation of class information, and dynamic +creation of objects given class names. + +\begin{twocollist}\itemsep=0pt +\twocolitem{\helpref{wxClassInfo}{wxclassinfo}}{Holds run-time class information} +\twocolitem{\helpref{wxObject}{wxobject}}{Root class for classes with run-time information} +\twocolitem{\helpref{Macros}{macros}}{Macros for manipulating run-time information} +\end{twocollist} + +{\large {\bf Debugging features}} + +\overview{Overview}{debuggingoverview} + +wxWindows supports some aspects of debugging an application through +classes, functions and macros. + +\begin{twocollist}\itemsep=0pt +\twocolitem{\helpref{wxDebugContext}{wxdebugcontext}}{Provides various debugging facilities} +\twocolitem{\helpref{wxDebugStreamBuf}{wxdebugstreambuf}}{A stream buffer writing to the debug stream} +\twocolitem{\helpref{wxObject}{wxobject}}{Provides optional debugging versions of {\bf new} and {\bf delete}} +\twocolitem{\helpref{wxTrace}{wxtrace}}{Tracing facility} +\twocolitem{\helpref{wxTraceLevel}{wxtracelevel}}{Tracing facility with levels} +\twocolitem{\helpref{WXDEBUG\_NEW}{debugnew}}{Use this macro to give further debugging information} +\twocolitem{\helpref{WXTRACE}{trace}}{Trace macro} +\twocolitem{\helpref{WXTRACELEVEL}{tracelevel}}{Trace macro with levels} +\end{twocollist} + +{\large {\bf Interprocess communication}} + +\overview{Overview}{ipcoverview} + +wxWindows provides a simple interprocess communications facilities +based on DDE. + +\begin{twocollist}\itemsep=0pt +\twocolitem{\helpref{wxDDEClient}{wxddeclient}}{Represents a client} +\twocolitem{\helpref{wxDDEConnection}{wxddeconnection}}{Represents the connection between a client and a server} +\twocolitem{\helpref{wxDDEServer}{wxddeserver}}{Represents a server} +%TODO: put this somewhere \twocolitem{\helpref{wxHelpInstance}{wxhelpinstance}}{A specialised client} +\end{twocollist} + +{\large {\bf Document/view framework}} + +\overview{Overview}{docviewoverview} + +wxWindows supports a document/view framework which provides +housekeeping for a document-centric application. + +TODO: MDI frame classes for documents; make it unnecessary to convert +between streams and files (overridable method that uses filenames instead of streams). + +\begin{twocollist}\itemsep=0pt +\twocolitem{\helpref{wxDocument}{wxdocument}}{Represents a document} +\twocolitem{\helpref{wxView}{wxview}}{Represents a view} +\twocolitem{\helpref{wxDocTemplate}{wxdoctemplate}}{Manages the relationship between a document class and a veiw class} +\twocolitem{\helpref{wxDocManager}{wxdocmanager}}{Manages the documents and views in an application} +\twocolitem{\helpref{wxDocChildFrame}{wxdocchildframe}}{A child frame for showing a document view} +\twocolitem{\helpref{wxDocParentFrame}{wxdocparentframe}}{A parent frame to contain views} +\end{twocollist} + +{\large {\bf Printing framework}} + +\overview{Overview}{printingoverview} + +A printing and previewing framework is implemented to +make it relatively straighforward to provide document printing +facilities. + +\begin{twocollist}\itemsep=0pt +\twocolitem{\helpref{wxPreviewFrame}{wxpreviewframe}}{Frame for displaying a print preview} +\twocolitem{\helpref{wxPreviewCanvas}{wxpreviewcanvas}}{Canvas for displaying a print preview} +\twocolitem{\helpref{wxPreviewControlBar}{wxpreviewcontrolbar}}{Standard control bar for a print preview} +\twocolitem{\helpref{wxPrintData}{wxprintdata}}{Represents information about the document being printed} +\twocolitem{\helpref{wxPrintDialog}{wxprintdialog}}{Standard print dialog} +\twocolitem{\helpref{wxPrinter}{wxprinter}}{Class representing the printer} +\twocolitem{\helpref{wxPrinterDC}{wxprinterdc}}{Printer device context} +\twocolitem{\helpref{wxPrintout}{wxprintout}}{Class representing a particular printout} +\twocolitem{\helpref{wxPrintPreview}{wxprintpreview}}{Class representing a print preview} +\end{twocollist} + +{\large {\bf Database classes}} + +\overview{Database classes overview}{odbcoverview} + +wxWindows provides a set of classes for accessing Microsoft's ODBC (Open Database Connectivity) +product. + +\begin{twocollist}\itemsep=0pt +\twocolitem{\helpref{wxDatabase}{wxdatabase}}{Database class} +\twocolitem{\helpref{wxQueryCol}{wxquerycol}}{Class representing a column} +\twocolitem{\helpref{wxQueryField}{wxqueryfield}}{Class representing a field} +\twocolitem{\helpref{wxRecordSet}{wxrecordset}}{Class representing one or more record} +\end{twocollist} + +{\large {\bf Miscellaneous}} + +\begin{twocollist}\itemsep=0pt +\twocolitem{\helpref{wxApp}{wxapp}}{Application class} +\twocolitem{\helpref{wxTimer}{wxtimer}}{Timer class} +\twocolitem{\helpref{wxSystemSettings}{wxsystemsettings}}{System settings class} +\end{twocollist} + + diff --git a/docs/latex/wx/checkbox.tex b/docs/latex/wx/checkbox.tex new file mode 100644 index 0000000000..c1910aa99f --- /dev/null +++ b/docs/latex/wx/checkbox.tex @@ -0,0 +1,96 @@ +\section{\class{wxCheckBox}}\label{wxcheckbox} + +A checkbox is a labelled box which is either on (checkmark is visible) +or off (no checkmark). + +\wxheading{Derived from} + +\helpref{wxControl}{wxcontrol}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +There are no special styles for wxCheckBox. + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{See also} + +\helpref{wxRadioButton}{wxradiobutton} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxCheckBox::wxCheckBox}\label{wxcheckboxconstr} + +\func{}{wxCheckBox}{\void} + +Default constructor. + +\func{}{wxCheckBox}{\param{wxWindow* }{parent}, \param{const wxWindowID}{ id},\rtfsp +\param{const wxString\& }{label}, \param{const wxPoint\& }{pos = wxDefaultPosition},\rtfsp +\param{const wxSize\& }{size = wxDefaultSize}, \param{long}{ style = 0},\rtfsp +\param{const wxValidator\& }{val}, \param{const wxString\& }{name = ``checkBox"}} + +Constructor, creating and showing a checkbox. + +\wxheading{Parameters} + +\docparam{parent}{Parent window. Must not be NULL.} + +\docparam{id}{Checkbox identifier. A value of -1 indicates a default value.} + +\docparam{label}{Text to be displayed next to the checkbox.} + +\docparam{pos}{Checkbox position. If the position (-1, -1) is specified then a default position is chosen.} + +\docparam{size}{Checkbox size. If the default size (-1, -1) is specified then a default size is chosen.} + +\docparam{style}{Window style. See \helpref{wxCheckBox}{wxcheckbox}.} + +\docparam{validator}{Window validator.} + +\docparam{name}{Window name.} + +\wxheading{See also} + +\helpref{wxCheckBox::Create}{wxcheckboxcreate}, \helpref{wxValidator}{wxvalidator} + +\membersection{wxCheckBox::\destruct{wxCheckBox}} + +\func{}{\destruct{wxCheckBox}}{\void} + +Destructor, destroying the checkbox. + +\membersection{wxCheckBox::Create}\label{wxcheckboxcreate} + +\func{bool}{Create}{\param{wxWindow* }{parent}, \param{const wxWindowID}{ id},\rtfsp +\param{const wxString\& }{label}, \param{const wxPoint\& }{pos = wxDefaultPosition},\rtfsp +\param{const wxSize\& }{size = wxDefaultSize}, \param{long}{ style = 0},\rtfsp +\param{const wxValidator\& }{val}, \param{const wxString\& }{name = ``checkBox"}} + +Creates the checkbox for two-step construction. See \helpref{wxCheckBox::wxCheckBox}{wxcheckboxconstr}\rtfsp +for details. + +\membersection{wxCheckBox::GetValue}\label{wxcheckboxgetvalue} + +\constfunc{bool}{GetValue}{\void} + +Gets the state of the checkbox. + +\wxheading{Return value} + +Returns TRUE if it is checked, FALSE otherwise. + +\membersection{wxCheckBox::SetValue}\label{wxcheckboxsetvalue} + +\func{void}{SetValue}{\param{const bool}{ state}} + +Sets the checkbox to the given state. + +\wxheading{Parameters} + +\docparam{state}{If TRUE, the check is on, otherwise it is off.} + + diff --git a/docs/latex/wx/choice.tex b/docs/latex/wx/choice.tex new file mode 100644 index 0000000000..9610d3fc27 --- /dev/null +++ b/docs/latex/wx/choice.tex @@ -0,0 +1,193 @@ +\section{\class{wxChoice}}\label{wxchoice} + +A choice item is used to select one of a list of strings. Unlike a +listbox, only the selection is visible until the user pulls down the +menu of choices. + +\wxheading{Derived from} + +\helpref{wxControl}{wxcontrol}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +There are no special styles for wxChoice. + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{See also} + +\helpref{wxListBox}{wxlistbox} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxChoice::wxChoice}\label{wxchoiceconstr} + +\func{}{wxChoice}{\void} + +Default constructor. + +\func{}{wxChoice}{\param{wxWindow *}{parent}, \param{const wxWindowID}{ id},\rtfsp +\param{const wxPoint\& }{pos}, \param{const wxSize\&}{ size},\rtfsp +\param{const int}{ n}, \param{const wxString }{choices[]},\rtfsp +\param{const long}{ style = 0}, \param{const wxValidator\& }{validator = wxDefaultValidator}, \param{const wxString\& }{name = ``choice"}} + +Constructor, creating and showing a choice. + +\wxheading{Parameters} + +\docparam{parent}{Parent window. Must not be NULL.} + +\docparam{id}{Window identifier. A value of -1 indicates a default value.} + +\docparam{pos}{Window position.} + +\docparam{size}{Window size. If the default size (-1, -1) is specified then the choice is sized +appropriately.} + +\docparam{n}{Number of strings with which to initialise the choice control.} + +\docparam{choices}{An array of strings with which to initialise the choice control.} + +\docparam{style}{Window style. See \helpref{wxChoice}{wxchoice}.} + +\docparam{validator}{Window validator.} + +\docparam{name}{Window name.} + +\wxheading{See also} + +\helpref{wxChoice::Create}{wxchoicecreate}, \helpref{wxValidator}{wxvalidator} + +\membersection{wxChoice::\destruct{wxChoice}} + +\func{}{\destruct{wxChoice}}{\void} + +Destructor, destroying the choice item. + +\membersection{wxChoice::Append}\label{wxchoiceappend} + +\func{void}{Append}{\param{const wxString\& }{ item}} + +Adds the item to the end of the choice control. + +\wxheading{Parameters} + +\docparam{item}{String to add.} + +\membersection{wxChoice::Clear}\label{wxchoiceclear} + +\func{void}{Clear}{\void} + +Clears the strings from the choice item. + +\membersection{wxChoice::Create}\label{wxchoicecreate} + +\func{bool}{Create}{\param{wxWindow *}{parent}, \param{const wxWindowID}{ id},\rtfsp +\param{const wxPoint\& }{pos}, \param{const wxSize\&}{ size},\rtfsp +\param{const int}{ n}, \param{const wxString }{choices[]},\rtfsp +\param{const long}{ style = 0}, \param{const wxString\& }{name = ``choice"}} + +Creates the choice for two-step construction. See \helpref{wxChoice::wxChoice}{wxchoiceconstr}. + +\membersection{wxChoice::FindString}\label{wxchoicefindstring} + +\constfunc{int}{FindString}{\param{const wxString\& }{string}} + +Finds a choice matching the given string. + +\wxheading{Parameters} + +\docparam{string}{String to find.} + +\wxheading{Return value} + +Returns the position if found, or -1 if not found. + +\membersection{wxChoice::GetColumns}\label{wxchoicegetcolumns} + +\constfunc{int}{GetColumns}{\void} + +Gets the number of columns in this choice item. + +\wxheading{Remarks} + +This is implemented for Motif only. + +\membersection{wxChoice::GetSelection}\label{wxchoicegetselection} + +\constfunc{int}{GetSelection}{\void} + +Gets the id (position) of the selected string, or -1 if there is no selection. + +\membersection{wxChoice::GetString}\label{wxchoicegetstring} + +\constfunc{wxString}{GetString}{\param{const int}{ n}} + +Returns the string at the given position. + +\wxheading{Parameters} + +\docparam{n}{The zero-based position.} + +\wxheading{Return value} + +The string at the given position, or the empty string if {\it n} is invalid. + +\membersection{wxChoice::GetStringSelection}\label{wxchoicegetstringselection} + +\constfunc{wxString}{GetStringSelection}{\void} + +Gets the selected string, or the empty string if no string is selected. + +\membersection{wxChoice::Number}\label{wxchoicenumber} + +\constfunc{int}{Number}{\void} + +Returns the number of strings in the choice control. + +\membersection{wxChoice::SetColumns}\label{wxchoicesetcolumns} + +\func{void}{SetColumns}{\param{const int}{ n = 1}} + +Sets the number of columns in this choice item. + +\wxheading{Parameters} + +\docparam{n}{Number of columns.} + +\wxheading{Remarks} + +This is implemented for Motif only. + +\membersection{wxChoice::SetSelection}\label{wxchoicesetselection} + +\func{void}{SetSelection}{\param{const int}{ n}} + +Sets the choice by passing the desired string position. + +\wxheading{Parameters} + +\docparam{n}{The string position to select, starting from zero.} + +\wxheading{See also} + +\helpref{wxChoice::SetStringSelection}{wxchoicesetstringselection} + +\membersection{wxChoice::SetStringSelection}\label{wxchoicesetstringselection} + +\func{void}{SetStringSelection}{\param{const wxString\& }{ string}} + +Sets the choice by passing the desired string. + +\wxheading{Parameters} + +\docparam{string}{The string to select.} + +\wxheading{See also} + +\helpref{wxChoice::SetSelection}{wxchoicesetselection} + + diff --git a/docs/latex/wx/clasinfo.tex b/docs/latex/wx/clasinfo.tex new file mode 100644 index 0000000000..66388d2d19 --- /dev/null +++ b/docs/latex/wx/clasinfo.tex @@ -0,0 +1,76 @@ +\section{\class{wxClassInfo}}\label{wxclassinfo} + +This class stores meta-information about classes. Instances of this class are +not generally defined directly by an application, but indirectly through use +of macros such as {\bf DECLARE\_DYNAMIC\_CLASS} and {\bf IMPLEMENT\_DYNAMIC\_CLASS}. + +\wxheading{Derived from} + +No parent class. + +\wxheading{See also} + +\overview{Overview}{wxclassinfooverview}\\ +\helpref{wxObject}{wxobject} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxClassInfo::wxClassInfo}\label{wxclassinfoconstr} + +\func{}{wxClassInfo}{\param{char* }{className}, \param{char* }{baseClass1}, \param{char* }{baseClass2}, + \param{int}{ size}, \param{wxObjectConstructorFn }{fn}} + +Constructs a wxClassInfo object. The supplied macros implicitly construct objects of this +class, so there is no need to create such objects explicitly in an application. + +\membersection{wxClassInfo::CreateObject} + +\func{wxObject*}{CreateObject}{\void} + +Creates an object of the appropriate kind. Returns NULL if the class has not been declared +dynamically createable (typically, it's an abstract class). + +\membersection{wxClassInfo::FindClass} + +\func{static wxClassInfo *}{FindClass}{\param{char* }{name}} + +Finds the wxClassInfo object for a class of the given string name. + +\membersection{wxClassInfo::GetBaseClassName1} + +\constfunc{char*}{GetBaseClassName1}{\void} + +Returns the name of the first base class (NULL if none). + +\membersection{wxClassInfo::GetBaseClassName2} + +\constfunc{char*}{GetBaseClassName2}{\void} + +Returns the name of the second base class (NULL if none). + +\membersection{wxClassInfo::GetClassName} + +\constfunc{char *}{GetClassName}{\void} + +Returns the string form of the class name. + +\membersection{wxClassInfo::GetSize} + +\constfunc{int}{GetSize}{\void} + +Returns the size of the class. + +\membersection{wxClassInfo::InitializeClasses} + +\func{static void}{InitializeClasses}{\void} + +Initializes pointers in the wxClassInfo objects for fast execution +of IsKindOf. Called in base wxWindows library initialization. + +\membersection{wxClassInfo::IsKindOf}\label{wxclassinfoiskindof} + +\func{bool}{IsKindOf}{\param{wxClassInfo* }{info}} + +Returns TRUE if this class is a kind of (inherits from) the given class. + + diff --git a/docs/latex/wx/classes.tex b/docs/latex/wx/classes.tex new file mode 100644 index 0000000000..f3c3844846 --- /dev/null +++ b/docs/latex/wx/classes.tex @@ -0,0 +1,163 @@ +\chapter{Alphabetical class reference}\label{classref} +\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% +\pagenumbering{arabic}% +% +\begin{comment} +\helpignore{\section{Class hierarchy}% + +The GUI-specific wxWindows class hierarchy is shown in Figure 5.1. +Many other, non-GUI classes have been omitted. + +\vskip 1cm +$$\image{14cm;0cm}{wxclass.ps}$$ +\vskip 1cm +\centerline{Figure 5.1: wxWindows class hierarchy} + +\newpage}% + +\overview{Writing a wxWindows application: a rough guide}{roughguide} + +\helponly{ +\sethotspotcolour{off}% +\large{ +\helpref{Notes on using the reference}{referencenotes}\\ +\helpref{Guide to functions}{functions} +\sethotspotcolour{on}% +}} +\end{comment} + +\input activevt.tex +\input app.tex +\input button.tex +\input bitmap.tex +\input bbutton.tex +\input brush.tex +\input checkbox.tex +\input choice.tex +\input clasinfo.tex +\input clientdc.tex +\input clipbrd.tex +\input closeevt.tex +\input colour.tex +\input colordlg.tex +\input combobox.tex +\input command.tex +\input cmdevent.tex +\input cmdproc.tex +\input control.tex +\input cursor.tex +\input database.tex +\input date.tex +\input dc.tex +\input ddeclint.tex +\input ddeconn.tex +\input ddeservr.tex +\input debugcxt.tex +\input dialog.tex +\input dirdlg.tex +\input document.tex +\input docchfrm.tex +\input docmanag.tex +\input docprfrm.tex +\input doctempl.tex +\input dropevt.tex +\input eraseevt.tex +\input event.tex +\input evthand.tex +\input expr.tex +\input file.tex +\input filedlg.tex +\input filehist.tex +\input focusevt.tex +\input font.tex +\input fontdlg.tex +\input fontlist.tex +\input frame.tex +\input gauge.tex +\input gdiobj.tex +\input grid.tex +\input hash.tex +\input helpinst.tex +\input idleevt.tex +\input icon.tex +\input imaglist.tex +\input ilayout.tex +\input indlgevt.tex +\input keyevent.tex +\input layout.tex +\input list.tex +\input listbox.tex +\input listctrl.tex +\input listevt.tex +\input mask.tex +\input mdi.tex +\input menu.tex +\input menuitem.tex +\input menuevt.tex +\input memorydc.tex +\input msgdlg.tex +\input metafile.tex +\input minifram.tex +\input module.tex +\input mouseevt.tex +\input moveevt.tex +\input mltchdlg.tex +\input node.tex +\input object.tex +\input pagedlg.tex +\input paintdc.tex +\input paintevt.tex +\input palette.tex +\input panel.tex +\input pantabv.tex +\input pathlist.tex +\input pen.tex +\input point.tex +\input prevwin.tex +\input print.tex +\input postscpt.tex +\input query.tex +\input realpoin.tex +\input rect.tex +\input recrdset.tex +\input radiobox.tex +\input radiobut.tex +\input region.tex +\input screendc.tex +\input scrolbar.tex +\input scrolevt.tex +\input scrolwin.tex +\input sngchdlg.tex +\input size.tex +\input sizeevt.tex +\input slider.tex +\input spinbutt.tex +\input splitter.tex +\input statbmp.tex +\input statbox.tex +\input stattext.tex +\input statusbr.tex +\input wxstring.tex +\input strlist.tex +\input sysclevt.tex +\input settings.tex +\input tab.tex +\input text.tex +\input textdlg.tex +\input valtext.tex +\input taskbar.tex +\input time.tex +\input timer.tex +\input treectrl.tex +\input treeevt.tex +\input toolbar.tex +\input upditer.tex +\input upduievt.tex +\input validatr.tex +\input view.tex +\input window.tex +\input windowdc.tex + +\input function.tex + diff --git a/docs/latex/wx/clientdc.tex b/docs/latex/wx/clientdc.tex new file mode 100644 index 0000000000..8101533aa0 --- /dev/null +++ b/docs/latex/wx/clientdc.tex @@ -0,0 +1,31 @@ +\section{\class{wxClientDC}}\label{wxclientdc} + +A wxClientDC must be constructed if an application wishes to paint on the +client area of a window from outside an {\bf OnPaint} event. +This should normally be constructed as a temporary stack object; don't store +a wxClientDC object. + +To draw on a window from within {\bf OnPaint}, construct a \helpref{wxPaintDC}{wxpaintdc} object. + +To draw on the whole window including decorations, construct a \helpref{wxWindowDC}{wxwindowdc} object +(Windows only). + +\wxheading{Derived from} + +\helpref{wxDC}{wxdc} + +\wxheading{See also} + +\helpref{wxDC}{wxdc}, \helpref{wxMemoryDC}{wxmemorydc}, \helpref{wxPaintDC}{wxpaintdc},\rtfsp +\helpref{wxWindowDC}{wxwindowdc}, \helpref{wxScreenDC}{wxscreendc} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxClientDC::wxClientDC} + +\func{}{wxClientDC}{\param{wxWindow*}{ window}} + +Constructor. Pass a pointer to the window on which you wish to paint. + + + diff --git a/docs/latex/wx/clipbrd.tex b/docs/latex/wx/clipbrd.tex new file mode 100644 index 0000000000..a12f8b1f05 --- /dev/null +++ b/docs/latex/wx/clipbrd.tex @@ -0,0 +1,103 @@ +\section{\class{wxClipboard}}\label{wxclipboard} + +There is one wxClipboard object referenced by the pointer +wxTheClipboard, initialized by calling \helpref{wxInitClipboard}{wxinitclipboard}. +Under X, clipboard manipulation must be done by using this class, and +such code will work under MS Windows also. Under MS Windows, you have the +alternative of using the normal clipboard functions. + +The documentation for this class will be expanded in due course. At present, +wxClipboard is only used in the wxMediaWindow add-on library. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxClipboardClient}{wxclipboardclient}, \helpref{wxInitClipboard}{wxinitclipboard}. + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxClipboard::GetClipboardClient} + +\func{wxClipboardClient *}{GetClipboardClient}{\void} + +Get the clipboard client directly. Will be NULL if clipboard data +is a string, or if some other application owns the clipboard. +This can be useful for shortcutting data translation, if the +clipboard user can check for a specific client. + +\membersection{wxClipboard::GetClipboardData} + +\func{char*}{GetClipboardData}{\param{const wxString\& }{format}, \param{long *}{length}, \param{long}{ time}} + +Get data from the clipboard. + +\membersection{wxClipboard::GetClipboardString} + +\func{wxString}{GetClipboardString}{\param{long}{ time}} + +Get the data from the clipboard in the format ``TEXT". + +\membersection{wxClipboard::SetClipboardClient} + +\func{void}{SetClipboardClient}{\param{wxClipboardClient *}{client}, \param{long}{ time}} + +Set the clipboard data owner. + +\membersection{wxClipboard::SetClipboardString} + +\func{void}{SetClipboardString}{\param{const wxString\& }{data}, \param{long}{ time}} + +Set the clipboard string; does not require a client. + +\section{\class{wxClipboardClient}}\label{wxclipboardclient} + +Implemented under X and MS Windows, a clipboard client holds data +belonging to the clipboard. For plain text, a client is not necessary. + +wxClipboardClient is an abstract class for which the virtual functions +BeingReplaced and GetData must be overridden. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxClipboard}{wxclipboard}, \helpref{wxInitClipboard}{wxinitclipboard}. + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxClipboardClient::formats} + +\member{wxStringList}{formats} + +This list should be filled in with strings indicating the formats +this client can provide. Almost all clients will provide``TEXT". +Format names should be 4 characters long, so things will work +out on the Macintosh. + +\membersection{wxClipboardClient::BeingReplaced} + +\func{void}{BeingReplaced}{\void} + +This method is called when the client is losing the selection. + +\membersection{wxClipboardClient::GetData} + +\func{char*}{GetData}{\param{const wxString\& }{format}, \param{long *}{size}} + +This method is called when someone wants the data this client is +supplying to the clipboard. + +{\it format} is a string indicating the +format of the data - one of the strings from the ``formats" +list. + +{\it size} should be filled with the size of the resulting +data. In the case of text, {\it size} does not count the +NULL terminator. + + diff --git a/docs/latex/wx/closeevt.tex b/docs/latex/wx/closeevt.tex new file mode 100644 index 0000000000..d41ff76c48 --- /dev/null +++ b/docs/latex/wx/closeevt.tex @@ -0,0 +1,57 @@ +\section{\class{wxCloseEvent}}\label{wxcloseevent} + +This event class contains information about window and session close events. + +\wxheading{Derived from} + +\helpref{wxEvent}{wxevent} + +\wxheading{Event table macros} + +To process a close event, use these event handler macros to direct input to member +functions that take a wxCloseEvent argument. + +\twocolwidtha{7cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf EVT\_CLOSE(func)}}{Process a close event, supplying the member function.} +\end{twocollist}% + +\wxheading{See also} + +\helpref{wxWindow::OnCloseWindow}{wxwindowonclosewindow},\rtfsp +\helpref{wxWindow::Close}{wxwindowclose},\rtfsp +\helpref{Window deletion overview}{windowdeletionoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxCloseEvent::wxCloseEvent} + +\func{}{wxCloseEvent}{\param{WXTYPE}{ commandEventType = 0}, \param{int}{ id = 0}} + +Constructor. + +\membersection{wxCloseEvent::GetLoggingOff}\label{wxcloseeventgetloggingoff} + +\constfunc{bool}{GetLoggingOff}{\void} + +Returns TRUE if the user is logging off. + +\membersection{wxCloseEvent::GetSessionEnding}\label{wxcloseeventgetsessionending} + +\constfunc{bool}{GetSessionEnding}{\void} + +Returns TRUE if the session is ending. + +\membersection{wxCloseEvent::GetForce}\label{wxcloseeventgetforce} + +\constfunc{void}{GetForce}{\void} + +Returns TRUE if the application wishes to force the window to close. + +\membersection{wxCloseEvent::Veto}\label{wxcloseeventveto} + +\func{void}{Veto}{\void} + +Call this from your event handler to veto a system shutdown. + + diff --git a/docs/latex/wx/cmdevent.tex b/docs/latex/wx/cmdevent.tex new file mode 100644 index 0000000000..eeab34240e --- /dev/null +++ b/docs/latex/wx/cmdevent.tex @@ -0,0 +1,177 @@ +\section{\class{wxCommandEvent}}\label{wxcommandevent} + +This event class contains information about command events, which originate from a variety of +simple controls. More complex controls, such as \helpref{wxTreeCtrl}{wxtreectrl}, have separate command event classes. + +\wxheading{Derived from} + +\helpref{wxEvent}{wxevent} + +\wxheading{Event table macros} + +To process a menu command event, use these event handler macros to direct input to member +functions that take a wxCommandEvent argument. + +\twocolwidtha{7cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf EVT\_COMMAND(id, cmd, func)}}{Process a command, supplying the window identifier, +command event identifier, and member function.} +\twocolitem{{\bf EVT\_COMMAND\_RANGE(id1, id2, cmd, func)}}{Process a command for a range +of window identifiers, supplying the minimum and maximum window identifiers, +command event identifier, and member function.} +\twocolitem{{\bf EVT\_BUTTON(id, func)}}{Process a wxEVT\_COMMAND\_BUTTON\_CLICKED command, +which is generated by a wxButton control.} +\twocolitem{{\bf EVT\_CHECKBOX(id, func)}}{Process a wxEVT\_COMMAND\_CHECKBOX\_CLICKED command, +which is generated by a wxCheckBox control.} +\twocolitem{{\bf EVT\_CHOICE(id, func)}}{Process a wxEVT\_COMMAND\_CHOICE\_SELECTED command, +which is generated by a wxChoice control.} +\twocolitem{{\bf EVT\_LISTBOX(id, func)}}{Process a wxEVT\_COMMAND\_LISTBOX\_SELECTED command, +which is generated by a wxListBox control.} +\twocolitem{{\bf EVT\_TEXT(id, func)}}{Process a wxEVT\_COMMAND\_TEXT\_UPDATED command, +which is generated by a wxTextCtrl control.} +\twocolitem{{\bf EVT\_TEXT\_ENTER(id, func)}}{Process a wxEVT\_COMMAND\_TEXT\_ENTER command, +which is generated by a wxTextCtrl control.} +\twocolitem{{\bf EVT\_MENU(id, func)}}{Process a wxEVT\_COMMAND\_MENU\_SELECTED command, +which is generated by a menu item.} +\twocolitem{{\bf EVT\_MENU\_RANGE(id1, id2, func)}}{Process a wxEVT\_COMMAND\_MENU\_RANGE command, +which is generated by a range of menu items.} +\twocolitem{{\bf EVT\_SLIDER(id, func)}}{Process a wxEVT\_COMMAND\_SLIDER\_UPDATED command, +which is generated by a wxSlider control.} +\twocolitem{{\bf EVT\_RADIOBOX(id, func)}}{Process a wxEVT\_COMMAND\_RADIOBOX\_SELECTED command, +which is generated by a wxRadioBox control.} +\twocolitem{{\bf EVT\_RADIOBUTTON(id, func)}}{Process a wxEVT\_COMMAND\_RADIOBUTTON\_SELECTED command, +which is generated by a wxRadioButton control.} +\twocolitem{{\bf EVT\_SCROLLBAR(id, func)}}{Process a wxEVT\_COMMAND\_SCROLLBAR\_UPDATED command, +which is generated by a wxScrollBar control. This is provided for compatibility only; +more specific scrollbar event macros should be used instead (see \helpref{wxScrollEvent}{wxscrollevent}).} +\twocolitem{{\bf EVT\_COMBOBOX(id, func)}}{Process a wxEVT\_COMMAND\_COMBOBOX\_SELECTED command, +which is generated by a wxComboBox control.} +\twocolitem{{\bf EVT\_TOOL(id, func)}}{Process a wxEVT\_COMMAND\_TOOL\_CLICKED command, +which is generated by a toobar button.} +\twocolitem{{\bf EVT\_TOOL\_RCLICKED(id, func)}}{Process a wxEVT\_COMMAND\_TOOL\_RCLICKED command, +which is generated by a toobar button.} +\twocolitem{{\bf EVT\_TOOL\_ENTER(id, func)}}{Process a wxEVT\_COMMAND\_TOOL\_ENTER command, +which is generated by a toobar button.} +\twocolitem{{\bf EVT\_COMMAND\_LEFT\_CLICK(id, func)}}{Process a wxEVT\_COMMAND\_LEFT\_CLICK command, +which is generated by a control (Windows 95 and NT only).} +\twocolitem{{\bf EVT\_COMMAND\_LEFT\_DCLICK(id, func)}}{Process a wxEVT\_COMMAND\_LEFT\_DCLICK command, +which is generated by a control (Windows 95 and NT only).} +\twocolitem{{\bf EVT\_COMMAND\_RIGHT\_CLICK(id, func)}}{Process a wxEVT\_COMMAND\_RIGHT\_CLICK command, +which is generated by a control (Windows 95 and NT only).} +\twocolitem{{\bf EVT\_COMMAND\_SET\_FOCUS(id, func)}}{Process a wxEVT\_COMMAND\_SET\_FOCUS command, +which is generated by a control (Windows 95 and NT only).} +\twocolitem{{\bf EVT\_COMMAND\_KILL\_FOCUS(id, func)}}{Process a wxEVT\_COMMAND\_KILL\_FOCUS command, +which is generated by a control (Windows 95 and NT only).} +\twocolitem{{\bf EVT\_COMMAND\_ENTER(id, func)}}{Process a wxEVT\_COMMAND\_ENTER command, +which is generated by a control.} +\end{twocollist}% + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxCommandEvent::m\_clientData} + +\member{char*}{m\_clientData} + +Contains a pointer to client data for listboxes and choices, if the event +was a selection. + +\membersection{wxCommandEvent::m\_commandInt} + +\member{int}{m\_commandInt} + +Contains an integer identifier corresponding to a listbox, choice or +radiobox selection (only if the event was a selection, not a +deselection), or a boolean value representing the value of a checkbox. + +\membersection{wxCommandEvent::m\_commandString} + +\member{char*}{m\_commandString} + +Contains a string corresponding to a listbox or choice selection. + +\membersection{wxCommandEvent::m\_extraLong} + +\member{long}{m\_extraLong} + +Extra information. If the event comes from a listbox selection, it is +a boolean determining whether the event was a selection (TRUE) or a +deselection (FALSE). A listbox deselection only occurs for +multiple-selection boxes, and in this case the index and string values +are indeterminate and the listbox must be examined by the application. + +\membersection{wxCommandEvent::wxCommandEvent} + +\func{}{wxCommandEvent}{\param{WXTYPE}{ commandEventType = 0}, \param{int}{ id = 0}} + +Constructor. + +\membersection{wxCommandEvent::Checked} + +\func{bool}{Checked}{\void} + +Returns TRUE or FALSE for a checkbox selection event. + +\membersection{wxCommandEvent::GetClientData} + +\func{char*}{GetClientData}{\void} + +Returns client data pointer for a listbox or choice selection event +(not valid for a deselection). + +\membersection{wxCommandEvent::GetExtraLong} + +\func{long}{GetExtraLong}{\void} + +Returns the {\bf m\_extraLong} member. + +\membersection{wxCommandEvent::GetInt} + +\func{int}{GetInt}{\void} + +Returns the {\bf m\_commandInt} member. + +\membersection{wxCommandEvent::GetSelection} + +\func{int}{GetSelection}{\void} + +Returns item index for a listbox or choice selection event (not valid for +a deselection). + +\membersection{wxCommandEvent::GetString} + +\func{char*}{GetString}{\void} + +Returns item string for a listbox or choice selection event (not valid for +a deselection). + +\membersection{wxCommandEvent::IsSelection} + +\func{bool}{IsSelection}{\void} + +For a listbox or choice event, returns TRUE if it is a selection, FALSE if it +is a deselection. + +\membersection{wxCommandEvent::SetClientData} + +\func{void}{SetClientData}{\param{char*}{ clientData}} + +Sets the client data for this event. + +\membersection{wxCommandEvent::SetExtraLong} + +\func{void}{SetExtraLong}{\param{int}{ extraLong}} + +Sets the {\bf m\_extraLong} member. + +\membersection{wxCommandEvent::SetInt} + +\func{void}{SetInt}{\param{int}{ intCommand}} + +Sets the {\bf m\_commandInt} member. + +\membersection{wxCommandEvent::SetString} + +\func{void}{SetString}{\param{char*}{ string}} + +Sets the {\bf m\_commandString} member. + diff --git a/docs/latex/wx/cmdproc.tex b/docs/latex/wx/cmdproc.tex new file mode 100644 index 0000000000..1164bccfe6 --- /dev/null +++ b/docs/latex/wx/cmdproc.tex @@ -0,0 +1,106 @@ +\section{\class{wxCommandProcessor}}\label{wxcommandprocessor} + +wxCommandProcessor is a class that maintains a history of wxCommands, +with undo/redo functionality built-in. Derive a new class from this +if you want different behaviour. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxCommandProcessor overview}{wxcommandprocessoroverview}, \helpref{wxCommand}{wxcommand} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxCommandProcessor::wxCommandProcessor} + +\func{}{wxCommandProcessor}{\param{int}{ maxCommands = 100}} + +Constructor. + +{\it maxCommands} defaults to a rather arbitrary 100, but can be set from 1 to any integer. +If your wxCommand classes store a lot of data, you may wish the limit the number of +commands stored to a smaller number. + +\membersection{wxCommandProcessor::\destruct{wxCommandProcessor}} + +\func{}{\destruct{wxCommandProcessor}}{\void} + +Destructor. + +\membersection{wxCommandProcessor::CanUndo} + +\func{virtual bool}{CanUndo}{\void} + +Returns TRUE if the currently-active command can be undone, FALSE otherwise. + +\membersection{wxCommandProcessor::ClearCommands} + +\func{virtual void}{ClearCommands}{\void} + +Deletes all the commands in the list and sets the current command pointer to NULL. + +\membersection{wxCommandProcessor::Do} + +\func{virtual bool}{Do}{\void} + +Executes (redoes) the current command (the command that has just been undone if any). + +\membersection{wxCommandProcessor::GetCommands} + +\constfunc{wxList\&}{GetCommands}{\void} + +Returns the list of commands. + +\membersection{wxCommandProcessor::GetMaxCommands} + +\constfunc{int}{GetMaxCommands}{\void} + +Returns the maximum number of commands that the command processor stores. + +\membersection{wxCommandProcessor::GetEditMenu} + +\constfunc{wxMenu*}{GetEditMenu}{\void} + +Returns the edit menu associated with the command processor. + +\membersection{wxCommandProcessor::Initialize} + +\func{virtual void}{Initialize}{\void} + +Initializes the command processor, setting the current command to the +last in the list (if any), and updating the edit menu (if one has been +specified). + +\membersection{wxCommandProcessor::SetEditMenu} + +\func{void}{SetEditMenu}{\param{wxMenu* }{menu}} + +Tells the command processor to update the Undo and Redo items on this +menu as appropriate. Set this to NULL if the menu is about to be +destroyed and command operations may still be performed, or the command +processor may try to access an invalid pointer. + +\membersection{wxCommandProcessor::Submit} + +\func{virtual bool}{Submit}{\param{wxCommand *}{command}, \param{bool}{ storeIt = TRUE}} + +Submits a new command to the command processor. The command processor +calls wxCommand::Do to execute the command; if it succeeds, the command +is stored in the history list, and the associated edit menu (if any) updated +appropriately. If it fails, the command is deleted +immediately. Once Submit has been called, the passed command should not +be deleted directly by the application. + +{\it storeIt} indicates whether the successful command should be stored +in the history list. + +\membersection{wxCommandProcessor::Undo} + +\func{virtual bool}{Undo}{\void} + +Undoes the command just executed. + + diff --git a/docs/latex/wx/colordlg.tex b/docs/latex/wx/colordlg.tex new file mode 100644 index 0000000000..332f344a02 --- /dev/null +++ b/docs/latex/wx/colordlg.tex @@ -0,0 +1,48 @@ +\section{\class{wxColourDialog}}\label{wxcolourdialog} + +This class represents the colour chooser dialog. + +\wxheading{Derived from} + +\helpref{wxDialog}{wxdialog}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxColourDialog Overview}{wxcolourdialogoverview}, \helpref{wxColour}{wxcolour}, \helpref{wxColourData}{wxcolourdata} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxColourDialog::wxColourDialog} + +\func{}{wxColourDialog}{\param{wxWindow* }{parent}, \param{wxColourData* }{data = NULL}} + +Constructor. Pass a parent window, and optionally a pointer to a block of colour +data, which will be copied to the colour dialog's colour data. + +\wxheading{See also} + +\helpref{wxColourData}{wxcolourdata} + +\membersection{wxColourDialog::\destruct{wxColourDialog}} + +\func{}{\destruct{wxColourDialog}}{\void} + +Destructor. + +\membersection{wxColourDialog::GetColourData} + +\func{wxColourData\&}{GetColourData}{\void} + +Returns the \helpref{colour data}{wxcolourdata} associated with the colour dialog. + +\membersection{wxColourDialog::ShowModal} + +\func{int}{ShowModal}{\void} + +Shows the dialog, returning wxID\_OK if the user pressed OK, and wxOK\_CANCEL +otherwise. + + diff --git a/docs/latex/wx/colour.tex b/docs/latex/wx/colour.tex new file mode 100644 index 0000000000..8625f8e813 --- /dev/null +++ b/docs/latex/wx/colour.tex @@ -0,0 +1,266 @@ +\section{\class{wxColour}}\label{wxcolour} + +A colour is an object representing a combination of Red, Green, and Blue (RGB) intensity values, +and is used to determine drawing colours. See the +entry for \helpref{wxColourDatabase}{wxcolourdatabase} for how a pointer to a predefined, +named colour may be returned instead of creating a new colour. + +Valid RGB values are in the range 0 to 255. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxColourDatabase}{wxcolourdatabase}, \helpref{wxPen}{wxpen}, \helpref{wxBrush}{wxbrush},\rtfsp +\helpref{wxColourDialog}{wxcolourdialog} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxColour::wxColour}\label{wxcolourconstr} + +\func{}{wxColour}{\void} + +Default constructor. + +\func{}{wxColour}{\param{const unsigned char}{ red}, \param{const unsigned char}{ green}, \param{const unsigned char}{ blue}} + +Constructs a colour from red, green and blue values. + +\func{}{wxColour}{\param{const wxString\& }{colourNname}} + +Constructs a colour object using a colour name +listed in {\bf wxTheColourDatabase}. + +\wxheading{Parameters} + +\docparam{red}{The red value.} + +\docparam{green}{The green value.} + +\docparam{blue}{The blue value.} + +\docparam{colourName}{The colour name.} + +\wxheading{See also} + +\helpref{wxColourDatabase}{wxcolourdatabase} + +\membersection{wxColour::Blue}\label{wxcolourblue} + +\constfunc{unsigned char}{Blue}{\void} + +Returns the blue intensity. + +\membersection{wxColour::GetPixel}\label{wxcolourgetpixel} + +\constfunc{long}{GetPixel}{\void} + +Returns a pixel value which is platform-dependent. On Windows, a COLORREF is returned. +On X, an allocated pixel value is returned. + +-1 is returned if the pixel is invalid (on X, unallocated). + +\membersection{wxColour::Green}\label{wxcolourgreen} + +\constfunc{unsigned char}{Green}{\void} + +Returns the green intensity. + +\membersection{wxColour::Ok}\label{wxcolourok} + +\constfunc{bool}{Ok}{\void} + +Returns TRUE if the colour object is valid (the colour has been initialised with RGB values). + +\membersection{wxColour::Red}\label{wxcolourred} + +\constfunc{unsigned char}{Red}{\void} + +Returns the red intensity. + +\membersection{wxColour::Set}\label{wxcolourset} + +\func{void}{Set}{\param{const unsigned char}{ red}, \param{const unsigned char}{ green}, \param{const unsigned char}{ blue}} + +Sets the RGB intensity values. + +\membersection{wxColour::operator $=$}\label{wxcolourassign} + +\func{wxColour\&}{operator $=$}{\param{const wxColour\&}{ colour}} + +Assignment operator, taking another colour object. + +\func{wxColour\&}{operator $=$}{\param{const wxString\&}{ colourName}} + +Assignment operator, using a colour name to be found in the colour database. + +\wxheading{See also} + +\helpref{wxColourDatabase}{wxcolourdatabase} + +\membersection{wxColour::operator $==$}\label{wxcolourequality} + +\func{bool}{operator $==$}{\param{const wxColour\&}{ colour}} + +Tests the equality of two colours by comparing individual red, green blue colours. + +TODO: this may be different on platforms other than Windows - no reference counting +is done on Windows. + +\membersection{wxColour::operator $!=$}\label{wxcolourinequality} + +\func{bool}{operator $!=$}{\param{const wxColour\&}{ colour}} + +Tests the inequality of two colours by comparing individual red, green blue colours. + +TODO: this may be different on platforms other than Windows - no reference counting +is done on Windows. + +\section{\class{wxColourData}}\label{wxcolourdata} + +This class holds a variety of information related to colour dialogs. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxColour}{wxcolour}, \helpref{wxColourDialog}{wxcolourdialog}, \helpref{wxColourDialog overview}{wxcolourdialogoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxColourData::wxColourData}\label{wxcolourdataconstr} + +\func{}{wxColourData}{\void} + +Constructor. Initializes the custom colours to white, the {\it data colour} setting +to black, and the {\it choose full} setting to TRUE. + +\membersection{wxColourData::\destruct{wxColourData}} + +\func{}{\destruct{wxColourData}}{\void} + +Destructor. + +\membersection{wxColourData::GetChooseFull}\label{wxcolourdatagetchoosefull} + +\constfunc{bool}{GetChooseFull}{\void} + +Under Windows, determines whether the Windows colour dialog will display the full dialog +with custom colour selection controls. Has no meaning under other platforms. + +The default value is TRUE. + +\membersection{wxColourData::GetColour}\label{wxcolourdatagetcolour} + +\constfunc{wxColour\&}{GetColour}{\void} + +Gets the current colour associated with the colour dialog. + +The default colour is black. + +\membersection{wxColourData::GetCustomColour}\label{wxcolourdatagetcustomcolour} + +\constfunc{wxColour\&}{GetCustomColour}{\param{const int}{ i}} + +Gets the {\it i}th custom colour associated with the colour dialog. {\it i} should +be an integer between 0 and 15. + +The default custom colours are all white. + +\membersection{wxColourData::SetChooseFull}\label{wxcolourdatasetchoosefull} + +\func{void}{SetChooseFull}{\param{const bool }{flag}} + +Under Windows, tells the Windows colour dialog to display the full dialog +with custom colour selection controls. Under other platforms, has no effect. + +The default value is TRUE. + +\membersection{wxColourData::SetColour}\label{wxcolourdatasetcolour} + +\func{void}{SetColour}{\param{const wxColour\&}{ colour}} + +Sets the default colour for the colour dialog. + +The default colour is black. + +\membersection{wxColourData::SetCustomColour}\label{wxcolourdatasetcustomcolour} + +\func{void}{SetColour}{\param{const int}{ i}, \param{const wxColour\&}{ colour}} + +Sets the {\it i}th custom colour for the colour dialog. {\it i} should +be an integer between 0 and 15. + +The default custom colours are all white. + +\membersection{wxColourData::operator $=$}\label{wxcolourdataassign} + +\func{void}{operator $=$}{\param{const wxColourData\&}{ data}} + +Assingment operator for the colour data. + +\section{\class{wxColourDatabase}}\label{wxcolourdatabase} + +wxWindows maintains a database of standard RGB colours for a predefined +set of named colours (such as ``BLACK'', ``LIGHT GREY''). The +application may add to this set if desired by using {\it Append}. There +is only one instance of this class: {\bf wxTheColourDatabase}. + +\wxheading{Derived from} + +\helpref{wxList}{wxlist}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Remarks} + +The colours in the standard database are as follows: + +AQUAMARINE, BLACK, BLUE, BLUE VIOLET, BROWN, CADET BLUE, CORAL, +CORNFLOWER BLUE, CYAN, DARK GREY, DARK GREEN, DARK OLIVE GREEN, DARK +ORCHID, DARK SLATE BLUE, DARK SLATE GREY DARK TURQUOISE, DIM GREY, +FIREBRICK, FOREST GREEN, GOLD, GOLDENROD, GREY, GREEN, GREEN YELLOW, +INDIAN RED, KHAKI, LIGHT BLUE, LIGHT GREY, LIGHT STEEL BLUE, LIME GREEN, +MAGENTA, MAROON, MEDIUM AQUAMARINE, MEDIUM BLUE, MEDIUM FOREST GREEN, +MEDIUM GOLDENROD, MEDIUM ORCHID, MEDIUM SEA GREEN, MEDIUM SLATE BLUE, +MEDIUM SPRING GREEN, MEDIUM TURQUOISE, MEDIUM VIOLET RED, MIDNIGHT BLUE, +NAVY, ORANGE, ORANGE RED, ORCHID, PALE GREEN, PINK, PLUM, PURPLE, RED, +SALMON, SEA GREEN, SIENNA, SKY BLUE, SLATE BLUE, SPRING GREEN, STEEL +BLUE, TAN, THISTLE, TURQUOISE, VIOLET, VIOLET RED, WHEAT, WHITE, YELLOW, +YELLOW GREEN. + +\wxheading{See also} + +\helpref{wxColour}{wxcolour} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxColourDatabase::wxColourDatabase}\label{wxcolourdatabaseconstr} + +\func{}{wxColourDatabase}{\void} + +Constructs the colour database. + +\membersection{wxColourDatabase::FindColour}\label{wxcolourdatabasefindcolour} + +\func{wxColour*}{FindColour}{\param{const wxString\& }{colourName}} + +Finds a colour given the name. Returns NULL if not found. + +\membersection{wxColourDatabase::FindName}\label{wxcolourdatabasefindname} + +\constfunc{wxString}{FindName}{\param{const wxColour\&}{ colour}} + +Finds a colour name given the colour. Returns NULL if not found. + +\membersection{wxColourDatabase::Initialize}\label{wxcolourdatabaseinitialize} + +\func{void}{Initialize}{\void} + +Initializes the database with a number of stock colours. Called by wxWindows +on start-up. + + diff --git a/docs/latex/wx/combobox.tex b/docs/latex/wx/combobox.tex new file mode 100644 index 0000000000..14a6978125 --- /dev/null +++ b/docs/latex/wx/combobox.tex @@ -0,0 +1,313 @@ +\section{\class{wxComboBox}}\label{wxcombobox} + +A combobox is like a combination of an edit control and a listbox. It can be +displayed as static list with editable or read-only text field; or a drop-down list with +text field; or a drop-down list without a text field. + +A combobox permits a single selection only. Combobox items are numbered from zero. + +\wxheading{Derived from} + +\helpref{wxChoice}{wxchoice}\\ +\helpref{wxControl}{wxcontrol}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{wxCB\_SIMPLE}}{Creates a combobox with a permanently displayed list.} +\twocolitem{\windowstyle{wxCB\_DROPDOWN}}{Creates a combobox with a drop-down list.} +\twocolitem{\windowstyle{wxCB\_READONLY}}{Creates a combo box consisting of a drop-down list and static text item +displaying the current selection.} +\twocolitem{\windowstyle{wxCB\_SORT}}{Sorts the entries in the list alphabetically.} +\end{twocollist} + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{See also} + +\helpref{wxListBox}{wxlistbox}, \helpref{wxTextCtrl}{wxtextctrl}, \helpref{wxChoice}{wxchoice} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxComboBox::wxComboBox}\label{wxcomboboxconstr} + +\func{}{wxComboBox}{\void} + +Default constructor. + +\func{}{wxComboBox}{\param{wxWindow*}{ parent}, \param{const wxWindowID}{ id},\rtfsp +\param{const wxString\& }{value = ``"}, \param{const wxPoint\&}{ pos = wxDefaultPosition}, \param{const wxSize\&}{ size = wxDefaultSize},\rtfsp +\param{const int}{ n}, \param{const wxString }{choices[]},\rtfsp +\param{const long}{ style = 0}, \param{const wxValidator\& }{validator = wxDefaultValidator}, \param{const wxString\& }{name = ``comboBox"}} + +Constructor, creating and showing a combobox. + +\wxheading{Parameters} + +\docparam{parent}{Parent window. Must not be NULL.} + +\docparam{id}{Window identifier. A value of -1 indicates a default value.} + +\docparam{pos}{Window position.} + +\docparam{size}{Window size. If the default size (-1, -1) is specified then the window is sized +appropriately.} + +\docparam{n}{Number of strings with which to initialise the control.} + +\docparam{choices}{An array of strings with which to initialise the control.} + +\docparam{style}{Window style. See \helpref{wxComboBox}{wxcombobox}.} + +\docparam{validator}{Window validator.} + +\docparam{name}{Window name.} + +\wxheading{See also} + +\helpref{wxComboBox::Create}{wxcomboboxcreate}, \helpref{wxValidator}{wxvalidator} + +\membersection{wxComboBox::\destruct{wxComboBox}} + +\func{}{\destruct{wxComboBox}}{\void} + +Destructor, destroying the combobox. + +\membersection{wxComboBox::Append}\label{wxcomboboxappend} + +\func{void}{Append}{\param{const wxString\& }{item}} + +Adds the item to the end of the combobox. + +\func{void}{Append}{\param{const wxString\& }{ item}, \param{char* }{clientData}} + +Adds the item to the end of the combobox, associating the given data +with the item. + +\wxheading{Parameters} + +\docparam{item}{The string to add.} + +\docparam{clientData}{Client data to associate with the item.} + +\membersection{wxComboBox::Clear}\label{wxcomboboxclear} + +\func{void}{Clear}{\void} + +Clears all strings from the combobox. + +\membersection{wxComboBox::Create}\label{wxcomboboxcreate} + +\func{bool}{Create}{\param{wxWindow*}{ parent}, \param{const wxWindowID}{ id},\rtfsp +\param{const wxString\& }{value = ``"}, \param{const wxPoint\&}{ pos = wxDefaultPosition}, \param{const wxSize\&}{ size = wxDefaultSize},\rtfsp +\param{const int}{ n}, \param{const wxString }{choices[]},\rtfsp +\param{const long}{ style = 0}, \param{const wxValidator\& }{validator = wxDefaultValidator}, \param{const wxString\& }{name = ``comboBox"}} + +Creates the combobox for two-step construction. Derived classes +should call or replace this function. See \helpref{wxComboBox::wxComboBox}{wxcomboboxconstr}\rtfsp +for further details. + +\membersection{wxComboBox::Copy}\label{wxcomboboxcopy} + +\func{void}{Copy}{\void} + +Copies the selected text to the clipboard. + +\membersection{wxComboBox::Cut}\label{wxcomboboxcut} + +\func{void}{Cut}{\void} + +Copies the selected text to the clipboard and removes the selection. + +\membersection{wxComboBox::Delete}\label{wxcomboboxdelete} + +\func{void}{Delete}{\param{const int}{ n}} + +Deletes an item from the combobox. + +\wxheading{Parameters} + +\docparam{n}{The item to delete, starting from zero.} + +\membersection{wxComboBox::Deselect}\label{wxcomboboxdeselect} + +\func{void}{Deselect}{\param{const int}{ n}} + +Deselects an item in the combobox. + +\wxheading{Parameters} + +\docparam{n}{The item to deselect, starting from zero.} + +\membersection{wxComboBox::FindString}\label{wxcomboboxfindstring} + +\func{int}{FindString}{\param{const wxString\& }{string}} + +Finds a choice matching the given string. + +\wxheading{Parameters} + +\docparam{string}{The item to find.} + +\wxheading{Return value} + +The position if found, or -1 if not found. + +\membersection{wxComboBox::GetClientData}\label{wxcomboboxgetclientdata} + +\constfunc{char*}{GetClientData}{\param{const int}{ n}} + +Returns a pointer to the client data associated with the given item (if any). + +\wxheading{Parameters} + +\docparam{n}{An item, starting from zero.} + +\wxheading{Return value} + +A pointer to the client data, or NULL if the item was not found. + +\membersection{wxComboBox::GetInsertionPoint}\label{wxcomboboxgetinsertionpoint} + +\constfunc{long}{GetInsertionPoint}{\void} + +Returns the insertion point for the combobox's text field. + +\membersection{wxComboBox::GetLastPosition}\label{wxcomboboxgetlastposition} + +\constfunc{long}{GetLastPosition}{\void} + +Returns the last position in the combobox text field. + +\membersection{wxComboBox::GetSelection}\label{wxcomboboxgetselection} + +\constfunc{int}{GetSelection}{\void} + +Gets the position of the selected string, or -1 if there is no selection. + +\membersection{wxComboBox::GetString}\label{wxcomboboxgetstring} + +\constfunc{wxString}{GetString}{\param{int}{ n}} + +Returns the string at position {\it n}. + +\wxheading{Parameters} + +\docparam{n}{The item position, starting from zero.} + +\wxheading{Return value} + +The string if the item is found, otherwise the empty string. + +\membersection{wxComboBox::GetStringSelection}\label{wxcomboboxgetstringselection} + +\constfunc{wxString}{GetStringSelection}{\void} + +Gets the selected string. + +\membersection{wxComboBox::GetValue}\label{wxcomboboxgetvalue} + +\constfunc{wxString}{GetValue}{\void} + +Returns the current value in the combobox text field. + +\membersection{wxComboBox::Number}\label{wxcomboboxnumber} + +\constfunc{int}{Number}{\void} + +Returns the number of items in the combobox list. + +TODO: make this GetNumber or GetCount? + +\membersection{wxComboBox::Paste}\label{wxcomboboxpaste} + +\func{void}{Paste}{\void} + +Pastes text from the clipboard to the text field. + +\membersection{wxComboBox::Replace}\label{wxcomboboxreplace} + +\func{void}{Replace}{\param{const long}{ from}, \param{const long}{ to}, \param{const wxString\& }{text}} + +Replaces the text between two positions with the given text, in the combobox text field. + +\wxheading{Parameters} + +\docparam{from}{The first position.} + +\docparam{to}{The second position.} + +\docparam{text}{The text to insert.} + +\membersection{wxComboBox::Remove}\label{wxcomboboxremove} + +\func{void}{Remove}{\param{const long}{ from}, \param{const long}{ to}} + +Removes the text between the two positions in the combobox text field. + +\wxheading{Parameters} + +\docparam{from}{The first position.} + +\docparam{to}{The last position.} + +\membersection{wxComboBox::SetClientData}\label{wxcomboboxsetclientdata} + +\func{void}{SetClientData}{\param{const int}{ n}, \param{char* }{data}} + +Associates the given client data pointer with the given item. + +\wxheading{Parameters} + +\docparam{n}{The zero-based item.} + +\docparam{data}{The client data.} + +\membersection{wxComboBox::SetInsertionPoint}\label{wxcomboboxsetinsertionpoint} + +\func{void}{SetInsertionPoint}{\param{const long}{ pos}} + +Sets the insertion point in the combobox text field. + +\wxheading{Parameters} + +\docparam{pos}{The new insertion point.} + +\membersection{wxComboBox::SetInsertionPointEnd}\label{wxcomboboxsetinsertionpointend} + +\func{void}{SetInsertionPointEnd}{\void} + +Sets the insertion point at the end of the combobox text field. + +\membersection{wxComboBox::SetSelection}\label{wxcomboboxsetselection} + +\func{void}{SetSelection}{\param{const int}{ n}} + +Selects the given item in the combobox list. + +\func{void}{SetSelection}{\param{const long}{ from}, \param{const long}{ to}} + +Selects the text between the two positions, in the combobox text field. + +\wxheading{Parameters} + +\docparam{n}{The zero-based item to select.} + +\docparam{from}{The first position.} + +\docparam{to}{The second position.} + +\membersection{wxComboBox::SetValue}\label{wxcomboboxsetvalue} + +\func{void}{SetValue}{\param{const wxString\& }{text}} + +Sets the text for the combobox text field. + +\wxheading{Parameters} + +\docparam{text}{The text to set.} + + diff --git a/docs/latex/wx/command.tex b/docs/latex/wx/command.tex new file mode 100644 index 0000000000..9bd25f2811 --- /dev/null +++ b/docs/latex/wx/command.tex @@ -0,0 +1,85 @@ +\section{\class{wxCommand}}\label{wxcommand} + +wxCommand is a base class for modelling an application command, +which is an action usually performed by selecting a menu item, pressing +a toolbar button or any other means provided by the application to +change the data or view. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\overview{Overview}{wxcommandoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxCommand::wxCommand} + +\func{}{wxCommand}{\param{bool}{ canUndo = FALSE}, \param{const wxString\& }{name = NULL}} + +Constructor. wxCommand is an abstract class, so you will need to derive +a new class and call this constructor from your own constructor. + +{\it canUndo} tells the command processor whether this command is undo-able. You +can achieve the same functionality by overriding the CanUndo member function (if for example +the criteria for undoability is context-dependant). + +{\it name} must be supplied for the command processor to display the command name +in the application's edit menu. + +\membersection{wxCommand::\destruct{wxCommand}} + +\func{}{\destruct{wxCommand}}{\void} + +Destructor. + +\membersection{wxCommand::CanUndo} + +\func{bool}{CanUndo}{\void} + +Returns TRUE if the command can be undone, FALSE otherwise. + +\membersection{wxCommand::Do} + +\func{bool}{Do}{\void} + +Override this member function to execute the appropriate action when called. +Return TRUE to indicate that the action has taken place, FALSE otherwise. +Returning FALSE will indicate to the command processor that the action is +not undoable and should not be added to the command history. + +\membersection{wxCommand::GetName} + +\func{wxString}{GetName}{\void} + +Returns the command name. + +\membersection{wxCommand::Undo} + +\func{bool}{Undo}{\void} + +Override this member function to un-execute a previous Do. +Return TRUE to indicate that the action has taken place, FALSE otherwise. +Returning FALSE will indicate to the command processor that the action is +not redoable and no change should be made to the command history. + +How you implement this command is totally application dependent, but typical +strategies include: + +\begin{itemize}\itemsep=0pt +\item Perform an inverse operation on the last modified piece of +data in the document. When redone, a copy of data stored in command +is pasted back or some operation reapplied. This relies on the fact that +you know the ordering of Undos; the user can never Undo at an arbitrary position +in the command history. +\item Restore the entire document state (perhaps using document transactioning). +Potentially very inefficient, but possibly easier to code if the user interface +and data are complex, and an `inverse execute' operation is hard to write. +\end{itemize} + +The docview sample uses the first method, to remove or restore segments +in the drawing. + + diff --git a/docs/latex/wx/contents.gif b/docs/latex/wx/contents.gif new file mode 100644 index 0000000000000000000000000000000000000000..3dddfa3dd5f0c652e8b27cd6c29e1fdd49ced5a8 GIT binary patch literal 231 zcmVG0Pz3-zrVld=jU&4Z(9HWEC2ui06_p40008OjE||y?GK}z zO&EZ)-n{z{a)K3v=81;mmA0S4Fj_r^UyThZDG{h6k9m zHI_(7spd!5_$SH6m{427qif=B^rPSC=_krsxP_d1IW%c6xrdxez(hvZ0GmZIrrXPgGKPVD&k z=grgP{p0)?%+AC&{I&W+cp}4UU(@I6nuj3v1`*A09+G8Q_-dut8%og(=h2d4HAY5D zwy?(2=~$2<=ehYEh#5=!#@gmN40GoL_aUdxHt!3P$=jT~&w9tsj#=;6@p)Re@y<-0 zr*$jBjAPC&k(r8(9t`~I2})liD*bdJD7}oL>xzv&Hih+my7a~9+r;VL6Q($A>MBOP z)(-s+b*5JN=ru?%b(KFwRg0ME%AtN+CI;-c>3HStxNQ~lLK}tpH|+2YTk%h99S_d; KFTQ%``27L>?3FzL literal 0 HcmV?d00001 diff --git a/docs/latex/wx/cursor.tex b/docs/latex/wx/cursor.tex new file mode 100644 index 0000000000..59c61db2eb --- /dev/null +++ b/docs/latex/wx/cursor.tex @@ -0,0 +1,169 @@ +\section{\class{wxCursor}}\label{wxcursor} + +A cursor is a small bitmap usually used for denoting where the mouse +pointer is, with a picture that might indicate the interpretation of a +mouse click. As with icons, cursors in X and MS Windows are created +in a different manner. Therefore, separate cursors will be created for the +different environments. Platform-specific methods for creating a {\bf +wxCursor} object are catered for, and this is an occasion where +conditional compilation will probably be required (see \helpref{wxIcon}{wxicon} for +an example). + +A single cursor object may be used in many windows (any subwindow type). +The wxWindows convention is to set the cursor for a window, as in X, +rather than to set it globally as in MS Windows, although a +global \helpref{::wxSetCursor}{wxsetcursor} is also available for MS Windows use. + +\wxheading{Derived from} + +\helpref{wxBitmap}{wxbitmap}\\ +\helpref{wxGDIObject}{wxgdiobject}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxBitmap}{wxbitmap}, \helpref{wxIcon}{wxicon}, \helpref{wxWindow::SetCursor}{wxwindowsetcursor},\rtfsp +\helpref{::wxSetCursor}{wxsetcursor} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxCursor::wxCursor}\label{wxcursorconstr} + +\func{}{wxCursor}{\void} + +Default constructor. + +\func{}{wxCursor}{\param{const char}{ bits[]}, \param{const int }{width}, + \param{const int }{ height}, \param{const int }{hotSpotX=-1}, \param{const int }{hotSpotY=-1}, \param{const char }{maskBits[]=NULL}} + +Constructs a cursor by passing an array of bits (Motif and Xt only). {\it maskBits} is used only under Motif. + +If either {\it hotSpotX} or {\it hotSpotY} is -1, the hotspot will be the centre of the cursor image (Motif only). + +\func{}{wxCursor}{\param{const wxString\& }{cursorName}, \param{const long }{type}, \param{const int }{hotSpotX=0}, \param{const int }{hotSpotY=0}} + +Constructs a cursor by passing a string resource name or filename. + +{\it hotSpotX} and {\it hotSpotY} are currently only used under Windows when loading from an +icon file, to specify the cursor hotspot relative to the top left of the image. + +\func{}{wxCursor}{\param{const int}{ cursorId}} + +Constructs a cursor using a cursor identifier. + +\func{}{wxCursor}{\param{const wxCursor\&}{ cursor}} + +Copy constructor. This uses reference counting so is a cheap operation. + +\func{}{wxCursor}{\param{const wxCursor*}{ cursor}} + +Copy constructor. This uses reference counting so is a cheap operation. + +\wxheading{Parameters} + +\docparam{bits}{An array of bits.} + +\docparam{maskBits}{Bits for a mask bitmap.} + +\docparam{width}{Cursor width.} + +\docparam{height}{Cursor height.} + +\docparam{hotSpotX}{Hotspot x coordinate.} + +\docparam{hotSpotY}{Hotspot y coordinate.} + +\docparam{type}{Icon type to load. Under Motif, {\it type} defaults to {\bf wxBITMAP\_TYPE\_XBM}. Under Windows, +it defaults to {\bf wxBITMAP\_TYPE\_CUR\_RESOURCE}. + +Under X, the permitted cursor types are: + +\twocolwidtha{6cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{wxBITMAP\_TYPE\_XBM}}{Load an X bitmap file.} +\end{twocollist} + +Under Windows, the permitted types are: + +\twocolwidtha{6cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{wxBITMAP\_TYPE\_CUR}}{Load a cursor from a .cur cursor file (only if USE\_RESOURCE\_LOADING\_IN\_MSW +is enabled in wx\_setup.h).} +\twocolitem{\windowstyle{wxBITMAP\_TYPE\_CUR\_RESOURCE}}{Load a Windows resource (as specified in the .rc file).} +\twocolitem{\windowstyle{wxBITMAP\_TYPE\_ICO}}{Load a cursor from a .ico icon file (only if USE\_RESOURCE\_LOADING\_IN\_MSW +is enabled in wx\_setup.h). Specify {\it hotSpotX} and {\it hotSpotY}.} +\end{twocollist}} + +\docparam{cursorId}{A stock cursor identifier. May be one of: + +\twocolwidtha{6cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf wxCURSOR\_ARROW}}{A standard arrow cursor.} +\twocolitem{{\bf wxCURSOR\_BULLSEYE}}{Bullseye cursor.} +\twocolitem{{\bf wxCURSOR\_CHAR}}{Rectangular character cursor.} +\twocolitem{{\bf wxCURSOR\_CROSS}}{A cross cursor.} +\twocolitem{{\bf wxCURSOR\_HAND}}{A hand cursor.} +\twocolitem{{\bf wxCURSOR\_IBEAM}}{An I-beam cursor (vertical line).} +\twocolitem{{\bf wxCURSOR\_LEFT\_BUTTON}}{Represents a mouse with the left button depressed.} +\twocolitem{{\bf wxCURSOR\_MAGNIFIER}}{A magnifier icon.} +\twocolitem{{\bf wxCURSOR\_MIDDLE\_BUTTON}}{Represents a mouse with the middle button depressed.} +\twocolitem{{\bf wxCURSOR\_NO\_ENTRY}}{A no-entry sign cursor.} +\twocolitem{{\bf wxCURSOR\_PAINT\_BRUSH}}{A paintbrush cursor.} +\twocolitem{{\bf wxCURSOR\_PENCIL}}{A pencil cursor.} +\twocolitem{{\bf wxCURSOR\_POINT\_LEFT}}{A cursor that points left.} +\twocolitem{{\bf wxCURSOR\_POINT\_RIGHT}}{A cursor that points right.} +\twocolitem{{\bf wxCURSOR\_QUESTION\_ARROW}}{An arrow and question mark.} +\twocolitem{{\bf wxCURSOR\_RIGHT\_BUTTON}}{Represents a mouse with the right button depressed.} +\twocolitem{{\bf wxCURSOR\_SIZENESW}}{A sizing cursor pointing NE-SW.} +\twocolitem{{\bf wxCURSOR\_SIZENS}}{A sizing cursor pointing N-S.} +\twocolitem{{\bf wxCURSOR\_SIZENWSE}}{A sizing cursor pointing NW-SE.} +\twocolitem{{\bf wxCURSOR\_SIZEWE}}{A sizing cursor pointing W-E.} +\twocolitem{{\bf wxCURSOR\_SIZING}}{A general sizing cursor.} +\twocolitem{{\bf wxCURSOR\_SPRAYCAN}}{A spraycan cursor.} +\twocolitem{{\bf wxCURSOR\_WAIT}}{A wait cursor.} +\twocolitem{{\bf wxCURSOR\_WATCH}}{A watch cursor.} +\end{twocollist}\twocolwidtha{5cm} + +Note that not all cursors are available on all platforms.} + +\docparam{cursor}{Pointer or reference to a cursor to copy.} + +\membersection{wxCursor::\destruct{wxCursor}} + +\func{}{\destruct{wxCursor}}{\void} + +Destroys the cursor. A cursor can be reused for more +than one window, and does not get destroyed when the window is +destroyed. wxWindows destroys all cursors on application exit, although +it's best to clean them up explicitly. + +\membersection{wxCursor::Ok}\label{wxcursorok} + +\constfunc{bool}{Ok}{\void} + +Returns TRUE if cursor data is present. + +\membersection{wxCursor::operator $=$}\label{wxcursorassignment} + +\func{wxCursor\&}{operator $=$}{\param{const wxCursor\& }{cursor}} + +Assignment operator, using reference counting. Returns a reference +to `this'. + +\membersection{wxCursor::operator $==$}\label{wxcursorequals} + +\func{bool}{operator $==$}{\param{const wxCursor\& }{cursor}} + +Equality operator. Two cursors are equal if they contain pointers +to the same underlying cursor data. It does not compare each attribute, +so two independently-created cursors using the same parameters will +fail the test. + +\membersection{wxCursor::operator $!=$}\label{wxcursornotequals} + +\func{bool}{operator $!=$}{\param{const wxCursor\& }{cursor}} + +Inequality operator. Two cursors are not equal if they contain pointers +to different underlying cursor data. It does not compare each attribute. + + diff --git a/docs/latex/wx/database.tex b/docs/latex/wx/database.tex new file mode 100644 index 0000000000..cf155b86ca --- /dev/null +++ b/docs/latex/wx/database.tex @@ -0,0 +1,272 @@ +\section{\class{wxDatabase}}\label{wxdatabase} + +Every database object represents an ODBC connection. The connection may be closed and reopened. + +\wxheading{Derivation} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\overview{wxDatabase overview}{wxdatabaseoverview}, \helpref{wxRecordSet}{wxrecordset} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxDatabase::wxDatabase} + +\func{}{wxDatabase}{\void} + +Constructor. The constructor of the first wxDatabase instance of an +application initializes the ODBC manager. + +\membersection{wxDatabase::\destruct{wxDatabase}} + +\func{}{\destruct{wxDatabase}}{\void} + +Destructor. Resets and destroys any associated wxRecordSet instances. + +The destructor of the last wxDatabase instance will deinitialize +the ODBC manager. + +\membersection{wxDatabase::BeginTrans} + +\func{bool}{BeginTrans}{\void} + +Not implemented. + +\membersection{wxDatabase::Cancel} + +\func{void}{Cancel}{\void} + +Not implemented. + +\membersection{wxDatabase::CanTransact} + +\func{bool}{CanTransact}{\void} + +Not implemented. + + +\membersection{wxDatabase::CanUpdate} + +\func{bool}{CanUpdate}{\void} + +Not implemented. + +\membersection{wxDatabase::Close} + +\func{bool}{Close}{\void} + +Resets the statement handles of any associated wxRecordSet objects, +and disconnects from the current data source. + +\membersection{wxDatabase::CommitTrans} + +\func{bool}{CommitTrans}{\void} + +Commits previous transactions. Not implemented. + +\membersection{wxDatabase::ErrorOccured} + +\func{bool}{ErrorOccured}{\void} + +Returns TRUE if the last action caused an error. + +\membersection{wxDatabase::ErrorSnapshot} + +\func{void}{ErrorSnapshot}{\param{HSTMT}{ statement = SQL\_NULL\_HSTMT}} + +This function will be called whenever an ODBC error occured. It stores the +error related information returned by ODBC. If a statement handle of the +concerning ODBC action is available it should be passed to the function. + +\membersection{wxDatabase::GetDatabaseName} + +\func{wxString}{GetDatabaseName}{\void} + +Returns the name of the database associated with the current connection. + +\membersection{wxDatabase::GetDataSource} + +\func{wxString}{GetDataSource}{\void} + +Returns the name of the connected data source. + +\membersection{wxDatabase::GetErrorClass} + +\func{wxString}{GetErrorClass}{\void} + +Returns the error class of the last error. The error class consists of +five characters where the first two characters contain the class +and the other three characters contain the subclass of the ODBC error. +See ODBC documentation for further details. + +\membersection{wxDatabase::GetErrorCode} + +\func{wxRETCODE}{GetErrorCode}{\void} + +Returns the error code of the last ODBC function call. This will be one of: + +\begin{twocollist}\itemsep=0pt +\twocolitem{SQL\_ERROR}{General error.} +\twocolitem{SQL\_INVALID\_HANDLE}{An invalid handle was passed to an ODBC function.} +\twocolitem{SQL\_NEED\_DATA}{ODBC expected some data.} +\twocolitem{SQL\_NO\_DATA\_FOUND}{No data was found by this ODBC call.} +\twocolitem{SQL\_SUCCESS}{The call was successful.} +\twocolitem{SQL\_SUCCESS\_WITH\_INFO}{The call was successful, but further information can be +obtained from the ODBC manager.} +\end{twocollist} + +\membersection{wxDatabase::GetErrorMessage} + +\func{wxString}{GetErrorMessage}{\void} + +Returns the last error message returned by the ODBC manager. + +\membersection{wxDatabase::GetErrorNumber} + +\func{long}{GetErrorNumber}{\void} + +Returns the last native error. A native error is an ODBC driver dependent +error number. + +\membersection{wxDatabase::GetHDBC} + +\func{HDBC}{GetHDBC}{\void} + +Returns the current ODBC database handle. + +\membersection{wxDatabase::GetHENV} + +\func{HENV}{GetHENV}{\void} + +Returns the ODBC environment handle. + +\membersection{wxDatabase::GetInfo} + +\func{bool}{GetInfo}{\param{long}{ infoType}, \param{long *}{buf}} + +\func{bool}{GetInfo}{\param{long}{ infoType}, \param{const wxString\& }{buf}, \param{int}{ bufSize=-1}} + +Returns requested information. The return value is TRUE if successful, FALSE otherwise. + +{\it infoType} is an ODBC identifier specifying the type of information to be returned. + +{\it buf} is a character or long integer pointer to storage which must be allocated by the +application, and which will contain the information if the function is successful. + +{\it bufSize} is the size of the character buffer. A value of -1 indicates that the size +should be computed by the GetInfo function. + +\membersection{wxDatabase::GetPassword} + +\func{wxString}{GetPassword}{\void} + +Returns the password of the current user. + +\membersection{wxDatabase::GetUsername} + +\func{wxString}{GetUsername}{\void} + +Returns the current username. + +\membersection{wxDatabase::GetODBCVersionFloat} + +\func{float}{GetODBCVersionFloat}{\param{bool}{ implementation=TRUE}} + +Returns the version of ODBC in floating point format, e.g. 2.50. + +{\it implementation} should be TRUE to get the DLL version, or FALSE to get the +version defined in the {\tt sql.h} header file. + +This function can return the value 0.0 if the header version number is not defined (for early +versions of ODBC). + +\membersection{wxDatabase::GetODBCVersionString} + +\func{wxString}{GetODBCVersionString}{\param{bool}{ implementation=TRUE}} + +Returns the version of ODBC in string format, e.g. ``02.50". + +{\it implementation} should be TRUE to get the DLL version, or FALSE to get the +version defined in the {\tt sql.h} header file. + +This function can return the value ``00.00" if the header version number is not defined (for early +versions of ODBC). + +\membersection{wxDatabase::InWaitForDataSource} + +\func{bool}{InWaitForDataSource}{\void} + +Not implemented. + +\membersection{wxDatabase::IsOpen} + +\func{bool}{IsOpen}{\void} + +Returns TRUE if a connection is open. + +\membersection{wxDatabase::Open}\label{wxdatabaseopen} + +\func{bool}{Open}{\param{const wxString\& }{datasource}, \param{bool}{ exclusive = FALSE}, \param{bool }{readOnly = TRUE}, + \param{const wxString\& }{username = ``ODBC"}, \param{const wxString\& }{password = ``"}} + +Connect to a data source. {\it datasource} contains the name of the ODBC data +source. The parameters exclusive and readOnly are not used. + +\membersection{wxDatabase::OnSetOptions} + +\func{void}{OnSetOptions}{\param{wxRecordSet *}{recordSet}} + +Not implemented. + +\membersection{wxDatabase::OnWaitForDataSource} + +\func{void}{OnWaitForDataSource}{\param{bool}{ stillExecuting}} + +Not implemented. + +\membersection{wxDatabase::RollbackTrans} + +\func{bool}{RollbackTrans}{\void} + +Sends a rollback to the ODBC driver. Not implemented. + +\membersection{wxDatabase::SetDataSource} + +\func{void}{SetDataSource}{\param{const wxString\& }{s}} + +Sets the name of the data source. Not implemented. + +\membersection{wxDatabase::SetLoginTimeout} + +\func{void}{SetLoginTimeout}{\param{long}{ seconds}} + +Sets the time to wait for an user login. Not implemented. + +\membersection{wxDatabase::SetPassword} + +\func{void}{SetPassword}{\param{const wxString\& }{s}} + +Sets the password of the current user. Not implemented. + +\membersection{wxDatabase::SetSynchronousMode} + +\func{void}{SetSynchronousMode}{\param{bool }{synchronous}} + +Toggles between synchronous and asynchronous mode. Currently only synchronous +mode is supported, so this function has no effect. + +\membersection{wxDatabase::SetQueryTimeout} + +\func{void}{SetQueryTimeout}{\param{long}{ seconds}} + +Sets the time to wait for a response to a query. Not implemented. + +\membersection{wxDatabase::SetUsername} + +\func{void}{SetUsername}{\param{const wxString\& }{s}} + +Sets the name of the current user. Not implemented. + + diff --git a/docs/latex/wx/date.tex b/docs/latex/wx/date.tex new file mode 100644 index 0000000000..8b35d5e190 --- /dev/null +++ b/docs/latex/wx/date.tex @@ -0,0 +1,348 @@ +\section{\class{wxDate}}\label{wxdate} + +A class for manipulating dates. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxTime}{wxtime} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxDate::wxDate}\label{wxdateconstr} + +\func{}{wxDate}{\void} + +Default constructor. + +\func{}{wxDate}{\param{const wxDate\&}{ date}} + +Copy constructor. + +\func{}{wxDate}{\param{const int}{ month}, \param{const int}{ day}, \param{const int}{ year}} + +Constructor taking month, day and year. + +\func{}{wxDate}{\param{const long}{ julian}} + +Constructor taking an integer representing the Julian date. This is the number of days since +1st January 4713 B.C., so to convert from the number of days since 1st January 1901, +construct a date for 1/1/1901, and add the number of days. + +\func{}{wxDate}{\param{const wxString\& }{dateString}} + +Constructor taking a string representing a date. This must be either the string TODAY, or of the +form {\tt MM/DD/YYYY} or {\tt MM-DD-YYYY}. For example: + +\begin{verbatim} + wxDate date("11/26/1966"); +\end{verbatim} + +\wxheading{Parameters} + +\docparam{date}{Date to copy.} + +\docparam{month}{Month: a number between 1 and 12.} + +\docparam{day}{Day: a number between 1 and 31.} + +\docparam{year}{Year, such as 1995, 2005.} + +\membersection{wxDate::\destruct{wxDate}} + +\func{void}{\destruct{wxDate}}{\void} + +Destructor. + +\membersection{wxDate::AddMonths}\label{wxdateaddmonths} + +\func{wxDate\&}{AddMonths}{\param{const int}{ months=1}} + +Adds the given number of months to the date, returning a reference to `this'. + +\membersection{wxDate::AddWeeks}\label{wxdateaddweeks} + +\func{wxDate\&}{AddWeeks}{\param{const int}{ weeks=1}} + +Adds the given number of weeks to the date, returning a reference to `this'. + +\membersection{wxDate::AddYears}\label{wxdateaddyears} + +\func{wxDate\&}{AddYears}{\param{const int}{ years=1}} + +Adds the given number of months to the date, returning a reference to `this'. + +\membersection{wxDate::FormatDate}\label{wxdateformatdate} + +\constfunc{wxString}{FormatDate}{\param{const int}{ type=-1}} + +Formats the date according to {\it type} if not -1, or according +to the current display type if -1. + +\wxheading{Parameters} + +\docparam{type}{-1 or one of: + +\begin{twocollist}\itemsep=0pt +\twocolitem{wxDAY}{Format day only.} +\twocolitem{wxMONTH}{Format month only.} +\twocolitem{wxMDY}{Format MONTH, DAY, YEAR.} +\twocolitem{wxFULL}{Format day, month and year in US style: DAYOFWEEK, MONTH, DAY, YEAR.} +\twocolitem{wxEUROPEAN}{Format day, month and year in European style: DAY, MONTH, YEAR.} +\end{twocollist}} + +\membersection{wxDate::GetDay}\label{wxdategetday} + +\constfunc{int}{GetDay}{\void} + +Returns the numeric day (in the range 1 to 31). + +\membersection{wxDate::GetDayOfWeek}\label{wxdategetdayofweek} + +\constfunc{int}{GetDayOfWeek}{\void} + +Returns the integer day of the week (in the range 1 to 7). + +\membersection{wxDate::GetDayOfWeekName}\label{wxdategetdayofweekname} + +\constfunc{wxString}{GetDayOfWeekName}{\void} + +Returns the name of the day of week. + +\membersection{wxDate::GetDayOfYear}\label{wxdategetdayofyear} + +\constfunc{long}{GetDayOfYear}{\void} + +Returns the day of the year (from 1 to 365). + +\membersection{wxDate::GetDaysInMonth}\label{wxdategetdaysinmonth} + +\constfunc{int}{GetDaysInMonth}{\void} + +Returns the number of days in the month (in the range 1 to 31). + +\membersection{wxDate::GetFirstDayOfMonth}\label{wxdategetfirstdayofmonth} + +\constfunc{int}{GetFirstDayOfMonth}{\void} + +Returns the day of week that is first in the month (in the range 1 to 7). + +\membersection{wxDate::GetJulianDate}\label{wxdategetjuliandate} + +\constfunc{long}{GetJulianDate}{\void} + +Returns the Julian date. + +\membersection{wxDate::GetMonth}\label{wxdategetmonth} + +\constfunc{int}{GetMonth}{\void} + +Returns the month number (in the range 1 to 12). + +\membersection{wxDate::GetMonthEnd} + +\func{wxDate}{GetMonthEnd}{\void} + +Returns the date representing the last day of the month. + +\membersection{wxDate::GetMonthName}\label{wxdategetmonthname} + +\constfunc{wxString}{GetMonthName}{\void} + +Returns the name of the month. Do not delete the returned storage. + +\membersection{wxDate::GetMonthStart}\label{wxdategetmonthstart} + +\constfunc{wxDate}{GetMonthStart}{\void} + +Returns the date representing the first day of the month. + +\membersection{wxDate::GetWeekOfMonth}\label{wxdategetweekofmonth} + +\constfunc{int}{GetWeekOfMonth}{\void} + +Returns the week of month (in the range 1 to 6). + +\membersection{wxDate::GetWeekOfYear}\label{wxdategetweekofyear} + +\constfunc{int}{GetWeekOfYear}{\void} + +Returns the week of year (in the range 1 to 52). + +\membersection{wxDate::GetYear}\label{wxdategetyear} + +\constfunc{int}{GetYear}{\void} + +Returns the year as an integer (such as `1995'). + +\membersection{wxDate::GetYearEnd}\label{wxdategetyearend} + +\constfunc{wxDate}{GetYearEnd}{\void} + +Returns the date representing the last day of the year. + +\membersection{wxDate::GetYearStart}\label{wxdategetyearstart} + +\constfunc{wxDate}{GetYearStart}{\void} + +Returns the date representing the first day of the year. + +\membersection{wxDate::IsLeapYear}\label{wxdateisleapyear} + +\constfunc{bool}{IsLeapYear}{\void} + +Returns TRUE if the year of this date is a leap year. + +\membersection{wxDate::Set}\label{wxdateset} + +\func{wxDate\&}{Set}{\void} + +Sets the date to current system date, returning a reference to `this'. + +\func{wxDate\&}{Set}{\param{const long}{ julian}} + +Sets the date to the given Julian date, returning a reference to `this'. + +\func{wxDate\&}{Set}{\param{const int}{ month}, \param{const int}{ day}, \param{const int}{ year}} + +Sets the date to the given date, returning a reference to `this'. + +{\it month} is a number from 1 to 12. + +{\it day} is a number from 1 to 31. + +{\it year} is a year, such as 1995, 2005. + +\membersection{wxDate::SetFormat}\label{wxdatesetformat} + +\func{void}{SetFormat}{\param{const int}{ format}} + +Sets the current format type. + +\wxheading{Parameters} + +\docparam{format}{-1 or one of: + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf wxDAY}}{Format day only.} +\twocolitem{{\bf wxMONTH}}{Format month only.} +\twocolitem{{\bf wxMDY}}{Format MONTH, DAY, YEAR.} +\twocolitem{{\bf wxFULL}}{Format day, month and year in US style: DAYOFWEEK, MONTH, DAY, YEAR.} +\twocolitem{{\bf wxEUROPEAN}}{Format day, month and year in European style: DAY, MONTH, YEAR.} +\end{twocollist}} + +\membersection{wxDate::SetOption}\label{wxdatesetoption} + +\func{int}{SetOption}{\param{const int}{ option}, \param{const bool}{ enable=TRUE}} + +Enables or disables an option for formatting. + +\wxheading{Parameters} + +\docparam{option}{May be one of: + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf wxNO\_CENTURY}}{The century is not formatted.} +\twocolitem{{\bf wxDATE\_ABBR}}{Month and day names are abbreviated to 3 characters when formatting.} +\end{twocollist}} + +\membersection{wxDate::operator wxString}\label{wxdatewxstring} + +\func{}{operator wxString}{\void} + +Conversion operator, to convert wxDate to wxString by calling FormatDate. + +\membersection{wxDate::operator $+$}\label{wxdateplus} + +\func{wxDate}{operator $+$}{\param{const long}{ i}} + +\func{wxDate}{operator $+$}{\param{const int}{ i}} + +Adds an integer number of days to the date, returning a date. + +\membersection{wxDate::operator $-$}\label{wxdateminus} + +\func{wxDate}{operator $-$}{\param{const long}{ i}} + +\func{wxDate}{operator $-$}{\param{const int}{ i}} + +Subtracts an integer number of days from the date, returning a date. + +\func{long}{operator $-$}{\param{const wxDate\&}{ date}} + +Subtracts one date from another, return the number of intervening days. + +\membersection{wxDate::operator $+=$}\label{wxdateplusequals} + +\func{wxDate\&}{operator $+=$}{\param{const long}{ i}} + +Postfix operator: adds an integer number of days to the date, returning +a reference to `this' date. + +\membersection{wxDate::operator $-=$}\label{wxdateminusequals} + +\func{wxDate\&}{operator $-=$}{\param{const long}{ i}} + +Postfix operator: subtracts an integer number of days from the date, returning +a reference to `this' date. + +\membersection{wxDate::operator $++$}\label{wxdateplusplus} + +\func{wxDate\&}{operator $++$}{\void} + +Increments the date (postfix or prefix). + +\membersection{wxDate::operator $--$}\label{wxdateminusminus} + +\func{wxDate\&}{operator $--$}{\void} + +Decrements the date (postfix or prefix). + +\membersection{wxDate::operator $<$}\label{wxdatelessthan} + +\func{friend bool}{operator $<$}{\param{const wxDate\&}{ date1}, \param{const wxDate\&}{ date2}} + +Function to compare two dates, returning TRUE if {\it date1} is earlier than {\it date2}. + +\membersection{wxDate::operator $<=$}\label{wxdatelessthaneq} + +\func{friend bool}{operator $<=$}{\param{const wxDate\&}{ date1}, \param{const wxDate\&}{ date2}} + +Function to compare two dates, returning TRUE if {\it date1} is earlier than or equal to {\it date2}. + +\membersection{wxDate::operator $>$}\label{wxdategreaterthan} + +\func{friend bool}{operator $>$}{\param{const wxDate\&}{ date1}, \param{const wxDate\&}{ date2}} + +Function to compare two dates, returning TRUE if {\it date1} is later than {\it date2}. + +\membersection{wxDate::operator $>=$}\label{wxdategreaterthaneq} + +\func{friend bool}{operator $>=$}{\param{const wxDate\&}{ date1}, \param{const wxDate\&}{ date2}} + +Function to compare two dates, returning TRUE if {\it date1} is later than or equal to {\it date2}. + +\membersection{wxDate::operator $==$}\label{wxdateequals} + +\func{friend bool}{operator $==$}{\param{const wxDate\&}{ date1}, \param{const wxDate\&}{ date2}} + +Function to compare two dates, returning TRUE if {\it date1} is equal to {\it date2}. + +\membersection{wxDate::operator $!=$}\label{wxdatenotequals} + +\func{friend bool}{operator $!=$}{\param{const wxDate\&}{ date1}, \param{const wxDate\&}{ date2}} + +Function to compare two dates, returning TRUE if {\it date1} is not equal to {\it date2}. + +\membersection{wxDate::operator \cinsert}\label{wxdateinsert} + +\func{friend ostream\&}{operator \cinsert}{\param{ostream\&}{ os}, \param{const wxDate\&}{ date}} + +Function to output a wxDate to an ostream. + + diff --git a/docs/latex/wx/dc.tex b/docs/latex/wx/dc.tex new file mode 100644 index 0000000000..e84b28d054 --- /dev/null +++ b/docs/latex/wx/dc.tex @@ -0,0 +1,696 @@ +\section{\class{wxDC}}\label{wxdc} + +A wxDC is a {\it device context} onto which graphics and text can be drawn. +It is intended to represent a number of output devices in a generic way, +so a canvas has a device context and a printer also has a device context. +In this way, the same piece of code may write to a number of different devices, +if the device context is used as a parameter. + +Derived types of wxDC have documentation for specific features +only, so refer to this section for most device context information. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{Overview}{dcoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxDC::wxDC} + +\func{}{wxDC}{\void} + +Constructor. + +\membersection{wxDC::\destruct{wxDC}} + +\func{}{\destruct{wxDC}}{\void} + +Destructor. + +\membersection{wxDC::BeginDrawing}\label{wxdcbegindrawing} + +\func{void}{BeginDrawing}{\void} + +Allows optimization of drawing code under MS Windows. Enclose +drawing primitives between {\bf BeginDrawing} and {\bf EndDrawing}\rtfsp +calls. + +Drawing to a wxDialog panel device context outside of a +system-generated OnPaint event {\it requires} this pair of calls to +enclose drawing code. This is because a Windows dialog box does not have +a retained device context associated with it, and selections such as pen +and brush settings would be lost if the device context were obtained and +released for each drawing operation. + +\membersection{wxDC::Blit}\label{wxdcblit} + +\func{bool}{Blit}{\param{long}{ xdest}, \param{long}{ ydest}, \param{long}{ width}, \param{long}{ height}, + \param{wxDC* }{source}, \param{long}{ xsrc}, \param{long}{ ysrc}, \param{int}{ logicalFunc}, + \param{bool }{useMask}} + +Copy from a source DC to this DC, specifying the destination +coordinates, size of area to copy, source DC, source coordinates, and +logical function. + +\wxheading{Parameters} + +\docparam{xdest}{Destination device context x position.} + +\docparam{ydest}{Destination device context y position.} + +\docparam{width}{Width of source area to be copied.} + +\docparam{height}{Height of source area to be copied.} + +\docparam{source}{Source device context.} + +\docparam{xsrc}{Source device context x position.} + +\docparam{ysrc}{Source device context y position.} + +\docparam{logicalFunc}{Logical function to use: see \helpref{wxDC::SetLogicalFunction}{wxdcsetlogicalfunction}.} + +\docparam{useMask}{If TRUE, Blit does a transparent blit using the mask that is associated with the bitmap +selected into the source device context. The Windows implementation does the following: + +\begin{enumerate} +\item Creates a temporary bitmap and copies the destination area into it. +\item Copies the source area into the temporary bitmap using the specified logical function. +\item Sets the masked area in the temporary bitmap to BLACK by ANDing the +mask bitmap with the temp bitmap with the foreground colour set to WHITE +and the bg colour set to BLACK. +\item Sets the unmasked area in the destination area to BLACK by ANDing the +mask bitmap with the destination area with the foreground colour set to BLACK +and the background colour set to WHITE. +\item ORs the temporary bitmap with the destination area. +\item Deletes the temporary bitmap. +\end{enumerate} + +This sequence of operations ensures that the source's transparent area need not be black, +and logical functions are supported. +} + +\wxheading{Remarks} + +There is partial support for Blit in wxPostScriptDC, under X. + +See \helpref{wxMemoryDC}{wxmemorydc} for typical usage. + +wxheading{See also} + +\helpref{wxMemoryDC}{wxmemorydc}, \helpref{wxBitmap}{wxbitmap}, \helpref{wxMask}{wxmask} + +\membersection{wxDC::Clear}\label{wxdcclear} + +\func{void}{Clear}{\void} + +Clears the device context using the current background brush. + +\membersection{wxDC::CrossHair}\label{wxdccrosshair} + +\func{void}{CrossHair}{\param{long}{ x}, \param{long}{ y}} + +Displays a cross hair using the current pen. This is a vertical +and horizontal line the height and width of the canvas, centred +on the given point. + +\membersection{wxDC::DestroyClippingRegion}\label{wxdcdestroyclippingregion} + +\func{void}{DestroyClippingRegion}{\void} + +Destroys the current clipping region so that none of the DC is clipped. +See also \helpref{wxDC::SetClippingRegion}{wxdcsetclippingregion}. + +\membersection{wxDC::DeviceToLogicalX}\label{wxdcdevicetologicalx} + +\func{long}{DeviceToLogicalX}{\param{long}{ x}} + +Convert device X coordinate to logical coordinate, using the current +mapping mode. + +\membersection{wxDC::DeviceToLogicalXRel}\label{wxdcdevicetologicalxrel} + +\func{long}{DeviceToLogicalXRel}{\param{long}{ x}} + +Convert device X coordinate to relative logical coordinate, using the current +mapping mode. Use this function for converting a width, for example. + +\membersection{wxDC::DeviceToLogicalY}\label{wxdcdevicetologicaly} + +\func{long}{DeviceToLogicalY}{\param{long}{ y}} + +Converts device Y coordinate to logical coordinate, using the current +mapping mode. + +\membersection{wxDC::DeviceToLogicalYRel}\label{wxdcdevicetologicalyrel} + +\func{long}{DeviceToLogicalYRel}{\param{long}{ y}} + +Convert device Y coordinate to relative logical coordinate, using the current +mapping mode. Use this function for converting a height, for example. + +\membersection{wxDC::DrawArc}\label{wxdcdrawarc} + +\func{void}{DrawArc}{\param{long}{ x1}, \param{long}{ y1}, \param{long}{ x2}, \param{long}{ y2}, \param{double}{ xc}, \param{double}{ yc}} + +Draws an arc, centred on ({\it xc, yc}), with starting point ({\it x1, y1}) +and ending at ({\it x2, y2}). The current pen is used for the outline +and the current brush for filling the shape. + +\membersection{wxDC::DrawEllipse}\label{wxdcdrawellipse} + +\func{void}{DrawEllipse}{\param{long}{ x}, \param{long}{ y}, \param{long}{ width}, \param{long}{ height}} + +Draws an ellipse contained in the rectangle with the given top left corner, and with the +given size. The current pen is used for the outline and the current brush for +filling the shape. + +\membersection{wxDC::DrawEllipticArc}\label{wxdcdrawellipticarc} + +\func{void}{DrawEllipticArc}{\param{long}{ x}, \param{long}{ y}, \param{long}{ width}, \param{long}{ height}, + \param{double}{ start}, \param{double}{ end}} + +Draws an arc of an ellipse. The current pen is used for drawing the arc and +the current brush is used for drawing the pie. This function is currently only available for +X canvas and PostScript device contexts. + +{\it x} and {\it y} specify the x and y coordinates of the upper-left corner of the rectangle that contains +the ellipse. + +{\it width} and {\it height} specify the width and height of the rectangle that contains +the ellipse. + +{\it start} and {\it end} specify the start and end of the arc relative to the three-o'clock +position from the center of the rectangle. Angles are specified +in degrees (360 is a complete circle). Positive values mean +counter-clockwise motion. If {\it start} is equal to {\it end}, a +complete ellipse will be drawn. + +\membersection{wxDC::DrawIcon}\label{wxdcdrawicon} + +\func{void}{DrawIcon}{\param{const wxIcon\&}{ icon}, \param{long}{ x}, \param{long}{ y}} + +Draw an icon on the display (does nothing if the device context is PostScript). +This can be the simplest way of drawing bitmaps on a canvas. + +\membersection{wxDC::DrawLine}\label{wxdcdrawline} + +\func{void}{DrawLine}{\param{long}{ x1}, \param{long}{ y1}, \param{long}{ x2}, \param{long}{ y2}} + +Draws a line from the first point to the second. The current pen is used +for drawing the line. + +\membersection{wxDC::DrawLines}\label{wxdcdrawlines} + +\func{void}{DrawLines}{\param{int}{ n}, \param{wxPoint}{ points[]}, \param{long}{ xoffset = 0}, \param{long}{ yoffset = 0}} + +\func{void}{DrawLines}{\param{wxList *}{points}, \param{long}{ xoffset = 0}, \param{long}{ yoffset = 0}} + +Draws lines using an array of {\it points} of size {\it n}, or list of +pointers to points, adding the optional offset coordinate. The current +pen is used for drawing the lines. The programmer is responsible for +deleting the list of points. + +\membersection{wxDC::DrawPolygon}\label{wxdcdrawpolygon} + +\func{void}{DrawPolygon}{\param{int}{ n}, \param{wxPoint}{ points[]}, \param{long}{ xoffset = 0}, \param{long}{ yoffset = 0},\\ + \param{int }{fill\_style = wxODDEVEN\_RULE}} + +\func{void}{DrawPolygon}{\param{wxList *}{points}, \param{long}{ xoffset = 0}, \param{long}{ yoffset = 0},\\ + \param{int }{fill\_style = wxODDEVEN\_RULE}} + +Draws a filled polygon using an array of {\it points} of size {\it n}, +or list of pointers to points, adding the optional offset coordinate. + +The last argument specifies the fill rule: {\bf wxODDEVEN\_RULE} (the +default) or {\bf wxWINDING\_RULE}. + +The current pen is used for drawing the outline, and the current brush +for filling the shape. Using a transparent brush suppresses filling. +The programmer is responsible for deleting the list of points. + +Note that wxWindows automatically closes the first and last points. + +\membersection{wxDC::DrawPoint}\label{wxdcdrawpoint} + +\func{void}{DrawPoint}{\param{long}{ x}, \param{long}{ y}} + +Draws a point using the current pen. + +\membersection{wxDC::DrawRectangle}\label{wxdcdrawrectangle} + +\func{void}{DrawRectangle}{\param{long}{ x}, \param{long}{ y}, \param{long}{ width}, \param{long}{ height}} + +Draws a rectangle with the given top left corner, and with the given +size. The current pen is used for the outline and the current brush +for filling the shape. + +\membersection{wxDC::DrawRoundedRectangle}\label{wxdcdrawroundedrectangle} + +\func{void}{DrawRoundedRectangle}{\param{long}{ x}, \param{long}{ y}, \param{long}{ width}, \param{long}{ height}, \param{double}{ radius = 20}} + +Draws a rectangle with the given top left corner, and with the given +size. The corners are quarter-circles using the given radius. The +current pen is used for the outline and the current brush for filling +the shape. + +If {\it radius} is positive, the value is assumed to be the +radius of the rounded corner. If {\it radius} is negative, +the absolute value is assumed to be the {\it proportion} of the smallest +dimension of the rectangle. This means that the corner can be +a sensible size relative to the size of the rectangle, and also avoids +the strange effects X produces when the corners are too big for +the rectangle. + +\membersection{wxDC::DrawSpline}\label{wxdcdrawspline} + +\func{void}{DrawSpline}{\param{wxList *}{points}} + +Draws a spline between all given control points, using the current +pen. Doesn't delete the wxList and contents. The spline is drawn +using a series of lines, using an algorithm taken from the X drawing +program `XFIG'. + +\func{void}{DrawSpline}{\param{long}{ x1}, \param{long}{ y1}, \param{long}{ x2}, \param{long}{ y2}, \param{long}{ x3}, \param{long}{ y3}} + +Draws a three-point spline using the current pen. + +\membersection{wxDC::DrawText}\label{wxdcdrawtext} + +\func{void}{DrawText}{\param{const wxString\& }{text}, \param{long}{ x}, \param{long}{ y}} + +Draws a text string at the specified point, using the current text font, +and the current text foreground and background colours. + +The coordinates refer to the top-left corner of the rectangle bounding +the string. See \helpref{wxDC::GetTextExtent}{wxdcgettextextent} for how +to get the dimensions of a text string, which can be used to position the +text more precisely. + +\membersection{wxDC::EndDoc}\label{wxdcenddoc} + +\func{void}{EndDoc}{\void} + +Ends a document (only relevant when outputting to a printer). + +\membersection{wxDC::EndDrawing}\label{wxdcenddrawing} + +\func{void}{EndDrawing}{\void} + +Allows optimization of drawing code under MS Windows. Enclose +drawing primitives between {\bf BeginDrawing} and {\bf EndDrawing}\rtfsp +calls. + +\membersection{wxDC::EndPage}\label{wxdcendpage} + +\func{void}{EndPage}{\void} + +Ends a document page (only relevant when outputting to a printer). + +\membersection{wxDC::FloodFill}\label{wxdcfloodfill} + +\func{void}{FloodFill}{\param{long}{ x}, \param{long}{ y}, \param{wxColour *}{colour}, \param{int}{ style=wxFLOOD\_SURFACE}} + +Flood fills the device context starting from the given point, in the given colour, +and using a style: + +\begin{itemize}\itemsep=0pt +\item wxFLOOD\_SURFACE: the flooding occurs until a colour other than the given colour is encountered. +\item wxFLOOD\_BORDER: the area to be flooded is bounded by the given colour. +\end{itemize} + +{\it Note:} this function is available in MS Windows only. + +\membersection{wxDC::GetBackground}\label{wxdcgetbackground} + +\func{wxBrush *}{GetBackground}{\void} + +Gets the brush used for painting the background (see \helpref{wxDC::SetBackground}{wxdcsetbackground}). + +\membersection{wxDC::GetBrush}\label{wxdcgetbrush} + +\func{wxBrush *}{GetBrush}{\void} + +Gets the current brush (see \helpref{wxDC::SetBrush}{wxdcsetbrush}). + +\membersection{wxDC::GetCharHeight}\label{wxdcgetcharheight} + +\func{long}{GetCharHeight}{\void} + +Gets the character height of the currently set font. + +\membersection{wxDC::GetCharWidth}\label{wxdcgetcharwidth} + +\func{long}{GetCharWidth}{\void} + +Gets the average character width of the currently set font. + +\membersection{wxCanvas::GetClippingBox}\label{wxdcgetclippingbox} + +\func{void}{GetClippingBox}{\param{long}{ *x}, \param{long}{ *y}, \param{long}{ *width}, \param{long}{ *height}} + +Gets the rectangle surrounding the current clipping region. + +\membersection{wxDC::GetFont}\label{wxdcgetfont} + +\func{wxFont *}{GetFont}{\void} + +Gets the current font (see \helpref{wxDC::SetFont}{wxdcsetfont}). + +\membersection{wxDC::GetLogicalFunction}\label{wxdcgetlogicalfunction} + +\func{int}{GetLogicalFunction}{\void} + +Gets the current logical function (see \helpref{wxDC::SetLogicalFunction}{wxdcsetlogicalfunction}). + +\membersection{wxDC::GetMapMode}\label{wxdcgetmapmode} + +\func{int}{GetMapMode}{\void} + +Gets the {\it mapping mode} for the device context (see \helpref{wxDC::SetMapMode}{wxdcsetmapmode}). + +\membersection{wxDC::GetOptimization}\label{wxdcgetoptimization} + +\func{bool}{GetOptimization}{\void} + +Returns TRUE if device context optimization is on. +See \helpref{wxDC::SetOptimization}{wxsetoptimization} for details. + +\membersection{wxDC::GetPen}\label{wxdcgetpen} + +\func{wxPen *}{GetPen}{\void} + +Gets the current pen (see \helpref{wxDC::SetPen}{wxdcsetpen}). + +\membersection{wxDC::GetPixel}\label{wxdcgetpixel} + +\func{bool}{GetPixel}{\param{long}{ x}, \param{long}{ y}, \param{wxColour *}{colour}} + +Sets {\it colour} to the colour at the specified location. Windows only; an X implementation +is being worked on. Not available for wxPostScriptDC or wxMetaFileDC. + +\membersection{wxDC::GetSize}\label{wxdcgetsize} + +\func{void}{GetSize}{\param{long *}{width}, \param{long *}{height}} + +For a PostScript device context, this gets the maximum size of graphics +drawn so far on the device context. + +For a Windows printer device context, this gets the horizontal and vertical +resolution. It can be used to scale graphics to fit the page when using +a Windows printer device context. For example, if {\it maxX} and {\it maxY}\rtfsp +represent the maximum horizontal and vertical `pixel' values used in your +application, the following code will scale the graphic to fit on the +printer page: + +\begin{verbatim} + long w, h; + dc.GetSize(&w, &h); + double scaleX=(double)(maxX/w); + double scaleY=(double)(maxY/h); + dc.SetUserScale(min(scaleX,scaleY),min(scaleX,scaleY)); +\end{verbatim} + +\membersection{wxDC::GetTextBackground}\label{wxdcgettextbackground} + +\func{wxColour\&}{GetTextBackground}{\void} + +Gets the current text background colour (see \helpref{wxDC::SetTextBackground}{wxdcsettextbackground}). + +\membersection{wxDC::GetTextExtent}\label{wxdcgettextextent} + +\func{void}{GetTextExtent}{\param{const wxString\& }{string}, \param{long *}{w}, \param{long *}{h},\\ + \param{long *}{descent = NULL}, \param{long *}{externalLeading = NULL}, \param{wxFont *}{font = NULL}} + +Gets the dimensions of the string using the currently selected font. +\rtfsp{\it string} is the text string to measure, {\it w} and {\it h} are +the total width and height respectively, {\it descent} is the +dimension from the baseline of the font to the bottom of the +descender, and {\it externalLeading} is any extra vertical space added +to the font by the font designer (usually is zero). + +The optional parameter {\it font} specifies an alternative +to the currently selected font: but note that this does not +yet work under Windows, so you need to set a font for +the device context first. + +See also \helpref{wxFont}{wxfont}, \helpref{wxDC::SetFont}{wxdcsetfont}. + +\membersection{wxDC::GetTextForeground}\label{wxdcgettextforeground} + +\func{wxColour\&}{GetTextForeground}{\void} + +Gets the current text foreground colour (see \helpref{wxDC::SetTextForeground}{wxdcsettextforeground}). + +\membersection{wxDC::LogicalToDeviceX}\label{wxdclogicaltodevicex} + +\func{long}{LogicalToDeviceX}{\param{long}{ x}} + +Converts logical X coordinate to device coordinate, using the current +mapping mode. + +\membersection{wxDC::LogicalToDeviceXRel}\label{wxdclogicaltodevicexrel} + +\func{long}{LogicalToDeviceXRel}{\param{long}{ x}} + +Converts logical X coordinate to relative device coordinate, using the current +mapping mode. Use this for converting a width, for example. + +\membersection{wxDC::LogicalToDeviceY}\label{wxdclogicaltodevicey} + +\func{long}{LogicalToDeviceY}{\param{long}{ y}} + +Converts logical Y coordinate to device coordinate, using the current +mapping mode. + +\membersection{wxDC::LogicalToDeviceYRel}\label{wxdclogicaltodeviceyrel} + +\func{long}{LogicalToDeviceYRel}{\param{long}{ y}} + +Converts logical Y coordinate to relative device coordinate, using the current +mapping mode. Use this for converting a height, for example. + +\membersection{wxDC::MaxX}\label{wxdcmaxx} + +\func{long}{MaxX}{\void} + +Gets the maximum horizontal extent used in drawing commands so far. + +\membersection{wxDC::MaxY}\label{wxdcmaxy} + +\func{long}{MaxY}{\void} + +Gets the maximum vertical extent used in drawing commands so far. + +\membersection{wxDC::MinX}\label{wxdcminx} + +\func{long}{MinX}{\void} + +Gets the minimum horizontal extent used in drawing commands so far. + +\membersection{wxDC::MinY}\label{wxdcminy} + +\func{long}{MinY}{\void} + +Gets the minimum vertical extent used in drawing commands so far. + +\membersection{wxDC::Ok}\label{wxdcok} + +\func{bool}{Ok}{\void} + +Returns TRUE if the DC is ok to use. + +\membersection{wxDC::SetDeviceOrigin}\label{wxdcsetdeviceorigin} + +\func{void}{SetDeviceOrigin}{\param{long}{ x}, \param{long}{ y}} + +Sets the device origin (i.e., the origin in pixels after scaling has been +applied). + +This function may be useful in Windows printing +operations for placing a graphic on a page. + +\membersection{wxDC::SetBackground}\label{wxdcsetbackground} + +\func{void}{SetBackground}{\param{const wxBrush\& }{brush}} + +Sets the current background brush for the DC. + +\membersection{wxDC::SetBackgroundMode}\label{wxdcsetbackgroundmode} + +\func{void}{SetBackgroundMode}{\param{int}{ mode}} + +{\it mode} may be one of wxSOLID and wxTRANSPARENT. This setting determines +whether text will be drawn with a background colour or not. + +\membersection{wxDC::SetClippingRegion}\label{wxdcsetclippingregion} + +\func{void}{SetClippingRegion}{\param{long}{ x}, \param{long}{ y}, \param{long}{ width}, \param{long}{ height}} + +Sets the clipping region for the DC. The clipping region is a rectangular area +to which drawing is restricted. Possible uses for the clipping region are for clipping text +or for speeding up canvas redraws when only a known area of the screen is damaged. + +See also \helpref{wxDC::DestroyClippingRegion}{wxdcdestroyclippingregion}. + +\membersection{wxDC::SetPalette}\label{wxdcsetpalette} + +\func{void}{SetPalette}{\param{const wxPalette\& }{palette}} + +If this is a canvas DC or memory DC, assigns the given palette to the window +or bitmap associated with the DC. If the argument is wxNullPalette, the current +palette is selected out of the device context, and the original palette +restored. + +See \helpref{wxPalette}{wxpalette} for further details. + +\membersection{wxDC::SetBrush}\label{wxdcsetbrush} + +\func{void}{SetBrush}{\param{const wxBrush\& }{brush}} + +Sets the current brush for the DC. + +If the argument is wxNullBrush, the current brush is selected out of the device +context, and the original brush restored, allowing the current brush to +be destroyed safely. + +See also \helpref{wxBrush}{wxbrush}. + +\membersection{wxDC::SetFont}\label{wxdcsetfont} + +\func{void}{SetFont}{\param{const wxFont\& }{font}} + +Sets the current font for the DC. + +If the argument is wxNullFont, the current font is selected out of the device +context, and the original font restored, allowing the current font to +be destroyed safely. + +See also \helpref{wxFont}{wxfont}. + +\membersection{wxDC::SetLogicalFunction}\label{wxdcsetlogicalfunction} + +\func{void}{SetLogicalFunction}{\param{int}{ function}} + +Sets the current logical function for the canvas. This determines how +a source pixel (from a pen or brush colour, or source device context if +using \helpref{wxDC::Blit}{wxdcblit}) combines with a destination pixel in the +current device context. + +The possible values +and their meaning in terms of source and destination pixel values are +as follows: + +\begin{verbatim} +wxAND src AND dst +wxAND_INVERT (NOT src) AND dst +wxAND_REVERSE src AND (NOT dst) +wxCLEAR 0 +wxCOPY src +wxEQUIV (NOT src) XOR dst +wxINVERT NOT dst +wxNAND (NOT src) OR (NOT dst) +wxNOR (NOT src) AND (NOT dst) +wxNO_OP dst +wxOR src OR dst +wxOR_INVERT (NOT src) OR dst +wxOR_REVERSE src OR (NOT dst) +wxSET 1 +wxSRC_INVERT NOT src +wxXOR src XOR dst +\end{verbatim} + +The default is wxCOPY, which simply draws with the current colour. +The others combine the current colour and the background using a +logical operation. wxXOR is commonly used for drawing rubber bands or +moving outlines, since drawing twice reverts to the original colour. + +\membersection{wxDC::SetMapMode}\label{wxdcsetmapmode} + +\func{void}{SetMapMode}{\param{int}{ int}} + +The {\it mapping mode} of the device context defines the unit of +measurement used to convert logical units to device units. Note that +in X, text drawing isn't handled consistently with the mapping mode; a +font is always specified in point size. However, setting the {\it +user scale} (see \helpref{wxDC::SetUserScale}{wxdcsetuserscale}) scales the text appropriately. In +Windows, scaleable TrueType fonts are always used; in X, results depend +on availability of fonts, but usually a reasonable match is found. + +Note that the coordinate origin should ideally be selectable, but for +now is always at the top left of the screen/printer. + +Drawing to a Windows printer device context under UNIX +uses the current mapping mode, but mapping mode is currently ignored for +PostScript output. + +The mapping mode can be one of the following: + +\begin{twocollist}\itemsep=0pt +\twocolitem{MM\_TWIPS}{Each logical unit is 1/20 of a point, or 1/1440 of + an inch.} +\twocolitem{MM\_POINTS}{Each logical unit is a point, or 1/72 of an inch.} +\twocolitem{MM\_METRIC}{Each logical unit is 1 mm.} +\twocolitem{MM\_LOMETRIC}{Each logical unit is 1/10 of a mm.} +\twocolitem{MM\_TEXT}{Each logical unit is 1 pixel.} +\end{twocollist} + +\membersection{wxDC::SetOptimization}\label{wxsetoptimization} + +\func{void}{SetOptimization}{\param{bool }{optimize}} + +If {\it optimize} is TRUE (the default), this function sets optimization mode on. +This currently means that under X, the device context will not try to set a pen or brush +property if it is known to be set already. This approach can fall down +if non-wxWindows code is using the same device context or window, for example +when the window is a panel on which the windowing system draws panel items. +The wxWindows device context 'memory' will now be out of step with reality. + +Setting optimization off, drawing, then setting it back on again, is a trick +that must occasionally be employed. + +\membersection{wxDC::SetPen}\label{wxdcsetpen} + +\func{void}{SetPen}{\param{const wxPen\& }{pen}} + +Sets the current pen for the DC. + +If the argument is wxNullPen, the current pen is selected out of the device +context, and the original pen restored. + +\membersection{wxDC::SetTextBackground}\label{wxdcsettextbackground} + +\func{void}{SetTextBackground}{\param{const wxColour\& }{colour}} + +Sets the current text background colour for the DC. + +\membersection{wxDC::SetTextForeground}\label{wxdcsettextforeground} + +\func{void}{SetTextForeground}{\param{const wxColour\& }{colour}} + +Sets the current text foreground colour for the DC. + +\membersection{wxDC::SetUserScale}\label{wxdcsetuserscale} + +\func{void}{SetUserScale}{\param{double}{ xScale}, \param{double}{ yScale}} + +Sets the user scaling factor, useful for applications which require +`zooming'. + +\membersection{wxDC::StartDoc}\label{wxdcstartdoc} + +\func{bool}{StartDoc}{\param{const wxString\& }{message}} + +Starts a document (only relevant when outputting to a printer). +Message is a message to show whilst printing. + +\membersection{wxDC::StartPage}\label{wxdcstartpage} + +\func{bool}{StartPage}{\void} + +Starts a document page (only relevant when outputting to a printer). + diff --git a/docs/latex/wx/ddeclint.tex b/docs/latex/wx/ddeclint.tex new file mode 100644 index 0000000000..646420c789 --- /dev/null +++ b/docs/latex/wx/ddeclint.tex @@ -0,0 +1,67 @@ +\section{\class{wxDDEClient}}\label{wxddeclient} + +\overview{Interprocess communications overview}{ipcoverview} + +A wxDDEClient object represents the client part of a client-server DDE +(Dynamic Data Exchange) conversation (available in {\it both}\/ +Windows and UNIX). + +To create a client which can communicate with a suitable server, +you need to derive a class from wxDDEConnection and another from wxDDEClient. +The custom wxDDEConnection class will intercept communications in +a `conversation' with a server, and the custom wxDDEServer is required +so that a user-overriden \helpref{wxDDEClient::OnMakeConnection}{wxddeclientonmakeconnection} member can return +a wxDDEConnection of the required class, when a connection is made. + +\wxheading{Derived from} + +wxDDEObject + +\wxheading{See also} + +\helpref{wxDDEServer}{wxddeserver}, \helpref{wxDDEConnection}{wxddeconnection}, +the chapter on interprocess communication in the user manual, and +the programs in {\tt samples/ipc}. + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxDDEClient::wxDDEClient} + +\func{}{wxDDEClient}{\void} + +Constructs a client object. + +\membersection{wxDDEClient::MakeConnection}\label{wxddeclientmakeconnection} + +\func{wxDDEConnection *}{MakeConnection}{\param{const wxString\& }{host}, \param{const wxString\& }{service}, \param{const wxString\& }{topic}} + +Tries to make a connection with a server specified by the host +(machine name under UNIX, ignored under Windows), service name (must +contain an integer port number under UNIX), and topic string. If the +server allows a connection, a wxDDEConnection object will be returned. +The type of wxDDEConnection returned can be altered by overriding +the \helpref{wxDDEClient::OnMakeConnection}{wxddeclientonmakeconnection} member to return your own +derived connection object. + +\membersection{wxDDEClient::OnMakeConnection}\label{wxddeclientonmakeconnection} + +\func{wxDDEConnection *}{OnMakeConnection}{\void} + +The type of \helpref{wxDDEConnection}{wxddeconnection} returned from a \helpref{wxDDEClient::MakeConnection}{wxddeclientmakeconnection} call can +be altered by deriving the {\bf OnMakeConnection} member to return your +own derived connection object. By default, an ordinary wxDDEConnection +object is returned. + +The advantage of deriving your own connection class is that it will +enable you to intercept messages initiated by the server, such +as \helpref{wxDDEConnection::OnAdvise}{wxddeconnectiononadvise}. You may also want to +store application-specific data in instances of the new class. + +\membersection{wxDDEClient::ValidHost} + +\func{bool}{ValidHost}{\param{const wxString\& }{host}} + +Returns TRUE if this is a valid host name, FALSE otherwise. This always +returns TRUE under MS Windows. + + diff --git a/docs/latex/wx/ddeconn.tex b/docs/latex/wx/ddeconn.tex new file mode 100644 index 0000000000..d1486d7884 --- /dev/null +++ b/docs/latex/wx/ddeconn.tex @@ -0,0 +1,166 @@ +\section{\class{wxDDEConnection}}\label{wxddeconnection} + +A wxDDEConnection object represents the connection between a client and a +server. It can be created by making a connection using a\rtfsp +\helpref{wxDDEClient}{wxddeclient} object, or by the acceptance of a connection by a\rtfsp +\helpref{wxDDEServer}{wxddeserver} object. The bulk of a DDE (Dynamic Data Exchange) +conversation (available in both Windows and UNIX) is controlled by +calling members in a {\bf wxDDEConnection} object or by overriding its +members. + +An application should normally derive a new connection class from +wxDDEConnection, in order to override the communication event handlers +to do something interesting. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxDDEClient}{wxddeclient}, \helpref{wxDDEServer}{wxddeserver}, \helpref{Interprocess communications overview}{ipcoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxDDEConnection::wxDDEConnection} + +\func{}{wxDDEConnection}{\void} + +\func{}{wxDDEConnection}{\param{char* }{buffer}, \param{int}{ size}} + +Constructs a connection object. If no user-defined connection object is +to be derived from wxDDEConnection, then the constructor should not be +called directly, since the default connection object will be provided on +requesting (or accepting) a connection. However, if the user defines his +or her own derived connection object, the \helpref{wxDDEServer::OnAcceptConnection}{wxddeserveronacceptconnection}\rtfsp +and/or \helpref{wxDDEClient::OnMakeConnection}{wxddeclientonmakeconnection} members should be replaced by +functions which construct the new connection object. If the arguments of +the wxDDEConnection constructor are void, then a default buffer is +associated with the connection. Otherwise, the programmer must provide a +a buffer and size of the buffer for the connection object to use in +transactions. + +\membersection{wxDDEConnection::Advise} + +\func{bool}{Advise}{\param{const wxString\& }{item}, \param{char* }{data}, \param{int}{ size = -1}, \param{int}{ format = wxCF\_TEXT}} + +Called by the server application to advise the client of a change in +the data associated with the given item. Causes the client +connection's \helpref{wxDDEConnection::OnAdvise}{wxddeconnectiononadvise} +member to be called. Returns TRUE if successful. + +\membersection{wxDDEConnection::Execute} + +\func{bool}{Execute}{\param{char* }{data}, \param{int}{ size = -1}, +\param{int}{ format = wxCF\_TEXT}} + +Called by the client application to execute a command on the server. Can +also be used to transfer arbitrary data to the server (similar +to \helpref{wxDDEConnection::Poke}{wxddeconnectionpoke} in that respect). Causes the +server connection's \helpref{wxDDEConnection::OnExecute}{wxddeconnectiononexecute} member to be +called. Returns TRUE if successful. + +\membersection{wxDDEConnection::Disconnect} + +\func{bool}{Disconnect}{\void} + +Called by the client or server application to disconnect from the other +program; it causes the \helpref{wxDDEConnection::OnDisconnect}{wxddeconnectionondisconnect} message +to be sent to the corresponding connection object in the other +program. The default behaviour of {\bf OnDisconnect} is to delete the +connection, but the calling application must explicitly delete its +side of the connection having called {\bf Disconnect}. Returns TRUE if +successful. + +\membersection{wxDDEConnection::OnAdvise}\label{wxddeconnectiononadvise} + +\func{bool}{OnAdvise}{\param{const wxString\& }{topic}, \param{const wxString\& }{item}, \param{char* }{data}, \param{int}{ size}, \param{int}{ format}} + +Message sent to the client application when the server notifies it of a +change in the data associated with the given item. + +\membersection{wxDDEConnection::OnDisconnect}\label{wxddeconnectionondisconnect} + +\func{bool}{OnDisconnect}{\void} + +Message sent to the client or server application when the other +application notifies it to delete the connection. Default behaviour is +to delete the connection object. + +\membersection{wxDDEConnection::OnExecute}\label{wxddeconnectiononexecute} + +\func{bool}{OnExecute}{\param{const wxString\& }{topic}, \param{char* }{data}, \param{int}{ size}, \param{int}{ format}} + +Message sent to the server application when the client notifies it to +execute the given data. Note that there is no item associated with +this message. + +\membersection{wxDDEConnection::OnPoke}\label{wxddeconnectiononpoke} + +\func{bool}{OnPoke}{\param{const wxString\& }{topic}, \param{const wxString\& }{item}, \param{char* }{data}, \param{int}{ size}, \param{int}{ format}} + +Message sent to the server application when the client notifies it to +accept the given data. + +\membersection{wxDDEConnection::OnRequest}\label{wxddeconnectiononrequest} + +\func{char*}{OnRequest}{\param{const wxString\& }{topic}, \param{const wxString\& }{item}, \param{int *}{size}, \param{int}{ format}} + +Message sent to the server application when the client +calls \helpref{wxDDEConnection::Request}{wxddeconnectionrequest}. The server +should respond by returning a character string from {\bf OnRequest}, +or NULL to indicate no data. + +\membersection{wxDDEConnection::OnStartAdvise}\label{wxddeconnectiononstartadvise} + +\func{bool}{OnStartAdvise}{\param{const wxString\& }{topic}, \param{const wxString\& }{item}} + +Message sent to the server application by the client, when the client +wishes to start an `advise loop' for the given topic and item. The +server can refuse to participate by returning FALSE. + +\membersection{wxDDEConnection::OnStopAdvise}\label{wxddeconnectiononstopadvise} + +\func{bool}{OnStopAdvise}{\param{const wxString\& }{topic}, \param{const wxString\& }{item}} + +Message sent to the server application by the client, when the client +wishes to stop an `advise loop' for the given topic and item. The +server can refuse to stop the advise loop by returning FALSE, although +this doesn't have much meaning in practice. + +\membersection{wxDDEConnection::Poke}\label{wxddeconnectionpoke} + +\func{bool}{Poke}{\param{const wxString\& }{item}, \param{char* }{data}, \param{int}{ size = -1}, \param{int}{ format = wxCF\_TEXT}} + +Called by the client application to poke data into the server. Can be +used to transfer arbitrary data to the server. Causes the server +connection's \helpref{wxDDEConnection::OnPoke}{wxddeconnectiononpoke} member +to be called. Returns TRUE if successful. + +\membersection{wxDDEConnection::Request}\label{wxddeconnectionrequest} + +\func{char*}{Request}{\param{const wxString\& }{item}, \param{int *}{size}, \param{int}{ format = wxCF\_TEXT}} + +Called by the client application to request data from the server. Causes +the server connection's \helpref{wxDDEConnection::OnRequest}{wxddeconnectiononrequest} member to be called. Returns a +character string (actually a pointer to the connection's buffer) if +successful, NULL otherwise. + +\membersection{wxDDEConnection::StartAdvise}\label{wxddeconnectionstartadvise} + +\func{bool}{StartAdvise}{\param{const wxString\& }{item}} + +Called by the client application to ask if an advise loop can be started +with the server. Causes the server connection's \helpref{wxDDEConnection::OnStartAdvise}{wxddeconnectiononstartadvise}\rtfsp +member to be called. Returns TRUE if the server okays it, FALSE +otherwise. + +\membersection{wxDDEConnection::StopAdvise}\label{wxddeconnectionstopadvise} + +\func{bool}{StopAdvise}{\param{const wxString\& }{item}} + +Called by the client application to ask if an advise loop can be +stopped. Causes the server connection's \helpref{wxDDEConnection::OnStopAdvise}{wxddeconnectiononstopadvise} member +to be called. Returns TRUE if the server okays it, FALSE otherwise. + + diff --git a/docs/latex/wx/ddeservr.tex b/docs/latex/wx/ddeservr.tex new file mode 100644 index 0000000000..a5736e34f7 --- /dev/null +++ b/docs/latex/wx/ddeservr.tex @@ -0,0 +1,45 @@ +\section{\class{wxDDEServer}}\label{wxddeserver} + +A wxDDEServer object represents the server part of a client-server DDE +(Dynamic Data Exchange) conversation (available under both Windows +and UNIX). + +\wxheading{Derived from} + +wxDDEObject + +\wxheading{See also} + +\helpref{IPC overview}{ipcoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxDDEServer::wxDDEServer} + +\func{}{wxDDEServer}{\void} + +Constructs a server object. + +\membersection{wxDDEServer::Create} + +\func{bool}{Create}{\param{const wxString\& }{service}} + +Registers the server using the given service name. Under UNIX, the +string must contain an integer id which is used as an Internet port +number. FALSE is returned if the call failed (for example, the port +number is already in use). + +\membersection{wxDDEServer::OnAcceptConnection}\label{wxddeserveronacceptconnection} + +\func{wxDDEConnection *}{OnAcceptConnection}{\param{const wxString\& }{topic}} + +When a client calls {\bf MakeConnection}, the server receives the +message and this member is called. The application should derive a +member to intercept this message and return a connection object of +either the standard wxDDEConnection type, or of a user-derived type. If the +topic is ``STDIO'', the application may wish to refuse the connection. +Under UNIX, when a server is created the OnAcceptConnection message is +always sent for standard input and output, but in the context of DDE +messages it doesn't make a lot of sense. + + diff --git a/docs/latex/wx/debugcxt.tex b/docs/latex/wx/debugcxt.tex new file mode 100644 index 0000000000..841b177e3b --- /dev/null +++ b/docs/latex/wx/debugcxt.tex @@ -0,0 +1,251 @@ +\section{\class{wxDebugContext}}\label{wxdebugcontext} + +A class for performing various debugging and memory tracing +operations. Full functionality (such as printing out objects +currently allocated) is only present in a debugging build of wxWindows, +i.e. if the DEBUG symbol is defined and non-zero. wxDebugContext +and related functions and macros can be compiled out by setting +USE\_DEBUG\_CONTEXT to 0 is wx\_setup.h + +\wxheading{Derived from} + +No parent class. + +\wxheading{See also} + +\overview{Overview}{wxdebugcontextoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxDebugContext::Check}\label{wxdebugcontextcheck} + +\func{int}{Check}{\void} + +Checks the memory blocks for errors, starting from the currently set +checkpoint. + +\wxheading{Return value} + +Returns the number of errors, +so a value of zero represents success. Returns -1 if an error +was detected that prevents further checking. + +\membersection{wxDebugContext::Dump}\label{wxdebugcontextdump} + +\func{bool}{Dump}{\void} + +Performs a memory dump from the currently set checkpoint, writing to the +current debug stream. Calls the {\bf Dump} member function for each wxObject +derived instance. + +\wxheading{Return value} + +TRUE if the function succeeded, FALSE otherwise. + +\membersection{wxDebugContext::GetCheckPrevious}\label{wxdebugcontextgetcheckprevious} + +\func{bool}{GetCheckPrevious}{\void} + +Returns TRUE if the memory allocator checks all previous memory blocks for errors. +By default, this is FALSE since it slows down execution considerably. + +\wxheading{See also} + +\helpref{wxDebugContext::SetCheckPrevious}{wxdebugcontextsetcheckprevious} + +\membersection{wxDebugContext::GetDebugMode}\label{wxdebugcontextgetdebugmode} + +\func{bool}{GetDebugMode}{\void} + +Returns TRUE if debug mode is on. If debug mode is on, the wxObject new and delete +operators store or use information about memory allocation. Otherwise, +a straight malloc and free will be performed by these operators. + +\wxheading{See also} + +\helpref{wxDebugContext::SetDebugMode}{wxdebugcontextsetdebugmode} + +\membersection{wxDebugContext::GetLevel}\label{wxdebugcontextgetlevel} + +\func{int}{GetLevel}{\void} + +Gets the debug level (default 1). The debug level is used by the wxTraceLevel function and +the WXTRACELEVEL macro to specify how detailed the trace information is; setting +a different level will only have an effect if trace statements in the application +specify a value other than one. + +\wxheading{See also} + +\helpref{wxDebugContext::SetLevel}{wxdebugcontextsetlevel} + +\membersection{wxDebugContext::GetStream}\label{wxdebugcontextgetstream} + +\func{ostream\&}{GetStream}{\void} + +Returns the output stream associated with the debug context. + +\wxheading{See also} + +\helpref{wxDebugContext::SetStream}{wxdebugcontextsetstream} + +\membersection{wxDebugContext::GetStreamBuf}\label{wxdebugcontextgetstreambuf} + +\func{streambuf*}{GetStreamBuf}{\void} + +Returns a pointer to the output stream buffer associated with the debug context. +There may not necessarily be a stream buffer if the stream has been set +by the user. + +\membersection{wxDebugContext::HasStream}\label{wxdebugcontexthasstream} + +\func{bool}{HasStream}{\void} + +Returns TRUE if there is a stream currently associated +with the debug context. + +\wxheading{See also} + +\helpref{wxDebugContext::SetStream}{wxdebugcontextsetstream}, \helpref{wxDebugContext::GetStream}{wxdebugcontextgetstream} + +\membersection{wxDebugContext::PrintClasses}\label{wxdebugcontextprintclasses} + +\func{bool}{PrintClasses}{\void} + +Prints a list of the classes declared in this application, giving derivation +and whether instances of this class can be dynamically created. + +\wxheading{See also} + +\helpref{wxDebugContext::PrintStatistics}{wxdebugcontextprintstatistics} + +\membersection{wxDebugContext::PrintStatistics}\label{wxdebugcontextprintstatistics} + +\func{bool}{PrintStatistics}{\param{bool}{ detailed = TRUE}} + +Performs a statistics analysis from the currently set checkpoint, writing +to the current debug stream. The number of object and non-object +allocations is printed, together with the total size. + +\wxheading{Parameters} + +\docparam{detailed}{If TRUE, the function will also print how many +objects of each class have been allocated, and the space taken by +these class instances.} + +\wxheading{See also} + +\helpref{wxDebugContext::PrintStatistics}{wxdebugcontextprintstatistics} + +\membersection{wxDebugContext::SetCheckpoint}\label{wxdebugcontextsetcheckpoint} + +\func{void}{SetCheckpoint}{\param{bool}{ all = FALSE}} + +Sets the current checkpoint: Dump and PrintStatistics operations will +be performed from this point on. This allows you to ignore allocations +that have been performed up to this point. + +\wxheading{Parameters} + +\docparam{all}{If TRUE, the checkpoint is reset to include all +memory allocations since the program started.} + +\membersection{wxDebugContext::SetCheckPrevious}\label{wxdebugcontextsetcheckprevious} + +\func{void}{SetCheckPrevious}{\param{bool}{ check}} + +Tells the memory allocator to check all previous memory blocks for errors. +By default, this is FALSE since it slows down execution considerably. + +\wxheading{See also} + +\helpref{wxDebugContext::GetCheckPrevious}{wxdebugcontextgetcheckprevious} + +\membersection{wxDebugContext::SetDebugMode}\label{wxdebugcontextsetdebugmode} + +\func{void}{SetDebugMode}{\param{bool}{ debug}} + +Sets the debug mode on or off. If debug mode is on, the wxObject new and delete +operators store or use information about memory allocation. Otherwise, +a straight malloc and free will be performed by these operators. + +By default, debug mode is on if DEBUG is non-zero. If the application +uses this function, it should make sure that all object memory allocated +is deallocated with the same value of debug mode. Otherwise, the +delete operator might try to look for memory information that does not +exist. + +\wxheading{See also} + +\helpref{wxDebugContext::GetDebugMode}{wxdebugcontextgetdebugmode} + +\membersection{wxDebugContext::SetFile}\label{wxdebugcontextsetfile} + +\func{bool}{SetFile}{\param{const wxString\& }{filename}} + +Sets the current debug file and creates a stream. This will delete any existing +stream and stream buffer. By default, the debug context stream +outputs to the debugger (Windows) or standard error (other platforms). + +\membersection{wxDebugContext::SetLevel}\label{wxdebugcontextsetlevel} + +\func{void}{SetLevel}{\param{int}{ level}} + +Sets the debug level (default 1). The debug level is used by the wxTraceLevel function and +the WXTRACELEVEL macro to specify how detailed the trace information is; setting +a different level will only have an effect if trace statements in the application +specify a value other than one. + +\wxheading{See also} + +\helpref{wxDebugContext::GetLevel}{wxdebugcontextgetlevel} + +\membersection{wxDebugContext::SetStandardError}\label{wxdebugcontextsetstandarderror} + +\func{bool}{SetStandardError}{\void} + +Sets the debugging stream to be the debugger (Windows) or standard error (other platforms). +This is the default setting. The existing stream will be flushed and deleted. + +\membersection{wxDebugContext::SetStream}\label{wxdebugcontextsetstream} + +\func{void}{SetStream}{\param{ostream* }{stream}, \param{streambuf* }{streamBuf = NULL}} + +Sets the stream and optionally, stream buffer associated with the debug context. +This operation flushes and deletes the existing stream (and stream buffer if any). + +\wxheading{Parameters} + +\docparam{stream}{Stream to associate with the debug context. Do not set this to NULL.} + +\docparam{streamBuf}{Stream buffer to associate with the debug context.} + +\wxheading{See also} + +\helpref{wxDebugContext::GetStream}{wxdebugcontextgetstream}, \helpref{wxDebugContext::HasStream}{wxdebugcontexthasstream} + +\section{\class{wxDebugStreamBuf}}\label{wxdebugstreambuf} + +This class allows you to treat debugging output in a similar +(stream-based) fashion on different platforms. Under +Windows, an ostream constructed with this buffer outputs +to the debugger, or other program that intercepts debugging +output. On other platforms, the output goes to standard error (cerr). + +\wxheading{Derived from} + +streambuf + +\wxheading{Example} + +\begin{verbatim} + wxDebugStreamBuf streamBuf; + ostream stream(&streamBuf); + + stream << "Hello world!" << endl; +\end{verbatim} + +\wxheading{See also} + +\overview{Overview}{wxdebugcontextoverview} + + diff --git a/docs/latex/wx/dialog.tex b/docs/latex/wx/dialog.tex new file mode 100644 index 0000000000..b8a30107b0 --- /dev/null +++ b/docs/latex/wx/dialog.tex @@ -0,0 +1,310 @@ +\section{\class{wxDialog}}\label{wxdialog} + +A dialog box is a window with a title bar and sometimes a system menu, which can be moved around +the screen. It can contain controls and other windows. + +\wxheading{Derived from} + +\helpref{wxPanel}{wxpanel}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Remarks} + +There are two kinds of dialog - {\it modal} and {\it modeless}. A modal dialog +blocks program flow and user input on other windows until it is dismissed, whereas a modeless dialog behaves more +like a frame in that program flow continues, and input on other windows is still possible. +You specify the type of dialog with the {\bf wxDIALOG\_MODAL} and {\bf wxDIALOG\_MODELESS} window +styles. + +A dialog may be loaded from a wxWindows resource file (extension {\tt wxr}). + +An application can define an \helpref{OnCloseWindow}{wxwindowonclosewindow} handler for the +dialog to respond to system close events. + +\wxheading{Window styles} + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{wxCAPTION}}{Puts a caption on the dialog box (Motif only).} +\twocolitem{\windowstyle{wxDEFAULT\_DIALOG\_STYLE}}{Equivalent to a combination of wxCAPTION, wxSYSTEM\_MENU and wxTHICK\_FRAME} +\twocolitem{\windowstyle{wxRESIZE\_BORDER}}{Display a resizeable frame around the window (Motif only).} +\twocolitem{\windowstyle{wxSYSTEM\_MENU}}{Display a system menu (Motif only).} +\twocolitem{\windowstyle{wxTHICK\_FRAME}}{Display a thick frame around the window (Motif only).} +\twocolitem{\windowstyle{wxNO\_3D}}{Under Windows, specifies that the child controls +should not have 3D borders unless specified in the control.} +\end{twocollist} + +Under Motif, MWM (the Motif Window Manager) should be running for any of these styles to have an effect. + +See also \helpref{Generic window styles}{windowstyles}. + +\wxheading{See also} + +\helpref{wxDialog overview}{wxdialogoverview}, \helpref{wxFrame}{wxframe}, \helpref{Resources}{resources},\rtfsp +\helpref{Validator overview}{validatoroverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxDialog::wxDialog}\label{wxdialogconstr} + +\func{}{wxDialog}{\void} + +Default constructor. + +\func{}{wxDialog}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id},\rtfsp +\param{const wxString\& }{title},\rtfsp +\param{const wxPoint\& }{pos = wxDefaultPosition},\rtfsp +\param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long}{ style = wxDEFAULT\_DIALOG\_STYLE},\rtfsp +\param{const wxString\& }{name = ``dialogBox"}} + +Constructor. + +\wxheading{Parameters} + +\docparam{parent}{Can be NULL, a frame or another dialog box.} + +\docparam{id}{An identifier for the dialog. A value of -1 is taken to mean a default.} + +\docparam{title}{The title of the dialog.} + +\docparam{pos}{The dialog position. A value of (-1, -1) indicates a default position, chosen by +either the windowing system or wxWindows, depending on platform.} + +\docparam{size}{The dialog size. A value of (-1, -1) indicates a default size, chosen by +either the windowing system or wxWindows, depending on platform.} + +\docparam{style}{The window style. See \helpref{wxDialog}{wxdialog}.} + +\docparam{name}{Used to associate a name with the window, +allowing the application user to set Motif resource values for +individual dialog boxes.} + +\wxheading{See also} + +\helpref{wxDialog::Create}{wxdialogcreate} + +\membersection{wxDialog::\destruct{wxDialog}} + +\func{}{\destruct{wxDialog}}{\void} + +Destructor. Deletes any child windows before deleting the physical window. + +\membersection{wxDialog::Centre}\label{wxdialogcentre} + +\func{void}{Centre}{\param{const int}{ direction = wxBOTH}} + +Centres the dialog box on the display. + +\wxheading{Parameters} + +\docparam{direction}{May be {\tt wxHORIZONTAL}, {\tt wxVERTICAL} or {\tt wxBOTH}.} + +\membersection{wxDialog::Create}\label{wxdialogcreate} + +\func{bool}{Create}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id},\rtfsp +\param{const wxString\& }{title},\rtfsp +\param{const wxPoint\& }{pos = wxDefaultPosition},\rtfsp +\param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long}{ style = wxDEFAULT\_DIALOG\_STYLE},\rtfsp +\param{const wxString\& }{name = ``dialogBox"}} + +Used for two-step dialog box construction. See \helpref{wxDialog::wxDialog}{wxdialogconstr}\rtfsp +for details. + +\membersection{wxDialog::EndModal}\label{wxdialogendmodal} + +\func{void}{EndModal}{\param{int }{retCode}} + +Ends a modal dialog, passing a value to be returned from the \helpref{wxDialog::ShowModal}{wxdialogshowmodal}\rtfsp +invocation. + +\wxheading{Parameters} + +\docparam{retCode}{The value that should be returned by {\bf ShowModal}.} + +\wxheading{See also} + +\helpref{wxDialog::ShowModal}{wxdialogshowmodal},\rtfsp +\helpref{wxWindow::GetReturnCode}{wxwindowgetreturncode},\rtfsp +\helpref{wxWindow::SetReturnCode}{wxwindowsetreturncode} + +\membersection{wxDialog::GetTitle}\label{wxdialoggettitle} + +\constfunc{wxString}{GetTitle}{\void} + +Returns the title of the dialog box. + +\membersection{wxDialog::Iconize}\label{wxdialogiconized} + +\func{void}{Iconize}{\param{const bool}{ iconize}} + +Iconizes or restores the dialog. + +\wxheading{Parameters} + +\docparam{iconize}{If TRUE, iconizes the dialog box; if FALSE, shows and restores it.} + +\wxheading{Remarks} + +Note that in Windows, iconization has no effect since dialog boxes cannot be +iconized. However, applications may need to explicitly restore dialog +boxes under Motif which have user-iconizable frames, and under Windows +calling {\tt Iconize(FALSE)} will bring the window to the front, as does +\rtfsp{\tt Show(TRUE)}. + +\membersection{wxDialog::IsIconized}\label{wxdialogisiconized} + +\constfunc{bool}{IsIconized}{\void} + +Returns TRUE if the dialog box is iconized. + +\wxheading{Remarks} + +Always returns FALSE under Windows since dialogs cannot be iconized. + +\membersection{wxDialog::IsModal}\label{wxdialogismodal} + +\constfunc{bool}{IsModal}{\void} + +Returns TRUE if the dialog box is modal, FALSE otherwise. + +\membersection{wxDialog::OnCharHook}\label{wxdialogoncharhook} + +\func{void}{OnCharHook}{\param{wxKeyEvent\&}{ event}} + +This member is called to allow the window to intercept keyboard events +before they are processed by child windows. + +For more information, see \helpref{wxWindow::OnCharHook}{wxwindowoncharhook} + +\wxheading{Remarks} + +wxDialog implements this handler to fake a cancel command if the escape key has been +pressed. This will dismiss the dialog. + +\membersection{wxDialog::OnApply}\label{wxdialogonapply} + +\func{void}{OnApply}{\param{wxCommandEvent\& }{event}} + +The default handler for the wxID\_APPLY identifier. + +\wxheading{Remarks} + +This function calls \helpref{wxWindow::Validate}{wxwindowvalidate} and \helpref{wxWindow::TransferDataToWindow}{wxwindowtransferdatatowindow}. + +\wxheading{See also} + +\helpref{wxDialog::OnOK}{wxdialogonok}, \helpref{wxDialog::OnCancel}{wxdialogoncancel} + +\membersection{wxDialog::OnCancel}\label{wxdialogoncancel} + +\func{void}{OnCancel}{\param{wxCommandEvent\& }{event}} + +The default handler for the wxID\_CANCEL identifier. + +\wxheading{Remarks} + +The function either calls {\bf EndModal(wxID\_CANCEL)} if the dialog is modal, or +sets the return value to wxID\_CANCEL and calls {\bf Show(FALSE)} if the dialog is modeless. + +\wxheading{See also} + +\helpref{wxDialog::OnOK}{wxdialogonok}, \helpref{wxDialog::OnApply}{wxdialogonapply} + +\membersection{wxDialog::OnOK}\label{wxdialogonok} + +\func{void}{OnOK}{\param{wxCommandEvent\& }{event}} + +The default handler for the wxID\_OK identifier. + +\wxheading{Remarks} + +The function calls +\rtfsp\helpref{wxWindow::Validate}{wxwindowvalidate}, then \helpref{wxWindow::TransferDataFromWindow}{wxwindowtransferdatafromwindow}. +If this returns TRUE, the function either calls {\bf EndModal(wxID\_OK)} if the dialog is modal, or +sets the return value to wxID\_OK and calls {\bf Show(FALSE)} if the dialog is modeless. + +\wxheading{See also} + +\helpref{wxDialog::OnCancel}{wxdialogoncancel}, \helpref{wxDialog::OnApply}{wxdialogonapply} + +\membersection{wxDialog::OnSysColourChanged}\label{wxdialogonsyscolourchanged} + +\func{void}{OnSysColourChanged}{\param{wxSysColourChangedEvent\& }{event}} + +The default handler for wxEVT\_SYS\_COLOUR\_CHANGED. + +\wxheading{Parameters} + +\docparam{event}{The colour change event.} + +\wxheading{Remarks} + +Changes the dialog's colour to conform to the current settings (Windows only). +Add an event table entry for your dialog class if you wish the behaviour +to be different (such as keeping a user-defined +background colour). If you do override this function, call \helpref{wxWindow::OnSysColourChanged}{wxwindowonsyscolourchanged} to +propagate the notification to child windows and controls. + +\wxheading{See also} + +\helpref{wxSysColourChangedEvent}{wxsyscolourchangedevent} + +\membersection{wxDialog::SetModal}\label{wxdialogsetmodal} + +\func{void}{SetModal}{\param{const bool}{ flag}} + +Allows the programmer to specify whether the dialog box is modal (wxDialog::Show blocks control +until the dialog is hidden) or modeless (control returns immediately). + +\wxheading{Parameters} + +\docparam{flag}{If TRUE, the dialog will be modal, otherwise it will be modeless.} + +\membersection{wxDialog::SetTitle}\label{wxdialogsettitle} + +\func{void}{SetTitle}{\param{const wxString\& }{ title}} + +Sets the title of the dialog box. + +\wxheading{Parameters} + +\docparam{title}{The dialog box title.} + +\membersection{wxDialog::Show}\label{wxdialogshow} + +\func{bool}{Show}{\param{const bool}{ show}} + +Hides or shows the dialog. + +\wxheading{Parameters} + +\docparam{show}{If TRUE, the dialog box is shown and brought to the front; +otherwise the box is hidden. If FALSE and the dialog is +modal, control is returned to the calling program.} + +\wxheading{Remarks} + +The preferred way of dismissing a modal dialog is to use \helpref{wxDialog::EndModal}{wxdialogendmodal}. + +\membersection{wxDialog::ShowModal}\label{wxdialogshowmodal} + +\func{int}{ShowModal}{\void} + +Shows a modal dialog. Program flow does not return until the dialog has been dismissed with\rtfsp +\helpref{wxDialog::EndModal}{wxdialogendmodal}. + +\wxheading{Return value} + +The return value is the value set with \helpref{wxWindow::SetReturnCode}{wxwindowsetreturncode}. + +\wxheading{See also} + +\helpref{wxDialog::EndModal}{wxdialogendmodal},\rtfsp +\helpref{wxWindow::GetReturnCode}{wxwindowgetreturncode},\rtfsp +\helpref{wxWindow::SetReturnCode}{wxwindowsetreturncode} + + diff --git a/docs/latex/wx/dirdlg.tex b/docs/latex/wx/dirdlg.tex new file mode 100644 index 0000000000..5a012a99f4 --- /dev/null +++ b/docs/latex/wx/dirdlg.tex @@ -0,0 +1,86 @@ +\section{\class{wxDirDialog}}\label{wxdirdialog} + +This class represents the directory chooser dialog. + +\wxheading{Derived from} + +\helpref{wxDialog}{wxdialog}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxDirDialog overview}{wxdirdialogoverview}, \helpref{wxFileDialog}{wxfiledialog} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxDirDialog::wxDirDialog}\label{wxdirdialogconstr} + +\func{}{wxDirDialog}{\param{wxWindow* }{parent}, \param{const wxString\& }{message = "Choose a directory"},\rtfsp +\param{const wxString\& }{defaultPath = ""}, \param{long }{style = 0}, \param{const wxPoint\& }{pos = wxDefaultPosition}} + +Constructor. Use \helpref{wxDirDialog::ShowModal}{wxdirdialogshowmodal} to show the dialog. + +\wxheading{Parameters} + +\docparam{parent}{Parent window.} + +\docparam{message}{Message to show on the dialog.} + +\docparam{defaultPath}{The default path, or the empty string.} + +\docparam{style}{A dialog style, currently unused.} + +\docparam{pos}{Dialog position. Not implemented.} + +\membersection{wxDirDialog::\destruct{wxDirDialog}} + +\func{}{\destruct{wxDirDialog}}{\void} + +Destructor. + +\membersection{wxDirDialog::GetPath}\label{wxdirdialoggetpath} + +\constfunc{wxString}{GetPath}{\void} + +Returns the default or user-selected path. + +\membersection{wxDirDialog::GetMessage}\label{wxdirdialoggetmessage} + +\constfunc{wxString}{GetMessage}{\void} + +Returns the message that will be displayed on the dialog. + +\membersection{wxDirDialog::GetStyle}\label{wxdirdialoggetstyle} + +\constfunc{long}{GetStyle}{\void} + +Returns the dialog style. + +\membersection{wxDirDialog::SetMessage}\label{wxdirdialogsetmessage} + +\func{void}{SetMessage}{\param{const wxString\& }{message}} + +Sets the message that will be displayed on the dialog. + +\membersection{wxDirDialog::SetPath}\label{wxdirdialogsetpath} + +\func{void}{SetPath}{\param{const wxString\& }{path}} + +Sets the default path. + +\membersection{wxDirDialog::SetStyle}\label{wxdirdialogsetstyle} + +\func{void}{SetStyle}{\param{long }{style}} + +Sets the dialog style. This is currently unused. + +\membersection{wxDirDialog::ShowModal}\label{wxdirdialogshowmodal} + +\func{int}{ShowModal}{\void} + +Shows the dialog, returning wxID\_OK if the user pressed OK, and wxOK\_CANCEL +otherwise. + + diff --git a/docs/latex/wx/docchfrm.tex b/docs/latex/wx/docchfrm.tex new file mode 100644 index 0000000000..f979bc070f --- /dev/null +++ b/docs/latex/wx/docchfrm.tex @@ -0,0 +1,88 @@ +\section{\class{wxDocChildFrame}}\label{wxdocchildframe} + +The wxDocChildFrame class provides a default frame for displaying documents +on separate windows. This class can only be used for SDI (not MDI) child frames. + +The class is part of the document/view framework supported by wxWindows, +and cooperates with the \helpref{wxView}{wxview}, \helpref{wxDocument}{wxdocument}, +\rtfsp\helpref{wxDocManager}{wxdocmanager} and \helpref{wxDocTemplate}{wxdoctemplate} classes. + +See the example application in {\tt samples/docview}. + +\wxheading{Derived from} + +\helpref{wxFrame}{wxframe}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{Document/view overview}{docviewoverview}, \helpref{wxFrame}{wxframe} + +\membersection{wxDocChildFrame::m\_childDocument} + +\member{wxDocument*}{m\_childDocument} + +The document associated with the frame. + +\membersection{wxDocChildFrame::m\_childView} + +\member{wxView*}{m\_childView} + +The view associated with the frame. + +\membersection{wxDocChildFrame::wxDocChildFrame} + +\func{}{wxDocChildFrame}{\param{wxDocument* }{doc}, \param{wxView* }{view}, \param{wxFrame* }{parent}, + \param{const wxString\& }{title}, \param{const wxPoint\&}{ pos = wxDefaultPosition}, + \param{const wxSize\&}{ size = wxDefaultSize}, + \param{long}{ style = wxDEFAULT\_FRAME\_STYLE}, \param{const wxString\& }{name = ``frame"}} + +Constructor. + +\membersection{wxDocChildFrame::\destruct{wxDocChildFrame}} + +\func{}{\destruct{wxDocChildFrame}}{\void} + +Destructor. + +\membersection{wxDocChildFrame::GetDocument} + +\constfunc{wxDocument*}{GetDocument}{\void} + +Returns the document associated with this frame. + +\membersection{wxDocChildFrame::GetView} + +\constfunc{wxView*}{GetView}{\void} + +Returns the view associated with this frame. + +\membersection{wxDocChildFrame::OnActivate} + +\func{void}{OnActivate}{\param{bool}{ active}} + +Sets the currently active view to be the frame's view. You may need +to override (but still call) this function in order to set the keyboard +focus for your subwindow. + +\membersection{wxDocChildFrame::OnClose} + +\func{virtual bool}{OnClose}{\void} + +Closes and deletes the current view and document. + +\membersection{wxDocChildFrame::SetDocument} + +\func{void}{SetDocument}{\param{wxDocument *}{doc}} + +Sets the document for this frame. + +\membersection{wxDocChildFrame::SetView} + +\func{void}{SetView}{\param{wxView *}{view}} + +Sets the view for this frame. + + diff --git a/docs/latex/wx/docmanag.tex b/docs/latex/wx/docmanag.tex new file mode 100644 index 0000000000..1cfbfbe0b7 --- /dev/null +++ b/docs/latex/wx/docmanag.tex @@ -0,0 +1,335 @@ +\section{\class{wxDocManager}}\label{wxdocmanager} + +The wxDocManager class is part of the document/view framework supported by wxWindows, +and cooperates with the \helpref{wxView}{wxview}, \helpref{wxDocument}{wxdocument}\rtfsp +and \helpref{wxDocTemplate}{wxdoctemplate} classes. + +\wxheading{Derived from} + +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxDocManager overview}{wxdocmanageroverview}, \helpref{wxDocument}{wxdocument},\rtfsp +\helpref{wxView}{wxview}, \helpref{wxDocTemplate}{wxdoctemplate} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxDocManager::m\_currentView} + +\member{wxView*}{m\_currentView} + +The currently active view. + +\membersection{wxDocManager::m\_defaultDocumentNameCounter} + +\member{int}{m\_defaultDocumentNameCounter} + +Stores the integer to be used for the next default document name. + +\membersection{wxDocManager::m\_fileHistory} + +\member{wxFileHistory*}{m\_fileHistory} + +A pointer to an instance of \helpref{wxFileHistory}{wxfilehistory}, +which manages the history of recently-visited files on the File menu. + +\membersection{wxDocManager::m\_maxDocsOpen} + +\member{int}{m\_maxDocsOpen} + +Stores the maximum number of documents that can be opened before +existing documents are closed. By default, this is 10,000. + +\membersection{wxDocManager::m\_docs} + +\member{wxList}{m\_docs} + +A list of all documents. + +\membersection{wxDocManager::m\_flags} + +\member{long}{m\_flags} + +Stores the flags passed to the constructor. + +\membersection{wxDocManager::m\_templates} + +\member{wxList}{mnTemplates} + +A list of all document templates. + +\membersection{wxDocManager::wxDocManager} + +\func{void}{wxDocManager}{\param{long}{ flags = wxDEFAULT\_DOCMAN\_FLAGS}, \param{bool}{ initialize = TRUE}} + +Constructor. Create a document manager instance dynamically near the start of your application +before doing any document or view operations. + +{\it flags} is currently unused. + +If {\it initialize} is TRUE, the \helpref{Initialize}{wxdocmanagerinitialize} function will be called +to create a default history list object. If you derive from wxDocManager, you may wish to call the +base constructor with FALSE, and then call Initialize in your own constructor, to allow +your own Initialize or OnCreateFileHistory functions to be called. + +\membersection{wxDocManager::\destruct{wxDocManager}} + +\func{void}{\destruct{wxDocManager}}{\void} + +Destructor. + +\membersection{wxDocManager::ActivateView} + +\func{void}{ActivateView}{\param{wxView* }{doc}, \param{bool}{ activate}, \param{bool}{ deleting}} + +Sets the current view. + +\membersection{wxDocManager::AddDocument} + +\func{void}{AddDocument}{\param{wxDocument *}{doc}} + +Adds the document to the list of documents. + +\membersection{wxDocManager::AddFileToHistory} + +\func{void}{AddFileToHistory}{\param{const wxString\& }{filename}} + +Adds a file to the file history list, if we have a pointer to an appropriate file menu. + +\membersection{wxDocManager::AssociateTemplate} + +\func{void}{AssociateTemplate}{\param{wxDocTemplate *}{temp}} + +Adds the template to the document manager's template list. + +\membersection{wxDocManager::CreateDocument} + +\func{wxDocument*}{CreateDocument}{\param{const wxString\& }{path}, \param{long}{ flags}} + +Creates a new document in a manner determined by the {\it flags} parameter, which can be: + +\begin{itemize}\itemsep=0pt +\item wxDOC\_NEW Creates a fresh document. +\item wxDOC\_SILENT Silently loads the given document file. +\end{itemize} + +If wxDOC\_NEW is present, a new document will be created and returned, possibly after +asking the user for a template to use if there is more than one document template. +If wxDOC\_SILENT is present, a new document will be created and the given file loaded +into it. If neither of these flags is present, the user will be presented with +a file selector for the file to load, and the template to use will be determined by the +extension (Windows) or by popping up a template choice list (other platforms). + +If the maximum number of documents has been reached, this function +will delete the oldest currently loaded document before creating a new one. + +\membersection{wxDocManager::CreateView} + +\func{wxView*}{CreateView}{\param{wxDocument*}{doc}, \param{long}{ flags}} + +Creates a new view for the given document. If more than one view is allowed for the +document (by virtue of multiple templates mentioning the same document type), a choice +of view is presented to the user. + +\membersection{wxDocManager::DisassociateTemplate} + +\func{void}{DisassociateTemplate}{\param{wxDocTemplate *}{temp}} + +Removes the template from the list of templates. + +\membersection{wxDocManager::FileHistoryLoad} + +\func{void}{FileHistoryLoad}{\param{const wxString\& }{resourceFile}, \param{const wxString\& }{sectionName}} + +Loads the file history from a resource file, using the given section. This must be called +explicitly by the application. + +\membersection{wxDocManager::FileHistorySave} + +\func{void}{FileHistorySave}{\param{const wxString\& }{resourceFile}, \param{const wxString\& }{sectionName}} + +Saves the file history into a resource file, using the given section. This must be called +explicitly by the application. + +\membersection{wxDocManager::FileHistoryUseMenu} + +\func{void}{FileHistoryUseMenu}{\param{wxMenu *}{menu}} + +Use this menu for appending recently-visited document filenames, for convenient +access. Calling this function with a valid menu pointer enables the history +list functionality. + +\membersection{wxDocManager::FindTemplateForPath} + +\func{wxDocTemplate *}{FindTemplateForPath}{\param{const wxString\& }{path}} + +Given a path, try to find template that matches the extension. This is only +an approximate method of finding a template for creating a document. + +\membersection{wxDocManager::GetCurrentDocument} + +\func{wxDocument *}{GetCurrentDocument}{\void} + +Returns the document associated with the currently active view (if any). + +\membersection{wxDocManager::GetCurrentView} + +\func{wxView *}{GetCurrentView}{\void} + +Returns the currently active view + +\membersection{wxDocManager::GetDocuments} + +\func{wxList\&}{GetDocuments}{\void} + +Returns a reference to the list of documents. + +\membersection{wxDocManager::GetFileHistory} + +\func{wxFileHistory *}{GetFileHistory}{\void} + +Returns a pointer to file history. + +\membersection{wxDocManager::GetMaxDocsOpen} + +\func{int}{GetMaxDocsOpen}{\void} + +Returns the number of documents that can be open simultaneously. + +\membersection{wxDocManager::GetNoHistoryFiles} + +\func{int}{GetNoHistoryFiles}{\void} + +Returns the number of files currently stored in the file history. + +\membersection{wxDocManager::Initialize}\label{wxdocmanagerinitialize} + +\func{bool}{Initialize}{\void} + +Initializes data; currently just calls OnCreateFileHistory. Some data cannot +always be initialized in the constructor because the programmer must be given +the opportunity to override functionality. If OnCreateFileHistory was called +from the constructor, an overridden virtual OnCreateFileHistory would not be +called due to C++'s `interesting' constructor semantics. In fact Initialize +\rtfsp{\it is} called from the wxDocManager constructor, but this can be +vetoed by passing FALSE to the second argument, allowing the derived class's +constructor to call Initialize, possibly calling a different OnCreateFileHistory +from the default. + +The bottom line: if you're not deriving from Initialize, forget it and +construct wxDocManager with no arguments. + +\membersection{wxDocManager::MakeDefaultName} + +\func{bool}{MakeDefaultName}{\param{const wxString\& }{buf}} + +Copies a suitable default name into {\it buf}. This is implemented by +appending an integer counter to the string {\bf unnamed} and incrementing +the counter. + +\membersection{wxDocManager::OnCreateFileHistory} + +\func{wxFileHistory *}{OnCreateFileHistory}{\void} + +A hook to allow a derived class to create a different type of file history. Called +from \helpref{Initialize}{wxdocmanagerinitialize}. + +\membersection{wxDocManager::OnFileClose} + +\func{void}{OnFileClose}{\void} + +Closes and deletes the currently active document. + +\membersection{wxDocManager::OnFileNew} + +\func{void}{OnFileNew}{\void} + +Creates a document from a list of templates (if more than one template). + +\membersection{wxDocManager::OnFileOpen} + +\func{void}{OnFileOpen}{\void} + +Creates a new document and reads in the selected file. + +\membersection{wxDocManager::OnFileSave} + +\func{void}{OnFileSave}{\void} + +Saves the current document by calling wxDocument::Save for the current document. + +\membersection{wxDocManager::OnFileSaveAs} + +\func{void}{OnFileSaveAs}{\void} + +Calls wxDocument::SaveAs for the current document. + +\membersection{wxDocManager::OnMenuCommand} + +\func{void}{OnMenuCommand}{\param{int}{ cmd}} + +Processes menu commands routed from child or parent frames. This deals +with the following predefined menu item identifiers: + +\begin{itemize}\itemsep=0pt +\item wxID\_OPEN Creates a new document and opens a file into it. +\item wxID\_CLOSE Closes the current document. +\item wxID\_NEW Creates a new document. +\item wxID\_SAVE Saves the document. +\item wxID\_SAVE\_AS Saves the document into a specified filename. +\end{itemize} + +Unrecognized commands are routed to the currently active wxView's OnMenuCommand. + +\membersection{wxDocManager::RemoveDocument} + +\func{void}{RemoveDocument}{\param{wxDocument *}{doc}} + +Removes the document from the list of documents. + +\membersection{wxDocManager::SelectDocumentPath} + +\func{wxDocTemplate *}{SelectDocumentPath}{\param{wxDocTemplate **}{templates}, + \param{int}{ noTemplates}, \param{const wxString\& }{path}, \param{const wxString\& }{bufSize}, + \param{long}{ flags}, \param{bool}{ save}} + +Under Windows, pops up a file selector with a list of filters corresponding to document templates. +The wxDocTemplate corresponding to the selected file's extension is returned. + +On other platforms, if there is more than one document template a choice list is popped up, +followed by a file selector. + +This function is used in wxDocManager::CreateDocument. + +\membersection{wxDocManager::SelectDocumentType} + +\func{wxDocTemplate *}{SelectDocumentType}{\param{wxDocTemplate **}{templates}, + \param{int}{ noTemplates}} + +Returns a document template by asking the user (if there is more than one template). +This function is used in wxDocManager::CreateDocument. + +\membersection{wxDocManager::SelectViewType} + +\func{wxDocTemplate *}{SelectViewType}{\param{wxDocTemplate **}{templates}, + \param{int}{ noTemplates}} + +Returns a document template by asking the user (if there is more than one template), +displaying a list of valid views. This function is used in wxDocManager::CreateView. +The dialog normally won't appear because the array of templates only contains +those relevant to the document in question, and often there will only be one such. + +\membersection{wxDocManager::SetMaxDocsOpen} + +\func{void}{SetMaxDocsOpen}{\param{int}{ n}} + +Sets the maximum number of documents that can be open at a time. By default, this +is 10,000. If you set it to 1, existing documents will be saved and deleted +when the user tries to open or create a new one (similar to the behaviour +of Windows Write, for example). Allowing multiple documents gives behaviour +more akin to MS Word and other Multiple Document Interface applications. + + + diff --git a/docs/latex/wx/docprfrm.tex b/docs/latex/wx/docprfrm.tex new file mode 100644 index 0000000000..75ae9c7692 --- /dev/null +++ b/docs/latex/wx/docprfrm.tex @@ -0,0 +1,78 @@ +\section{\class{wxDocParentFrame}}\label{wxdocparentframe} + +The wxDocParentFrame class provides a default top-level frame for +applications using the document/view framework. This class can only be used for SDI (not MDI) parent frames. + +It cooperates with the \helpref{wxView}{wxview}, \helpref{wxDocument}{wxdocument}, +\rtfsp\helpref{wxDocManager}{wxdocmanager} and \helpref{wxDocTemplates}{wxdoctemplate} classes. + +See the example application in {\tt samples/docview}. + +\wxheading{Derived from} + +\helpref{wxFrame}{wxframe}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{Document/view overview}{docviewoverview}, \helpref{wxFrame}{wxframe} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxDocParentFrame::wxDocParentFrame} + +\func{}{wxDocParentFrame}{\param{wxFrame *}{parent}, + \param{const wxString\& }{title}, \param{int}{ x}, \param{int}{ y}, \param{int}{ width}, \param{int}{ height}, + \param{long}{ style}, \param{const wxString\& }{name}} + +Constructor. + +\membersection{wxDocParentFrame::\destruct{wxDocParentFrame}} + +\func{}{\destruct{wxDocParentFrame}}{\void} + +Destructor. + +\membersection{wxDocParentFrame::OnClose} + +\func{bool}{OnClose}{\void} + +Deletes all views and documents. If no user input cancelled the +operation, the function returns TRUE and the application will exit. + +Since understanding how document/view clean-up takes place can be difficult, +the implementation of this function is shown below. + +\begin{verbatim} +bool wxDocParentFrame::OnClose(void) +{ + // Delete all views and documents + wxNode *node = docManager->GetDocuments().First(); + while (node) + { + wxDocument *doc = (wxDocument *)node->Data(); + wxNode *next = node->Next(); + + if (!doc->Close()) + return FALSE; + + // Implicitly deletes the document when the last + // view is removed (deleted) + doc->DeleteAllViews(); + + // Check document is deleted + if (docManager->GetDocuments().Member(doc)) + delete doc; + + // This assumes that documents are not connected in + // any way, i.e. deleting one document does NOT + // delete another. + node = next; + } + return TRUE; +} +\end{verbatim} + + diff --git a/docs/latex/wx/doctempl.tex b/docs/latex/wx/doctempl.tex new file mode 100644 index 0000000000..daae6ace61 --- /dev/null +++ b/docs/latex/wx/doctempl.tex @@ -0,0 +1,233 @@ +\section{\class{wxDocTemplate}}\label{wxdoctemplate} + +The wxDocTemplate class is used to model the relationship between a +document class and a view class. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxDocTemplate overview}{wxdoctemplateoverview}, \helpref{wxDocument}{wxdocument}, \helpref{wxView}{wxview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxDocTemplate::m\_defaultExt} + +\member{wxString}{m\_defaultExt} + +The default extension for files of this type. + +\membersection{wxDocTemplate::m\_description} + +\member{wxString}{m\_description} + +A short description of this template. + +\membersection{wxDocTemplate::m\_directory} + +\member{wxString}{m\_directory} + +The default directory for files of this type. + +\membersection{wxDocTemplate::m\_docClassInfo} + +\member{wxClassInfo* }{m\_docClassInfo} + +Run-time class information that allows document instances to be constructed dynamically. + +\membersection{wxDocTemplate::m\_docTypeName} + +\member{wxString}{m\_docTypeName} + +The named type of the document associated with this template. + +\membersection{wxDocTemplate::m\_documentManager} + +\member{wxDocTemplate*}{m\_documentManager} + +A pointer to the document manager for which this template was created. + +\membersection{wxDocTemplate::m\_fileFilter} + +\member{wxString}{m\_fileFilter} + +The file filter (such as \verb$*.txt$) to be used in file selector dialogs. + +\membersection{wxDocTemplate::m\_flags} + +\member{long}{m\_flags} + +The flags passed to the constructor. + +\membersection{wxDocTemplate::m\_viewClassInfo} + +\member{wxClassInfo*}{m\_viewClassInfo} + +Run-time class information that allows view instances to be constructed dynamically. + +\membersection{wxDocTemplate::m\_viewTypeName} + +\member{wxString}{m\_viewTypeName} + +The named type of the view associated with this template. + +\membersection{wxDocTemplate::wxDocTemplate} + +\func{}{wxDocTemplate}{\param{wxDocManager* }{manager}, \param{const wxString\& }{descr}, \param{const wxString\& }{filter}, + \param{const wxString\& }{dir}, \param{const wxString\& }{ext}, \param{const wxString\& }{docTypeName}, + \param{const wxString\& }{viewTypeName}, \param{wxClassInfo* }{docClassInfo = NULL}, + \param{wxClassInfo* }{viewClassInfo = NULL}, \param{long}{ flags = wxDEFAULT\_TEMPLATE\_FLAGS}} + +Constructor. Create instances dynamically near the start of your application after creating +a wxDocManager instance, and before doing any document or view operations. + +{\it manager} is the document manager object which manages this template. + +{\it descr} is a short description of what the template is for. This string will be displayed in the +file filter list of Windows file selectors. + +{\it filter} is an appropriate file filter such as \verb$*.txt$. + +{\it dir} is the default directory to use for file selectors. + +{\it ext} is the default file extension (such as txt). + +{\it docTypeName} is a name that should be unique for a given type of document, used for +gathering a list of views relevant to a particular document. + +{\it viewTypeName} is a name that should be unique for a given view. + +{\it docClassInfo} is a pointer to the run-time document class information as returned +by the CLASSINFO macro, e.g. CLASSINFO(MyDocumentClass). If this is not supplied, +you will need to derive a new wxDocTemplate class and override the CreateDocument +member to return a new document instance on demand. + +{\it viewClassInfo} is a pointer to the run-time view class information as returned +by the CLASSINFO macro, e.g. CLASSINFO(MyViewClass). If this is not supplied, +you will need to derive a new wxDocTemplate class and override the CreateView +member to return a new view instance on demand. + +{\it flags} is a bit list of the following: + +\begin{itemize}\itemsep=0pt +\item wxTEMPLATE\_VISIBLE The template may be displayed to the user in dialogs. +\item wxTEMPLATE\_INVISIBLE The template may not be displayed to the user in dialogs. +\item wxDEFAULT\_TEMPLATE\_FLAGS Defined as wxTEMPLATE\_VISIBLE. +\end{itemize} + +\membersection{wxDocTemplate::\destruct{wxDocTemplate}} + +\func{void}{\destruct{wxDocTemplate}}{\void} + +Destructor. + +\membersection{wxDocTemplate::CreateDocument} + +\func{wxDocument *}{CreateDocument}{\param{const wxString\& }{path}, \param{long}{ flags = 0}} + +Creates a new instance of the associated document class. If you have not supplied +a wxClassInfo parameter to the template constructor, you will need to override this +function to return an appropriate document instance. + +\membersection{wxDocTemplate::CreateView} + +\func{wxView *}{CreateView}{\param{wxDocument *}{doc}, \param{long}{ flags = 0}} + +Creates a new instance of the associated view class. If you have not supplied +a wxClassInfo parameter to the template constructor, you will need to override this +function to return an appropriate view instance. + +\membersection{wxDocTemplate::GetDefaultExtension} + +\func{wxString}{GetDefaultExtension}{\void} + +Returns the default file extension for the document data, as passed to the document template constructor. + +\membersection{wxDocTemplate::GetDescription} + +\func{wxString}{GetDescription}{\void} + +Returns the text description of this template, as passed to the document template constructor. + +\membersection{wxDocTemplate::GetDirectory} + +\func{wxString}{GetDirectory}{\void} + +Returns the default directory, as passed to the document template constructor. + +\membersection{wxDocTemplate::GetDocumentManager} + +\func{wxDocManager *}{GetDocumentManager}{\void} + +Returns a pointer to the document manager instance for which this template was created. + +\membersection{wxDocTemplate::GetDocumentName} + +\func{wxString}{GetDocumentName}{\void} + +Returns the document type name, as passed to the document template constructor. + +\membersection{wxDocTemplate::GetFileFilter} + +\func{wxString}{GetFileFilter}{\void} + +Returns the file filter, as passed to the document template constructor. + +\membersection{wxDocTemplate::GetFlags} + +\func{long}{GetFlags}{\void} + +Returns the flags, as passed to the document template constructor. + +\membersection{wxDocTemplate::GetViewName} + +\func{wxString}{GetViewName}{\void} + +Returns the view type name, as passed to the document template constructor. + +\membersection{wxDocTemplate::IsVisible} + +\func{bool}{IsVisible}{\void} + +Returns TRUE if the document template can be shown in user dialogs, FALSE otherwise. + +\membersection{wxDocTemplate::SetDefaultExtension} + +\func{void}{SetDefaultExtension}{\param{const wxString\& }{ext}} + +Sets the default file extension. + +\membersection{wxDocTemplate::SetDescription} + +\func{void}{SetDescription}{\param{const wxString\& }{descr}} + +Sets the template description. + +\membersection{wxDocTemplate::SetDirectory} + +\func{void}{SetDirectory}{\param{const wxString\& }{dir}} + +Sets the default directory. + +\membersection{wxDocTemplate::SetDocumentManager} + +\func{void}{SetDocumentManager}{\param{wxDocManager *}{manager}} + +Sets the pointer to the document manager instance for which this template was created. +Should not be called by the application. + +\membersection{wxDocTemplate::SetFileFilter} + +\func{void}{SetFileFilter}{\param{const wxString\& }{filter}} + +Sets the file filter. + +\membersection{wxDocTemplate::SetFlags} + +\func{void}{SetFlags}{\param{long }{flags}} + +Sets the internal document template flags (see the constructor description for more details). + + diff --git a/docs/latex/wx/document.tex b/docs/latex/wx/document.tex new file mode 100644 index 0000000000..99a4553c03 --- /dev/null +++ b/docs/latex/wx/document.tex @@ -0,0 +1,327 @@ +\section{\class{wxDocument}}\label{wxdocument} + +The document class can be used to model an application's file-based +data. It is part of the document/view framework supported by wxWindows, +and cooperates with the \helpref{wxView}{wxview}, \helpref{wxDocTemplate}{wxdoctemplate}\rtfsp +and \helpref{wxDocManager}{wxdocmanager} classes. + +\wxheading{Derived from} + +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxDocument overview}{wxdocumentoverview}, \helpref{wxView}{wxview},\rtfsp +\helpref{wxDocTemplate}{wxdoctemplate}, \helpref{wxDocManager}{wxdocmanager} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxDocument::m\_commandProcessor} + +\member{wxCommandProcessor*}{m\_commandProcessor} + +A pointer to the command processor associated with this document. + +\membersection{wxDocument::m\_documentFile} + +\member{wxString}{m\_documentFile} + +Filename associated with this document (``" if none). + +\membersection{wxDocument::m\_documentModified} + +\member{bool}{m\_documentModified} + +TRUE if the document has been modified, FALSE otherwise. + +\membersection{wxDocument::m\_documentTemplate} + +\member{wxDocTemplate *}{m\_documentTemplate} + +A pointer to the template from which this document was created. + +\membersection{wxDocument::m\_documentTitle} + +\member{wxString}{m\_documentTitle} + +Document title. The document title is used for an associated +frame (if any), and is usually constructed by the framework from +the filename. + +\membersection{wxDocument::m\_documentTypeName}\label{documenttypename} + +\member{wxString}{m\_documentTypeName} + +The document type name given to the wxDocTemplate constructor, copied to this +variable when the document is created. If several document templates are +created that use the same document type, this variable is used in wxDocManager::CreateView +to collate a list of alternative view types that can be used on this kind of +document. Do not change the value of this variable. + +\membersection{wxDocument::m\_documentViews} + +\member{wxList}{m\_documentViews} + +List of wxView instances associated with this document. + +\membersection{wxDocument::wxDocument} + +\func{}{wxDocument}{\void} + +Constructor. Define your own default constructor to initialize application-specific +data. + +\membersection{wxDocument::\destruct{wxDocument}} + +\func{}{\destruct{wxDocument}}{\void} + +Destructor. Removes itself from the document manager. + +\membersection{wxDocument::AddView} + +\func{virtual bool}{AddView}{\param{wxView *}{view}} + +If the view is not already in the list of views, adds the view and calls OnChangedViewList. + +\membersection{wxDocument::Close} + +\func{virtual bool}{Close}{\void} + +Closes the document, by calling OnSaveModified and then (if this returned TRUE) OnCloseDocument. +This does not normally delete the document object: use DeleteAllViews to do this implicitly. + +\membersection{wxDocument::DeleteAllViews} + +\func{virtual bool}{DeleteAllViews}{\void} + +Calls wxView::Close and deletes each view. Deleting the final view will implicitly +delete the document itself, because the wxView destructor calls RemoveView. This +in turns calls wxDocument::OnChangedViewList, whose default implemention is to +save and delete the document if no views exist. + +\membersection{wxDocument::GetCommandProcessor} + +\constfunc{wxCommandProcessor*}{GetCommandProcessor}{\void} + +Returns a pointer to the command processor associated with this document. + +See \helpref{wxCommandProcessor}{wxcommandprocessor}. + +\membersection{wxDocument::GetDocumentTemplate} + +\constfunc{wxDocTemplate*}{GetDocumentTemplate}{\void} + +Gets a pointer to the template that created the document. + +\membersection{wxDocument::GetDocumentManager} + +\constfunc{wxDocManager*}{GetDocumentManager}{\void} + +Gets a pointer to the associated document manager. + +\membersection{wxDocument::GetDocumentName} + +\constfunc{wxString}{GetDocumentName}{\void} + +Gets the document type name for this document. See the comment for \helpref{documentTypeName}{documenttypename}. + +\membersection{wxDocument::GetDocumentWindow} + +\constfunc{wxWindow*}{GetDocumentWindow}{\void} + +Intended to return a suitable window for using as a parent for document-related +dialog boxes. By default, uses the frame associated with the first view. + +\membersection{wxDocument::GetFilename} + +\constfunc{wxString}{GetFilename}{\void} + +Gets the filename associated with this document, or NULL if none is +associated. + +\membersection{wxDocument::GetFirstView} + +\constfunc{wxView*}{GetFirstView}{\void} + +A convenience function to get the first view for a document, because +in many cases a document will only have a single view. + +\membersection{wxDocument::GetPrintableName} + +\constfunc{virtual void}{GetPrintableName}{\param{wxString\& }{name}} + +Copies a suitable document name into the supplied {\it name} buffer. The default +function uses the title, or if there is no title, uses the filename; or if no +filename, the string {\bf unnamed}. + +\membersection{wxDocument::GetTitle} + +\constfunc{wxString}{GetTitle}{\void} + +Gets the title for this document. The document title is used for an associated +frame (if any), and is usually constructed by the framework from +the filename. + +\membersection{wxDocument::IsModified}\label{wxdocumentismodified} + +\constfunc{virtual bool}{IsModified}{\void} + +Returns TRUE if the document has been modified since the last save, FALSE otherwise. +You may need to override this if your document view maintains its own +record of being modified (for example if using wxTextWindow to view and edit the document). + +See also \helpref{Modify}{wxdocumentmodify}. + +\membersection{wxDocument::LoadObject} + +\func{virtual istream\&}{LoadObject}{\param{istream\& }{stream}} + +Override this function and call it from your own LoadObject before +streaming your own data. LoadObject is called by the framework +automatically when the document contents need to be loaded. + +\membersection{wxDocument::Modify}\label{wxdocumentmodify} + +\func{virtual void}{Modify}{\param{bool}{ modify}} + +Call with TRUE to mark the document as modified since the last save, FALSE otherwise. +You may need to override this if your document view maintains its own +record of being modified (for example if using wxTextWindow to view and edit the document). + +See also \helpref{IsModified}{wxdocumentismodified}. + +\membersection{wxDocument::OnChangedViewList} + +\func{virtual void}{OnChangedViewList}{\void} + +Called when a view is added to or deleted from this document. The default +implementation saves and deletes the document if no views exist (the last +one has just been removed). + +\membersection{wxDocument::OnCloseDocument} + +\func{virtual bool}{OnCloseDocument}{\void} + +The default implementation calls DeleteContents (an empty implementation) +sets the modified flag to FALSE. Override this to +supply additional behaviour when the document is closed with Close. + +\membersection{wxDocument::OnCreate} + +\func{virtual bool}{OnCreate}{\param{const wxString\& }{path}, \param{long}{ flags}} + +Called just after the document object is created to give it a chance +to initialize itself. The default implementation uses the +template associated with the document to create an initial view. +If this function returns FALSE, the document is deleted. + +\membersection{wxDocument::OnCreateCommandProcessor} + +\func{virtual wxCommandProcessor*}{OnCreateCommandProcessor}{\void} + +Override this function if you want a different (or no) command processor +to be created when the document is created. By default, it returns +an instance of wxCommandProcessor. + +See \helpref{wxCommandProcessor}{wxcommandprocessor}. + +\membersection{wxDocument::OnNewDocument} + +\func{virtual bool}{OnNewDocument}{\void} + +The default implementation calls OnSaveModified and DeleteContents, makes a default title for the +document, and notifies the views that the filename (in fact, the title) has changed. + +\membersection{wxDocument::OnOpenDocument} + +\func{virtual bool}{OnOpenDocument}{\param{const wxString\& }{filename}} + +Constructs an input file stream for the given filename (which must not be NULL), +and calls LoadObject. If LoadObject returns TRUE, the document is set to +unmodified; otherwise, an error message box is displayed. The document's +views are notified that the filename has changed, to give windows an opportunity +to update their titles. All of the document's views are then updated. + +\membersection{wxDocument::OnSaveDocument} + +\func{virtual bool}{OnSaveDocument}{\param{const wxString\& }{filename}} + +Constructs an output file stream for the given filename (which must not be NULL), +and calls SaveObject. If SaveObject returns TRUE, the document is set to +unmodified; otherwise, an error message box is displayed. + +\membersection{wxDocument::OnSaveModified} + +\func{virtual bool}{OnSaveModified}{\void} + +If the document has been modified, prompts the user to ask if the changes should +be changed. If the user replies Yes, the Save function is called. If No, the +document is marked as unmodified and the function succeeds. If Cancel, the +function fails. + +\membersection{wxDocument::RemoveView} + +\func{virtual bool}{RemoveView}{\param{wxView* }{view}} + +Removes the view from the document's list of views, and calls OnChangedViewList. + +\membersection{wxDocument::Save} + +\func{virtual bool}{Save}{\void} + +Saves the document by calling OnSaveDocument if there is an associated filename, +or SaveAs if there is no filename. + +\membersection{wxDocument::SaveAs} + +\func{virtual bool}{SaveAs}{\void} + +Prompts the user for a file to save to, and then calls OnSaveDocument. + +\membersection{wxDocument::SaveObject} + +\func{virtual ostream\&}{SaveObject}{\param{ostream\& }{stream}} + +Override this function and call it from your own SaveObject before +streaming your own data. SaveObject is called by the framework +automatically when the document contents need to be saved. + +\membersection{wxDocument::SetCommandProcessor} + +\func{virtual void}{SetCommandProcessor}{\param{wxCommandProcessor *}{processor}} + +Sets the command processor to be used for this document. The document will then be responsible +for its deletion. Normally you should not call this; override OnCreateCommandProcessor +instead. + +See \helpref{wxCommandProcessor}{wxcommandprocessor}. + +\membersection{wxDocument::SetDocumentName} + +\func{void}{SetDocumentName}{\param{const wxString\& }{name}} + +Sets the document type name for this document. See the comment for \helpref{documentTypeName}{documenttypename}. + +\membersection{wxDocument::SetDocumentTemplate} + +\func{void}{SetDocumentTemplate}{\param{wxDocTemplate* }{templ}} + +Sets the pointer to the template that created the document. Should only be called by the +framework. + +\membersection{wxDocument::SetFilename} + +\func{void}{SetFilename}{\param{const wxString\& }{filename}} + +Sets the filename for this document. Usually called by the framework. + +\membersection{wxDocument::SetTitle} + +\func{void}{SetTitle}{\param{const wxString\& }{title}} + +Sets the title for this document. The document title is used for an associated +frame (if any), and is usually constructed by the framework from +the filename. + + diff --git a/docs/latex/wx/dropevt.tex b/docs/latex/wx/dropevt.tex new file mode 100644 index 0000000000..ff3e020e98 --- /dev/null +++ b/docs/latex/wx/dropevt.tex @@ -0,0 +1,72 @@ +\section{\class{wxDropFilesEvent}}\label{wxdropfilesevent} + +This class is used for drop files events, that is, when files have been dropped +onto the window. This functionality is currently only available under Windows. + +\wxheading{Derived from} + +\helpref{wxEvent}{wxevent}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Event table macros} + +To process a drop files event, use these event handler macros to direct input to a member +function that takes a wxDropFilesEvent argument. + +\twocolwidtha{7cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf EVT\_DROP\_FILES(func)}}{Process a wxEVT\_DROP\_FILES event.} +\end{twocollist}% + +\wxheading{See also} + +\helpref{wxWindow::OnDropFiles}{wxwindowondropfiles}, \helpref{Event handling overview}{eventhandlingoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxDropFilesEvent::wxDropFilesEvent} + +\func{}{wxDropFilesEvent}{\param{WXTYPE }{id = 0}, \param{int }{noFiles = 0},\rtfsp +\param{wxString* }{files = NULL}} + +Constructor. + +\membersection{wxDropFilesEvent::m\_files} + +\member{wxString*}{m\_files} + +An array of filenames. + +\membersection{wxDropFilesEvent::m\_noFiles} + +\member{int}{m\_noFiles} + +The number of files dropped. + +\membersection{wxDropFilesEvent::m\_pos} + +\member{wxPoint}{m\_pos} + +The point at which the drop took place. + +\membersection{wxDropFilesEvent::GetFiles}\label{wxdropfileseventgetfiles} + +\constfunc{wxString*}{GetFiles}{\void} + +Returns an array of filenames. + +\membersection{wxDropFilesEvent::GetNumberOfFiles}\label{wxdropfileseventgetnumberoffiles} + +\constfunc{int}{GetNumberOfFiles}{\void} + +Returns the number of files dropped. + +\membersection{wxDropFilesEvent::GetPosition}\label{wxdropfileseventgetposition} + +\constfunc{wxPoint}{GetPosition}{\void} + +Returns the position at which the files were dropped. + +Returns an array of filenames. + + diff --git a/docs/latex/wx/eraseevt.tex b/docs/latex/wx/eraseevt.tex new file mode 100644 index 0000000000..f7397c2b42 --- /dev/null +++ b/docs/latex/wx/eraseevt.tex @@ -0,0 +1,48 @@ +\section{\class{wxEraseEvent}}\label{wxeraseevent} + +An erase event is sent when a window's background needs to be repainted. + +\wxheading{Derived from} + +\helpref{wxEvent}{wxevent}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Event table macros} + +To process an erase event, use this event handler macro to direct input to a member +function that takes a wxEraseEvent argument. + +\twocolwidtha{7cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf EVT\_ERASE(func)}}{Process a wxEVT\_ERASE\_BACKGROUND event.} +\end{twocollist}% + +\wxheading{Remarks} + +If the {\bf m\_DC} member is non-NULL, draw into this device context. + +\wxheading{See also} + +\helpref{wxWindow::OnEraseBackground}{wxwindowonerasebackground}, \helpref{Event handling overview}{eventhandlingoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxEraseEvent::wxEraseEvent} + +\func{}{wxEraseEvent}{\param{int }{id = 0}, \param{wxDC* }{dc = NULL}} + +Constructor. + +\membersection{wxEraseEvent::m\_dc} + +\member{wxDC*}{m\_dc} + +The device context associated with the erase event (may be NULL). + +\membersection{wxEraseEvent::GetDC}\label{wxeraseeventgetdc} + +\constfunc{wxDC*}{GetDC}{\void} + +Returns the device context to draw into. If this is non-NULL, you should draw +into it to perform the erase operation. + diff --git a/docs/latex/wx/event.tex b/docs/latex/wx/event.tex new file mode 100644 index 0000000000..d44b4b3fb8 --- /dev/null +++ b/docs/latex/wx/event.tex @@ -0,0 +1,141 @@ +\section{\class{wxEvent}}\label{wxevent} + +An event is a structure holding information about an event passed to a +callback or member function. {\bf wxEvent} used to be a multipurpose +event object, and is an abstract base class for other event classes (see below). + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxCommandEvent}{wxcommandevent},\rtfsp +\helpref{wxMouseEvent}{wxmouseevent} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxEvent::wxEvent} + +\func{}{wxEvent}{\param{int }{id = 0}} + +Constructor. Should not need to be used directly by an application. + +\membersection{wxEvent::m\_eventHandle} + +\member{char*}{m\_eventHandle} + +Handle of an underlying windowing system event handle, such as +XEvent. Not guaranteed to be instantiated. + +\membersection{wxEvent::m\_eventObject} + +\member{wxObject*}{m\_eventObject} + +The object (usually a window) that the event was generated from, +or should be sent to. + +\membersection{wxEvent::m\_eventType} + +\member{WXTYPE}{m\_eventType} + +The type of the event, such as wxEVENT\_TYPE\_BUTTON\_COMMAND. + +\membersection{wxEvent::m\_id} + +\member{int}{m\_id} + +Identifier for the window. + +\membersection{wxEvent::m\_skipped} + +\member{bool}{m\_skipped} + +Set to TRUE by {\bf Skip} if this event should be skipped. + +\membersection{wxEvent::m\_timeStamp} + +\member{long}{m\_timeStamp} + +Timestamp for this event. + +\membersection{wxEvent::GetEventClass} + +\func{WXTYPE}{GetEventClass}{\void} + +Returns the identifier of the given event class, +such as wxTYPE\_MOUSE\_EVENT. + +\membersection{wxEvent::GetEventObject} + +\func{wxObject*}{GetEventObject}{\void} + +Returns the object associated with the +event, if any. + +\membersection{wxEvent::GetEventType} + +\func{WXTYPE}{GetEventType}{\void} + +Returns the identifier of the given event type, +such as wxEVENT\_TYPE\_BUTTON\_COMMAND. + +\membersection{wxEvent::GetId} + +\func{int}{GetId}{\void} + +Returns the identifier associated with this event, such as a button command id. + +\membersection{wxEvent::GetObjectType} + +\func{WXTYPE}{GetObjectType}{\void} + +Returns the type of the object associated with the +event, such as wxTYPE\_BUTTON. + +\membersection{wxEvent::GetSkipped} + +\func{bool}{GetSkipped}{\void} + +Returns TRUE if the event handler should be skipped, FALSE otherwise. + +\membersection{wxEvent::GetTimestamp} + +\func{long}{GetTimestamp}{\void} + +Gets the timestamp for the event. + +\membersection{wxEvent::SetEventObject} + +\func{void}{SetEventObject}{\param{wxObject* }{object}} + +Sets the originating object. + +\membersection{wxEvent::SetEventType} + +\func{void}{SetEventType}{\param{WXTYPE }{typ}} + +Sets the event type. + +\membersection{wxEvent::SetId} + +\func{void}{SetId}{\param{int}{ id}} + +Sets the identifier associated with this event, such as a button command id. + +\membersection{wxEvent::SetTimestamp} + +\func{void}{SetTimestamp}{\param{long }{timeStamp}} + +Sets the timestamp for the event. + +Sets the originating object. + +\membersection{wxEvent::Skip}\label{wxeventskip} + +\func{void}{Skip}{\param{bool}{ skip = TRUE}} + +Called by an event handler to tell the event system that the +event handler should be skipped, and the next valid handler used +instead. + diff --git a/docs/latex/wx/evthand.tex b/docs/latex/wx/evthand.tex new file mode 100644 index 0000000000..16e10a1bcb --- /dev/null +++ b/docs/latex/wx/evthand.tex @@ -0,0 +1,269 @@ +\section{\class{wxEvtHandler}}\label{wxevthandler} + +A class that can handle events from the windowing system. +wxWindow (and therefore all window classes) are derived from +this class. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\overview{Event handling overview}{eventhandlingoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxEvtHandler::wxEvtHandler} + +\func{}{wxEvtHandler}{\void} + +Constructor. + +\membersection{wxEvtHandler::\destruct{wxEvtHandler}} + +\func{}{\destruct{wxEvtHandler}}{\void} + +Destructor. If the handler is part of a chain, the destructor will +unlink itself and restore the previous and next handlers so that they point to +each other. + +\membersection{wxEvtHandler::Default}\label{wxevthandlerdefault} + +\func{virtual long}{Default}{\void} + +Invokes default processing if this event handler is a window. + +\wxheading{Return value} + +System dependent. + +\wxheading{Remarks} + +A generic way of delegating processing to the default system behaviour. It calls a platform-dependent +default function, with parameters dependent on the event or message parameters +originally sent from the windowing system. + +Normally the application should call a base member, such as \helpref{wxWindow::OnChar}{wxwindowonchar}, which itself +may call {\bf Default}. + +\membersection{wxEvtHandler::GetClientData}\label{wxevthandlergetclientdata} + +\func{char* }{GetClientData}{\void} + +Gets user-supplied client data. + +\wxheading{Remarks} + +Normally, any extra data the programmer wishes to associate with the object +should be made available by deriving a new class +with new data members. + +\wxheading{See also} + +\helpref{wxEvtHandler::SetClientData}{wxevthandlersetclientdata} + +\membersection{wxEvtHandler::GetEvtHandlerEnabled}\label{wxevthandlergetevthandlerenabled} + +\func{bool}{GetEvtHandlerEnabled}{\void} + +Returns TRUE if the event handler is enabled, FALSE otherwise. + +\wxheading{See also} + +\helpref{wxEvtHandler::SetEvtHandlerEnabled}{wxevthandlersetevthandlerenabled} + +\membersection{wxEvtHandler::GetNextHandler}\label{wxevthandlergetnexthandler} + +\func{wxEvtHandler*}{GetNextHandler}{\void} + +Gets the pointer to the next handler in the chain. + +\wxheading{See also} + +\helpref{wxEvtHandler::GetPreviousHandler}{wxevthandlergetprevioushandler},\rtfsp +\helpref{wxEvtHandler::SetPreviousHandler}{wxevthandlersetprevioushandler},\rtfsp +\helpref{wxEvtHandler::SetNextHandler}{wxevthandlersetnexthandler},\rtfsp +\helpref{wxWindow::PushEventHandler}{wxwindowpusheventhandler},\rtfsp +\helpref{wxWindow::PopEventHandler}{wxwindowpopeventhandler} + +\membersection{wxEvtHandler::GetPreviousHandler}\label{wxevthandlergetprevioushandler} + +\func{wxEvtHandler*}{GetPreviousHandler}{\void} + +Gets the pointer to the previous handler in the chain. + +\wxheading{See also} + +\helpref{wxEvtHandler::GetPreviousHandler}{wxevthandlergetprevioushandler},\rtfsp +\helpref{wxEvtHandler::SetPreviousHandler}{wxevthandlersetprevioushandler},\rtfsp +\helpref{wxEvtHandler::SetPreviousHandler}{wxevthandlersetprevioushandler},\rtfsp +\helpref{wxWindow::PushEventHandler}{wxwindowpusheventhandler},\rtfsp +\helpref{wxWindow::PopEventHandler}{wxwindowpopeventhandler} + +\membersection{wxEvtHandler::ProcessEvent}\label{wxevthandlerprocessevent} + +\func{virtual bool}{ProcessEvent}{\param{wxEvent\& }{event}} + +Processes an event, searching event tables and calling zero or more suitable event handler function(s). + +\wxheading{Parameters} + +\docparam{event}{Event to process.} + +\wxheading{Return value} + +TRUE if a suitable event handler function was found and executed, and the function did not +call \helpref{wxEvent::Skip}{wxeventskip}. + +\wxheading{Remarks} + +Normally, your application would not call this function: it is called in the wxWindows +implementation to dispatch incoming user interface events to the framework (and application). + +However, you might need to call it if implementing new functionality (such as a new control) where +you define new event types, as opposed to allowing the user to override virtual functions. + +An instance where you might actually override the {\bf ProcessEvent} function is where you want +to direct event processing to event handlers not normally noticed by wxWindows. For example, +in the document/view architecture, documents and views are potential event handlers. +When an event reaches a frame, {\bf ProcessEvent} will need to be called on the associated +document and view in case event handler functions are associated with these objects. +The property classes library (wxProperty) also overrides {\bf ProcessEvent} for similar reasons. + +The normal order of event table searching is as follows: + +\begin{enumerate}\itemsep=0pt +\item If the object is disabled (via a call to \helpref{wxEvtHandler::SetEvtHandlerEnabled}{wxevthandlersetevthandlerenabled}) +the function skips to step (6). +\item If the object is a wxWindow, {\bf ProcessEvent} is recursively called on the window's\rtfsp +\helpref{wxValidator}{wxvalidator}. If this returns TRUE, the function exits. +\item {\bf SearchEventTable} is called for this event handler. If this fails, the base +class table is tried, and so on until no more tables exist or an appropriate function was found, +in which case the function exits. +\item The search is applied down the entire chain of event handlers (usually the chain has a length +of one). If this succeeds, the function exits. +\item If the object is a wxWindow and the event is a wxCommandEvent, {\bf ProcessEvent} is +recursively applied to the parent window's event handler. If this returns TRUE, the function exits. +\item Finally, {\bf ProcessEvent} is called on the wxApp object. +\end{enumerate} + +\wxheading{See also} + +\helpref{wxEvtHandler::SearchEventTable}{wxevthandlersearcheventtable} + +\membersection{wxEvtHandler::SearchEventTable}\label{wxevthandlersearcheventtable} + +\func{bool}{SearchEventTable}{\param{wxEventTable\& }{table}, \param{wxEvent\& }{event}} + +Searches the event table, executing an event handler function if an appropriate one +is found. + +\wxheading{Parameters} + +\docparam{table}{Event table to be searched.} + +\docparam{event}{Event to be matched against an event table entry.} + +\wxheading{Return value} + +TRUE if a suitable event handler function was found and executed, and the function did not +call \helpref{wxEvent::Skip}{wxeventskip}. + +\wxheading{Remarks} + +This function looks through the object's event table and tries to find an entry +that will match the event. + +An entry will match if: + +\begin{enumerate}\itemsep=0pt +\item The event type matches, and +\item the identifier or identifier range matches, or the event table entry's identifier is zero. +\end{enumerate} + +If a suitable function is called but calls \helpref{wxEvent::Skip}{wxeventskip}, this function will +fail, and searching will continue. + +\wxheading{See also} + +\helpref{wxEvtHandler::ProcessEvent}{wxevthandlerprocessevent} + +\membersection{wxEvtHandler::SetClientData}\label{wxevthandlersetclientdata} + +\func{void}{SetClientData}{\param{char* }{data}} + +Sets user-supplied client data. + +\wxheading{Parameters} + +\docparam{data}{Data to be associated with the event handler.} + +\wxheading{Remarks} + +Normally, any extra data the programmer wishes +to associate with the object should be made available by deriving a new class +with new data members. + +TODO: make this void*, char* only in compatibility mode. + +\wxheading{See also} + +\helpref{wxEvtHandler::GetClientData}{wxevthandlergetclientdata} + +\membersection{wxEvtHandler::SetEvtHandlerEnabled}\label{wxevthandlersetevthandlerenabled} + +\func{void}{SetEvtHandlerEnabled}{\param{bool }{enabled}} + +Enables or disables the event handler. + +\wxheading{Parameters} + +\docparam{enabled}{TRUE if the event handler is to be enabled, FALSE if it is to be disabled.} + +\wxheading{Remarks} + +You can use this function to avoid having to remove the event handler from the chain, for example +when implementing a dialog editor and changing from edit to test mode. + +\wxheading{See also} + +\helpref{wxEvtHandler::GetEvtHandlerEnabled}{wxevthandlergetevthandlerenabled} + +\membersection{wxEvtHandler::SetNextHandler}\label{wxevthandlersetnexthandler} + +\func{void}{SetNextHandler}{\param{wxEvtHandler* }{handler}} + +Sets the pointer to the next handler. + +\wxheading{Parameters} + +\docparam{handler}{Event handler to be set as the next handler.} + +\wxheading{See also} + +\helpref{wxEvtHandler::GetNextHandler}{wxevthandlergetnexthandler},\rtfsp +\helpref{wxEvtHandler::SetPreviousHandler}{wxevthandlersetprevioushandler},\rtfsp +\helpref{wxEvtHandler::GetPreviousHandler}{wxevthandlergetprevioushandler},\rtfsp +\helpref{wxWindow::PushEventHandler}{wxwindowpusheventhandler},\rtfsp +\helpref{wxWindow::PopEventHandler}{wxwindowpopeventhandler} + +\membersection{wxEvtHandler::SetPreviousHandler}\label{wxevthandlersetprevioushandler} + +\func{void}{SetPreviousHandler}{\param{wxEvtHandler* }{handler}} + +Sets the pointer to the previous handler. + +\wxheading{Parameters} + +\docparam{handler}{Event handler to be set as the previous handler.} + +\wxheading{See also} + +\helpref{wxEvtHandler::GetPreviousHandler}{wxevthandlergetprevioushandler},\rtfsp +\helpref{wxEvtHandler::SetNextHandler}{wxevthandlersetnexthandler},\rtfsp +\helpref{wxEvtHandler::GetNextHandler}{wxevthandlergetnexthandler},\rtfsp +\helpref{wxWindow::PushEventHandler}{wxwindowpusheventhandler},\rtfsp +\helpref{wxWindow::PopEventHandler}{wxwindowpopeventhandler} + + diff --git a/docs/latex/wx/expr.tex b/docs/latex/wx/expr.tex new file mode 100644 index 0000000000..b6fd3020a4 --- /dev/null +++ b/docs/latex/wx/expr.tex @@ -0,0 +1,505 @@ +\section{\class{wxExpr}}\label{wxexpr} + +The {\bf wxExpr} class is the building brick of expressions similar to Prolog +clauses, or objects. It can represent an expression of type long integer, float, string, word, +or list, and lists can be nested. + +\wxheading{Derived from} + +None + +\wxheading{See also} + +\helpref{wxExpr overview}{exproverview}, \helpref{wxExprDatabase}{wxexprdatabase} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxExpr::wxExpr}\label{wxexprconstr} + +\func{}{wxExpr}{\param{const wxString\&}{functor}} + +Construct a new clause with this form, supplying the functor name. A clause is an object +that will appear in the data file, with a list of attribute/value pairs. + +\func{}{wxExpr}{\param{wxExprType}{ type}, \param{const wxString\&}{ wordOrString = ``"}} + +Construct a new empty list, or a word (will be output with no quotes), or a string, depending on the +value of {\it type}. + +{\it type} can be {\bf wxExprList}, {\bf wxExprWord}, or {\bf wxExprString}. If {\it type} is wxExprList, +the value of {\it wordOrString} will be ignored. + +\func{}{wxExpr}{\param{long}{ value}} + +Construct an integer expression. + +\func{}{wxExpr}{\param{float}{ value}} + +Construct a floating point expression. + +\func{}{wxExpr}{\param{wxList* }{value}} + +Construct a list expression. The list's nodes' data should +themselves be {\bf wxExpr}s. + +The current version of this library no longer uses the {\bf wxList} +internally, so this constructor turns the list into its internal +format (assuming a non-nested list) and then deletes the supplied +list. + +\membersection{wxExpr::\destruct{wxExpr}} + +\func{}{\destruct{wxExpr}}{\void} + +Destructor. + +\membersection{wxExpr::AddAttributeValue}\label{wxexpraddattributevalue} + +Use these on clauses ONLY. Note that the functions for adding strings +and words must be differentiated by function name which is why +they are missing from this group (see \helpref{wxExpr::AddAttributeValueString}{wxexpraddattributevaluestring} and +\rtfsp\helpref{wxExpr::AddAttributeValueWord}{wxexpraddattributevalueword}). + +\func{void}{AddAttributeValue}{\param{const wxString\&}{ attribute}, \param{float }{value}} + +Adds an attribute and floating point value pair to the clause. + +\func{void}{AddAttributeValue}{\param{const wxString\&}{ attribute}, \param{long }{value}} + +Adds an attribute and long integer value pair to the clause. + +\func{void}{AddAttributeValue}{\param{const wxString\&}{ attribute}, \param{wxList* }{value}} + +Adds an attribute and list value pair to the clause, converting the list into +internal form and then deleting {\bf value}. Note that the list should not contain +nested lists (except if in internal {\bf wxExpr} form.) + +\func{void}{AddAttributeValue}{\param{const wxString\&}{ attribute}, \param{wxExpr* }{value}} + +Adds an attribute and wxExpr value pair to the clause. Do not delete\rtfsp +{\it value} once this function has been called. + +\membersection{wxExpr::AddAttributeValueString}\label{wxexpraddattributevaluestring} + +\func{void}{AddAttributeValueString}{\param{const wxString\&}{ attribute}, \param{const wxString\&}{ value}} + +Adds an attribute and string value pair to the clause. + +\membersection{wxExpr::AddAttributeValueStringList}\label{wxexpraddattributevaluestringlist} + +\func{void}{AddAttributeValueStringList}{\param{const wxString\&}{ attribute}, \param{wxList* }{value}} + +Adds an attribute and string list value pair to the clause. + +Note that the list passed to this function is a list of strings, NOT a list +of {\bf wxExpr}s; it gets turned into a list of {\bf wxExpr}s +automatically. This is a convenience function, since lists of strings +are often manipulated in C++. + +\membersection{wxExpr::AddAttributeValueWord}\label{wxexpraddattributevalueword} + +\func{void}{AddAttributeValueWord}{\param{const wxString\&}{ attribute}, \param{const wxString\&}{ value}} + +Adds an attribute and word value pair to the clause. + +\membersection{wxExpr::Append}\label{wxexprappend} + +\func{void}{Append}{\param{wxExpr*}{ value}} + +Append the {\bf value} to the end of the list. `this' must be a list. + +\membersection{wxExpr::Arg}\label{wxexprarg} + +\constfunc{wxExpr* }{Arg}{\param{wxExprType}{ type}, \param{int}{ n}} + +Get nth arg of the given clause (starting from 1). NULL is returned if +the expression is not a clause, or {\it n} is invalid, or the given type +does not match the actual type. See also \helpref{wxExpr::Nth}{wxexprnth}. + +\membersection{wxExpr::Insert}\label{wxexprinsert} + +\func{void}{Insert}{\param{wxExpr* }{value}} + +Insert the {\bf value} at the start of the list. `this' must be a list. + +\membersection{wxExpr::GetAttributeValue}\label{wxexprgetattributevalue} + +These functions are the easiest way to retrieve attribute values, by +passing a pointer to variable. If the attribute is present, the +variable will be filled with the appropriate value. If not, the +existing value is left alone. This style of retrieving attributes +makes it easy to set variables to default values before calling these +functions; no code is necessary to check whether the attribute is +present or not. + +\constfunc{bool}{GetAttributeValue}{\param{const wxString\&}{ attribute}, \param{wxString\&}{ value}} + +Retrieve a string (or word) value. + +\constfunc{bool}{GetAttributeValue}{\param{const wxString\&}{ attribute}, \param{float\& }{value}} + +Retrieve a floating point value. + +\constfunc{bool}{GetAttributeValue}{\param{const wxString\&}{ attribute}, \param{int\& }{value}} + +Retrieve an integer value. + +\constfunc{bool}{GetAttributeValue}{\param{const wxString\&}{ attribute}, \param{long\& }{value}} + +Retrieve a long integer value. + +\constfunc{bool}{GetAttributeValue}{\param{const wxString\&}{ attribute}, \param{wxExpr**}{ value}} + +Retrieve a wxExpr pointer. + +\membersection{wxExpr::GetAttributeValueStringList}\label{wxexprgetattributestringlist} + +\constfunc{void}{GetAttributeValueStringList}{\param{const wxString\&}{attribute}, \param{wxList* }{value}} + +Use this on clauses ONLY. See above for comments on this style of +attribute value retrieval. This function expects to receive a pointer to +a new list (created by the calling application); it will append strings +to the list if the attribute is present in the clause. + +\membersection{wxExpr::AttributeValue}\label{wxexprattributevalue} + +\constfunc{wxExpr*}{AttributeValue}{\param{const wxString\&}{ word}} + +Use this on clauses ONLY. Searches the clause for an attribute +matching {\it word}, and returns the value associated with it. + +\membersection{wxExpr::Copy}\label{wxexprcopy} + +\constfunc{wxExpr*}{Copy}{\void} + +Recursively copies the expression, allocating new storage space. + +\membersection{wxExpr::DeleteAttributeValue}\label{wxexprdeletattributevalue} + +\func{void}{DeleteAttributeValue}{\param{const wxString\&}{ attribute}} + +Use this on clauses only. Deletes the attribute and its value (if any) from the +clause. + +\membersection{wxExpr::Functor}\label{wxexprfunctor} + +\constfunc{wxString}{Functor}{\void} + +Use this on clauses only. Returns the clause's functor (object name). + +\membersection{wxExpr::GetClientData}\label{wxexprgetclientdata} + +\constfunc{wxObject*}{GetClientData}{\void} + +Retrieve arbitrary data stored with this clause. This can be useful when +reading in data for storing a pointer to the C++ object, so when another +clause makes a reference to this clause, its C++ object can be retrieved. +See \helpref{wxExpr::SetClientData}{wxexprsetclientdata}. + +\membersection{wxExpr::GetFirst}\label{wxexprgetfirst} + +\constfunc{wxExpr*}{GetFirst}{\void} + +If this is a list expression (or clause), gets the first element in the list. + +See also \helpref{wxExpr::GetLast}{wxexprgetlast}, \helpref{wxExpr::GetNext}{wxexprgetnext}, \helpref{wxExpr::Nth}{wxexprnth}. + +\membersection{wxExpr::GetLast}\label{wxexprgetlast} + +\constfunc{wxExpr*}{GetLast}{\void} + +If this is a list expression (or clause), gets the last element in the list. + +See also \helpref{wxExpr::GetFirst}{wxexprgetfirst}, \helpref{wxExpr::GetNext}{wxexprgetnext}, \helpref{wxExpr::Nth}{wxexprnth}. + +\membersection{wxExpr::GetNext}\label{wxexprgetnext} + +\constfunc{wxExpr*}{GetNext}{\void} + +If this is a node in a list (any wxExpr may be a node in a list), gets the +next element in the list. + +See also \helpref{wxExpr::GetFirst}{wxexprgetfirst}, \helpref{wxExpr::GetLast}{wxexprgetlast}, \helpref{wxExpr::Nth}{wxexprnth}. + +\membersection{wxExpr::IntegerValue}\label{wxexprintegervalue} + +\constfunc{long}{IntegerValue}{\void} + +Returns the integer value of the expression. + +\membersection{wxExpr::Nth}\label{wxexprnth} + +\constfunc{wxExpr*}{Nth}{\param{int}{ n}} + +Get nth arg of the given list expression (starting from 0). NULL is returned if +the expression is not a list expression, or {\it n} is invalid. See also \helpref{wxExpr::Arg}{wxexprarg}. + +Normally, you would use attribute-value pairs to add and retrieve data +from objects (clauses) in a data file. However, if the data gets complex, +you may need to store attribute values as lists, and pick them apart +yourself. + +\membersection{wxExpr::RealValue}\label{wxexprrealvalue} + +\constfunc{float}{RealValue}{\void} + +Returns the floating point value of the expression. + +\membersection{wxExpr::SetClientData}\label{wxexprsetclientdata} + +\func{void}{SetClientData}{\param{wxObject *}{data}} + +Associate arbitrary data with this clause. This can be useful when +reading in data for storing a pointer to the C++ object, so when another +clause makes a reference to this clause, its C++ object can be retrieved. +See \helpref{wxExpr::GetClientData}{wxexprgetclientdata}. + +\membersection{wxExpr::StringValue}\label{wxexprstringvalue} + +\constfunc{wxString}{StringValue}{\void} + +Returns the string value of the expression. + +\membersection{wxExpr::Type}\label{wxexprtype} + +\constfunc{wxExprType}{Type}{\void} + +Returns the type of the expression. {\bf wxExprType} is defined as follows: + +\begin{verbatim} +typedef enum { + wxExprNull, + wxExprInteger, + wxExprReal, + wxExprWord, + wxExprString, + wxExprList +} wxExprType; +\end{verbatim} + +\membersection{wxExpr::WordValue}\label{wxexprwordvalue} + +\constfunc{wxString}{WordValue}{\void} + +Returns the word value of the expression. + +\membersection{wxExpr::WriteLispExpr}\label{wxexprwritelistexpr} + +\func{void}{WriteLispExpr}{\param{ostream\&}{ stream}} + +Writes the expression or clause to the given stream in LISP format. +Not normally needed, since the whole {\bf wxExprDatabase} will usually +be written at once. Lists are enclosed in parentheses will no commas. + +\membersection{wxExpr::WritePrologClause}\label{wxexprwriteprologclause} + +\func{void}{WritePrologClause}{\param{ostream\&}{ stream}} + +Writes the clause to the given stream in Prolog format. Not normally needed, since +the whole {\bf wxExprDatabase} will usually be written at once. The format is: +functor, open parenthesis, list of comma-separated expressions, close parenthesis, +full stop. + +\membersection{wxExpr::WriteExpr}\label{wxexprwriteexpr} + +\func{void}{WriteExpr}{\param{ostream\&}{ stream}} + +Writes the expression (not clause) to the given stream in Prolog +format. Not normally needed, since the whole {\bf wxExprDatabase} will +usually be written at once. Lists are written in square bracketed, +comma-delimited format. + +\membersection{Functions and macros} + +Below are miscellaneous functions and macros associated with wxExpr objects. + +\func{bool}{wxExprIsFunctor}{\param{wxExpr *}{expr}, \param{const wxString\&}{ functor}} + +Checks that the functor of {\it expr} is {\it functor}. + +\func{void}{wxExprCleanUp}{\void} + +Cleans up the wxExpr system (YACC/LEX buffers) to avoid memory-checking warnings as the program exits. + +\begin{verbatim} +#define wxMakeInteger(x) (new wxExpr((long)x)) +#define wxMakeReal(x) (new wxExpr((float)x)) +#define wxMakeString(x) (new wxExpr(PrologString, x)) +#define wxMakeWord(x) (new wxExpr(PrologWord, x)) +#define wxMake(x) (new wxExpr(x)) +\end{verbatim} + +Macros to help make wxExpr objects. + +\section{\class{wxExprDatabase}}\label{wxexprdatabase} + +The {\bf wxExprDatabase} class represents a database, or list, +of Prolog-like expressions. Instances of this class are used for reading, +writing and creating data files. + +\wxheading{Derived from} + +\helpref{wxList}{wxlist}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxExpr overview}{exproverview}, \helpref{wxExpr}{wxexpr} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxExprDatabase::wxExprDatabase}\label{wxexprdatabaseconstr} + +\func{void}{wxExprDatabase}{\param{proioErrorHandler}{ handler = 0}} + +Construct a new, unhashed database, with an optional error handler. The +error handler must be a function returning a bool and taking an integer and a string +argument. When an error occurs when reading or writing a database, this function is +called. The error is given as the first argument (currently one of WXEXPR\_ERROR\_GENERAL, +WXEXPR\_ERROR\_SYNTAX) and an error message is given as the second argument. If FALSE +is returned by the error handler, processing of the wxExpr operation stops. + +Another way of handling errors is simply to call \helpref{wxExprDatabase::GetErrorCount}{wxexprdatabasegeterrorcount} after +the operation, to check whether errors have occurred, instead of installing an error handler. +If the error count is more than zero, \helpref{wxExprDatabase::Write}{wxexprdatabasewrite} and +\rtfsp\helpref{wxExprDatabase::Read}{wxexprdatabaseread} will return FALSE to +the application. + +For example: + +\begin{verbatim} +bool myErrorHandler(int err, chat *msg) +{ + if (err == WXEXPR_ERROR_SYNTAX) + { + wxMessageBox(msg, "Syntax error"); + } + return FALSE; +} + +wxExprDatabase database(myErrorHandler); +\end{verbatim} + + +\func{}{wxExprDatabase}{\param{wxExprType}{ type}, \param{const wxString\&}{attribute}, +\rtfsp\param{int}{ size = 500}, \param{proioErrorHandler}{ handler = 0}} + +Construct a new database hashed on a combination of the clause functor and +a named attribute (often an integer identification). + +See above for an explanation of the error handler. + +\membersection{wxExprDatabase::\destruct{wxExprDatabase}} + +\func{}{\destruct{wxExprDatabase}}{\void} + +Delete the database and contents. + +\membersection{wxExprDatabase::Append}\label{wxexprdatabaseappend} + +\func{void}{Append}{\param{wxExpr* }{clause}} + +Append a clause to the end of the database. If the database is hashing, +the functor and a user-specified attribute will be hashed upon, giving the +option of random access in addition to linear traversal of the database. + +\membersection{wxExprDatabase::BeginFind}\label{wxexprdatabasebeginfind} + +\func{void}{BeginFind}{\void} + +Reset the current position to the start of the database. Subsequent +\rtfsp\helpref{wxExprDatabase::FindClause}{wxexprdatabasefindclause} calls will move the pointer. + +\membersection{wxExprDatabase::ClearDatabase}\label{wxexprdatabasecleardatabase} + +\func{void}{ClearDatabase}{\void} + +Clears the contents of the database. + +\membersection{wxExprDatabase::FindClause}\label{wxexprdatabasefindclause} + +Various ways of retrieving clauses from the database. A return +value of NULL indicates no (more) clauses matching the given criteria. +Calling the functions repeatedly retrieves more matching clauses, if any. + +\func{wxExpr* }{FindClause}{\param{long}{ id}} + +Find a clause based on the special ``id'' attribute. + +\func{wxExpr* }{FindClause}{\param{const wxString\&}{ attribute}, \param{const wxString\&}{ value}} + +Find a clause which has the given attribute set to the given string or word value. + +\func{wxExpr*}{FindClause}{\param{const wxString\&}{ attribute}, \param{long}{ value}} + +Find a clause which has the given attribute set to the given integer value. + +\func{wxExpr*}{FindClause}{\param{const wxString\&}{ attribute}, \param{float}{ value}} + +Find a clause which has the given attribute set to the given floating point value. + +\membersection{wxExprDatabase::FindClauseByFunctor}\label{wxexprdatabasefindclausebyfunctor} + +\func{wxExpr*}{FindClauseByFunctor}{\param{const wxString\&}{ functor}} + +Find the next clause with the specified functor. + +\membersection{wxExprDatabase::GetErrorCount}\label{wxexprdatabasegeterrorcount} + +\constfunc{int}{GetErrorCount}{\void} + +Returns the number of errors encountered during the last read or write operation. + +\membersection{wxExprDatabase::HashFind}\label{wxexprdatabasehashfind} + +\constfunc{wxExpr*}{HashFind}{\param{const wxString\&}{ functor}, \param{long}{ value}} + +Finds the clause with the given functor and with the attribute specified +in the database constructor having the given integer value. + +For example, + +\begin{verbatim} +// Hash on a combination of functor and integer "id" attribute when reading in +wxExprDatabase db(wxExprInteger, "id"); + +// Read it in +db.ReadProlog("data"); + +// Retrieve a clause with specified functor and id +wxExpr *clause = db.HashFind("node", 24); +\end{verbatim} + +This would retrieve a clause which is written: {\tt node(id = 24, ..., )}. + +\func{wxExpr*}{HashFind}{\param{const wxString\&}{ functor}, \param{const wxString\&}{ value}} + +Finds the clause with the given functor and with the attribute specified +in the database constructor having the given string value. + +\membersection{wxExprDatabase::Read}\label{wxexprdatabaseread} + +\func{bool}{Read}{\param{const wxString\&}{ filename}} + +Reads in the given file, returning TRUE if successful. + +\membersection{wxExprDatabase::ReadFromString}\label{wxexprdatabasereadfromstring} + +\func{bool}{ReadFromString}{\param{const wxString\&}{ buffer}} + +Reads a Prolog database from the given string buffer, returning TRUE if +successful. + +\membersection{wxExprDatabase::WriteLisp}\label{wxexprdatabasewritelisp} + +\func{bool}{WriteLisp}{\param{ostream\& }{stream}} + +Writes the database as a LISP-format file. + +\membersection{wxExprDatabase::Write}\label{wxexprdatabasewrite} + +\func{bool}{Write}{\param{ostream\& }{stream}} + +Writes the database as a Prolog-format file. + + diff --git a/docs/latex/wx/file.tex b/docs/latex/wx/file.tex new file mode 100644 index 0000000000..fec5c31d87 --- /dev/null +++ b/docs/latex/wx/file.tex @@ -0,0 +1,169 @@ +\section{\class{wxFile}}\label{wxfile} + +A wxFile performs raw file I/O. Note that wxFile::Flush is not implemented on some Windows compilers +due to a missing fsync function, which reduces the usefulness of this class. + +\wxheading{Derived from} + +None. + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxFile::wxFile}\label{wxfileconstr} + +\func{}{wxFile}{\void} + +Default constructor. + +\func{}{wxFile}{\param{const char*}{ filename}, \param{wxFile::OpenMode}{ mode = wxFile::read}} + +Opens a file with the given mode. + +\func{}{wxFile}{\param{int}{ fd}} + +Opens a file with the given file descriptor, which has already been opened. + +\wxheading{Parameters} + +\docparam{filename}{The filename.} + +\docparam{mode}{The mode in which to open the file. May be one of {\bf wxFile::read}, {\bf wxFile::write} and {\bf wxFile::read\_write}.} + +\docparam{fd}{An existing file descriptor.} + +\membersection{wxFile::\destruct{wxFile}} + +\func{}{\destruct{wxFile}}{\void} + +Destructor. This is not virtual, for efficiency. + +\membersection{wxFile::Attach}\label{wxfileattach} + +\func{void}{Attach}{\param{int}{ fd}} + +Attaches an existing file descriptor to the wxFile object. + +\membersection{wxFile::Close}\label{wxfileclose} + +\func{void}{Close}{\void} + +Closes the file. + +\membersection{wxFile::Create}\label{wxfilecreate} + +\func{bool}{Create}{\param{const char*}{ filename}, \param{bool}{ overwrite = FALSE}} + +Creates a file for writing. If the file already exists, setting {\bf overwrite} to TRUE +will ensure it is overwritten. + +\membersection{wxFile::Eof}\label{wxfileeof} + +\constfunc{bool}{Eof}{\void} + +Returns TRUE if the end of the file has been reached. + +\membersection{wxFile::Exists}\label{wxfileexists} + +\func{static bool}{Exists}{\param{const char*}{ filename}} + +Returns TRUE if the file exists. + +\membersection{wxFile::Flush}\label{wxfileflush} + +\func{bool}{Flush}{\void} + +Flushes the file descriptor. Not implemented for some Windows compilers. + +\membersection{wxFile::IsOpened}\label{wxfileisopened} + +\constfunc{bool}{IsOpened}{\void} + +Returns TRUE if the file has been opened. + +\membersection{wxFile::Length}\label{wxfilelength} + +\constfunc{off\_t}{Length}{\void} + +Returns the length of the file. + +\membersection{wxFile::Open}\label{wxfileopen} + +\func{bool}{Open}{\param{const char*}{ filename}, \param{wxFile::OpenMode}{ mode = wxFile::read}} + +Opens the file, returning TRUE if successful. + +\wxheading{Parameters} + +\docparam{filename}{The filename.} + +\docparam{mode}{The mode in which to open the file. May be one of {\bf wxFile::read}, {\bf wxFile::write} and {\bf wxFile::read\_write}.} + +\membersection{wxFile::Read}\label{wxfileread} + +\func{off\_t}{Read}{\param{void*}{ buffer}, \param{off\_t}{ count}} + +Reads the specified number of bytes into a buffer, returning the actual number read. + +\wxheading{Parameters} + +\docparam{buffer}{A buffer to receive the data.} + +\docparam{count}{The number of bytes to read.} + +\wxheading{Return value} + +The number of bytes read, or the symbol {\bf ofsInvalid} (-1) if there was an error. + +\membersection{wxFile::Seek}\label{wxfileseek} + +\func{off\_t}{Seek}{\param{off\_t }{ofs}, \param{wxFile::SeekMode }{mode = wxFile::FromStart}} + +Seeks to the specified position. + +\wxheading{Parameters} + +\docparam{ofs}{Offset to seek to.} + +\docparam{mode}{One of {\bf wxFile::FromStart}, {\bf wxFile::FromEnd}, {\bf wxFile::FromCurrent}.} + +\wxheading{Return value} + +The actual offset position achieved, or ofsInvalid on failure. + +\membersection{wxFile::SeekEnd}\label{wxfileseekend} + +\func{off\_t}{SeekEnd}{\param{off\_t }{ofs = 0}} + +Moves the file pointer to the specified number of bytes before the end of the file. + +\wxheading{Parameters} + +\docparam{ofs}{Number of bytes before the end of the file.} + +\wxheading{Return value} + +The actual offset position achieved, or ofsInvalid on failure. + +\membersection{wxFile::Tell}\label{wxfiletell} + +\constfunc{off\_t}{Tell}{\void} + +Returns the current position. + +\membersection{wxFile::Write}\label{wxfilewrite} + +\func{bool}{Write}{\param{const void*}{ buffer}, \param{off\_t}{ count}} + +Writes the specified number of bytes from a buffer. + +\wxheading{Parameters} + +\docparam{buffer}{A buffer containing the data.} + +\docparam{count}{The number of bytes to write.} + +\wxheading{Return value} + +TRUE if the operation was successful. + + diff --git a/docs/latex/wx/filedlg.tex b/docs/latex/wx/filedlg.tex new file mode 100644 index 0000000000..69bf775c08 --- /dev/null +++ b/docs/latex/wx/filedlg.tex @@ -0,0 +1,179 @@ +\section{\class{wxFileDialog}}\label{wxfiledialog} + +This class represents the file chooser dialog. + +\wxheading{Derived from} + +\helpref{wxDialog}{wxdialog}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxFileDialog overview}{wxfiledialogoverview}, \helpref{wxFileSelector}{wxfileselector} +%\rtfsp\helpref{wxFileSelectorEx}{wxfileselectorex} +%\helpref{wxLoadFileSelector}{wxloadfileselector},\rtfsp +%\helpref{wxSaveFileSelector}{wxsavefileselector} + +\wxheading{Remarks} + +Pops up a file selector box. In Windows, this is the common file selector +dialog. In X, this is a file selector box with somewhat less functionality. +The path and filename are distinct elements of a full file pathname. +If path is ``", the current directory will be used. If filename is ``", +no default filename will be supplied. The wildcard determines what files +are displayed in the file selector, and file extension supplies a type +extension for the required filename. Flags may be a combination of wxOPEN, +wxSAVE, wxOVERWRITE\_PROMPT, wxHIDE\_READONLY, or 0. They are only significant +at present in Windows. + +Both the X and Windows versions implement a wildcard filter. Typing a +filename containing wildcards (*, ?) in the filename text item, and +clicking on Ok, will result in only those files matching the pattern being +displayed. In the X version, supplying no default name will result in the +wildcard filter being inserted in the filename text item; the filter is +ignored if a default name is supplied. + +Under Windows (only), the wildcard may be a specification for multiple +types of file with a description for each, such as: + +\begin{verbatim} + "BMP files (*.bmp) | *.bmp | GIF files (*.gif) | *.gif" +\end{verbatim} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxFileDialog::wxFileDialog}\label{wxfiledialogconstr} + +\func{}{wxFileDialog}{\param{wxWindow* }{parent}, \param{const wxString\& }{message = "Choose a file"},\rtfsp +\param{const wxString\& }{defaultDir = ""}, \param{const wxString\& }{defaultFile = ``"},\rtfsp +\param{const wxString\& }{wildcard = ``*.*"}, \param{long }{style = 0}, \param{const wxPoint\& }{pos = wxDefaultPosition}} + +Constructor. Use \helpref{wxFileDialog::ShowModal}{wxfiledialogshowmodal} to show the dialog. + +\wxheading{Parameters} + +\docparam{parent}{Parent window.} + +\docparam{message}{Message to show on the dialog.} + +\docparam{defaultDir}{The default directory, or the empty string.} + +\docparam{defaultFile}{The default filename, or the empty string.} + +\docparam{wildcard}{A wildcard, such as ``*.*".} + +\docparam{style}{A dialog style. A bitlist of: + +\twocolwidtha{5cm} +\begin{twocollist} +\twocolitem{{\bf wxOPEN}}{This is an open dialog (Windows only).} +\twocolitem{{\bf wxSAVE}}{This is a save dialog (Windows only).} +\twocolitem{{\bf wxHIDE\_READONLY}}{Hide read-only files (Windows only).} +\twocolitem{{\bf wxOVERWRITE\_PROMPT}}{Prompt for a conformation if a file will be overridden (Windows only).} +\end{twocollist}% +} + +\docparam{pos}{Dialog position. Not implemented.} + +\membersection{wxFileDialog::\destruct{wxFileDialog}} + +\func{}{\destruct{wxFileDialog}}{\void} + +Destructor. + +\membersection{wxFileDialog::GetDirectory}\label{wxfiledialoggetdirectory} + +\constfunc{wxString}{GetDirectory}{\void} + +Returns the default directory. + +\membersection{wxFileDialog::GetFilename}\label{wxfiledialoggetfilename} + +\constfunc{wxString}{GetFilename}{\void} + +Returns the default filename. + +\membersection{wxFileDialog::GetFilterIndex}\label{wxfiledialoggetfilterindex} + +\constfunc{int}{GetFilterIndex}{\void} + +Returns the index into the list of filters supplied, optionally, in the wildcard parameter. +Before the dialog is shown, this is the index which will be used when the dialog is first displayed. +After the dialog is shown, this is the index selected by the user. + +\membersection{wxFileDialog::GetMessage}\label{wxfiledialoggetmessage} + +\constfunc{wxString}{GetMessage}{\void} + +Returns the message that will be displayed on the dialog. + +\membersection{wxFileDialog::GetPath}\label{wxfiledialoggetpath} + +\constfunc{wxString}{GetPath}{\void} + +Returns the full path (directory and filename) of the selected file. + +\membersection{wxFileDialog::GetStyle}\label{wxfiledialoggetstyle} + +\constfunc{long}{GetStyle}{\void} + +Returns the dialog style. + +\membersection{wxFileDialog::GetWildcard}\label{wxfiledialoggetwildcard} + +\constfunc{wxString}{GetWildcard}{\void} + +Returns the file dialog wildcard. + +\membersection{wxFileDialog::SetDirectory}\label{wxfiledialogsetdirectory} + +\func{void}{SetDirectory}{\param{const wxString\& }{directory}} + +Sets the default directory. + +\membersection{wxFileDialog::SetFilename}\label{wxfiledialogsetfilename} + +\func{void}{SetFilename}{\param{const wxString\& }{setfilename}} + +Sets the default filename. + +\membersection{wxFileDialog::SetFilterIndex}\label{wxfiledialogsetfilterindex} + +\func{void}{SetFilterIndex}{\param{int }{filterIndex}} + +Sets the default filter index, starting from zero. Windows only. + +\membersection{wxFileDialog::SetMessage}\label{wxfiledialogsetmessage} + +\func{void}{SetMessage}{\param{const wxString\& }{message}} + +Sets the message that will be displayed on the dialog. + +\membersection{wxFileDialog::SetPath}\label{wxfiledialogsetpath} + +\func{void}{SetPath}{\param{const wxString\& }{path}} + +Sets the path (the combined directory and filename that will be returned when the dialog is dismissed). + +\membersection{wxFileDialog::SetStyle}\label{wxfiledialogsetstyle} + +\func{void}{SetStyle}{\param{long }{style}} + +Sets the dialog style. See \helpref{wxFileDialog::wxFileDialog}{wxfiledialogconstr} for details. + +\membersection{wxFileDialog::SetWildcard}\label{wxfiledialogsetwildcard} + +\func{void}{SetWildcard}{\param{const wxString\& }{wildCard}} + +Sets the wildcard, which in Windows can contain multiple file types. + +\membersection{wxFileDialog::ShowModal}\label{wxfiledialogshowmodal} + +\func{int}{ShowModal}{\void} + +Shows the dialog, returning wxID\_OK if the user pressed OK, and wxOK\_CANCEL +otherwise. + + diff --git a/docs/latex/wx/filehist.tex b/docs/latex/wx/filehist.tex new file mode 100644 index 0000000000..e136f1c6d8 --- /dev/null +++ b/docs/latex/wx/filehist.tex @@ -0,0 +1,93 @@ +\section{\class{wxFileHistory}}\label{wxfilehistory} + +The wxFileHistory encapsulates a user interface convenience, the +list of most recently visited files as shown on a menu (usually the File menu). + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\overview{wxFileHistory overview}{wxfilehistoryoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxFileHistory::m\_fileHistory} + +\member{char**}{m\_fileHistory} + +A character array of strings corresponding to the most recently opened +files. + +\membersection{wxFileHistory::m\_fileHistoryN} + +\member{int}{m\_fileHistoryN} + +The number of files stored in the history array. + +\membersection{wxFileHistory::m\_fileMaxFiles} + +\member{int}{m\_fileMaxFiles} + +The maximum number of files to be stored and displayed on the menu. + +\membersection{wxFileHistory::m\_fileMenu} + +\member{wxMenu*}{m\_fileMenu} + +The file menu used to display the file history list (if enabled). + +\membersection{wxFileHistory::wxFileHistory} + +\func{}{wxFileHistory}{\param{int}{ maxFiles = 9}} + +Constructor. Pass the maximum number of files that should be stored and displayed. + +\membersection{wxFileHistory::\destruct{wxFileHistory}} + +\func{}{\destruct{wxFileHistory}}{\void} + +Destructor. + +\membersection{wxFileHistory::AddFileToHistory} + +\func{void}{AddFileToHistory}{\param{const wxString\& }{filename}} + +Adds a file to the file history list, if the object has a pointer to an appropriate file menu. + +\membersection{wxFileHistory::FileHistoryLoad} + +\func{void}{FileHistoryLoad}{\param{const wxString\& }{resourceFile}, \param{const wxString\& }{sectionName}} + +Loads the file history from a resource file, using the given section. This must be called +explicitly by the application. + +\membersection{wxFileHistory::FileHistorySave} + +\func{void}{FileHistorySave}{\param{const wxString\& }{resourceFile}, \param{const wxString\& }{sectionName}} + +Saves the file history into a resource file, using the given section. This must be called +explicitly by the application. + +\membersection{wxFileHistory::FileHistoryUseMenu} + +\func{void}{FileHistoryUseMenu}{\param{wxMenu* }{menu}} + +Use this menu for appending recently-visited document filenames, for convenient +access. Calling this function with a valid menu pointer enables the history +list functionality. + +\membersection{wxFileHistory::GetMaxFiles} + +\func{int}{GetMaxFiles}{\void} + +Returns the maximum number of files that can be stored. + +\membersection{wxFileHistory::GetNoHistoryFiles} + +\func{int}{GetNoHistoryFiles}{\void} + +Returns the number of files currently stored in the file history. + + diff --git a/docs/latex/wx/focusevt.tex b/docs/latex/wx/focusevt.tex new file mode 100644 index 0000000000..e47b55d138 --- /dev/null +++ b/docs/latex/wx/focusevt.tex @@ -0,0 +1,34 @@ +\section{\class{wxFocusEvent}}\label{wxfocusevent} + +A focus event is sent when a window's focus changes. + +\wxheading{Derived from} + +\helpref{wxEvent}{wxevent}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Event table macros} + +To process a focus event, use these event handler macros to direct input to a member +function that takes a wxFocusEvent argument. + +\twocolwidtha{7cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf EVT\_SET\_FOCUS(func)}}{Process a wxEVT\_SET\_FOCUS event.} +\twocolitem{{\bf EVT\_KILL\_FOCUS(func)}}{Process a wxEVT\_KILL\_FOCUS event.} +\end{twocollist}% + +\wxheading{See also} + +\helpref{wxWindow::OnSetFocus}{wxwindowonsetfocus},\rtfsp +\helpref{wxWindow::OnKillFocus}{wxwindowonkillfocus},\rtfsp +\helpref{Event handling overview}{eventhandlingoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxFocusEvent::wxFocusEvent} + +\func{}{wxFocusEvent}{\param{WXTYPE }{eventType = 0}, \param{int }{id = 0}} + +Constructor. + diff --git a/docs/latex/wx/font.tex b/docs/latex/wx/font.tex new file mode 100644 index 0000000000..ae7e3233aa --- /dev/null +++ b/docs/latex/wx/font.tex @@ -0,0 +1,277 @@ +\section{\class{wxFont}}\label{wxfont} + +A font is an object which determines the appearance of text. Fonts are +used for drawing text to a device context, and setting the appearance of +a window's text. + +\wxheading{Derived from} + +\helpref{wxGDIObject}{wxgdiobject}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxFont overview}{wxfontoverview}, \helpref{wxDC::SetFont}{wxdcsetfont},\rtfsp +\helpref{wxDC::DrawText}{wxdcdrawtext}, \helpref{wxDC::GetTextExtent}{wxdcgettextextent},\rtfsp +\helpref{wxFontDialog}{wxfontdialog} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxFont::wxFont}\label{wxfontconstr} + +\func{}{wxFont}{\void} + +Default constructor. + +\func{}{wxFont}{\param{const int}{ pointSize}, \param{const int}{ family}, \param{const int}{ style}, \param{const int}{ weight}, + \param{const bool}{ underline = FALSE}, \param{const wxString\& }{faceName = ""}} + +Creates a font object. + +\wxheading{Parameters} + +\docparam{pointSize}{Size in points.} + +\docparam{family}{Font family, a generic way of referring to fonts without specifying actual facename. One of: + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf wxDEFAULT}}{Chooses a default font.} +\twocolitem{{\bf wxDECORATIVE}}{A decorative font.} +\twocolitem{{\bf wxROMAN}}{A formal, serif font.} +\twocolitem{{\bf wxSCRIPT}}{A handwriting font.} +\twocolitem{{\bf wxSWISS}}{A sans-serif font.} +\twocolitem{{\bf wxMODERN}}{A fixed pitch font.} +\end{twocollist}} + +\docparam{style}{One of {\bf wxNORMAL}, {\bf wxSLANT} and {\bf wxITALIC}.} + +\docparam{weight}{One of {\bf wxNORMAL}, {\bf wxLIGHT} and {\bf wxBOLD}.} + +\docparam{underline}{The value can be TRUE or FALSE. At present this has an effect on Windows only.} + +\docparam{faceName}{An optional string specifying the actual typeface to be used. If the empty string, +a default typeface will chosen based on the family.} + +\wxheading{Remarks} + +If the desired font does not exist, the closest match will be chosen. +Under Windows, only scaleable TrueType fonts are used. + +Underlining only works under Windows at present. + +See also \helpref{wxDC::SetFont}{wxdcsetfont}, \helpref{wxDC::DrawText}{wxdcdrawtext} +and \helpref{wxDC::GetTextExtent}{wxdcgettextextent}. + +\membersection{wxFont::\destruct{wxFont}} + +\func{}{\destruct{wxFont}}{\void} + +Destructor. + +\wxheading{Remarks} + +The destructor may not delete the underlying font object of the native windowing +system, since wxBrush uses a reference counting system for efficiency. + +Although all remaining fonts are deleted when the application exits, +the application should try to clean up all fonts itself. This is because +wxWindows cannot know if a pointer to the font object is stored in an +application data structure, and there is a risk of double deletion. + +\membersection{wxFont::GetFaceName}\label{wxfontgetfacename} + +\constfunc{wxString}{GetFaceName}{\void} + +Returns the typeface name associated with the font, or the empty string if there is no +typeface information. + +\wxheading{See also} + +\helpref{wxFont::SetFaceName}{wxfontsetfacename} + +\membersection{wxFont::GetFamily}\label{wxfontgetfamily} + +\constfunc{int}{GetFamily}{\void} + +Gets the font family. See \helpref{wxFont::wxFont}{wxfontconstr} for a list of valid +family identifiers. + +\wxheading{See also} + +\helpref{wxFont::SetFamily}{wxfontsetfamily} + +\membersection{wxFont::GetFontId}\label{wxfontgetfontid} + +\constfunc{int}{GetFontId}{\void} + +Returns the font id, if the portable font system is in operation. See \helpref{Font overview}{wxfontoverview} for +further details. + +\membersection{wxFont::GetPointSize}\label{wxfontgetpointsize} + +\constfunc{int}{GetPointSize}{\void} + +Gets the point size. + +\wxheading{See also} + +\helpref{wxFont::SetPointSize}{wxfontsetpointsize} + +\membersection{wxFont::GetStyle}\label{wxfontgetstyle} + +\constfunc{int}{GetStyle}{\void} + +Gets the font style. See \helpref{wxFont::wxFont}{wxfontconstr} for a list of valid +styles. + +\wxheading{See also} + +\helpref{wxFont::SetStyle}{wxfontsetstyle} + +\membersection{wxFont::GetUnderlined}\label{wxfontgetunderlined} + +\constfunc{bool}{GetUnderlined}{\void} + +Returns TRUE if the font is underlined, FALSE otherwise. + +\wxheading{See also} + +\helpref{wxFont::SetUnderlined}{wxfontsetunderlined} + +\membersection{wxFont::GetWeight}\label{wxfontgetweight} + +\constfunc{int}{GetWeight}{\void} + +Gets the font weight. See \helpref{wxFont::wxFont}{wxfontconstr} for a list of valid +weight identifiers. + +\wxheading{See also} + +\helpref{wxFont::SetWeight}{wxfontsetweight} + +\membersection{wxFont::SetFaceName}\label{wxfontsetfacename} + +\func{void}{SetFaceName}{\param{const wxString\& }{faceName}} + +Sets the facename for the font. + +\wxheading{Parameters} + +\docparam{faceName}{A valid facename, which should be on the end-user's system.} + +\wxheading{Remarks} + +To avoid portability problems, don't rely on a specific face, but specify the font family +instead or as well. A suitable font will be found on the end-user's system. If both the +family and the facename are specified, wxWindows will first search for the specific face, +and then for a font belonging to the same family. + +\wxheading{See also} + +\helpref{wxFont::GetFaceName}{wxfontgetfacename}, \helpref{wxFont::SetFamily}{wxfontsetfamily} + +\membersection{wxFont::SetFamily}\label{wxfontsetfamily} + +\func{void}{SetFamily}{\param{const int}{ family}} + +Sets the font family. + +\wxheading{Parameters} + +\docparam{family}{One of: + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf wxDEFAULT}}{Chooses a default font.} +\twocolitem{{\bf wxDECORATIVE}}{A decorative font.} +\twocolitem{{\bf wxROMAN}}{A formal, serif font.} +\twocolitem{{\bf wxSCRIPT}}{A handwriting font.} +\twocolitem{{\bf wxSWISS}}{A sans-serif font.} +\twocolitem{{\bf wxMODERN}}{A fixed pitch font.} +\end{twocollist}} + +\wxheading{See also} + +\helpref{wxFont::GetFamily}{wxfontgetfamily}, \helpref{wxFont::SetFaceName}{wxfontsetfacename} + +\membersection{wxFont::SetPointSize}\label{wxfontsetpointsize} + +\func{void}{SetPointSize}{\param{const int}{ pointSize}} + +Sets the point size. + +\wxheading{Parameters} + +\docparam{pointSize}{Size in points.} + +\wxheading{See also} + +\helpref{wxFont::GetPointSize}{wxfontgetpointsize} + +\membersection{wxFont::SetStyle}\label{wxfontsetstyle} + +\func{void}{SetStyle}{\param{const int}{ style}} + +Sets the font style. + +\wxheading{Parameters} + +\docparam{style}{One of {\bf wxNORMAL}, {\bf wxSLANT} and {\bf wxITALIC}.} + +\wxheading{See also} + +\helpref{wxFont::GetStyle}{wxfontgetstyle} + +\membersection{wxFont::SetUnderlined}\label{wxfontsetunderlined} + +\func{void}{SetUnderlined}{\param{const bool}{ underlined}} + +Sets underlining. + +\wxheading{Parameters} + +\docparam{underlining}{TRUE to underline, FALSE otherwise.} + +\wxheading{See also} + +\helpref{wxFont::GetUnderlined}{wxfontgetunderlined} + +\membersection{wxFont::SetWeight}\label{wxfontsetweight} + +\func{void}{SetWeight}{\param{const int}{ weight}} + +Sets the font weight. + +\wxheading{Parameters} + +\docparam{weight}{One of {\bf wxNORMAL}, {\bf wxLIGHT} and {\bf wxBOLD}.} + +\wxheading{See also} + +\helpref{wxFont::GetWeight}{wxfontgetweight} + +\membersection{wxFont::operator $=$}\label{wxfontassignment} + +\func{wxFont\&}{operator $=$}{\param{const wxFont\& }{font}} + +Assignment operator, using reference counting. Returns a reference +to `this'. + +\membersection{wxFont::operator $==$}\label{wxfontequals} + +\func{bool}{operator $==$}{\param{const wxFont\& }{font}} + +Equality operator. Two fonts are equal if they contain pointers +to the same underlying font data. It does not compare each attribute, +so two indefontdently-created fonts using the same parameters will +fail the test. + +\membersection{wxFont::operator $!=$}\label{wxfontnotequals} + +\func{bool}{operator $!=$}{\param{const wxFont\& }{font}} + +Inequality operator. Two fonts are not equal if they contain pointers +to different underlying font data. It does not compare each attribute. + + diff --git a/docs/latex/wx/fontdlg.tex b/docs/latex/wx/fontdlg.tex new file mode 100644 index 0000000000..d88e5c6ee9 --- /dev/null +++ b/docs/latex/wx/fontdlg.tex @@ -0,0 +1,187 @@ +\section{\class{wxFontData}}\label{wxfontdata} + +\overview{wxFontDialog overview}{wxfontdialogoverview} + +This class holds a variety of information related to font dialogs. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{Overview}{wxfontdialogoverview}, \helpref{wxFontDialog}{wxfontdialog} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxFontData::wxFontData} + +\func{}{wxFontData}{\void} + +Constructor. Initializes {\it fontColour} to black, {\it showHelp} to black, +\rtfsp{\it allowSymbols} to TRUE, {\it enableEffects} to TRUE, +\rtfsp{\it minSize} to 0 and {\it maxSize} to 0. + +\membersection{wxFontData::\destruct{wxFontData}} + +\func{}{\destruct{wxFontData}}{\void} + +Destructor. + +\membersection{wxFontData::EnableEffects} + +\func{void}{EnableEffects}{\param{bool}{ enable}} + +Enables or disables `effects' under MS Windows only. This refers to the +controls for manipulating colour, strikeout and underline properties. + +The default value is TRUE. + +\membersection{wxFontData::GetAllowSymbols} + +\func{bool}{GetAllowSymbols}{\void} + +Under MS Windows, returns a flag determining whether symbol fonts can be selected. Has no +effect on other platforms. + +The default value is TRUE. + +\membersection{wxFontData::GetColour} + +\func{wxColour\&}{GetColour}{\void} + +Gets the colour associated with the font dialog. + +The default value is black. + +\membersection{wxFontData::GetChosenFont} + +\func{wxFont}{GetChosenFont}{\void} + +Gets the font chosen by the user. If the user pressed OK (wxFontDialog::Show returned TRUE), this returns +a new font which is now `owned' by the application, and should be deleted +if not required. If the user pressed Cancel (wxFontDialog::Show returned FALSE) or +the colour dialog has not been invoked yet, this will return NULL. + +\membersection{wxFontData::GetEnableEffects} + +\func{bool}{GetEnableEffects}{\void} + +Determines whether `effects' are enabled under Windows. This refers to the +controls for manipulating colour, strikeout and underline properties. + +The default value is TRUE. + +\membersection{wxFontData::GetInitialFont} + +\func{wxFont}{GetInitialFont}{\void} + +Gets the font that will be initially used by the font dialog. This should have +previously been set by the application. + +\membersection{wxFontData::GetShowHelp} + +\func{bool}{GetShowHelp}{\void} + +Returns TRUE if the Help button will be shown (Windows only). + +The default value is FALSE. + +\membersection{wxFontData::SetAllowSymbols} + +\func{void}{SetAllowSymbols}{\param{bool}{ allowSymbols}} + +Under MS Windows, determines whether symbol fonts can be selected. Has no +effect on other platforms. + +The default value is TRUE. + +\membersection{wxFontData::SetChosenFont} + +\func{void}{SetChosenFont}{\param{const wxFont\& }{font}} + +Sets the font that will be returned to the user (for internal use only). + +\membersection{wxFontData::SetColour} + +\func{void}{SetColour}{\param{const wxColour\&}{ colour}} + +Sets the colour that will be used for the font foreground colour. + +The default colour is black. + +\membersection{wxFontData::SetInitialFont} + +\func{void}{SetInitialFont}{\param{const wxFont\&}{font}} + +Sets the font that will be initially used by the font dialog. + +\membersection{wxFontData::SetRange} + +\func{void}{SetRange}{\param{int}{ min}, \param{int}{ max}} + +Sets the valid range for the font point size (Windows only). + +The default is 0, 0 (unrestricted range). + +\membersection{wxFontData::SetShowHelp} + +\func{void}{SetShowHelp}{\param{bool}{ showHelp}} + +Determines whether the Help button will be displayed in the font dialog (Windows only). + +The default value is FALSE. + +\membersection{wxFontData::operator $=$} + +\func{void}{operator $=$}{\param{const wxFontData\&}{ data}} + +Assingment operator for the font data. + +\section{\class{wxFontDialog}}\label{wxfontdialog} + +This class represents the font chooser dialog. + +\wxheading{Derived from} + +\helpref{wxDialog}{wxdialog}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{Overview}{wxfontdialogoverview}, \helpref{wxFontData}{wxfontdata} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxFontDialog::wxFontDialog} + +\func{}{wxFontDialog}{\param{wxWindow* }{parent}, \param{wxFontData* }{data = NULL}} + +Constructor. Pass a parent window, and optionally a pointer to a block of font +data, which will be copied to the font dialog's font data. + +\membersection{wxFontDialog::\destruct{wxFontDialog}} + +\func{}{\destruct{wxFontDialog}}{\void} + +Destructor. + +\membersection{wxFontDialog::GetFontData} + +\func{wxFontData\&}{GetFontData}{\void} + +Returns the \helpref{font data}{wxfontdata} associated with the font dialog. + +\membersection{wxFontDialog::ShowModal} + +\func{int}{ShowModal}{\void} + +Shows the dialog, returning wxID\_OK if the user pressed Ok, and wxID\_CANCEL +otherwise. + +If the user cancels the dialog (ShowModal returns wxID\_CANCEL), no font will be +created. If the user presses OK (ShowModal returns wxID\_OK), a new wxFont will +be created and stored in the font dialog's wxFontData structure. + diff --git a/docs/latex/wx/fontlist.tex b/docs/latex/wx/fontlist.tex new file mode 100644 index 0000000000..b6ee9b108b --- /dev/null +++ b/docs/latex/wx/fontlist.tex @@ -0,0 +1,48 @@ +\section{\class{wxFontList}}\label{wxfontlist} + +A font list is a list containing all fonts which have been created. There +is only one instance of this class: {\bf wxTheFontList}. Use this object to search +for a previously created font of the desired type and create it if not already found. +In some windowing systems, the font may be a scarce resource, so it is best to +reuse old resources if possible. When an application finishes, all fonts will be +deleted and their resources freed, eliminating the possibility of `memory leaks'. + +\wxheading{Derived from} + +\helpref{wxList}{wxlist}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxFont}{wxfont} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxFontList::wxFontList} + +\func{}{wxFontList}{\void} + +Constructor. The application should not construct its own font list: +use the object pointer {\bf wxTheFontList}. + +\membersection{wxFontList::AddFont} + +\func{void}{AddFont}{\param{wxFont *}{font}} + +Used by wxWindows to add a font to the list, called in the font constructor. + +\membersection{wxFontList::FindOrCreateFont}\label{findorcreatefont} + +\func{wxFont *}{FindOrCreateFont}{\param{int}{ point\_size}, \param{int}{ family}, \param{int}{ style}, \param{int}{ weight}, \param{bool}{ underline = FALSE}, + \param{const wxString\& }{facename = NULL}} + +Finds a font of the given specification, or creates one and adds it to the list. See the \helpref{wxFont constructor}{wxfontconstr} for +details of the arguments. + +\membersection{wxFontList::RemoveFont} + +\func{void}{RemoveFont}{\param{wxFont *}{font}} + +Used by wxWindows to remove a font from the list. + + diff --git a/docs/latex/wx/forward.gif b/docs/latex/wx/forward.gif new file mode 100644 index 0000000000000000000000000000000000000000..9c81e8c92fed7fe851ce02e7854dc26a58eae9b2 GIT binary patch literal 164 zcmV;V09*e@Nk%v~VI=?<0Pz3-zrVld=jU&4Z(9HWEC2ui03`qz0007gjE||y?Z1Qp zwAzdF6*A}#V%!v#-{_g@)>Q-cu3}3Ku`2^Nfa3dZ+VyHW%gtsZ`jV7k@%j8Ij}~W) zc{NUP6)X3OWa^|{8nl?rh|gZ1@{(qofnsWu+nmFHSnaq>lB41zSVC9`a)_v*xHx0L S5h*!IS!o$ynW>ps0028gDN7ju literal 0 HcmV?d00001 diff --git a/docs/latex/wx/frame.tex b/docs/latex/wx/frame.tex new file mode 100644 index 0000000000..61cad1ee36 --- /dev/null +++ b/docs/latex/wx/frame.tex @@ -0,0 +1,445 @@ +\section{\class{wxFrame}}\label{wxframe} + +A frame is a window whose size and position can (usually) be changed by the user. It usually has +thick borders and a title bar, and can optionally contain a menu bar, toolbar and +status bar. A frame can contain any window that is not a frame or dialog. + +\wxheading{Derived from} + +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{wxICONIZE}}{Display the frame iconized (minimized) (Windows only).} +\twocolitem{\windowstyle{wxCAPTION}}{Puts a caption on the frame.} +\twocolitem{\windowstyle{wxDEFAULT\_FRAME\_STYLE}}{Defined as {\bf wxMINIMIZE\_BOX \pipe wxMAXIMIZE\_BOX \pipe wxTHICK\_FRAME \pipe wxSYSTEM\_MENU \pipe wxCAPTION}.} +\twocolitem{\windowstyle{wxMINIMIZE}}{Identical to {\bf wxICONIZE}.} +\twocolitem{\windowstyle{wxMINIMIZE\_BOX}}{Displays a minimize box on the frame (Windows and Motif only).} +\twocolitem{\windowstyle{wxMAXIMIZE}}{Displays the frame maximized (Windows only).} +\twocolitem{\windowstyle{wxMAXIMIZE\_BOX}}{Displays a maximize box on the frame (Windows and Motif only).} +\twocolitem{\windowstyle{wxSTAY\_ON\_TOP}}{Stay on top of other windows (Windows only).} +\twocolitem{\windowstyle{wxSYSTEM\_MENU}}{Displays a system menu (Windows and Motif only).} +\twocolitem{\windowstyle{wxTHICK\_FRAME}}{Displays a thick frame around the window (Windows and Motif only).} +\twocolitem{\windowstyle{wxRESIZE\_BORDER}}{Displays a resizeable border around the window (Motif only).} +\end{twocollist} + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{Remarks} + +An application should normally define an \helpref{OnCloseWindow}{wxwindowonclosewindow} handler for the +frame to respond to system close events, for example so that related data and subwindows can be cleaned up. + +\wxheading{See also} + +\helpref{wxMDIParentFrame}{wxmdiparentframe}, \helpref{wxMDIChildFrame}{wxmdichildframe},\rtfsp +\helpref{wxMiniFrame}{wxminiframe}, \helpref{wxDialog}{wxdialog} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxFrame::wxFrame}\label{wxframeconstr} + +\func{}{wxFrame}{\void} + +Default constructor. + +\func{}{wxFrame}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id},\rtfsp +\param{const wxString\& }{title}, \param{const wxPoint\&}{ pos = wxDefaultPosition},\rtfsp +\param{const wxSize\&}{ size = wxDefaultSize}, \param{long}{ style = wxDEFAULT\_FRAME\_STYLE},\rtfsp +\param{const wxString\& }{name = ``frame"}} + +Constructor, creating the window. + +\wxheading{Parameters} + +\docparam{parent}{The window parent. This may be NULL. If it is non-NULL, the frame will +always be displayed on top of the parent window on Windows.} + +\docparam{id}{The window identifier. It may take a value of -1 to indicate a default value.} + +\docparam{title}{The caption to be displayed on the frame's title bar.} + +\docparam{pos}{The window position. A value of (-1, -1) indicates a default position, chosen by +either the windowing system or wxWindows, depending on platform.} + +\docparam{size}{The window size. A value of (-1, -1) indicates a default size, chosen by +either the windowing system or wxWindows, depending on platform.} + +\docparam{style}{The window style. See \helpref{wxFrame}{wxframe}.} + +\docparam{name}{The name of the window. This parameter is used to associate a name with the item, +allowing the application user to set Motif resource values for +individual windows.} + +\wxheading{Remarks} + +For Motif, MWM (the Motif Window Manager) should be running for any window styles to work +(otherwise all styles take effect). + +\wxheading{See also} + +\helpref{wxFrame::Create}{wxframecreate} + +\membersection{wxFrame::\destruct{wxFrame}} + +\func{void}{\destruct{wxFrame}}{\void} + +Destructor. Destroys all child windows and menu bar if present. + +\membersection{wxFrame::Centre}\label{wxframecentre} + +\func{void}{Centre}{\param{const int}{ direction = wxBOTH}} + +Centres the frame on the display. + +\wxheading{Parameters} + +\docparam{direction}{The parameter may be {\tt wxHORIZONTAL}, {\tt wxVERTICAL} or {\tt wxBOTH}.} + +\membersection{wxFrame::Command}\label{wxframecommand} + +\func{void}{Command}{\param{int }{id}} + +Simulate a menu command. + +\wxheading{Parameters} + +\docparam{id}{The identifier for a menu item.} + +\membersection{wxFrame::Create}\label{wxframecreate} + +\func{bool}{Create}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id},\rtfsp +\param{const wxString\& }{title}, \param{const wxPoint\&}{ pos = wxDefaultPosition},\rtfsp +\param{const wxSize\&}{ size = wxDefaultSize}, \param{long}{ style = wxDEFAULT\_FRAME\_STYLE},\rtfsp +\param{const wxString\& }{name = ``frame"}} + +Used in two-step frame construction. See \helpref{wxFrame::wxFrame}{wxframeconstr}\rtfsp +for further details. + +\membersection{wxFrame::CreateStatusBar}\label{wxframecreatestatusbar} + +\func{virtual bool}{CreateStatusBar}{\param{const int}{ number = 1}} + +Creates a status bar at the bottom of the frame. + +\wxheading{Parameters} + +\docparam{number}{The number of fields to create. Specify a +value greater than 1 to create a multi-field status bar.} + +\wxheading{Return value} + +TRUE if the status bar was created successfully. + +\wxheading{Remarks} + +The width of the status bar is the whole width of the frame (adjusted automatically when +resizing), and the height and text size are chosen by the host windowing system. + +By default, the status bar is an instance of wxStatusBar. To use a different class, +override \helpref{wxFrame::OnCreateStatusBar}{wxframeoncreatestatusbar}. + +Note that you can put controls and other windows on the status bar if you wish. + +\wxheading{See also} + +\helpref{wxFrame::SetStatusText}{wxframesetstatustext},\rtfsp +\helpref{wxFrame::OnCreateStatusBar}{wxframeoncreatestatusbar},\rtfsp +\helpref{wxFrame::GetStatusBar}{wxframegetstatusbar} + +\membersection{wxFrame::GetMenuBar}\label{wxframegetmenubar} + +\constfunc{wxMenuBar*}{GetMenuBar}{\void} + +Returns a pointer to the menubar currently associated with the frame (if any). + +\wxheading{See also} + +\helpref{wxFrame::SetMenuBar}{wxframesetmenubar}, \helpref{wxMenuBar}{wxmenubar}, \helpref{wxMenu}{wxmenu} + +\membersection{wxFrame::GetStatusBar}\label{wxframegetstatusbar} + +\func{wxStatusBar*}{GetStatusBar}{\void} + +Returns a pointer to the status bar currently associated with the frame (if any). + +\wxheading{See also} + +\helpref{wxFrame::CreateStatusBar}{wxframecreatestatusbar}, \helpref{wxStatusBar}{wxstatusbar} + +\membersection{wxFrame::GetTitle}\label{wxframegettitle} + +\func{wxString\&}{GetTitle}{\void} + +Gets a temporary pointer to the frame title. See +\helpref{wxFrame::SetTitle}{wxframesettitle}. + +\membersection{wxFrame::Iconize}\label{wxframeiconize} + +\func{void}{Iconize}{\param{const bool}{ iconize}} + +Iconizes or restores the frame. + +\wxheading{Parameters} + +\docparam{izonize}{If TRUE, iconizes the frame; if FALSE, shows and restores it.} + +\wxheading{See also} + +\helpref{wxFrame::IsIconized}{wxframeisiconized}, \helpref{wxFrame::Maximize}{wxframemaximize}. + +\membersection{wxFrame::IsIconized}\label{wxframeisiconized} + +\func{bool}{IsIconized}{\void} + +Returns TRUE if the frame is iconized. + +\membersection{wxFrame::LoadAccelerators}\label{wxframeloadaccelerators} + +\func{void}{LoadAccelerators}{\param{const wxString\& }{table}} + +Loads a keyboard accelerator table for this frame. + +\wxheading{Parameters} + +\docparam{table}{Accelerator table to load.} + +\wxheading{Return value} + +TRUE if the operation was successful, FALSE otherwise. + +\wxheading{Remarks} + +Accelerator tables map keystrokes onto control and menu identifiers, so the +programmer does not have to explicitly program this correspondence. + +See the hello demo ({\tt hello.cpp} and {\tt hello.rc}) for +an example of accelerator usage. This is a fragment from {\tt hello.rc}: + +\begin{verbatim} +#define HELLO_LOAD_FILE 111 + +menus_accel ACCELERATORS +{ + +"^L", HELLO_LOAD_FILE + +} +\end{verbatim} + +This function only works under Windows. + +% huh? If you call LoadAccelerators, you need to override wxFrame::OnActivate to do nothing. + +\membersection{wxFrame::Maximize}\label{wxframemaximize} + +\func{void}{Maximize}{\param{const bool }{maximize}} + +Maximizes or restores the frame. + +\wxheading{Parameters} + +\docparam{maximize}{If TRUE, maximizes the frame, otherwise it restores it}. + +\wxheading{Remarks} + +This function only works under Windows. + +\wxheading{See also} + +\helpref{wxFrame::Iconize}{wxframeiconize} + +\membersection{wxFrame::OnActivate} + +\func{void}{OnActivate}{\param{bool}{ active}} + +Called when a window is activated or deactivated (MS Windows +only). If the window is being activated, {\it active} is TRUE, else it +is FALSE. + +If you call wxFrame::LoadAccelerators, you need to override this function e.g. + +\begin{verbatim} + void OnActivate(bool) {}; +\end{verbatim} + +\membersection{wxFrame::OnCreateStatusBar}\label{wxframeoncreatestatusbar} + +\func{virtual wxStatusBar*}{OnCreateStatusBar}{\param{const int }{number}} + +Virtual function called when a status bar is requested by \helpref{wxFrame::CreateStatusBar}{wxframecreatestatusbar}. + +\wxheading{Parameters} + +\docparam{number}{The number of fields to create.} + +\wxheading{Return value} + +A status bar object. + +\wxheading{Remarks} + +An application can override this function to return a different kind of status bar. The default +implementation returns an instance of \helpref{wxStatusBar}{wxstatusbar}. + +\wxheading{See also} + +\helpref{wxFrame::CreateStatusBar}{wxframecreatestatusbar}, \helpref{wxStatusBar}{wxstatusbar}. + +\membersection{wxFrame::OnMenuCommand}\label{wxframeonmenucommand} + +\func{void}{OnMenuCommand}{\param{wxCommandEvent\&}{ event}} + +See \helpref{wxWindow::OnMenuCommand}{wxwindowonmenucommand}. + +\membersection{wxFrame::OnMenuHighlight}\label{wxframeonmenuhighlight} + +\func{void}{OnMenuHighlight}{\param{wxMenuEvent\&}{ event}} + +See \helpref{wxWindow::OnMenuHighlight}{wxwindowonmenuhighlight}. + +\membersection{wxFrame::OnSize}\label{wxframeonsize} + +\func{void}{OnSize}{\param{wxSizeEvent\& }{event}} + +See \helpref{wxWindow::OnSize}{wxwindowonsize}. + +The default {\bf wxFrame::OnSize} implementation looks for a single subwindow, +and if one is found, resizes it to fit +inside the frame. Override this member if more complex behaviour +is required (for example, if there are several subwindows). + +\membersection{wxFrame::SetIcon}\label{wxframeseticon} + +\func{void}{SetIcon}{\param{const wxIcon\& }{icon}} + +Sets the icon for this frame. + +\wxheading{Parameters} + +\docparam{icon}{The icon to associate with this frame.} + +\wxheading{Remarks} + +The frame takes a `copy' of {\it icon}, but since it uses reference +counting, the copy is very quick. It is safe to delete {\it icon} after +calling this function. + +Under Windows, instead of using {\bf SetIcon}, you can add the +following lines to your MS Windows resource file: + +\begin{verbatim} +wxSTD_MDIPARENTFRAME ICON icon1.ico +wxSTD_MDICHILDFRAME ICON icon2.ico +wxSTD_FRAME ICON icon3.ico +\end{verbatim} + +where icon1.ico will be used for the MDI parent frame, icon2.ico +will be used for MDI child frames, and icon3.ico will be used for +non-MDI frames. + +If these icons are not supplied, and {\bf SetIcon} is not called either, +then the following defaults apply if you have included wx.rc. + +\begin{verbatim} +wxDEFAULT_FRAME ICON std.ico +wxDEFAULT_MDIPARENTFRAME ICON mdi.ico +wxDEFAULT_MDICHILDFRAME ICON child.ico +\end{verbatim} + +You can replace std.ico, mdi.ico and child.ico with your own defaults +for all your wxWindows application. Currently they show the same icon. + +{\it Note:} a wxWindows application linked with subsystem equal to 4.0 +(i.e. marked as a Windows 95 application) doesn't respond properly +to wxFrame::SetIcon. To work around this until a solution is found, +mark your program as a 3.5 application. This will also ensure +that Windows provides small icons for the application automatically. + +See also \helpref{wxIcon}{wxicon}. + +\membersection{wxFrame::SetMenuBar}\label{wxframesetmenubar} + +\func{void}{SetMenuBar}{\param{wxMenuBar* }{menuBar}} + +Tells the frame to show the given menu bar. + +\wxheading{Parameters} + +\docparam{menuBar}{The menu bar to associate with the frame.} + +\wxheading{Remarks} + +If the frame is destroyed, the +menu bar and its menus will be destroyed also, so do not delete the menu +bar explicitly (except by resetting the frame's menu bar to another +frame or NULL). + +Under Windows, a call to \helpref{wxFrame::OnSize}{wxframeonsize} is generated, so be sure to initialize +data members properly before calling {\bf SetMenuBar}. + +Note that it is not possible to call this function twice for the same frame object. + +\wxheading{See also} + +\helpref{wxFrame::GetMenuBar}{wxframegetmenubar}, \helpref{wxMenuBar}{wxmenubar}, \helpref{wxMenu}{wxmenu}. + +\membersection{wxFrame::SetStatusText}\label{wxframesetstatustext} + +\func{virtual void}{SetStatusText}{\param{const wxString\& }{ text}, \param{const int}{ number = 0}} + +Sets the status bar text and redraws the status bar. + +\wxheading{Parameters} + +\docparam{text}{The text for the status field.} + +\docparam{number}{The status field (starting from zero).} + +\wxheading{Remarks} + +Use an empty string to clear the status bar. + +\wxheading{See also} + +\helpref{wxFrame::CreateStatusBar}{wxframecreatestatusbar}, \helpref{wxStatusBar}{wxstatusbar} + +\membersection{wxFrame::SetStatusWidths}\label{wxframesetstatuswidths} + +\func{virtual void}{SetStatusWidths}{\param{const int}{ n}, \param{const int *}{widths}} + +Sets the widths of the fields in the status bar. + +\wxheading{Parameters} + +\wxheading{n}{The number of fields in the status bar. It must be the +same used in \helpref{CreateStatusBar}{wxframecreatestatusbar}.} + +\docparam{widths}{Must contain an array of {\it n} integers, each of which is a status field width +in pixels. A value of -1 indicates that the field is variable width; at least one +field must be -1. You should delete this array after calling {\bf SetStatusWidths}.} + +\wxheading{Remarks} + +The widths of the variable fields are calculated from the total width of all fields, +minus the sum of widths of the non-variable fields, divided by the number of +variable fields. + +\membersection{wxFrame::SetTitle}\label{wxframesettitle} + +\func{virtual void}{SetTitle}{\param{const wxString\& }{ title}} + +Sets the frame title. + +\wxheading{Parameters} + +\docparam{title}{The frame title.} + +\wxheading{See also} + +\helpref{wxFrame::GetTitle}{wxframegettitle} + diff --git a/docs/latex/wx/function.tex b/docs/latex/wx/function.tex new file mode 100644 index 0000000000..0a2fee8aa4 --- /dev/null +++ b/docs/latex/wx/function.tex @@ -0,0 +1,1665 @@ +\chapter{Functions}\label{functions} +\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% +\setfooter{\thepage}{}{}{}{}{\thepage} + +The functions defined in wxWindows are described here. + +\section{File functions}\label{filefunctions} + +See also \helpref{wxPathList}{wxpathlist}. + +\membersection{::wxDirExists} + +\func{bool}{wxDirExists}{\param{const wxString\& }{dirname}} + +Returns TRUE if the directory exists. + +\membersection{::wxDos2UnixFilename} + +\func{void}{Dos2UnixFilename}{\param{const wxString\& }{s}} + +Converts a DOS to a UNIX filename by replacing backslashes with forward +slashes. + +\membersection{::wxFileExists} + +\func{bool}{wxFileExists}{\param{const wxString\& }{filename}} + +Returns TRUE if the file exists. + +\membersection{::wxFileNameFromPath} + +\func{wxString}{wxFileNameFromPath}{\param{const wxString\& }{path}} + +Returns a temporary pointer to the filename for a full path. +Copy this pointer for long-term use. + +\membersection{::wxFindFirstFile}\label{wxfindfirstfile} + +\func{wxString}{wxFindFirstFile}{\param{const wxString\& }{spec}, \param{int}{ flags = 0}} + +This function does directory searching; returns the first file +that matches the path {\it spec}, or NULL. Use \helpref{wxFindNextFile}{wxfindnextfile} to +get the next matching file. + +{\it spec} may contain wildcards. + +{\it flags} is reserved for future use. + +The returned filename is a pointer to static memory so should +not be freed. + +For example: + +\begin{verbatim} + wxString f = wxFindFirstFile("/home/project/*.*"); + while (f) + { + ... + f = wxFindNextFile(); + } +\end{verbatim} + +\membersection{::wxFindNextFile}\label{wxfindnextfile} + +\func{wxString}{wxFindFirstFile}{\void} + +Returns the next file that matches the path passed to \helpref{wxFindFirstFile}{wxfindfirstfile}. + +\membersection{::wxIsAbsolutePath} + +\func{bool}{wxIsAbsolutePath}{\param{const wxString\& }{filename}} + +Returns TRUE if the argument is an absolute filename, i.e. with a slash +or drive name at the beginning. + +\membersection{::wxPathOnly} + +\func{wxString}{wxPathOnly}{\param{const wxString\& }{path}} + +Returns a temporary pointer to the directory part of the filename. Copy this +pointer for long-term use. + +\membersection{::wxUnix2DosFilename} + +\func{void}{wxUnix2DosFilename}{\param{const wxString\& }{s}} + +Converts a UNIX to a DOS filename by replacing forward +slashes with backslashes. + +\membersection{::wxConcatFiles} + +\func{bool}{wxConcatFiles}{\param{const wxString\& }{file1}, \param{const wxString\& }{file2}, +\param{const wxString\& }{file3}} + +Concatenates {\it file1} and {\it file2} to {\it file3}, returning +TRUE if successful. + +\membersection{::wxCopyFile} + +\func{bool}{wxCopyFile}{\param{const wxString\& }{file1}, \param{const wxString\& }{file2}} + +Copies {\it file1} to {\it file2}, returning TRUE if successful. + +\membersection{::wxGetHostName}\label{wxgethostname} + +\func{bool}{wxGetHostName}{\param{const wxString\& }{buf}, \param{int }{sz}} + +Copies the current host machine's name into the supplied buffer. + +Under Windows or NT, this function first looks in the environment +variable SYSTEM\_NAME; if this is not found, the entry {\bf HostName}\rtfsp +in the {\bf wxWindows} section of the WIN.INI file is tried. + +Returns TRUE if successful, FALSE otherwise. + +\membersection{::wxGetEmailAddress}\label{wxgetemailaddress} + +\func{bool}{wxGetEmailAddress}{\param{const wxString\& }{buf}, \param{int }{sz}} + +Copies the user's email address into the supplied buffer, by +concatenating the values returned by \helpref{wxGetHostName}{wxgethostname}\rtfsp +and \helpref{wxGetUserId}{wxgetuserid}. + +Returns TRUE if successful, FALSE otherwise. + +\membersection{::wxGetUserId}\label{wxgetuserid} + +\func{bool}{wxGetUserId}{\param{const wxString\& }{buf}, \param{int }{sz}} + +Copies the current user id into the supplied buffer. + +Under Windows or NT, this function first looks in the environment +variables USER and LOGNAME; if neither of these is found, the entry {\bf UserId}\rtfsp +in the {\bf wxWindows} section of the WIN.INI file is tried. + +Returns TRUE if successful, FALSE otherwise. + +\membersection{::wxGetUserName}\label{wxgetusername} + +\func{bool}{wxGetUserName}{\param{const wxString\& }{buf}, \param{int }{sz}} + +Copies the current user name into the supplied buffer. + +Under Windows or NT, this function looks for the entry {\bf UserName}\rtfsp +in the {\bf wxWindows} section of the WIN.INI file. If PenWindows +is running, the entry {\bf Current} in the section {\bf User} of +the PENWIN.INI file is used. + +Returns TRUE if successful, FALSE otherwise. + +\membersection{::wxGetWorkingDirectory} + +\func{wxString}{wxGetWorkingDirectory}{\param{const wxString\& }{buf=NULL}, \param{int }{sz=1000}} + +Copies the current working directory into the buffer if supplied, or +copies the working directory into new storage (which you must delete yourself) +if the buffer is NULL. + +{\it sz} is the size of the buffer if supplied. + +\membersection{::wxGetTempFileName} + +\func{wxString}{wxGetTempFileName}{\param{const wxString\& }{prefix}, \param{const wxString\& }{buf=NULL}} + +Makes a temporary filename based on {\it prefix}, opens and closes the file, +and places the name in {\it buf}. If {\it buf} is NULL, new store +is allocated for the temporary filename using {\it new}. + +Under Windows, the filename will include the drive and name of the +directory allocated for temporary files (usually the contents of the +TEMP variable). Under UNIX, the {\tt /tmp} directory is used. + +It is the application's responsibility to create and delete the file. + +\membersection{::wxIsWild}\label{wxiswild} + +\func{bool}{wxIsWild}{\param{const wxString\& }{pattern}} + +Returns TRUE if the pattern contains wildcards. See \helpref{wxMatchWild}{wxmatchwild}. + +\membersection{::wxMatchWild}\label{wxmatchwild} + +\func{bool}{wxMatchWild}{\param{const wxString\& }{pattern}, \param{const wxString\& }{text}, \param{bool}{ dot\_special}} + +Returns TRUE if the {\it pattern}\/ matches the {\it text}\/; if {\it +dot\_special}\/ is TRUE, filenames beginning with a dot are not matched +with wildcard characters. See \helpref{wxIsWild}{wxiswild}. + +\membersection{::wxMkdir} + +\func{bool}{wxMkdir}{\param{const wxString\& }{dir}} + +Makes the directory {\it dir}, returning TRUE if successful. + +\membersection{::wxRemoveFile} + +\func{bool}{wxRemoveFile}{\param{const wxString\& }{file}} + +Removes {\it file}, returning TRUE if successful. + +\membersection{::wxRenameFile} + +\func{bool}{wxRenameFile}{\param{const wxString\& }{file1}, \param{const wxString\& }{file2}} + +Renames {\it file1} to {\it file2}, returning TRUE if successful. + +\membersection{::wxRmdir} + +\func{bool}{wxRmdir}{\param{const wxString\& }{dir}, \param{int}{ flags=0}} + +Removes the directory {\it dir}, returning TRUE if successful. Does not work under VMS. + +The {\it flags} parameter is reserved for future use. + +\membersection{::wxSetWorkingDirectory} + +\func{bool}{wxSetWorkingDirectory}{\param{const wxString\& }{dir}} + +Sets the current working directory, returning TRUE if the operation succeeded. +Under MS Windows, the current drive is also changed if {\it dir} contains a drive specification. + +\section{String functions} + +\membersection{::copystring} + +\func{char*}{copystring}{\param{const char* }{s}} + +Makes a copy of the string {\it s} using the C++ new operator, so it can be +deleted with the {\it delete} operator. + +\membersection{::wxStringMatch} + +\func{bool}{wxStringMatch}{\param{const wxString\& }{s1}, \param{const wxString\& }{s2},\\ + \param{bool}{ subString = TRUE}, \param{bool}{ exact = FALSE}} + +Returns TRUE if the substring {\it s1} is found within {\it s2}, +ignoring case if {\it exact} is FALSE. If {\it subString} is FALSE, +no substring matching is done. + +\membersection{::wxStringEq}\label{wxstringeq} + +\func{bool}{wxStringEq}{\param{const wxString\& }{s1}, \param{const wxString\& }{s2}} + +A macro defined as: + +\begin{verbatim} +#define wxStringEq(s1, s2) (s1 && s2 && (strcmp(s1, s2) == 0)) +\end{verbatim} + +\membersection{::wxTransferFileToStream}\label{wxtransferfiletostream} + +\func{bool}{wxTransferFileToStream}{\param{const wxString\& }{filename}, \param{ostream\& }{stream}} + +Copies the given file to {\it stream}. Useful when converting an old application to +use streams (within the document/view framework, for example). + +Use of this function requires the file wx\_doc.h to be included. + +\membersection{::wxTransferStreamToFile}\label{wxtransferstreamtofile} + +\func{bool}{wxTransferStreamToFile}{\param{istream\& }{stream} \param{const wxString\& }{filename}} + +Copies the given stream to the file {\it filename}. Useful when converting an old application to +use streams (within the document/view framework, for example). + +Use of this function requires the file wx\_doc.h to be included. + +\section{Dialog functions}\label{dialogfunctions} + +Below are a number of convenience functions for getting input from the +user or displaying messages. Note that in these functions the last three +parameters are optional. However, it is recommended to pass a parent frame +parameter, or (in MS Windows or Motif) the wrong window frame may be brought to +the front when the dialog box is popped up. + +\membersection{::wxFileSelector}\label{wxfileselector} + +\func{wxString}{wxFileSelector}{\param{const wxString\& }{message}, \param{const wxString\& }{default\_path = NULL},\\ + \param{const wxString\& }{default\_filename = NULL}, \param{const wxString\& }{default\_extension = NULL},\\ + \param{const wxString\& }{wildcard = ``*.*''}, \param{int }{flags = 0}, \param{wxWindow *}{parent = NULL},\\ + \param{int}{ x = -1}, \param{int}{ y = -1}} + +Pops up a file selector box. In Windows, this is the common file selector +dialog. In X, this is a file selector box with somewhat less functionality. +The path and filename are distinct elements of a full file pathname. +If path is NULL, the current directory will be used. If filename is NULL, +no default filename will be supplied. The wildcard determines what files +are displayed in the file selector, and file extension supplies a type +extension for the required filename. Flags may be a combination of wxOPEN, +wxSAVE, wxOVERWRITE\_PROMPT, wxHIDE\_READONLY, or 0. They are only significant +at present in Windows. + +Both the X and Windows versions implement a wildcard filter. Typing a +filename containing wildcards (*, ?) in the filename text item, and +clicking on Ok, will result in only those files matching the pattern being +displayed. In the X version, supplying no default name will result in the +wildcard filter being inserted in the filename text item; the filter is +ignored if a default name is supplied. + +Under Windows (only), the wildcard may be a specification for multiple +types of file with a description for each, such as: + +\begin{verbatim} + "BMP files (*.bmp) | *.bmp | GIF files (*.gif) | *.gif" +\end{verbatim} + +The application must check for a NULL return value (the user pressed +Cancel). For example: + +\begin{verbatim} +const wxString\& s = wxFileSelector("Choose a file to open"); +if (s) +{ + ... +} +\end{verbatim} + +Remember that the returned pointer is temporary and should be copied +if other wxWindows calls will be made before the value is to be used. + +\membersection{::wxGetTextFromUser}\label{wxgettextfromuser} + +\func{wxString}{wxGetTextFromUser}{\param{const wxString\& }{message}, \param{const wxString\& }{caption = ``Input text"},\\ + \param{const wxString\& }{default\_value = ``"}, \param{wxWindow *}{parent = NULL},\\ + \param{int}{ x = -1}, \param{int}{ y = -1}, \param{bool}{ centre = TRUE}} + +Pop up a dialog box with title set to {\it caption}, message {\it message}, and a +\rtfsp{\it default\_value}. The user may type in text and press OK to return this text, +or press Cancel to return NULL. + +If {\it centre} is TRUE, the message text (which may include new line characters) +is centred; if FALSE, the message is left-justified. + +\membersection{::wxGetMultipleChoice}\label{wxgetmultiplechoice} + +\func{int}{wxGetMultipleChoice}{\param{const wxString\& }{message}, \param{const wxString\& }{caption}, \param{int}{ n}, \param{const wxString\& }{choices[]},\\ + \param{int }{nsel}, \param{int *}{selection}, + \param{wxWindow *}{parent = NULL}, \param{int}{ x = -1}, \param{int}{ y = -1},\\ + \param{bool}{ centre = TRUE}, \param{int }{width=150}, \param{int }{height=200}} + +Pops up a dialog box containing a message, OK/Cancel buttons and a multiple-selection +listbox. The user may choose one or more item(s) and press OK or Cancel. + +The number of initially selected choices, and array of the selected indices, +are passed in; this array will contain the user selections on exit, with +the function returning the number of selections. {\it selection} must be +as big as the number of choices, in case all are selected. + +If Cancel is pressed, -1 is returned. + +{\it choices} is an array of {\it n} strings for the listbox. + +If {\it centre} is TRUE, the message text (which may include new line characters) +is centred; if FALSE, the message is left-justified. + +\membersection{::wxGetSingleChoice}\label{wxgetsinglechoice} + +\func{wxString}{wxGetSingleChoice}{\param{const wxString\& }{message}, \param{const wxString\& }{caption}, \param{int}{ n}, \param{const wxString\& }{choices[]},\\ + \param{wxWindow *}{parent = NULL}, \param{int}{ x = -1}, \param{int}{ y = -1},\\ + \param{bool}{ centre = TRUE}, \param{int }{width=150}, \param{int }{height=200}} + +Pops up a dialog box containing a message, OK/Cancel buttons and a single-selection +listbox. The user may choose an item and press OK to return a string or +Cancel to return NULL. + +{\it choices} is an array of {\it n} strings for the listbox. + +If {\it centre} is TRUE, the message text (which may include new line characters) +is centred; if FALSE, the message is left-justified. + +\membersection{::wxGetSingleChoiceIndex}\label{wxgetsinglechoiceindex} + +\func{int}{wxGetSingleChoiceIndex}{\param{const wxString\& }{message}, \param{const wxString\& }{caption}, \param{int}{ n}, \param{const wxString\& }{choices[]},\\ + \param{wxWindow *}{parent = NULL}, \param{int}{ x = -1}, \param{int}{ y = -1},\\ + \param{bool}{ centre = TRUE}, \param{int }{width=150}, \param{int }{height=200}} + +As {\bf wxGetSingleChoice} but returns the index representing the selected string. +If the user pressed cancel, -1 is returned. + +\membersection{::wxGetSingleChoiceData}\label{wxgetsinglechoicedata} + +\func{wxString}{wxGetSingleChoiceData}{\param{const wxString\& }{message}, \param{const wxString\& }{caption}, \param{int}{ n}, \param{const wxString\& }{choices[]},\\ + \param{const wxString\& }{client\_data[]}, \param{wxWindow *}{parent = NULL}, \param{int}{ x = -1},\\ + \param{int}{ y = -1}, \param{bool}{ centre = TRUE}, \param{int }{width=150}, \param{int }{height=200}} + +As {\bf wxGetSingleChoice} but takes an array of client data pointers +corresponding to the strings, and returns one of these pointers. + +\membersection{::wxMessageBox}\label{wxmessagebox} + +\func{int}{wxMessageBox}{\param{const wxString\& }{message}, \param{const wxString\& }{caption = ``Message"}, \param{int}{ style = wxOK \pipe wxCENTRE},\\ + \param{wxWindow *}{parent = NULL}, \param{int}{ x = -1}, \param{int}{ y = -1}} + +General purpose message dialog. {\it style} may be a bit list of the +following identifiers: + +\begin{twocollist}\itemsep=0pt +\twocolitem{wxYES\_NO}{Puts Yes and No buttons on the message box. May be combined with +wxCANCEL.} +\twocolitem{wxCANCEL}{Puts a Cancel button on the message box. May be combined with +wxYES\_NO or wxOK.} +\twocolitem{wxOK}{Puts an Ok button on the message box. May be combined with wxCANCEL.} +\twocolitem{wxCENTRE}{Centres the text.} +\twocolitem{wxICON\_EXCLAMATION}{Under Windows, displays an exclamation mark symbol.} +\twocolitem{wxICON\_HAND}{Under Windows, displays a hand symbol.} +\twocolitem{wxICON\_QUESTION}{Under Windows, displays a question mark symbol.} +\twocolitem{wxICON\_INFORMATION}{Under Windows, displays an information symbol.} +\end{twocollist} + +The return value is one of: wxYES, wxNO, wxCANCEL, wxOK. + +For example: + +\begin{verbatim} + ... + int answer = wxMessageBox("Quit program?", "Confirm", + wxYES_NO | wxCANCEL, main_frame); + if (answer == wxYES) + delete main_frame; + ... +\end{verbatim} + +{\it message} may contain newline characters, in which case the +message will be split into separate lines, to cater for large messages. + +Under Windows, the native MessageBox function is used unless wxCENTRE +is specified in the style, in which case a generic function is used. +This is because the native MessageBox function cannot centre text. +The symbols are not shown when the generic function is used. + +\section{GDI functions}\label{gdifunctions} + +The following are relevant to the GDI (Graphics Device Interface). + +\membersection{::wxColourDisplay} + +\func{bool}{wxColourDisplay}{\void} + +Returns TRUE if the display is colour, FALSE otherwise. + +\membersection{::wxDisplayDepth} + +\func{int}{wxDisplayDepth}{\void} + +Returns the depth of the display (a value of 1 denotes a monochrome display). + +\membersection{::wxMakeMetaFilePlaceable}\label{wxmakemetafileplaceable} + +\func{bool}{wxMakeMetaFilePlaceable}{\param{const wxString\& }{filename}, \param{int }{minX}, \param{int }{minY}, + \param{int }{maxX}, \param{int }{maxY}, \param{float }{scale=1.0}} + +Given a filename for an existing, valid metafile (as constructed using \helpref{wxMetaFileDC}{wxmetafiledc}) +makes it into a placeable metafile by prepending a header containing the given +bounding box. The bounding box may be obtained from a device context after drawing +into it, using the functions wxDC::MinX, wxDC::MinY, wxDC::MaxX and wxDC::MaxY. + +In addition to adding the placeable metafile header, this function adds +the equivalent of the following code to the start of the metafile data: + +\begin{verbatim} + SetMapMode(dc, MM_ANISOTROPIC); + SetWindowOrg(dc, minX, minY); + SetWindowExt(dc, maxX - minX, maxY - minY); +\end{verbatim} + +This simulates the MM\_TEXT mapping mode, which wxWindows assumes. + +Placeable metafiles may be imported by many Windows applications, and can be +used in RTF (Rich Text Format) files. + +{\it scale} allows the specification of scale for the metafile. + +This function is only available under Windows. + +\membersection{::wxSetCursor}\label{wxsetcursor} + +\func{void}{wxSetCursor}{\param{wxCursor *}{cursor}} + +Globally sets the cursor; only has an effect in MS Windows. +See also \helpref{wxCursor}{wxcursor}, \helpref{wxWindow::SetCursor}{wxwindowsetcursor}. + +\section{System event functions} + +The wxWindows system event implementation is incomplete and +experimental, but is intended to be a platform-independent way of +intercepting and sending events, including defining +application-specific events and handlers. + +Ultimately it is intended to be used as a way of testing wxWindows +applications using scripts, although there are currently +problems with this (especially with modal dialogs). + +All this is documented more to provoke comments and suggestions, and +jog my own memory, rather than to be used, since it has not been +tested. However {\bf wxSendEvent} will probably work if you +instantiate the event structure properly for a command event type (see +the code in {\tt wb\_panel.cpp} for \helpref{wxWindow::OnDefaultAction}{wxwindowondefaultaction}\rtfsp +which uses {\bf wxSendEvent} to send a command to the default button). + +\membersection{::wxAddPrimaryEventHandler} + +\func{bool}{wxAddPrimaryEventHandler}{\param{wxEventHandler}{ handlerFunc}} + +Add a primary event handler---the normal event handler for this +event. For built-in events, these would include moving and resizing +windows. User-defined primary events might include the code to +select an image in a diagram (which could of course be achieved by a series +of external events for mouse-clicking, but would be more difficult to specify +and less robust). + +Returns TRUE if it succeeds. + +An event handler takes a pointer to a wxEvent and a boolean flag which is +TRUE if the event was externally generated, and returns a boolean which is +TRUE if that event was handled. + +\membersection{::wxAddSecondaryEventHandler} + +\func{bool}{wxAddSecondaryEventHandler}{\param{wxEventHandler}{ handlerFunc}, \param{bool}{ pre},\\ + \param{bool}{ override}, \param{bool }{append}} + +Add a secondary event handler, pre = TRUE iff it should be called before the +event is executed. override = TRUE iff the handler is allowed to override +all subsequent events by returning TRUE. Returns TRUE if succeeds. + +A secondary event handler is an application-defined handler that may +intercept normal events, possibly overriding them. A primary event handler +provides the normal behaviour for the event. + +An event handler takes a pointer to a wxEvent and a boolean flag which is +TRUE if the event was externally generated, and returns a boolean which is +TRUE if that event was handled. + +\membersection{::wxNotifyEvent} + +\func{bool}{wxNotifyEvent}{\param{wxEvent\&}{ event}, \param{bool}{ pre}} + +Notify the system of the event you are about to execute/have just +executed. If TRUE is returned and pre = TRUE, the calling code should +not execute the event (since it has been intercepted by a handler and +vetoed). + +These events are always internal, because they're generated from within +the main application code. + +\membersection{::wxRegisterEventClass} + +\func{void}{wxRegisterEventClass}{\param{WXTYPE}{ eventClassId},\param{WXTYPE}{ superClassId},\\ + \param{wxEventConstructor}{ constructor}, \param{const wxString\& }{description}} + +Register a new event class (derived from wxEvent), giving the new +event class type, its superclass, a function for creating a new event +object of this class, and an optional description. + +\membersection{::wxRegisterEventName} + +\func{void}{wxRegisterEventName}{\param{WXTYPE}{ eventTypeId},\param{WXTYPE}{ eventClassId},\\ + \param{const wxString\& }{eventName}} + +Register the name of the event. This will allow a simple command +language where giving the event type name and some arguments will +cause a new event of class {\it eventClassId} to be created, with given +event type, and some arguments, allows an event to be dynamically +constructed and sent. + +\membersection{::wxRegisterExternalEventHandlers} + +\func{void}{wxRegisterExternalEventHandlers}{\void} + +Define this and link before wxWindows library to allow registering +events from `outside' the main application. + +\membersection{::wxRemoveSecondaryEventHandler} + +\func{bool}{wxRemoveSecondaryEventHandler}{\param{wxEventHandler}{ handlerFunc}, \param{bool}{ pre}} + +Remove a secondary event handler. Returns TRUE if it succeeds. + +\membersection{::wxSendEvent}\label{wxsendevent} + +\func{bool}{wxSendEvent}{\param{wxEvent\&}{ event}, \param{bool}{ external}} + +Send an event to the system; usually it will be external, but set +external to FALSE if calling from within the main application in +response to other events. + +Returns TRUE if the event was processed. + +\section{Printer settings}\label{printersettings} + +The following functions are used to control PostScript printing. Under +Windows, PostScript output can only be sent to a file. + +\membersection{::wxGetPrinterCommand} + +\func{wxString}{wxGetPrinterCommand}{\void} + +Gets the printer command used to print a file. The default is {\tt lpr}. + +\membersection{::wxGetPrinterFile} + +\func{wxString}{wxGetPrinterFile}{\void} + +Gets the PostScript output filename. + +\membersection{::wxGetPrinterMode} + +\func{int}{wxGetPrinterMode}{\void} + +Gets the printing mode controlling where output is sent (PS\_PREVIEW, PS\_FILE or PS\_PRINTER). +The default is PS\_PREVIEW. + +\membersection{::wxGetPrinterOptions} + +\func{wxString}{wxGetPrinterOptions}{\void} + +Gets the additional options for the print command (e.g. specific printer). The default is nothing. + +\membersection{::wxGetPrinterOrientation} + +\func{int}{wxGetPrinterOrientation}{\void} + +Gets the orientation (PS\_PORTRAIT or PS\_LANDSCAPE). The default is PS\_PORTRAIT. + +\membersection{::wxGetPrinterPreviewCommand} + +\func{wxString}{wxGetPrinterPreviewCommand}{\void} + +Gets the command used to view a PostScript file. The default depends on the platform. + +\membersection{::wxGetPrinterScaling} + +\func{void}{wxGetPrinterScaling}{\param{float *}{x}, \param{float *}{y}} + +Gets the scaling factor for PostScript output. The default is 1.0, 1.0. + +\membersection{::wxGetPrinterTranslation} + +\func{void}{wxGetPrinterTranslation}{\param{float *}{x}, \param{float *}{y}} + +Gets the translation (from the top left corner) for PostScript output. The default is 0.0, 0.0. + +\membersection{::wxSetPrinterCommand} + +\func{void}{wxSetPrinterCommand}{\param{const wxString\& }{command}} + +Sets the printer command used to print a file. The default is {\tt lpr}. + +\membersection{::wxSetPrinterFile} + +\func{void}{wxSetPrinterFile}{\param{const wxString\& }{filename}} + +Sets the PostScript output filename. + +\membersection{::wxSetPrinterMode} + +\func{void}{wxSetPrinterMode}{\param{int }{mode}} + +Sets the printing mode controlling where output is sent (PS\_PREVIEW, PS\_FILE or PS\_PRINTER). +The default is PS\_PREVIEW. + +\membersection{::wxSetPrinterOptions} + +\func{void}{wxSetPrinterOptions}{\param{const wxString\& }{options}} + +Sets the additional options for the print command (e.g. specific printer). The default is nothing. + +\membersection{::wxSetPrinterOrientation} + +\func{void}{wxSetPrinterOrientation}{\param{int}{ orientation}} + +Sets the orientation (PS\_PORTRAIT or PS\_LANDSCAPE). The default is PS\_PORTRAIT. + +\membersection{::wxSetPrinterPreviewCommand} + +\func{void}{wxSetPrinterPreviewCommand}{\param{const wxString\& }{command}} + +Sets the command used to view a PostScript file. The default depends on the platform. + +\membersection{::wxSetPrinterScaling} + +\func{void}{wxSetPrinterScaling}{\param{float }{x}, \param{float }{y}} + +Sets the scaling factor for PostScript output. The default is 1.0, 1.0. + +\membersection{::wxSetPrinterTranslation} + +\func{void}{wxSetPrinterTranslation}{\param{float }{x}, \param{float }{y}} + +Sets the translation (from the top left corner) for PostScript output. The default is 0.0, 0.0. + +\section{Clipboard functions}\label{clipsboard} + +These clipboard functions are implemented for Windows only. + +\membersection{::wxClipboardOpen} + +\func{bool}{wxClipboardOpen}{\void} + +Returns TRUE if this application has already opened the clipboard. + +\membersection{::wxCloseClipboard} + +\func{bool}{wxCloseClipboard}{\void} + +Closes the clipboard to allow other applications to use it. + +\membersection{::wxEmptyClipboard} + +\func{bool}{wxEmptyClipboard}{\void} + +Empties the clipboard. + +\membersection{::wxEnumClipboardFormats} + +\func{int}{wxEnumClipboardFormats}{\param{int}{dataFormat}} + +Enumerates the formats found in a list of available formats that belong +to the clipboard. Each call to this function specifies a known +available format; the function returns the format that appears next in +the list. + +{\it dataFormat} specifies a known format. If this parameter is zero, +the function returns the first format in the list. + +The return value specifies the next known clipboard data format if the +function is successful. It is zero if the {\it dataFormat} parameter specifies +the last format in the list of available formats, or if the clipboard +is not open. + +Before it enumerates the formats function, an application must open the clipboard by using the +wxOpenClipboard function. + +\membersection{::wxGetClipboardData} + +\func{wxObject *}{wxGetClipboardData}{\param{int}{dataFormat}} + +Gets data from the clipboard. + +{\it dataFormat} may be one of: + +\begin{itemize}\itemsep=0pt +\item wxCF\_TEXT or wxCF\_OEMTEXT: returns a pointer to new memory containing a null-terminated text string. +\item wxCF\_BITMAP: returns a new wxBitmap. +\end{itemize} + +The clipboard must have previously been opened for this call to succeed. + +\membersection{::wxGetClipboardFormatName} + +\func{bool}{wxGetClipboardFormatName}{\param{int}{dataFormat}, \param{const wxString\& }{formatName}, \param{int}{maxCount}} + +Gets the name of a registered clipboard format, and puts it into the buffer {\it formatName} which is of maximum +length {\it maxCount}. {\it dataFormat} must not specify a predefined clipboard format. + +\membersection{::wxIsClipboardFormatAvailable} + +\func{bool}{wxIsClipboardFormatAvailable}{\param{int}{dataFormat}} + +Returns TRUE if the given data format is available on the clipboard. + +\membersection{::wxOpenClipboard} + +\func{bool}{wxOpenClipboard}{\void} + +Opens the clipboard for passing data to it or getting data from it. + +\membersection{::wxRegisterClipboardFormat} + +\func{int}{wxRegisterClipboardFormat}{\param{const wxString\& }{formatName}} + +Registers the clipboard data format name and returns an identifier. + +\membersection{::wxSetClipboardData} + +\func{bool}{wxSetClipboardData}{\param{int}{dataFormat}, \param{wxObject *}{data}, \param{int}{width}, \param{int}{height}} + +Passes data to the clipboard. + +{\it dataFormat} may be one of: + +\begin{itemize}\itemsep=0pt +\item wxCF\_TEXT or wxCF\_OEMTEXT: {\it data} is a null-terminated text string. +\item wxCF\_BITMAP: {\it data} is a wxBitmap. +\item wxCF\_DIB: {\it data} is a wxBitmap. The bitmap is converted to a DIB (device independent bitmap). +\item wxCF\_METAFILE: {\it data} is a wxMetaFile. {\it width} and {\it height} are used to give recommended dimensions. +\end{itemize} + +The clipboard must have previously been opened for this call to succeed. + +\section{Miscellaneous functions}\label{miscellany} + +\membersection{::NewId} + +\func{long}{NewId}{\void} + +Generates an integer identifier unique to this run of the program. + +\membersection{::RegisterId} + +\func{void}{RegisterId}{\param{long}{ id}} + +Ensures that ids subsequently generated by {\bf NewId} do not clash with +the given {\bf id}. + +\membersection{::wxBeginBusyCursor}\label{wxbeginbusycursor} + +\func{void}{wxBeginBusyCursor}{\param{wxCursor *}{cursor = wxHOURGLASS\_CURSOR}} + +Changes the cursor to the given cursor for all windows in the application. +Use \helpref{wxEndBusyCursor}{wxendbusycursor} to revert the cursor back +to its previous state. These two calls can be nested, and a counter +ensures that only the outer calls take effect. + +See also \helpref{wxIsBusy}{wxisbusy}. + +\membersection{::wxBell} + +\func{void}{wxBell}{\void} + +Ring the system bell. + +\membersection{::wxCleanUp}\label{wxcleanup} + +\func{void}{wxCleanUp}{\void} + +Normally, wxWindows will call this cleanup function for you. However, if +you call \helpref{wxEntry}{wxentry} in order to initialize wxWindows +manually, then you should also call wxCleanUp before terminating wxWindows, +if wxWindows does not get a chance to do it. + +\membersection{::wxCreateDynamicObject}\label{wxcreatedynamicobject} + +\func{wxObject *}{wxCreateDynamicObject}{\param{const wxString\& }{className}} + +Creates and returns an object of the given class, if the class has been +registered with the dynamic class system using DECLARE... and IMPLEMENT... macros. + +\membersection{::wxDebugMsg} + +\func{void}{wxDebugMsg}{\param{const wxString\& }{fmt}, \param{...}{}} + +Display a debugging message; under Windows, this will appear on the +debugger command window, and under UNIX, it will be written to standard +error. + +The syntax is identical to {\bf printf}: pass a format string and a +variable list of arguments. + +Note that under Windows, you can see the debugging messages without a +debugger if you have the DBWIN debug log application that comes with +Microsoft C++. + +{\bf Tip:} under Windows, if your application crashes before the +message appears in the debugging window, put a wxYield call after +each wxDebugMsg call. wxDebugMsg seems to be broken under WIN32s +(at least for Watcom C++): preformat your messages and use OutputDebugString +instead. + +\membersection{::wxDisplaySize} + +\func{void}{wxDisplaySize}{\param{int *}{width}, \param{int *}{height}} + +Gets the physical size of the display in pixels. + +\membersection{::wxEntry}\label{wxentry} + +This initializes wxWindows in a platform-dependent way. Use this if you +are not using the default wxWindows entry code (e.g. main or WinMain). For example, +you can initialize wxWindows from an Microsoft Foundation Classes application using +this function. See also \helpref{wxCleanUp}{wxcleanup}. + +\func{void}{wxEntry}{\param{HANDLE}{ hInstance}, \param{HANDLE}{ hPrevInstance}, + \param{const wxString\& }{commandLine}, \param{int}{ cmdShow}, \param{bool}{ enterLoop = TRUE}} + +wxWindows initialization under Windows (non-DLL). If {\it enterLoop} is FALSE, the +function will return immediately after calling wxApp::OnInit. Otherwise, the wxWindows +message loop will be entered. + +\func{void}{wxEntry}{\param{HANDLE}{ hInstance}, \param{HANDLE}{ hPrevInstance}, + \param{WORD}{ wDataSegment}, \param{WORD}{ wHeapSize}, \param{const wxString\& }{ commandLine}} + +wxWindows initialization under Windows (for applications constructed as a DLL). + +\func{int}{wxEntry}{\param{int}{ argc}, \param{const wxString\& *}{argv}} + +wxWindows initialization under UNIX. + +\membersection{::wxError}\label{wxerror} + +\func{void}{wxError}{\param{const wxString\& }{msg}, \param{const wxString\& }{title = "wxWindows Internal Error"}} + +Displays {\it msg} and continues. This writes to standard error under +UNIX, and pops up a message box under Windows. Used for internal +wxWindows errors. See also \helpref{wxFatalError}{wxfatalerror}. + +\membersection{::wxEndBusyCursor}\label{wxendbusycursor} + +\func{void}{wxEndBusyCursor}{\void} + +Changes the cursor back to the original cursor, for all windows in the application. +Use with \helpref{wxBeginBusyCursor}{wxbeginbusycursor}. + +See also \helpref{wxIsBusy}{wxisbusy}. + +\membersection{::wxExecute}\label{wxexecute} + +\func{long}{wxExecute}{\param{const wxString\& }{command}, \param{bool }{sync = FALSE}} + +\func{long}{wxExecute}{\param{const wxString\& *}{argv}, \param{bool }{sync = FALSE}} + +Executes another program in UNIX or Windows. + +The first form takes a command string, such as {\tt "emacs file.txt"}. + +The second form takes an array of values: a command, any number of +arguments, terminated by NULL. + +If {\it sync} is FALSE (the default), flow of control immediately returns. +If TRUE, the current application waits until the other program has terminated. + +If execution is asynchronous, the return value is the process id, +otherwise it is a status value. A zero value indicates that the command could not +be executed. + +See also \helpref{wxShell}{wxshell}. + +\membersection{::wxExit}\label{wxexit} + +\func{void}{wxExit}{\void} + +Exits application after calling \helpref{wxApp::OnExit}{wxapponexit}. +Should only be used in an emergency: normally the top-level frame +should be deleted (after deleting all other frames) to terminate the +application. See \helpref{wxWindow::OnCloseWindow}{wxwindowonclosewindow} and \helpref{wxApp}{wxapp}. + +\membersection{::wxFatalError}\label{wxfatalerror} + +\func{void}{wxFatalError}{\param{const wxString\& }{msg}, \param{const wxString\& }{title = "wxWindows Fatal Error"}} + +Displays {\it msg} and exits. This writes to standard error under UNIX, +and pops up a message box under Windows. Used for fatal internal +wxWindows errors. See also \helpref{wxError}{wxerror}. + +\membersection{::wxFindMenuItemId} + +\func{int}{wxFindMenuItemId}{\param{wxFrame *}{frame}, \param{const wxString\& }{menuString}, \param{const wxString\& }{itemString}} + +Find a menu item identifier associated with the given frame's menu bar. + +\membersection{::wxFindWindowByLabel} + +\func{wxWindow *}{wxFindWindowByLabel}{\param{const wxString\& }{label}, \param{wxWindow *}{parent=NULL}} + +Find a window by its label. Depending on the type of window, the label may be a window title +or panel item label. If {\it parent} is NULL, the search will start from all top-level +frames and dialog boxes; if non-NULL, the search will be limited to the given window hierarchy. +The search is recursive in both cases. + +\membersection{::wxFindWindowByName}\label{wxfindwindowbyname} + +\func{wxWindow *}{wxFindWindowByName}{\param{const wxString\& }{name}, \param{wxWindow *}{parent=NULL}} + +Find a window by its name (as given in a window constructor or {\bf Create} function call). +If {\it parent} is NULL, the search will start from all top-level +frames and dialog boxes; if non-NULL, the search will be limited to the given window hierarchy. +The search is recursive in both cases. + +If no such named window is found, {\bf wxFindWindowByLabel} is called. + +\membersection{::wxGetActiveWindow}\label{wxgetactivewindow} + +\func{wxWindow *}{wxGetActiveWindow}{\void} + +Gets the currently active window (Windows only). + +\membersection{::wxGetDisplayName}\label{wxgetdisplayname} + +\func{wxString}{wxGetDisplayName}{\void} + +Under X only, returns the current display name. See also \helpref{wxSetDisplayName}{wxsetdisplayname}. + +\membersection{::wxGetHomeDir} + +\func{wxString}{wxGetHomeDir}{\param{const wxString\& }{buf}} + +Fills the buffer with a string representing the user's home directory (UNIX only). + +\membersection{::wxGetHostName} + +\func{bool}{wxGetHostName}{\param{const wxString\& }{buf}, \param{int}{ bufSize}} + +Copies the host name of the machine the program is running on into the +buffer {\it buf}, of maximum size {\it bufSize}, returning TRUE if +successful. Under UNIX, this will return a machine name. Under Windows, +this returns ``windows''. + +\membersection{::wxGetElapsedTime}\label{wxgetelapsedtime} + +\func{long}{wxGetElapsedTime}{\param{bool}{ resetTimer = TRUE}} + +Gets the time in milliseconds since the last \helpref{::wxStartTimer}{wxstarttimer}. + +If {\it resetTimer} is TRUE (the default), the timer is reset to zero +by this call. + +See also \helpref{wxTimer}{wxtimer}. + +\membersection{::wxGetFreeMemory} + +\func{long}{wxGetFreeMemory}{\void} + +Returns the amount of free memory in Kbytes under environments which +support it, and -1 if not supported. Currently, returns a positive value +under Windows, and -1 under UNIX. + +\membersection{::wxGetMousePosition} + +\func{void}{wxGetMousePosition}{\param{int* }{x}, \param{int* }{y}} + +Returns the mouse position in screen coordinates. + +\membersection{::wxGetOsVersion} + +\func{int}{wxGetOsVersion}{\param{int *}{major = NULL}, \param{int *}{minor = NULL}} + +Gets operating system version information. + +\begin{twocollist}\itemsep=0pt +\twocolitemruled{Platform}{Return tyes} +\twocolitem{Macintosh}{Return value is wxMACINTOSH.} +\twocolitem{Motif}{Return value is wxMOTIF\_X, {\it major} is X version, {\it minor} is X revision.} +\twocolitem{OS/2}{Return value is wxOS2\_PM.} +\twocolitem{Windows 3.1}{Return value is wxWINDOWS, {\it major} is 3, {\it minor} is 1.} +\twocolitem{Windows NT}{Return value is wxWINDOWS\_NT, {\it major} is 3, {\it minor} is 1.} +\twocolitem{Windows 95}{Return value is wxWIN95, {\it major} is 3, {\it minor} is 1.} +\twocolitem{Win32s (Windows 3.1)}{Return value is wxWIN32S, {\it major} is 3, {\it minor} is 1.} +\twocolitem{Watcom C++ 386 supervisor mode (Windows 3.1)}{Return value is wxWIN386, {\it major} is 3, {\it minor} is 1.} +\end{twocollist} + +\membersection{::wxGetResource}\label{wxgetresource} + +\func{bool}{wxGetResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry}, + \param{const wxString\& *}{value}, \param{const wxString\& }{file = NULL}} + +\func{bool}{wxGetResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry}, + \param{float *}{value}, \param{const wxString\& }{file = NULL}} + +\func{bool}{wxGetResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry}, + \param{long *}{value}, \param{const wxString\& }{file = NULL}} + +\func{bool}{wxGetResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry}, + \param{int *}{value}, \param{const wxString\& }{file = NULL}} + +Gets a resource value from the resource database (for example, WIN.INI, or +.Xdefaults). If {\it file} is NULL, WIN.INI or .Xdefaults is used, +otherwise the specified file is used. + +Under X, if an application class (wxApp::wx\_class) has been defined, +it is appended to the string /usr/lib/X11/app-defaults/ to try to find +an applications default file when merging all resource databases. + +The reason for passing the result in an argument is that it +can be convenient to define a default value, which gets overridden +if the value exists in the resource file. It saves a separate +test for that resource's existence, and it also allows +the overloading of the function for different types. + +See also \helpref{wxWriteResource}{wxwriteresource}. + +\membersection{::wxGetUserId} + +\func{bool}{wxGetUserId}{\param{const wxString\& }{buf}, \param{int}{ bufSize}} + +Copies the user's login identity (such as ``jacs'') into the buffer {\it +buf}, of maximum size {\it bufSize}, returning TRUE if successful. +Under Windows, this returns ``user''. + +\membersection{::wxGetUserName} + +\func{bool}{wxGetUserName}{\param{const wxString\& }{buf}, \param{int}{ bufSize}} + +Copies the user's name (such as ``Julian Smart'') into the buffer {\it +buf}, of maximum size {\it bufSize}, returning TRUE if successful. +Under Windows, this returns ``unknown''. + +\membersection{::wxKill}\label{wxkill} + +\func{int}{wxKill}{\param{long}{ pid}, \param{int}{ sig}} + +Under UNIX (the only supported platform), equivalent to the UNIX kill function. +Returns 0 on success, -1 on failure. + +Tip: sending a signal of 0 to a process returns -1 if the process does not exist. +It does not raise a signal in the receiving process. + +\membersection{::wxInitClipboard}\label{wxinitclipboard} + +\func{void}{wxInitClipboard}{\void} + +Initializes the generic clipboard system by creating an instance of +the class \helpref{wxClipboard}{wxclipboard}. + +\membersection{::wxIPCCleanUp}\label{wxipccleanup} + +\func{void}{wxIPCCleanUp}{\void} + +Call this when your application is terminating, if you have +called \helpref{wxIPCInitialize}{wxipcinitialize}. + +\membersection{::wxIPCInitialize}\label{wxipcinitialize} + +\func{void}{wxIPCInitialize}{\void} + +Initializes for interprocess communication operation. May +be called multiple times without harm. + +See also \helpref{wxDDEServer}{wxddeserver}, \helpref{wxDDEClient}{wxddeclient}, \helpref{wxDDEConnection}{wxddeconnection} +and the relevant section of the user manual. + +\membersection{::wxIsBusy}\label{wxisbusy} + +\func{bool}{wxIsBusy}{\void} + +Returns TRUE if between two \helpref{wxBeginBusyCursor}{wxbeginbusycursor} and\rtfsp +\helpref{wxEndBusyCursor}{wxendbusycursor} calls. + +\membersection{::wxLoadUserResource}\label{wxloaduserresource} + +\func{wxString}{wxLoadUserResource}{\param{const wxString\& }{resourceName}, \param{const wxString\& }{resourceType=``TEXT"}} + +Loads a user-defined Windows resource as a string. If the resource is found, the function creates +a new character array and copies the data into it. A pointer to this data is returned. If unsuccessful, NULL is returned. + +The resource must be defined in the {\tt .rc} file using the following syntax: + +\begin{verbatim} +myResource TEXT file.ext +\end{verbatim} + +where {\tt file.ext} is a file that the resource compiler can find. + +One use of this is to store {\tt .wxr} files instead of including the data in the C++ file; some compilers +cannot cope with the long strings in a {\tt .wxr} file. The resource data can then be parsed +using \helpref{wxResourceParseString}{wxresourceparsestring}. + +This function is available under Windows only. + +\membersection{::wxNow}\label{wxnow} + +\func{wxString}{wxNow}{\void} + +Returns a string representing the current date and time. + +\membersection{::wxPostDelete}\label{wxpostdelete} + +\func{void}{wxPostDelete}{\param{wxObject *}{object}} + +Under X, tells the system to delete the specified object when +all other events have been processed. In some environments, it is +necessary to use this instead of deleting a frame directly with the +delete operator, because X will still send events to the window. + +Now obsolete: use \helpref{wxWindow::Close}{wxwindowclose} instead. + +\membersection{::wxSetDisplayName}\label{wxsetdisplayname} + +\func{void}{wxSetDisplayName}{\param{const wxString\& }{displayName}} + +Under X only, sets the current display name. This is the X host and display name such +as ``colonsay:0.0", and the function indicates which display should be used for creating +windows from this point on. Setting the display within an application allows multiple +displays to be used. + +See also \helpref{wxGetDisplayName}{wxgetdisplayname}. + +\membersection{::wxShell}\label{wxshell} + +\func{bool}{wxShell}{\param{const wxString\& }{command = NULL}} + +Executes a command in an interactive shell window. If no command is +specified, then just the shell is spawned. + +See also \helpref{wxExecute}{wxexecute}. + +\membersection{::wxSleep} + +\func{void}{wxSleep}{\param{int}{ secs}} + +Under X, sleeps for the specified number of seconds. + +\membersection{::wxStripMenuCodes} + +\func{void}{wxStripMenuCodes}{\param{const wxString\& }{in}, \param{const wxString\& }{out}} + +Strips any menu codes from {\it in} and places the result +in {\it out}. Menu codes include \& (mark the next character with an underline +as a keyboard shortkey in Windows and Motif) and $\backslash$t (tab in Windows). + +\membersection{::wxStartTimer}\label{wxstarttimer} + +\func{void}{wxStartTimer}{\void} + +Starts a stopwatch; use \helpref{::wxGetElapsedTime}{wxgetelapsedtime} to get the elapsed time. + +See also \helpref{wxTimer}{wxtimer}. + +\membersection{::wxToLower}\label{wxtolower} + +\func{char}{wxToLower}{\param{char }{ch}} + +Converts the character to lower case. This is implemented as a macro for efficiency. + +\membersection{::wxToUpper}\label{wxtoupper} + +\func{char}{wxToUpper}{\param{char }{ch}} + +Converts the character to upper case. This is implemented as a macro for efficiency. + +\membersection{::wxTrace}\label{wxtrace} + +\func{void}{wxTrace}{\param{const wxString\& }{fmt}, \param{...}{}} + +Takes printf-style variable argument syntax. Output +is directed to the current output stream (see \helpref{wxDebugContext}{wxdebugcontextoverview}). + +\membersection{::wxTraceLevel}\label{wxtracelevel} + +\func{void}{wxTraceLevel}{\param{int}{ level}, \param{const wxString\& }{fmt}, \param{...}{}} + +Takes printf-style variable argument syntax. Output +is directed to the current output stream (see \helpref{wxDebugContext}{wxdebugcontextoverview}). +The first argument should be the level at which this information is appropriate. +It will only be output if the level returned by wxDebugContext::GetLevel is equal to or greater than +this value. + +\membersection{::wxWriteResource}\label{wxwriteresource} + +\func{bool}{wxWriteResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry}, + \param{const wxString\& }{value}, \param{const wxString\& }{file = NULL}} + +\func{bool}{wxWriteResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry}, + \param{float }{value}, \param{const wxString\& }{file = NULL}} + +\func{bool}{wxWriteResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry}, + \param{long }{value}, \param{const wxString\& }{file = NULL}} + +\func{bool}{wxWriteResource}{\param{const wxString\& }{section}, \param{const wxString\& }{entry}, + \param{int }{value}, \param{const wxString\& }{file = NULL}} + +Writes a resource value into the resource database (for example, WIN.INI, or +.Xdefaults). If {\it file} is NULL, WIN.INI or .Xdefaults is used, +otherwise the specified file is used. + +Under X, the resource databases are cached until the internal function +\rtfsp{\bf wxFlushResources} is called automatically on exit, when +all updated resource databases are written to their files. + +Note that it is considered bad manners to write to the .Xdefaults +file under UNIX, although the WIN.INI file is fair game under Windows. + +See also \helpref{wxGetResource}{wxgetresource}. + +\membersection{::wxYield} + +\func{bool}{wxYield}{\void} + +Yields control to pending messages in the windowing system. This can be useful, for example, when a +time-consuming process writes to a text window. Without an occasional +yield, the text window will not be updated properly, and (since Windows +multitasking is cooperative) other processes will not respond. + +Caution should be exercised, however, since yielding may allow the +user to perform actions which are not compatible with the current task. +Disabling menu items or whole menus during processing can avoid unwanted +reentrance of code. + +\section{Macros}\label{macros} + +These macros are defined in wxWindows. + +\membersection{CLASSINFO}\label{classinfo} + +\func{wxClassInfo *}{CLASSINFO}{className} + +Returns a pointer to the wxClassInfo object associated with this class. + +\membersection{WXDEBUG\_NEW}\label{debugnew} + +\func{}{WXDEBUG\_NEW}{arg} + +This is defined in debug mode to be call the redefined new operator +with filename and line number arguments. The definition is: + +\begin{verbatim} +#define WXDEBUG_NEW new(__FILE__,__LINE__) +\end{verbatim} + +In non-debug mode, this is defined as the normal new operator. + +\membersection{DECLARE\_ABSTRACT\_CLASS} + +\func{}{DECLARE\_ABSTRACT\_CLASS}{className} + +Used inside a class declaration to declare that the class should be +made known to the class hierarchy, but objects of this class cannot be created +dynamically. The same as DECLARE\_CLASS. + +Example: + +\begin{verbatim} +class wxCommand: public wxObject +{ + DECLARE_ABSTRACT_CLASS(wxCommand) + + private: + ... + public: + ... +}; +\end{verbatim} + +\membersection{DECLARE\_APP}\label{declareapp} + +\func{}{DECLARE\_APP}{className} + +This is used in headers to create a forward declaration of the wxGetApp function implemented +by IMPLEMENT\_APP. It creates the declaration {\tt className\& wxGetApp(void)}. + +Example: + +\begin{verbatim} + DECLARE_APP(MyApp) +\end{verbatim} + +\membersection{DECLARE\_CLASS} + +\func{}{DECLARE\_CLASS}{className} + +Used inside a class declaration to declare that the class should be +made known to the class hierarchy, but objects of this class cannot be created +dynamically. The same as DECLARE\_ABSTRACT\_CLASS. + +\membersection{DECLARE\_DYNAMIC\_CLASS} + +\func{}{DECLARE\_DYNAMIC\_CLASS}{className} + +Used inside a class declaration to declare that the objects of this class should be dynamically +createable from run-time type information. + +Example: + +\begin{verbatim} +class wxFrame: public wxWindow +{ + DECLARE_DYNAMIC_CLASS(wxFrame) + + private: + const wxString\& frameTitle; + public: + ... +}; +\end{verbatim} + +\membersection{IMPLEMENT\_ABSTRACT\_CLASS} + +\func{}{IMPLEMENT\_ABSTRACT\_CLASS}{className, baseClassName} + +Used in a C++ implementation file to complete the declaration of +a class that has run-time type information. The same as IMPLEMENT\_CLASS. + +Example: + +\begin{verbatim} +IMPLEMENT_ABSTRACT_CLASS(wxCommand, wxObject) + +wxCommand::wxCommand(void) +{ +... +} +\end{verbatim} + +\membersection{IMPLEMENT\_ABSTRACT\_CLASS2} + +\func{}{IMPLEMENT\_ABSTRACT\_CLASS2}{className, baseClassName1, baseClassName2} + +Used in a C++ implementation file to complete the declaration of +a class that has run-time type information and two base classes. The same as IMPLEMENT\_CLASS2. + +\membersection{IMPLEMENT\_APP}\label{implementapp} + +\func{}{IMPLEMENT\_APP}{className} + +This is used in the application class implementation file to make the application class known to +wxWindows for dynamic construction. You use this instead of + +Old form: + +\begin{verbatim} + MyApp myApp; +\end{verbatim} + +New form: + +\begin{verbatim} + IMPLEMENT_APP(MyApp) +\end{verbatim} + +See also \helpref{DECLARE\_APP}{declareapp}. + +\membersection{IMPLEMENT\_CLASS} + +\func{}{IMPLEMENT\_CLASS}{className, baseClassName} + +Used in a C++ implementation file to complete the declaration of +a class that has run-time type information. The same as IMPLEMENT\_ABSTRACT\_CLASS. + +\membersection{IMPLEMENT\_CLASS2} + +\func{}{IMPLEMENT\_CLASS2}{className, baseClassName1, baseClassName2} + +Used in a C++ implementation file to complete the declaration of a +class that has run-time type information and two base classes. The +same as IMPLEMENT\_ABSTRACT\_CLASS2. + +\membersection{IMPLEMENT\_DYNAMIC\_CLASS} + +\func{}{IMPLEMENT\_DYNAMIC\_CLASS}{className, baseClassName} + +Used in a C++ implementation file to complete the declaration of +a class that has run-time type information, and whose instances +can be created dynamically. + +Example: + +\begin{verbatim} +IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow) + +wxFrame::wxFrame(void) +{ +... +} +\end{verbatim} + +\membersection{IMPLEMENT\_DYNAMIC\_CLASS2} + +\func{}{IMPLEMENT\_DYNAMIC\_CLASS2}{className, baseClassName1, baseClassName2} + +Used in a C++ implementation file to complete the declaration of +a class that has run-time type information, and whose instances +can be created dynamically. Use this for classes derived from two +base classes. + +\membersection{WXTRACE}\label{trace} + +\func{}{WXTRACE}{formatString, ...} + +Calls wxTrace with printf-style variable argument syntax. Output +is directed to the current output stream (see \helpref{wxDebugContext}{wxdebugcontextoverview}). + +\membersection{WXTRACELEVEL}\label{tracelevel} + +\func{}{WXTRACELEVEL}{level, formatString, ...} + +Calls wxTraceLevel with printf-style variable argument syntax. Output +is directed to the current output stream (see \helpref{wxDebugContext}{wxdebugcontextoverview}). +The first argument should be the level at which this information is appropriate. +It will only be output if the level returned by wxDebugContext::GetLevel is equal to or greater than +this value. + +\section{wxWindows resource functions}\label{resourcefuncs} + +\overview{wxWindows resource system}{resourceformats} + +This section details functions for manipulating wxWindows (.WXR) resource +files and loading user interface elements from resources. + +\normalbox{Please note that this use of the word `resource' is different from that used when talking +about initialisation file resource reading and writing, using such functions +as wxWriteResource and wxGetResource. It's just an unfortunate clash of terminology.} + +\helponly{For an overview of the wxWindows resource mechanism, see \helpref{the wxWindows resource system}{resourceformats}.} + +See also \helpref{wxWindow::LoadFromResource}{wxwindowloadfromresource} for +loading from resource data. + +\membersection{::wxResourceAddIdentifier}\label{wxresourceaddidentifier} + +\func{bool}{wxResourceAddIdentifier}{\param{const wxString\& }{name}, \param{int }{value}} + +Used for associating a name with an integer identifier (equivalent to dynamically\rtfsp +\verb$#$defining a name to an integer). Unlikely to be used by an application except +perhaps for implementing resource functionality for interpreted languages. + +\membersection{::wxResourceClear} + +\func{void}{wxResourceClear}{\void} + +Clears the wxWindows resource table. + +\membersection{::wxResourceCreateBitmap} + +\func{wxBitmap *}{wxResourceCreateBitmap}{\param{const wxString\& }{resource}} + +Creates a new bitmap from a file, static data, or Windows resource, given a valid +wxWindows bitmap resource identifier. For example, if the .WXR file contains +the following: + +\begin{verbatim} +static const wxString\& aiai_resource = "bitmap(name = 'aiai_resource',\ + bitmap = ['aiai', wxBITMAP_TYPE_BMP_RESOURCE, 'WINDOWS'],\ + bitmap = ['aiai.xpm', wxBITMAP_TYPE_XPM, 'X'])."; +\end{verbatim} + +then this function can be called as follows: + +\begin{verbatim} + wxBitmap *bitmap = wxResourceCreateBitmap("aiai_resource"); +\end{verbatim} + +\membersection{::wxResourceCreateIcon} + +\func{wxIcon *}{wxResourceCreateIcon}{\param{const wxString\& }{resource}} + +Creates a new icon from a file, static data, or Windows resource, given a valid +wxWindows icon resource identifier. For example, if the .WXR file contains +the following: + +\begin{verbatim} +static const wxString\& aiai_resource = "icon(name = 'aiai_resource',\ + icon = ['aiai', wxBITMAP_TYPE_ICO_RESOURCE, 'WINDOWS'],\ + icon = ['aiai', wxBITMAP_TYPE_XBM_DATA, 'X'])."; +\end{verbatim} + +then this function can be called as follows: + +\begin{verbatim} + wxIcon *icon = wxResourceCreateIcon("aiai_resource"); +\end{verbatim} + +\membersection{::wxResourceCreateMenuBar} + +\func{wxMenuBar *}{wxResourceCreateMenuBar}{\param{const wxString\& }{resource}} + +Creates a new menu bar given a valid wxWindows menubar resource +identifier. For example, if the .WXR file contains the following: + +\begin{verbatim} +static const wxString\& menuBar11 = "menu(name = 'menuBar11',\ + menu = \ + [\ + ['&File', 1, '', \ + ['&Open File', 2, 'Open a file'],\ + ['&Save File', 3, 'Save a file'],\ + [],\ + ['E&xit', 4, 'Exit program']\ + ],\ + ['&Help', 5, '', \ + ['&About', 6, 'About this program']\ + ]\ + ])."; +\end{verbatim} + +then this function can be called as follows: + +\begin{verbatim} + wxMenuBar *menuBar = wxResourceCreateMenuBar("menuBar11"); +\end{verbatim} + + +\membersection{::wxResourceGetIdentifier} + +\func{int}{wxResourceGetIdentifier}{\param{const wxString\& }{name}} + +Used for retrieving the integer value associated with an identifier. +A zero value indicates that the identifier was not found. + +See \helpref{wxResourceAddIdentifier}{wxresourceaddidentifier}. + +\membersection{::wxResourceParseData}\label{wxresourcedata} + +\func{bool}{wxResourceParseData}{\param{const wxString\& }{resource}, \param{wxResourceTable *}{table = NULL}} + +Parses a string containing one or more wxWindows resource objects. If +the resource objects are global static data that are included into the +C++ program, then this function must be called for each variable +containing the resource data, to make it known to wxWindows. + +{\it resource} should contain data in the following form: + +\begin{verbatim} +dialog(name = 'dialog1', + style = 'wxCAPTION | wxDEFAULT_DIALOG_STYLE', + title = 'Test dialog box', + x = 312, y = 234, width = 400, height = 300, + modal = 0, + control = [wxGroupBox, 'Groupbox', '0', 'group6', 5, 4, 380, 262, + [11, 'wxSWISS', 'wxNORMAL', 'wxNORMAL', 0]], + control = [wxMultiText, 'Multitext', 'wxVERTICAL_LABEL', 'multitext3', + 156, 126, 200, 70, 'wxWindows is a multi-platform, GUI toolkit.', + [11, 'wxSWISS', 'wxNORMAL', 'wxNORMAL', 0], + [11, 'wxSWISS', 'wxNORMAL', 'wxNORMAL', 0]]). +\end{verbatim} + +This function will typically be used after including a {\tt .wxr} file into +a C++ program as follows: + +\begin{verbatim} +#include "dialog1.wxr" +\end{verbatim} + +Each of the contained resources will declare a new C++ variable, and each +of these variables should be passed to wxResourceParseData. + +\membersection{::wxResourceParseFile} + +\func{bool}{wxResourceParseFile}{\param{const wxString\& }{filename}, \param{wxResourceTable *}{table = NULL}} + +Parses a file containing one or more wxWindows resource objects +in C++-compatible syntax. Use this function to dynamically load +wxWindows resource data. + +\membersection{::wxResourceParseString}\label{wxresourceparsestring} + +\func{bool}{wxResourceParseString}{\param{const wxString\& }{resource}, \param{wxResourceTable *}{table = NULL}} + +Parses a string containing one or more wxWindows resource objects. If +the resource objects are global static data that are included into the +C++ program, then this function must be called for each variable +containing the resource data, to make it known to wxWindows. + +{\it resource} should contain data with the following form: + +\begin{verbatim} +static const wxString\& dialog1 = "dialog(name = 'dialog1',\ + style = 'wxCAPTION | wxDEFAULT_DIALOG_STYLE',\ + title = 'Test dialog box',\ + x = 312, y = 234, width = 400, height = 300,\ + modal = 0,\ + control = [wxGroupBox, 'Groupbox', '0', 'group6', 5, 4, 380, 262,\ + [11, 'wxSWISS', 'wxNORMAL', 'wxNORMAL', 0]],\ + control = [wxMultiText, 'Multitext', 'wxVERTICAL_LABEL', 'multitext3',\ + 156, 126, 200, 70, 'wxWindows is a multi-platform, GUI toolkit.',\ + [11, 'wxSWISS', 'wxNORMAL', 'wxNORMAL', 0],\ + [11, 'wxSWISS', 'wxNORMAL', 'wxNORMAL', 0]])."; +\end{verbatim} + +This function will typically be used after calling \helpref{wxLoadUserResource}{wxloaduserresource} to +load an entire {\tt .wxr file} into a string. + +\membersection{::wxResourceRegisterBitmapData}\label{registerbitmapdata} + +\func{bool}{wxResourceRegisterBitmapData}{\param{const wxString\& }{name}, \param{const wxString\& }{xbm\_data}, \param{int }{width}, +\param{int }{height}, \param{wxResourceTable *}{table = NULL}} + +\func{bool}{wxResourceRegisterBitmapData}{\param{const wxString\& }{name}, \param{const wxString\& *}{xpm\_data}} + +Makes \verb$#$included XBM or XPM bitmap data known to the wxWindows resource system. +This is required if other resources will use the bitmap data, since otherwise there +is no connection between names used in resources, and the global bitmap data. + +\membersection{::wxResourceRegisterIconData} + +Another name for \helpref{wxResourceRegisterBitmapData}{registerbitmapdata}. + diff --git a/docs/latex/wx/gauge.tex b/docs/latex/wx/gauge.tex new file mode 100644 index 0000000000..6f87385815 --- /dev/null +++ b/docs/latex/wx/gauge.tex @@ -0,0 +1,178 @@ +\section{\class{wxGauge}}\label{wxgauge} + +A gauge is a horizontal or vertical bar which shows a quantity (often time). +There are no user commands for the gauge. + +\wxheading{Derived from} + +\helpref{wxControl}{wxcontrol}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxEvtHandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{wxGA\_HORIZONTAL}}{Creates a horizontal gauge.} +\twocolitem{\windowstyle{wxGA\_VERTICAL}}{Creates a vertical gauge.} +\twocolitem{\windowstyle{wxGA\_PROGRESSBAR}}{Under Windows 95, creates a horizontal progress bar.} +\end{twocollist} + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{See also} + +\helpref{wxSlider}{wxslider}, \helpref{wxScrollBar}{wxscrollbar} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxGauge::wxGauge}\label{wxgaugeconstr} + +\func{}{wxGauge}{\void} + +Default constructor. + +\func{}{wxGauge}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id},\rtfsp +\param{const int}{ range}, \param{const wxPoint\& }{ pos = wxDefaultPosition}, \param{const wxSize\&}{ size = wxDefaultSize},\rtfsp +\param{const long}{ style = wxGA\_HORIZONTAL}, \param{const wxValidator\& }{validator = wxDefaultValidator}, \param{const wxString\& }{name = ``gauge"}} + +Constructor, creating and showing a gauge. + +\wxheading{Parameters} + +\docparam{parent}{Window parent.} + +\docparam{id}{Window identifier.} + +\docparam{range}{Integer range (maximum value) of the gauge.} + +\docparam{pos}{Window position.} + +\docparam{size}{Window size.} + +\docparam{style}{Gauge style. See \helpref{wxGauge}{wxgauge}.} + +\docparam{name}{Window name.} + +\wxheading{Remarks} + +Under Windows 95, there are two different styles of gauge: normal gauge, and progress bar (when +the {\bf wxGA\_PROGRESSBAR} style is used). A progress bar is always horizontal. + +\wxheading{See also} + +\helpref{wxGauge::Create}{wxgaugecreate} + +\membersection{wxGauge::\destruct{wxGauge}} + +\func{}{\destruct{wxGauge}}{\void} + +Destructor, destroying the gauge. + +\membersection{wxGauge::Create}\label{wxgaugecreate} + +\func{bool}{Create}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id},\rtfsp +\param{const int}{ range}, \param{const wxPoint\& }{ pos = wxDefaultPosition}, \param{const wxSize\&}{ size = wxDefaultSize},\rtfsp +\param{const long}{ style = wxGA\_HORIZONTAL}, \param{const wxValidator\& }{validator = wxDefaultValidator}, \param{const wxString\& }{name = ``gauge"}} + +Creates the gauge for two-step construction. See \helpref{wxGauge::wxGauge}{wxgaugeconstr}\rtfsp +for further details. + +\membersection{wxGauge::GetBezelFace}\label{wxgaugegetbezelface} + +\constfunc{int}{GetBezelFace}{\void} + +Returns the width of the 3D bezel face. + +\wxheading{Remarks} + +Windows only, not for {\bf wxGA\_PROGRESSBAR}. + +\wxheading{See also} + +\helpref{wxGauge::SetBezelFace}{wxgaugesetbezelface} + +\membersection{wxGauge::GetRange}\label{wxgaugegetrange} + +\constfunc{int}{GetRange}{\void} + +Returns the maximum position of the gauge. + +\wxheading{See also} + +\helpref{wxGauge::SetRange}{wxgaugesetrange} + +\membersection{wxGauge::GetShadowWidth}\label{wxgaugegetshadowwidth} + +\constfunc{int}{GetShadowWidth}{\void} + +Returns the 3D shadow margin width. + +\wxheading{Remarks} + +Windows only, not for {\bf wxGA\_PROGRESSBAR}. + +\wxheading{See also} + +\helpref{wxGauge::SetShadowWidth}{wxgaugesetshadowwidth} + +\membersection{wxGauge::GetValue}\label{wxgaugegetvalue} + +\constfunc{int}{GetValue}{\void} + +Returns the current position of the gauge. + +\wxheading{See also} + +\helpref{wxGauge::SetValue}{wxgaugesetvalue} + +\membersection{wxGauge::SetBezelFace}\label{wxgaugesetbezelface} + +\func{void}{SetBezelFace}{\param{const int }{width}} + +Sets the 3D bezel face width. + +\wxheading{Remarks} + +Windows only, not for {\bf wxGA\_PROGRESSBAR}. + +\wxheading{See also} + +\helpref{wxGauge::GetBezelFace}{wxgaugegetbezelface} + +\membersection{wxGauge::SetRange}\label{wxgaugesetrange} + +\func{void}{SetRange}{\param{const int }{range}} + +Sets the range (maximum value) of the gauge. + +\wxheading{See also} + +\helpref{wxGauge::GetRange}{wxgaugegetrange} + +\membersection{wxGauge::SetShadowWidth}\label{wxgaugesetshadowwidth} + +\func{void}{SetShadowWidth}{\param{const int }{width}} + +Sets the 3D shadow width. + +\wxheading{Remarks} + +Windows only, not for {\bf wxGA\_PROGRESSBAR}. + +\membersection{wxGauge::SetValue}\label{wxgaugesetvalue} + +\func{void}{SetValue}{\param{const int }{pos}} + +Sets the position of the gauge. + +\wxheading{Parameters} + +\docparam{pos}{Position for the gauge level.} + +\wxheading{See also} + +\helpref{wxGauge::GetValue}{wxgaugegetvalue} + + diff --git a/docs/latex/wx/gdiobj.tex b/docs/latex/wx/gdiobj.tex new file mode 100644 index 0000000000..a2b98d53a3 --- /dev/null +++ b/docs/latex/wx/gdiobj.tex @@ -0,0 +1,26 @@ +\section{\class{wxGDIObject}}\label{wxgdiobject} + +This class allows platforms to implement functionality to optimise GDI objects, such +as wxPen, wxBrush and wxFont. On Windows, the underling GDI objects are a scarce resource +and are cleaned up when a usage count goes to zero. On some platforms this +class may not have any special functionality. + +Since the functionality of this class is platform-specific, it is not documented here in detail. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxPen}{wxpen}, \helpref{wxBrush}{wxbrush}, \helpref{wxFont}{wxfont} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxGDIObject::wxGDIObject}\label{wxgdiobjectconstr} + +\func{}{wxGDIObject}{\void} + +Default constructor. + + diff --git a/docs/latex/wx/grid.tex b/docs/latex/wx/grid.tex new file mode 100644 index 0000000000..c8d5bce02a --- /dev/null +++ b/docs/latex/wx/grid.tex @@ -0,0 +1,517 @@ +\section{\class{wxGrid}}\label{wxgrid} + +wxGrid is a class for displaying and editing tabular information. + +\wxheading{Derived from} + +\helpref{wxPanel}{wxpanel}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +There are no specific window styles for this class. + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{See also} + +\helpref{wxGrid classes overview}{gridoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxGrid::wxGrid}\label{wxgridconstr} + +\func{void}{wxGrid}{\param{wxWindow* }{parent}, \param{const wxWindowID}{ id}, \param{const wxPoint\&}{ pos}, +\rtfsp\param{const wxSize\&}{ size}, \param{const long}{ style=0}, \param{const wxString\& }{name="grid"}} + +Constructor. Before using a wxGrid object, you must call CreateGrid to set up the required rows and columns. + +\membersection{wxGrid::AdjustScrollbars}\label{wxgridadjustscrollbars} + +\func{void}{AdjustScrollbars}{\void} + +Call this function whenever a change has been made via the API that might alter the scrollbar characteristics: +particularly when adding or deleting rows, or changing row or column dimensions. For example, +removing rows might make it unnecessary to show the vertical scrollbar. + +\membersection{wxGrid::AppendCols}\label{wxgridappendcols} + +\func{bool}{AppendCols}{\param{int}{ n=1}, \param{bool}{ updateLabels=TRUE}} + +Appends {\it n} columns to the grid. If {\it updateLabels} is TRUE, +the function OnChangeLabels is called to give the application the opportunity to relabel. + +\membersection{wxGrid::AppendRows}\label{wxgridappendrows} + +\func{bool}{AppendRows}{\param{int}{ n=1}, \param{bool}{ updateLabels=TRUE}} + +Appends {\it n} rows to the grid. If {\it updateLabels} is TRUE, +the function OnChangeLabels is called to give the application the opportunity to relabel. + +\membersection{wxGrid::BeginBatch}\label{wxgridbeginbatch} + +\func{void}{BeginBatch}{\void} + +Start a BeginBatch/EndBatch pair between which, calls to SetCellValue or +SetCellBitmap will not cause a refresh. This allows you to speed up some operations +(for example, setting several hundred cell values). You can nest, but not overlap, +these two functions. + +See also \helpref{wxGrid::EndBatch}{wxgridendbatch}, \helpref{wxGrid::GetBatchCount}{wxgridgetbatchcount}. + +\membersection{wxGrid::CellHitTest}\label{wxgridcellhittest} + +\func{bool}{CellHitTest}{\param{int}{ x}, \param{int}{ y}, \param{int *}{row}, \param{int *}{col}} + +Returns TRUE if the x, y panel position coincides with a cell. If so, {\it row} and {\it col} are +returned. + +\membersection{wxGrid::CreateGrid}\label{wxgridcreategrid} + +\func{bool}{CreateGrid}{\param{int}{ rows}, \param{int}{ cols}, \param{wxString **}{cellValues=NULL}, + \param{short *}{widths=NULL}, \param{short}{ defaultWidth=wxGRID\_DEFAULT\_CELL\_WIDTH}, + \param{short}{ defaultHeight=wxGRID\_DEFAULT\_CELL\_HEIGHT}} + +Creates a grid {\it rows} high and {\it cols} wide. You can optionally specify an array of initial values +and widths, and/or default cell width and height. + +Call this function after creating the wxGrid object. + +\membersection{wxGrid::CurrentCellVisible}\label{wxgridcurrentcellvisible} + +\func{bool}{CurrentCellVisible}{\void} + +Returns TRUE if the currently selected cell is visible, FALSE otherwise. + +\membersection{wxGrid::DeleteCols}\label{wxgriddeletecols} + +\func{bool}{DeleteCols}{\param{int}{ pos=0}, \param{int}{ n=1}, \param{bool}{ updateLabels=TRUE}} + +Deletes {\it n} columns from the grid at position {\it pos}. If {\it updateLabels} is TRUE, +the function OnChangeLabels is called to give the application the opportunity to relabel. + +\membersection{wxGrid::DeleteRows}\label{wxgriddeleterows} + +\func{bool}{DeleteRows}{\param{int}{ pos=0}, \param{int}{ n=1}, \param{bool}{ updateLabels=TRUE}} + +Deletes {\it n} rows from the grid at position {\it pos}. If {\it updateLabels} is TRUE, +the function OnChangeLabels is called to give the application the opportunity to relabel. + +\membersection{wxGrid::EndBatch}\label{wxgridendbatch} + +\func{void}{EndBatch}{\void} + +End a BeginBatch/EndBatch pair between which, calls to SetCellValue or +SetCellBitmap will not cause a refresh. This allows you to speed up some operations +(for example, setting several hundred cell values). You can nest, but not overlap, +these two functions. + +See also \helpref{wxGrid::BeginBatch}{wxgridbeginbatch}, \helpref{wxGrid::GetBatchCount}{wxgridgetbatchcount}. + +\membersection{wxGrid::GetBatchCount}\label{wxgridgetbatchcount} + +\func{void}{GetBatchCount}{\void} + +Return the level of batch nesting. This is initially zero, and will be incremented +every time BeginBatch is called, and decremented when EndBatch is called. When the +batch count is more zero, some functions (such as SetCellValue and SetCellBitmap) will +not refresh the cell. + +See also \helpref{wxGrid::BeginBatch}{wxgridbeginbatch}, \helpref{wxGrid::EndBatch}{wxgridendbatch}. + +\membersection{wxGrid::GetCell}\label{wxgridgetcell} + +\func{wxGridCell *}{GetCell}{\param{int}{ row}, \param{int}{ col}} + +Returns the grid cell object associated with this position. + +wxGenericGrid implementation only. + +\membersection{wxGrid::GetCellAlignment}\label{wxgridgetcellalignment} + +\func{int}{GetCellAlignment}{\param{int}{ row}, \param{int}{ col}} + +\func{int}{GetCellAlignment}{\void} + +Sets the text alignment for the cell at the given position, or the global alignment value. +The return value is wxLEFT, wxRIGHT or wxCENTRE. + +\membersection{wxGrid::GetCellBackgroundColour}\label{wxgridgetcellbackgroundcolour} + +\func{wxColour\&}{GetCellBackgroundColour}{\param{int}{ row}, \param{int}{ col}} + +\func{wxColour\&}{GetCellBackgroundColour}{\void} + +Gets the background colour for the cell at the given position, or the global background colour. + +\membersection{wxGrid::GetCells}\label{wxgridgetcells} + +\func{wxGridCell ***}{GetCells}{\void} + +Returns the array of grid cell object associated with this wxGrid. + +\membersection{wxGrid::GetCellTextColour}\label{wxgridgetcelltextcolour} + +\func{wxColour\&}{GetCellTextColour}{\param{int}{ row}, \param{int}{ col}} + +\func{wxColour\&}{GetCellTextColour}{\void} + +Gets the text colour for the cell at the given position, or the global text colour. + +\membersection{wxGrid::GetCellTextFont}\label{wxgridgetcelltextfont} + +\func{wxFont *}{GetCellTextFont}{\param{int}{ row}, \param{int}{ col}} + +\func{wxFont *}{GetCellTextFont}{\void} + +Gets the text font for the cell at the given position, or the global text font. + +\membersection{wxGrid::GetCellValue}\label{wxgridgetcellvalue} + +\func{wxString\&}{GetCellValue}{\param{int}{ row}, \param{int}{ col}} + +Returns the cell value at the given position. + +\membersection{wxGrid::GetCols}\label{wxgridgetcols} + +\func{int}{GetCols}{\void} + +Returns the number of columns in the grid. + +\membersection{wxGrid::GetColumnWidth}\label{wxgridcolumnwidth} + +\func{int}{GetColumnWidth}{\param{int}{ col}} + +Gets the width in pixels for column {\it col}. + +\membersection{wxGrid::GetCurrentRect}\label{wxgridgetcurrentrect} + +\func{wxRectangle *}{GetCurrentRect}{\void} + +Returns a pointer to the rectangle enclosing the currently selected cell. +Do not delete this pointer. + +\membersection{wxGrid::GetCursorColumn}\label{wxgridgetcursorcolumn} + +\func{int}{GetCursorColumn}{\void} + +Returns the column position of the currently selected cell. + +\membersection{wxGrid::GetCursorRow}\label{wxgridgetcursorrow} + +\func{int}{GetCursorRow}{\void} + +Returns the row position of the currently selected cell. + +\membersection{wxGrid::GetEditable}\label{wxgridgeteditable} + +\func{bool}{GetEditable}{\void} + +Returns TRUE if the grid cells can be edited. + +\membersection{wxGrid::GetHorizScrollBar}\label{wxgridgethorizscrollbar} + +\func{wxScrollBar *}{GetHorizScrollBar}{\void} + +Returns a pointer to the horizontal scrollbar. + +\membersection{wxGrid::GetLabelAlignment}\label{wxgridgetlabelalignment} + +\func{int}{GetLabelAlignment}{\param{int}{ orientation}} + +Gets the row or column label alignment. {\it orientation} should +be wxHORIZONTAL to specify column label, wxVERTICAL to specify row label.\rtfsp +{\it alignment} should be wxCENTRE, wxLEFT or wxRIGHT. + +\membersection{wxGrid::GetLabelBackgroundColour}\label{wxgridgetlabelbackgroundcolour} + +\func{wxColour\&}{GetLabelBackgroundColour}{\void} + +Gets a row and column label text colour. + +\membersection{wxGrid::GetLabelSize}\label{wxgridgetlabelsize} + +\func{int}{GetLabelSize}{\param{int}{ orientation}} + +Gets the row label height, or column label width, in pixels. {\it orientation} should +be wxHORIZONTAL to specify column label, wxVERTICAL to specify row label. + +\membersection{wxGrid::GetLabelTextColour}\label{wxgridgetlabeltextcolour} + +\func{wxColour\&}{GetLabelTextColour}{\void} + +Gets a row and column label text colour. + +\membersection{wxGrid::GetLabelTextFont}\label{wxgridgetlabeltextfont} + +\func{wxFont *}{GetLabelTextFont}{\void} + +Gets the font to be used for the row and column labels. + +\membersection{wxGrid::GetLabelValue}\label{wxgridgetlabelvalue} + +\func{wxString\&}{GetLabelValue}{\param{int}{ orientation}, \param{int}{ pos}} + +Gets a row or column label value. {\it orientation} should +be wxHORIZONTAL to specify column label, wxVERTICAL to specify row label.\rtfsp +{\it pos} is the label position. + +\membersection{wxGrid::GetRowHeight}\label{wxgridgetrowheight} + +\func{int}{GetRowHeight}{\param{int}{ row}} + +Gets the height in pixels for row {\it row}. + +\membersection{wxGrid::GetRows}\label{wxgridgetrows} + +\func{int}{GetRows}{\void} + +Returns the number of rows in the grid. + +\membersection{wxGrid::GetScrollPosX}\label{wxgridgetscrollposx} + +\func{int}{GetScrollPosX}{\void} + +Returns the column scroll position. + +\membersection{wxGrid::GetScrollPosY}\label{wxgridgetscrollposy} + +\func{int}{GetScrollPosY}{\void} + +Returns the row scroll position. + +\membersection{wxGrid::GetTextItem}\label{wxgridgettextitem} + +\func{wxText *}{GetTextItem}{\void} + +Returns a pointer to the text item used for entering text into a cell. + +\membersection{wxGrid::GetVertScrollBar}\label{wxgridgetvertscrollbar} + +\func{wxScrollBar *}{GetVertScrollBar}{\void} + +Returns a pointer to the vertical scrollbar. + +\membersection{wxGrid::InsertCols}\label{wxgridinsertcols} + +\func{bool}{InsertCols}{\param{int}{ pos=0}, \param{int}{ n=1}, \param{bool}{ updateLabels=TRUE}} + +Inserts {\it n} number of columns before position {\it pos}. If {\it updateLabels} is TRUE, +the function OnChangeLabels is called to give the application the opportunity to relabel. + +\membersection{wxGrid::InsertRows}\label{wxgridinsertrows} + +\func{bool}{InsertRows}{\param{int}{ pos=0}, \param{int}{ n=1}, \param{bool}{ updateLabels=TRUE}} + +Inserts {\it n} number of rows before position {\it pos}. If {\it updateLabels} is TRUE, +the function OnChangeLabels is called to give the application the opportunity to relabel. + +\membersection{wxGrid::OnActivate}\label{wxgridonactivate} + +\func{void}{OnActivate}{\param{bool}{ active}} + +Sets the text item to have the focus. Call this function when the wxGrid window should have the +focus, for example from wxFrame::OnActivate. + +\membersection{wxGrid::OnChangeLabels}\label{wxgridonchangelabels} + +\func{void}{OnChangeLabels}{\void} + +Called when rows and columns are created or deleted, to allow the application an +opportunity to update the labels. By default, columns are labelled alphabetically, +and rows numerically. + +\membersection{wxGrid::OnChangeSelectionLabel}\label{wxgridonchangeselectionlabel} + +\func{void}{OnChangeSelectionLabel}{\void} + +Called when a cell is selected, to allow the application an +opportunity to update the selection label (the label of the wxText item +used for entering cell text). By default, the cell column letter and row +number are concatenated to form the selection label. + +\membersection{wxGrid::OnCreateCell}\label{wxgridoncreatecell} + +\func{wxGridCell *}{OnCreateCell}{\void} + +Override this virtual function if you want to replace the normal wxGridCell with a derived +class. + +\membersection{wxGrid::OnCellLeftClick}\label{wxgridoncellleftclick} + +\func{void}{OnLeftClick}{\param{int}{ row}, \param{int}{ col}, \param{int}{ x}, \param{int}{ y}, \param{bool}{ control}, \param{bool}{ shift}} + +Virtual function called when the left button is depressed within a cell, just after OnSelectCell is called. + +\membersection{wxGrid::OnCellRightClick}\label{wxgridoncellrightclick} + +\func{void}{OnRightClick}{\param{int}{ row}, \param{int}{ col}, \param{int}{ x}, \param{int}{ y}, \param{bool}{ control}, \param{bool}{ shift}} + +Virtual function called when the right button is depressed within a cell, just after OnSelectCell is called. + +\membersection{wxGrid::OnLabelLeftClick}\label{wxgridonlabelleftclick} + +\func{void}{OnLeftClick}{\param{int}{ row}, \param{int}{ col}, \param{int}{ x}, \param{int}{ y}, \param{bool}{ control}, \param{bool}{ shift}} + +Virtual function called when the left button is depressed within a +label. + +{\it row} will be {\it -1} if the click is in the top labels. + +{\it col} will be {\it -1} if the click is in the left labels. + +{\it row} and {\it col} will be {\it -1} if the click is in the upper +left corner. + +\membersection{wxGrid::OnLabelRightClick}\label{wxgridonlabelrightclick} + +\func{void}{OnRightClick}{\param{int}{ row}, \param{int}{ col}, \param{int}{ x}, \param{int}{ y}, \param{bool}{ control}, \param{bool}{ shift}} + +Virtual function called when the right button is depressed within a label. + +{\it row} will be {\it -1} if the click is in the top labels. + +{\it col} will be {\it -1} if the click is in the left labels. + +{\it row} and {\it col} will be {\it -1} if the click is in the upper +left corner. + +\membersection{wxGrid::OnSelectCell}\label{wxgridonselectcell} + +\func{void}{OnSelectCell}{\param{int}{ row}, \param{int}{ col}} + +Virtual function called when the user left-clicks on a cell. + +\membersection{wxGrid::OnSelectCellImplementation}\label{wxgridonselectcellimplementation} + +\func{void}{OnSelectCellImplementation}{\param{wxDC *}{dc}, \param{int}{ row}, \param{int}{ col}} + +Virtual function called when the user left-clicks on a cell. If you override this function, +call wxGrid::OnSelectCell to apply the default behaviour. + +\membersection{wxGrid::SetCellAlignment}\label{wxgridsetcellalignment} + +\func{void}{SetCellAlignment}{\param{int}{ alignment}, \param{int}{ row}, \param{int}{ col}} + +\func{void}{SetCellAlignment}{\param{int}{ alignment}} + +Sets the text alignment for the cell at the given position, or for the whole grid. {\it alignment} may be wxLEFT, wxRIGHT or wxCENTRE. + +\membersection{wxGrid::SetCellBackgroundColour}\label{wxgridsetcellbackgroundcolour} + +\func{void}{SetCellBackgroundColour}{\param{const wxColour\&}{ colour}, \param{int}{ row}, \param{int}{ col}} + +\func{void}{SetCellBackgroundColour}{\param{const wxColour\&}{ colour}} + +Sets the background colour for the cell at the given position, or for the whole grid. + +\membersection{wxGrid::SetCellTextColour}\label{wxgridsetcelltextcolour} + +\func{void}{SetCellTextColour}{\param{const wxColour\&}{ colour}, \param{int}{ row}, \param{int}{ col}} + +\func{void}{SetCellTextColour}{\param{const wxColour\&}{ colour}} + +Sets the text colour for the cell at the given position, or for the whole grid. + +\membersection{wxGrid::SetCellTextFont}\label{wxgridsetcelltextfont} + +\func{void}{SetCellTextFont}{\param{wxFont *}{font}, \param{int}{ row}, \param{int}{ col}} + +\func{void}{SetCellTextFont}{\param{wxFont *}{font}} + +Sets the text font for the cell at the given position, or for the whole grid. + +\membersection{wxGrid::SetCellValue}\label{wxgridsetcellvalue} + +\func{void}{SetCellValue}{\param{const wxString\&}{ val}, \param{int}{ row}, \param{int}{ col}} + +Sets the cell value at the given position. + +\membersection{wxGrid::SetColumnWidth}\label{wxgridsetcolumnwidth} + +\func{void}{SetColumnWidth}{\param{int}{ col}, \param{int}{ width}} + +Sets the width in pixels for column {\it col}. + +\membersection{wxGrid::SetDividerPen}\label{wxgridsetdividerpen} + +\func{void}{SetDividerPen}{\param{wxPen *}{pen}} + +Specifies the pen to be used for drawing the divisions between cells. The default +is a light grey. If NULL is specified, the divisions will not be drawn. + +\membersection{wxGrid::SetEditable}\label{wxgridseteditable} + +\func{void}{SetEditable}{\param{bool}{ editable}} + +If {\it editable} is TRUE (the default), the grid cells will be editable by means of the +text edit control. If FALSE, the text edit control will be hidden and the user will not +be able to edit the cell contents. + +\membersection{wxGrid::SetGridCursor}\label{wxgridsetgridcursor} + +\func{void}{SetGridCursor}{\param{int }{row}, \param{int}{ col}} + +Sets the position of the selected cell. + +\membersection{wxGrid::SetLabelAlignment}\label{wxgridsetlabelalignment} + +\func{void}{SetLabelAlignment}{\param{int}{ orientation}, \param{int}{ alignment}} + +Sets the row or column label alignment. {\it orientation} should +be wxHORIZONTAL to specify column label, wxVERTICAL to specify row label.\rtfsp +{\it alignment} should be wxCENTRE, wxLEFT or wxRIGHT. + +\membersection{wxGrid::SetLabelBackgroundColour}\label{wxgridsetlabelbackgroundcolour} + +\func{void}{SetLabelBackgroundColour}{\param{const wxColour\&}{ value}} + +Sets a row or column label background colour. + +\membersection{wxGrid::SetLabelSize}\label{wxgridsetlabelsize} + +\func{void}{SetLabelSize}{\param{int}{ orientation}, \param{int}{ size}} + +Sets the row label height, or column label width, in pixels. {\it orientation} should +be wxHORIZONTAL to specify column label, wxVERTICAL to specify row label. + +If a dimension of zero is specified, the row or column labels will not be +shown. + +\membersection{wxGrid::SetLabelTextColour}\label{wxgridsetlabeltextcolour} + +\func{void}{SetLabelTextColour}{\param{const wxColour\&}{ value}} + +Sets a row and column label text colour. + +\membersection{wxGrid::SetLabelTextFont}\label{wxgridsetlabeltextfont} + +\func{void}{SetLabelTextFont}{\param{wxFont *}{font}} + +Sets the font to be used for the row and column labels. + +\membersection{wxGrid::SetLabelValue}\label{wxgridsetlabelvalue} + +\func{void}{SetLabelValue}{\param{int}{ orientation}, \param{const wxString\&}{ value}, \param{int}{ pos}} + +Sets a row or column label value. {\it orientation} should +be wxHORIZONTAL to specify column label, wxVERTICAL to specify row label.\rtfsp +{\it pos} is the label position. + +\membersection{wxGrid::SetRowHeight}\label{wxgridsetrowheight} + +\func{void}{SetRowHeight}{\param{int}{ row}, \param{int}{ height}} + +Sets the height in pixels for row {\it row}. + +\membersection{wxGrid::UpdateDimensions}\label{wxgridupdatedimensions} + +\func{void}{UpdateDimensions}{\void} + +Call this function whenever a change has been made via the API that +might alter size characteristics. You may also need to follow it with +a call to AdjustScrollbars. + + diff --git a/docs/latex/wx/grid1.bmp b/docs/latex/wx/grid1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..100be252da9ebd63d6dda0aa100973c91cb8a192 GIT binary patch literal 68518 zcmeHQJ#XB~6`kh<*usDmCp{mD)i)Xd3dupBl7b)Dn z(uIxu5>*1yEVeKpt76WbZw~KJBY|rzFK5zI^$jHk%DRo&Kk~jx47=SPsZHwHv{T!kBIuAfpjQ-xt z$r#~r)ih$X3M|dW^WwF-mV{C97?miD1ZKeFS{6nSImFn=!pQR2ETKI%lG-D%a9X7n zDyHwyU}&S0?>i_b8zZIzkT$K}bs;2~8!@l#0EFSuf>^u#tjAUkglEQJJa+ySg;$e~ z4X5{R?QQ$+3;39ahEl*P#55y0b`x1V+>8r|nS`kG7LoCu1v77~dO^=LtqpJr+c4YztX`)BeTj}gd`%2Ax*2ji5#0*MQwAI zW};ONk2D@d&gUdNR*XzQid=1EkC{`K8@rZ1mg6yeH8=n7ttv*@&#U39a=BWq7}-!Z zb-XM+A6uE&nTt712&{6SbC!THG)SpD;!DYu8)Hbt=~TIX}dRWY>& zOV2l6D;&*fRnq#L495CBGOvzOZB1Q{uTA8wJnH^KYTuz3wb~w1EXI|81Q0uZ3^N^q z$HJ@8IlZg7Fr zk?S9$1}ROebv`E*K|kO2v)SC#<+2xY2dY+etE}zO31Wu73#f55kQZ5PWRICsmm9m5 zK2~E+jX8-(rq*ET`I2f3vsJ5AtBEQ~wKa9Qq#DC))v9c**6&z{nun)ly+h~J<%U;C zJlXabzVVPd?x+|OHRx>1IT_#7<(NzKT^X$|V$H)M;%XQqi;X$q>qmLtcR2d$n)!a* zvbmP^4xLk%8(tytWa6r$llEfUV+68d47!+FgQe#SHON?1t6H&Dt3e;7+M2pts6oc6 zTCG}5q%pMyOV5{7W0_k5bkd&X z>Y6}?{?^d(5?ZBpu$JS7H<(4frj|f;3ABK zPY6b(jtJvcB|PfwA>vz z4r#x49`}kdMv}KH#;!c&p2;Qi$lRT&=X0KV+)?Lq7?LAb8`)##)aAymrH?&9d#o4( zE2Z}$d?I5ln8!t|>sW;jvb^uOf>^Gux~uLI|FF{rIqxnz@?G7*p8W3!&^bp_POD*A z#{-^MuW%{Cc-P%&gw}x5`VI?Y7$QFaBOqvS5k|tN-vkesky_dmq_&_;QIQ;vkDBYa zyS&sA4H$LaU?lUfFg|WQz*Q_!WDHn?ktjYej6tmBF-IfRbO8@V9m04CJvq1%Fx~;g z6+m5HA(9${g3w{c)kn_f5JsCooiqLZz_j|f`J8!S437X0=sT$4g%sPydtf|15@SG^ zx7z%n-jULBy$^AjT>n@xa(8R;=a;?l$khG;{Uh_~p{um+rR9cKNIZ#FmpY%r;pTj$ z_kHSe32Vb_!Xx)vBsKgL=h?NKm+?(qj=4nNRWa%wL@tkEB48O96}pez@viIC@s4^D zpe9S(Uivd^k1>xx*X{7?j(0n3ci49@$Q{zmG3uXPAJZ1_Xw&ULrFICyNE{M83shsB z4Mx|QHyc=O6Z*$ktE5f9Q^X*($72}8DA_(8u2#=4blRjCqu-Q4mODfpfHF{lQMbt1 zU~J7GYJf4C2Ox}~Ozn=<4linuV3bG&tsxyQk2#Fd{Hnp|@VGqz4>q9A4`VdHsxeYu zp;N#$e~e)w02nDU1yx#0(X&8EGvu*{F(AoX6=QU7+Q=R=OUsR&Lm$hx z^Wl-fK#j2^wajNZ*VN^>YxH~xk0n@US0=%@iZtrX@O3j4rzH|a%w1u;~qhZgKYob4g?hA6|{6Ws( zPD169@nac}xL zILKLf9_&j63>A5#i-p5f=a zlw&UvJ1fQ~<)>5^F=eb>!eei8B%kSh!;>%8|0ZaHawDfOhg!39F~1SHRZJS@kq{-pdKdFj_q??bYYO@h!_^#W)Z4 zLM@lYBSy??yeP?SkE>?oF=C+#EpaqUIkJVX{evlZgjO{+!5AHTBKA?=;b|273{Wx7Shc)X(Ps!sD|Y;7els9u%V7*HQ;4;J zD(f8b{K;GtkI-zy7;@2ys@|cf)J)7m9wWdr0Txx$W5m!3!z<4o%?e<7MzdOB@Vr(l zW^q__mcust7~QlLzyTfr5=isUjGqr1Or~}zMqi9DfbgTNUv*V;aMA z4z)R&)3IcsJzA|QVOsSuhoB&Qz<8L>hv4F=z#dvGt5io+LH-M{Sjs`@rM(dd5dx$Y-h_TP( z`?b0_dG_I*7hs5+I_7x4Hp0Qa|0#2~8Y0D2&tuXan}0pOIDPT*)Yp*`#>W{!U zY>d9|NaAX<{`k$9| literal 0 HcmV?d00001 diff --git a/docs/latex/wx/grid1.eps b/docs/latex/wx/grid1.eps new file mode 100644 index 0000000000..76fcc9540b --- /dev/null +++ b/docs/latex/wx/grid1.eps @@ -0,0 +1,771 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: /home/jacs/wx/utils/wxgrid/docs/grid1.eps +%%Creator: XV Version 3.10a Rev: 12/29/94 - by John Bradley +%%BoundingBox: 36 216 576 576 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% define space for color conversions +/grays 450 string def % space for gray scale line +/npixls 0 def +/rgbindx 0 def + +% lower left corner +36 216 translate + +% size of image (on paper, in 1/72inch coords) +540.00000 360.00000 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays 0 npixls getinterval + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 39 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 bf0000 00bf00 bfbf00 0000bf 00bfbf c0c0c0 808080 ff0000 00ff00 +ffff00 00ffff ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +450 300 8 % dimensions of data +[450 0 0 -300 0 300] % mapping matrix +rlecmapimage + +7f067f067f0640060000 +81060c7f0c7f0c7f0c3d0c810700 +82060c067f067f067f063c06810700 +82060c067f067f067f063c06810700 +82060c068106047f047f047f0438040106810700 +82060c068106048204060c820c060783070c0702010203098102047f047f047f04260401 +06810700 +82060c068106048104060106830001020781070283020702098109028102047f047f0472 +040e0c81000c0d0c81000481040c0d0c81000481040682060700 +82060c06810604810406010601008102078507020902070201028109047f047f04720481 +0c060b068307000c060b068207000482040c060b068207000481040682060700 +82060c0681060481040601068300040307820702098409020702098109041104040c0604 +010c0404010c0504030c1904010c7f047f042504810c060b068307000c06810600070001 +068207000482040c060b068207000481040682060700 +82060c0681060481040601068304000a0789070209020002070209041004010c0204010c +0c04010c0404010c0104010c1804010c7f047f042504810c060b068307000c0681060007 +0001068207000482040c06010601000306010001068207000481040682060700 +82060c068106048204070681060001000107010286000209020702041004010c1104010c +0404010c1c04010c7f047f042504810c060b068307000c06820600060506810006830607 +000482040c06020601000106010002068207000481040682060700 +82060c0681060485040c0607060c010c8407020002090109820200040104010c81040c82 +0c040c820c040c820c040c820c040c810c040504020c81040c810c0481040c030c040401 +0c0604030c0104060c0104040c0104010c0104030c7f047f041f04810c060b068307000c +06820600060506810006830607000482040c060306030003068207000481040682060700 + +82060c068106048104070507010006020204010c81040c820c040c820c040c820c040c82 +0c040c820c040c020c0104010c0104010c81040c810c0481040c810c040404030c060401 +0c81040c820c040c820c040c820c040c810c0481040c820c040c820c040c810c0481040c +810c047f047f041d04810c060b068307000c06820600060506810006830607000482040c +060406010004068207000481040682060700 +82060c068106048104050505010006030204070c0104020c0104010c0204010c0104010c +0104010c81040c810c0481040c810c040704010c0204040c81040c820c040c820c040c82 +0c040c810c0481040c820c040c820c040c040c7f047f041e04810c060b068307000c0682 +0600060506810006830607000482040c060306030003068207000481040682060700 +82060c0681060481040b010b8205010b830b05030a020a81030a810a040104070c010402 +0c0104010c0204010c0104010c0104010c81040c810c0481040c810c040704010c010401 +0c0104010c81040c820c040c820c040c820c040c810c0481040c820c040c820c040c810c +047f047f042104810c060b068307000c06820600060506810006830607000482040c0602 +0601000106010002068207000481040682060700 +82060c068106048c040b05070507050b05030a030a840a03000a040204010c0104010c01 +04010c81040c820c040c810c0481040c010c0104010c0104010c81040c810c0481040c81 +0c040304010c0104010c0104010c0104010c81040c820c040c820c040c820c040c810c04 +81040c820c040c820c040c810c0481040c810c047f047f041d04810c0601060500030683 +07000c06820600060506810006830607000482040c060106010003060100010682070004 +81040682060700 +82060c0681060482040b08020886070b05030a030a010a82030a040204010c0104010c01 +04010c81040c810c0481040c040c0104010c0104010c0104040c0504030c0304040c8104 +0c820c040c820c040c820c040c030c0104010c0104030c7f047f041f04810c0601060500 +03068307000c06810600070001068207000482040c060b068207000481040682060700 +82060c0681060482040b080208010b8205030a810a0384030a030a044304010c7f047f04 +2c04810c060b068307000c060b068207000482040c060b068207000481040682060700 +82060c0681060482040b080308850b05030a030a010a82000a044304010c7f047f042c04 +810c070c0782000c070c0781000482040c070c0781000481040682060700 +82060c068106048c040b05080108010b05030a030a810a0382030a047f047f0472041f00 +01040f0001040106810700 +82060c0681060481040b050b8205030a050a7f047f047f0427040106810700 +82060c068106047f047f047f0438040106810700 +82060c067f067f067f063c06810700 +82060c067f067f067f063c06810700 +82060c067f067f067f063c06810700 +82060c067f067f067f063c06810700 +82060c067f067f067f063c06810700 +82060c0607060400840600060006120602000e068100067f067f067f060306810700 +82060c0607068100060506810006110681000601068100060606810006820600067f067f +067f060606810700 +82060c060706810006050681000611068100060a06810006820600067f067f067f060606 +810700 +82060c0607068100060306830006000681060001000d0681000605060200010601008106 +00860006000600060081000601060300010601007f067f067406810700 +82060c060706030001068500060006000601068100060c06020002068100060106830006 +000682060006830600060081000684060006000601068300060006820600067f067f0672 +06810700 +82060c060706810006030684000600060003001006810006810600030082060006820600 +06840600060006010683000600060106810006820600067f067f067406810700 +82060c060706810006030685000600060006130681000682060006030681000682060006 +84060006000601068300060006010681000601068100067f067f067306810700 +82060c06070681000603068500060006000601068100060b068100060106810006820600 +060106830006000682060006840600060006010683000600060106830006000682060006 +7f067f067206810700 +82060c0607068100060306830006000681060001000e0602000306020002068100068606 +00060006000601068100068106000200010601007f067f067406810700 +82060c0642068100067f067f067706810700 +82060c060606050015060600140603007f067f067906810700 +82060c067f067f067f063c06810700 +82060c067f067f067f063c06810700 +82060c067f067f067f063c06810700 +82060c067f067f067f063c06810700 +82060c061b067f077f077f071e070106810700 +82060c061b068107007f007f007f001b000206810700 +82060c061b068207000c7f0c7f0c7f0c1a0c0206810700 +82060c061b068207000c7f0c7f0c7f0c1a0c0206810700 +82060c061b068207000c7f0c7f0c7f0c1a0c0206810700 +82060c061b068207000c7f0c7f0c7f0c1a0c0206810700 +82060c061b068207000c810c000200820c000c0a0c81000c0f0c81000c820c000c7f0c7f +0c700c0206810700 +82060c060806810006040681000609068207000c820c000c0f0c81000c0f0c81000c820c +000c7f0c7f0c700c0206810700 +82060c0607068300060006020601000a068207000c820c000c020c81000c810c00010001 +0c0600040c0200020c0200010c81000c820c000c7f0c7f0c700c0206810700 +82060c06070683000600060106830006000609068207000c810c000200820c000c820c00 +0c010c81000c030c81000c030c81000c010c83000c000c010c83000c000c820c000c7f0c +7f0c700c0206810700 +82060c0606068100060106810006020681000609068207000c820c000c020c81000c820c +000c020c0200010c81000c030c81000c030c0400820c000c820c000c7f0c7f0c700c0206 +810700 +82060c0606060400030681000609068207000c820c000c020c81000c820c000c050c8300 +0c000c030c81000c010c83000c000c030c81000c820c000c7f0c7f0c700c0206810700 +82060c0606068100060106810006020681000609068207000c820c000c020c81000c820c +000c010c0300010c0100040c0200020c0300820c000c820c000c7f0c7f0c700c02068107 +00 +82060c0605068100060306810006010681000609068207000c7f0c7f0c7f0c1a0c020681 +0700 +82060c061b068207000c7f0c7f0c7f0c1a0c0206810700 +82060c061b068207000c7f0c7f0c7f0c1a0c0206810700 +82060c061b068207000c7f0c7f0c7f0c1a0c0206810700 +82060c061b068207000c7f0c7f0c7f0c1a0c0206810700 +82060c061b068107067f067f067f061e06810700 +82060c061b067f0c7f0c7f0c1e0c0106810700 +82060c067f067f067f063c06810700 +82060c067f067f067f063c06810700 +82060c067f067f067f063c06810700 +82060c067f067f067f063c06810700 +82060c067f067f067f063c06810700 +82060c068106007f007f007f0028000e0681000682060700 +82060c0682060006250681000c4d0c81000c4d0c81000c4d0c81000c7f0c0f0c81060c0b +0c8207000682060700 +82060c0682060006250682000c064c0682000c064c0682000c064c0682000c067f060f06 +810c060a068207000682060700 +82060c0682060006250682000c064c0682000c064c0682000c064c0682000c067f060f06 +810c060a068207000682060700 +82060c0682060006250682000c064c0682000c064c0682000c064c0682000c067f060f06 +810c060a068207000682060700 +82060c0682060006250682000c0624060200240682000c0622060500230682000c062406 +0400220682000c065e0604002b06810c060a068207000682060700 +82060c0682060006250682000c0624060200240682000c06220601000206010022068200 +0c062306010002060100210682000c065e060100010601002a06810c0603068100060406 +8207000682060700 +82060c0682060006250682000c0623060100810600810006220682000c06220601000206 +0100220682000c0622060100270682000c065e060100020601002906810c060206020004 +068207000682060700 +82060c0682060006250682000c0623060100810600810006220682000c06220601000206 +0100220682000c0622060100270682000c065e060100020601002906810c060106040003 +068207000682060700 +82060c0682060006250682000c0623060100810600810006220682000c06220605002306 +82000c0622060100270682000c065e060100020601002906810c06810600050002068207 +000682060700 +82060c0682060006250682000c062206010002060100220682000c062206010002060100 +220682000c0622060100270682000c065e060100020601002906810c060a068207000682 +060700 +82060c0682060006250682000c062206010002060100220682000c062206010002060100 +220682000c0622060100270682000c065e060100020601002906810c060a068207000682 +060700 +82060c0682060006250682000c0622060600220682000c06220601000206010022068200 +0c0622060100270682000c065e060100020601002906810c060a068207000682060700 +82060c0682060006250682000c062106010004060100210682000c062206010002060100 +220682000c062306010002060100210682000c065e060100010601002a06810c060a0682 +07000682060700 +82060c0682060006250682000c062106010004060100210682000c062206050023068200 +0c0624060400220682000c065e0604002b060d0781000682060700 +82060c0682060006250682000c064c0682000c064c0682000c064c0682000c067f060e06 +0f000106810700 +82060c0682060006250682000c064c0682000c064c0682000c064c0682000c067f061d06 +81000682060700 +82060c0682060006250682000c064c0682000c064c0682000c064c0682000c067f060f06 +0c0c8207000682060700 +82060c0682060006250682000c064c0682000c064c0682000c064c0682000c067f060f06 +810c060a068207000682060700 +82060c0682060006250682000c064c0682000c064c0682000c064c0682000c067f060f06 +810c060a068207000682060700 +82060c068106007f007f007f00280082060c060a068207000682060700 +82060c068206000c250c4f0081060c4d0c81060c4d0c81060c7f0c0f0c82060c060a0682 +07000682060700 +82060c068306000c06240601004c0c8200060c4d0c81060c4d0c81060c7f0c0f0c82060c +060a068207000682060700 +82060c068306000c06240601004c0c8200060c4d0c81060c4d0c81060c7f0c0f0c82060c +060a068207000682060700 +82060c068306000c06240601004c0c8200060c4d0c81060c4d0c81060c7f0c0f0c82060c +060a068207000682060700 +82060c068306000c0624060100030c0700210c0100010c0100180c8200060c4d0c81060c +4d0c81060c7f0c0f0c82060c060a068207000682060700 +82060c068306000c061006010011060100040c81000c030c83000c000c0b0c81000c110c +81000c010c81000c170c8200060c4d0c81060c4d0c81060c7f0c0f0c82060c060a068207 +000682060700 +82060c068306000c060f06020011060100040c81000c820c000c820c000c0d0c81000c11 +0c81000c010c81000c170c8200060c4d0c81060c4d0c81060c7f0c0f0c82060c060a0682 +07000682060700 +82060c068306000c060e06030011060100040c81000c820c000c010c0100810c0082000c +0082000c000100810c000200050c0200020c0200020c81000c010c81000c170c8200060c +4d0c81060c4d0c81060c7f0c0f0c82060c060a068207000682060700 +82060c068306000c060e068200060081000610060100040c0300030c81000c840c000c00 +0c820c000c020c81000c050c81000c820c000c820c000c820c000c820c000c010c81000c +180c8200060c4d0c81060c4d0c81060c7f0c0f0c82060c060a068207000682060700 +82060c068306000c061006010011060100030c81000c820c000c020c81000c010c010002 +0c81000c020c81000c050c81000c020c81000c010c81000c820c000c010c81000c180c82 +00060c4d0c81060c4d0c81060c7f0c0f0c8106070c0781000682060700 +82060c068306000c061006010011060100030c81000c820c000c020c81000c010c81000c +030c81000c010c81000c040c81000c030c81000c820c000c010c81000c010c81000c180c +8200060c4d0c81060c4d0c81060c7f0c0f0c0f000106810700 +82060c068306000c061006010011060100030c81000c050c81000c010c81000c040c8100 +0c820c000c040c81000c030c0200030c81000c010c81000c180c8200060c4d0c81060c4d +0c81060c7f0c0f0c8107060c0681070682060700 +82060c068306000c061006010011060100020c81000c050c81000c010c81000c020c8100 +0c860c000c000c000c030c81000c820c000c820c000c010c83000c000c010c81000c190c +8200060c4d0c81060c4d0c81060c7f0c0f0c8107060c0681070682060700 +82060c068306000c061006010011060100010c0200050c0100010c81000c020c0200010c +0100060c0100030c0200010c0100010c0100190c8200060c4d0c81060c4d0c81060c7f0c +0f0c8107060c0681070682060700 +82060c068306000c0610060100110601004c0c8200060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c06240601004c0c8200060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240601004c0c8200060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240601004c0c8200060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068206000625064f0081060c4d0c81060c4d0c81060c7f0c0f0c8107060c068107 +0682060700 +82060c0681060027007f067f067f06820607060c0681070682060700 +82060c068206000c250c81000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c8107060c +0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c050c81080c150c81080c210c81080c820c +080c060c81060c4d0c81060c7f0c0f0c8107060c0681070682060700 +82060c068306000c060e060300110681000c4d0c81060c040c83080c080c100c81080c01 +0c81080c210c81080c820c080c060c81060c4d0c81060c7f0c0f0c8107060c0681070682 +060700 +82060c068306000c060d06010001060100100681000c4d0c81060c040c83080c080c100c +81080c010c81080c210c81080c820c080c060c81060c4d0c81060c7f0c0f0c8107060c06 +81070682060700 +82060c068306000c0611060100100681000c4d0c81060c040c83080c080c020c82080c08 +81080c020c0208010c0208010c82080c0881080c020c0208020c83080c080c040c020803 +0c0208020c81080c820c080c060c81060c4d0c81060c7f0c0f0c8107060c068107068206 +0700 +82060c068306000c0611060100100681000c4d0c81060c030c81080c010c81080c010c01 +08010c81080c820c080c010c81080c820c080c010c0108010c81080c820c080c010c8108 +0c810c0881080c040c81080c010c81080c820c080c010c81080c820c080c820c080c060c +81060c4d0c81060c7f0c0f0c8107060c0681070682060700 +82060c068306000c0610060100110681000c4d0c81060c030c81080c010c81080c010c81 +080c010c81080c820c080c010c81080c820c080c010c81080c010c81080c820c080c010c +81080c820c080c050c81080c040c81080c010c81080c820c080c820c080c060c81060c4d +0c81060c7f0c0f0c8107060c0681070682060700 +82060c068306000c060f060200110681000c4d0c81060c020c0608010c81080c010c8108 +0c820c080c010c81080c820c080c010c81080c010c81080c810c080308010c81080c050c +81080c040c0408010c81080c820c080c060c81060c4d0c81060c7f0c0f0c8107060c0681 +070682060700 +82060c068306000c060f060100120681000c4d0c81060c020c81080c030c81080c820c08 +0c010c81080c820c080c010c81080c820c080c010c81080c010c81080c820c080c040c81 +080c050c81080c040c81080c040c81080c820c080c060c81060c4d0c81060c7f0c0f0c81 +07060c0681070682060700 +82060c068306000c060e060100130681000c4d0c81060c010c81080c050c83080c080c01 +0c81080c820c080c010c81080c820c080c010c81080c010c81080c820c080c010c81080c +820c080c050c81080c010c81080c820c080c010c81080c820c080c820c080c060c81060c +4d0c81060c7f0c0f0c8107060c0681070682060700 +82060c068306000c060d060100140681000c4d0c81060c010c81080c050c83080c080c01 +0c81080c010c0208020c0108010c81080c010c81080c010c0208020c81080c060c020803 +0c0208020c81080c820c080c060c81060c4d0c81060c7f0c0f0c8107060c068107068206 +0700 +82060c068306000c060d060500100681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c0682060006250681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c8107060c +0681070682060700 +82060c0681060027007f067f067f06820607060c0681070682060700 +82060c068206000c250c81000c4d0c81060c4d0c81060b4d0b81060c7f0c0f0c8107060c +0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060b4d0b81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060b4d0b81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060b4d0b81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060b020b81000b030b81000b280b +81000b170b81060c7f0c0f0c8107060c0681070682060700 +82060c068306000c060e060300110681000c4d0c81060c4d0c81060b030b81000b010b81 +000b080b81000b1a0b81000b010b81000b170b81060c7f0c0f0c8107060c068107068206 +0700 +82060c068306000c060d06010001060100100681000c4d0c81060c4d0c81060b030b8100 +0b010b81000b080b81000b1a0b81000b010b81000b170b81060c7f0c0f0c8107060c0681 +070682060700 +82060c068306000c0611060100100681000c4d0c81060c4d0c81060b040b83000b000b03 +0b0200010b0200060b0200020b82000b0081000b020b0200010b0200010b82000b008100 +0b020b0200020b83000b000b040b81000b820b060c7f0c0f0c8107060c06810706820607 +00 +82060c068306000c0611060100100681000c4d0c81060c4d0c81060b040b83000b000b02 +0b81000b010b81000b820b000b050b81000b010b81000b810b0081000b820b000b820b00 +0b010b81000b820b000b010b0100010b81000b820b000b010b81000b810b0081000b040b +81000b010b81060c7f0c0f0c8107060c0681070682060700 +82060c068306000c060f060200110681000c4d0c81060c4d0c81060b050b81000b030b81 +000b010b81000b820b000b090b81000b820b000b010b81000b820b000b010b81000b820b +000b010b81000b010b81000b820b000b010b81000b820b000b050b81000b010b81060c7f +0c0f0c8107060c0681070682060700 +82060c068306000c0611060100100681000c4d0c81060c4d0c81060b050b81000b030b04 +00010b81000b060b0300010b81000b010b81000b820b000b010b81000b820b000b010b81 +000b010b81000b810b000300010b81000b050b81000b010b81060c7f0c0f0c8107060c06 +81070682060700 +82060c068306000c0611060100100681000c4d0c81060c4d0c81060b050b81000b030b81 +000b040b81000b050b81000b010b81000b820b000b010b81000b820b000b010b81000b82 +0b000b010b81000b010b81000b820b000b040b81000b050b81000b010b81060c7f0c0f0c +8107060c0681070682060700 +82060c068306000c0611060100100681000c4d0c81060c4d0c81060b050b81000b030b81 +000b010b81000b820b000b050b81000b810b0081000b820b000b010b81000b820b000b01 +0b81000b820b000b010b81000b010b81000b820b000b010b81000b820b000b050b81000b +010b81060c7f0c0f0c8107060c0681070682060700 +82060c068306000c060d06010001060100100681000c4d0c81060c4d0c81060b050b8100 +0b040b0200020b0100060b0100820b000b820b000b010b81000b010b0200020b0100010b +81000b010b81000b010b0200020b81000b060b81000b820b060c7f0c0f0c8107060c0681 +070682060700 +82060c068306000c060e060300110681000c4d0c81060c4d0c81060b4d0b81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060b4d0b81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060b4d0b81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060b4d0b81060c7f0c0f0c810706 +0c0681070682060700 +82060c0682060006250681000c4d0c81060c4d0c81060b4d0b81060c7f0c0f0c8107060c +0681070682060700 +82060c0681060027007f067f067f06820607060c0681070682060700 +82060c068206000c250c81000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c8107060c +0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c0610060100110681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c0610060100110681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c060f060200110681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c060f060200110681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c060e0682000600810006100681000c4d0c81060c4d0c81060c4d0c81 +060c7f0c0f0c8107060c0681070682060700 +82060c068306000c060e0682000600810006100681000c4d0c81060c4d0c81060c4d0c81 +060c7f0c0f0c8107060c0681070682060700 +82060c068306000c060d06810006810600810006100681000c4d0c81060c4d0c81060c4d +0c81060c7f0c0f0c8107060c0681070682060700 +82060c068306000c060d060500100681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c0610060100110681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c0610060100110681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c0682060006250681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c8107060c +0681070682060700 +82060c0681060027007f067f067f06820607060c0681070682060700 +82060c068206000c250c81000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c8107060c +0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c060e060400100681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c060e060100130681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c060d060100140681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c060d060400110681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c060d06010001060100100681000c4d0c81060c4d0c81060c4d0c8106 +0c7f0c0f0c8107060c0681070682060700 +82060c068306000c0611060100100681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c0611060100100681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c0611060100100681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c060d06010001060100100681000c4d0c81060c4d0c81060c4d0c8106 +0c7f0c0f0c8107060c0681070682060700 +82060c068306000c060e060300110681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c0682060006250681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c8107060c +0681070682060700 +82060c0681060027007f067f067f06820607060c0681070682060700 +82060c068206000c250c81000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c8107060c +0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c060f060200110681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c060e068100068106008100060f0681000c4d0c81060c4d0c81060c4d +0c81060c7f0c0f0c8107060c0681070682060700 +82060c068306000c060d060100140681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c060d060100140681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c060d060400110681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c060d06010001060100100681000c4d0c81060c4d0c81060c4d0c8106 +0c7f0c0f0c8107060c0681070682060700 +82060c068306000c060d06010001060100100681000c4d0c81060c4d0c81060c4d0c8106 +0c7f0c0f0c8107060c0681070682060700 +82060c068306000c060d06010001060100100681000c4d0c81060c4d0c81060c4d0c8106 +0c7f0c0f0c8107060c0681070682060700 +82060c068306000c060d06010001060100100681000c4d0c81060c4d0c81060c4d0c8106 +0c7f0c0f0c8107060c0681070682060700 +82060c068306000c060e060300110681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c0682060006250681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c8107060c +0681070682060700 +82060c0681060027007f067f067f06820607060c0681070682060700 +82060c068206000c250c81000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c8107060c +0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c060d060500100681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c0611060100100681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c0610060100110681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c0610060100110681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c060f060100120681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c060f060100120681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c060f060100120681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c060e060100130681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c060e060100130681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c060e060100130681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c0682060006250681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c8107060c +0681070682060700 +82060c0681060027007f067f067f06820607060c0681070682060700 +82060c068206000c250c81000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c8107060c +0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c810706 +0c0681070682060700 +82060c068306000c060e060300110681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c060d06010001060100100681000c4d0c81060c4d0c81060c4d0c8106 +0c7f0c0f0c8107060c0681070682060700 +82060c068306000c060d06010001060100100681000c4d0c81060c4d0c81060c4d0c8106 +0c7f0c0f0c8107060c0681070682060700 +82060c068306000c060d06010001060100100681000c4d0c81060c4d0c81060c4d0c8106 +0c7f0c0f0c8107060c0681070682060700 +82060c068306000c060e060300110681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8107060c0681070682060700 +82060c068306000c060d06010001060100100681000c4d0c81060c4d0c81060c4d0c8106 +0c7f0c0f0c8107060c0681070682060700 +82060c068306000c060d06010001060100100681000c4d0c81060c4d0c81060c4d0c8106 +0c7f0c0f0c0e0681000682060700 +82060c068306000c060d06010001060100100681000c4d0c81060c4d0c81060c4d0c8106 +0c7f0c0f0c81060c0b0c8207000682060700 +82060c068306000c060d06010001060100100681000c4d0c81060c4d0c81060c4d0c8106 +0c7f0c0f0c82060c060a068207000682060700 +82060c068306000c060e060300110681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c82060c060a068207000682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c82060c +060a068207000682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c82060c +060a068207000682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c82060c +06810600050002068207000682060700 +82060c0682060006250681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c82060c06 +0106040003068207000682060700 +82060c0681060027007f067f067f060106810c060206020004068207000682060700 +82060c068206000c250c81000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c82060c06 +030681000604068207000682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c82060c +060a068207000682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c82060c +060a068207000682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c82060c +060a068207000682060700 +82060c068306000c06240681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f0c82060c +060a068207000682060700 +82060c068306000c060e060300110681000c4d0c81060c4d0c81060c4d0c81060c7f0c0f +0c8106070c0781000682060700 +82060c068306000c060d06010001060100100681000c4d0c81060c4d0c81060c4d0c8106 +0c7f0c0f0c0f000106810700 +82060c060f068100060d068100077f077f0778070e068100061006810700 +82060c0601060c0c830700060c0b0c820700067f067f0679060c0c820700061006810700 + +82060c060106810c060a06840700060c060a06820700067f067f067906810c060a068207 +00061006810700 +82060c060106810c060a06840700060c060a06820700067f067f067906810c060a068207 +00061006810700 +82060c060106810c0604068100060306840700060c060a06820700067f067f067906810c +0602068100060506820700061006810700 +82060c060106810c06030601000406840700060c060a06820700067f067f067906810c06 +020601000506820700061006810700 +82060c060106810c06020602000406840700060c060a06820700067f067f067906810c06 +020602000406820700061006810700 +82060c060106810c06010603000406840700060c060a06820700067f067f067906810c06 +020603000306820700061006810700 +82060c060106810c06020602000406840700060c060a06820700067f067f067906810c06 +020602000406820700061006810700 +82060c060106810c06030601000406840700060c060a06820700067f067f067906810c06 +020601000506820700061006810700 +82060c060106810c0604068100060306840700060c060a06820700067f067f067906810c +0602068100060506820700061006810700 +82060c060106810c060a06840700060c060a06820700067f067f067906810c060a068207 +00061006810700 +82060c060106810c060a06840700060c060a06820700067f067f067906810c060a068207 +00061006810700 +82060c060106810c060a06840700060c060a06820700067f067f067906810c060a068207 +00061006810700 +82060c0601060d07820006070c078100067f067f0679060d078100061006810700 +82060c068106001e007f077f0779070f001106810700 +82060c067f067f067f063c06810700 +82060c067f067f067f063c06810700 +8106077f077f077f073e070000 +7f007f007f004100 + +% +% Compression made this file 3.88% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/docs/latex/wx/grid1.gif b/docs/latex/wx/grid1.gif new file mode 100644 index 0000000000000000000000000000000000000000..940a0a375ccdb19729beafd97c1098bfd9ec83e1 GIT binary patch literal 4801 zcmV;y5M)j$~<` zXsWJk>jB3j5yS)#1A+*OBJ4eya7ZLRj>jS)Ib=4G%BYm)oLaBgtai)odcWYXcucm+ zI0(QQz;3rCX=*24JEUVXf+N9CARGn*3xW%S3r|!JiA#!%NR3R9k42M0kBUi|n3a-M zWuKs-qNAjxrdekPZfq23YpZW|H%oJ~a4@MZy1Tr+zQ4f1!o$QNcexcX6fn$gALTMTt`BbTm-F)U_VsG_`uqI-{{H|23LHqV zpuvL(6DnM|a6-Ek?-)v)NU@^Dix@L%+{n?MLtOsrLW&$ovZToo?Xvw+6D*c5mM^2d zM8->IO`0cD*d&It!W~(7uC463g4HsWE@1XDstRdRqAZv))ul9NQD{zqLA}Lw4M$jD z!-^eCwyara9XZBGt8p#cw{ZOh)$lXr)?`gZu(=cuNj^1yALZkFBrra|3US4?=yvhM z#*QN|o|~aANL6=L?3KJwG3SP#8A1+C8Y2P^r-6EHSvuk92MG?wzBqgKyw|M*;?B(* zVQMs8r)9R0wZq`v0^Qnv6x()fB+rjHmkyo!yy>v3XWxDsIlgz-iA zAR7~AsG)@yYAB(D6ne;Cg8czlnSfO-MWQ|<`nRBdFvck3jPSL%Vt6KsgW_-~q<13{ zHnta}dPDx0TaFi)cUg)W!19cd-9hOD(Z)0BRSe8ER z$eNilu-PV?WxDwmnysh_%$GOD*_xiE@hK-qbUI|`GsR_q=Zb!Ymgr}T{%IO&gU$q} zn~h3VsiPGI3P+?WPU@+dmts1Rrgm_8)2CO4I+>_ALaLf@9~f022ZxfVYFxL%l`E^h zxth{hz>;Ovu*4Q?>@cKmxf-E*{!!{Is=T(Atf{-yn&7T%VVjn=(GE22s{`KoEU4pl zTiUmF#fsIF&_c+o3^(lX z!w^R-@x&BYZ1KeyXRPtY9Fr;(YL`*=Z@`rm%J0c2r<{(z1^xuWLn_BC^UO56bJ;04 z=dAP2JooJL&p-!FgMc(3%!U9+CoO;_n=sWuYc8JD!PUIHt#KDE+L)e2AG;!!DovQ*5s@QO{puMzz7&WFV0vD?Sa z6F=3%dgpOrT_pPM_js0Sxx8O~SNP$AQ2Yj))k7HQpaW)q{`l*UKSJu0(z`Y?!1g@? zT}%23``ooa0|Lrd30xk#$i*D(z$QA_aSjHx!-wl|@PpjBL;*80LI)y{OWA8yyNp!A zi?pzPCtTK0RtTmF$tOfK${`MO_(I;rP<+giUju8%pc_KSLpB7FhdQ*OBR27gMtn~X zQ};v6pl67A!lM2IA2kPRHEDiL(xR=zxW!CC5QS@^pc>a##qZLGXwU%b&6x2@64w@wZcty*mIu%4QM{wF|=s};0HVS0S|nzG`%_W zp%9IzME;}jkKE0oq6H-=0aDWj9Uu(=JWyyCu66}akTeV@ov2Dz%F;2A4JLlOg&c^( z%#URBW_oy!0Ro^?LKK1!Oq)j{rnU&GX)UFaz*^Iey3|Ir^r=vdsu^lwy|c-b7BtPv zRf(pDKJWn$g77H-4$;z-O7*O0J?jG=rUtfB!L494jf)u}IgL#iN8)41nS8GIeaEi^WW=Xc$&U)4)d?i80MoZe# zn)bA)O|5EI%i7jDjBhHC964u8Tkot6a4G@gE&lhH^R0p}^=kwFYD?VWDhRfklkCT| z{$#qt6h^r4Al+a}_dnxW_qw;W*>$(e-Hv4Uv)~P{IzlVn@|qV}OS&Gv@;EH^TE)HQ zttX1q8xyUn=y+MZ34ZD8IOr9FWk`V^K1l%I6ZrSO^{pv_moi`ir%+!99)^7J$lrVw zSaAh{W;fud$b3Rp{e5?hwdz1TqdDVEKY?~*)>iE$Qx-#%r1M`ELTQI zm=7}MZYeW)O%_r#yL)EA9X3`AY>q&%W0B}YX~kLo4>jXA${3f+t9`J}b~0%G!PGxQeL2)4tpDg#|l7 zPO~tIAF9s|OKl-j*9g_%Q?>JSTgo&Oi9R7(1rjUNh9w$1*0lyvv16UY{owl3x&|_@ zdyVI7+4|bprcarpmFaI*JDk}Lcec09D^NGj*L)PUam_7h6@J@A>Mkz3H8<_E#hWzb z9!S1LHSc8j8QoR7cWt}fN>?-a-FfbJj|9#rhR;^v26nimB(6<}n;^-yrMP4EjVX%{ zPvffsIGdxbE(eQTOd!Xl$L;%qlX{N_l{G0y2>bRnMH(oe@U$qR0Cr4#+x7VjjjeC}PY*HPh4-m7-_zaribo#JlMi_1r73f*i#_uh-+VATU+-kd9U~kENb3J|b_MhO>eo8G0W&Ah zD2H0~xRQPQxa1^&nV9NHKRE1BO?&3r{%oEPBko_md`#NGVdqSRd?$R~>gSXCA9x6W z)meP*TmSp*+#` z02qJ*IDkv`cm{ZY20>o-w}1?2d}lB;NAP@Wl{7uj0}Yi{7?^JrdMODhRIYxLC zQ;~#iLjVTQhHhv8Y%l$s8np*~&{IDZR%FFeK8T9Eh>AnVO^jGFkC+F5kN^Q-jFw0Ua+r&~*o@97 zRbLhsG!QJq2!qdfjo6rtqkvou*p1%!UEdgv-N;wbP+59Wddnq_>KHTR*f#`1D`mKj z^2m<=q>9vFj({Z?WajW8LLGC7kpS(7$- zlQ@}^I=Pc$0gfpkTL>7G+vSsyvv@*zlx;-*l*zS}_f%y2fIiKIlu{``+z64DWlqnv z7p5~h_ahHB7L`*OmWWc79XS<$^A15~WS+y7Yk5CLDVA_)DOK56oYRzXd6$u-lqLX_ zc-fb`N0uePmwq{zmZO&?K$wU*dz{6Rj5$yo*_e; zXm)n3$O=MbGdK4e`DUJ53g?6jhYOAEm9JP8u#d>GM=V_7pdGmTo zzFIl;s(hJBcHugAs#ckgIH3d2|}< zF2KgI9vel;HndLk{vkwrvpBn`I_qydD|{P^v>v-dM{BfB1hP!jY|SRJB+`2339$(4 zLO**$E(@~|GPB1Pvr2?)Wec)Vq_qk1u!0k@u0gSM3nOlOAaF}<_bMcH+qd^|xBkJX zJ4vvFD?3XYabMdziR(j$dvS6rW{+zwa0;q>>v#RSZjGy-al5z_akqe5B8OX8PItL+ z$GNBjcJaxoRp+$9w{(-6v8>y(vio>>Yj39Ornmd6(W;@HLb@lLyZRcilv%jMy9>2z zdcbRCk!xm+TduyVD9g)j&1-VcTX@xbc)ROkz&E=?x4N!7y@PkXjwimBm%WVCyOm3M zq7yz%imF*R`8lz|5z?G1tCL`@Y!J|9CjK{%| zM8Ycvtwzdb5>VC=6)3`jDUx{`Xv@Pfsx62R^&!a59Z zR2(1{Jgp_G#s4tHN-M^zhIWO-#ss9ta)PlREXPYs$9*isyi3M&jIVB7!+s3Kg4`B_ z>?Zz#bj6iSLYK@YTnxe1TgGcw$0u^f+Z(&648pWKy?GqTy3xsI^16qd!-)*Zi(JK~ zJgu{A#G+ifw`|8lOh1YT%YM4aCZxaA+snUe%m(zy#LTJB?5R(zX|;TJ%nU=irpd}2 z!Pm^VeoUenyv?Ef$XVvhuB>{|Y$ROU%H7<#>Flrv49IIN&YZ!=BOK3a%)ixax%5m< z>-@m)e5&pIrM@Gkth2xR9Ky7$(73jv$5#{q4Xy)yIu1=?)XdOKe9nI|7tm?Y+Dy*; z4AMK6IZn}{7oEz8jM1J}(ZP&){TvzgjDRfN$R(Q3{QA-x7ttirVe|w(H+lpvQ-Hie zJpu*oPw2E*{WR1{9Rk<~GDl6W=hxIrJ=Gb&GVb@1PhFPWC)HHl)f50=DiPF9EqzQI z)k*EuX#LetoqkwN*5*{vX&u*G{nl$2WxjijaJ&>Kt0UfqML982^4 OPs`@_k3X_v|81Y!vHc4G literal 0 HcmV?d00001 diff --git a/docs/latex/wx/hash.tex b/docs/latex/wx/hash.tex new file mode 100644 index 0000000000..5cb1232974 --- /dev/null +++ b/docs/latex/wx/hash.tex @@ -0,0 +1,118 @@ +\section{\class{wxHashTable}}\label{wxhashtable} + +This class provides hash table functionality for wxWindows, and for an +application if it wishes. Data can be hashed on an integer or string +key. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{Example} + +Below is an example of using a hash table. + +\begin{verbatim} + wxHashTable table(KEY_STRING); + + wxPoint *point = new wxPoint(100, 200); + table.Put("point 1", point); + + .... + + wxPoint *found_point = (wxPoint *)table.Get("point 1"); +\end{verbatim} + +A hash table is implemented as an array of pointers to lists. When no +data has been stored, the hash table takes only a little more space than +this array (default size is 1000). When a data item is added, an +integer is constructed from the integer or string key that is within the +bounds of the array. If the array element is NULL, a new (keyed) list is +created for the element. Then the data object is appended to the list, +storing the key in case other data objects need to be stored in the list +also (when a `collision' occurs). + +Retrieval involves recalculating the array index from the key, and searching +along the keyed list for the data object whose stored key matches the passed +key. Obviously this is quicker when there are fewer collisions, so hashing +will become inefficient if the number of items to be stored greatly exceeds +the size of the hash table. + +\wxheading{See also} + +\helpref{wxList}{wxlist} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxHashTable::wxHashTable} + +\func{}{wxHashTable}{\param{unsigned int}{ key\_type}, \param{int}{ size = 1000}} + +Constructor. {\it key\_type} is one of wxKEY\_INTEGER, or wxKEY\_STRING, +and indicates what sort of keying is required. {\it size} is optional. + +\membersection{wxHashTable::\destruct{wxHashTable}} + +\func{}{\destruct{wxHashTable}}{\void} + +Destroys the hash table. + +\membersection{wxHashTable::BeginFind} + +\func{void}{BeginFind}{\void} + +The counterpart of {\it Next}. If the application wishes to iterate +through all the data in the hash table, it can call {\it BeginFind} and +then loop on {\it Next}. + +\membersection{wxHashTable::Clear} + +\func{void}{Clear}{\void} + +Clears the hash table of all nodes (but as usual, doesn't delete user data). + +\membersection{wxHashTable::Delete} + +\func{wxObject *}{Delete}{\param{long}{ key}} + +\func{wxObject *}{Delete}{\param{const wxString\& }{ key}} + +Deletes entry in hash table and returns the user's data (if found). + +\membersection{wxHashTable::Get} + +\func{wxObject *}{Get}{\param{long}{ key}} + +\func{wxObject *}{Get}{\param{const wxString\& }{ key}} + +Gets data from the hash table, using an integer or string key (depending on which +has table constructor was used). + +\membersection{wxHashTable::MakeKey} + +\func{long}{MakeKey}{\param{const wxString\& }{string}} + +Makes an integer key out of a string. An application may wish to make a key +explicitly (for instance when combining two data values to form a key). + +\membersection{wxHashTable::Next} + +\func{wxNode *}{Next}{\void} + +If the application wishes to iterate through all the data in the hash +table, it can call {\it BeginFind} and then loop on {\it Next}. This function +returns a {\bf wxNode} pointer (or NULL if there are no more nodes). See the +description for \helpref{wxNode}{wxnode}. The user will probably only wish to use the +{\bf wxNode::Data} function to retrieve the data; the node may also be deleted. + +\membersection{wxHashTable::Put} + +\func{void}{Put}{\param{long}{ key}, \param{wxObject *}{object}} + +\func{void}{Put}{\param{const wxString\& }{ key}, \param{wxObject *}{object}} + +Inserts data into the hash table, using an integer or string key (depending on which +has table constructor was used). The key string is copied and stored by the hash +table implementation. + + diff --git a/docs/latex/wx/hellow.bmp b/docs/latex/wx/hellow.bmp new file mode 100644 index 0000000000000000000000000000000000000000..3814ae2483cf62528da530d32c038e3cf54d25aa GIT binary patch literal 55918 zcmds=&5qp4b;nyk0CA~VdGrR^2M7XW=S^054dJeY>rKdkjmsXyP*Z^5u@Jzc*~AZ# zMPhhyy}N#ey0n+*XPgU`&$s)UlY>j-Thb&eVi|5q&s8gqk-9P{5*Z;FI z_!o|U%l~hmZ8ksS|JmkmEPwyscCy0@j{5iT{bs{w^Zob!#F6CYPk;K;X1m=|aInwj za8QbW{*=X`s;cca%eF7JTT=Y}136Vy-0Z3W1fzT)3(ai`81CpW&D^!$Z2(oN(SG+KW>F% zXnwbog$(=A+{?EmI+ru~5y)-n2hUjv{6nOVo*y;>kYq$d>#Jf1bvqK!NFrc1 z^W;Lk>N)+QJ~_34na@!*Mq)-bB|JYs+<+XNp@fgm;;1_W^YjCTT4fE9##$b>8i)$R zFYqJaZ2S-%;zWcK(QpCjs`@rFR;)+|{hwJs2Y!IErNkh~lYvCbvSV+~<%iX$kpkC^ z^onwo@2U+Bksf09szAY^ARsE4Qu0w9DLN_>u}3u{9LGU^pUG8GZLzzeB8YXkCz8}@ zVje$SxX0KanOu<$>!%h!I_NHQQDCp&vC-i>37X=^%&-YTlUElWCpuP}+jJ+Y>_s+c zL1!EkU&j8xYSy1Hqo$gdv1l0#uXc8P^X40%m61+fUsvC}sdS6M?QK&%lA#AJ!+~xq zu!8y57`%S{`qislK33ez&mZ1bZ(hCnD0ubio9g95-kPC_5@t{6M-855%N(nc$>s>S z*B?LrWmk@r9%s9ohljV-n~$$w{iXWw@NnO`Q~d`8W`YAH9YK8DMU|xE%^Q037~k=n zJb#FApLeU}`L-%D=|>IAaKg8eqT|36po`4pl?#+GE9lkD3*rjm$8$`u8I~m#rAX4z zLuKY==?;A&xYP4P;|JoUvB9jQq-_ycfsSEvWqyqxRqh>#Md^4HKTZ-l^}5%Oi}0g# z?vNiO-L5R9s;24AF$-1^*9R(;PR2OD8}9nST#cJpUegbAw$|mxooQhK1#VaFIORJb z?=;vuUrMN4|iAOWl+r$q`449?pEh^|~Iv>MeCe?cU5Vf^_ zNRH43{s|tVA4MrTtk{*VL`^803x*zYRY^_-r;V`wp3$R3rv;AgC=GQoJ0-13mP{7* zE9=^;#AcVBB8)=~4d$WD?R=Nt9J6vbr+wR;v|5o|)%=)q)9gBZe%ucuJ&;?@eul4T zawYv(haX+JLZr%>pA*UOa+Pfv)la>1PW_%-&AH{wI$|l&%M0=2OeAOA7UgOse)QyO z20~|6@%Cyp{pi}OGjW`Ao5|IB`f)LSc)2=9Kgt>1)U&%Y?l`wfl&h2VV?W2hUD{rC z^g}LB<297lLv}354VSE&S4#WK!x&tSAKt%e#t)n|+}Z;7|IR63hkI)-HeNB#5t9Pk zYCQX}mM*t11(&0v?_cfjN=4xbSKm2pZ2&~r)@HwoN9+zETXm+~naj%+_~9z!HwJ|1 z{k>69F=2=+Jfb6aK06$r3P0jFh=0Wt2RbA_k|1`J_ywKafysqMQxvk@F?Ys^fkk9N zv}hlP3(J)sKMEnWN90-k2H72x8T5k@K&U%SqL}^@11Q~IgegnYi4UarpZug2SKO3;t8 zxjLlia35ZO8i6Xs#?X9}t6D!=k9~Yn_Nr`}NzrlhyAdirefl^IV#oge2*B96wC1*3%E~M@9`v(UIrh{a^mmkKcV){*-eTko@Vp z@7$01O%%-WvzMzzKNR@J1uR(?V!?^j+q}a> zg=ryaR$Iu^Ho)rcV6ObpsL-xeCFr#LHDPezZDsfn+0B$lwGW z3BP0p9Z{~<^sjt}Aec#hB>a*m;$O|9V_dFg`|a!LN86())BG5p4}O}%4~>JDSsyG9 zH}~T@m(cS${OJ2v;}1Hgq_MlYyG-iGI6wX}gCB7mTq}N6w#d&@{BRGi#|-Z`2{y*& z&0bwbKMqN`I^0wvbbRyB?u>|d@7(gQdL@1c?q|-qF6&BNxk}REZa%ze;G0)Xx|$(Y zVV_LaS&;EAhq;Y4Mkge+ODsT-j;?-u?nQH7wxClamuL#&I4J#KNx-ImS`J`4RCUK3 zj|}EATq?z%rCe@j=8T#-;*Zw(YJts_nj+@p=8az>L_Xh_Eqp#d42N@-`|@6h1!&zf znl!oc`XTRJ&N+^+7NE>!xB14NY;BrTK8#a>1Na_P!i2$IK(Z3@`OpVyOE25C5l61t zUHkcWwpV@dFh?aiG`0OJdp1%50w7Z#!Ai4`7AONcY>q<0*|qXA9sEoy+|Z%p^Mh+$ zCr6A{y$-%(7h+x5e`WlD1o#nPS3D0`1;RuiB(j&>QoiP{p(ET^LXqv5@9_gVT6laO zA2B|?J(-RsekD5CKqxvSLG};QtO$DSZ9Yg9kzjL0qnMeZ(Qx8dEBG=^s;kbxFK~ixeEFL6(}yXHLcW9`@ZCFlWz&l{T#k{$xK&;CMqo(7 z?w&aguBRV8x$<-bj4I3IGeSP7dDF71&25ego;C_BRZT$ zLO={j*xhsG%KKM1d78#Ck;6}7rUy~@b!5s?=9(_*LMwqJ>TV`mD9ggJ6X(R+3 z|0|4xrXPDhyU@-)mbkQ0l$VJ#sbadP<&bJ`(?V_NlS9tSHM|PcGpvSWb2#Eh3^iy_ zPw?aXaggyNOrLlM&o7;6dQplFKnqSFAAnbKnU!d!QZ_gbr3UEm7E6wCf*)tfmDdl@ zjC1T#>0OzN4}Lo2m}>)?K^cSK11rRnbR4lOj364+Q~Ws7UYUL{r9uHT@rEA?nbEzoMt}Xj4Utfrx<%x}wm7F6)b!**hQe z0~agYl&AP{o?ON8qld*Am#A+Wj_fXl4?)upH-A4Ey0Xkzr`=dG-Hu;TQ5?{UwIxc< zN_p8*Nx0T2g5{}7sj7-C=udG8t_S#mU{NBtd7p?UmR4o{0gbKWR~Ql2%rz2fkRzc{ z5FY}G;=)l{vh@RGRZYX9jf>g_Pmn}qS7e|!h#}UNv`FDXl~f{>R4&D^R}&b9RBH&+&(aX10a_LU zZ?A0r!8RV}_CCG|%h6{Wtr;3IK$svqk`~}yDHM!RQiK$+Ln%?AnzqHU4_pC*H&tQLZki9}(}HFc{+SOae0+ytPENI1a9)9|Lk_-i$D+Ro%;3 z0?8RgCRgj}$AG=cYpkNG*Ob*IM+s(^IN3+pO~&Q@s}?pjA!UQmU`nyee7j9li*mJ+ zejLkHTgdr3#CyX#fuN_0Sx&LpB&vCPb+Pr2-joAEj6D;B`v3m%kL53a`LCOQ{N7VF za5TBPpnmjhCxlohw}fo~Nzsx2@jp^@T-d)lGEISy9(l*Kxa#lzE3>UQ$7RZia^%1Cye_zEPOXatqKOgk9S`|o&5ROAd?TW?oVW%_H@p9$Y2X~IIX(WcGP$AJk z0-dCZRw*=cR~+;=W_ynw9`L-197|lA3J6u?cpRc! zp&x{#6yB`Egge^~%Ga(a@+s;9NK#qCv0RP<0;q&@NtE3u_2{7AhX6uy1-~8xaU9G< zNA=voi6K;ItAw`sP_aS2I;RE1uXGiu6MMK_1a)8@9q2mNcZwmMhL0|4|0=F?!ViU- z75Xf})k34>031ApB*0pi&|$fv!(JgQyASB<$LMH>irm*~*KJ|$RqbC9W0xi%JGcM9iRs6YMpi?ULq#TqTc90Mh| z&Xm-JR@bV>EHS2kXNwsgROE8`G3}xPfmEbV*Jo6 z+RH=3kEwx9p}B_Wlj(?ZRb@&o4lO#Skd%r{)fp!*j)R%@DJ%|+0h3Le066k*6II5G zZA8%gV`Y9!lOa#*{rxzm=@QYg)&9hl`7wtMa~aDtzGJ0$gp9};Z)+?rRBABl$ILM< zOh(3#P2}rgMaKMmU4G1B2WXycw5-!s=SN;9y0Tr=S{P|(Pp2=!4_8hj5^9_~j9i2t zC(t2XKgVcYf*(^ud6!u>8R=%txH39c){j%z!6CSy%!#D^KF+HAI904bn2BjQfp@>yey?avew;zZIk7Blpq8Jwn!P%Qj%4Jp z&k28xmuP$#-eQSkqpyTaJjSkHw^qJ{;!a5T*zXaWchVChoJE#NHrd zEqmpEEUc<-tLwyPt5SZ2?-~i$Kd{v;oOMjy>TBta%s~2~7&Yp`v`Vz`O1Ab<22f0~ z0e!uJRZ;`m;2S{qHuqSADyd$)xO$fOT)hxnJu`S=R~+i=)U9e&NO;KjolfS1yywrs ze!W<~gxCw$udZ(G@9OGW$*Zep zT1b$Q-$cl9A z!OH0HvWIJF^jOfSCKk)*v$ZIqFt&KB^&s&h30KeFR@e9U)i3f7A8y`OzrDV_{_wNB zdRyGw+$L|7I9^LcFuKCuj~_bc{BCaMzj`p+HiHVAjg1a}0|J;;ASx1C3b6~>qQ{r1 zAzHgaaFXz{y1LGHH#f!GUH-EVSJyZE<@fhDRW9L5!!z*5X)m^@x7QB_68q};jP)EL z3Iv8YVJx|lH)hn=WyaA^O#;U)Vw&+InyYP6%~6o-=IVBbeY&cuUvRwsg=`gyce}ey zYZj%~k|nIvw&q8qgI+Ai_DC6u2ljt^J%Gg+po$gh;WFVbMF6d2IqD3<<^BjJdhCth$HwSZ?8aI3J%Uvi3md4_z|kn zh-%PPlR{o~^x(RCnY`QED}~#kBgPZ$v0{Y2i9|)iV2DTjYj%i9d_80fq~~1D;Kx8e z&&~4oN>7dUs)fNqNfUC|J*6L$N|2~vGUWR!*sFz*Z#N?y!(`d<0*7p+_^ux*FF-(e z#9H$YMZwYiMupZ&d1ck_bDF(si^SKMu2z~4Ubrtb{61NJusuh?!s!nt{;z@`8ql9E zKlC!$JiymDfge*AXL*&F2uak%8qnwSV`?zyI3`OFHT%UacZz<<%|+>IFjvd`DxZ~d z%g&-|;+M~AZm@^PrVBIeRo4+5z%1cj4%D8JwGKZ}rX)<#nY??ba5fz$>Bl6V6Lbz? zn#`LoSMD@>6`ne%&&Z={oF>f$9W&9ulB%IAK`P6f$VpE*@!^co4UJNXvquI0qy)El>oIKTDp?Ja)Mer$2 z$@ysnXS8*~CyNln?;s-iM6v0#W8_;ohCpV*G2_8>4blpT4og{t(NeUrxOx~rY~Q2Q zBn6U(+2c9#&)3R8hB`i^#E({bPS8 zWd!qXw&62({vkFHehbi~qC72bulSAxt>j>L9fuT2l+Wi!#5YoMbgpSUDmgP_w^ytX z$yE=gz8L8wdqsOmSezeVr%YE7$NtBzHcClL%6#D1X&Kl!jJ&e0!{MtDn z;O!MIrJOPTFm(PVX;xQ5U>+|PfiwTXLxE2G66LMo?=pU{p-#*25H!%$H7T{d(t17U z=@l;PVQQ$4JE8(Vyy`30ek563V4tqD?r8J}vK9f2A3R9QMf7R&%TG1>b%J`v5B*A8 zQ9v}P(y>;)*E&sGt}q;75f&`{WLy;al#YBB2EHYTw}jP0tbipHU43r;m2{Oa7vkrx zM`^4pb{AqWa=L>tDw$&LDfL5N*jM>{c3 z_?vAAl~gbY?Ycwh5kh5BhXG%GFZ-Et*^QXmUJbXiaBh(eHpq8Z4HJUDYvTgl*>wG2 zD)Phc<*XjJ0?;G=5%m4oQlnXc9k?IUAz2|IpxB>S*zmj(Nnbj`uA))pS^ zG6TpQB7|QjW!;oQZRDau_&^6~-N3t8+Z}C?K{fs?-x{>1(V#sR{_w<1j^{o{)n#`l zpte^$hP_fA0X?tcg1s}gj|l`K9UGCzV>VziBn#ZJ*=-C-D$=FG)%JC92N?4J{~ zms4k>j)x)Cqb+XR2seGI{97fr&v#n$R)!wxO$rI?KGA|)9Td2lK}ysQo|hTB;e>S& zvH=3&8Ji88<&2Ju9)kuwIP{%${veINY6!`r!YxK%@5m0CN&dVK$Zr;LQ)|oD_SS8p;UUS zO!ZYCisu+tZBoq49#JfMsV&6G-hE4&4F3S-TiTvxZHXRL7AEMq(NXBfl6zm9(B+Qf zrm&v@0`%19I?D9g8H9BXfH?R|vaLK8G-p{FuMp%_YRvc+?GbrdQ@QTy)^MwP)VxeD z#!AoQ%p@cwZ`aBS5ikEYTdyhv}C8FCPQv>k|g=N$=flT zKu6FHhu@n3$4w{fFKP8#^W<(y%N0w3^xTl2h_?GVxXlNbdi1jG%00mV607v{$oqvIrdg+V8bZz14#_7~*a$Hw0|-M4t1)A*4bR2j0|*TD}w1R`}d zJtLB#KLbBS(8ZUd<0O74?1&?#s5YJ`&SVMdY~ms`j9-LD`sL`D)DOAb=61{T6CM2A zuvSa(;j|A&UzEi)-yo;>>zAWrk{_ZW!;=O?2MSselrP;KFUrdaWe#1TMCFz*v2QHY1ut_1}#I&E~1wa3nSB=6ehlKv0 zuDy~gnTaWy+zR~`2z7&)_;Pei@&l`+$(>?+$khadS>@uR+>8dN{41O$9D8B};>V=e zOjekI(OFd{`5`(i)}cxJkn3-GF-m_H4vXC6`Qb+hsdE=>*t0@7vdHsRYQ*znj11XY z3nxLHrvt(9F1zqiia#B`I55gtMHn4|#qznNy#eu!ubfj`YJKyrP#fMGGzJtKcl} zI4ivco)AAYN|>Ywd0RbF^bexw@J*H(9Tt`^h=vpLS0EQ+;Em$XUy>E}Y|jsp68)g> zwv;BiJRQ(QnBR23_`xE8#A>6Lft6-mp`nAl6xyufXX>b&aaYY_55`wCAKeWt{SYo- ziz4XH*c0@l$hBUfaxE`Fi>h&gA0ge)fiLOQPTeW0YMi#a9*yu=1I>62F5(H;nU1JO zEeRTQK8s(04!xg__GkqJ)lnL#o9F8Wou`-4Uo_}$ql3<|;Co$l$%N;J*?-~E;A0Qb zB*`NK9oFZDl1ISkZWs};Qh?ugh}Js{@M%1!xeB$GKLvic!In*~AVmv@q>lhP`w;k{ z%H~>{U&Do#G|-l{pv8}YN0?lN{2@AqZt#@RP%5$@XBWu=D5;0pQzK}l&8S^?ivgK)>HBi8huOGw@8v(xV1MHBG z@%2OY*FlCD;cX<_02K`}O>wMP+m$YDNk9o|I4jmc7f%Ur#qSh9E5puG$Eym8sfCaf z_G>1J z!gpm4Cz$5U3X+mjOq1ax&0*?K?vz31O*+ec>cp@jWS1f3-!PG-8 zJKI2ar9c*#Vm?m|_D^`fj~D5AN4Zy;U0_d_1#7j_C{vha9}xopvORu2xb%E21}>Ue zAQ1~6&FW4S=XLgIEqY%p(6}A^D=wA-v&-ruANY~c#ws=tOyB~KlkHUSmP3qRE!Vh> zKZdn}Tn+khzi#kL7a+rj0ek=?bY3fx_UH$oazw9*U$b#qaZ?4e{q%r{Hi-qh436XO z!3@rs@3KduUpJs_(gm|9P$P AqyPW_ literal 0 HcmV?d00001 diff --git a/docs/latex/wx/hellow.gif b/docs/latex/wx/hellow.gif new file mode 100644 index 0000000000000000000000000000000000000000..ab11fee954e64700027cead4c249547df83fadab GIT binary patch literal 8689 zcmVM)j$~<`XsWJkYe{Y_ z&vb3yc#gx{!A}PuB1j<`g+t^q$y_>>&}Q^0tx~VktW}HMdb?n*_&W}h&*pS_T?GaY z@Jby1F3RcnA%4&A`~QG}f`f#GhKF-+dr60Sif(<5h?A6+mY0}>l6jkSFOZR$qNAjx zgGiDVhEbrNou;s{vaqeLe|B<=jI+GGzI+#Ts;RDepBQn$#I?W8&ZNdgM#+v9KN`>3 z+Lj0s*Vd{;9p4z_8QbXTr_nIeLG8Icuj=&b;6FUx#sK^j{Sz?q`OBd1UpHp;5^AgF zrlB-(J{~SoNHHBM57Z8p5ZIxj$87%dBywUh&)vt9vv6U|IE)nvlrUu>oLPj&t(Z7_ zg#?Bul`%y?gXSEHso@-v(E!@11CgmNr%<0tjY@T@)v8#pYR$@ZtJbSsu`&(om8{va zXwRxm%l3qXhzNn?~i>oy5jQ_w-e) z_^{AF!;>3!!U>P==g^}|pH987|xt zis`1BcFO6eo`wqQs02l6*Quzcs%k9Y#I@?Hu*NEDBp1Bp38`w`YN@PE%<5~btrCL{ zD5lc-Dl$A33Qd3iPYws<%*m_)wd6+^hOE2*A!?LYxTksvUOgLOd&4GX}z~|g6@knqL zd$5G`MmrY8FJ34xxWKgI3INn}r&KWjm0T~i6NX$c%E*KRvv>MVEO9(F6AVnu{vpdT zP)ofdu*`XgZ0<$S;`dK~!SvMfNW_}p?u7{3d~Z$T(i$}frv^+|P}Rv8-Az6L z1?&(=Km3Q1&aTsAkRYe@da5m+j=GubzSLc>haaDYTb9 z4N32Lx9XDw_oOEHDe!`mKpsjMq7kosuU(%}m}w|uJ`9?09Z1L-ML1{<=s8F{MJmn< zdy^dzZYhQ~%pv7Y$U};OtRhHDn#`2+fY*deG4pXw5tKt870Io83M*j`rwFy9Z7^vq z+(iDn_~056jmI@fEYcRsHMLQ;}{WZ(cdUJt~NM<<4S*~)5)12fyr#d;v1QmYs zotfC7T{u{=X32Af$Ao7nu*69ldT4!CG#0+%(oKNI^Ezv6+Cr=cv7Kov5CwJUJ^mNE zzKFVrKVV|ym&Ax5!cmeA#48%_2qwOr4U8Ly!`3y1We~*;Z=@rOggd>XiTZIv6O>3< z(JWNDFx8?H!y#fvP1a6r5iei$QHgK1R=*2ba1o^I>F;{#jBcwjnL{;^R76Qkpdv{r~uc>5`ma!a^+}9+Va{#zwK2V*VyYop3%Xu zMoxGp^$ADznl^kSL1ey5q3~3PxRAPwA5e8&Kx!6^eFoy6fwU<#%vM;u9z?Lv>YZcV z_OXQOBO{R$h-Fz-*ki=@Eu9$b$TaJXmJaW9LOa{o7VFsF`p%srA#Fey{x`&omI#D* z>`)Ovv4SMnz*-kP@K)8TjAQO^&-S;wDpqW-Gj8za>j?Rx ztq!=I?`l`)x779Sar5n$kNW6O8v!)D$0%E?WD8%z)(5=W4X;e$%Q(i`mu%^3n-3(# zV2LDH!KY;`dxHh8*ELv(*_E74=&Cib?XDMwq?0T`7olyx@Dlj-~^ps)`2!GCT4JlbFPjjF1{S4+lr9 zH7ZPs7mqu$J_O|#m%5mGV|m^oUbMr%6~rR6S&4ss|y@QD~fxK(`~CnA3AZ*iq7AKa70kgdd&Y6Xu9=W(L@}{ z$U?hyG1`7O#O-WxChP2H4vibe3o#`Oc`k1n|2VI;NErTpc~K}cP7KAQJ#v5v6l@2F z`GCgsuwBd?qRv(2q%M9&g4>wqG6Yj{X320T;``s$rMQ5-?JiCTz3jSr`YFP^?n_=$ zhSDYKwu7D^@Tt6R?9|pg$lg9zCp~OxUpqhJW8kaHae{3E+}-Pj_MQ3R@0`n{<}RM< zz;_(e*iJeF5f$l-D>I)Uu{=&SE;kT5NY@01bvMZ+bD)QBaC1grx%KH~jOBK746jbX zXMaU%^B$gQrkk*xcp!HJ%haNWI3f?Iof6T#J!6(EuULOir+a?%$=~PJnJ&vPvD-by zKfa|~&ajMsz4h52d)qUwc`_frvrO;%G$!A4RsJ5G^65uA`xmKtqQgXEd=`G-vC=1Qm+ca}D3suE0R*Lp%FQD!%R^_PGXfk;O53iF0}Lv>ak6@gqddEG>S z=%s#|<6#E$wzPe@_a5N~EAsSv|Au=S z_<`QWL_-LEJI5=ZR}V<|O#`@p`yqmhM{T~>f-8cB6cUB+cR618gXc5Jh>4rHPDNOW{-F4O?iY%rctzB;g~|67ez=N%*ov(9idCVC z0JdqBc!#!li;B_?BN&N^f{VWRiz?t?rKk+<(+vR-003}|$%u@~*o@5hjLR5}&M1x0 zIE~g=jo3(y+IWrIn2p@{jouiJ-8hcmxQ&*zdj7SG*urOUm@rZ?DQvbDV8IQpvnk|=qSDw&cb82}W}j4K(FBv}D4$&xa8lQx-?IJuM6 zI6hj#T_eb1C?*WN6EP7fOI5f2g3}Ui5M*pBk|_@KFq~FWWwT-xa*$Y=mHmhS34j1v zd5>J_m0vlQWEqg0)j4soqhZFFaVkwxG8JL(Ej?%YOBZW}a6=PrpVWl!+ zM>r-J_=4IoHo`(U`$n2CBUL|%MU(lAWm%j3*p-f1E(ve|yEy?}Ne2PIo4LuGk6D;{ zu$#LnoW@|A%;}HGIDX!h6x=mw)^%AqOy~&%xS(EKKpzEogk(o~&Iap!5Nkb(3OU1oV}Tt zg$b50ilX<4q7?9=BYLCni7zCzka~Gt>m^&JC1=oud5(vG7&;?d(-v>kK8XZ1>S&Ca zd6|GYrP3&(CTf^4x{r=|rTM6zG0KlBDy3o?rDV#3>!XX~QkPWIlrJ&~hqNvh8K=Yu zl>tJJxC3V`Ii^%frr0Q;d76{7xso+$pn6)Ud^(OB!CsUIijkE8iTS9L8L5XksgO#k zl3J;lda05M1OAmdsgh~|jky6l(5ayMshMi2sCufZs;Q~UsvbaODHd|1$RW$tbF{Qk zxXN|9daJvdt8+7X^alvtcSPIAtH$c9$l9yAnyW)6XgoTr{2_?7@r2SE9^`wPu*o=by$ifazphx zLRFHY3DB=Ya#bXOrrGLm@G2w%YaDw4u)Ddi_4Xp;N`t&OW85mRc;K)X+pmcxXxRFQ z$Cj{72(dM^01o@GBr77em0u9qg6vXbDGLWD`>pkQPLcywsAzd23mG)Kf4r%&DQm9| z^{k=z{<2|+u`?UALYr9z3$o^Bv@k2LG7GR9tF&%LwB?$6=_-g*o1#5SvO(6aIU9I8 zdm`2PvtIkPVB2C?TZ?+gvuB95$*Hz$J7G<$uVwoqbEvUZtF$%tj{ZflkO;MUn|Wv( z04VFX^E#S9Iksw-w?9I+Q0TA&ptzZ#c*{kuZu_-;`*AZXxr%F~o|&PpSh}!yx|~9| zob-J%$hVfe849_fz&N{sLbsjE9$lN93jn&It9ObjGRGQAwW^3_(n?g)BXDOYu;eCZ z5+^yxh<2j7rop?pA-B%)x|$)nnG3I6Bve;;89mDvbrf`4%NRV;PrCsaYDT?D^0xN= z+EGc{fY@6Zv5T!GCpc&cgU?%X=bLq3(plRn4il<5BmxS-`n>8(NJ-_s-YUK8>bXG6 zuk#DOz8h9&bfg!$rVs%}w5n8I<5V3nB3;vFG?lR3hGy)`f49r9DGa;uYe^IAt;Z2| zaM2squsz#@7lXsWZlsn+iV^KnJvmH7+@=9f;=m--!ruDA@*BfR%$7yTF3eF@Lp&lJ z2(Q_dF&*;(+$F$`2rtvZ0rU~AMt8&vEEy{-8@WqhY3#%cGPJ(5AYBxBy!sUw_Ykaf@M#MvvTY-zj%=T@b1h@XPVacq! zNS6%5olGINp&F~9#GK^1nA~hu6@*szli#8rZpu1F!%ZvB}d>zZ=}luXe`4 z+``fv9wD*-=4{SZa?S(557)c^A6LPxoRr?2X~^uYp0URMw0<6P&gi@syNk{13;^w{ zbGfy>^*qnu_sp3LyKGCBPrvCPQvLH@N`tIcs0e?(0k z(YDO;+|wp4%naKYH{BS9OUR21eKS1CC(YE+At9e)w664`b( ztk0a>h+{@?akSh|y-Dh(8dcI7ZY3t79m<*Q$qF0W^t&tu{!K(KRDK}1gW%!6W(VIr zH{I7O-?rpcIhaKI``&DYU8QEJ$y!QHf$h1e=lAEJEBz0*EJ(tehtCk9d6|x zY-|L68&Q4O9`U--w%*?sF2nlY!u#JEWxTgaz{qRY-p6*Vlu^ntLuPora0N@s& z+4EZ7i*d4qUg(B?=!l-^4jr_`ZLq5g!==aFG*n>zwand?p3hH$+fgLP5{bN?9we=u z$%4)uDe96ldg?Ta>Z+dVtiI~^iMR;fY&*&uLmuS!Jl>xX=Eji#17H9S;OoHt>%t!F z#6IlCUhK$z?8EN0mYdYZ-Pech+g)erQaxa%N#dr>#@{^LKU=kQ(3K7l?&3b~r z@CrZf2C(kUKI@ZBBK!M5?8@a%b0AYXof?xQfzsqU=`@J6@K@Ywr-_eEv?#BQ5xzFfK z@951BZOk7S(GSWDXYkc8_+{_2ya=rbp|MS4__e4$o<3IMuZ?*8u`|AJtdf)!} zJcQyO|6&gTD4kdB#aVCO{Rgk(Kt_`U5Cj<2GK6D!rfd7w$QQT9B*~3FhXlfLL?)F> zX4At> z6L}!yC^CR^d}NXeoSbRF(@Ht$qU7xK>`_syG0YHMOn^*uO~XUc%j|oDJm|1l1%=z%xW%i z2@kzX6e66WxJOKs*2hnK{;}t`uOGib0Tcb(=gVE6aPsag)E8u6KOGT$9fYUL2Dl!` zP7N~`@(3%B>FC6w1t8NijCt01I~eL+yqSY!x+oZP;ZB-2ZT_r@lMES!Lis$z$&*aH zqwn}ss7Z^@&XOT`U975soJg(?j+ykdEXx)aM?slLDzs=?woX?}^#(U+TcLAXY)NWX zC);~+>HbYi0q34}gJJR@mGxs+k?6ouT6aQ=GZh#H$tC)LFJQm#_PPZey7Oh2qv?%q zi}x>5(5tH?R$OW;<8mY)b3)07@L{oepXyvX7bst-d3pL=+SIPm-W)mLYCVbm%$ zhJB@0V*`!T(o|Q-)U#*5y&_r=wxQM)Uan0A*-ay>b5(HP*EK_9SF}SlhR>>ZvIIMwl$dKbNd^o^? zl1qNTfs|2Jx#g5!b~$F4XO`Jymx;)=VOieNt2s~*jmtrcmN6)xaOUKXqM)sEhiGXg z!YT)Ok3LD>AxtrNnpnbugdSi=gQnAbj+zhaUyk)mc@l8Z3od$z7Z3uF&WXjjsJP-#qgjT63Y( zkMjvxNB`oY2gjd*yPMIWBFk1$c2jzIh{AMG&9llq$1jE4GxwcUZhyxKbI{e=U9GBt zrML8S2!zVw)HRykCk8ER975UqosriYlbgvB;fD$zZr;of{B7|wLd$Hn&9`Zp(2E1g zMo33*{uGhDh$e6c1;Km=5r(f(5* z30bfs_5k4h`1U{${0%bEcuzs}*0mH`$RACU3G>=BJI8r1U^hIADP&kLFjeCO{w*5; z5Km^Zm;G>MHXC9PDR48JCBkGTIAETt6dz{c(27(N*FZ|x!)mc1VQ^R&Pkm`$2P?xrJr9iQn@rF)Ihz!;kh;zNs4Plhy*Cb~{JHE?PJIufym4Pom zI$>YhYTUBI)~rGTY)2D}fg=CV$3{9q4mrC78Sz(1SK;wdn)E}YI@tsR#BqCq+`|G% z2`-|D43(*5Axn<)BbI7!i}Dv5H0R7ztt!GcB_XlRB|f@eJCnV3>Wl8(*(vfs}}d5~*t zEC%QF0E9+}$Yijy64_LzmT2g&(x~nNG_g@Hqur$m&7H7#ObI&VsT@N0rqhyIaa-nWh}49$nHTWxA;Iz7 zLaLY4wuIDU0PSg1=b^J*$#Mgg5zOR#Gap$HZ+^W>un6W)}H=SB~|MVKs)X{dxX5bLsW@;nv1oLy$#O4E{!9qEe)wAu<%BQ+`y6Rs7WX zKBRGN43Be@vMA@vWCnDg1wH7u;vi|{Bh5C5mgbI}c&h%yBwuMNw+d78jC6T%SaP%J>{$^6TMR~Mph&b-^-@cwte0X}en7rflou2z}m?OG_# zGe|7PujSm4>2DL;;1?% HejkjCbkQxSf{v6t3A$dpz-$A(pTmYhn@6Wk^l{2+v zKJyJb#b`G_9L{x~bDkT`JO%)IntMLo0#d66U+0Nv@$bb8QLprREeedwtv z>m)VIqC`ig>%D28*TW8W8j{`YUq}1c(=K+ln|}d*12Z&2FCD z?`;Bn6u3F~xr>!Anx=W;70=;J!N;EL%5sd~4tH`_K1PwJ>Eto5dCAXi^Bj-gxi9Z{ zX7DboQ*I%K0h{ZsFMhrM<9f_f^*Yzr-u4v!+RMEyz}~opy+KLf?S(H$dxzYrnR7ww8*v3gkf6>$>in5W9#!nwm1+Yp)sGnATI44rDyK>p0MR!5DjFL`1E_#7*SH zPV~f21jSIaL`@XMQZ&U=M8#B8#Uq?V-vNMbaz!A_9VHY(M5C(VutgOh0RLM+qi}&; zB#q~oL|`mE!()yeL`L~@j--f1vIqcLEQ~D}fPM>x=VO2iF`8>U00wvmZ6pD1)J1pj zMs6fW1mMPR97LudM-u?YU6hPcT-c7;KOLS6Ej)^fcy_YGE_6!P^N9kWiyL?~hb#u^}FBL<)|qjt7QNBtU- zwfib^7-O|tJ94P++?!dIS(Wtzuz*I7CJ9t!!^r>*8&Ad&XZ@D_*O={KZckiLUtqvq?8J#k^AZd zFxDG2O8X}bJL_V%=5K>uouaR^XeU!p42l9P00Yu)qe~4WZyV5^0Fz=cjGy!g?|JD-E5E_zqQq7KOmauHj9P=l7t7=TP$6 zi2&8FB^7;vz{VdMq*rDNE-;JlUKWCW%3Kb#4^Ynlu7-~fTe_%KT_}tXBv!v>mE?P4)ziBN;Ww?TOTyjo3}eHQS>a_zc}V-eP}+#K4b`E)8oj@IgmxWn%7Sse5jlc z)C_`_4F}EAukQNr^=)RCZXYuXzqVLy>mPch^-Lu($c2$o&}V)2>&e0*%ye+%{j59rvUVSP>F`3ssSNcLj@zgGci+6r zU*GJXp3+7nbw30?q*>hZ;3+QpV%}Y+eNN!Gef;kEb1yvq_%O{#%E#-~sMo@NTW?z+ z6MWQ9f9`=$!t*yz*=V#4wy_3>_*gt(=XEN=I3KrH40eVAktg#7{LejF}sF0y4E_O~=UYwG|RIeD^DsAtz~ z1nZ`fT^He2lKN^aWSo!N{~YGy$B$|#3*2TT*O`6T=ClSB5exz{^5@&s$V$Y-m5u=k z$I|cYk(r3fvMo&@JerT^0*x@d4z8pF63r;RKdPDYo(78}wl!x5tt zi71Q@gg1W^AXb;Vv%p7VA>({JeLu{{^MehD1|^1F%QH!hUP(FZnTP0*%Gl#JQ!doV z_O_I4!|gUN3xN=PeN`dYeWfl0h}>u&Eg@rk)KBkO@;-AQybtTTUA=$*`T1!Z<)<}y z9cyqjJZF5EEPiPBYY-_(FGRCFZDFw>xC*XUapcDN`0(931%%e=`Q7KwI=|Q9-TQ=( z+FO=f2{!9diXi1^LK2T6HF*a_8oxdCIL61z)AuGeq?qIZhsWRly5-|<=Fp-vo5Y#U z?Bf6lXBG{71Phtq;~!w*eH1_P0gmUK51((>-2b(7w055JF;mQ`VhtZ*ZW-kRy}~T8 zh*3C{pZ z>|<*xwrLejU>dzTF&{p+jPfx$@1}e>4oTmJgpb!4beWB2zM{W+%X<{Zm|v2vgRWPJ zjSJ1W`0zDk9LM*mO6Bp?ztV1D{kNT~moO+aI8JOIM#uyo<-0)xl;JS)cTS6==&a{M z+HrJxJ70l=jz{^J>$lgk1zwqEC48jz5!`i^mIKQ&t)oTpHrz`wbVT(yj?gTfO-Xr= z+c;n%WSkFkOmcOKSLt*mzhuWeo_Zx+KB6pg*yWD9Cy0>dF|p_?N+O8lymK;d*!)D? zL{j8M;xTeToF)<+^gYVQ%k4hO-93Mk-q+gB;SU`g2_J~nxO|cZ91bVouoQ+^LK0`# z5m@ES8}oGcfR!vvc##>7?F5d&8{3DEEv+xOBeh(svR2y3+)c*RmA`!pa+dHT4=6gV;@9Z z@6ai`Cp15vIPN>uf+6AK`!#d{J>}!2{_pIvku5~F>!-)>-{XpW)}aaS_fH8Owb6iA zlH+Lf$}}OsKtPu`UKgBqE6^UAl366ztL{2j_x5r>eE9JAc=LGwaR2bIe+=O%g%Kdv zoHM<$c}PlAMJ`N`4vb8=?!`#iaU4JOaFFo$^q|+{hc@%$Hb|eH=J3%K_1NnUj+fhi zPDT0YvAZXoY*9ZvHJzq)+V}tt*~jvsV;{GfxBb(|0$$qbX)!1!hpi2bUS;;N6rdg- zTjt9qjN!_*AI0&_2o4*JbVR!A`BLJ?c6xk#O11i@ zk&U-8y{dUS#PivdoYdbvy?wm=^eI*A+cEnX&?^}jI>cI*!N~Wo;xI0D?(zYSaHlRQ zj?gPnA+IFg+@-DM?4!7hbnN3NlwKq1VH8Jt#}O+at{`-%u-pbmcfN9Wc5P0$obpEN z%z5D|ZZgX2l@B9#*9f<+{Ltm2{+t>-3N=wEKFe8k`a%76=GH?q?2?g8@_ABnGa$385ygY5`JPzow^HnN;j3;~`WEFsDj4jwEv_5!Z z01T7zZ0L;vDj~dqQ3Ysf$spF@)dVDZpG3#t? zKu2+u=PRpMIy8EfDYo4^CE^?#?eU?BSF@*yGKynpzAAxGlQyyp_F4R^m)bWBoRCo* z2hLYzK8_v#ZoM8Kap%VfS#rKg_{ep>E7Eb-UHgbTKSs#ysphNWWF4v1&Ct4{`rG1n2uPkr7$3%FmUSf0WgAT zKLVHxy4LNGH53eui$7TDJBk<21IaOa{9M9O2jApn{qJLyb2&vi+RIxf-5quF)mG$VtleYsihQ6?CIbuE z`ekmY^{XXKsCs&p@NtZwQ*}ywVCkkafawhC2&j6~fKUYWqIwcc-_Fd3TY4=)W)rgB zr#LER6IE|R!pEx&VStz-AMW(p=PEkVv~qQ09X^=Sw^@-d!iOvb>rj|W$Yy`HT2)BP zjKweHFo$lfemo?63=HY3lFNL^LIQvQCyFz8u1)+G;BU8>3PNqOvJDO6=>Rg^oxa5LQx&YWt4ekDeM@UWotChFE8R6qjrbAhMh{2o^i73ZOw-oZG$dmKvKA{Sk+yJGtsU!z;!ORCz zO>=q&Mti+}`WUk25u(9Fv2<6o!_GP8E$8-ue8?FF>l!=CWTSg@FC@q_%4=7gj%T16^wjv zp9L+D;Rzxs4Kjx2_QW#80U?}}DG*9jk|E(##^E9yM2LxnVxd~Kexszjp4UOIOgYSU zO}y6}tVKsz#t}cz9dAVDSV*lQl8;qsbcp{D$PBDBIE<>-h+nK*;v>Rf5&7g&%$Tx} zlbntHF6!_OW~@@zJit z;YMW6eMl|Yn5n=aJHG%v>SUmA{f=se+lzhRnXr14#j1C(n4JS`L#;p zMTe}NW*t16edH4J5k;4$HJXI3Bw7o|Zhg1c?=YZSgY)jW?4z{~lag=F+qpBm2?CGS z7&gM&tmKqzvofA@zWFM(4ihBW`UD}hgjd+q@F7S!jyle}wtmRhkVi>*6j3KJ*bIUa z<-U8e{9E%x%rBv|b`#|*C!sfA<-H5Z+EpvpH)UiYDihtf$OCrHFQy_FPLlu0d)4YL z56hh^p~1b9H>im6^&ua5iSCJb&DvT|Ro&;j$Pb<2YigH4`pzoiZGx=}t+XXFz=S z#YKyf90%rN!z~eY?<9J-KQ!ymS$5$i9Sg3?= z;KT1DoDW$65M0?Ld5BBpxH6j;A1=SLRVe6YA4i9e!6COvYr;Zuxw}_Lff&Yzq85-d zMnzT#ZCXsp&Oi%*lH?AKqIH-=tn0J4PP!26x~5mdAwDdQyoxpQE7gM`QF?&XMHXtt z;wqTw)tKT4$ZH63v%z>}A9O6kkUY)<*km%UdgMt7rBxEur>2l=#aTa;Wfmlr>*Bx$ z1_LItox7J+YNS@j(ku9|4G>Me`V&2xP?=YeTvL-~VEqv+k4Z~KC`z7YVV{C+E)xXJ z2Pq%T{ZmN}z8k`x?-|N`A1JbLO4;Kmjkff5u1cwhvEvF*@F(PbzBtcmrj{-rfd?->r#;n8S zf|271kzNHpfTQ(54o9?d8Are*a3pI1u}KW1aV`Ui42SBnmYA$)YUk5B!(G+j%-m-n zPpQ?L^h(Mi1hN&wM%05672Lc%o*e<^*Lgjqwe~S?9WK{jM+LoRr$cwe>ve&msW4k(Q5{`l3nes1W8W zw~qx8gr*`NbF9PU$J5##14Mci=BwpVwDZ+`*^UHKBR%$^WvoBjydGKLd>gq0RGZ6W;hZ+4^yab(nN|nwyI`dByi4_50MP zw2#BA<47P0AI8kG2eXgu*K3LLyzGBCNdsp2XvUlM7yLP2pRb7&-Z6M!Su)A}W)-X_< zWXZ1v{9wrTM`@KHA4mu|2yP$R`5@MAeke!sA(#b_$iWW*LMW?j4(9li0uId_!Rh4Q zUR$yTY4lKQ_qm2VN@3*s&lgnFnJ`*Y6{yunXhVvGh9aaYo2cYvytR!GGQ^hr7{ei{ zJzqGaZkC|ld9pe$+~^Iy}9|-$A`_s?)Fz7`Ej4C&Gr7n?dIc0(tH5WM`>nO zE3|NJ`e1q^tALLMk z`>@-6e7GO4Nwd;)_&|jNAE&@!)+auM#I%ZtR6cv(++W|=Hd2C$o$20@wmsf zMr)GEtSFP<$Ge21auv}0vRr^@rmKzYqZ#`WA6UiB&GkKKbh^G;-{0IbQ$5}*ZM3HN zfOT*PirEKi*}^Y|6cpfKreRo1+U;rA4|}tJF{bxU=535gtHx@=hvrP-K)=jBmRBo{ zlv}G<4gd@l!_{8WdiBFYET`YiuuooXPkjy5sYrDu&#!6>-SCTv8IN5%Q z4bjyV%k$`)%!v|%E%ev(#b{_6V#+yhIN9@$^TP1;ycx#DBKEn5$!T2oH~yL|I#u9Q ze9Rk>S~nf~516kH`hQ-_hncPpAeQQz^?a$Ol6Gd}Sdb52vJxQ{h|b3G3m=`)W`103 zOxmV@;iDak!(zY8SEJ)KPgm zV%6jAd2U)^qrMSrC#*NbK-fIItTyS?-Cdl~cHh$c-+Xv5Gs`UmOP*SbjSJADc zi6jBrpl;Yk*uYv7s0H+9b3r(CK{73<6i-S@;?>baN|}eHxyU-9;@>vf8@ zm;4w9g#^0dWcpZ{UJ4N{fkO{R2>}Niu%%F2q90572c%hFbgb`v?if+VPqFb9ghS%r z0eVIB?v592?5j7VK&Ga?&;&Lk0*ejGKGfX;0eP&IJL`_&U0bYanH}tYM|?wHgU#SW zfT&T>C@9$oR+|i9Y1eS%)3B7 zc4d}vIE$?xmB=>OSSYu7fqaw&ok+dF`D$F^TG@T)WHukR1v<$0$jm-2Rxvj| zH7cC>H52^@^txMb_I#!L)ZwtCjg5{8Tj%6A8|V$3xqSF1^#=KfTP97ruZWD|U}Yh{ z{~4jVd`vWMyN0ijJ*zrSE;vxFtO6Hv`OpXVN5XjSNX0_d#F*$CQ6)a+-4C9TkBP2~ zj~@KFdH?W-AF=U)!J5#8Zm*-)6K&PS$_Mk&F+yE(d$S}T z8YPlUq8BDz48}FS~M)?4SzMKk}G9PioU0~}E8{@`P9PhCa%p`5?O^C2a zcK+e!&?FzrE{R$Mmq<~}cRu+1a2Ny}6kevC=5I-jtTX+Rl*pDlS?b-^LMtQP){J5w zPS%C)?JDg@=~L(O;VfVSRaJRge2f;K$dmg%QG&surDdABLcqtt^{*#rTAwTCRrx23 z?a~;N0QzbHpJeBw)ZM0ay|4Tm2l}*l6>#W>u=L{J(UC}-YPqrl&Di%esHwqwqwj7| z%6;d)!`<}AzK{RzSCgWM8nvtL#t=w8 z3g|vX%C5qd@T;y(6N;z7afG6DX-XE2zFX08A;qnh<1>6fUj$-AuVtLxm8U6hLYLMY0w(ozuQ2}cUWi+9X(VOWsm$hw0A;}Uad^K=rDeMH4*HY3Z zZ2U+yXifQ`u0gmaIflgN7!!g7-^VeIGW_7%9p#$bCZO;+-ANTfe+w@%wi}g3{ z7M5{NbMyHaT-`2&kGbplAP!XP%ZJ%~Xxn%o)C1|~OrF1f=)TuBezbiha&)pM^%sF7 z_`8L%lOMxd4|o)~H?Z3@-!#FQ)fGY0*Ow0?^A(Q1sgjL3Q3)+v`omk(m69$5#~>d} zLr86cnu!}9Z~{I0Yj6yG^Xj}DA?LtE1P;5WX2i`JxI;xWxPYW^PZVzP>hp?R>}_Pe zs%^+M{?3P+NuiaCz%k56E&WG>!mq&$&<3uHz%gPUG7nV9_F%eq>nSZ4fn)G~kllGL z8REn2gM%!?Ubb0h=J*}-pxvB7{HBYs`O20DV?@OT zr`g8fqIorKeaXluAM!-luPS~@@Jk9^=)2(qP514}uw|*ISAxLucR5y201%P_AM*J$ z_#v42YW=V+=7>Xv?V*julrMdb{*@Mqh=Ma>ZELvV*$eBvVA;eaR}q#-(p;wPbHy(q zI3IRPmkhFGGriI?8Q(Am2fsrEY&`*}*dVVI<+_IhkTy9-8qWd~Nf2bK-Diz0wjkk* z4^gn*ud2%JoaZol#KdC^lnv)sQC&nFszWQ0DAiS4XF)+!a}FpBs>#eDDhN@x51+soW6wcp{K<@+3VZiKUS}_FFl3$X6zrqZfeBuFB1+~s z^h11YfWS)%s0RWyzpv}xl(rqhHq9=bq*nBEO+;;vqcP`Ww8&SH>3n<@qK*pr^Wj7D z)z=?>K77ax)V&_lz8`EGkx48`3Z9=*n%lrH8!>T%q*@r@BYbeuP9E3MHh0?t33id( zq$Ff^^7RMExGewT$e9y2@n?dA|Imu-)O?sn$MxL#Mkj7=0kAtwf?_&o7c;F3b7jV+usBJ?bOT!0)jkxY>p+9kD zF>$$-CC_eRb-#Kc!N!{5<$l%q&`DaQB$E=lghK^QW~d;}0xBpMgF_r3l$752sC63@^PW!%@!-z$L#W#T2Or0r`+`Ewy!SmcFD01HLWFn zq42HRQ?opUTcNf)o+9comL4qHm#f|^)De>uj-fmgonu&R){?X)GK0e$;(zvlj!VLV ze1Jd?#Wd$?;4CaRNP4D-$RgQ;pb&yqEr4#1nfQ*HH zu=vGBOt%``!|F&c%g`w1iVjZ^yjc;h)=$*QDFkoZ?9NvM)j$~<`XsWJk>%MR- z&vb3yc&;Ou*G~taCWs&!g+=5s$y_>>&}Q^0tx~VktW}HMdb?n*_&W}h&*pS_T{*am zZ_3*pBxdONcz)0C`~QG}f`f#GhKGoWii?bmj*p0Nd_a8_7=DzHnwy-RNRoD$gG!;3 zpq;3xs;hLOc^h>}ai^@cwwo72cc7A)7C#oVLUpZ1x5vnkymH2~!oaY}($j`Kxxd!I zAwAHRBh=vGn61`&aT3BJ;_KoX65TyS?-bnh*xBCm^KI2_85u#jKLmzqYJGj$DE7z}H!(Q#VwQN+f zM}vMXCbliuw{GLYohw&ts1z1==-tb=uiw9b`C_=Fw6NjBh;t5kaDcJn#%>-)y?q2d#|Vfdj9uHP$w055PxiGQ`B$wHTWF|1Rm%dcExy<%X;J(IAMG~ zEvUpO8}25hB(ooq-;Xv>}2d_`_2)i~-Qsikm4wRn?x1Ma62S7`lF zsHCN2Xi5~Kpc*P_sHBc+YN>m2is`2svZo#|QA$ZAtg+IXrK~~T>f?O8zUr%5!1fyK zufi5f?6JcpYpk-!{x0imv(Pdt?X%M&t813F`Y4Zpbav~lM&5iY?zsLGMDDrhN)uJ{u)zpd zyyk@qSGg1)4r9en#DtN@p&rq3gk`K2FK2GXNGZACuV&JLTn7(5G|Z6boYSF;8M(L; zcY*ZlUzj`j1kjx+bIG90rKHqGKnikf+dx0mob#6$Q}oNWH8CU+n}AGxo-f~IxNg#j zt^Dt{W|I&z(;xCs^UY2XmW|C5T`-tHdt0-&J|&}kozEmX?GoC$)!Vd(LlOS=%%bSM z&)W{s)5_oe#@S8v*I*Ynw1p}i4)x)PC#E(Y9izNmACM#Q4luW7SUJxb?0pXB?ohml zt+7*HI&a}liEW>?G3JiVF3H4RfH^X`gf>s>{yV#;hxr6u4X4xh$D>3t{rA-@t?}^W z`_8m5P`V2K`ruTbOzSQ`Z9e<-t8%t2@W96NNn&Frpyqy z0Lm$N)F@!|&LSr52rgF;>)(?cSg`>fLxL?k;0D)`Iu3g4ezoXVi~v+0<@KY4CZv-G zKj^ecQRzw2TLlbb_(1UykU#ivjth789`%WgCV$u=58X6F{GG>fM)J}pUbdo{#BD-K zTq6FOAQ-{&S#O92Aqe9@GP9 zNgGchhm^BHC5jw2$xq&Ak*w#=nsXsOFy!o-rk4CY1(DNIGG0SyVv z6zJy12v`=Tf&^=a>Y_+JYFRT{{@Y(Fnn*E&HL!s&BHh@)X+P$TjdBNJQ4Vvct|mn+ zDdbET&|Z-er-aIK(60v2BVZ6MYiT<>< zLEimDoHxV-IzmRz$f+wL^^A(7AjVO-;jm~Gy;?L=bjT5gGh|N*&`)0CP~(*nqFEao zOz)95w}k?EANa#UFwzoaT%#p<866Nqn!6x+4URO>CsQ|oJZff?ncGBBKdl6>CQa2I z7%9k6nXx^;ne`n)eVtgrS~Y|g40%AUhg0jZRKA(@YihMfRka4Vv)(lqf78c7{dT*- z01iQITj5se)uL7wB2HtiTs|OT32w~e8DJHwK+i*2xdqX%IjzNK0XtT>dgpE{BI@Sk zrq|n@wX>czEnp{CiM~m;Zyc2s2&B2#mzs!kdqizm!)jN{Zmz2xoh@qb{%Sj9fRwb* z?FJC-VTZhywzNRynsVs@INa(3xdY`c6Y@ga*eMmOtAGP39c!g|ek>zS9mrbSx}wp_ zw;cA&$8!7H+erLVt~|Za(H2Bpwq_1J3@I??3Nq4hI>fc)O^*giIETmF6c@Zi@Hr%YU>Jh%ci?f7b-wBFAsb ze`+$~XaS*c9EX}Fv2xmeIp%}8f>w2&Wtp#>XH=+p%|f18IYXQNI67;w&#B09!uAXa z+4%X%$@p{9ByCi!4qBXzwlFKc={-M`kj;n|U`5Fn>Vyz;nx6LLqa}=3shJ|xpBqmM zK^;a+KN^ELwYB_EdR3vJnz6s;)(#Ie>^UC#qI9(NqZLhNZq+afq%$6o{2VxMzWT9b zyCbquBIZl`*cn$eBSj(o*y15^e64NZdDx-ViWW>rMz^eANx#Ew>j!Q-LOw5@!ae-A)8C&yfxmq z;P?gJL(jRe)H&PN=}vn9a~{W-dk^JY^|;UX9X@g@RO8z&oSQrD_jRnD?$-vhL7nmM zS&y^LmHu^iRQ^o#hT7dHJ~Xy=Xe$Pf=99wzGoC4IAjB8gXi}@*JM8HM|B72gEgXFsl^WVNnQzL>PBZxP^rsPXIEJRsgJjq~_2W#Aq%Ca7 zQf^p2Z3u^NC_7$gXAUS$@;4@$_jX&yDhjkIf5<6@}FT$5Y@GGh0)PGJjI}_7(6X#hzFkd#8u!`*HE*@kFZ8KEx;Di+y zU!A33*A)@MWgI*(YKkQ~K{aKt_B)A)4VANCZ6#Yzq<~z3Ooqr$0oGTTvyd$VV4IUG zO(l@EMv!l2g@_nYk#$@5rB*=37F;$>go1iW&=Mj*T#u-D*s_r%r$02LfjDW9;=^FB z^NrorIeB<-E|g^TK_)FlL~2t0QAa_P2(%2`K$ zB;A-Mp6EnHd6-ydjjFend^wEQScLY2FN(=J_a`tiSY%ykUh5NfDa3?QIB$PBgS&B; zjhUB_nMi}_2y96|oau6mnUhGUlOz~Rso4mt$v&+KeSry^j@dz=SbMt(mDTi?y7`(P z7@J`Eo33e`wfRbg37p1xQ^>hydTC3|xd^wpna{bLyg{1M7m}wrNDjGxrBXyF`F`Y= zp5z%Qu63O!1S#+tpYZ-!L%k%Q_IaOy(VoEs0ss&I{mBFVi2(i?001fh16rU0`k(!2 zpb8qG2fCmMN}v$>pbomA5;~v^dZ8JLpcJ~H6WX92TA>;mp&SaLB>JHv+My>Zq5#SQ z^r=g`W;6pD05fW#G+LuKilaB$pEF9MJj$a!8l*caq(W+=McSh}dZa^&q(7RYO}eB& znxs0!pMgilj>#rcpYkP8z0QYNj{(rDdw7X&R(o>ZW4) zrgK`SZEB}zil=$npF_fuA9759noJNGsDmn~gxUos@qQ5+q*Q95K9q$7-x`%BMkqsRH_}n5wC93a!A}tJcb?*D9xX zx}au59%R#t@7Sduz@%b2s#i*`=o+P?%A=dQrmZ5antB&E>ITxfsVh{kL?EU5x~`tu zuj$IEQA!SZ(+n8%F)>x2P(=aQN~xXNrrTPr3u~qTK&%2v2l1K!2T-rlO0O3?uV0F> z8=JA2Dhn7pvcBrDqzbXxsUPT8lJ zAhCK{rgxgBYP+`9y0pVOvcyWUCcCuJx~2pQuWuWwCL63Mo2_j7w}9KSlQ&)T8Ak-7 zlBqZz-^4;#LuH_rK^hZJ65?WEn58`1t7)sQNBX2T+N7Lovw{1!nj5-&Te?;Hxv0Cj zsynB%(i9W~Jzi^LN_B7O!;QIEbTT!N7`0pHg?W_sVqe=N>C>)NOQfcns@96Umut0{ zdZEwSpaq(&|GB2qo1!b)qRJYz#tWrxs=VGird8{rG0S2dwp(E4i#MYSM#H;{Lx+9- z7o$*=cd|-)YlWZVS^)&Au=aXi&$_?)o4?Pizx^wr^=rQz@RMG9u;lAUv`aE{V>l}D zJS7li4;(!(7i+J}fo+gU`$vsAnMyl&Q>cV{BTO4om=vl6!O#;DxXU~o7Gg*wI#dB| zzLK!!gjh9JxO9VTR#Zh{$VrtM#6mp8L|nv@*%(Hg#7exxLX)NA6+!@64Ino}7=nrz zB)OGXc&o(3T-?Q8EHhpl#$v25-xqpnsBOoQNn^amY#cC=(Z+DR#IWkVu?wR>V3|l9 z$9f#bZ~Vr4{KxiJVKkxv4#UV8Ys!yYx!NVOGkeEmOvO5uJ)*t zw|vOBOv?wb0Ja>=t2|h(>`QV0Fu!cfV?4|myUEV%$-HTAw1}E%jDOP%#~ho=+f2=U zYA){iNZG8-&HT+o+|8Vf&U+j)pnS%KTz~7#&Wc>j^o+=**|n2AYp_gz=X}rdY|H-) z&|*w5ygbe_RL+?^&;%_o0^QK~j5SaEz_ql@_czZFoiEYM$Qg~#)ts>VsnGu1(fEhT z1HjNE-Niqg%m^#eBc0Oyg31_+(lE`$?hI}Wa#i&e6IOzU)%IgFjsC|S&9P%w({Y^7 z08+;aB1V~5#XX`<5ppeRA|^FfZEVy+xoVzOd`{^c)T+GEsf^J^y~YL|knQoOXd!qn zEW<9=i!gRt=T$@;wlj0hJt-p`ELlvY8ojY){~Mg#BNL-$zZ0$V%^EGEijTT+lu^n2Q8Pp zgLH7ohgcPF)6Iy@Et#*q(RmEU&VAG$jMHzK-JX+A2>ot}{wq)0&E4&-(%!An?;YMj zT-GnTwUO+^w*A8r0;|TBlozE`W}HqmOWgfE z!$-3pOBsQRibSPS%}t;`xW-vMk3Lq}klDVx9frm6CIzEP2x<+T9A{ zscmI&U21u4)2p1|%)QNpkUB;b>mdf)-q`hTua^I zQ{w%y;$$t;_~+#X{e5QsoxKAJUyM#7g}z2J+HGXvIUc!}m%9$;Dv2sY6yD^Z%-&_5 z%R+v{WM1Zvw|cn(-)yd*c!p%ct+-Z<-k|5yT20mddWUdY?sxtC#oP?mznt7(9YvDh zecty9V6MoCt~J+;#x4!yVJ^+gJm}9{4GJfn;GN_HF4%Sq>tF8Wef{dXUeG|{j!)<5 zLJVio-O|4f%*ZX%|4i(-Tq_bK3l3B0YkupsEy~=Sc_>#p1a2OJyhJM zw4Cu9-QXSX@n#}9R^x~tk@59C?x7Udu5A9rk*8x36L3knKfeX#vg6TiyzpaA(x49T zH4ho2l_C^>ZHJwxE&gf@d}3KoBSTXlt8(c_W^W`z-0O>&L}yM~&l8^f>YL2a{r=5b z>-06B)Y+xxNv`vC3^ATvlgTz>q>U0gUcRxolLuXsXRji6;K;We-wj^VpcC>iH}|;+ z-vw{GaHNa1%eYZ9*ipXYa1Ip~yutwvRf8DqwjaZB&Mo*&;W=JnuyDz>-1Z#L`gh{`VIld!PWctTlb-`k{3hi{ zqnWL1_LvAOmv}@(|I=Cyxf_i9jQ+9l%Rkn)A^GJY^8aG;0xnW{AAH8Q>g}xbOaIr> z`ShiPO0W+B?;QE;#aZu(=Km1y5K9q6Q*~uq_l0A5rfc%ta((BIzcIWRMDa%q)JRxT}?HsYyp-lWvWlQyvH)iY*bXdD6vIwAr|3DJr%Y%TaD|{yeL1 z>b8$P28u|4An;(pg$W-voEY(9#fAeAEQvC2+@ED%y2RKvrzxV8WdgMuQ!F52GP?p@ zS$ZF+&)!mZQeFDy>Qi++yhAGIhXDf)djIwv9QbhI#fcv`ZoDrXERt8I%-iJ`#LN?G z$Mgx^bZF7oFHto9En2o*+WS0@9nCs6c~tA!-tM?Yj+)*M?BBIMvI27N%YY(dHxG^;z;Kyz*m+w@B7G_~>x3cb((V#cEY*I{Ef|5jwN zMg9x`5EugqER75BHfx6wd^+(er!mfY39CT3nyWb?>xxLo4oUN=s>+11ZOHf_gC__T zUBoiW{vJDVzV!+m4_5zn)Eup>lUTVuCb|XLig_zwqa7}fGf(_1c+=R)^7glRE9Ez;F((LYw zYn6d*?cF$`g)L<(WV=|Ztg~TCh7!9Db8gRP4achX=N|!XL|`Sl zj9KOt5w2ORFpK61=PylKI$GTlSQeH9>XRB#jjOh~ z(*6g1**-PO33SNORN+2{B1hK-T;&AwNg5g*r*2i+Io1 zVp_mQ*m3)TsB7Qv?qE>>_Gar`hxk}=nn$89RE?OP`ur}>oTPws-<$jH->2d6Gn__o ze%j5)^7h=jFldEa*zXZ{;5R^%vCI$j!&B4lhd&otZ+)@zomTeL4F)ZbfETO~Fq}5N z@X3pTSVAAZ_=kltQE*=t#9#`$qCrSRFJ5%}pnvpNGug?`3filn3UwG3@ag7M{u5hZ z4E^Ik+~tZ+eB#{kcDO`|xbSJubK(ny$f6JyaR^b&mELm5L@uUGg9D(%4-fz&-i(oq zXEb9P%eY1~vQdp~Y@=Y-Faw3z5D5T0p%_pIzdag5es^?N7^5;sLM}y)hZJKX1@o9f zGR2NZd8C(+Xr7J8N{@X+8C*1pra!tWkUDB)D3$UUQW7Qrg+ah61EWe*GRBok!J-^A zV8BM;@nflD-sq5*nIkDLct$eYT%?l{CIwB2#f)GX#1l(&ETCJMJJnwhP#kIkCppMD zPHzB1F?i7Oijm-8EzdmzJkeO;-#eyDH64gS&yALC`u0l>n4v@Pm>JwibdTReUgfw8QzeD z3H)Zev{%&hgncS3zLe2L8ppYE-JQux$6F`)dB-U(Ec@&-qOKF zn`&A2u{L6^B`7{|Cq~fvm85u;gdHZ>(1ZGxiNI}BY_qo;ej1Fn`k~uzM5_eU{z13m zoFq-1n_0!$QMi~(z$tmd8~fCUw(GqneA((7_g2%r>^&}SksBE#u6DdC1RrJbBwb*o z7Xa&JZ-QZnUSHcg5aD*Mq zRu!vw!VVx}5wt?uQyuNQ12b%Ig||GV6-&n-1~T(TJY)+aB)w*A@q%3}-}Wv!$rX-b zE{g%sxi-wEWhe!b$RZurRJ9vV3hHFB%FeI?4?QNN3;vk@cw2!GmRmt=Z=7W)=Q+P9 zI7-bgUVo^e3-7kS*C{90hIZyU;b?69lJVVjWH^IOs&<1*4mL3uNHy)7=S?HS%v7x< zEw~!*r0vlqV~<%dIvLNfjXfeN8iXwLwVZB9(t@(}fN{+i5AGU3+cu(rslj2#*=Z(T zE_O|WRw=lY&dgVy?7~`lRi5hCRYhLkYtEkGcHqh!qTgHu)s>nyUr;n-8uiyT-Xf4zxxxwy|M~K1DrDZzmagg0c1ez!yX0!4`kv7 zCz-$sEFKEHKnujc4b;F6%)k%iKoIo65M00pG{L;Fy*!|(iA%st5w8}6!KOQpuTVkx zi$MjHz8j3W8p)9MBf${_LJ<_g9~{CUB*G&!!oNYjB}_ghbiyWt!Y7o%D5OFuT#M~n zv@FcMEsUrxoHZ}x!Y>rVFeF1TG{Z4G!!ks}&!D!5F}5m%!zq-*IIKb`<39w^L0Wl1 z+snhcVigD?}Jj!5RyML5M&bTQ^m+fh@a1Lc}1J`a?HNL>CCV zMqIt~ND{s9utv<2LVH6fvBYfYKR((-POJw&WRFKY55uuG<5@PdVYJrR!!9b1R1Al$ zYQ;zd#OE*pJY2OdOS7%&#Zr5=W@Nz~dOJ-*!Xl)`5DZ31VZ>}yHva3K?ck6zi>ER{ znuz+6XVjrx^cP>$LET%%zA?pg>#|7P5oPopR2;8X!^eEo$9)WwH1x+cRKtM$M}Y*$ zG;BwFgvf}L$cc=;d|U}*R7eFB3U$oL@3F^v+>nIq$bNuAf;7p2 z{6~~5$dx=vmQ=}>47Wql`8{f@i5sEFo5abS)XAOX$)5Ddp9IRFbVT>CNt+bPqeRN2 zRLZ4{NboSq1L479^vS18qHnMfZoCnr)XD%504I=2s$@fAW5?GpMRt6rC>#KKGE3T6 z03cx!3S^H{!o}z)0l6%Jv`i%c=*p@jHk$kntK`dXkW1v@1d*r+k+>Data(); + ... + node = node->Next(); + } +\end{verbatim} + +To delete nodes in a list as the list is being traversed, replace + +\begin{verbatim} + ... + node = node->Next(); + ... +\end{verbatim} + +with + +\begin{verbatim} + ... + delete point; + delete node; + node = SomeList.First(); + ... +\end{verbatim} + +See \helpref{wxNode}{wxnode} for members that retrieve the data associated with a node, and +members for getting to the next or previous node. + +Note that a cast is required when retrieving the data from a node. Although a +node is defined to store objects of type {\bf wxObject} and derived types, other +types (such as char*) may be used with appropriate casting. + +\wxheading{See also} + +\helpref{wxNode}{wxnode}, \helpref{wxStringList}{wxstringlist} + +\latexignore{\rtfignore{\wxheading{Members}}} + + +\membersection{wxList::wxList} + +\func{}{wxList}{\void} + +\func{}{wxList}{\param{unsigned int}{ key\_type}} + +\func{}{wxList}{\param{int}{ n}, \param{wxObject *}{objects[]}} + +\func{}{wxList}{\param{wxObject *}{object}, ...} + +Constructors. {\it key\_type} is one of wxKEY\_NONE, wxKEY\_INTEGER, or wxKEY\_STRING, +and indicates what sort of keying is required (if any). + +{\it objects} is an array of {\it n} objects with which to initialize the list. + +The variable-length argument list constructor must be supplied with a +terminating NULL. + +\membersection{wxList::\destruct{wxList}} + +\func{}{\destruct{wxList}}{\void} + +Destroys the list. Also destroys any remaining nodes, but does not destroy +client data held in the nodes. + +\membersection{wxList::Append} + +\func{wxNode *}{Append}{\param{wxObject *}{object}} + +\func{wxNode *}{Append}{\param{long}{ key}, \param{wxObject *}{object}} + +\func{wxNode *}{Append}{\param{const wxString\& }{key}, \param{wxObject *}{object}} + +Appends a new {\bf wxNode} to the end of the list and puts a pointer to the +\rtfsp{\it object} in the node. The last two forms store a key with the object for +later retrieval using the key. The new node is returned in each case. + +The key string is copied and stored by the list implementation. + +\membersection{wxList::Clear} + +\func{void}{Clear}{\void} + +Clears the list (but does not delete the client data stored with each node). + +\membersection{wxList::DeleteContents} + +\func{void}{DeleteContents}{\param{bool}{ destroy}} + +If {\it destroy} is TRUE, instructs the list to call {\it delete} on the client contents of +a node whenever the node is destroyed. The default is FALSE. + +\membersection{wxList::DeleteNode} + +\func{bool}{DeleteNode}{\param{wxNode *}{node}} + +Deletes the given node from the list, returning TRUE if successful. + +\membersection{wxList::DeleteObject} + +\func{bool}{DeleteObject}{\param{wxObject *}{object}} + +Finds the given client {\it object} and deletes the appropriate node from the list, returning +TRUE if successful. The application must delete the actual object separately. + +\membersection{wxList::Find} + +\func{wxNode *}{Find}{\param{long}{ key}} + +\func{wxNode *}{Find}{\param{const wxString\& }{key}} + +Returns the node whose stored key matches {\it key}. Use on a keyed list only. + +\membersection{wxList::First} + +\func{wxNode *}{First}{\void} + +Returns the first node in the list (NULL if the list is empty). + +\membersection{wxList::Insert} + +\func{wxNode *}{Insert}{\param{wxObject *}{object}} + +Insert object at front of list. + +\func{wxNode *}{Insert}{\param{wxNode *}{position}, \param{wxObject *}{object}} + +Insert object before {\it position}. + + +\membersection{wxList::Last} + +\func{wxNode *}{Last}{\void} + +Returns the last node in the list (NULL if the list is empty). + +\membersection{wxList::Member} + +\func{wxNode *}{Member}{\param{wxObject *}{object}} + +Returns the node associated with {\it object} if it is in the list, NULL otherwise. + +\membersection{wxList::Nth} + +\func{wxNode *}{Nth}{\param{int}{ n}} + +Returns the {\it nth} node in the list, indexing from zero (NULL if the list is empty +or the nth node could not be found). + +\membersection{wxList::Number} + +\func{int}{Number}{\void} + +Returns the number of elements in the list. + +\membersection{wxList::Sort} + +\func{void}{Sort}{\param{wxSortCompareFunction}{ compfunc}} + +\begin{verbatim} + // Type of compare function for list sort operation (as in 'qsort') + typedef int (*wxSortCompareFunction)(const void *elem1, const void *elem2); +\end{verbatim} + +Allows the sorting of arbitrary lists by giving +a function to compare two list elements. We use the system {\bf qsort} function +for the actual sorting process. The sort function receives pointers to wxObject pointers (wxObject **), +so be careful to dereference appropriately. + +Example: + +\begin{verbatim} + int listcompare(const void *arg1, const void *arg2) + { + return(compare(**(wxString **)arg1, // use the wxString 'compare' + **(wxString **)arg2)); // function + } + + void main() + { + wxList list; + + list.Append(new wxString("DEF")); + list.Append(new wxString("GHI")); + list.Append(new wxString("ABC")); + list.Sort(listcompare); + } +\end{verbatim} + + diff --git a/docs/latex/wx/listbox.tex b/docs/latex/wx/listbox.tex new file mode 100644 index 0000000000..75e7037afc --- /dev/null +++ b/docs/latex/wx/listbox.tex @@ -0,0 +1,346 @@ +\section{\class{wxListBox}}\label{wxlistbox} + +A listbox is used to select one or more of a list of strings. The +strings are displayed in a scrolling box, with the selected string(s) +marked in reverse video. A listbox can be single selection (if an item +is selected, the previous selection is removed) or multiple selection +(clicking an item toggles the item on or off independently of other +selections). + +List box elements are numbered from zero. + +A listbox callback gets an event wxEVT\_COMMAND\_LISTBOX\_SELECT for single clicks, and +wxEVT\_COMMAND\_LISTBOX\_DOUBLE\_CLICKED for double clicks. Another way of intercepting +double clicks is to override \helpref{wxWindow::OnDefaultAction}{wxwindowondefaultaction}. + +\wxheading{Derived from} + +\helpref{wxControl}{wxcontrol}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +\twocolwidtha{5cm}% +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{wxLB\_SINGLE}}{Single-selection list.} +\twocolitem{\windowstyle{wxLB\_MULTIPLE}}{Multiple-selection list: the user can toggle multiple +items on and off.} +\twocolitem{\windowstyle{wxLB\_EXTENDED}}{Extended-selection list: the user can +select multiple items using the SHIFT key and the mouse or special key combinations.} +\twocolitem{\windowstyle{wxLB\_HSCROLL}}{Create horizontal scrollbar if contents are too wide (Windows only).} +\twocolitem{\windowstyle{wxLB\_ALWAYS\_SB}}{Always show a vertical scrollbar.} +\twocolitem{\windowstyle{wxLB\_NEEDED\_SB}}{Only create a vertical scrollbar if needed.} +\twocolitem{\windowstyle{wxLB\_SORT}}{The listbox contents are sorted in alphabetical order.} +\end{twocollist} + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{See also} + +\helpref{wxChoice}{wxchoice}, \helpref{wxComboBox}{wxcombobox}, \helpref{wxListCtrl}{wxlistctrl} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxListBox::wxListBox}\label{wxlistboxconstr} + +\func{}{wxListBox}{\void} + +Default constructor. + +\func{}{wxListBox}{\param{wxWindow*}{ parent}, \param{const wxWindowID}{ id},\rtfsp +\param{const wxPoint\&}{ pos = wxDefaultPosition}, \param{const wxSize\&}{ size = wxDefaultSize},\rtfsp +\param{const int}{ n}, \param{const wxString }{choices[] = NULL},\rtfsp +\param{const long}{ style = 0}, \param{const wxValidator\& }{validator = wxDefaultValidator}, \param{const wxString\& }{name = ``listBox"}} + +Constructor, creating and showing a list box. + +\wxheading{Parameters} + +\docparam{parent}{Parent window. Must not be NULL.} + +\docparam{id}{Window identifier. A value of -1 indicates a default value.} + +\docparam{pos}{Window position.} + +\docparam{size}{Window size. If the default size (-1, -1) is specified then the window is sized +appropriately.} + +\docparam{n}{Number of strings with which to initialise the control.} + +\docparam{choices}{An array of strings with which to initialise the control.} + +\docparam{style}{Window style. See \helpref{wxListBox}{wxlistbox}.} + +\docparam{validator}{Window validator.} + +\docparam{name}{Window name.} + +\wxheading{See also} + +\helpref{wxListBox::Create}{wxlistboxcreate}, \helpref{wxValidator}{wxvalidator} + +\membersection{wxListBox::\destruct{wxListBox}} + +\func{void}{\destruct{wxListBox}}{\void} + +Destructor, destroying the list box. + +\membersection{wxListBox::Append}\label{wxlistboxappend} + +\func{void}{Append}{\param{const wxString\& }{ item}} + +Adds the item to the end of the list box. + +\func{void}{Append}{\param{const wxString\& }{ item}, \param{char* }{clientData}} + +Adds the item to the end of the list box, associating the given data +with the item. + +\wxheading{Parameters} + +\docparam{item}{String to add.} + +\docparam{clientData}{Client data to associate with the item.} + +\membersection{wxListBox::Clear}\label{wxlistboxclear} + +\func{void}{Clear}{\void} + +Clears all strings from the list box. + +\membersection{wxListBox::Create}\label{wxlistboxcreate} + +\func{bool}{Create}{\param{wxWindow*}{ parent}, \param{const wxWindowID}{ id},\rtfsp +\param{const wxPoint\&}{ pos = wxDefaultPosition}, \param{const wxSize\&}{ size = wxDefaultSize},\rtfsp +\param{const int}{ n}, \param{const wxString }{choices[] = NULL},\rtfsp +\param{const long}{ style = 0}, \param{const wxValidator\& }{validator = wxDefaultValidator}, \param{const wxString\& }{name = ``listBox"}} + +Creates the listbox for two-step construction. See \helpref{wxListBox::wxListBox}{wxlistboxconstr}\rtfsp +for further details. + +\membersection{wxListBox::Delete}\label{wxlistboxdelete} + +\func{void}{Delete}{\param{int}{ n}} + +Deletes an item from the listbox. + +\wxheading{Parameters} + +\docparam{n}{The zero-based item index.} + +\membersection{wxListBox::Deselect}\label{wxlistboxdeselect} + +\func{void}{Deselect}{\param{int}{ n}} + +Deselects an item in the list box. + +\wxheading{Parameters} + +\docparam{n}{The zero-based item to deselect.} + +\wxheading{Remarks} + +This applies to multiple selection listboxes only. + +\membersection{wxListBox::FindString}\label{wxlistboxfindstring} + +\func{int}{FindString}{\param{const wxString\& }{string}} + +Finds an item matching the given string. + +\wxheading{Parameters} + +\docparam{string}{String to find.} + +\wxheading{Return value} + +The zero-based position of the item, or -1 if the string was not found. + +\membersection{wxListBox::GetClientData}\label{wxlistboxgetclientdata} + +\constfunc{char*}{GetClientData}{\param{const int}{ n}} + +Returns a pointer to the client data associated with the given item (if any). + +\wxheading{Parameters} + +\docparam{n}{The zero-based position of the item.} + +\wxheading{Return value} + +A pointer to the client data, or NULL if not present. + +\membersection{wxListBox::GetSelection}\label{wxlistboxgetselection} + +\constfunc{int}{GetSelection}{\void} + +Gets the position of the selected item. + +\wxheading{Return value} + +The position of the current selection. + +\wxheading{Remarks} + +Applicable to single selection list boxes only. + +\wxheading{See also} + +\helpref{wxListBox::SetSelection}{wxlistboxsetselection},\rtfsp +\helpref{wxListBox::GetStringSelection}{wxlistboxgetstringselection},\rtfsp +\helpref{wxListBox::GetSelections}{wxlistboxgetselections} + +\membersection{wxListBox::GetSelections}\label{wxlistboxgetselections} + +\constfunc{int}{GetSelections}{\param{int **}{selections}} + +Gets an array containing the positions of the selected strings. + +\wxheading{Parameters} + +\docparam{selections}{A pointer to an integer array, which will be allocated by the function if +selects are present. Do not deallocate the returned array - it will be deallocated by the listbox.} + +\wxheading{Return value} + +The number of selections. + +\wxheading{Remarks} + +Use this with a multiple selection listbox. + +\wxheading{See also} + +\helpref{wxListBox::GetSelection}{wxlistboxgetselection},\rtfsp +\helpref{wxListBox::GetStringSelection}{wxlistboxgetstringselection},\rtfsp +\helpref{wxListBox::SetSelection}{wxlistboxsetselection} + +\membersection{wxListBox::GetString}\label{wxlistboxgetstring} + +\constfunc{wxString}{GetString}{\param{const int}{ n}} + +Returns the string at the given position. + +\wxheading{Parameters} + +\docparam{n}{The zero-based position.} + +\wxheading{Return value} + +The string, or an empty string if the position was invalid. + +\membersection{wxListBox::GetStringSelection}\label{wxlistboxgetstringselection} + +\constfunc{wxString}{GetStringSelection}{\void} + +Gets the selected string - for single selection list boxes only. This +must be copied by the calling program if long term use is to be made of +it. + +\wxheading{See also} + +\helpref{wxListBox::GetSelection}{wxlistboxgetselection},\rtfsp +\helpref{wxListBox::GetSelections}{wxlistboxgetselections},\rtfsp +\helpref{wxListBox::SetSelection}{wxlistboxsetselection} + +\membersection{wxListBox::Number}\label{wxlistboxnumber} + +\constfunc{int}{Number}{\void} + +Returns the number of items in the listbox. + +\membersection{wxListBox::Selected}\label{wxlistboxselected} + +\constfunc{bool}{Selected}{\param{const int}{ n}} + +Determines whether an item is selected. + +\wxheading{Parameters} + +\docparam{n}{The zero-based item index.} + +\wxheading{Return value} + +TRUE if the given item is selected, FALSE otherwise. + +\membersection{wxListBox::Set}\label{wxlistboxset} + +\func{void}{Set}{\param{const int}{ n}, \param{const wxString*}{ choices}} + +Clears the list box and adds the given strings. + +\wxheading{Parameters} + +\docparam{n}{The number of strings to set.} + +\docparam{choices}{An array of strings to set.} + +\wxheading{Remarks} + +Deallocate the array from the calling program +after this function has been called. + +\membersection{wxListBox::SetClientData}\label{wxlistboxsetclientdata} + +\func{void}{SetClientData}{\param{const int}{ n}, \param{char* }{data}} + +Associates the given client data pointer with the given item. + +\wxheading{Parameters} + +\docparam{n}{The zero-based item index.} + +\docparam{data}{The client data to associate with the item.} + +\membersection{wxListBox::SetFirstItem}\label{wxlistboxsetfirstitem} + +\func{void}{SetFirstItem}{\param{int}{ n}} + +\func{void}{SetFirstItem}{\param{const wxString\& }{string}} + +Set the specified item to be the first visible item. + +\wxheading{Parameters} + +\docparam{n}{The zero-based item index.} + +\docparam{string}{The string that should be visible.} + +\membersection{wxListBox::SetSelection}\label{wxlistboxsetselection} + +\func{void}{SetSelection}{\param{const int}{ n}, \param{const bool }{select = TRUE}} + +Selects or deselects the given item. + +\wxheading{Parameters} + +\docparam{n}{The zero-based item index.} + +\docparam{select}{If TRUE, will select the item. If FALSE, will deselect it.} + +\membersection{wxListBox::SetString}\label{wxlistboxsetstring} + +\func{void}{SetString}{\param{const int}{ n}, \param{const wxString\& }{ string}} + +Sets the string value of an item. + +\wxheading{Parameters} + +\docparam{n}{The zero-based item index.} + +\docparam{string}{The string to set.} + +\membersection{wxListBox::SetStringSelection}\label{wxlistboxsetstringselection} + +\func{void}{SetStringSelection}{\param{const wxString\& }{ string}, \param{const bool}{ select = TRUE}} + +Sets the current selection. + +\wxheading{Parameters} + +\docparam{string}{The item to select.} + +\docparam{select}{If TRUE, will select the item. If FALSE, will deselect it.} + diff --git a/docs/latex/wx/listctrl.tex b/docs/latex/wx/listctrl.tex new file mode 100644 index 0000000000..acc98d4a6c --- /dev/null +++ b/docs/latex/wx/listctrl.tex @@ -0,0 +1,511 @@ +\section{\class{wxListCtrl}}\label{wxlistctrl} + +A list control presents lists in a number of formats: list view, report view, icon view +and small icon view. Elements are numbered from zero. + +To intercept events from a list control, use the event table macros described in \helpref{wxListEvent}{wxlistevent}. + +\wxheading{Derived from} + +\helpref{wxControl}{wxcontrol}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{wxLC\_LIST}}{multicolumn list view, with optional small icons. +Columns are computed automatically, i.e. you don't set columns as in wxLC\_REPORT. In other words, +the list wraps, unlike a wxListBox.} +\twocolitem{\windowstyle{wxLC\_REPORT}}{single or multicolumn report view, with optional header.} +\twocolitem{\windowstyle{wxLC\_ICON}}{Large icon view, with optional labels.} +\twocolitem{\windowstyle{wxLC\_SMALL\_ICON}}{Small icon view, with optional labels.} +\twocolitem{\windowstyle{wxLC\_ALIGN\_TOP}}{Icons align to the top (default).} +\twocolitem{\windowstyle{wxLC\_ALIGN\_LEFT}}{Icons align to the left.} +\twocolitem{\windowstyle{wxLC\_AUTOARRANGE}}{Icons arrange themselves.} +\twocolitem{\windowstyle{wxLC\_USER\_TEXT}}{The application provides label text on demand, except for column headers.} +\twocolitem{\windowstyle{wxLC\_EDIT\_LABELS}}{Labels are editable: the application will be notified when editing starts.} +\twocolitem{\windowstyle{wxLC\_NO\_HEADER}}{No header in report mode.} +\twocolitem{\windowstyle{wxLC\_SINGLE\_SEL}}{Single selection.} +\twocolitem{\windowstyle{wxLC\_SORT\_ASCENDING}}{Sort in ascending order (must still supply a comparison callback in SortItems.} +\twocolitem{\windowstyle{wxLC\_SORT\_DESCENDING}}{Sort in descending order (must still supply a comparison callback in SortItems.} +\end{twocollist} + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{See also} + +\helpref{wxListCtrl overview}{wxlistctrloverview}, \helpref{wxListBox}{wxlistbox}, \helpref{wxTreeCtrl}{wxtreectrl},\rtfsp +\helpref{wxImageList}{wximagelist}, \helpref{wxListEvent}{wxlistevent} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxListCtrl::wxListCtrl}\label{wxlistctrlconstr} + +\func{}{wxListCtrl}{\void} + +Default constructor. + +\func{}{wxListCtrl}{\param{wxWindow*}{ parent}, \param{const wxWindowID}{ id},\rtfsp +\param{const wxPoint\&}{ pos = wxDefaultPosition}, \param{const wxSize\&}{ size = wxDefaultSize},\rtfsp +\param{const long}{ style = wxLC\_ICON}, \param{const wxValidator\& }{validator = wxDefaultValidator}, \param{const wxString\& }{name = ``listCtrl"}} + +Constructor, creating and showing a list control. + +\wxheading{Parameters} + +\docparam{parent}{Parent window. Must not be NULL.} + +\docparam{id}{Window identifier. A value of -1 indicates a default value.} + +\docparam{pos}{Window position.} + +\docparam{size}{Window size. If the default size (-1, -1) is specified then the window is sized +appropriately.} + +\docparam{style}{Window style. See \helpref{wxListCtrl}{wxlistctrl}.} + +\docparam{validator}{Window validator.} + +\docparam{name}{Window name.} + +\wxheading{See also} + +\helpref{wxListCtrl::Create}{wxlistctrlcreate}, \helpref{wxValidator}{wxvalidator} + +\membersection{wxListCtrl::\destruct{wxListCtrl}} + +\func{void}{\destruct{wxListCtrl}}{\void} + +Destructor, destroying the list control. + +\membersection{wxListCtrl::Arrange}\label{wxlistctrlarrange} + +\func{bool}{Arrange}{\param{const int }{flag = wxLIST\_ALIGN\_DEFAULT}} + +Arranges the items in icon or small icon view. {\it flag} is one of: + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{wxLIST\_ALIGN\_DEFAULT}{Default alignment.} +\twocolitem{wxLIST\_ALIGN\_LEFT}{Align to the left side of the control.} +\twocolitem{wxLIST\_ALIGN\_TOP}{Align to the top side of the control.} +\twocolitem{wxLIST\_ALIGN\_SNAP\_TO\_GRID}{Snap to grid.} +\end{twocollist} + +\membersection{wxListCtrl::Create}\label{wxlistctrlcreate} + +\func{bool}{Create}{\param{wxWindow*}{ parent}, \param{const wxWindowID}{ id},\rtfsp +\param{const wxPoint\&}{ pos = wxDefaultPosition}, \param{const wxSize\&}{ size = wxDefaultSize},\rtfsp +\param{const long}{ style = wxLC\_ICON}, \param{const wxValidator\& }{validator = wxDefaultValidator}, \param{const wxString\& }{name = ``listCtrl"}} + +Creates the list control. See \helpref{wxListCtrl::wxListCtrl}{wxlistctrlconstr} for further details. + +\membersection{wxListCtrl::DeleteItem}\label{wxlistctrldeleteitem} + +\func{bool}{DeleteItem}{\param{const long }{item}} + +Deletes the specified item. + +\membersection{wxListCtrl::DeleteAllItems}\label{wxlistctrldeleteallitems} + +\func{bool}{DeleteAllItems}{\void} + +Deletes all the items in the list control. + +\membersection{wxListCtrl::DeleteColumn}\label{wxlistctrldeletecolumn} + +\func{bool}{DeleteColumn}{\param{const int }{col}} + +Deletes a column. + +\membersection{wxListCtrl::Edit}\label{wxlistctrledit} + +\func{wxTextCtrl\&}{Edit}{\param{const long }{item}} + +Starts editing a label. + +\membersection{wxListCtrl::EnsureVisible}\label{wxlistctrlensurevisible} + +\func{bool}{EnsureVisible}{\param{const long }{item}} + +Ensures this item is visible. + +\membersection{wxListCtrl::FindItem}\label{wxlistctrlfinditem} + +\func{long}{FindItem}{\param{const long }{start}, \param{const wxString\& }{str}, \param{const bool }{partial = FALSE}} + +Find an item whose label matches this string, starting from the item after {\it start} or +the beginning if {\it start} is -1. + +\func{long}{FindItem}{\param{const long }{start}, \param{const long }{data}} + +Find an item whose data matches this data, starting from the item after {\it start} or +the beginning if 'start' is -1. + +\func{long}{FindItem}{\param{const long }{start}, \param{const wxPoint\& }{pt}, \param{const int }{direction}} + +Find an item nearest this position in the specified direction, starting from +the item after {\it start} or the beginning if {\it start} is -1. + +\membersection{wxListCtrl::GetColumn}\label{wxlistctrlgetcolumn} + +\constfunc{bool}{GetColumn}{\param{const int }{col}, \param{wxListItem\& }{item}} + +Gets information about this column. See \helpref{wxListCtrl::SetItem}{wxlistctrlsetitem} for more +information. + +\membersection{wxListCtrl::GetColumnWidth}\label{wxlistctrlgetcolumnwidth} + +\constfunc{int}{GetColumnWidth}{\param{const int }{col}} + +Gets the column width (report view only). + +\membersection{wxListCtrl::GetCountPerPage}\label{wxlistctrlgetcountperpage} + +\constfunc{int}{GetCountPerPage}{\void} + +Gets the number of items that can fit vertically in the +visible area of the list control (list or report view) +or the total number of items in the list control (icon +or small icon view). + +\membersection{wxListCtrl::GetEditControl}\label{wxlistctrlgeteditcontrol} + +\constfunc{wxTextCtrl\&}{GetEditControl}{\void} + +Gets the edit control for editing labels. + +\membersection{wxListCtrl::GetImageList}\label{wxlistctrlgetimagelist} + +\constfunc{wxImageList*}{GetImageList}{\param{const int }{which}} + +Returns the specified image list. {\it which} may be one of: + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{wxIMAGE\_LIST\_NORMAL}}{The normal (large icon) image list.} +\twocolitem{\windowstyle{wxIMAGE\_LIST\_SMALL}}{The small icon image list.} +\twocolitem{\windowstyle{wxIMAGE\_LIST\_STATE}}{The user-defined state image list (unimplemented).} +\end{twocollist} + +\membersection{wxListCtrl::GetItem}\label{wxlistctrlgetitem} + +\constfunc{bool}{GetItem}{\param{wxListItem\& }{info}} + +Gets information about the item. See \helpref{wxListCtrl::SetItem}{wxlistctrlsetitem} for more +information. + +\membersection{wxListCtrl::GetItemData}\label{wxlistctrlgetitemdata} + +\constfunc{long}{GetItemData}{\param{const long }{item}} + +Gets the application-defined data associated with this item. + +\membersection{wxListCtrl::GetItemPosition}\label{wxlistctrlgetitemposition} + +\constfunc{bool}{GetItemPosition}{\param{const long }{item}, \param{wxPoint\& }{pos}} + +Returns the position of the item, in icon or small icon view. + +\membersection{wxListCtrl::GetItemRect}\label{wxlistctrlgetitemrect} + +\constfunc{bool}{GetItemRect}{\param{const long }{item}, \param{wxRect\& }{rect}, \param{const int }{code = wxLIST\_RECT\_BOUNDS}} + +Returns the rectangle representing the item's size and position, in client coordinates. + +{\it code} is one of wxLIST\_RECT\_BOUNDS, wxLIST\_RECT\_ICON, wxLIST\_RECT\_LABEL. + +\membersection{wxListCtrl::GetItemState}\label{wxlistctrlgetitemstate} + +\constfunc{int}{GetItemState}{\param{const long }{item}, \param{const long }{stateMask}} + +Gets the item state. For a list of state flags, see \helpref{wxListCtrl::SetItem}{wxlistctrlsetitem}. + +The {\bf stateMask} indicates which state flags are of interest. + +\membersection{wxListCtrl::GetItemCount}\label{wxlistctrlgetitemcount} + +\constfunc{int}{GetItemCount}{\void} + +Returns the number of items in the list control. + +\membersection{wxListCtrl::GetItemSpacing}\label{wxlistctrlgetitemspacing} + +\constfunc{int}{GetItemSpacing}{\param{bool }{isSmall}} + +Retrieves the spacing between icons in pixels. +If {\it small} is TRUE, gets the spacing for the small icon +view, otherwise the large icon view. + +\membersection{wxListCtrl::GetItemText}\label{wxlistctrlgetitemtext} + +\constfunc{wxString}{GetItemText}{\param{const long }{item}} + +Gets the item text for this item. + +\membersection{wxListCtrl::GetNextItem}\label{wxlistctrlgetnextitem} + +\constfunc{long}{GetNextItem}{\param{const long }{item}, \param{int }{geometry = wxLIST\_NEXT\_ALL}, \param{int }{state = wxLIST\_STATE\_DONTCARE}} + +Searches for an item with the given goemetry or state, starting from {\it item}. {\it item} can be -1 +to find the first item that matches the specified flags. + +Returns the item or -1 if unsuccessful. + +{\it geometry} can be one of: + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{wxLIST\_NEXT\_ABOVE}{Searches for an item above the specified item.} +\twocolitem{wxLIST\_NEXT\_ALL}{Searches for subsequent item by index.} +\twocolitem{wxLIST\_NEXT\_BELOW}{Searches for an item below the specified item.} +\twocolitem{wxLIST\_NEXT\_LEFT}{Searches for an item to the left of the specified item.} +\twocolitem{wxLIST\_NEXT\_RIGHT}{Searches for an item to the right of the specified item.} +\end{twocollist} + +{\it state} can be a bitlist of the following: + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{wxLIST\_STATE\_DONTCARE}{Don't care what the state is.} +\twocolitem{wxLIST\_STATE\_DROPHILITED}{The item indicates it is a drop target.} +\twocolitem{wxLIST\_STATE\_FOCUSED}{The item has the focus.} +\twocolitem{wxLIST\_STATE\_SELECTED}{The item is selected.} +\twocolitem{wxLIST\_STATE\_CUT}{The item is selected as part of a cut and paste operation.} +\end{twocollist} + +\membersection{wxListCtrl::GetSelectedItemCount}\label{wxlistctrlgetselecteditemcount} + +\constfunc{int}{GetSelectedItemCount}{\void} + +Returns the number of selected items in the list control. + +\membersection{wxListCtrl::GetTextColour}\label{wxlistctrlgettextcolour} + +\constfunc{wxColour}{GetTextColour}{\void} + +Gets the text colour of the list control. + +\membersection{wxListCtrl::GetTopItem}\label{wxlistctrlgettopitem} + +\constfunc{long}{GetTopItem}{\void} + +Gets the index of the topmost visible item when in +list or report view. + +\membersection{wxListCtrl::HitTest}\label{wxlistctrlhittest} + +\func{long}{HitTest}{\param{const wxPoint\& }{point}, \param{int\& }{flags}} + +Determines which item (if any) is at the specified point, +giving details in {\it flags}. {\it flags} will be a combination of the following flags: + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{wxLIST\_HITTEST\_ABOVE}{Above the client area.} +\twocolitem{wxLIST\_HITTEST\_BELOW}{Below the client area.} +\twocolitem{wxLIST\_HITTEST\_NOWHERE}{In the client area but below the last item.} +\twocolitem{wxLIST\_HITTEST\_ONITEMICON}{On the bitmap associated with an item.} +\twocolitem{wxLIST\_HITTEST\_ONITEMLABEL}{On the label (string) associated with an item.} +\twocolitem{wxLIST\_HITTEST\_ONITEMRIGHT}{In the area to the right of an item.} +\twocolitem{wxLIST\_HITTEST\_ONITEMSTATEICON}{On the state icon for a tree view item that is in a user-defined state.} +\twocolitem{wxLIST\_HITTEST\_TOLEFT}{To the right of the client area.} +\twocolitem{wxLIST\_HITTEST\_TORIGHT}{To the left of the client area.} +\twocolitem{wxLIST\_HITTEST\_ONITEM}{Combination of wxLIST\_HITTEST\_ONITEMICON, wxLIST\_HITTEST\_ONITEMLABEL, +wxLIST\_HITTEST\_ONITEMSTATEICON.} +\end{twocollist} + +\membersection{wxListCtrl::InsertColumn}\label{wxlistctrlinsertcolumn} + +\func{long}{InsertColumn}{\param{const long }{col}, \param{wxListItem\& }{info}} + +For list view mode (only), inserts a column. For more details, see \helpref{wxListCtrl::SetItem}{wxlistctrlsetitem}. + +\func{long}{InsertColumn}{\param{const long }{col}, \param{const wxString\& }{heading}, \param{const int }{format = wxLIST\_FORMAT\_LEFT},\rtfsp +\param{const int }{width = -1}} + +For list view mode (only), inserts a column. For more details, see \helpref{wxListCtrl::SetItem}{wxlistctrlsetitem}. + +\membersection{wxListCtrl::InsertItem}\label{wxlistctrlinsertitem} + +\func{long}{InsertItem}{\param{wxListItem\& }{info}} + +Inserts an item, returning the index of the new item if successful, +-1 otherwise. + +\func{long}{InsertItem}{\param{const long }{index}, \param{const wxString\& }{label}} + +Inserts a string item. + +\func{long}{InsertItem}{\param{const long }{index}, \param{const int }{imageIndex}} + +Inserts an image item. + +\func{long}{InsertItem}{\param{const long }{index}, \param{const wxString\& }{label}, \param{const int }{imageIndex}} + +Insert an image/string item. + +\membersection{wxListCtrl::ScrollList}\label{wxlistctrlscrolllist} + +\func{bool}{ScrollList}{\param{const int }{dx}, \param{const int }{dy}} + +Scrolls the list control. If in icon, small icon or report view mode, +dx specifies the number of pixels to scroll. If in list view mode, dx +specifies the number of columns to scroll. + +If in icon, small icon or list view mode, dy specifies the number of pixels +to scroll. If in report view mode, dy specifies the number of lines to scroll. + +\membersection{wxListCtrl::SetBackgroundColour}\label{wxlistctrlsetbackgroundcolour} + +\func{void}{SetBackgroundColour}{\param{const wxColour\& }{col}} + +Sets the background colour (GetBackgroundColour already implicit in +wxWindow class). + +\membersection{wxListCtrl::SetColumn}\label{wxlistctrlsetcolumn} + +\func{bool}{SetColumn}{\param{const int }{col}, \param{wxListItem\& }{item}} + +Sets information about this column. See \helpref{wxListCtrl::SetItem}{wxlistctrlsetitem} for more +information. + +\membersection{wxListCtrl::SetColumnWidth}\label{wxlistctrlsetcolumnwidth} + +\func{bool}{SetColumnWidth}{\param{const int }{col}, \param{const int }{width}} + +Sets the column width (report view only). + +{\it width} can be a width in pixels or wxLIST\_AUTOSIZE (-1) or wxLIST\_AUTOSIZE\_USEHEADER (-2). + +\membersection{wxListCtrl::SetImageList}\label{wxlistctrlsetimagelist} + +\func{void}{SetImageList}{\param{wxImageList*}{ imageList}, \param{const int }{which}} + +Sets the image list associated with the control. {\it which} is one of +wxIMAGE\_LIST\_NORMAL, wxIMAGE\_LIST\_SMALL, wxIMAGE\_LIST\_STATE (the last is unimplemented). + +\membersection{wxListCtrl::SetItem}\label{wxlistctrlsetitem} + +\func{bool}{SetItem}{\param{wxListItem\& }{info}} + +Sets information about the item. + +wxListItem is a class with the following members: + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{long m\_mask}{Indicates which fields are valid. See the list of valid mask flags below.} +\twocolitem{long m\_itemId}{The zero-based item position.} +\twocolitem{int m\_col}{Zero-based column, if in report mode.} +\twocolitem{long m\_state}{The state of the item. See the list of valid state flags below.} +\twocolitem{long m\_stateMask}{A mask indicating which state flags are valid. See the list of valid state flags below.} +\twocolitem{wxString m\_text}{The label/header text.} +\twocolitem{int m\_image}{The zero-based index into an image list.} +\twocolitem{long m\_data}{Application-defined data.} +\twocolitem{int m\_format}{For columns only: the format. Can be wxLIST\_FORMAT\_LEFT, wxLIST\_FORMAT\_RIGHT or +wxLIST\_FORMAT\_CENTRE.} +\twocolitem{int m\_width}{For columns only: the column width.} +\end{twocollist} + +The {\bf m\_mask} member contains a bitlist specifying which of the other fields are valid. The flags are: + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{wxLIST\_MASK\_STATE}{The {\bf m\_state} field is valid.} +\twocolitem{wxLIST\_MASK\_TEXT}{The {\bf m\_text} field is valid.} +\twocolitem{wxLIST\_MASK\_IMAGE}{The {\bf m\_image} field is valid.} +\twocolitem{wxLIST\_MASK\_DATA}{The {\bf m\_data} field is valid.} +\twocolitem{wxLIST\_MASK\_WIDTH}{The {\bf m\_width} field is valid.} +\twocolitem{wxLIST\_MASK\_FORMAT}{The {\bf m\_format} field is valid.} +\end{twocollist} + +The {\bf m\_stateMask} and {\bf m\_state} members take flags from the following: + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{wxLIST\_STATE\_DONTCARE}{Don't care what the state is.} +\twocolitem{wxLIST\_STATE\_DROPHILITED}{The item is highlighted to receive a drop event.} +\twocolitem{wxLIST\_STATE\_FOCUSED}{The item has the focus.} +\twocolitem{wxLIST\_STATE\_SELECTED}{The item is selected.} +\twocolitem{wxLIST\_STATE\_CUT}{The item is in the cut state.} +\end{twocollist} + +\func{long}{SetItem}{\param{const long }{index}, \param{const int }{col}, \param{const wxString\& }{label}, \param{const int }{imageId = -1}} + +Sets a string field at a particular column. + +\membersection{wxListCtrl::SetItemData}\label{wxlistctrlsetitemdata} + +\func{bool}{SetItemData}{\param{const long }{item}, \param{long }{data}} + +Associates application-defined data with this item. + +\membersection{wxListCtrl::SetItemImage}\label{wxlistctrlsetitemimage} + +\func{bool}{SetItemImage}{\param{const long }{item}, \param{const int }{image}, \param{const int }{selImage}} + +Sets the unselected and selected images associated with the item. The images are indices into the +image list associated with the list control. + +\membersection{wxListCtrl::SetItemPosition}\label{wxlistctrlsetitemposition} + +\func{bool}{SetItemPosition}{\param{const long }{item}, \param{const wxPoint\& }{pos}} + +Sets the position of the item, in icon or small icon view. + +\membersection{wxListCtrl::SetItemState}\label{wxlistctrlsetitemstate} + +\func{bool}{SetItemState}{\param{const long }{item}, \param{const long }{state}, \param{const long }{stateMask}} + +Sets the item state. For a list of state flags, see \helpref{wxListCtrl::SetItem}{wxlistctrlsetitem}. + +The {\bf stateMask} indicates which state flags are valid. + +\membersection{wxListCtrl::SetItemText}\label{wxlistctrlsetitemtext} + +\func{void}{SetItemText}{\param{const long }{item}, \param{const wxString\& }{text}} + +Sets the item text for this item. + +\membersection{wxListCtrl::SetSingleStyle}\label{wxlistctrlsetsinglestyle} + +\func{void}{SetSingleStyle}{\param{const long }{style}, \param{const bool }{add = TRUE}} + +Adds or removes a single window style. + +\membersection{wxListCtrl::SetTextColour}\label{wxlistctrlsettextcolour} + +\func{void}{SetTextColour}{\param{const wxColour\& }{col}} + +Sets the text colour of the list control. + +\membersection{wxListCtrl::SetWindowStyleFlag}\label{wxlistctrlsetwindowstyleflag} + +\func{void}{SetWindowStyleFlag}{\param{const long }{style}} + +Sets the whole window style. + +\membersection{wxListCtrl::SortItems}\label{wxlistctrlsortitems} + +\func{bool}{SortItems}{\param{wxListCtrlCompare }{fn}, \param{long }{data}} + +Sorts the items in the list control. + +fn is a function which takes 3 long arguments: item1, item2, data. + +item1 is the long data associated with a first item (NOT the index). + +item2 is the long data associated with a second item (NOT the index). + +data is the same value as passed to SortItems. + +The return value is a negative number if the first item should precede the second +item, a positive number of the second item should precede the first, +or zero if the two items are equivalent. + +data is arbitrary data to be passed to the sort function. + diff --git a/docs/latex/wx/listevt.tex b/docs/latex/wx/listevt.tex new file mode 100644 index 0000000000..e1561cda4d --- /dev/null +++ b/docs/latex/wx/listevt.tex @@ -0,0 +1,87 @@ +\section{\class{wxListEvent}}\label{wxlistevent} + +A list event holds information about events associated with wxListCtrl objects. + +\wxheading{Derived from} + +\helpref{wxCommandEvent}{wxcommandevent}\\ +\helpref{wxEvent}{wxevent}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Event table macros} + +To process input from a list control, use these event handler macros to direct input to member +functions that take a wxListEvent argument. + +\twocolwidtha{7cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf EVT\_LIST\_BEGIN\_DRAG(id, func)}}{Begin dragging with the left mouse button.} +\twocolitem{{\bf EVT\_LIST\_BEGIN\_RDRAG(id, func)}}{Begin dragging with the right mouse button.} +\twocolitem{{\bf EVT\_LIST\_BEGIN\_LABEL\_EDIT(id, func)}}{Begin editing a label.} +\twocolitem{{\bf EVT\_LIST\_END\_LABEL\_EDIT(id, func)}}{Finish editing a label.} +\twocolitem{{\bf EVT\_LIST\_DELETE\_ITEM(id, func)}}{Delete an item.} +\twocolitem{{\bf EVT\_LIST\_DELETE\_ALL\_ITEMS(id, func)}}{Delete all items.} +\twocolitem{{\bf EVT\_LIST\_GET\_INFO(id, func)}}{Request information from the application, usually the item text.} +\twocolitem{{\bf EVT\_LIST\_SET\_INFO(id, func)}}{Information is being supplied (not implemented).} +\twocolitem{{\bf EVT\_LIST\_ITEM\_SELECTED(id, func)}}{The item has been selected.} +\twocolitem{{\bf EVT\_LIST\_ITEM\_DESELECTED(id, func)}}{The item has been deselected.} +\twocolitem{{\bf EVT\_LIST\_KEY\_DOWN(id, func)}}{A key has been pressed.} +\twocolitem{{\bf EVT\_LIST\_INSERT\_ITEM(id, func)}}{An item has been inserted.} +\twocolitem{{\bf EVT\_LIST\_COL\_CLICK(id, func)}}{A column ({\bf m\_col}) has been left-clicked.} +\end{twocollist}% + +\wxheading{See also} + +\helpref{wxListCtrl}{wxlistctrl} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxListEvent::wxListEvent} + +\func{}{wxListEvent}{\param{WXTYPE }{commandType = 0}, \param{int }{id = 0}} + +Constructor. + +\membersection{wxListEvent::m\_code} + +\member{int}{m\_code} + +Key code if the event is a keypress event. + +\membersection{wxListEvent::m\_itemIndex} + +\member{long}{m\_itemIndex} + +The item index. + +\membersection{wxListEvent::m\_oldItemIndex} + +\member{long}{m\_oldItemIndex} + +The old item index. + +\membersection{wxListEvent::m\_col} + +\member{int}{m\_col} + +The column position. + +\membersection{wxListEvent::m\_cancelled} + +\member{bool}{m\_cancelled} + +TRUE if this event is an end edit event and the user cancelled the edit. + +\membersection{wxListEvent::m\_pointDrag} + +\member{wxPoint}{m\_pointDrag} + +The position of the mouse pointer if the event is a drag event. + +\membersection{wxListEvent::m\_item} + +\member{wxListItem}{m\_item} + +An item object, used by some events. See also \helpref{wxListCtrl::SetItem}{wxlistctrlsetitem}. + + diff --git a/docs/latex/wx/manual.tex b/docs/latex/wx/manual.tex new file mode 100644 index 0000000000..8243f598b2 --- /dev/null +++ b/docs/latex/wx/manual.tex @@ -0,0 +1,124 @@ +\documentstyle[a4,makeidx,verbatim,texhelp,fancyhea,mysober,mytitle]{report} +\newcommand{\indexit}[1]{#1\index{#1}}% +\newcommand{\pipe}[0]{$\|$\ }% +\definecolour{black}{0}{0}{0}% +\definecolour{cyan}{0}{255}{255}% +\definecolour{green}{0}{255}{0}% +\definecolour{magenta}{255}{0}{255}% +\definecolour{red}{255}{0}{0}% +\definecolour{blue}{0}{0}{200}% +\definecolour{yellow}{255}{255}{0}% +\definecolour{white}{255}{255}{255}% +% +\input psbox.tex +% Remove this for processing with dvi2ps instead of dvips +%\special{!/@scaleunit 1 def} +\parskip=10pt +\parindent=0pt +\title{User Manual for wxWindows 2.0: a portable C++ GUI toolkit} +\winhelponly{\author{by Julian Smart and Markus Holzem +%\winhelponly{\\$$\image{1cm;0cm}{wxwin.wmf}$$} +}} +\winhelpignore{\author{Julian Smart and Markus Holzem} +\date{October 21st 1997} +} +\makeindex +\begin{document} +\maketitle +\pagestyle{fancyplain} +\bibliographystyle{plain} +\setheader{{\it CONTENTS}}{}{}{}{}{{\it CONTENTS}} +\setfooter{\thepage}{}{}{}{}{\thepage}% +\pagenumbering{roman} +\tableofcontents + +% A special table of contents for the WinHelp manual +\begin{comment} +\winhelponly{ +\chapter*{wxWindows class library reference}\label{winhelpcontents} + +\center{ +%\image{}{wxwin.wmf} +}% + +\sethotspotcolour{off}% +\sethotspotunderline{on}% +\large{ +\image{}{cpp.bmp} \helpref{Alphabetical class reference}{classref} + +\image{}{shelves.bmp} \helpref{Classes by category}{classesbycat} + +\image{}{book1.bmp} \helpref{Topic overviews}{overviews} + +\image{}{hand1.bmp} \helpref{Guide to wxWindows}{wxwinchapters} +} +\sethotspotcolour{on}% +\sethotspotunderline{on}% + +\chapter*{Overview of wxWindows}\label{wxwinchapters} + +\helpref{Introduction}{introduction}\\ +%\helpref{Resource guide}{resguide}\\ +%\helpref{Comparison with other GUI models}{comparison}\\ +%\helpref{Multi-platform development with wxWindows}{multiplat}\\ +%\helpref{Tutorial}{tutorial}\\ +\helpref{The wxWindows resource system}{resourceformats}\\ +\helpref{Utilities}{utilities}\\ +\helpref{Programming strategies}{strategies}\\ +\helpref{Bugs and future directions}{bugs}\\ +\helpref{References}{bibliography} +} +\end{comment} + +\chapter*{Copyright notice} +\setheader{{\it COPYRIGHT}}{}{}{}{}{{\it COPYRIGHT}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% + +\begin{center} +Copyright (c) 1997 Julian Smart and Markus Holzem\\ +Portions (c) 1996 Artificial Intelligence Applications Institute\\ +\end{center} + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose is hereby granted without fee, provided that the +above copyright notice, author statement and this permission notice appear in +all copies of this software and related documentation. + +THE SOFTWARE IS PROVIDED ``AS-IS'' AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, +IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF +MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +IN NO EVENT SHALL THE ARTIFICIAL INTELLIGENCE APPLICATIONS INSTITUTE OR THE +UNIVERSITY OF EDINBURGH OR JULIAN SMART OR MARKUS HOLZEM BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF THE POSSIBILITY OF +DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH +THE USE OR PERFORMANCE OF THIS SOFTWARE. + +\input{body.tex} +\helpinput{classes.tex} +\helpinput{category.tex} +\helpinput{topics.tex} + +\newpage + +% Puts books in the bibliography without needing to cite them in the +% text +\nocite{helpbook}% +\nocite{wong93}% +\nocite{pree94}% +\nocite{gamma95}% +\nocite{smart95a}% +\nocite{smart95b}% + +\bibliography{refs} +\addcontentsline{toc}{chapter}{Bibliography} +\setheader{{\it REFERENCES}}{}{}{}{}{{\it REFERENCES}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% + +\newpage +\addcontentsline{toc}{chapter}{Index} +\setheader{{\it INDEX}}{}{}{}{}{{\it INDEX}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% +\printindex +\end{document} diff --git a/docs/latex/wx/mask.tex b/docs/latex/wx/mask.tex new file mode 100644 index 0000000000..7f004df69e --- /dev/null +++ b/docs/latex/wx/mask.tex @@ -0,0 +1,76 @@ +\section{\class{wxMask}}\label{wxmask} + +This class encapsulates a monochrome mask bitmap, where the masked area is black and +the unmasked area is white. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{Remarks} + +A mask may be associated with a \helpref{wxBitmap}{wxbitmap}. It is used in \helpref{wxDC::Blit}{wxdcblit} when +the source device context is a \helpref{wxMemoryDC}{wxmemorydc} with wxBitmap selected into it that +contains a mask. + +\wxheading{See also} + +\helpref{wxBitmap}{wxbitmap}, \helpref{wxDC::Blit}{wxdcblit}, \helpref{wxMemoryDC}{wxmemorydc} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxMask::wxMask}\label{wxmaskconstr} + +\func{}{wxMask}{\void} + +Default constructor. + +\func{}{wxMask}{\param{const wxBitmap\& }{bitmap}} + +Constructs a mask from a monochrome bitmap. + +\func{}{wxMask}{\param{const wxBitmap\& }{bitmap}, \param{const wxColour\& }{colour}} + +Constructs a mask from a bitmap and a colour that indicates the background. + +\func{}{wxMask}{\param{const wxBitmap\& }{bitmap}, \param{int}{ index}} + +Constructs a mask from a bitmap and a palette index that indicates the background. + +\wxheading{Parameters} + +\docparam{bitmap}{A valid bitmap.} + +\docparam{colour}{A colour specifying the transparency RGB values.} + +\docparam{index}{Index into a palette, specifying the transparency colour.} + +\membersection{wxMask::\destruct{wxMask}} + +\func{}{\destruct{wxMask}}{\void} + +Destroys the wxMask object and the underlying bitmap data. + +\membersection{wxMask::Create}\label{wxmaskcreate} + +\func{bool}{Create}{\param{const wxBitmap\& }{bitmap}} + +Constructs a mask from a monochrome bitmap. + +\func{bool}{Create}{\param{const wxBitmap\& }{bitmap}, \param{const wxColour\& }{colour}} + +Constructs a mask from a bitmap and a colour that indicates the background. + +\func{bool}{Create}{\param{const wxBitmap\& }{bitmap}, \param{int}{ index}} + +Constructs a mask from a bitmap and a palette index that indicates the background. + +\wxheading{Parameters} + +\docparam{bitmap}{A valid bitmap.} + +\docparam{colour}{A colour specifying the transparency RGB values.} + +\docparam{index}{Index into a palette, specifying the transparency colour.} + + diff --git a/docs/latex/wx/mdi.tex b/docs/latex/wx/mdi.tex new file mode 100644 index 0000000000..61644c1874 --- /dev/null +++ b/docs/latex/wx/mdi.tex @@ -0,0 +1,515 @@ +\section{\class{wxMDIChildFrame}}\label{wxmdichildframe} + +An MDI child frame is a frame that can only exist on a \helpref{wxMDIClientWindow}{wxmdiclientwindow}, +which is itself a child of \helpref{wxMDIParentFrame}{wxmdiparentframe}. + +\wxheading{Derived from} + +\helpref{wxFrame}{wxframe}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{wxCAPTION}}{Puts a caption on the frame.} +\twocolitem{\windowstyle{wxDEFAULT\_FRAME\_STYLE}}{Defined as {\bf wxMINIMIZE\_BOX \pipe wxMAXIMIZE\_BOX \pipe wxTHICK\_FRAME \pipe wxSYSTEM\_MENU \pipe wxCAPTION}.} +\twocolitem{\windowstyle{wxICONIZE}}{Display the frame iconized (minimized) (Windows only).} +\twocolitem{\windowstyle{wxMAXIMIZE}}{Displays the frame maximized (Windows only).} +\twocolitem{\windowstyle{wxMAXIMIZE\_BOX}}{Displays a maximize box on the frame (Windows and Motif only).} +\twocolitem{\windowstyle{wxMINIMIZE}}{Identical to {\bf wxICONIZE}.} +\twocolitem{\windowstyle{wxMINIMIZE\_BOX}}{Displays a minimize box on the frame (Windows and Motif only).} +\twocolitem{\windowstyle{wxRESIZE\_BORDER}}{Displays a resizeable border around the window (Motif only; +for Windows, it is implicit in wxTHICK\_FRAME).} +\twocolitem{\windowstyle{wxSTAY\_ON\_TOP}}{Stay on top of other windows (Windows only).} +\twocolitem{\windowstyle{wxSYSTEM\_MENU}}{Displays a system menu (Windows and Motif only).} +\twocolitem{\windowstyle{wxTHICK\_FRAME}}{Displays a thick frame around the window (Windows and Motif only).} +\end{twocollist} + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{Remarks} + +Although internally an MDI child frame is a child of the MDI client window, in wxWindows +you create it as a child of \helpref{wxMDIParentFrame}{wxmdiparentframe}. You can usually +forget that the client window exists. + +MDI child frames are clipped to the area of the MDI client window, and may be iconized +on the client window. + +You can associate a menubar with a child frame as usual, although an MDI child doesn't display +its menubar under its own title bar. The MDI parent frame's menubar will be changed to +reflect the currently active child frame. If there are currently no children, the parent +frame's own menubar will be displayed. + +\wxheading{See also} + +\helpref{wxMDIClientWindow}{wxmdiclientwindow}, \helpref{wxMDIParentFrame}{wxmdiparentframe},\rtfsp +\helpref{wxFrame}{wxframe} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxMDIChildFrame::wxMDIChildFrame}\label{wxmdichildframeconstr} + +\func{}{wxMDIChildFrame}{\void} + +Default constructor. + +\func{}{wxMDIChildFrame}{\param{wxMDIParentFrame* }{parent}, \param{const wxWindowID }{id},\rtfsp +\param{const wxString\& }{title}, \param{const wxPoint\&}{ pos = wxDefaultPosition},\rtfsp +\param{const wxSize\&}{ size = wxDefaultSize}, \param{long}{ style = wxDEFAULT\_FRAME\_STYLE},\rtfsp +\param{const wxString\& }{name = ``frame"}} + +Constructor, creating the window. + +\wxheading{Parameters} + +\docparam{parent}{The window parent. This should not be NULL.} + +\docparam{id}{The window identifier. It may take a value of -1 to indicate a default value.} + +\docparam{title}{The caption to be displayed on the frame's title bar.} + +\docparam{pos}{The window position. A value of (-1, -1) indicates a default position, chosen by +either the windowing system or wxWindows, depending on platform.} + +\docparam{size}{The window size. A value of (-1, -1) indicates a default size, chosen by +either the windowing system or wxWindows, depending on platform.} + +\docparam{style}{The window style. See \helpref{wxMDIChildFrame}{wxmdichildframe}.} + +\docparam{name}{The name of the window. This parameter is used to associate a name with the item, +allowing the application user to set Motif resource values for +individual windows.} + +\wxheading{Remarks} + +None. + +\wxheading{See also} + +\helpref{wxMDIChildFrame::Create}{wxmdichildframecreate} + +\membersection{wxMDIChildFrame::\destruct{wxMDIChildFrame}} + +\func{}{\destruct{wxMDIChildFrame}}{\void} + +Destructor. Destroys all child windows and menu bar if present. + +\membersection{wxMDIChildFrame::Activate}\label{wxmdichildframeactivate} + +\func{void}{Activate}{\void} + +Activates this MDI child frame. + +\wxheading{See also} + +\helpref{wxMDIChildFrame::Maximize}{wxmdichildframemaximize},\rtfsp +\helpref{wxMDIChildFrame::Restore}{wxmdichildframerestore} + +\membersection{wxMDIChildFrame::Create}\label{wxmdichildframecreate} + +\func{bool}{Create}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id},\rtfsp +\param{const wxString\& }{title}, \param{const wxPoint\&}{ pos = wxDefaultPosition},\rtfsp +\param{const wxSize\&}{ size = wxDefaultSize}, \param{long}{ style = wxDEFAULT\_FRAME\_STYLE},\rtfsp +\param{const wxString\& }{name = ``frame"}} + +Used in two-step frame construction. See \helpref{wxMDIChildFrame::wxMDIChildFrame}{wxmdichildframeconstr}\rtfsp +for further details. + +\membersection{wxMDIChildFrame::Maximize}\label{wxmdichildframemaximize} + +\func{void}{Maximize}{\void} + +Maximizes this MDI child frame. + +\wxheading{See also} + +\helpref{wxMDIChildFrame::Activate}{wxmdichildframeactivate},\rtfsp +\helpref{wxMDIChildFrame::Restore}{wxmdichildframerestore} + +\membersection{wxMDIChildFrame::Restore}\label{wxmdichildframerestore} + +\func{void}{Restore}{\void} + +Restores this MDI child frame (unmaximizes). + +\wxheading{See also} + +\helpref{wxMDIChildFrame::Activate}{wxmdichildframeactivate},\rtfsp +\helpref{wxMDIChildFrame::Maximize}{wxmdichildframemaximize} + + +\section{\class{wxMDIClientWindow}}\label{wxmdiclientwindow} + +An MDI client window is a child of \helpref{wxMDIParentFrame}{wxmdiparentframe}, and manages zero or +more \helpref{wxMDIChildFrame}{wxmdichildframe} objects. + +\wxheading{Derived from} + +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Remarks} + +The client window is the area where MDI child windows exist. It doesn't have to cover the whole +parent frame; other windows such as toolbars and a help window might coexist with it. +There can be scrollbars on a client window, which are controlled by the parent window style. + +The {\bf wxMDIClientWindow} class is usually adequate without further derivation, and it is created +automatically when the MDI parent frame is created. If the application needs to derive a new class, +the function \helpref{wxMDIParentFrame::OnCreateClient}{wxmdiparentframeoncreateclient} must be +overridden in order to give an opportunity to use a different class of client window. + +Under Windows 95, the client window will automatically have a sunken border style when +the active child is not maximized, and no border style when a child is maximized. + +\wxheading{See also} + +\helpref{wxMDIChildFrame}{wxmdichildframe}, \helpref{wxMDIParentFrame}{wxmdiparentframe},\rtfsp +\helpref{wxFrame}{wxframe} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxMDIClientWindow::wxMDIClientWindow}\label{wxmdiclientwindowconstr} + +\func{}{wxMDIClientWindow}{\void} + +Default constructor. + +\func{}{wxMDIClientWindow}{\param{wxMDIParentFrame* }{parent}, \param{long}{ style = 0}} + +Constructor, creating the window. + +\wxheading{Parameters} + +\docparam{parent}{The window parent.} + +\docparam{style}{The window style. Currently unused.} + +\wxheading{Remarks} + +The second style of constructor is called within \helpref{wxMDIParentFrame::OnCreateClient}{wxmdiparentframeoncreateclient}. + +\wxheading{See also} + +\helpref{wxMDIParentFrame::wxMDIParentFrame}{wxmdiparentframeconstr},\rtfsp +\helpref{wxMDIParentFrame::OnCreateClient}{wxmdiparentframeoncreateclient} + +\membersection{wxMDIClientWindow::\destruct{wxMDIClientWindow}} + +\func{}{\destruct{wxMDIClientWindow}}{\void} + +Destructor. + +\membersection{wxMDIClientWindow::CreateClient}\label{wxmdiclientwindowcreateclient} + +\func{bool}{CreateClient}{\param{wxMDIParentFrame* }{parent}, \param{long}{ style = 0}} + +Used in two-step frame construction. See \helpref{wxMDIClientWindow::wxMDIClientWindow}{wxmdiclientwindowconstr}\rtfsp +for further details. + +\section{\class{wxMDIParentFrame}}\label{wxmdiparentframe} + +An MDI (Multiple Document Interface) parent frame is a window which can contain +MDI child frames in its own `desktop'. It is a convenient way to avoid window clutter, +and is used in many popular Windows applications, such as Microsoft Word(TM). + +\wxheading{Derived from} + +\helpref{wxFrame}{wxframe}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Remarks} + +There may be multiple MDI parent frames in a single application, but this probably only makes sense +within programming development environments. + +Child frames may be either \helpref{wxMDIChildFrame}{wxmdichildframe}, or \helpref{wxFrame}{wxframe}. + +An MDI parent frame always has a \helpref{wxMDIClientWindow}{wxmdiclientwindow} associated with it, which +is the parent for MDI client frames. +This client window may be resized to accomodate non-MDI windows, as seen in Microsoft Visual C++ (TM) and +Microsoft Publisher (TM), where a documentation window is placed to one side of the workspace. + +MDI remains popular despite dire warnings from Microsoft itself that MDI is an obsolete +user interface style. + +The implementation is native in Windows, and simulated under Motif. Under Motif, +the child window frames will often have a different appearance from other frames +because the window decorations are simulated. + +\wxheading{Window styles} + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{wxCAPTION}}{Puts a caption on the frame.} +\twocolitem{\windowstyle{wxDEFAULT\_FRAME\_STYLE}}{Defined as {\bf wxMINIMIZE\_BOX \pipe wxMAXIMIZE\_BOX \pipe wxTHICK\_FRAME \pipe wxSYSTEM\_MENU \pipe wxCAPTION}.} +\twocolitem{\windowstyle{wxHSCROLL}}{Displays a horizontal scrollbar in the {\it client window}, allowing +the user to view child frames that are off the current view.} +\twocolitem{\windowstyle{wxICONIZE}}{Display the frame iconized (minimized) (Windows only).} +\twocolitem{\windowstyle{wxMAXIMIZE}}{Displays the frame maximized (Windows only).} +\twocolitem{\windowstyle{wxMAXIMIZE\_BOX}}{Displays a maximize box on the frame (Windows and Motif only).} +\twocolitem{\windowstyle{wxMINIMIZE}}{Identical to {\bf wxICONIZE}.} +\twocolitem{\windowstyle{wxMINIMIZE\_BOX}}{Displays a minimize box on the frame (Windows and Motif only).} +\twocolitem{\windowstyle{wxRESIZE\_BORDER}}{Displays a resizeable border around the window (Motif only; +for Windows, it is implicit in wxTHICK\_FRAME).} +\twocolitem{\windowstyle{wxSTAY\_ON\_TOP}}{Stay on top of other windows (Windows only).} +\twocolitem{\windowstyle{wxSYSTEM\_MENU}}{Displays a system menu (Windows and Motif only).} +\twocolitem{\windowstyle{wxTHICK\_FRAME}}{Displays a thick frame around the window (Windows and Motif only).} +\twocolitem{\windowstyle{wxVSCROLL}}{Displays a vertical scrollbar in the {\it client window}, allowing +the user to view child frames that are off the current view.} +\end{twocollist} + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{See also} + +\helpref{wxMDIChildFrame}{wxmdichildframe}, \helpref{wxMDIClientWindow}{wxmdiclientwindow},\rtfsp +\helpref{wxFrame}{wxframe}, \helpref{wxDialog}{wxdialog} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxMDIParentFrame::wxMDIParentFrame}\label{wxmdiparentframeconstr} + +\func{}{wxMDIParentFrame}{\void} + +Default constructor. + +\func{}{wxMDIParentFrame}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id},\rtfsp +\param{const wxString\& }{title}, \param{const wxPoint\&}{ pos = wxDefaultPosition},\rtfsp +\param{const wxSize\&}{ size = wxDefaultSize}, \param{long}{ style = wxDEFAULT\_FRAME\_STYLE \pipe wxVSCROLL \pipe wxHSCROLL},\rtfsp +\param{const wxString\& }{name = ``frame"}} + +Constructor, creating the window. + +\wxheading{Parameters} + +\docparam{parent}{The window parent. This should be NULL.} + +\docparam{id}{The window identifier. It may take a value of -1 to indicate a default value.} + +\docparam{title}{The caption to be displayed on the frame's title bar.} + +\docparam{pos}{The window position. A value of (-1, -1) indicates a default position, chosen by +either the windowing system or wxWindows, depending on platform.} + +\docparam{size}{The window size. A value of (-1, -1) indicates a default size, chosen by +either the windowing system or wxWindows, depending on platform.} + +\docparam{style}{The window style. See \helpref{wxMDIParentFrame}{wxmdiparentframe}.} + +\docparam{name}{The name of the window. This parameter is used to associate a name with the item, +allowing the application user to set Motif resource values for +individual windows.} + +\wxheading{Remarks} + +During the construction of the frame, the client window will be created. To use a different class +from \helpref{wxMDIClientWindow}{wxmdiclientwindow}, override\rtfsp +\helpref{wxMDIParentFrame::OnCreateClient}{wxmdiparentframeoncreateclient}. + +Under Windows 95, the client window will automatically have a sunken border style when +the active child is not maximized, and no border style when a child is maximized. + +\wxheading{See also} + +\helpref{wxMDIParentFrame::Create}{wxmdiparentframecreate},\rtfsp +\helpref{wxMDIParentFrame::OnCreateClient}{wxmdiparentframeoncreateclient} + +\membersection{wxMDIParentFrame::\destruct{wxMDIParentFrame}} + +\func{}{\destruct{wxMDIParentFrame}}{\void} + +Destructor. Destroys all child windows and menu bar if present. + +\membersection{wxMDIParentFrame::ActivateNext}\label{wxmdiparentframeactivatenext} + +\func{void}{ActivateNext}{\void} + +Activates the MDI child following the currently active one. + +\wxheading{See also} + +\helpref{wxMDIParentFrame::ActivatePrevious}{wxmdiparentframeactivateprevious} + +\membersection{wxMDIParentFrame::ActivatePrevious}\label{wxmdiparentframeactivateprevious} + +\func{void}{ActivatePrevious}{\void} + +Activates the MDI child preceding the currently active one. + +\wxheading{See also} + +\helpref{wxMDIParentFrame::ActivateNext}{wxmdiparentframeactivatenext} + + +\membersection{wxMDIParentFrame::ArrangeIcons}\label{wxmdiparentframearrangeicons} + +\func{void}{ArrangeIcons}{\void} + +Arranges any iconized (minimized) MDI child windows. + +\wxheading{See also} + +\helpref{wxMDIParentFrame::Cascade}{wxmdiparentframecascade},\rtfsp +\helpref{wxMDIParentFrame::Tile}{wxmdiparentframetile} + +\membersection{wxMDIParentFrame::Cascade}\label{wxmdiparentframecascade} + +\func{void}{Cascade}{\void} + +Arranges the MDI child windows in a cascade. + +\wxheading{See also} + +\helpref{wxMDIParentFrame::Tile}{wxmdiparentframetile},\rtfsp +\helpref{wxMDIParentFrame::ArrangeIcons}{wxmdiparentframearrangeicons} + +\membersection{wxMDIParentFrame::Create}\label{wxmdiparentframecreate} + +\func{bool}{Create}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id},\rtfsp +\param{const wxString\& }{title}, \param{const wxPoint\&}{ pos = wxDefaultPosition},\rtfsp +\param{const wxSize\&}{ size = wxDefaultSize}, \param{long}{ style = wxDEFAULT\_FRAME\_STYLE \pipe wxVSCROLL \pipe wxHSCROLL},\rtfsp +\param{const wxString\& }{name = ``frame"}} + +Used in two-step frame construction. See \helpref{wxMDIParentFrame::wxMDIParentFrame}{wxmdiparentframeconstr}\rtfsp +for further details. + +\membersection{wxMDIParentFrame::GetClientSize}\label{wxmdiparentframegetclientsize} + +\constfunc{virtual void}{GetClientSize}{\param{int* }{width}, \param{int* }{height}} + +This gets the size of the frame `client area' in pixels. + +\wxheading{Parameters} + +\docparam{width}{Receives the client width in pixels.} + +\docparam{height}{Receives the client height in pixels.} + +\wxheading{Remarks} + +The client area is the area which may be drawn on by the programmer, excluding title bar, border, status bar, +and toolbar if present. + +If you wish to manage your own toolbar (or perhaps you have more than one), +provide an {\bf OnSize} event handler. Call {\bf GetClientSize} to +find how much space there is for your windows and don't forget to set the size and position +of the MDI client window as well as your toolbar and other windows (but not the status bar). + +If you have set a toolbar with \helpref{wxMDIParentFrame::SetToolbar}{wxmdiparentframesettoolbar}, +the client size returned will have subtracted the toolbar height. However, the available positions +for the client window and other windows of the frame do not start at zero - you must add the toolbar height. + +The position and size of the status bar and toolbar (if known to the frame) are always managed +by {\bf wxMDIParentFrame}, regardless of what behaviour is defined in your {\bf OnSize} event handler. +However, the client window position and size are always set in {\bf OnSize}, so if you override this +event handler, make sure you deal with the client window. + +You do not have to manage the size and position of MDI child windows, since they are managed +automatically by the client window. + +\wxheading{See also} + +\helpref{wxMDIParentFrame::GetToolBar}{wxmdiparentframegettoolbar},\rtfsp +\helpref{wxMDIParentFrame::SetToolBar}{wxmdiparentframesettoolbar},\rtfsp +\helpref{wxWindow}{wxwindowonsize},\rtfsp +\helpref{wxMDIClientWindow}{wxmdiclientwindow} + +\membersection{wxMDIParentFrame::GetActiveChild}\label{wxmdiparentframegetactivechild} + +\constfunc{wxMDIChildFrame*}{GetActiveChild}{\void} + +Returns a pointer to the active MDI child, if there is one. + +\membersection{wxMDIParentFrame::GetClientWindow}\label{wxmdiparentframegetclientwindow} + +\constfunc{wxMDIClientWindow*}{GetClientWindow}{\void} + +Returns a pointer to the client window. + +\wxheading{See also} + +\helpref{wxMDIParentFrame::OnCreateClient}{wxmdiparentframeoncreateclient} + +\membersection{wxMDIParentFrame::GetToolBar}\label{wxmdiparentframegettoolbar} + +\constfunc{virtual wxWindow*}{GetToolBar}{\void} + +Returns the window being used as the toolbar for this frame. + +\wxheading{See also} + +\helpref{wxMDIParentFrame::SetToolBar}{wxmdiparentframesettoolbar} + +\membersection{wxMDIParentFrame::OnCreateClient}\label{wxmdiparentframeoncreateclient} + +\func{virtual wxMDIClientWindow*}{OnCreateClient}{\void} + +Override this to return a different kind of client window. + +\wxheading{Remarks} + +You might wish to derive from \helpref{wxMDIClientWindow}{wxmdiclientwindow} in order +to implement different erase behaviour, for example, such as painting a bitmap +on the background. + +Note that it is probably impossible to have a client window that scrolls as well as painting +a bitmap or pattern, since in {\bf OnScroll}, the scrollbar positions always return zero. +(Solutions to: \verb$julian.smart@ukonline.co.uk$). + +\wxheading{See also} + +\helpref{wxMDIParentFrame::GetClientWindow}{wxmdiparentframegetclientwindow},\rtfsp +\helpref{wxMDIClientWindow}{wxmdiclientwindow} + +\membersection{wxMDIParentFrame::SetToolBar}\label{wxmdiparentframesettoolbar} + +\func{virtual void}{SetToolBar}{\param{wxWindow*}{ toolbar}} + +Sets the window to be used as a toolbar for this +MDI parent window. It saves the application having to manage the positioning +of the toolbar MDI client window. + +\wxheading{Parameters} + +\docparam{toolbar}{Toolbar to manage.} + +\wxheading{Remarks} + +When the frame is resized, the toolbar is resized to be the width of +the frame client area, and the toolbar height is kept the same. + +The parent of the toolbar must be this frame. + +If you wish to manage your own toolbar (or perhaps you have more than one), +don't call this function, and instead manage your subwindows and the MDI client window by +providing an {\bf OnSize} event handler. Call \helpref{wxMDIParentFrame::GetClientSize}{wxmdiparentframegetclientsize} to +find how much space there is for your windows. + +Note that SDI (normal) frames and MDI child windows must always have their +toolbars managed by the application. + +\wxheading{See also} + +\helpref{wxMDIParentFrame::GetToolBar}{wxmdiparentframegettoolbar},\rtfsp +\helpref{wxMDIParentFrame::GetClientSize}{wxmdiparentframegetclientsize} + +\membersection{wxMDIParentFrame::Tile}\label{wxmdiparentframetile} + +\func{void}{Tile}{\void} + +Tiles the MDI child windows. + +\wxheading{See also} + +\helpref{wxMDIParentFrame::Cascade}{wxmdiparentframecascade},\rtfsp +\helpref{wxMDIParentFrame::ArrangeIcons}{wxmdiparentframearrangeicons} + + diff --git a/docs/latex/wx/memorydc.tex b/docs/latex/wx/memorydc.tex new file mode 100644 index 0000000000..5237bb765a --- /dev/null +++ b/docs/latex/wx/memorydc.tex @@ -0,0 +1,57 @@ +\section{\class{wxMemoryDC}}\label{wxmemorydc} + +A memory device context provides a means to draw graphics onto a bitmap. + +\wxheading{Derived from} + +\helpref{wxDC}{wxdc}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Remarks} + +A bitmap must be selected into the new memory DC before it may be used +for anything. Typical usage is as follows: + +\begin{verbatim} + // Create a memory DC + wxMemoryDC temp_dc; + temp_dc.SelectObject(test_bitmap); + + // We can now draw into the memory DC... + // Copy from this DC to another DC. + old_dc.Blit(250, 50, BITMAP_WIDTH, BITMAP_HEIGHT, temp_dc, 0, 0); +\end{verbatim} + +Note that the memory DC {\it must} be deleted (or the bitmap selected out of it) before a bitmap +can be reselected into another memory DC. + +\wxheading{See also} + +\helpref{wxBitmap}{wxbitmap}, \helpref{wxDC}{wxdc} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxMemoryDC::wxMemoryDC} + +\func{}{wxMemoryDC}{\void} + +Constructs a new memory device context. + +Use the {\it Ok} member to test whether the constructor was successful +in creating a useable device context. Don't forget to select a bitmap +into the DC before drawing on it. + +\membersection{wxMemoryDC::SelectObject} + +\func{}{SelectObject}{\param{const wxBitmap\& }{bitmap}} + +Selects the given bitmap into the device context, to use as the memory +bitmap. Selecting the bitmap into a memory DC allows you to draw into +the DC (and therefore the bitmap) and also to use {\bf Blit} to copy +the bitmap to a canvas. For this purpose, you may find \helpref{wxDC::DrawIcon}{wxdcdrawicon}\rtfsp +easier to use instead. + +If the argument is wxNullBitmap (or some other uninitialised wxBitmap) the current bitmap is selected out of the device +context, and the original bitmap restored, allowing the current bitmap to +be destroyed safely. + diff --git a/docs/latex/wx/menu.tex b/docs/latex/wx/menu.tex new file mode 100644 index 0000000000..fa828b464b --- /dev/null +++ b/docs/latex/wx/menu.tex @@ -0,0 +1,611 @@ +\section{\class{wxMenu}}\label{wxmenu} + +A menu is a popup (or pull down) list of items, one of which may be +selected before the menu goes away (clicking elsewhere dismisses the +menu). Menus may be used to construct either menu bars or popup menus. + +A menu item has an integer ID associated with it which can be used to +identify the selection, or to change the menu item in some way. + +\wxheading{Derived from} + +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Event handling} + +If the menu is part of a menubar, then \helpref{wxMenuBar}{wxmenubar} event processing is used. + +With a popup menu, there is a variety of ways to handle a menu selection event +(wxEVT\_COMMAND\_MENU\_SELECTED). + +\begin{enumerate}\itemsep=0pt +\item Define a callback of type wxFunction, which you pass to the wxMenu constructor. +The callback takes a reference to a window, and a reference to a \helpref{wxCommandEvent}{wxcommandevent}. +\item Derive a new class from wxMenu and define event table entries using the EVT\_MENU macro. +\item Set a new event handler for wxMenu, using an object whose class has EVT\_MENU entries. +\item Provide EVT\_MENU handlers in the window which pops up the menu, or in an ancestor of +this window. +\end{enumerate} + +\wxheading{See also} + +\helpref{wxMenuBar}{wxmenubar}, \helpref{wxWindow::PopupMenu}{wxwindowpopupmenu},\rtfsp +\helpref{Event handling overview}{eventhandlingoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxMenu::wxMenu}\label{wxmenuconstr} + +\func{}{wxMenu}{\param{const wxString\& }{title = ""}, \param{const wxFunction}{ func = NULL}} + +Constructs a wxMenu object. + +\wxheading{Parameters} + +\docparam{title}{A title for the popup menu: the empty string denotes no title.} + +\docparam{func}{A callback function if the menu is used as a popup using \helpref{wxWindow::PopupMenu}{wxwindowpopupmenu}.} + +\membersection{wxMenu::\destruct{wxMenu}} + +\func{}{\destruct{wxMenu}}{\void} + +Destructor, destroying the menu. + +\membersection{wxMenu::Append}\label{wxmenuappend} + +\func{void}{Append}{\param{const int}{ id}, \param{const wxString\& }{ item}, \param{const wxString\& }{helpString = ""},\rtfsp +\param{const bool}{ checkable = FALSE}} + +Adds a string item to the end of the menu. + +\func{void}{Append}{\param{const int}{ id}, \param{const wxString\& }{ item}, \param{wxMenu *}{subMenu},\rtfsp +\param{const wxString\& }{helpString = ""}} + +Adds a pull-right submenu to the end of the menu. + +\func{void}{Append}{\param{wxMenuItem*}{ menuItem}} + +Adds a menu item object. You can specify various extra properties of a menu item this way, +such as bitmaps and fonts. + +\wxheading{Parameters} + +\docparam{id}{The menu command identifier.} + +\docparam{item}{The string to appear on the menu item.} + +\docparam{menu}{Pull-right submenu.} + +\docparam{checkable}{If TRUE, this item is checkable.} + +\docparam{helpString}{An optional help string associated with the item. +By default, \helpref{wxFrame::OnMenuHighlight}{wxframeonmenuhighlight} displays +this string in the status line.} + +\docparam{menuItem}{A menuitem object. It will be owned by the wxMenu object after this function +is called, so do not delete it yourself.} + +\wxheading{Remarks} + +This command can be used after the menu has been shown, as well as on initial +creation of a menu or menubar. + +\wxheading{See also} + +\helpref{wxMenu::AppendSeparator}{wxmenuappendseparator}, \helpref{wxMenu::SetLabel}{wxmenusetlabel}, \helpref{wxMenu::GetHelpString}{wxmenugethelpstring},\rtfsp +\helpref{wxMenu::SetHelpString}{wxmenusethelpstring}, \helpref{wxMenuItem}{wxmenuitem} + +\membersection{wxMenu::AppendSeparator}\label{wxmenuappendseparator} + +\func{void}{AppendSeparator}{\void} + +Adds a separator to the end of the menu. + +\wxheading{See also} + +\helpref{wxMenu::Append}{wxmenuappend} + +\membersection{wxMenu::Break}\label{wxmenubreak} + +\func{void}{Break}{\void} + +Inserts a break in a menu, causing the next appended item to appear in a new column. + +\membersection{wxMenu::Check}\label{wxmenucheck} + +\func{void}{Check}{\param{const int}{ id}, \param{const bool}{ check}} + +Checks or unchecks the menu item. + +\wxheading{Parameters} + +\docparam{id}{The menu item identifier.} + +\docparam{check}{If TRUE, the item will be checked, otherwise it will be unchecked.} + +\wxheading{See also} + +\helpref{wxMenu::IsChecked}{wxmenuischecked} + +\membersection{wxMenu::Enable}\label{wxmenuenable} + +\func{void}{Enable}{\param{const int}{ id}, \param{const bool}{ enable}} + +Enables or disables (greys out) a menu item. + +\wxheading{Parameters} + +\docparam{id}{The menu item identifier.} + +\docparam{enable}{TRUE to enable the menu item, FALSE to disable it.} + +\wxheading{See also} + +\helpref{wxMenu::IsEnabled}{wxmenuisenabled} + +\membersection{wxMenu::FindItem}\label{wxmenufinditem} + +\constfunc{int}{FindItem}{\param{const wxString\& }{itemString}} + +Finds the menu item id for a menu item string. + +\wxheading{Parameters} + +\docparam{itemString}{Menu item string to find.} + +\wxheading{Return value} + +Menu item identifier, or -1 if none is found. + +\wxheading{Remarks} + +Any special menu codes are stripped out of source and target strings +before matching. + +\wxheading{See also} + +\helpref{wxMenu::FindItemForId}{wxmenufinditemforid} + +\membersection{wxMenu::FindItemForId}\label{wxmenufinditemforid} + +\constfunc{wxMenuItem*}{FindItemForId}{\param{const int}{ id}} + +Finds the menu item object associated with the given menu item identifier. + +\wxheading{Parameters} + +\docparam{id}{Menu item identifier.} + +\wxheading{Return value} + +Returns the menu item object, or NULL if it is not found. + +\wxheading{See also} + +\helpref{wxMenu::FindItem}{wxmenufinditem} + +\membersection{wxMenu::GetHelpString}\label{wxmenugethelpstring} + +\constfunc{wxString}{GetHelpString}{\param{const int}{ id}} + +Returns the help string associated with a menu item. + +\wxheading{Parameters} + +\docparam{id}{The menu item identifier.} + +\wxheading{Return value} + +The help string, or the empty string if there is no help string or the +item was not found. + +\wxheading{See also} + +\helpref{wxMenu::SetHelpString}{wxmenusethelpstring}, \helpref{wxMenu::Append}{wxmenuappend} + +\membersection{wxMenu::GetLabel}\label{wxmenugetlabel} + +\constfunc{wxString}{GetLabel}{\param{const int}{ id}} + +Returns a menu item label. + +\wxheading{Parameters} + +\docparam{id}{The menu item identifier.} + +\wxheading{Return value} + +The item label, or the empty string if the item was not found. + +\wxheading{See also} + +\helpref{wxMenu::SetLabel}{wxmenusetlabel} + +\membersection{wxMenu::GetTitle}\label{wxmenugettitle} + +\constfunc{wxString}{GetTitle}{\void} + +Returns the title of the menu. + +\wxheading{Remarks} + +This is relevant only to popup menus. + +\wxheading{See also} + +\helpref{wxMenu::SetTitle}{wxmenusettitle} + +\membersection{wxMenu::IsChecked}\label{wxmenuischecked} + +\constfunc{bool}{IsChecked}{\param{const int}{ id}} + +Determines whether a menu item is checked. + +\wxheading{Parameters} + +\docparam{id}{The menu item identifier.} + +\wxheading{Return value} + +TRUE if the menu item is checked, FALSE otherwise. + +\wxheading{See also} + +\helpref{wxMenu::Check}{wxmenucheck} + +\membersection{wxMenu::IsEnabled}\label{wxmenuisenabled} + +\constfunc{bool}{IsEnabled}{\param{const int}{ id}} + +Determines whether a menu item is enabled. + +\wxheading{Parameters} + +\docparam{id}{The menu item identifier.} + +\wxheading{Return value} + +TRUE if the menu item is enabled, FALSE otherwise. + +\wxheading{See also} + +\helpref{wxMenu::Enable}{wxmenuenable} + +\membersection{wxMenu::SetHelpString}\label{wxmenusethelpstring} + +\func{void}{SetHelpString}{\param{const int}{ id}, \param{const wxString\& }{helpString}} + +Sets an item's help string. + +\wxheading{Parameters} + +\docparam{id}{The menu item identifier.} + +\docparam{helpString}{The help string to set.} + +\wxheading{See also} + +\helpref{wxMenu::GetHelpString}{wxmenugethelpstring} + +\membersection{wxMenu::SetLabel}\label{wxmenusetlabel} + +\func{void}{SetLabel}{\param{const int}{ id}, \param{const wxString\& }{label}} + +Sets the label of a menu item. + +\wxheading{Parameters} + +\docparam{id}{The menu item identifier.} + +\docparam{label}{The menu item label to set.} + +\wxheading{See also} + +\helpref{wxMenu::Append}{wxmenuappend}, \helpref{wxMenu::GetLabel}{wxmenugetlabel} + +\membersection{wxMenu::SetTitle}\label{wxmenusettitle} + +\func{void}{SetTitle}{\param{const wxString\& }{title}} + +Sets the title of the menu. + +\wxheading{Parameters} + +\docparam{title}{The title to set.} + +\wxheading{Remarks} + +This is relevant only to popup menus. + +\wxheading{See also} + +\helpref{wxMenu::SetTitle}{wxmenusettitle} + +\section{\class{wxMenuBar}}\label{wxmenubar} + +A menu bar is a series of menus accessible from the top of a frame. + +\wxheading{Derived from} + +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Event handling} + +To respond to a menu selection, provide a handler for EVT\_MENU, in the frame +that contains the menu bar. + +\wxheading{See also} + +\helpref{wxMenu}{wxmenu}, \helpref{Event handling overview}{eventhandlingoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxMenuBar::wxMenuBar}\label{wxmenubarconstr} + +\func{void}{wxMenuBar}{\void} + +Default constructor. + +\func{void}{wxMenuBar}{\param{const int}{ n}, \param{wxMenu*}{ menus[]}, \param{const wxString }{titles[]}} + +Construct a menu bar from arrays of menus and titles. + +\wxheading{Parameters} + +\docparam{n}{The number of menus.} + +\docparam{menus}{An array of menus. Do not use this array again - it now belongs to the +menu bar.} + +\docparam{titles}{An array of title strings. Deallocate this array after creating the menu bar.} + +\membersection{wxMenuBar::\destruct{wxMenuBar}} + +\func{void}{\destruct{wxMenuBar}}{\void} + +Destructor, destroying the menu bar and removing it from the parent frame (if any). + +\membersection{wxMenuBar::Append}\label{wxmenubarappend} + +\func{void}{Append}{\param{wxMenu *}{menu}, \param{const wxString\& }{title}} + +Adds the item to the end of the menu bar. + +\wxheading{Parameters} + +\docparam{menu}{The menu to add. Do not deallocate this menu after calling {\bf Append}.} + +\docparam{title}{The title of the menu.} + +\membersection{wxMenuBar::Check}\label{wxmenubarcheck} + +\func{void}{Check}{\param{const int}{ id}, \param{const bool}{ check}} + +Checks or unchecks a menu item. + +\wxheading{Parameters} + +\docparam{id}{The menu item identifier.} + +\docparam{check}{If TRUE, checks the menu item, otherwise the item is unchecked.} + +\wxheading{Remarks} + +Only use this when the menu bar has been associated +with a frame; otherwise, use the wxMenu equivalent call. + +\membersection{wxMenuBar::Enable}\label{wxmenubarenable} + +\func{void}{Enable}{\param{const int}{ id}, \param{const bool}{ enable}} + +Enables or disables (greys out) a menu item. + +\wxheading{Parameters} + +\docparam{id}{The menu item identifier.} + +\docparam{enable}{TRUE to enable the item, FALSE to disable it.} + +\wxheading{Remarks} + +Only use this when the menu bar has been +associated with a frame; otherwise, use the wxMenu equivalent call. + +\membersection{wxMenuBar::EnableTop}\label{wxmenubarenabletop} + +\func{void}{EnableTop}{\param{const int}{ pos}, \param{const bool}{ enable}} + +Enables or disables a whole menu. + +\wxheading{Parameters} + +\docparam{pos}{The position of the menu, starting from zero.} + +\docparam{enable}{TRUE to enable the menu, FALSE to disable it.} + +\wxheading{Remarks} + +Only use this when the menu bar has been +associated with a frame. + +\membersection{wxMenuBar::FindMenuItem}\label{wxmenubarfindmenuitem} + +\constfunc{int}{FindMenuItem}{\param{const wxString\& }{menuString}, \param{const wxString\& }{itemString}} + +Finds the menu item id for a menu name/menu item string pair. + +\wxheading{Parameters} + +\docparam{menuString}{Menu title to find.} + +\docparam{itemString}{Item to find.} + +\wxheading{Return value} + +The menu item identifier, or -1 if none was found. + +\wxheading{Remarks} + +Any special menu codes are stripped out of source and target strings +before matching. + +\membersection{wxMenuBar::FindItemById}\label{wxmenubarfinditembyid} + +\constfunc{wxMenuItem *}{FindItemById}{\param{const int}{ id}} + +Finds the menu item object associated with the given menu item identifier, + +\wxheading{Parameters} + +\docparam{id}{Menu item identifier.} + +\wxheading{Return value} + +The found menu item object, or NULL if one was not found. + +\membersection{wxMenuBar::GetHelpString}\label{wxmenubargethelpstring} + +\constfunc{wxString}{GetHelpString}{\param{const int}{ id}} + +Gets the help string associated with the menu item identifer. + +\wxheading{Parameters} + +\docparam{id}{The menu item identifier.} + +\wxheading{Return value} + +The help string, or the empty string if there was no help string or the menu item +was not found. + +\wxheading{See also} + +\helpref{wxMenuBar::SetHelpString}{wxmenubarsethelpstring} + +\membersection{wxMenuBar::GetLabel}\label{wxmenubargetlabel} + +\constfunc{wxString}{GetLabel}{\param{const int}{ id}} + +Gets the label associated with a menu item. + +\wxheading{Parameters} + +\docparam{id}{The menu item identifier.} + +\wxheading{Return value} + +The menu item label, or the empty string if the item was not found. + +\wxheading{Remarks} + +Use only after the menubar has been associated with a frame. + +\membersection{wxMenuBar::GetLabelTop}\label{wxmenubargetlabeltop} + +\constfunc{wxString}{GetLabelTop}{\param{const int}{ pos}} + +Returns the label of a top-level menu. + +\wxheading{Parameters} + +\docparam{pos}{Position of the menu on the menu bar, starting from zero.} + +\wxheading{Return value} + +The menu label, or the empty string if the menu was not found. + +\wxheading{Remarks} + +Use only after the menubar has been associated with a frame. + +\wxheading{See also} + +\helpref{wxMenuBar::SetLabelTop}{wxmenubarsetlabeltop} + +\membersection{wxMenuBar::IsChecked}\label{wxmenubarischecked} + +\constfunc{bool}{IsChecked}{\param{const int}{ id}} + +Determines whether an item is checked. + +\wxheading{Parameters} + +\docparam{id}{The menu item identifier.} + +\wxheading{Return value} + +TRUE if the item was found and is checked, FALSE otherwise. + +\membersection{wxMenuBar::IsEnabled}\label{wxmenubarisenabled} + +\constfunc{bool}{IsEnabled}{\param{const int}{ id}} + +Determines whether an item is enabled. + +\wxheading{Parameters} + +\docparam{id}{The menu item identifier.} + +\wxheading{Return value} + +TRUE if the item was found and is enabled, FALSE otherwise. + +\membersection{wxMenuBar::SetHelpString}\label{wxmenubarsethelpstring} + +\func{void}{SetHelpString}{\param{const int}{ id}, \param{const wxString\& }{helpString}} + +Sets the help string associated with a menu item. + +\wxheading{Parameters} + +\docparam{id}{Menu item identifier.} + +\docparam{helpString}{Help string to associate with the menu item.} + +\wxheading{See also} + +\helpref{wxMenuBar::GetHelpString}{wxmenubargethelpstring} + +\membersection{wxMenuBar::SetLabel}\label{wxmenubarsetlabel} + +\func{void}{SetLabel}{\param{const int}{ id}, \param{const wxString\& }{label}} + +Sets the label of a menu item. + +\wxheading{Parameters} + +\docparam{id}{Menu item identifier.} + +\docparam{label}{Menu item label.} + +\wxheading{Remarks} + +Use only after the menubar has been associated with a frame. + +\wxheading{See also} + +\helpref{wxMenuBar::GetLabel}{wxmenubargetlabel} + +\membersection{wxMenuBar::SetLabelTop}\label{wxmenubarsetlabeltop} + +\func{void}{SetLabelTop}{\param{const int}{ pos}, \param{const wxString\& }{label}} + +Sets the label of a top-level menu. + +\wxheading{Parameters} + +\docparam{pos}{The position of a menu on the menu bar, starting from zero.} + +\docparam{label}{The menu label.} + +\wxheading{Remarks} + +Use only after the menubar has been associated with a frame. + +\wxheading{See also} + +\helpref{wxMenuBar::GetLabelTop}{wxmenubargetlabeltop} + diff --git a/docs/latex/wx/menuevt.tex b/docs/latex/wx/menuevt.tex new file mode 100644 index 0000000000..65c864b9a0 --- /dev/null +++ b/docs/latex/wx/menuevt.tex @@ -0,0 +1,53 @@ +\section{\class{wxMenuEvent}}\label{wxmenuevent} + +This class is used for a variety of menu-related events. Note that +these do not include menu command events. + +\wxheading{Derived from} + +\helpref{wxEvent}{wxevent}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Event table macros} + +To process a menu event, use these event handler macros to direct input to member +functions that take a wxMenuEvent argument. + +\twocolwidtha{7cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf EVT\_MENU\_CHAR(func)}}{Process a wxEVT\_MENU\_CHAR event (a keypress +when a menu is showing). Windows only. TODO} +\twocolitem{{\bf EVT\_MENU\_INIT(func)}}{Process a wxEVT\_MENU\_INIT event (the menu +is about to pop up). Windows only. TODO} +\twocolitem{{\bf EVT\_MENU\_HIGHLIGHT(func)}}{Process a wxEVT\_MENU\_HIGHLIGHT event (a menu +item is being highlighted). Windows only.} +\twocolitem{{\bf EVT\_POPUP\_MENU(func)}}{Process a wxEVT\_POPUP\_MENU event (a menu +item is being highlighted). Windows only. TODO} +\twocolitem{{\bf EVT\_CONTEXT\_MENU(func)}}{Process a wxEVT\_CONTEXT\_MENU event (F1 has +been pressed with a particular menu item highlighted). Windows only. TODO} +\end{twocollist}% + +\wxheading{See also} + +\helpref{wxWindow::OnMenuHighlight}{wxwindowonmenuhighlight}, \helpref{Event handling overview}{eventhandlingoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxMenuEvent::wxMenuEvent} + +\func{}{wxMenuEvent}{\param{WXTYPE }{id = 0}, \param{int }{id = 0}, \param{wxDC* }{dc = NULL}} + +Constructor. + +\membersection{wxMenuEvent::m\_menuId} + +\member{int}{m\_menuId} + +The relevant menu identifier. + +\membersection{wxMenuEvent::GetMenuId}\label{wxmenueventgetmenuid} + +\constfunc{int}{GetMenuId}{\void} + +Returns the menu identifier associated with the event. + diff --git a/docs/latex/wx/menuitem.tex b/docs/latex/wx/menuitem.tex new file mode 100644 index 0000000000..35204ef6cf --- /dev/null +++ b/docs/latex/wx/menuitem.tex @@ -0,0 +1,186 @@ +\section{\class{wxMenuItem}}\label{wxmenuitem} + +A menu item represents an item in a popup menu. Note that the majority of this +class is only implemented under Windows so far, but everything except fonts, colours and +bitmaps can be achieved via wxMenu on all platforms. + +\wxheading{Derived from} + +wxOwnerDrawn (Windows only)\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxMenuBar}{wxmenubar}, \helpref{wxMenu}{wxmenu}, \helpref{wxOwnerDrawn}{wxownerdrawn} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxMenuItem::wxMenuItem}\label{wxmenuitemconstr} + +\func{}{wxMenuItem}{\param{wxMenu*}{ parentMenu = NULL}, \param{int}{ id = ID\_SEPARATOR}, + \param{const wxString\& }{text = ""}, \param{const wxString\& }{helpString = ""}, + \param{bool }{checkable = FALSE}, \param{wxMenu*}{ subMenu = NULL}, } + +Constructs a wxMenuItem object. + +\wxheading{Parameters} + +\docparam{parentMenu}{Menu that the menu item belongs to.} + +\docparam{id}{Identifier for this menu item, or ID\_SEPARATOR to indicate a separator.} + +\docparam{text}{Text for the menu item, as shown on the menu.} + +\docparam{helpString}{Optional help string that will be shown on the status bar.} + +\docparam{checkable}{TRUE if this menu item is checkable.} + +\docparam{subMenu}{If non-NULL, indicates that the menu item is a submenu.} + +\membersection{wxMenuItem::\destruct{wxMenuItem}} + +\func{}{\destruct{wxMenuItem}}{\void} + +Destructor. + +\membersection{wxMenuItem::Check}\label{wxmenuitemcheck} + +\func{void}{Check}{\param{bool}{ check}} + +Checks or unchecks the menu item. + +\membersection{wxMenuItem::DeleteSubMenu}\label{wxmenuitemdeletesubmenu} + +\func{void}{DeleteSubMenu}{\void} + +Deletes the submenu, if any. + +\membersection{wxMenuItem::Enable}\label{wxmenuitemenable} + +\func{void}{Enable}{\param{bool}{ enable}} + +Enables or disables the menu item. + +\membersection{wxMenuItem::GetBackgroundColour}\label{wxmenuitemgetbackgroundcolour} + +\constfunc{wxColour\&}{GetBackgroundColour}{\void} + +Returns the background colour associated with the menu item (Windows only). + +\membersection{wxMenuItem::GetBitmap}\label{wxmenuitemgetbitmap} + +\constfunc{wxBitmap\&}{GetBitmap}{\param{bool}{ checked = TRUE}} + +Returns the checked or unchecked bitmap (Windows only). + +\membersection{wxMenuItem::GetFont}\label{wxmenuitemgetfont} + +\constfunc{wxFont\&}{GetFont}{\void} + +Returns the font associated with the menu item (Windows only). + +\membersection{wxMenuItem::GetHelp}\label{wxmenuitemgethelp} + +\constfunc{wxString}{GetHelp}{\void} + +Returns the help string associated with the menu item. + +\membersection{wxMenuItem::GetId}\label{wxmenuitemgetid} + +\constfunc{int}{GetId}{\void} + +Returns the menu item identifier. + +\membersection{wxMenuItem::GetMarginWidth}\label{wxmenuitemgetmarginwidth} + +\constfunc{int}{GetMarginWidth}{\void} + +Gets the width of the menu item checkmark bitmap (Windows only). + +\membersection{wxMenuItem::GetName}\label{wxmenuitemgetname} + +\constfunc{wxString}{GetName}{\void} + +Returns the text associated with the menu item. + +\membersection{wxMenuItem::GetSubMenu}\label{wxmenuitemgetsubmenu} + +\constfunc{wxMenu*}{GetSubMenu}{\void} + +Returns the submenu associated with the menu item, or NULL if there isn't one. + +\membersection{wxMenuItem::GetTextColour}\label{wxmenuitemgettextcolour} + +\constfunc{wxColour\&}{GetTextColour}{\void} + +Returns the text colour associated with the menu item (Windows only). + +\membersection{wxMenuItem::IsCheckable}\label{wxmenuitemischeckable} + +\constfunc{bool}{IsCheckable}{\void} + +Returns TRUE if the item is checkable. + +\membersection{wxMenuItem::IsChecked}\label{wxmenuitemischecked} + +\constfunc{bool}{IsChecked}{\void} + +Returns TRUE if the item is checked. + +\membersection{wxMenuItem::IsEnabled}\label{wxmenuitemisenabled} + +\constfunc{bool}{IsEnabled}{\void} + +Returns TRUE if the item is enabled. + +\membersection{wxMenuItem::IsSeparator}\label{wxmenuitemisseparator} + +\constfunc{bool}{IsSeparator}{\void} + +Returns TRUE if the item is a separator. + +\membersection{wxMenuItem::SetBackgroundColour}\label{wxmenuitemsetbackgroundcolour} + +\constfunc{void}{SetBackgroundColour}{\param{const wxColour& }{colour}} + +Sets the background colour associated with the menu item (Windows only). + +\membersection{wxMenuItem::SetBitmaps}\label{wxmenuitemsetbitmaps} + +\constfunc{void}{SetBitmaps}{\param{const wxBitmap& }{checked}, + \param{const wxBitmap& }{unchecked = wxNullBitmap}} + +Sets the checked/unchecked bitmaps for the menu item (Windows only). The first bitmap +is also used as the single bitmap for uncheckable menu items. + +\membersection{wxMenuItem::SetFont}\label{wxmenuitemsetfont} + +\constfunc{void}{SetFont}{\param{const wxFont& }{font}} + +Sets the font associated with the menu item (Windows only). + +\membersection{wxMenuItem::SetHelp}\label{wxmenuitemsethelp} + +\constfunc{void}{SetHelp}{\param{const wxString& }{helpString}} + +Sets the help string. + +\membersection{wxMenuItem::SetMarginWidth}\label{wxmenuitemsetmarginwidth} + +\constfunc{void}{SetMarginWidth}{\param{int}{ width}} + +Sets the width of the menu item checkmark bitmap (Windows only). + +\membersection{wxMenuItem::SetName}\label{wxmenuitemsetname} + +\constfunc{void}{SetName}{\param{const wxString& }{text}} + +Sets the text associated with the menu item. + +\membersection{wxMenuItem::SetTextColour}\label{wxmenuitemsettextcolour} + +\constfunc{void}{SetTextColour}{\param{const wxColour& }{colour}} + +Sets the text colour associated with the menu item (Windows only). + + diff --git a/docs/latex/wx/metafile.tex b/docs/latex/wx/metafile.tex new file mode 100644 index 0000000000..8242804101 --- /dev/null +++ b/docs/latex/wx/metafile.tex @@ -0,0 +1,125 @@ + +\section{\class{wxMetaFile}}\label{wxmetafile} + +A {\bf wxMetaFile} represents the MS Windows metafile object, so metafile +operations have no effect in X. In wxWindows, only sufficient functionality +has been provided for copying a graphic to the clipboard; this may be extended +in a future version. Presently, the only way of creating a metafile +is to use a wxMetafileDC. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxMetaFileDC}{wxmetafiledc} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxMetaFile::wxMetaFile} + +\func{}{wxMetaFile}{\param{const wxString\& }{filename = ""}} + +Constructor. If a filename is given, the Windows disk metafile is +read in. Check whether this was performed successfully by +using the \helpref{wxMetaFile::Ok}{wxmetafileok} member. + +\membersection{wxMetaFile::\destruct{wxMetaFile}} + +\func{}{\destruct{wxMetaFile}}{\void} + +Destructor. + +\membersection{wxMetaFile::Ok}\label{wxmetafileok} + +\func{bool}{Ok}{\void} + +Returns TRUE if the metafile is valid. + +\membersection{wxMetaFile::Play}\label{wxmetafileplay} + +\func{bool}{Play}{\param{wxDC *}{dc}} + +Plays the metafile into the given device context, returning +TRUE if successful. + +\membersection{wxMetaFile::SetClipboard} + +\func{bool}{SetClipboard}{\param{int}{ width = 0}, \param{int}{ height = 0}} + +Passes the metafile data to the clipboard. The metafile can no longer be +used for anything, but the wxMetaFile object must still be destroyed by +the application. + +Below is a example of metafle, metafile device context and clipboard use +from the {\tt hello.cpp} example. Note the way the metafile dimensions +are passed to the clipboard, making use of the device context's ability +to keep track of the maximum extent of drawing commands. + +\begin{verbatim} + wxMetaFileDC dc; + if (dc.Ok()) + { + Draw(dc, FALSE); + wxMetaFile *mf = dc.Close(); + if (mf) + { + bool success = mf->SetClipboard((int)(dc.MaxX() + 10), (int)(dc.MaxY() + 10)); + delete mf; + } + } +\end{verbatim} + +\section{\class{wxMetaFileDC}}\label{wxmetafiledc} + +This is a type of device context that allows a metafile object to be +created (Windows only), and has most of the characteristics of a normal +\rtfsp{\bf wxDC}. The \helpref{wxMetaFileDC::Close}{wxmetafiledcclose} member must be called after drawing into the +device context, to return a metafile. The only purpose for this at +present is to allow the metafile to be copied to the clipboard (see \helpref{wxMetaFile}{wxmetafile}). + +Adding metafile capability to an application should be easy if you +already write to a wxDC; simply pass the wxMetaFileDC to your drawing +function instead. You may wish to conditionally compile this code so it +is not compiled under X (although no harm will result if you leave it +in). + +Note that a metafile saved to disk is in standard Windows metafile format, +and cannot be imported into most applications. To make it importable, +call the function \helpref{::wxMakeMetaFilePlaceable}{wxmakemetafileplaceable} after +closing your disk-based metafile device context. + +\wxheading{Derived from} + +\helpref{wxDC}{wxdc}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxMetaFile}{wxmetafile}, \helpref{wxDC}{wxdc} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxMetaFileDC::wxMetaFileDC} + +\func{}{wxMetaFileDC}{\param{const wxString\& }{filename = ""}} + +Constructor. If no filename is passed, the metafile is created +in memory. + +\membersection{wxMetaFileDC::\destruct{wxMetaFileDC}} + +\func{}{\destruct{wxMetaFileDC}}{\void} + +Destructor. + +\membersection{wxMetaFileDC::Close}\label{wxmetafiledcclose} + +\func{wxMetaFile *}{Close}{\void} + +This must be called after the device context is finished with. A +metafile is returned, and ownership of it passes to the calling +application (so it should be destroyed explicitly). + + diff --git a/docs/latex/wx/minifram.tex b/docs/latex/wx/minifram.tex new file mode 100644 index 0000000000..3e19a84cb5 --- /dev/null +++ b/docs/latex/wx/minifram.tex @@ -0,0 +1,108 @@ +\section{\class{wxMiniFrame}}\label{wxminiframe} + +A miniframe is a frame with a small title bar. It is suitable for floating toolbars that must not +take up too much screen area. + +\wxheading{Derived from} + +\helpref{wxFrame}{wxframe}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{wxICONIZE}}{Display the frame iconized (minimized) (Windows only).} +\twocolitem{\windowstyle{wxCAPTION}}{Puts a caption on the frame.} +\twocolitem{\windowstyle{wxDEFAULT\_FRAME\_STYLE}}{Defined as {\bf wxMINIMIZE\_BOX \pipe wxMAXIMIZE\_BOX \pipe wxTHICK\_FRAME \pipe wxSYSTEM\_MENU \pipe wxCAPTION}.} +\twocolitem{\windowstyle{wxMINIMIZE}}{Identical to {\bf wxICONIZE}.} +\twocolitem{\windowstyle{wxMINIMIZE\_BOX}}{Displays a minimize box on the frame (Windows and Motif only).} +\twocolitem{\windowstyle{wxMAXIMIZE}}{Displays the frame maximized (Windows only).} +\twocolitem{\windowstyle{wxMAXIMIZE\_BOX}}{Displays a maximize box on the frame (Windows and Motif only).} +\twocolitem{\windowstyle{wxSTAY\_ON\_TOP}}{Stay on top of other windows (Windows only).} +\twocolitem{\windowstyle{wxSYSTEM\_MENU}}{Displays a system menu (Windows and Motif only).} +\twocolitem{\windowstyle{wxTHICK\_FRAME}}{Displays a thick frame around the window (Windows and Motif only).} +\twocolitem{\windowstyle{wxTINY\_CAPTION\_HORIZ}}{Displays a small horizontal caption. Use instead of +wxCAPTION.} +\twocolitem{\windowstyle{wxTINY\_CAPTION\_VERT}}{Under Windows, displays a small vertical caption. Use instead of +wxCAPTION.} +\twocolitem{\windowstyle{wxRESIZE\_BORDER}}{Displays a resizeable border around the window (Motif only; +for Windows, it is implicit in {\bf wxTHICK\_FRAME}).} +\end{twocollist} + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{Remarks} + +This class has miniframe functionality only under Windows. On other platforms, +it behaves like a normal frame. + +\wxheading{See also} + +\helpref{wxMDIParentFrame}{wxmdiparentframe}, \helpref{wxMDIChildFrame}{wxmdichildframe},\rtfsp +\helpref{wxFrame}{wxframe}, \helpref{wxDialog}{wxdialog} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxMiniFrame::wxMiniFrame}\label{wxminiframeconstr} + +\func{}{wxMiniFrame}{\void} + +Default constructor. + +\func{}{wxMiniFrame}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id},\rtfsp +\param{const wxString\& }{title}, \param{const wxPoint\&}{ pos = wxDefaultPosition},\rtfsp +\param{const wxSize\&}{ size = wxDefaultSize}, \param{long}{ style = wxDEFAULT\_FRAME\_STYLE},\rtfsp +\param{const wxString\& }{name = ``frame"}} + +Constructor, creating the window. + +\wxheading{Parameters} + +\docparam{parent}{The window parent. This may be NULL. If it is non-NULL, the frame will +always be displayed on top of the parent window on Windows.} + +\docparam{id}{The window identifier. It may take a value of -1 to indicate a default value.} + +\docparam{title}{The caption to be displayed on the frame's title bar.} + +\docparam{pos}{The window position. A value of (-1, -1) indicates a default position, chosen by +either the windowing system or wxWindows, depending on platform.} + +\docparam{size}{The window size. A value of (-1, -1) indicates a default size, chosen by +either the windowing system or wxWindows, depending on platform.} + +\docparam{style}{The window style. See \helpref{wxMiniFrame}{wxminiframe}.} + +\docparam{name}{The name of the window. This parameter is used to associate a name with the item, +allowing the application user to set Motif resource values for +individual windows.} + +\wxheading{Remarks} + +The frame behaves like a normal frame on non-Windows platforms. + +\wxheading{See also} + +\helpref{wxMiniFrame::Create}{wxminiframecreate} + +\membersection{wxMiniFrame::\destruct{wxMiniFrame}} + +\func{void}{\destruct{wxMiniFrame}}{\void} + +Destructor. Destroys all child windows and menu bar if present. + +\membersection{wxMiniFrame::Create}\label{wxminiframecreate} + +\func{bool}{Create}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id},\rtfsp +\param{const wxString\& }{title}, \param{const wxPoint\&}{ pos = wxDefaultPosition},\rtfsp +\param{const wxSize\&}{ size = wxDefaultSize}, \param{long}{ style = wxDEFAULT\_FRAME\_STYLE},\rtfsp +\param{const wxString\& }{name = ``frame"}} + +Used in two-step frame construction. See \helpref{wxMiniFrame::wxMiniFrame}{wxminiframeconstr}\rtfsp +for further details. + + + diff --git a/docs/latex/wx/mltchdlg.tex b/docs/latex/wx/mltchdlg.tex new file mode 100644 index 0000000000..8c6a74e54a --- /dev/null +++ b/docs/latex/wx/mltchdlg.tex @@ -0,0 +1,21 @@ +\section{\class{wxMultipleChoiceDialog}}\label{wxmultiplechoicedialog} + +This class represents a dialog that shows a list of strings, and allows +the user to select one or more. + +TODO. + +\wxheading{Derived from} + +\helpref{wxDialog}{wxdialog}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxMultipleChoiceDialog overview}{wxmultiplechoicedialogoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + + diff --git a/docs/latex/wx/module.tex b/docs/latex/wx/module.tex new file mode 100644 index 0000000000..3bd382e920 --- /dev/null +++ b/docs/latex/wx/module.tex @@ -0,0 +1,85 @@ +\section{\class{wxModule}}\label{wxmodule} + +The module system is a very simple mechanism to allow applications (and parts of wxWindows itself) to +define initialization and cleanup functions that are automatically called on wxWindows +startup and exit. + +To define a new kind of module, derive a class from wxModule, override the OnInit and OnExit functions, +and add the DECLARE\_DYNAMIC\_CLASS and IMPLEMENT\_DYNAMIC\_CLASS to header and implementation files +(which can be the same file). On initialization, wxWindows will find all classes derived from wxModule, +create an instance of each, and call each OnInit function. On exit, wxWindows will call the OnExit +function for each module instance. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxModule::wxModule}\label{wxmoduleconstr} + +\func{}{wxModule}{\void} + +Constructs a wxModule object. + +\membersection{wxModule::\destruct{wxModule}} + +\func{}{\destruct{wxModule}}{\void} + +Destructor. + +\membersection{wxModule::CleanupModules}\label{wxmodulecleanupmodules} + +\func{static void}{CleanupModules}{\void} + +Calls Exit for each module instance. Called by wxWindows on exit, so there is no +need for an application to call it. + +\membersection{wxModule::Exit}\label{wxmoduleexit} + +\func{void}{Exit}{\void} + +Calls OnExit. This function is called by wxWindows and should not need to be called +by an application. + +\membersection{wxModule::Init}\label{wxmoduleinit} + +\func{bool}{Init}{\void} + +Calls OnInit. This function is called by wxWindows and should not need to be called +by an application. + +\membersection{wxModule::InitializeModules}\label{wxmoduleinitializemodules} + +\func{static bool}{InitializeModules}{\void} + +Calls Init for each module instance. Called by wxWindows on startup, so there is no +need for an application to call it. + +\membersection{wxModule::OnExit}\label{wxmoduleonexit} + +\func{virtual bool}{OnExit}{\void} + +Provide this function with appropriate cleanup for your module. + +\membersection{wxModule::OnInit}\label{wxmoduleoninit} + +\func{virtual bool}{OnInit}{\void} + +Provide this function with appropriate initialization for your module. If the function +returns FALSE, wxWindows will exit immediately. + +\membersection{wxModule::RegisterModule}\label{wxmoduleregistermodule} + +\func{static void}{RegisterModule}{\param{wxModule*}{ module}} + +Registers this module with wxWindows. Called by wxWindows on startup, so there is no +need for an application to call it. + +\membersection{wxModule::RegisterModules}\label{wxmoduleregistermodules} + +\func{static bool}{RegisterModules}{\void} + +Creates instances of and registers all modules. Called by wxWindows on startup, so there is no +need for an application to call it. + diff --git a/docs/latex/wx/mouseevt.tex b/docs/latex/wx/mouseevt.tex new file mode 100644 index 0000000000..f8d03b988f --- /dev/null +++ b/docs/latex/wx/mouseevt.tex @@ -0,0 +1,327 @@ +\section{\class{wxMouseEvent}}\label{wxmouseevent} + +This event class contains information about mouse events, particularly +events received by canvases. See \helpref{wxWindow::OnMouseEvent}{wxwindowonmouseevent}. + +\wxheading{Derived from} + +\helpref{wxEvent}{wxevent} + +\wxheading{Event table macros} + +To process a mouse event, use these event handler macros to direct input to member +functions that take a wxMouseEvent argument. + +\twocolwidtha{7cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf EVT\_LEFT\_DOWN(func)}}{Process a wxEVT\_LEFT\_DOWN event.} +\twocolitem{{\bf EVT\_LEFT\_UP(func)}}{Process a wxEVT\_LEFT\_UP event.} +\twocolitem{{\bf EVT\_LEFT\_DCLICK(func)}}{Process a wxEVT\_LEFT\_DCLICK event.} +\twocolitem{{\bf EVT\_MIDDLE\_DOWN(func)}}{Process a wxEVT\_MIDDLE\_DOWN event.} +\twocolitem{{\bf EVT\_MIDDLE\_UP(func)}}{Process a wxEVT\_MIDDLE\_UP event.} +\twocolitem{{\bf EVT\_MIDDLE\_DCLICK(func)}}{Process a wxEVT\_MIDDLE\_DCLICK event.} +\twocolitem{{\bf EVT\_RIGHT\_DOWN(func)}}{Process a wxEVT\_RIGHT\_DOWN event.} +\twocolitem{{\bf EVT\_RIGHT\_UP(func)}}{Process a wxEVT\_RIGHT\_UP event.} +\twocolitem{{\bf EVT\_RIGHT\_DCLICK(func)}}{Process a wxEVT\_RIGHT\_DCLICK event.} +\twocolitem{{\bf EVT\_MOTION(func)}}{Process a wxEVT\_MOTION event.} +\twocolitem{{\bf EVT\_ENTER\_WINDOW(func)}}{Process a wxEVT\_ENTER\_WINDOW event.} +\twocolitem{{\bf EVT\_LEAVE\_WINDOW(func)}}{Process a wxEVT\_LEAVE\_WINDOW event.} +\end{twocollist}% + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxMouseEvent::m\_altDown} + +\member{bool}{m\_altDown} + +TRUE if the Alt key is pressed down. + +\membersection{wxMouseEvent::m\_controlDown} + +\member{bool}{m\_controlDown} + +TRUE if control key is pressed down. + +\membersection{wxMouseEvent::m\_leftDown} + +\member{bool}{m\_leftDown} + +TRUE if the left mouse button is currently pressed down. + +\membersection{wxMouseEvent::m\_middleDown} + +\member{bool}{m\_middleDown} + +TRUE if the middle mouse button is currently pressed down. + +\membersection{wxMouseEvent::m\_rightDown} + +\member{bool}{m\_rightDown} + +TRUE if the right mouse button is currently pressed down. + +\membersection{wxMouseEvent::m\_leftDown} + +\member{bool}{m\_leftDown} + +TRUE if the left mouse button is currently pressed down. + +\membersection{wxMouseEvent::m\_metaDown} + +\member{bool}{m\_metaDown} + +TRUE if the Meta key is pressed down. + +\membersection{wxMouseEvent::m\_shiftDown} + +\member{bool}{m\_shiftDown} + +TRUE if shift is pressed down. + +\membersection{wxMouseEvent::m\_x} + +\member{float}{m\_x} + +X-coordinate of the event. + +\membersection{wxMouseEvent::m\_y} + +\member{float}{m\_y} + +Y-coordinate of the event. + +\membersection{wxMouseEvent::wxMouseEvent} + +\func{}{wxMouseEvent}{\param{WXTYPE}{ mouseEventType = 0}, \param{int}{ id = 0}} + +Constructor. Valid event types are: + +\begin{itemize} +\itemsep=0pt +\item {\bf wxEVT\_ENTER\_WINDOW} +\item {\bf wxEVT\_LEAVE\_WINDOW} +\item {\bf wxEVT\_LEFT\_DOWN} +\item {\bf wxEVT\_LEFT\_UP} +\item {\bf wxEVT\_LEFT\_DCLICK} +\item {\bf wxEVT\_MIDDLE\_DOWN} +\item {\bf wxEVT\_MIDDLE\_UP} +\item {\bf wxEVT\_MIDDLE\_DCLICK} +\item {\bf wxEVT\_RIGHT\_DOWN} +\item {\bf wxEVT\_RIGHT\_UP} +\item {\bf wxEVT\_RIGHT\_DCLICK} +\item {\bf wxEVT\_MOTION} +\end{itemize} + +\membersection{wxMouseEvent::AltDown} + +\func{bool}{AltDown}{\void} + +Returns TRUE if the Alt key was down at the time of the event. + +\membersection{wxMouseEvent::Button} + +\func{bool}{Button}{\param{int}{ button}} + +Returns TRUE if the identified mouse button is changing state. Valid +values of {\it button} are 1, 2 or 3 for left, middle and right +buttons respectively. + +Not all mice have middle buttons so a portable application should avoid +this one. + +\membersection{wxMouseEvent::ButtonDClick}\label{buttondclick} + +\func{bool}{ButtonDClick}{\param{int}{ but = -1}} + +If the argument is omitted, this returns TRUE if the event was a mouse +double click event. Otherwise the argument specifies which double click event +was generated (1, 2 or 3 for left, middle and right buttons respectively). + +\membersection{wxMouseEvent::ButtonDown} + +\func{bool}{ButtonDown}{\param{int}{ but = -1}} + +If the argument is omitted, this returns TRUE if the event was a mouse +button down event. Otherwise the argument specifies which button-down event +was generated (1, 2 or 3 for left, middle and right buttons respectively). + +\membersection{wxMouseEvent::ButtonUp} + +\func{bool}{ButtonUp}{\param{int}{ but = -1}} + +If the argument is omitted, this returns TRUE if the event was a mouse +button up event. Otherwise the argument specifies which button-up event +was generated (1, 2 or 3 for left, middle and right buttons respectively). + +\membersection{wxMouseEvent::ControlDown} + +\func{bool}{ControlDown}{\void} + +Returns TRUE if the control key was down at the time of the event. + +\membersection{wxMouseEvent::Dragging} + +\func{bool}{Dragging}{\void} + +Returns TRUE if this was a dragging event (motion while a button is depressed). + +\membersection{wxMouseEvent::Entering}\label{wxmouseevententering} + +\func{bool}{Entering}{\void} + +Returns TRUE if the mouse was entering the canvas (MS Windows and Motif). + +See also \helpref{wxMouseEvent::Leaving}{wxmouseeventleaving}. + +\membersection{wxMouseEvent::GetX}\label{wxmouseeventgetx} + +\func{float}{GetX}{\void} + +Returns X coordinate of the mouse event position. + +\membersection{wxMouseEvent::GetY}\label{wxmouseeventgety} + +\func{float}{GetY}{\void} + +Returns Y coordinate of the mouse event position. + +\membersection{wxMouseEvent::IsButton} + +\func{bool}{IsButton}{\void} + +Returns TRUE if the event was a mouse button event (not necessarily a button down event - +that may be tested using {\it ButtonDown}). + +\membersection{wxMouseEvent::Leaving}\label{wxmouseeventleaving} + +\func{bool}{Leaving}{\void} + +Returns TRUE if the mouse was leaving the canvas (MS Windows and Motif). + +See also \helpref{wxMouseEvent::Entering}{wxmouseevententering}. + +\membersection{wxMouseEvent::LeftDClick} + +\func{bool}{LeftDClick}{\void} + +Returns TRUE if the event was a left double click. + +\membersection{wxMouseEvent::LeftDown} + +\func{bool}{LeftDown}{\void} + +Returns TRUE if the left mouse button changed to down. + +\membersection{wxMouseEvent::LeftIsDown} + +\func{bool}{LeftIsDown}{\void} + +Returns TRUE if the left mouse button is currently down, independent +of the current event type. + +\membersection{wxMouseEvent::LeftUp} + +\func{bool}{LeftUp}{\void} + +Returns TRUE if the left mouse button changed to up. + +\membersection{wxMouseEvent::MetaDown} + +\func{bool}{MetaDown}{\void} + +Returns TRUE if the Meta key was down at the time of the event. + +\membersection{wxMouseEvent::MiddleDClick} + +\func{bool}{MiddleDClick}{\void} + +Returns TRUE if the event was a middle double click. + +\membersection{wxMouseEvent::MiddleDown} + +\func{bool}{MiddleDown}{\void} + +Returns TRUE if the middle mouse button changed to down. + +\membersection{wxMouseEvent::MiddleIsDown} + +\func{bool}{MiddleIsDown}{\void} + +Returns TRUE if the middle mouse button is currently down, independent +of the current event type. + +\membersection{wxMouseEvent::MiddleUp} + +\func{bool}{MiddleUp}{\void} + +Returns TRUE if the middle mouse button changed to up. + +\membersection{wxMouseEvent::Moving} + +\func{bool}{Moving}{\void} + +Returns TRUE if this was a motion event (no buttons depressed). + +\membersection{wxMouseEvent::Position} + +\func{void}{Position}{\param{float *}{x}, \param{float *}{y}} + +Sets *x and *y to the position at which the event occurred. If the +window is a canvas, the position is converted to logical units +(according to the current mapping mode) with scrolling taken into +account. To get back to device units (for example to calculate where on the +screen to place a dialog box associated with a canvas mouse event), use +\rtfsp{\bf wxDC::LogicalToDeviceX} and {\bf wxDC::LogicalToDeviceY}. + +For example, the following code calculates screen pixel coordinates +from the frame position, canvas view start (assuming the canvas is the only +subwindow on the frame and therefore at the top left of it), and the +logical event position. A menu is popped up at the position where the +mouse click occurred. (Note that the application should also check that +the dialog box will be visible on the screen, since the click could have +occurred near the screen edge!) + +\begin{verbatim} + float event_x, event_y; + event.Position(&event_x, &event_y); + frame->GetPosition(&x, &y); + canvas->ViewStart(&x1, &y1); + int mouse_x = (int)(canvas->GetDC()->LogicalToDeviceX(event_x + x - x1); + int mouse_y = (int)(canvas->GetDC()->LogicalToDeviceY(event_y + y - y1); + + char *choice = wxGetSingleChoice("Menu", "Pick a node action", + no_choices, choices, frame, mouse_x, mouse_y); +\end{verbatim} + +\membersection{wxMouseEvent::RightDClick} + +\func{bool}{RightDClick}{\void} + +Returns TRUE if the event was a right double click. + +\membersection{wxMouseEvent::RightDown} + +\func{bool}{RightDown}{\void} + +Returns TRUE if the right mouse button changed to down. + +\membersection{wxMouseEvent::RightIsDown} + +\func{bool}{RightIsDown}{\void} + +Returns TRUE if the right mouse button is currently down, independent +of the current event type. + +\membersection{wxMouseEvent::RightUp} + +\func{bool}{RightUp}{\void} + +Returns TRUE if the right mouse button changed to up. + + +\membersection{wxMouseEvent::ShiftDown} + +\func{bool}{ShiftDown}{\void} + +Returns TRUE if the shift key was down at the time of the event. + diff --git a/docs/latex/wx/moveevt.tex b/docs/latex/wx/moveevt.tex new file mode 100644 index 0000000000..8be4e9ba06 --- /dev/null +++ b/docs/latex/wx/moveevt.tex @@ -0,0 +1,38 @@ +\section{\class{wxMoveEvent}}\label{wxmoveevent} + +A move event holds information about move change events. + +\wxheading{Derived from} + +\helpref{wxEvent}{wxevent}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Event table macros} + +To process a move event, use this event handler macro to direct input to a member +function that takes a wxMoveEvent argument. + +\twocolwidtha{7cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf EVT\_MOVE(func)}}{Process a wxEVT\_MOVE event, which is generated +when a window is moved.} +\end{twocollist}% + +\wxheading{See also} + +\helpref{wxWindow::OnMove}{wxwindowonmove}, \helpref{wxPoint}{wxpoint}, \helpref{Event handling overview}{eventhandlingoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxMoveEvent::wxMoveEvent} + +\func{}{wxMoveEvent}{\param{const wxPoint\& }{pt}, \param{int }{id = 0}} + +Constructor. + +\membersection{wxMoveEvent::GetPosition}\label{wxmoveeventgetposition} + +\constfunc{wxPoint}{GetPosition}{\void} + +Returns the position of the window generating the move change event. + diff --git a/docs/latex/wx/msgdlg.tex b/docs/latex/wx/msgdlg.tex new file mode 100644 index 0000000000..c121b4d865 --- /dev/null +++ b/docs/latex/wx/msgdlg.tex @@ -0,0 +1,63 @@ +\section{\class{wxMessageDialog}}\label{wxmessagedialog} + +This class represents a dialog that shows a single or multi-line message, +with a choice of OK, Yes, No and Cancel buttons. + +\wxheading{Derived from} + +\helpref{wxDialog}{wxdialog}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxMessageDialog overview}{wxmessagedialogoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxMessageDialog::wxMessageDialog}\label{wxmessagedialogconstr} + +\func{}{wxMessageDialog}{\param{wxWindow* }{parent}, \param{const wxString\& }{message},\rtfsp +\param{const wxString\& }{caption = "Message box"}, \param{long }{style = wxOK \pipe wxCANCEL \pipe wxCENTRE},\rtfsp +\param{const wxPoint\& }{pos = wxDefaultPosition}} + +Constructor. Use \helpref{wxMessageDialog::ShowModal}{wxmessagedialogshowmodal} to show the dialog. + +\wxheading{Parameters} + +\docparam{parent}{Parent window.} + +\docparam{message}{Message to show on the dialog.} + +\docparam{caption}{The dialog caption.} + +\docparam{style}{A dialog style (bitlist) containing flags chosen from the following: + +\twocolwidtha{5cm} +\begin{twocollist} +\twocolitem{{\bf wxOK}}{Show an OK button.} +\twocolitem{{\bf wxCANCEL}}{Show a Cancel button.} +\twocolitem{{\bf wxYES\_NO}}{Show Yes and No buttons.} +\twocolitem{{\bf wxCENTRE}}{Centre the message. Not Windows.} +\twocolitem{{\bf wxICON\_EXCLAMATION}}{Shows an exclamation mark icon. Windows only.} +\twocolitem{{\bf wxICON\_HAND}}{Shows a hand icon. Windows only.} +\twocolitem{{\bf wxICON\_QUESTION}}{Shows a question mark icon. Windows only.} +\twocolitem{{\bf wxICON\_INFORMATION}}{Shows an information (i) icon. Windows only.} +\end{twocollist} +} + +\docparam{pos}{Dialog position. Not Windows.} + +\membersection{wxMessageDialog::\destruct{wxMessageDialog}} + +\func{}{\destruct{wxMessageDialog}}{\void} + +Destructor. + +\membersection{wxMessageDialog::ShowModal}\label{wxmessagedialogshowmodal} + +\func{int}{ShowModal}{\void} + +Shows the dialog, returning one of wxID\_OK, wxID\_CANCEL, wxID\_YES, wxID\_NO. + diff --git a/docs/latex/wx/node.tex b/docs/latex/wx/node.tex new file mode 100644 index 0000000000..417329092f --- /dev/null +++ b/docs/latex/wx/node.tex @@ -0,0 +1,41 @@ +\section{\class{wxNode}}\label{wxnode} + +A node structure used in linked lists (see \helpref{wxList}{wxlist}). + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxList}{wxlist}, \helpref{wxHashTable}{wxhashtable} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxNode::Data} + +\func{wxObject *}{Data}{\void} + +Retrieves the client data pointer associated with the node. This will +have to be cast to the correct type. + +\membersection{wxNode::Next} + +\func{wxNode *}{Next}{\void} + +Retrieves the next node (NULL if at end of list). + +\membersection{wxNode::Previous} + +\func{wxNode *}{Previous}{\void} + +Retrieves the previous node (NULL if at start of list). + +\membersection{wxNode::SetData} + +\func{void}{SetData}{\param{wxObject *}{data}} + +Sets the data associated with the node (usually the pointer will have been +set when the node was created). + + diff --git a/docs/latex/wx/object.tex b/docs/latex/wx/object.tex new file mode 100644 index 0000000000..1cce58e408 --- /dev/null +++ b/docs/latex/wx/object.tex @@ -0,0 +1,213 @@ +\section{\class{wxObject}}\label{wxobject} + +This is the root class of all wxWindows classes. +It declares a virtual destructor which ensures that +destructors get called for all derived class objects where necessary. + +wxObject is the hub of a dynamic object creation +scheme, enabling a program to create instances of a class only knowing +its string class name, and to query the class hierarchy. + +The class contains optional debugging versions +of {\bf new} and {\bf delete}, which can help trace memory allocation +and deallocation problems. + +wxObject can be used to implement reference counted objects, such as +wxPen, wxBitmap and others. + +\wxheading{See also} + +\helpref{wxClassInfo}{wxclassinfo}, \helpref{Debugging overview}{debuggingoverview},\rtfsp +\helpref{wxObjectRefData}{wxobjectrefdata} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxObject::wxObject}\label{wxobjectconstr} + +\func{}{wxObject}{\void} + +Default constructor. + +\membersection{wxObject::\destruct{wxObject}} + +\func{}{wxObject}{\void} + +Destructor. Performs dereferencing, for those objects +that use reference counting. + +\membersection{wxObject::m\_refData}\label{wxobjectmrefdata} + +\member{wxObjectRefData* }{m\_refData} + +Pointer to an object which is the object's reference-counted data. + +\wxheading{See also} + +\helpref{wxObject::Ref}{wxobjectref}, \helpref{wxObject::UnRef}{wxobjectunref},\rtfsp +\helpref{wxObject::SetRefData}{wxobjectsetrefdata},\rtfsp +\helpref{wxObject::GetRefData}{wxobjectgetrefdata},\rtfsp +\helpref{wxObjectRefData}{wxobjectrefdata} + +\membersection{wxObject::Dump}\label{wxobjectdump} + +\func{void}{Dump}{\param{ostream\&}{ stream}} + +A virtual function that should be redefined by derived classes to allow dumping of +memory states. + +\wxheading{Parameters} + +\docparam{stream}{Stream on which to output dump information.} + +\wxheading{Remarks} + +Currently wxWindows does not define Dump for derived classes, but +programmers may wish to use it for their own applications. Be sure to +call the Dump member of the class's base class to allow all information to be dumped. + +The implementation of this function just writes the class name of the object. +If DEBUG is undefined or zero, the implementation is empty. + +\membersection{wxObject::GetClassInfo}\label{wxobjectgetclassinfo} + +\func{wxClassInfo *}{GetClassInfo}{\void} + +This virtual function is redefined for every class that requires run-time +type information, when using DECLARE\_CLASS macros. + +\membersection{wxObject::GetRefData}\label{wxobjectgetrefdata} + +\constfunc{wxObjectRefData*}{GetRefData}{\void} + +Returns the {\bf m\_refData} pointer. + +\wxheading{See also} + +\helpref{wxObject::Ref}{wxobjectref}, \helpref{wxObject::UnRef}{wxobjectunref}, \helpref{wxObject::m\_refData}{wxobjectmrefdata},\rtfsp +\helpref{wxObject::SetRefData}{wxobjectsetrefdata},\rtfsp +\helpref{wxObjectRefData}{wxobjectrefdata} + +\membersection{wxObject::IsKindOf}\label{wxobjectiskindof} + +\func{bool}{IsKindOf}{\param{wxClassInfo *}{info}} + +Determines whether this class is a subclass of (or the same class as) +the given class. + +\wxheading{Parameters} + +\docparam{info}{A pointer to a class information object, which may be obtained +by using the CLASSINFO macro.} + +\wxheading{Return value} + +TRUE if the class represented by {\it info} is the same class as +this one or is derived from it. + +\wxheading{Example} + +\begin{verbatim} + bool tmp = obj->IsKindOf(CLASSINFO(wxFrame)); +\end{verbatim} + +\membersection{wxObject::Ref}\label{wxobjectref} + +\func{void}{Ref}{\param{const wxObject\& }{clone}} + +Makes this object refer to the data in {\it clone}. + +\wxheading{Parameters} + +\docparam{clone}{The object to `clone'.} + +\wxheading{Remarks} + +First this function calls \helpref{wxObject::UnRef}{wxobjectunref} on itself +to decrement (and perhaps free) the data it is currently referring to. + +It then sets its own m\_refData to point to that of {\it clone}, and increments the reference count +inside the data. + +\wxheading{See also} + +\helpref{wxObject::UnRef}{wxobjectunref}, \helpref{wxObject::m\_refData}{wxobjectmrefdata},\rtfsp +\helpref{wxObject::SetRefData}{wxobjectsetrefdata}, \helpref{wxObject::GetRefData}{wxobjectgetrefdata},\rtfsp +\helpref{wxObjectRefData}{wxobjectrefdata} + +\membersection{wxObject::SetRefData}\label{wxobjectsetrefdata} + +\func{void}{SetRefData}{\param{wxObjectRefData*}{ data}} + +Sets the {\bf m\_refData} pointer. + +\wxheading{See also} + +\helpref{wxObject::Ref}{wxobjectref}, \helpref{wxObject::UnRef}{wxobjectunref}, \helpref{wxObject::m\_refData}{wxobjectmrefdata},\rtfsp +\helpref{wxObject::GetRefData}{wxobjectgetrefdata},\rtfsp +\helpref{wxObjectRefData}{wxobjectrefdata} + +\membersection{wxObject::UnRef}\label{wxobjectunref} + +\func{void}{UnRef}{\void} + +Decrements the reference count in the associated data, and if it is zero, deletes the data. +The {\bf m\_refData} member is set to NULL. + +\wxheading{See also} + +\helpref{wxObject::Ref}{wxobjectref}, \helpref{wxObject::m\_refData}{wxobjectmrefdata},\rtfsp +\helpref{wxObject::SetRefData}{wxobjectsetrefdata}, \helpref{wxObject::GetRefData}{wxobjectgetrefdata},\rtfsp +\helpref{wxObjectRefData}{wxobjectrefdata} + +\membersection{wxObject::operator new}\label{wxobjectnew} + +\func{void *}{new}{\param{size\_t }{size}, \param{const wxString\& }{filename = NULL}, \param{int}{ lineNum = 0}} + +The {\it new} operator is defined for debugging versions of the library only, when +the identifier DEBUG is defined and is more than zero. It takes over memory allocation, allowing +wxDebugContext operations. + +\membersection{wxObject::operator delete}\label{wxobjectdelete} + +\func{void}{delete}{\param{void }{buf}} + +The {\it delete} operator is defined for debugging versions of the library only, when +the identifier DEBUG is defined and is more than zero. It takes over memory deallocation, allowing +wxDebugContext operations. + +\section{\class{wxObjectRefData}}\label{wxobjectrefdata} + +This class is used to store reference-counted data. Derive classes from this to +store your own data. When retrieving information from a {\bf wxObject}'s reference data, +you will need to cast to your own derived class. + +\wxheading{Friends} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxObject}{wxobject} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxObjectRefData::m\_count} + +\member{int}{m\_count} + +Reference count. When this goes to zero during a \helpref{wxObject::UnRef}{wxobjectunref}, an object +can delete the {\bf wxObjectRefData} object. + +\membersection{wxObjectRefData::wxObjectRefData}\label{wxobjectrefdataconstr} + +\func{}{wxObjectRefData}{\void} + +Default constructor. Initialises the {\bf m\_count} member to 1. + +\membersection{wxObjectRefData::\destruct{wxObjectRefData}} + +\func{}{wxObjectRefData}{\void} + +Destructor. + + diff --git a/docs/latex/wx/pagedlg.tex b/docs/latex/wx/pagedlg.tex new file mode 100644 index 0000000000..082970f2c0 --- /dev/null +++ b/docs/latex/wx/pagedlg.tex @@ -0,0 +1,242 @@ +\section{\class{wxPageSetupData}}\label{wxpagesetupdata} + +This class holds a variety of information related to \helpref{wxPageSetupDialog}{wxpagesetupdialog}. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxPageSetupDialog}{wxpagesetupdialog} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxPageSetupData::wxPageSetupData} + +\func{}{wxPageSetupData}{\void} + +Constructor. + +\membersection{wxPageSetupData::\destruct{wxPageSetupData}} + +\func{}{\destruct{wxPageSetupData}}{\void} + +Destructor. + +\membersection{wxPageSetupData::EnableHelp}\label{wxpagesetupdataenablehelp} + +\func{void}{EnableHelp}{\param{bool }{flag}} + +Enables or disables the `Help' button (Windows only). + +\membersection{wxPageSetupData::EnableMargins}\label{wxpagesetupdataenablemargins} + +\func{void}{EnableMargins}{\param{bool }{flag}} + +Enables or disables the margin controls (Windows only). + +\membersection{wxPageSetupData::EnableOrientation}\label{wxpagesetupdataenableorientation} + +\func{void}{EnableOrientation}{\param{bool }{flag}} + +Enables or disables the orientation control (Windows only). + +\membersection{wxPageSetupData::EnablePaper}\label{wxpagesetupdataenablepaper} + +\func{void}{EnablePaper}{\param{bool }{flag}} + +Enables or disables the paper size control (Windows only). + +\membersection{wxPageSetupData::EnablePrinter}\label{wxpagesetupdataenableprinter} + +\func{void}{EnablePrinter}{\param{bool }{flag}} + +Enables or disables the {\bf Printer} button, which invokes a printer setup dialog. + +\membersection{wxPageSetupData::GetPaperSize}\label{wxpagesetupdatagetpapersize} + +\func{wxPoint}{GetPaperSize}{\void} + +Returns the paper size in millimetres. + +\membersection{wxPageSetupData::GetMarginTopLeft}\label{wxpagesetupdatagetmargintopleft} + +\func{wxPoint}{GetMarginTopLeft}{\void} + +Returns the left (x) and top (y) margins. + +\membersection{wxPageSetupData::GetMarginBottomRight}\label{wxpagesetupdatagetmarginbottomright} + +\func{wxPoint}{GetMarginBottomRight}{\void} + +Returns the right (x) and bottom (y) margins. + +\membersection{wxPageSetupData::GetMinMarginTopLeft}\label{wxpagesetupdatagetminmargintopleft} + +\func{wxPoint}{GetMinMarginTopLeft}{\void} + +Returns the left (x) and top (y) minimum margins the user can enter (Windows only). + +\membersection{wxPageSetupData::GetMinMarginBottomRight}\label{wxpagesetupdatagetminmarginbottomright} + +\func{wxPoint}{GetMinMarginBottomRight}{\void} + +Returns the right (x) and bottom (y) minimum margins the user can enter (Windows only). + +\membersection{wxPageSetupData::GetOrientation}\label{wxpagesetupdatagetorientation} + +\func{int}{GetOrientation}{\void} + +Returns the orientation, which can be wxPORTRAIT or wxLANDSCAPE. + +\membersection{wxPageSetupData::GetDefaultMinMargins}\label{wxpagesetupdatagetdefaultminmargins} + +\func{bool}{GetDefaultMinMargins}{\void} + +Returns TRUE if the page setup dialog will take its minimum margin values from the currently +selected printer properties. Windows only. + +\membersection{wxPageSetupData::GetEnableMargins}\label{wxpagesetupdatagetenablemargins} + +\func{bool}{GetEnableMargins}{\void} + +Returns TRUE if the margin controls are enabled (Windows only). + +\membersection{wxPageSetupData::GetEnableOrientation}\label{wxpagesetupdatagetenableorientation} + +\func{bool}{GetEnableOrientation}{\void} + +Returns TRUE if the orientation control is enabled (Windows only). + +\membersection{wxPageSetupData::GetEnablePaper}\label{wxpagesetupdatagetenablepaper} + +\func{bool}{GetEnablePaper}{\void} + +Returns TRUE if the paper size control is enabled (Windows only). + +\membersection{wxPageSetupData::GetEnablePrinter}\label{wxpagesetupdatagetenableprinter} + +\func{bool}{GetEnablePrinter}{\void} + +Returns TRUE if the printer setup button is enabled. + +\membersection{wxPageSetupData::GetEnableHelp}\label{wxpagesetupdatagetenablehelp} + +\func{bool}{GetEnableHelp}{\void} + +Returns TRUE if the printer setup button is enabled. + +\membersection{wxPageSetupData::GetDefaultInfo}\label{wxpagesetupdatagetdefaultinfo} + +\func{bool}{GetDefaultInfo}{\void} + +Returns TRUE if the dialog will simply return default printer information (such as orientation) +instead of showing a dialog. Windows only. + +\membersection{wxPageSetupData::SetPaperSize}\label{wxpagesetupdatasetpapersize} + +\func{void}{SetPaperSize}{\param{const wxPoint\& }{size}} + +Sets the paper size in millimetres. + +\membersection{wxPageSetupData::SetMarginTopLeft}\label{wxpagesetupdatasetmargintopleft} + +\func{void}{GetMarginTopLeft}{\param{const wxPoint\& }{pt}} + +Sets the left (x) and top (y) margins. + +\membersection{wxPageSetupData::SetMarginBottomRight}\label{wxpagesetupdatasetmarginbottomright} + +\func{void}{SetMarginBottomRight}{\param{const wxPoint\& }{pt}} + +Sets the right (x) and bottom (y) margins. + +\membersection{wxPageSetupData::SetMinMarginTopLeft}\label{wxpagesetupdatasetminmargintopleft} + +\func{void}{SetMinMarginTopLeft}{\param{const wxPoint\& }{pt}} + +Sets the left (x) and top (y) minimum margins the user can enter (Windows only). + +\membersection{wxPageSetupData::SetMinMarginBottomRight}\label{wxpagesetupdatasetminmarginbottomright} + +\func{void}{SetMinMarginBottomRight}{\param{const wxPoint\& }{pt}} + +Sets the right (x) and bottom (y) minimum margins the user can enter (Windows only). + +\membersection{wxPageSetupData::SetOrientation}\label{wxpagesetupdatasetorientation} + +\func{void}{SetOrientation}{\param{int }{orientation}} + +Sets the orientation, which can be wxPORTRAIT or wxLANDSCAPE. + +\membersection{wxPageSetupData::SetDefaultMinMargins}\label{wxpagesetupdatasetdefaultminmargins} + +\func{void}{SetDefaultMinMargins}{\param{bool}{ flag}} + +Pass TRUE if the page setup dialog will take its minimum margin values from the currently +selected printer properties. Windows only. + +\membersection{wxPageSetupData::SetDefaultInfo}\label{wxpagesetupdatasetdefaultinfo} + +\func{void}{SetDefaultInfo}{\param{bool}{ flag}} + +Pass TRUE if the dialog will simply return default printer information (such as orientation) +instead of showing a dialog. Windows only. + +\section{\class{wxPageSetupDialog}}\label{wxpagesetupdialog} + +This class represents the page setup common dialog. The page setup dialog is standard from +Windows 95 on, replacing the print setup dialog (which is retained in Windows and wxWindows +for backward compatibility). On Windows 95 and NT 4.0 and above, the page setup dialog is +native to the windowing system, otherwise it is emulated. + +The page setup dialog contains controls for paper size (A4, A5 etc.), orientation (landscape +or portrait), and controls for setting left, top, right and bottom margin sizes in millimetres. +The page setup dialog does not set any global information (the exception being orientation +for PostScript printing) so you need to query the \helpref{wxPageSetupData}{wxpagesetupdata} object +associated with the dialog. + +Note that the OK and Cancel buttons do not destroy the dialog; this must be done by the +application. + +\wxheading{Derived from} + +\helpref{wxDialog}{wxdialog}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxPrintDialog}{wxprintdialog}, \helpref{wxPageSetupData}{wxpagesetupdata} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxPageSetupDialog::wxPageSetupDialog} + +\func{}{wxPageSetupDialog}{\param{wxWindow* }{parent}, \param{wxPageSetupData* }{data = NULL}} + +Constructor. Pass a parent window, and optionally a pointer to a block of page setup +data, which will be copied to the print dialog's internal data. + +\membersection{wxPageSetupDialog::\destruct{wxPageSetupDialog}} + +\func{}{\destruct{wxPageSetupDialog}}{\void} + +Destructor. + +\membersection{wxPageSetupDialog::GetPageSetupData}\label{wxpagesetupdialoggetpagesetupdata} + +\func{wxPageSetupData\&}{GetPageSetupData}{\void} + +Returns the \helpref{page setup data}{wxpagesetupdata} associated with the dialog. + +\membersection{wxPageSetupDialog::ShowModal}\label{wxpagesetupdialogshowmodal} + +\func{int}{ShowModal}{\void} + +Shows the dialog, returning wxID\_OK if the user pressed OK, and wxID\_CANCEL +otherwise. + + diff --git a/docs/latex/wx/paintdc.tex b/docs/latex/wx/paintdc.tex new file mode 100644 index 0000000000..e1c416044b --- /dev/null +++ b/docs/latex/wx/paintdc.tex @@ -0,0 +1,31 @@ +\section{\class{wxPaintDC}}\label{wxpaintdc} + +A wxPaintDC must be constructed if an application wishes to paint on the +client area of a window from within an {\bf OnPaint} event. +This should normally be constructed as a temporary stack object; don't store +a wxPaintDC object. + +To draw on a window from outside {\bf OnPaint}, construct a \helpref{wxClientDC}{wxclientdc} object. + +To draw on the whole window including decorations, construct a \helpref{wxWindowDC}{wxwindowdc} object +(Windows only). + +\wxheading{Derived from} + +\helpref{wxDC}{wxdc} + +\wxheading{See also} + +\helpref{wxDC}{wxdc}, \helpref{wxMemoryDC}{wxmemorydc}, \helpref{wxPaintDC}{wxpaintdc},\rtfsp +\helpref{wxWindowDC}{wxwindowdc}, \helpref{wxScreenDC}{wxscreendc} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxPaintDC::wxPaintDC} + +\func{}{wxPaintDC}{\param{wxWindow*}{ window}} + +Constructor. Pass a pointer to the window on which you wish to paint. + + + diff --git a/docs/latex/wx/paintevt.tex b/docs/latex/wx/paintevt.tex new file mode 100644 index 0000000000..b60f34bf16 --- /dev/null +++ b/docs/latex/wx/paintevt.tex @@ -0,0 +1,31 @@ +\section{\class{wxPaintEvent}}\label{wxpaintevent} + +A paint event is sent when a window's contents needs to be repainted. + +\wxheading{Derived from} + +\helpref{wxEvent}{wxevent}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Event table macros} + +To process a paint event, use this event handler macro to direct input to a member +function that takes a wxPaintEvent argument. + +\twocolwidtha{7cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf EVT\_PAINT(func)}}{Process a wxEVT\_PAINT event.} +\end{twocollist}% + +\wxheading{See also} + +\helpref{wxWindow::OnPaint}{wxwindowonpaint}, \helpref{Event handling overview}{eventhandlingoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxPaintEvent::wxPaintEvent} + +\func{}{wxPaintEvent}{\param{int }{id = 0}} + +Constructor. + diff --git a/docs/latex/wx/palette.tex b/docs/latex/wx/palette.tex new file mode 100644 index 0000000000..5bee9c9b6a --- /dev/null +++ b/docs/latex/wx/palette.tex @@ -0,0 +1,164 @@ +\section{\class{wxPalette}}\label{wxpalette} + +A palette is a table that maps pixel values to RGB colours. It allows the colours +of a low-depth bitmap, for example, to be mapped to the available colours in a display. + +TODO: topic overview for wxPalette. + +\wxheading{Derived from} + +\helpref{wxGDIObject}{wxgdiobject}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxDC::SetPalette}{wxdcsetpalette}, \helpref{wxBitmap}{wxbitmap} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxPalette::wxPalette}\label{wxpaletteconstr} + +\func{}{wxPalette}{\void} + +Default constructor. + +\func{}{wxPalette}{\param{const wxPalette\&}{ palette}} + +Copy constructor. This uses reference counting so is a cheap operation. + +\func{}{wxPalette}{\param{const wxPalette*}{ palette}} + +Copy constructor. This uses reference counting so is a cheap operation. + +\func{}{wxPalette}{\param{const int}{ n}, \param{const unsigned char* }{red},\\ + \param{const unsigned char* }{green}, \param{const unsigned char* }{blue}} + +Creates a palette from arrays of size {\it n}, one for each +red, blue or green component. + +\wxheading{Parameters} + +\docparam{palette}{A pointer or reference to the palette to copy.} + +\docparam{n}{The number of indices in the palette.} + +\docparam{red}{An array of red values.} + +\docparam{green}{An array of green values.} + +\docparam{blue}{An array of blue values.} + +\wxheading{See also} + +\helpref{wxPalette::Create}{wxpalettecreate} + +\membersection{wxPalette::\destruct{wxPalette}} + +\func{}{\destruct{wxPalette}}{\void} + +Destructor. + +\membersection{wxPalette::Create}\label{wxpalettecreate} + +\func{bool}{Create}{\param{const int}{ n}, \param{const unsigned char* }{red},\rtfsp + \param{const unsigned char* }{green}, \param{const unsigned char* }{blue}} + +Creates a palette from arrays of size {\it n}, one for each +red, blue or green component. + +\wxheading{Parameters} + +\docparam{n}{The number of indices in the palette.} + +\docparam{red}{An array of red values.} + +\docparam{green}{An array of green values.} + +\docparam{blue}{An array of blue values.} + +\wxheading{Return value} + +TRUE if the creation was successful, FALSE otherwise. + +\wxheading{See also} + +\helpref{wxPalette::wxPalette}{wxpaletteconstr} + +\membersection{wxPalette::GetPixel}\label{wxpalettegetpixel} + +\constfunc{int}{GetPixel}{\param{const unsigned char }{red}, \param{const unsigned char }{green},\rtfsp + \param{const unsigned char }{blue}} + +Returns a pixel value (index into the palette) for the given RGB values. + +\wxheading{Parameters} + +\docparam{red}{Red value.} + +\docparam{green}{Green value.} + +\docparam{blue}{Blue value.} + +\wxheading{Return value} + +The nearest palette index. + +\wxheading{See also} + +\helpref{wxPalette::GetRGB}{wxpalettegetrgb} + +\membersection{wxPalette::GetRGB}\label{wxpalettegetrgb} + +\constfunc{bool}{GetPixel}{\param{const int}{ pixel}, \param{const unsigned char* }{red}, \param{const unsigned char* }{green},\rtfsp + \param{const unsigned char* }{blue}} + +Returns RGB values for a given palette index. + +\wxheading{Parameters} + +\docparam{pixel}{The palette index.} + +\docparam{red}{Receives the red value.} + +\docparam{green}{Receives the green value.} + +\docparam{blue}{Receives the blue value.} + +\wxheading{Return value} + +TRUE if the operation was successful. + +\wxheading{See also} + +\helpref{wxPalette::GetPixel}{wxpalettegetpixel} + +\membersection{wxPalette::Ok}\label{wxpaletteok} + +\constfunc{bool}{Ok}{\void} + +Returns TRUE if palette data is present. + +\membersection{wxPalette::operator $=$}\label{wxpaletteassignment} + +\func{wxPalette\&}{operator $=$}{\param{const wxPalette\& }{palette}} + +Assignment operator, using reference counting. Returns a reference +to `this'. + +\membersection{wxPalette::operator $==$}\label{wxpaletteequals} + +\func{bool}{operator $==$}{\param{const wxPalette\& }{palette}} + +Equality operator. Two palettes are equal if they contain pointers +to the same underlying palette data. It does not compare each attribute, +so two independently-created palettes using the same parameters will +fail the test. + +\membersection{wxPalette::operator $!=$}\label{wxpalettenotequals} + +\func{bool}{operator $!=$}{\param{const wxPalette\& }{palette}} + +Inequality operator. Two palettes are not equal if they contain pointers +to different underlying palette data. It does not compare each attribute. + + diff --git a/docs/latex/wx/panel.tex b/docs/latex/wx/panel.tex new file mode 100644 index 0000000000..d5079ff631 --- /dev/null +++ b/docs/latex/wx/panel.tex @@ -0,0 +1,118 @@ +\section{\class{wxPanel}}\label{wxpanel} + +A panel is a window on which controls are placed. It is usually placed within a frame. +It contains minimal extra functionality over and above its parent class wxWindow; its main +purpose is to be similar in appearance and functionality to a dialog, but with the flexibility of +having any window as a parent. + +\wxheading{Derived from} + +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +There are no specific styles for this window. + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{Remarks} + +By default, a panel has the same colouring as a dialog. + +A panel may be loaded from a wxWindows resource file (extension {\tt wxr}). + +\wxheading{See also} + +\helpref{wxDialog}{wxdialog} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxPanel::wxPanel}\label{wxpanelconstr} + +\func{}{wxPanel}{\void} + +Default constructor. + +\func{}{wxPanel}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id},\rtfsp +\param{const wxPoint\& }{pos = wxDefaultPosition},\rtfsp +\param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long}{ style = wxTAB\_TRAVERSAL},\rtfsp +\param{const wxString\& }{name = ``panel"}} + +Constructor. + +\wxheading{Parameters} + +\docparam{parent}{The parent window.} + +\docparam{id}{An identifier for the panel. A value of -1 is taken to mean a default.} + +\docparam{pos}{The panel position. A value of (-1, -1) indicates a default position, chosen by +either the windowing system or wxWindows, depending on platform.} + +\docparam{size}{The panel size. A value of (-1, -1) indicates a default size, chosen by +either the windowing system or wxWindows, depending on platform.} + +\docparam{style}{The window style. See \helpref{wxPanel}{wxpanel}.} + +\docparam{name}{Used to associate a name with the window, +allowing the application user to set Motif resource values for +individual dialog boxes.} + +\wxheading{See also} + +\helpref{wxPanel::Create}{wxpanelcreate} + +\membersection{wxPanel::\destruct{wxPanel}} + +\func{}{\destruct{wxPanel}}{\void} + +Destructor. Deletes any child windows before deleting the physical window. + +\membersection{wxPanel::Create}\label{wxpanelcreate} + +\func{bool}{Create}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id},\rtfsp +\param{const wxPoint\& }{pos = wxDefaultPosition},\rtfsp +\param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long}{ style = wxTAB\_TRAVERSAL},\rtfsp +\param{const wxString\& }{name = ``panel"}} + +Used for two-step panel construction. See \helpref{wxPanel::wxPanel}{wxpanelconstr}\rtfsp +for details. + +\membersection{wxPanel::InitDialog}\label{wxpanelinitdialog} + +\func{void}{InitDialog}{\void} + +Sends an \helpref{wxWindow::OnInitDialog}{wxwindowoninitdialog} event, which +in turn transfers data to the dialog via validators. + +\wxheading{See also} + +\helpref{wxWindow::OnInitDialog}{wxwindowoninitdialog} + +\membersection{wxPanel::OnSysColourChanged}\label{wxpanelonsyscolourchanged} + +\func{void}{OnSysColourChanged}{\param{wxSysColourChangedEvent\& }{event}} + +The default handler for wxEVT\_SYS\_COLOUR\_CHANGED. + +\wxheading{Parameters} + +\docparam{event}{The colour change event.} + +\wxheading{Remarks} + +Changes the panel's colour to conform to the current settings (Windows only). +Add an event table entry for your panel class if you wish the behaviour +to be different (such as keeping a user-defined +background colour). If you do override this function, call \helpref{wxWindow::OnSysColourChanged}{wxwindowonsyscolourchanged} to +propagate the notification to child windows and controls. + +\wxheading{See also} + +\helpref{wxSysColourChangedEvent}{wxsyscolourchangedevent} + + diff --git a/docs/latex/wx/pantabv.tex b/docs/latex/wx/pantabv.tex new file mode 100644 index 0000000000..69e9cc8546 --- /dev/null +++ b/docs/latex/wx/pantabv.tex @@ -0,0 +1,69 @@ +\section{\class{wxPanelTabView}}\label{wxpaneltabview} + +The wxPanelTabView is responsible for input and output on a wxPanel. + +\wxheading{Derived from} + +\helpref{wxTabView}{wxtabview}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxTabView overview}{wxtabviewoverview}, \helpref{wxTabView}{wxtabview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxPanelTabView::wxPanelTabView}\label{wxpaneltabviewconstr} + +\func{void}{wxPanelTabView}{\param{wxPanel *}{panel}, \param{long }{style = wxTAB\_STYLE\_DRAW\_BOX \pipe wxTAB\_STYLE\_COLOUR\_INTERIOR}} + +Constructor. {\it panel} should be a wxTabbedPanel or wxTabbedDialog: the type will be checked by the view at run time. + +{\it style} may be a bit list of the following: + +\begin{twocollist}\itemsep=0pt +\twocolitem{wxTAB\_STYLE\_DRAW\_BOX}{Draw a box around the view area. Most commonly used for dialogs.} +\twocolitem{wxTAB\_STYLE\_COLOUR\_INTERIOR}{Draw tab backgrounds in the specified colour. Omitting this style +will ensure that the tab background matches the dialog background.} +\end{twocollist} + +\membersection{wxPanelTabView::\destruct{wxPanelTabView}} + +\func{void}{\destruct{wxPanelTabView}}{\void} + +Destructor. This destructor deletes all the panels associated with the view. +If you do not wish this to happen, call ClearWindows with argument FALSE before the +view is likely to be destroyed. This will clear the list of windows, without deleting them. + +\membersection{wxPanelTabView::AddTabWindow}\label{wxpaneltabviewaddtabwindow} + +\func{void}{AddTabPanel}{\param{int}{ id}, \param{wxWindow *}{window}} + +Adds a window to the view. The window is associated with the tab identifier, and will be shown or hidden as the tab +is selected or deselected. + +\membersection{wxPanelTabView::ClearWindows} + +\func{void}{ClearWindows}{\param{bool}{ deleteWindows = TRUE}} + +Removes the child windows from the view. If {\it deleteWindows} is TRUE, the windows will be deleted. + +\membersection{wxPanelTabView::GetCurrentWindow} + +\func{wxPanel *}{GetCurrentWindow}{\void} + +Returns the child window currently being displayed on the tabbed panel or dialog box. + +\membersection{wxPanelTabView::GetTabWindow} + +\func{wxWindow *}{GetTabWindow}{\param{int}{ id}} + +Returns the window associated with the tab identifier. + +\membersection{wxPanelTabView::ShowWindowForTab} + +\func{void}{ShowWindowForTab}{\param{int}{ id}} + +Shows the child window corresponding to the tab identifier, and hides the previously shown window. + + diff --git a/docs/latex/wx/pathlist.tex b/docs/latex/wx/pathlist.tex new file mode 100644 index 0000000000..8310d24e3f --- /dev/null +++ b/docs/latex/wx/pathlist.tex @@ -0,0 +1,75 @@ +\section{\class{wxPathList}}\label{wxpathlist} + +The path list is a convenient way of storing a number of directories, and +when presented with a filename without a directory, searching for an existing file +in those directories. Storing the filename only in an application's files and +using a locally-defined list of directories makes the application and its files more +portable. + +Use the {\it wxFileNameFromPath} global function to extract the filename +from the path. + +\wxheading{Derived from} + +\helpref{wxList}{wxlist}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxList}{wxlist} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxPathList::wxPathList} + +\func{}{wxPathList}{\void} + +Constructor. + +\membersection{wxPathList::AddEnvList} + +\func{void}{AddEnvList}{\param{const wxString\& }{env\_variable}} + +Finds the value of the given environment variable, and adds all paths +to the path list. Useful for finding files in the PATH variable, for +example. + +\membersection{wxPathList::Add} + +\func{void}{Add}{\param{const wxString\& }{path}} + +Adds the given directory to the path list, but does not +check if the path was already on the list (use wxPathList::Member) +for this). + +\membersection{wxPathList::EnsureFileAccessible} + +\func{void}{EnsureFileAccessible}{\param{const wxString\& }{filename}} + +Given a full filename (with path), ensures that files in the same path +can be accessed using the pathlist. It does this by stripping the +filename and adding the path to the list if not already there. + +\membersection{wxPathList::FindAbsoluteValidPath} + +\func{wxString}{FindAbsoluteValidPath}{\param{const wxString\& }{file}} + +Searches for a full path for an existing file by appending {\it file} to +successive members of the path list. If the file exists, a temporary +pointer to the absolute path is returned. + +\membersection{wxPathList::FindValidPath} + +\func{wxString}{FindValidPath}{\param{const wxString\& }{file}} + +Searches for a full path for an existing file by appending {\it file} to +successive members of the path list. If the file exists, a temporary +pointer to the full path is returned. This path may be relative to the current +working directory. + +\membersection{wxPathList::Member} + +\func{bool}{Member}{\param{const wxString\& }{file}} + +TRUE if the path is in the path list (ignoring case). + diff --git a/docs/latex/wx/pen.tex b/docs/latex/wx/pen.tex new file mode 100644 index 0000000000..53ab713835 --- /dev/null +++ b/docs/latex/wx/pen.tex @@ -0,0 +1,380 @@ +\section{\class{wxPen}}\label{wxpen} + +A pen is a drawing tool for drawing outlines. It is used for drawing +lines and painting the outline of rectangles, ellipses, etc. It has a +colour, a width and a style. + +\wxheading{Remarks} + +On a monochrome display, wxWindows shows all non-white pens as black. + +Do not initialize objects on the stack before the program commences, +since other required structures may not have been set up yet. Instead, +define global pointers to objects and create them in {\it OnInit} or +when required. + +An application may wish to dynamically create pens with different +characteristics, and there is the consequent danger that a large number +of duplicate pens will be created. Therefore an application may wish to +get a pointer to a pen by using the global list of pens {\bf +wxThePenList}, and calling the member function {\bf FindOrCreatePen}. +See the entry for \helpref{wxPenList}{wxpenlist}. + +TODO: an overview for wxPen. + +\wxheading{See also} + +\helpref{wxPenList}{wxpenlist}, \helpref{wxDC}{wxdc}, \helpref{wxDC::SetPen}{wxdcsetpen} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxPen::wxPen}\label{wxpenconstr} + +\func{}{wxPen}{\void} + +Default constructor. The pen will be uninitialised, and \helpref{wxPen::Ok}{wxpenok} will +return FALSE. + +\func{}{wxPen}{\param{const wxColour\&}{ colour}, \param{const int}{ width}, \param{const int}{ style}} + +Constructs a pen from a colour object, pen width and style. + +\func{}{wxPen}{\param{const wxString\& }{colourName}, \param{const int}{ width}, \param{const int}{ style}} + +Constructs a pen from a colour name, pen width and style. + +\func{}{wxPen}{\param{const wxBitmap\&}{ stipple}, \param{const int}{ width}} + +Constructs a stippled pen from a stipple bitmap and a width. + +\func{}{wxPen}{\param{const wxPen\&}{ pen}} + +Copy constructor. This uses reference counting so is a cheap operation. + +\func{}{wxPen}{\param{const wxPen*}{ pen}} + +Copy constructor. This uses reference counting so is a cheap operation. + +\wxheading{Parameters} + +\docparam{colour}{A colour object.} + +\docparam{colourName}{A colour name.} + +\docparam{width}{Pen width. Under Windows, the pen width cannot be greater than 1 if +the style is wxDOT, wxLONG\_DASH, wxSHORT\_DASH, wxDOT\_DASH, or wxUSER\_DASH.} + +\docparam{stipple}{A stipple bitmap.} + +\docparam{pen}{A pointer or reference to a pen to copy.} + +\docparam{width}{Pen width. Under Windows, the pen width cannot be greater than 1 if +the style is wxDOT, wxLONG\_DASH, wxSHORT\_DASH, wxDOT\_DASH, or wxUSER\_DASH.} + +\docparam{style}{The style may be one of the following: + +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf wxSOLID}}{Solid style.} +\twocolitem{{\bf wxTRANSPARENT}}{No pen is used.} +\twocolitem{{\bf wxDOT}}{Dotted style.} +\twocolitem{{\bf wxLONG\_DASH}}{Long dashed style.} +\twocolitem{{\bf wxSHORT\_DASH}}{Short dashed style.} +\twocolitem{{\bf wxDOT\_DASH}}{Dot and dash style.} +\twocolitem{{\bf wxSTIPPLE}}{Use the stipple bitmap.} +\twocolitem{{\bf wxUSER\_DASH}}{Use the user dashes: see \helpref{wxPen::SetDashes}{wxpensetdashes}.} +\twocolitem{{\bf wxBDIAGONAL\_HATCH}}{Backward diagonal hatch.} +\twocolitem{{\bf wxCROSSDIAG\_HATCH}}{Cross-diagonal hatch.} +\twocolitem{{\bf wxFDIAGONAL\_HATCH}}{Forward diagonal hatch.} +\twocolitem{{\bf wxCROSS\_HATCH}}{Cross hatch.} +\twocolitem{{\bf wxHORIZONTAL\_HATCH}}{Horizontal hatch.} +\twocolitem{{\bf wxVERTICAL\_HATCH}}{Vertical hatch.} +\end{twocollist}} + +\wxheading{Remarks} + +If the named colour form is used, an appropriate {\bf wxColour} structure +is found in the colour database. + +{\it style} may be one of wxSOLID, wxDOT, wxLONG\_DASH, wxSHORT\_DASH and +wxDOT\_DASH. + +\wxheading{See also} + +\helpref{wxPen::SetStyle}{wxpensetstyle}, \helpref{wxPen::SetColour}{wxpensetcolour},\rtfsp +\helpref{wxPen::SetWidth}{wxpensetwidth}, \helpref{wxPen::SetStipple}{wxpensetstipple} + +\membersection{wxPen::\destruct{wxPen}} + +\func{}{\destruct{wxPen}}{\void} + +Destructor. + +\wxheading{Remarks} + +The destructor may not delete the underlying pen object of the native windowing +system, since wxBrush uses a reference counting system for efficiency. + +Although all remaining pens are deleted when the application exits, +the application should try to clean up all pens itself. This is because +wxWindows cannot know if a pointer to the pen object is stored in an +application data structure, and there is a risk of double deletion. + +\membersection{wxPen::GetCap}\label{wxpengetcap} + +\constfunc{int}{GetCap}{\void} + +Returns the pen cap style, which may be one of {\bf wxCAP\_ROUND}, {\bf wxCAP\_PROJECTING} and +\rtfsp{\bf wxCAP\_BUTT}. The default is {\bf wxCAP\_ROUND}. + +\wxheading{See also} + +\helpref{wxPen::SetCap}{wxpensetcap} + +\membersection{wxPen::GetColour}\label{wxpengetcolour} + +\constfunc{wxColour\&}{GetColour}{\void} + +Returns a reference to the pen colour. + +\wxheading{See also} + +\helpref{wxPen::SetColour}{wxpensetcolour} + +\membersection{wxPen::GetDashes}\label{wxpengetdashes} + +\constfunc{int}{GetDashes}{\param{wxDash**}{ dashes}} + +Gets an array of dashes (defined as char in X, DWORD under Windows). +{\it dashes} is a pointer to the internal array. Do not deallocate or store this pointer. +The function returns the number of dashes associated with this pen. + +\wxheading{See also} + +\helpref{wxPen::SetDashes}{wxpensetdashes} + +\membersection{wxPen::GetJoin}\label{wxpengetjoin} + +\constfunc{int}{GetJoin}{\void} + +Returns the pen join style, which may be one of {\bf wxJOIN\_BEVEL}, {\bf wxJOIN\_ROUND} and +\rtfsp{\bf wxJOIN\_MITER}. The default is {\bf wxJOIN\_ROUND}. + +\wxheading{See also} + +\helpref{wxPen::SetJoin}{wxpensetjoin} + +\membersection{wxPen::GetStipple}\label{wxpengetstipple} + +\constfunc{wxBitmap* }{GetStipple}{\void} + +Gets a pointer to the stipple bitmap. + +\wxheading{See also} + +\helpref{wxPen::SetStipple}{wxpensetstipple} + +\membersection{wxPen::GetStyle}\label{wxpengetstyle} + +\constfunc{int}{GetStyle}{\void} + +Returns the pen style. + +\wxheading{See also} + +\helpref{wxPen::wxPen}{wxpenconstr}, \helpref{wxPen::SetStyle}{wxpensetstyle} + +\membersection{wxPen::GetWidth}\label{wxpengetwidth} + +\constfunc{int}{GetWidth}{\void} + +Returns the pen width. + +\wxheading{See also} + +\helpref{wxPen::SetWidth}{wxpensetwidth} + +\membersection{wxPen::Ok}\label{wxpenok} + +\constfunc{bool}{Ok}{\void} + +Returns TRUE if the pen is initialised. + +\membersection{wxPen::SetCap}\label{wxpensetcap} + +\func{void}{SetCap}{\param{int}{ capStyle}} + +Sets the pen cap style, which may be one of {\bf wxCAP\_ROUND}, {\bf wxCAP\_PROJECTING} and +\rtfsp{\bf wxCAP\_BUTT}. The default is {\bf wxCAP\_ROUND}. + +\wxheading{See also} + +\helpref{wxPen::GetCap}{wxpengetcap} + +\membersection{wxPen::SetColour}\label{wxpensetcolour} + +\func{void}{SetColour}{\param{wxColour\&}{ colour}} + +\func{void}{SetColour}{\param{const wxString\& }{colourName}} + +\func{void}{SetColour}{\param{const int}{ red}, \param{const int}{ green}, \param{const int}{ blue}} + +The pen's colour is changed to the given colour. + +\wxheading{See also} + +\helpref{wxPen::GetColour}{wxpengetcolour} + +\membersection{wxPen::SetDashes}\label{wxpensetdashes} + +\func{void}{SetDashes}{\param{int }{n}, \param{wxDash*}{ dashes}} + +Associates an array of pointers to dashes (defined as char in X, DWORD under Windows) +with the pen. The array is not deallocated by wxPen, but neither must it be +deallocated by the calling application until the pen is deleted or this +function is called with a NULL array. + +TODO: describe in detail. + +\wxheading{See also} + +\helpref{wxPen::GetDashes}{wxpengetdashes} + +\membersection{wxPen::SetJoin}\label{wxpensetjoin} + +\func{void}{SetJoin}{\param{int}{join\_style}} + +Sets the pen join style, which may be one of {\bf wxJOIN\_BEVEL}, {\bf wxJOIN\_ROUND} and +\rtfsp{\bf wxJOIN\_MITER}. The default is {\bf wxJOIN\_ROUND}. + +\wxheading{See also} + +\helpref{wxPen::GetJoin}{wxpengetjoin} + +\membersection{wxPen::SetStipple}\label{wxpensetstipple} + +\func{void}{SetStipple}{\param{wxBitmap* }{stipple}} + +Sets the bitmap for stippling. + +\wxheading{See also} + +\helpref{wxPen::GetStipple}{wxpengetstipple} + +\membersection{wxPen::SetStyle}\label{wxpensetstyle} + +\func{void}{SetStyle}{\param{int}{ style}} + +Set the pen style. + +\wxheading{See also} + +\helpref{wxPen::wxPen}{wxpenconstr} + +\membersection{wxPen::SetWidth}\label{wxpensetwidth} + +\func{void}{SetWidth}{\param{const int}{ width}} + +Sets the pen width. + +\wxheading{See also} + +\helpref{wxPen::GetWidth}{wxpengetwidth} + +\membersection{wxPen::operator $=$}\label{wxpenassignment} + +\func{wxPen\&}{operator $=$}{\param{const wxPen\& }{pen}} + +Assignment operator, using reference counting. Returns a reference +to `this'. + +\membersection{wxPen::operator $==$}\label{wxpenequals} + +\func{bool}{operator $==$}{\param{const wxPen\& }{pen}} + +Equality operator. Two pens are equal if they contain pointers +to the same underlying pen data. It does not compare each attribute, +so two independently-created pens using the same parameters will +fail the test. + +\membersection{wxPen::operator $!=$}\label{wxpennotequals} + +\func{bool}{operator $!=$}{\param{const wxPen\& }{pen}} + +Inequality operator. Two pens are not equal if they contain pointers +to different underlying pen data. It does not compare each attribute. + +\section{\class{wxPenList}}\label{wxpenlist} + +There is only one instance of this class: {\bf wxThePenList}. Use +this object to search for a previously created pen of the desired +type and create it if not already found. In some windowing systems, +the pen may be a scarce resource, so it can pay to reuse old +resources if possible. When an application finishes, all pens will +be deleted and their resources freed, eliminating the possibility of +`memory leaks'. However, it is best not to rely on this automatic +cleanup because it can lead to double deletion in some circumstances. + +There are two mechanisms in recent versions of wxWindows which make the +pen list less useful than it once was. Under Windows, scarce resources +are cleaned up internally if they are not being used. Also, a referencing +counting mechanism applied to all GDI objects means that some sharing +of underlying resources is possible. You don't have to keep track of pointers, +working out when it is safe delete a pen, because the referencing counting does +it for you. For example, you can set a pen in a device context, and then +immediately delete the pen you passed, because the pen is `copied'. + +So you may find it easier to ignore the pen list, and instead create +and copy pens as you see fit. If your Windows resource meter suggests +your application is using too many resources, you can resort to using +GDI lists to share objects explicitly. + +The only compelling use for the pen list is for wxWindows to keep +track of pens in order to clean them up on exit. It is also kept for +backward compatibility with earlier versions of wxWindows. + +\wxheading{See also} + +\helpref{wxPen}{wxpen} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxPenList::wxPenList} + +\func{void}{wxPenList}{\void} + +Constructor. The application should not construct its own pen list: +use the object pointer {\bf wxThePenList}. + +\membersection{wxPenList::AddPen}\label{wxpenlistaddpen} + +\func{void}{AddPen}{\param{wxPen*}{ pen}} + +Used internally by wxWindows to add a pen to the list. + +\membersection{wxPenList::FindOrCreatePen}\label{wxpenlistfindorcreatepen} + +\func{wxPen*}{FindOrCreatePen}{\param{const wxColour\& }{colour}, \param{const int}{ width}, \param{const int}{ style}} + +Finds a pen with the specified attributes and returns it, else creates a new pen, adds it +to the pen list, and returns it. + +\func{wxPen*}{FindOrCreatePen}{\param{const wxString\& }{colourName}, \param{const int}{ width}, \param{const int}{ style}} + +Finds a pen with the specified attributes and returns it, else creates a new pen, adds it +to the pen list, and returns it. + +\wxheading{Parameters} + +\docparam{colour}{Colour object.} + +\docparam{colourName}{Colour name, which should be in the colour database.} + +\docparam{style}{Pen style. See \helpref{wxPen::wxPen}{wxpenconstr} for a list of styles.} + +\membersection{wxPenList::RemovePen}\label{wxpenlistremovepen} + +\func{void}{RemovePen}{\param{wxPen*}{ pen}} + +Used by wxWindows to remove a pen from the list. + + diff --git a/docs/latex/wx/plug.bmp b/docs/latex/wx/plug.bmp new file mode 100644 index 0000000000000000000000000000000000000000..3193b2066a1d79056a0715b5646873c344b35e9d GIT binary patch literal 2102 zcmbW0e^kwP7{^~1^CQkNCX8;HA6v6Yii%57fxOXyLZhiOpeD5u{bJ8Ds?)`kf&*ynR&--~k&*%9L9O=^- zReTzNyU^V1OM@K{_G-}xO)gb(K>W$cvAx7os2Gh#j73IFd8y>*=R?Iarug5%QfVZ@ zu!##wC5CZ*P_j01*lHE4oXqkvGRjP(n@UM9Eg`MsHmSFZNhvNOrKphP!pj&g7hotj zN7A`G67q71&ovTnJVxBH!^9rWM4y>~J|mr&^faQ=Qi)1UAu1)A$YcXLLlU~A1i}*H z35|~VF?lG+!BLTnj?@vP3nMTrl)%ss28T@M#v^&ySQakY!1DDc zSasl@sG$|x@4e4=4a3Rm^c6;bBfn00z?G$~xw&ZorI|XOUf4vvhbM7r`ZsOe+tO*s zAUvkeqxYwq8JwKUsO(2fywZ-DkB1QXY9!0LZDHl`pGll$COOuH-8%yK{=@=~U)xGv zc^;RXA9KUYm3yOxQKpMRS+yOfU1xDV^#r$KH{Pijfls@|4Dj7SQ1Cg%&wtAFwH=we zcO=ny(R^`dCu{5Fv$=zX)V`fLFkuu&7BA)WhHojzDB#-p=iI&jCgw(Cuy&52(SY5w z{P-f;Wfiy^-0{x(kp35!GwjhGf}34t>e~w8L%XtQ##q*D-OI)!SJ?4~hV-&`In-i2 zCp|vr{D^%Nh86PXiuyeK#sf>v1R4~@(%f=@cCD|{#rqXJM|<+#+(`^wy^=Az4>CEo zh*>uqv7pk6Pufo*&M%G)V}D@Vf*b5v*M!XUp5**8m9uwO^Lza)irtEN(61@~PV_;u zWE#zq;%Rg65FPVx(d~f~evSPY)MW-A3|z~Eso8|a+$LgkbC&+thZUD*l3+?;i_=kd zb-l~MfEFAJ?aP_ZW^r-bdafTmPDx=2kDt6oWy}6F={}oQK}mF&okQ1^_vy9M8GoZc zBd*V3+_Q~LYx5Jjo~0}q(}vII4dlx;b1|eD*m?RC`)@rYTX~&am%;qjJA$j@zUI!t z)0h%WJm1%zhG&P;;;;F*G)U&HH_qVI{~!8I(h?XQh}P8ut&bPoUAxoG&zT;+y@V}5 z*oNccI}b0{AUw6<80xh18T3^m@IRc}4vTN2!S=e$piOb&1(*t_xNafeXHx;us-u$Gy;N z>}$u(l2E2r^P^~lh)DH?A}FQC%W#px;)vJCsAjJl7yK4MP|YtpRV|_nvtp}HsT%MrHp?2JXp@xGDw{@;o1{-Yait11`OtumvtX`ISsu~W$uAps translator used. +% History: +% 1.31: adds \psforDVIALW(?) +% 1.30: adds \splitfile & \joinfiles for multi-file management +% 1.24: fix error handling & add \psonlyboxes +% 1.23: adds \putsp@ce for OzTeX fix +% 1.22: makes \drawingBox \global for use in Phyzzx +% 1.21: accepts %%BoundingBox: (atend) +% 1.20: tries to add \psfordvitps for the TeXPS package. +% 1.10: adds \psforoztex, error handling... +%2345678 1 2345678 2 2345678 3 2345678 4 2345678 5 2345678 6 2345678 7 23456789 +% +\def\temp{1.31} +\let\tempp=\relax +\expandafter\ifx\csname psboxversion\endcsname\relax + \message{version: \temp} +\else + \ifdim\temp cm>\psboxversion cm + \message{version: \temp} + \else + \message{psbox(\psboxversion) is already loaded: I won't load + psbox(\temp)!} + \let\temp=\psboxversion + \let\tempp=\endinput + \fi +\fi +\tempp +\let\psboxversion=\temp +\catcode`\@=11 +% Every macro likes a little privacy... +% +% Some common defs +% +\def\execute#1{#1}% NOT stupid: cs in #1 are then identified BEFORE execution +\def\psm@keother#1{\catcode`#112\relax}% borrowed from latex +\def\executeinspecs#1{% +\execute{\begingroup\let\do\psm@keother\dospecials\catcode`\^^M=9#1\endgroup}} +% +%Trying to tame the variety of \special commands for Postscript: the +% universal internal command \PSspeci@l##1##2 takes ##1 to be the +% filename and ##2 to be the integer scale factor*1000 (as for usual +% TeX \scale commands) +% +\def\psfortextures{% For TeXtures on the Macintosh +%----------------- +\def\PSspeci@l##1##2{% +\special{illustration ##1\space scaled ##2}% +}} +% +\def\psfordvitops{% For the DVItoPS converter on IBM mainframes +%---------------- +\def\PSspeci@l##1##2{% +\special{dvitops: import ##1\space \the\drawingwd \the\drawinght}% +}} +% +\def\psfordvips{% For DVIPS converter on VAX, UNIX and PC's +%-------------- +\def\PSspeci@l##1##2{% +% \special{/@scaleunit 1000 def}% never read dox without trying! +\d@my=0.1bp \d@mx=\drawingwd \divide\d@mx by\d@my% +\special{PSfile=##1\space llx=\psllx\space lly=\pslly\space% +urx=\psurx\space ury=\psury\space rwi=\number\d@mx}% +}} +% +\def\psforoztex{% For the OzTeX shareware on the Macintosh +%-------------- +\def\PSspeci@l##1##2{% +\special{##1 \space + ##2 1000 div dup scale + \putsp@ce{\number-\psllx} \putsp@ce{\number-\pslly} translate +}% +}} +\def\putsp@ce#1{#1 } +% +\def\psfordvitps{% From the UNIX TeXPS package, vers.>3.12 +%--------------- +% Convert a dimension into the number \psn@sp (in scaled points) +\def\psdimt@n@sp##1{\d@mx=##1\relax\edef\psn@sp{\number\d@mx}} +\def\PSspeci@l##1##2{% +% psfig.psr contains the def of "startTexFig": if you can locate it +% and include the correct pathname, it should work +\special{dvitps: Include0 "psfig.psr"}% contains def of "startTexFig" +\psdimt@n@sp{\drawingwd} +\special{dvitps: Literal "\psn@sp\space"} +\psdimt@n@sp{\drawinght} +\special{dvitps: Literal "\psn@sp\space"} +\psdimt@n@sp{\psllx bp} +\special{dvitps: Literal "\psn@sp\space"} +\psdimt@n@sp{\pslly bp} +\special{dvitps: Literal "\psn@sp\space"} +\psdimt@n@sp{\psurx bp} +\special{dvitps: Literal "\psn@sp\space"} +\psdimt@n@sp{\psury bp} +\special{dvitps: Literal "\psn@sp\space startTexFig\space"} +\special{dvitps: Include1 "##1"} +\special{dvitps: Literal "endTexFig\space"} +}} +\def\psforDVIALW{% Try for dvialw, a UNIX public domain +%--------------- +\def\PSspeci@l##1##2{ +\special{language "PS" +literal "##2 1000 div dup scale" +include "##1"}}} +\def\psonlyboxes{% Draft-like behaviour if none of the others works +%--------------- +\def\PSspeci@l##1##2{% +\at(0cm;0cm){\boxit{\vbox to\drawinght + {\vss + \hbox to\drawingwd{\at(0cm;0cm){\hbox{(##1)}}\hss} + }}} +}% +} +% +\def\psloc@lerr#1{% +\let\savedPSspeci@l=\PSspeci@l% +\def\PSspeci@l##1##2{% +\at(0cm;0cm){\boxit{\vbox to\drawinght + {\vss + \hbox to\drawingwd{\at(0cm;0cm){\hbox{(##1) #1}}\hss} + }}} +\let\PSspeci@l=\savedPSspeci@l% restore normal output for other figs! +}% +} +% +%\def\psfor... add your own! +% +% \ReadPSize{PSfilename} reads the dimensions of a PostScript drawing +% and stores it in \drawinght(wd) +\newread\pst@mpin +\newdimen\drawinght\newdimen\drawingwd +\newdimen\psxoffset\newdimen\psyoffset +\newbox\drawingBox +\newif\ifNotB@undingBox +\newhelp\PShelp{Proceed: you'll have a 5cm square blank box instead of +your graphics (Jean Orloff).} +\def\@mpty{} +\def\s@tsize#1 #2 #3 #4\@ndsize{ + \def\psllx{#1}\def\pslly{#2}% + \def\psurx{#3}\def\psury{#4}% needed by a crazyness of dvips! + \ifx\psurx\@mpty\NotB@undingBoxtrue% this is not a valid one! + \else + \drawinght=#4bp\advance\drawinght by-#2bp + \drawingwd=#3bp\advance\drawingwd by-#1bp +% !Units related by crazy factors as bp/pt=72.27/72 should be BANNED! + \fi + } +\def\sc@nline#1:#2\@ndline{\edef\p@rameter{#1}\edef\v@lue{#2}} +\def\g@bblefirstblank#1#2:{\ifx#1 \else#1\fi#2} +\def\psm@keother#1{\catcode`#112\relax}% borrowed from latex +\def\execute#1{#1}% Seems stupid, but cs are identified BEFORE execution +{\catcode`\%=12 +\xdef\B@undingBox{%%BoundingBox} +} %% is not a true comment in PostScript, even if % is! +\def\ReadPSize#1{ + \edef\PSfilename{#1} + \openin\pst@mpin=#1\relax + \ifeof\pst@mpin \errhelp=\PShelp + \errmessage{I haven't found your postscript file (\PSfilename)} + \psloc@lerr{was not found} + \s@tsize 0 0 142 142\@ndsize + \closein\pst@mpin + \else + \immediate\write\psbj@inaux{#1,} + \loop + \executeinspecs{\catcode`\ =10\global\read\pst@mpin to\n@xtline} + \ifeof\pst@mpin + \errhelp=\PShelp + \errmessage{(\PSfilename) is not an Encapsulated PostScript File: + I could not find any \B@undingBox: line.} + \edef\v@lue{0 0 142 142:} + \psloc@lerr{is not an EPSFile} + \NotB@undingBoxfalse + \else + \expandafter\sc@nline\n@xtline:\@ndline + \ifx\p@rameter\B@undingBox\NotB@undingBoxfalse + \edef\t@mp{% + \expandafter\g@bblefirstblank\v@lue\space\space\space} + \expandafter\s@tsize\t@mp\@ndsize + \else\NotB@undingBoxtrue + \fi + \fi + \ifNotB@undingBox\repeat + \closein\pst@mpin + \fi +\message{#1} +} +% +% \psboxto(xdim;ydim){psfilename}: you specify the dimensions and +% TeX uniformly scales to fit the largest one. If xdim=0pt, the +% scale is fully determined by ydim and vice versa. +% Notice: psboxes are a real vboxes; couldn't take hbox otherwise all +% indentation and all cr's would be interpreted as spaces (hugh!). +% +\newcount\xscale \newcount\yscale \newdimen\pscm\pscm=1cm +\newdimen\d@mx \newdimen\d@my +\let\ps@nnotation=\relax +\def\psboxto(#1;#2)#3{\vbox{ + \ReadPSize{#3} + \divide\drawingwd by 1000 + \divide\drawinght by 1000 + \d@mx=#1 + \ifdim\d@mx=0pt\xscale=1000 + \else \xscale=\d@mx \divide \xscale by \drawingwd\fi + \d@my=#2 + \ifdim\d@my=0pt\yscale=1000 + \else \yscale=\d@my \divide \yscale by \drawinght\fi + \ifnum\yscale=1000 + \else\ifnum\xscale=1000\xscale=\yscale + \else\ifnum\yscale<\xscale\xscale=\yscale\fi + \fi + \fi + \divide \psxoffset by 1000\multiply\psxoffset by \xscale + \divide \psyoffset by 1000\multiply\psyoffset by \xscale + \global\divide\pscm by 1000 + \global\multiply\pscm by\xscale + \multiply\drawingwd by\xscale \multiply\drawinght by\xscale + \ifdim\d@mx=0pt\d@mx=\drawingwd\fi + \ifdim\d@my=0pt\d@my=\drawinght\fi + \message{scaled \the\xscale} + \hbox to\d@mx{\hss\vbox to\d@my{\vss + \global\setbox\drawingBox=\hbox to 0pt{\kern\psxoffset\vbox to 0pt{ + \kern-\psyoffset + \PSspeci@l{\PSfilename}{\the\xscale} + \vss}\hss\ps@nnotation} + \global\ht\drawingBox=\the\drawinght + \global\wd\drawingBox=\the\drawingwd + \baselineskip=0pt + \copy\drawingBox + \vss}\hss} + \global\psxoffset=0pt + \global\psyoffset=0pt% These are local to one figure + \global\pscm=1cm + \global\drawingwd=\drawingwd + \global\drawinght=\drawinght +}} +% +% \psboxscaled{scalefactor*1000}{PSfilename} allows to bypass the +% rounding errors of TeX integer divisions for situations where the +% TeX box should fit the original BoundingBox with a precision better +% than 1/1000. +% +\def\psboxscaled#1#2{\vbox{ + \ReadPSize{#2} + \xscale=#1 + \message{scaled \the\xscale} + \divide\drawingwd by 1000\multiply\drawingwd by\xscale + \divide\drawinght by 1000\multiply\drawinght by\xscale + \divide \psxoffset by 1000\multiply\psxoffset by \xscale + \divide \psyoffset by 1000\multiply\psyoffset by \xscale + \global\divide\pscm by 1000 + \global\multiply\pscm by\xscale + \global\setbox\drawingBox=\hbox to 0pt{\kern\psxoffset\vbox to 0pt{ + \kern-\psyoffset + \PSspeci@l{\PSfilename}{\the\xscale} + \vss}\hss\ps@nnotation} + \global\ht\drawingBox=\the\drawinght + \global\wd\drawingBox=\the\drawingwd + \baselineskip=0pt + \copy\drawingBox + \global\psxoffset=0pt + \global\psyoffset=0pt% These are local to one figure + \global\pscm=1cm + \global\drawingwd=\drawingwd + \global\drawinght=\drawinght +}} +% +% \psbox{PSfilename} makes a TeX box having the minimal size to +% enclose the picture +\def\psbox#1{\psboxscaled{1000}{#1}} +% +% +% \joinfiles file1, file2, ...n \into joinedfilename . +% makes one file out of many +% \splitfile joinedfilename +% the opposite +% +%\def\execute#1{#1}% NOT stupid: cs in #1 are then identified BEFORE execution +%\def\psm@keother#1{\catcode`#112\relax}% borrowed from latex +%\def\executeinspecs#1{% +%\execute{\begingroup\let\do\psm@keother\dospecials\catcode`\^^M=9#1\endgroup}} +%\newread\pst@mpin +\newif\ifn@teof\n@teoftrue +\newif\ifc@ntrolline +\newif\ifmatch +\newread\j@insplitin +\newwrite\j@insplitout +\newwrite\psbj@inaux +\immediate\openout\psbj@inaux=psbjoin.aux +\immediate\write\psbj@inaux{\string\joinfiles} +\immediate\write\psbj@inaux{\jobname,} +% +% We redefine input to keep track of the various files inputted +% +\immediate\let\oldinput=\input +\def\input#1 { + \immediate\write\psbj@inaux{#1,} + \oldinput #1 } +\def\empty{} +\def\setmatchif#1\contains#2{ + \def\match##1#2##2\endmatch{ + \def\tmp{##2} + \ifx\empty\tmp + \matchfalse + \else + \matchtrue + \fi} + \match#1#2\endmatch} +\def\warnopenout#1#2{ + \setmatchif{TrashMe,psbjoin.aux,psbjoin.all}\contains{#2} + \ifmatch + \else + \immediate\openin\pst@mpin=#2 + \ifeof\pst@mpin + \else + \errhelp{If the content of this file is so precious to you, abort (ie +press x or e) and rename it before retrying.} + \errmessage{I'm just about to replace your file named #2} + \fi + \immediate\closein\pst@mpin + \fi + \message{#2} + \immediate\openout#1=#2} +% No comments allowed below: % will have an unusual catcode +{ +\catcode`\%=12 +\gdef\splitfile#1 { + \immediate\openin\j@insplitin=#1 + \message{Splitting file #1 into:} + \warnopenout\j@insplitout{TrashMe} + \loop + \ifeof + \j@insplitin\immediate\closein\j@insplitin\n@teoffalse + \else + \n@teoftrue + \executeinspecs{\global\read\j@insplitin to\spl@tinline\expandafter + \ch@ckbeginnewfile\spl@tinline%Beginning-Of-File-Named:%\endcheck} + \ifc@ntrolline + \else + \toks0=\expandafter{\spl@tinline} + \immediate\write\j@insplitout{\the\toks0} + \fi + \fi + \ifn@teof\repeat + \immediate\closeout\j@insplitout} +\gdef\ch@ckbeginnewfile#1%Beginning-Of-File-Named:#2%#3\endcheck{ + \def\t@mp{#1} + \ifx\empty\t@mp + \def\t@mp{#3} + \ifx\empty\t@mp + \global\c@ntrollinefalse + \else + \immediate\closeout\j@insplitout + \warnopenout\j@insplitout{#2} + \global\c@ntrollinetrue + \fi + \else + \global\c@ntrollinefalse + \fi} +\gdef\joinfiles#1\into#2 { + \message{Joining following files into} + \warnopenout\j@insplitout{#2} + \message{:} + { + \edef\w@##1{\immediate\write\j@insplitout{##1}} + \w@{% This text was produced with psbox's \string\joinfiles.} + \w@{% To decompose and tex it:} + \w@{%-save this with a filename CONTAINING ONLY LETTERS, and no extensions} + \w@{% (say, JOINTFIL), in some uncrowded directory;} + \w@{%-make sure you can \string\input\space psbox.tex (version>=1.3);} + \w@{%-tex JOINTFIL using Plain, or LaTeX, or whatever is needed by} + \w@{% the first part in the joining (after splitting JOINTFIL into} + \w@{% it's constituents, TeX will try to process it as it stands).} + \w@{\string\input\space psbox.tex} + \w@{\string\splitfile{\string\jobname}} + } + \tre@tfilelist#1, \endtre@t + \immediate\closeout\j@insplitout} +\gdef\tre@tfilelist#1, #2\endtre@t{ + \def\t@mp{#1} + \ifx\empty\t@mp + \else + \llj@in{#1} + \tre@tfilelist#2, \endtre@t + \fi} +\gdef\llj@in#1{ + \immediate\openin\j@insplitin=#1 + \ifeof\j@insplitin + \errmessage{I couldn't find file #1.} + \else + \message{#1} + \toks0={%Beginning-Of-File-Named:#1} + \immediate\write\j@insplitout{\the\toks0} + \executeinspecs{\global\read\j@insplitin to\oldj@ininline} + \loop + \ifeof\j@insplitin\immediate\closein\j@insplitin\n@teoffalse + \else\n@teoftrue + \executeinspecs{\global\read\j@insplitin to\j@ininline} + \toks0=\expandafter{\oldj@ininline} + \let\oldj@ininline=\j@ininline + \immediate\write\j@insplitout{\the\toks0} + \fi + \ifn@teof + \repeat + \immediate\closein\j@insplitin + \fi} +} +% To be put at the end of a file, for making an tar-like file containing +% everything it used. +\def\autojoin{ + \immediate\write\psbj@inaux{\string\into\space psbjoin.all} + \immediate\closeout\psbj@inaux + \input psbjoin.aux +} +% +% Annotations & Captions etc... +% +% +% \centinsert{anybox} is just a centered \midinsert, but is included as +% people barely use the original inserts from TeX. +% +\def\centinsert#1{\midinsert\line{\hss#1\hss}\endinsert} +\def\psannotate#1#2{\def\ps@nnotation{#2\global\let\ps@nnotation=\relax}#1} +\def\pscaption#1#2{\vbox{ + \setbox\drawingBox=#1 + \copy\drawingBox + \vskip\baselineskip + \vbox{\hsize=\wd\drawingBox\setbox0=\hbox{#2} + \ifdim\wd0>\hsize + \noindent\unhbox0\tolerance=5000 + \else\centerline{\box0} + \fi +}}} +% for compatibility with older versions +\def\psfig#1#2#3{\pscaption{\psannotate{#1}{#2}}{#3}} +\def\psfigurebox#1#2#3{\pscaption{\psannotate{\psbox{#1}}{#2}}{#3}} +% +% \at(#1;#2)#3 puts #3 at #1-higher and #2-right of the current +% position without moving it (to be used in annotations). +\def\at(#1;#2)#3{\setbox0=\hbox{#3}\ht0=0pt\dp0=0pt + \rlap{\kern#1\vbox to0pt{\kern-#2\box0\vss}}} +% +% \gridfill(ht;wd) makes a 1cm*1cm grid of ht by wd whose lower-left +% corner is the current point +\newdimen\gridht \newdimen\gridwd +\def\gridfill(#1;#2){ + \setbox0=\hbox to 1\pscm + {\vrule height1\pscm width.4pt\leaders\hrule\hfill} + \gridht=#1 + \divide\gridht by \ht0 + \multiply\gridht by \ht0 + \gridwd=#2 + \divide\gridwd by \wd0 + \multiply\gridwd by \wd0 + \advance \gridwd by \wd0 + \vbox to \gridht{\leaders\hbox to\gridwd{\leaders\box0\hfill}\vfill}} +% +% Useful to measure where to put annotations +\def\fillinggrid{\at(0cm;0cm){\vbox{ + \gridfill(\drawinght;\drawingwd)}}} +% +% \textleftof\anybox: Sample text\endtext +% inserts "Sample text" on the left of \anybox ie \vbox, \psbox. +% \textrightof is the symmetric (not documented, too uggly) +% Welcome any suggestion about clean wraparound macros from +% TeXhackers reading this +% +\def\textleftof#1:{ + \setbox1=#1 + \setbox0=\vbox\bgroup + \advance\hsize by -\wd1 \advance\hsize by -2em} +\def\textrightof#1:{ + \setbox0=#1 + \setbox1=\vbox\bgroup + \advance\hsize by -\wd0 \advance\hsize by -2em} +\def\endtext{ + \egroup + \hbox to \hsize{\valign{\vfil##\vfil\cr% +\box0\cr% +\noalign{\hss}\box1\cr}}} +% +% \frameit{\thick}{\skip}{\anybox} +% draws with thickness \thick a box around \anybox, leaving \skip of +% blank around it. eg \frameit{0.5pt}{1pt}{\hbox{hello}} +% \boxit{\anybox} is a shortcut. +\def\frameit#1#2#3{\hbox{\vrule width#1\vbox{ + \hrule height#1\vskip#2\hbox{\hskip#2\vbox{#3}\hskip#2}% + \vskip#2\hrule height#1}\vrule width#1}} +\def\boxit#1{\frameit{0.4pt}{0pt}{#1}} +% +% +\catcode`\@=12 % cs containing @ are unreachable +% +% CUSTOMIZE YOUR DEFAULT DRIVER: +% Uncomment the line corresponding to your TeX system: +%\psfortextures% For TeXtures on the Macintosh +%\psforoztex % For OzTeX shareware on the Macintosh +%\psfordvitops % For the DVItoPS converter for TeX on IBM mainframes + \psfordvips % For DVIPS converter on VAX and UNIX +%\psfordvitps % For dvitps from TeXPS package under UNIX +%\psforDVIALW % For DVIALW, UNIX public domain +%\psonlyboxes % Blank Boxes (when all else fails). diff --git a/docs/latex/wx/query.tex b/docs/latex/wx/query.tex new file mode 100644 index 0000000000..02988522f4 --- /dev/null +++ b/docs/latex/wx/query.tex @@ -0,0 +1,206 @@ +\section{\class{wxQueryCol}}\label{wxquerycol} + +Every ODBC data column is represented by an instance of this class. + +\wxheading{Derivation} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\overview{wxQueryCol overview}{wxquerycoloverview}, \overview{wxDatabase overview}{wxdatabaseoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxQueryCol::wxQueryCol} + +\func{void}{wxQueryCol}{\void} + +Constructor. Sets the attributes of the column to default values. + +\membersection{wxQueryCol::\destruct{wxQueryCol}} + +\func{void}{\destruct{wxQueryCol}}{\void} + +Destructor. Deletes the wxQueryField list. + +\membersection{wxQueryCol::BindVar} + +\func{void *}{BindVar}{\param{void *}{v}, \param{long}{ sz}} + +Binds a user-defined variable to a column. Whenever a column is bound to a +variable, it will automatically copy the data of the current field into this +buffer (to a maximum of {\it sz} bytes). + +\membersection{wxQueryCol::FillVar} + +\func{void}{FillVar}{\param{int}{ recnum}} + +Fills the bound variable with the data of the field recnum. When no variable +is bound to the column nothing will happen. + +\membersection{wxQueryCol::GetData} + +\func{void *}{GetData}{\param{int}{ field}} + +Returns a pointer to the data of the field. + +\membersection{wxQueryCol::GetName} + +\func{wxString}{GetName}{\void} + +Returns the name of a column. + +\membersection{wxQueryCol::GetType} + +\func{short}{GetType}{\void} + +Returns the data type of a column. + +\membersection{wxQueryCol::GetSize} + +\func{long}{GetSize}{\param{int}{ field}} + +Return the size of the data of the field field. + +\membersection{wxQueryCol::IsRowDirty} + +\func{bool}{IsRowDirty}{\param{int}{ field}} + +Returns TRUE if the given field has been changed, but not saved. + +\membersection{wxQueryCol::IsNullable} + +\func{bool}{IsNullable}{\void} + +Returns TRUE if a column may contain no data. + +\membersection{wxQueryCol::AppendField} + +\func{void}{AppendField}{\param{void *}{buf}, \param{long}{ len}} + +Appends a wxQueryField instance to the field list of the column. {\it len} bytes from\rtfsp +{\it buf} will be copied into the field's buffer. + +\membersection{wxQueryCol::SetData} + +\func{bool}{SetData}{\param{int}{ field}, \param{void *}{buf}, \param{long}{ len}} + +Sets the data of a field. This function finds the wxQueryField corresponding to\rtfsp +{\it field} and calls wxQueryField::SetData with {\it buf} and {\it len} arguments. + +\membersection{wxQueryCol::SetName} + +\func{void}{SetName}{\param{const wxString\& }{name}} + +Sets the name of a column. Only useful when creating new tables or +appending columns. + +\membersection{wxQueryCol::SetNullable} + +\func{void}{SetNullable}{\param{bool}{ nullable}} + +Determines whether a column may contain no data. Only useful when creating new tables or +appending columns. + +\membersection{wxQueryCol::SetFieldDirty} + +\func{void}{SetFieldDirty}{\param{int}{ field}, \param{bool }{dirty = TRUE}} + +Sets the dirty tag of a given field. + +\membersection{wxQueryCol::SetType} + +\func{void}{SetType}{\param{short}{ type}} + +Sets the data type of a column. Only useful when creating new tables or +appending columns. + +\section{\class{wxQueryField}}\label{wxqueryfield} + +Represents the data item for one or several columns. + +\wxheading{Derivation} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\overview{wxQueryField overview}{wxqueryfieldoverview}, \overview{wxDatabase overview}{wxdatabaseoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxQueryField::wxQueryField} + +\func{}{wxQueryField}{\void} + +Constructor. Sets type and size of the field to default values. + +\membersection{wxQueryField::\destruct{wxQueryField}} + +\func{}{\destruct{wxQueryField}}{\void} + +Destructor. Frees the associated memory depending on the field type. + +\membersection{wxQueryField::AllocData} + +\func{bool}{AllocData}{\void} + +Allocates memory depending on the size and type of the field. + +\membersection{wxQueryField::ClearData} + +\func{void}{ClearData}{\void} + +Deletes the contents of the field buffer without deallocating the memory. + +\membersection{wxQueryField::GetData} + +\func{void *}{GetData}{\void} + +Returns a pointer to the field buffer. + +\membersection{wxQueryField::GetSize} + +\func{long}{GetSize}{\void} + +Returns the size of the field buffer. + +\membersection{wxQueryField::GetType} + +\func{short}{GetType}{\void} + +Returns the type of the field (currently SQL\_CHAR, SQL\_VARCHAR or SQL\_INTEGER). + +\membersection{wxQueryField::IsDirty} + +\func{bool}{IsDirty}{\void} + +Returns TRUE if the data of a field has been changed, but not saved. + +\membersection{wxQueryField::SetData} + +\func{bool}{SetData}{\param{void *}{data}, \param{long}{ sz}} + +Allocates memory of the size {\it sz} and copies the contents of {\it d} into the +field buffer. + +\membersection{wxQueryField::SetDirty} + +\func{void}{SetDirty}{\param{bool}{ dirty = TRUE}} + +Sets the dirty tag of a field. + +\membersection{wxQueryField::SetSize} + +\func{void}{SetSize}{\param{long}{ size}} + +Resizes the field buffer. Stored data will be lost. + +\membersection{wxQueryField::SetType} + +\func{void}{SetType}{\param{short }{type}} + +Sets the type of the field. Currently the types SQL\_CHAR, SQL\_VARCHAR and +SQL\_INTEGER are supported. + diff --git a/docs/latex/wx/radiobox.tex b/docs/latex/wx/radiobox.tex new file mode 100644 index 0000000000..36918afb48 --- /dev/null +++ b/docs/latex/wx/radiobox.tex @@ -0,0 +1,218 @@ +\section{\class{wxRadioBox}}\label{wxradiobox} + +A radio box item is used to select one of number of mutually exclusive +choices. It is displayed as a vertical column or horizontal row of +labelled buttons. + +\wxheading{Derived from} + +\helpref{wxControl}{wxcontrol}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{wxRA\_HORIZONTAL}}{Lays the radiobox out in rows.} +\twocolitem{\windowstyle{wxRA\_VERTICAL}}{Lays the radiobox out in columns.} +\end{twocollist} + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{See also} + +\helpref{Event handling overview}{eventhandlingoverview}, \helpref{wxRadioButton}{wxradiobutton},\rtfsp +\helpref{wxCheckBox}{wxcheckbox} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxRadioBox::wxRadioBox}\label{wxradioboxconstr} + +\func{}{wxRadioBox}{\void} + +Default constructor. + +\func{}{wxRadioBox}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id}, \param{const wxString\& }{label},\rtfsp +\param{const wxPoint\& }{point = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const int}{ n = 0}, \param{const wxString}{ choices[] = NULL},\rtfsp +\param{const int}{ majorDimension = 0}, \param{const long}{ style = wxRA\_HORIZONTAL},\rtfsp +\param{const wxValidator\& }{validator = wxDefaultValidator},\rtfsp +\param{const wxString\& }{name = ``radioBox"}} + +Constructor, creating and showing a radiobox. + +\wxheading{Parameters} + +\docparam{parent}{Parent window. Must not be NULL.} + +\docparam{id}{Window identifier. A value of -1 indicates a default value.} + +\docparam{label}{Label for the static box surrounding the radio buttons.} + +\docparam{pos}{Window position. If the position (-1, -1) is specified then a default position is chosen.} + +\docparam{size}{Window size. If the default size (-1, -1) is specified then a default size is chosen.} + +\docparam{n}{Number of choices with which to initialize the radiobox.} + +\docparam{choices}{An array of choices with which to initialize the radiobox.} + +\docparam{majorDimension}{Specifies the number of rows (if style is wxRA\_VERTICAL) or columns (if style is wxRA\_HORIZONTAL) for a two-dimensional +radiobox.} + +\docparam{style}{Window style. See \helpref{wxRadioBox}{wxradiobox}.} + +\docparam{validator}{Window validator.} + +\docparam{name}{Window name.} + +\wxheading{See also} + +\helpref{wxRadioBox::Create}{wxradioboxcreate}, \helpref{wxValidator}{wxvalidator} + +\membersection{wxRadioBox::\destruct{wxRadioBox}} + +\func{}{\destruct{wxRadioBox}}{\void} + +Destructor, destroying the radiobox item. + +\membersection{wxRadioBox::Create}\label{wxradioboxcreate} + +\func{bool}{Create}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id}, \param{const wxString\& }{label},\rtfsp +\param{const wxPoint\& }{point = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const int}{ n = 0}, \param{const wxString}{ choices[] = NULL},\rtfsp +\param{const int}{ majorDimension = 0}, \param{const long}{ style = wxRA\_HORIZONTAL},\rtfsp +\param{const wxValidator\& }{validator = wxDefaultValidator},\rtfsp +\param{const wxString\& }{name = ``radioBox"}} + +Creates the radiobox for two-step construction. See \helpref{wxRadioBox::wxRadioBox}{wxradioboxconstr}\rtfsp +for further details. + +\membersection{wxRadioBox::Enable}\label{wxradioboxenable} + +\func{void}{Enable}{\param{const bool}{ enable}} + +Enables or disables the entire radiobox. + +\func{void}{Enable}{\param{const int}{ n}, \param{const bool}{ enable}} + +Enables or disables an individual button in the radiobox. + +\wxheading{Parameters} + +\docparam{enable}{TRUE to enable, FALSE to disable.} + +\docparam{n}{The zero-based button to enable or disable.} + +\membersection{wxRadioBox::FindString}\label{wxradioboxfindstring} + +\constfunc{int}{FindString}{\param{const wxString\& }{string}} + +Finds a button matching the given string, returning the position if found, or +-1 if not found. + +\wxheading{Parameters} + +\docparam{string}{The string to find.} + +\membersection{wxRadioBox::GetLabel}\label{wxradioboxgetlabel} + +\constfunc{wxString}{GetLabel}{\void} + +Returns the radiobox label. + +\constfunc{wxString}{GetLabel}{\param{const int }{n}} + +Returns the label for the given button. + +\wxheading{Parameters} + +\docparam{n}{The zero-based button index.} + +\wxheading{See also} + +\helpref{wxRadioBox::SetLabel}{wxradioboxsetlabel} + +\membersection{wxRadioBox::GetSelection}\label{wxradioboxgetselection} + +\constfunc{int}{GetSelection}{\void} + +Returns the zero-based position of the selected button. + +\membersection{wxRadioBox::GetStringSelection}\label{wxradioboxgetstringselection} + +\constfunc{wxString}{GetStringSelection}{\void} + +Returns the selected string. + +\membersection{wxRadioBox::Number}\label{wxradioboxnumber} + +\constfunc{int}{Number}{\void} + +Returns the number of buttons in the radiobox. + +\membersection{wxRadioBox::SetLabel}\label{wxradioboxsetlabel} + +\func{void}{SetLabel}{\param{const wxString\&}{ label}} + +Sets the radiobox label. + +\func{void}{SetLabel}{\param{const int }{n}, \param{const wxString\&}{ label}} + +Sets a label for a radio button. + +\wxheading{Parameters} + +\docparam{label}{The label to set.} + +\docparam{n}{The zero-based button index.} + +\membersection{wxRadioBox::SetSelection}\label{wxradioboxsetselection} + +\func{void}{SetSelection}{\param{const int}{ n}} + +Sets a button by passing the desired string position. + +\wxheading{Parameters} + +\docparam{n}{The zero-based button position.} + +\membersection{wxRadioBox::SetStringSelection}\label{wxradioboxsetstringselection} + +\func{void}{SetStringSelection}{\param{const wxString\& }{string}} + +Sets a button by passing the desired string. + +\wxheading{Parameters} + +\docparam{string}{The label of the button to select.} + +\membersection{wxRadioBox::Show}\label{wxradioboxshow} + +\func{void}{Show}{\param{const bool}{ show}} + +Shows or hides the entire radiobox. + +\func{void}{Show}{\param{const int }{item}, \param{const bool}{ show}} + +Shows or hides individual buttons. + +\wxheading{Parameters} + +\docparam{show}{TRUE to show, FALSE to hide.} + +\docparam{item}{The zero-based position of the button to show or hide.} + +\membersection{wxRadioBox::GetString}\label{wxradioboxgetstring} + +\constfunc{wxString}{GetString}{\param{const int}{ n}} + +Returns the label for the button at the given position. + +\wxheading{Parameters} + +\docparam{n}{The zero-based button position.} + + diff --git a/docs/latex/wx/radiobut.tex b/docs/latex/wx/radiobut.tex new file mode 100644 index 0000000000..d8c2b8b84c --- /dev/null +++ b/docs/latex/wx/radiobut.tex @@ -0,0 +1,95 @@ +\section{\class{wxRadioButton}}\label{wxradiobutton} + +A radio button item is a button which usually denotes one of several mutually +exclusive options. It has a text label next to a (usually) round button. + +\wxheading{Derived from} + +\helpref{wxControl}{wxcontrol}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +There are no specific styles for this class. + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{See also} + +\helpref{Event handling overview}{eventhandlingoverview}, \helpref{wxRadioBox}{wxradiobox},\rtfsp +\helpref{wxCheckBox}{wxcheckbox} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxRadioButton::wxRadioButton}\label{wxradiobuttonconstr} + +\func{}{wxRadioButton}{\void} + +Default constructor. + +\func{}{wxRadioButton}{\param{wxWindow*}{ parent}, \param{const wxWindowID}{ id}, \param{const wxString\& }{label},\rtfsp +\param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\&}{ size = wxDefaultSize},\rtfsp +\param{const long}{ style = 0},\rtfsp +\param{const wxValidator\& }{validator = wxDefaultValidator},\rtfsp +\param{const wxString\& }{name = ``radioButton"}} + +Constructor, creating and showing a radio button. + +\wxheading{Parameters} + +\docparam{parent}{Parent window. Must not be NULL.} + +\docparam{id}{Window identifier. A value of -1 indicates a default value.} + +\docparam{label}{Label for the radio button.} + +\docparam{pos}{Window position. If the position (-1, -1) is specified then a default position is chosen.} + +\docparam{size}{Window size. If the default size (-1, -1) is specified then a default size is chosen.} + +\docparam{style}{Window style. See \helpref{wxRadioButton}{wxradiobutton}.} + +\docparam{validator}{Window validator.} + +\docparam{name}{Window name.} + +\wxheading{See also} + +\helpref{wxRadioButton::Create}{wxradiobuttoncreate}, \helpref{wxValidator}{wxvalidator} + +\membersection{wxRadioButton::\destruct{wxRadioButton}} + +\func{void}{\destruct{wxRadioButton}}{\void} + +Destructor, destroying the radio button item. + +\membersection{wxRadioButton::Create}\label{wxradiobuttoncreate} + +\func{bool}{Create}{\param{wxWindow*}{ parent}, \param{const wxWindowID}{ id}, \param{const wxString\& }{label},\rtfsp +\param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\&}{ size = wxDefaultSize},\rtfsp +\param{const long}{ style = 0},\rtfsp +\param{const wxValidator\& }{validator = wxDefaultValidator},\rtfsp +\param{const wxString\& }{name = ``radioButton"}} + +Creates the choice for two-step construction. See \helpref{wxRadioButton::wxRadioButton}{wxradiobuttonconstr} for +further details. + +\membersection{wxRadioButton::GetValue}\label{wxradiobuttongetvalue} + +\constfunc{bool}{GetValue}{\void} + +Returns TRUE if the radio button is depressed, FALSE otherwise. + +\membersection{wxRadioButton::SetValue}\label{wxradiobuttonsetvalue} + +\func{void}{SetValue}{\param{const bool}{ value}} + +Sets the radio button to selected or deselected status. + +\wxheading{Parameters} + +\docparam{value}{TRUE to select, FALSE to deselect.} + + diff --git a/docs/latex/wx/realpoin.tex b/docs/latex/wx/realpoin.tex new file mode 100644 index 0000000000..380e997f2a --- /dev/null +++ b/docs/latex/wx/realpoin.tex @@ -0,0 +1,31 @@ +\section{\class{wxRealPoint}}\label{wxrealpoint} + +A {\bf wxRealPoint} is a useful data structure for graphics operations. +It contains floating point point {\it x} and {\it y} members. +See also \helpref{wxPoint}{wxpoint} for an integer version. + +\wxheading{Derivation} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxPoint}{wxpoint} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxRealPoint::wxRealPoint} + +\func{}{wxRealPoint}{\void} + +\func{}{wxRealPoint}{\param{double}{ x}, \param{double}{ y}} + +Create a point. + +\member{double}{ x} + +\member{double}{ y} + +Members of the {\bf wxRealPoint} object. + + diff --git a/docs/latex/wx/recrdset.tex b/docs/latex/wx/recrdset.tex new file mode 100644 index 0000000000..532bddfef1 --- /dev/null +++ b/docs/latex/wx/recrdset.tex @@ -0,0 +1,599 @@ +\section{\class{wxRecordSet}}\label{wxrecordset} + +Each wxRecordSet represents an ODBC database query. You can make multiple queries +at a time by using multiple wxRecordSets with a wxDatabase or you can make +your queries in sequential order using the same wxRecordSet. + +\wxheading{Derivation} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxRecordSet overview}{wxrecordsetoverview}, \helpref{wxDatabase overview}{wxdatabaseoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxRecordSet::wxRecordSet} + +\func{}{wxRecordSet}{\param{wxDatabase *}{db}, \param{int}{ type = wxOPEN\_TYPE\_DYNASET}, + \param{int}{ opt = wxOPTION\_DEFAULT}} + +Constructor. {\it db} is a pointer to the wxDatabase instance you wish to use the +wxRecordSet with. Currently there are two possible values of {\it type}: + +\begin{itemize}\itemsep=0pt +\item wxOPEN\_TYPE\_DYNASET: Loads only one record at a time into memory. The other +data of the result set will be loaded dynamically when +moving the cursor. This is the default type. +\item wxOPEN\_TYPE\_SNAPSHOT: Loads all records of a result set at once. This will +need much more memory, but will result in +faster access to the ODBC data. +\end{itemize} + +The {\it option} parameter is not used yet. + +The constructor appends the wxRecordSet object to the parent database's list of +wxRecordSet objects, for later destruction when the wxDatabase is destroyed. + +\membersection{wxRecordSet::\destruct{wxRecordSet}} + +\func{}{\destruct{wxRecordSet}}{\void} + +Destructor. All data except that stored in user-defined variables will be lost. +It also unlinks the wxRecordSet object from the parent database's list of +wxRecordSet objects. + +\membersection{wxRecordSet::AddNew} + +\func{void}{AddNew}{\void} + +Not implemented. + +\membersection{wxRecordSet::BeginQuery} + +\func{bool}{BeginQuery}{\param{int}{ openType}, \param{const wxString\& }{sql = NULL}, \param{int}{ options = wxOPTION\_DEFAULT}} + +Not implemented. + +\membersection{wxRecordSet::BindVar} + +\func{void *}{BindVar}{\param{int}{ col}, \param{void *}{buf}, \param{long}{ size}} + +Binds a user-defined variable to the column col. Whenever the current field's +data changes, it will be copied into buf (maximum {\it size} bytes). + +\func{void *}{BindVar}{\param{const wxString\& }{col}, \param{void *}{buf}, \param{long}{ size}} + +The same as above, but uses the column name as the identifier. + +\membersection{wxRecordSet::CanAppend} + +\func{bool}{CanAppend}{\void} + +Not implemented. + +\membersection{wxRecordSet::Cancel} + +\func{void}{Cancel}{\void} + +Not implemented. + +\membersection{wxRecordSet::CanRestart} + +\func{bool}{CanRestart}{\void} + +Not implemented. + +\membersection{wxRecordSet::CanScroll} + +\func{bool}{CanScroll}{\void} + +Not implemented. + +\membersection{wxRecordSet::CanTransact} + +\func{bool}{CanTransact}{\void} + +Not implemented. + +\membersection{wxRecordSet::CanUpdate} + +\func{bool}{CanUpdate}{\void} + +Not implemented. + +\membersection{wxRecordSet::ConstructDefaultSQL} + +\func{bool}{ConstructDefaultSQL}{\void} + +Not implemented. + +\membersection{wxRecordSet::Delete} + +\func{bool}{Delete}{\void} + +Deletes the current record. Not implemented. + +\membersection{wxRecordSet::Edit} + +\func{void}{Edit}{\void} + +Not implemented. + +\membersection{wxRecordSet::EndQuery} + +\func{bool}{EndQuery}{\void} + +Not implemented. + +\membersection{wxRecordSet::ExecuteSQL}\label{wxrecordsetexecutesql} + +\func{bool}{ExecuteSQL}{\param{const wxString\& }{sql}} + +Directly executes a SQL statement. The data will be presented as a normal +result set. Note that the recordset must have been created as a snapshot, not +dynaset. Dynasets will be implemented in the near future. + +Examples of common SQL statements are given in \helpref{A selection of SQL commands}{sqlcommands}. + +\membersection{wxRecordSet::FillVars} + +\func{void}{FillVars}{\param{int}{ recnum}} + +Fills in the user-defined variables of the columns. You can set these +variables with wxQueryCol::BindVar. This function will be automatically +called after every successful database operation. + +\membersection{wxRecordSet::GetColName} + +\func{wxString}{GetColName}{\param{int}{ col}} + +Returns the name of the column at position {\it col}. Returns NULL if {\it col} does not +exist. + +\membersection{wxRecordSet::GetColType} + +\func{short}{GetColType}{\param{int}{ col}} + +Returns the data type of the column at position {\it col}. Returns SQL\_TYPE\_NULL +if {\it col} does not exist. + +\func{short}{GetColType}{\param{const wxString\& }{ name}} + +The same as above, but uses the column name as the identifier. + +See \helpref{ODBC SQL data types}{sqltypes} for a list +of possible data types. + +\membersection{wxRecordSet::GetColumns} + +\func{bool}{GetColumns}{\param{const wxString\& }{table = NULL}} + +Returns the columns of the table with the specified name. If no name is +given the class member {\it tablename} will be used. If both names are NULL +nothing will happen. The data will be presented as a normal result set, organized +as follows: + +\begin{twocollist}\itemsep=0pt +\twocolitem{0 (VARCHAR)}{TABLE\_QUALIFIER} +\twocolitem{1 (VARCHAR)}{TABLE\_OWNER} +\twocolitem{2 (VARCHAR)}{TABLE\_NAME} +\twocolitem{3 (VARCHAR)}{COLUMN\_NAME} +\twocolitem{4 (SMALLINT)}{DATA\_TYPE} +\twocolitem{5 (VARCHAR)}{TYPE\_NAME} +\twocolitem{6 (INTEGER)}{PRECISION} +\twocolitem{7 (INTEGER)}{LENGTH} +\twocolitem{8 (SMALLINT)}{SCALE} +\twocolitem{9 (SMALLINT)}{RADIX} +\twocolitem{10 (SMALLINT)}{NULLABLE} +\twocolitem{11 (VARCHAR)}{REMARKS} +\end{twocollist} + +\membersection{wxRecordSet::GetCurrentRecord} + +\func{long}{GetCurrentRecord}{\void} + +Not implemented. + +\membersection{wxRecordSet::GetDatabase} + +\func{wxDatabase *}{GetDatabase}{\void} + +Returns the wxDatabase object bound to a wxRecordSet. + +\membersection{wxRecordSet::GetDataSources}\label{wxrecordsetgetdatasources} + +\func{bool}{GetDataSources}{\void} + +Gets the currently-defined data sources via the ODBC manager. The data will be presented +as a normal result set. See the documentation for the ODBC function SQLDataSources for how the data +is organized. + +Example: + +\begin{verbatim} + wxDatabase Database; + + wxRecordSet *Record = new wxRecordSet(&Database); + + if (!Record->GetDataSources()) { + char buf[300]; + sprintf(buf, "%s %s\n", Database.GetErrorClass(), Database.GetErrorMessage()); + frame->output->SetValue(buf); + } + else { + do { + frame->DataSource->Append((char*)Record->GetFieldDataPtr(0, SQL_CHAR)); + } while (Record->MoveNext()); + } +\end{verbatim} + +\membersection{wxRecordSet::GetDefaultConnect} + +\func{wxString}{GetDefaultConnect}{\void} + +Not implemented. + +\membersection{wxRecordSet::GetDefaultSQL} + +\func{wxString}{GetDefaultSQL}{\void} + +Not implemented. + +\membersection{wxRecordSet::GetErrorCode} + +\func{wxRETCODE}{GetErrorCode}{\void} + +Returns the error code of the last ODBC action. This will be one of: + +\begin{twocollist}\itemsep=0pt +\twocolitem{SQL\_ERROR}{General error.} +\twocolitem{SQL\_INVALID\_HANDLE}{An invalid handle was passed to an ODBC function.} +\twocolitem{SQL\_NEED\_DATA}{ODBC expected some data.} +\twocolitem{SQL\_NO\_DATA\_FOUND}{No data was found by this ODBC call.} +\twocolitem{SQL\_SUCCESS}{The call was successful.} +\twocolitem{SQL\_SUCCESS\_WITH\_INFO}{The call was successful, but further information can be +obtained from the ODBC manager.} +\end{twocollist} + +\membersection{wxRecordSet::GetFieldData}\label{wxrecordsetgetfielddata} + +\func{bool}{GetFieldData}{\param{int}{ col}, \param{int}{ dataType}, \param{void *}{dataPtr}} + +Copies the current data of the column at position {\it col} into the buffer +\rtfsp{\it dataPtr}. To be sure to get the right type of data, the user has to pass the +correct data type. The function returns FALSE if {\it col} does not +exist or the wrong data type was given. + +\func{bool}{GetFieldData}{\param{const wxString\& }{name}, \param{int}{ dataType}, \param{void *}{dataPtr}} + +The same as above, but uses the column name as the identifier. + +See \helpref{ODBC SQL data types}{sqltypes} for a list +of possible data types. + +\membersection{wxRecordSet::GetFieldDataPtr}\label{wxrecordsetgetfielddataptr} + +\func{void *}{GetFieldDataPtr}{\param{int}{ col}, \param{int}{ dataType}} + +Returns the current data pointer of the column at position {\it col}. +To be sure to get the right type of data, the user has to pass the +data type. Returns NULL if {\it col} does not exist or if {\it dataType} is +incorrect. + +\func{void *}{GetFieldDataPtr}{\param{const wxString\& }{name}, \param{int}{ dataType}} + +The same as above, but uses the column name as the identifier. + +See \helpref{ODBC SQL data types}{sqltypes} for a list +of possible data types. + +\membersection{wxRecordSet::GetFilter} + +\func{wxString}{GetFilter}{\void} + +Returns the current filter. + +\membersection{wxRecordSet::GetForeignKeys} + +\func{bool}{GetPrimaryKeys}{\param{const wxString\& }{ptable = NULL}, \param{const wxString\& }{ftable += NULL}} + +Returns a list of foreign keys in the specified table (columns in the +specified table that refer to primary keys in other tables), or +a list of foreign keys in other tables that refer to the primary key in +the specified table. + +If {\it ptable} contains a table name, this function returns a result +set containing the primary key of the specified table. + +If {\it ftable} contains a table name, this functions returns a result set +of containing all of the foreign keys in the specified table and the +primary keys (in other tables) to which they refer. + +If both {\it ptable} and {\it ftable} contain table names, this +function returns the foreign keys in the table specified in {\it +ftable} that refer to the primary key of the table specified in {\it +ptable}. This should be one key at most. + +GetForeignKeys returns results as a standard result set. If the foreign +keys associated with a primary key are requested, the result set is +ordered by FKTABLE\_QUALIFIER, FKTABLE\_OWNER, FKTABLE\_NAME, and KEY\_SEQ. +If the primary keys associated with a foreign key are requested, the +result set is ordered by PKTABLE\_QUALIFIER, PKTABLE\_OWNER, PKTABLE\_NAME, +and KEY\_SEQ. The following table lists the columns in the result set. + +\begin{twocollist}\itemsep=0pt +\twocolitem{0 (VARCHAR)}{PKTABLE\_QUALIFIER} +\twocolitem{1 (VARCHAR)}{PKTABLE\_OWNER} +\twocolitem{2 (VARCHAR)}{PKTABLE\_NAME} +\twocolitem{3 (VARCHAR)}{PKCOLUMN\_NAME} +\twocolitem{4 (VARCHAR)}{FKTABLE\_QUALIFIER} +\twocolitem{5 (VARCHAR)}{FKTABLE\_OWNER} +\twocolitem{6 (VARCHAR)}{FKTABLE\_NAME} +\twocolitem{7 (VARCHAR)}{FKCOLUMN\_NAME} +\twocolitem{8 (SMALLINT)}{KEY\_SEQ} +\twocolitem{9 (SMALLINT)}{UPDATE\_RULE} +\twocolitem{10 (SMALLINT)}{DELETE\_RULE} +\twocolitem{11 (VARCHAR)}{FK\_NAME} +\twocolitem{12 (VARCHAR)}{PK\_NAME} +\end{twocollist} + +\membersection{wxRecordSet::GetNumberCols} + +\func{long}{GetNumberCols}{\void} + +Returns the number of columns in the result set. + +\membersection{wxRecordSet::GetNumberFields} + +\func{int}{GetNumberFields}{\void} + +Not implemented. + +\membersection{wxRecordSet::GetNumberParams} + +\func{int}{GetNumberParams}{\void} + +Not implemented. + +\membersection{wxRecordSet::GetNumberRecords} + +\func{long}{GetNumberRecords}{\void} + +Returns the number of records in the result set. + +\membersection{wxRecordSet::GetPrimaryKeys} + +\func{bool}{GetPrimaryKeys}{\param{const wxString\& }{table = NULL}} + +Returns the column names that comprise the primary key of the table with the specified name. If no name is +given the class member {\it tablename} will be used. If both names are NULL +nothing will happen. The data will be presented as a normal result set, organized +as follows: + +\begin{twocollist}\itemsep=0pt +\twocolitem{0 (VARCHAR)}{TABLE\_QUALIFIER} +\twocolitem{1 (VARCHAR)}{TABLE\_OWNER} +\twocolitem{2 (VARCHAR)}{TABLE\_NAME} +\twocolitem{3 (VARCHAR)}{COLUMN\_NAME} +\twocolitem{4 (SMALLINT)}{KEY\_SEQ} +\twocolitem{5 (VARCHAR)}{PK\_NAME} +\end{twocollist} + +\membersection{wxRecordSet::GetOptions} + +\func{int}{GetOptions}{\void} + +Returns the options of the wxRecordSet. Options are not supported yet. + +\membersection{wxRecordSet::GetResultSet} + +\func{bool}{GetResultSet}{\void} + +Copies the data presented by ODBC into wxRecordSet. Depending on the +wxRecordSet type all or only one record(s) will be copied. +Usually this function will be called automatically after each successful +database operation. + +\membersection{wxRecordSet::GetSortString} + +\func{wxString}{GetSortString}{\void} + +Not implemented. + +\membersection{wxRecordSet::GetSQL} + +\func{wxString}{GetSQL}{\void} + +Not implemented. + +\membersection{wxRecordSet::GetTableName} + +\func{wxString}{GetTableName}{\void} + +Returns the name of the current table. + +\membersection{wxRecordSet::GetTables} + +\func{bool}{GetTables}{\void} + +Gets the tables of a database. The data will be presented as a normal result +set, organized as follows: + +\begin{twocollist}\itemsep=0pt +\twocolitem{0 (VARCHAR)}{TABLE\_QUALIFIER} +\twocolitem{1 (VARCHAR)}{TABLE\_OWNER} +\twocolitem{2 (VARCHAR)}{TABLE\_NAME} +\twocolitem{3 (VARCHAR)}{TABLE\_TYPE (TABLE, VIEW, SYSTEM TABLE, GLOBAL TEMPORARY, LOCAL TEMPORARY, +ALIAS, SYNONYM, or database-specific type)} +\twocolitem{4 (VARCHAR)}{REMARKS} +\end{twocollist} + +\membersection{wxRecordSet::GetType} + +\func{int}{GetType}{\void} + +Returns the type of the wxRecordSet: wxOPEN\_TYPE\_DYNASET or +wxOPEN\_TYPE\_SNAPSHOT. See the wxRecordSet description for details. + +\membersection{wxRecordSet::GoTo} + +\func{bool}{GoTo}{\param{long}{ n}} + +Moves the cursor to the record with the number n, where the first record +has the number 0. + +\membersection{wxRecordSet::IsBOF} + +\func{bool}{IsBOF}{\void} + +Returns TRUE if the user tried to move the cursor before the first record +in the set. + +\membersection{wxRecordSet::IsFieldDirty} + +\func{bool}{IsFieldDirty}{\param{int}{ field}} + +Returns TRUE if the given field has been changed but not saved yet. + +\func{bool}{IsFieldDirty}{\param{const wxString\& }{name}} + +Same as above, but uses the column name as the identifier. + +\membersection{wxRecordSet::IsFieldNull} + +\func{bool}{IsFieldNull}{\param{int}{ field}} + +Returns TRUE if the given field has no data. + +\func{bool}{IsFieldNull}{\param{const wxString\& }{ name}} + +Same as above, but uses the column name as the identifier. + +\membersection{wxRecordSet::IsColNullable} + +\func{bool}{IsColNullable}{\param{int}{ col}} + +Returns TRUE if the given column may contain no data. + +\func{bool}{IsColNullable}{\param{const wxString\& }{name}} + +Same as above, but uses the column name as the identifier. + +\membersection{wxRecordSet::IsEOF} + +\func{bool}{IsEOF}{\void} + +Returns TRUE if the user tried to move the cursor behind the last record +in the set. + +\membersection{wxRecordSet::IsDeleted} + +\func{bool}{IsDeleted}{\void} + +Not implemented. + +\membersection{wxRecordSet::IsOpen} + +\func{bool}{IsOpen}{\void} + +Returns TRUE if the parent database is open. + +\membersection{wxRecordSet::Move} + +\func{bool}{Move}{\param{long}{ rows}} + +Moves the cursor a given number of rows. Negative values are allowed. + +\membersection{wxRecordSet::MoveFirst} + +\func{bool}{MoveFirst}{\void} + +Moves the cursor to the first record. + +\membersection{wxRecordSet::MoveLast} + +\func{bool}{MoveLast}{\void} + +Moves the cursor to the last record. + +\membersection{wxRecordSet::MoveNext}\label{wxrecordsetmovenext} + +\func{bool}{MoveNext}{\void} + +Moves the cursor to the next record. + +\membersection{wxRecordSet::MovePrev}\label{wxrecordsetmoveprev} + +\func{bool}{MovePrev}{\void} + +Moves the cursor to the previous record. + +\membersection{wxRecordSet::Query} + +\func{bool}{Query}{\param{const wxString\& }{columns}, \param{const wxString\& }{table}, \param{const wxString\& }{filter = NULL}} + +Start a query. An SQL string of the following type will automatically be +generated and executed: ``SELECT columns FROM table WHERE filter". + +\membersection{wxRecordSet::RecordCountFinal} + +\func{bool}{RecordCountFinal}{\void} + +Not implemented. + +\membersection{wxRecordSet::Requery} + +\func{bool}{Requery}{\void} + +Re-executes the last query. Not implemented. + +\membersection{wxRecordSet::SetFieldDirty} + +\func{void}{SetFieldDirty}{\param{int}{ field}, \param{bool}{ dirty = TRUE}} + +Sets the dirty tag of the field field. Not implemented. + +\func{void}{SetFieldDirty}{\param{const wxString\& }{name}, \param{bool}{ dirty = TRUE}} + +Same as above, but uses the column name as the identifier. + +\membersection{wxRecordSet::SetDefaultSQL} + +\func{void}{SetDefaultSQL}{\param{const wxString\& }{s}} + +Not implemented. + +\membersection{wxRecordSet::SetFieldNull} + +\func{void}{SetFieldNull}{\param{void *}{p}, \param{bool }{isNull = TRUE}} + +Not implemented. + +\membersection{wxRecordSet::SetOptions} + +\func{void}{SetOptions}{\param{int}{ opt}} + +Sets the options of the wxRecordSet. Not implemented. + +\membersection{wxRecordSet::SetTableName} + +\func{void}{SetTableName}{\param{const wxString\& }{tablename}} + +Specify the name of the table you want to use. + +\membersection{wxRecordSet::SetType} + +\func{void}{SetType}{\param{int}{ type}} + +Sets the type of the wxRecordSet. See the wxRecordSet class description for details. + +\membersection{wxRecordSet::Update} + +\func{bool}{Update}{\void} + +Writes back the current record. Not implemented. + + diff --git a/docs/latex/wx/rect.tex b/docs/latex/wx/rect.tex new file mode 100644 index 0000000000..ca5c504568 --- /dev/null +++ b/docs/latex/wx/rect.tex @@ -0,0 +1,159 @@ +\section{\class{wxRect}}\label{wxrect} + +A class for manipulating rectangles. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxPoint}{wxpoint}, \helpref{wxSize}{wxsize} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxRect::wxRect} + +\func{}{wxRect}{\void} + +Default constructor. + +\func{}{wxRect}{\param{const int}{ x}, \param{const int}{ y}, \param{const int}{ width}, \param{const int}{ height}} + +Creates a wxRect object from x, y, width and height values. + +\func{}{wxRect}{\param{const wxPoint\&}{ topLeft}, \param{const wxPoint\&}{ bottomRight}} + +Creates a wxRect object from top-left and bottom-right points. + +\func{}{wxRect}{\param{const wxPoint\&}{ pos}, \param{const wxSize\&}{ size}} + +Creates a wxRect object from position and size values. + +\membersection{wxRect::x} + +\member{int}{x} + +x member. + +\membersection{wxRect::y} + +\member{int}{y} + +y member. + +\membersection{wxRect::width} + +\member{int}{width} + +Width member. + +\membersection{wxRect::height} + +\member{int}{height} + +Height member. + +\membersection{wxRect::GetBottom}\label{wxrectgetbottom} + +\constfunc{int}{GetBottom}{\void} + +Gets the bottom point of the rectangle. + +\membersection{wxRect::GetHeight}\label{wxrectgetheight} + +\constfunc{int}{GetHeight}{\void} + +Gets the height member. + +\membersection{wxRect::GetLeft}\label{wxrectgetleft} + +\constfunc{int}{GetLeft}{\void} + +Gets the left point of the rectangle (the same as \helpref{wxRect::GetX}{wxrectgetx}). + +\membersection{wxRect::GetPosition}\label{wxrectgetposition} + +\constfunc{wxPoint}{GetPosition}{\void} + +Gets the position. + +\membersection{wxRect::GetRight}\label{wxrectgetright} + +\constfunc{int}{GetRight}{\void} + +Gets the right point of the rectangle. + +\membersection{wxRect::GetSize}\label{wxrectgetsize} + +\constfunc{wxSize}{GetSize}{\void} + +Gets the size. + +\membersection{wxRect::GetTop}\label{wxrectgettop} + +\constfunc{int}{GetTop}{\void} + +Gets the top point of the rectangle (the same as \helpref{wxRect::GetY}{wxrectgety}). + +\membersection{wxRect::GetWidth}\label{wxrectgetwidth} + +\constfunc{int}{GetWidth}{\void} + +Gets the width member. + +\membersection{wxRect::GetX}\label{wxrectgetx} + +\constfunc{int}{GetX}{\void} + +Gets the x member. + +\membersection{wxRect::GetY}\label{wxrectgety} + +\constfunc{int}{GetY}{\void} + +Gets the y member. + +\membersection{wxRect::SetHeight}\label{wxrectsetheight} + +\func{void}{SetHeight}{\param{const int}{ height}} + +Sets the height. + +\membersection{wxRect::SetWidth}\label{wxrectsetwidth} + +\func{void}{SetWidth}{\param{const int}{ width}} + +Sets the width. + +\membersection{wxRect::SetX}\label{wxrectsetx} + +\func{void}{SetX}{\param{const int}{ x}} + +Sets the x position. + +\membersection{wxRect::SetY}\label{wxrectsety} + +\func{void}{SetY}{\param{const int}{ y}} + +Sets the y position. + +\membersection{wxRect::operator $=$} + +\func{void}{operator $=$}{\param{const wxRect\& }{rect}} + +Assignment operator. + +\membersection{wxRect::operator $==$} + +\func{bool}{operator $==$}{\param{const wxRect\& }{rect}} + +Equality operator. + +\membersection{wxRect::operator $!=$} + +\func{bool}{operator $!=$}{\param{const wxRect\& }{rect}} + +Inequality operator. + + diff --git a/docs/latex/wx/referenc.tex b/docs/latex/wx/referenc.tex new file mode 100644 index 0000000000..c57ed7b601 --- /dev/null +++ b/docs/latex/wx/referenc.tex @@ -0,0 +1,73 @@ +\documentstyle[a4,makeidx,verbatim,texhelp,fancyhea,mysober,mytitle]{report} +\newcommand{\indexit}[1]{#1\index{#1}} +\newcommand{\pipe}[0]{$\|$\ }% +\input psbox.tex + +% Remove this for processing with dvi2ps instead of dvips +%\special{!/@scaleunit 1 def} + +\parskip=10pt +\parindent=0pt +\title{Reference Manual for wxWindows 2.0: a portable C++ GUI toolkit} +\author{Julian Smart and Markus Holzem} +\date{October 21st 1997} + +\makeindex +\begin{document} +\maketitle + +\pagestyle{fancyplain} +\bibliographystyle{plain} +\setheader{{\it CONTENTS}}{}{}{}{}{{\it CONTENTS}} +\setfooter{\thepage}{}{}{}{}{\thepage} +\pagenumbering{roman} +\tableofcontents + + +\chapter*{Copyright notice} +\setheader{{\it COPYRIGHT}}{}{}{}{}{{\it COPYRIGHT}}% +\setfooter{\thepage}{}{}{}{}{\thepage} + +\begin{center} +Copyright (c) 1997 Julian Smart and Markus Holzem\\ +Portions (c) 1996 Artificial Intelligence Applications Institute\\ +\end{center} + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose is hereby granted without fee, provided that the +above copyright notice, author statement and this permission notice appear in +all copies of this software and related documentation. + +THE SOFTWARE IS PROVIDED ``AS-IS'' AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, +IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF +MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +IN NO EVENT SHALL THE ARTIFICIAL INTELLIGENCE APPLICATIONS INSTITUTE OR THE +UNIVERSITY OF EDINBURGH OR JULIAN SMART OR MARKUS HOLZEM BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF THE POSSIBILITY OF +DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH +THE USE OR PERFORMANCE OF THIS SOFTWARE. + +\chapter{This manual} +\pagenumbering{arabic}% +\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% +\setfooter{\thepage}{}{}{}{}{\thepage} + +wxWindows is a class library for C++ providing GUI (Graphical User +Interface) and other facilities on more than one platform. This document +gives detailed information about the classes and functions that make up +the wxWindows API (Application Programming Interface). Please refer to the +wxWindows user manual for a more general description of wxWindows. + +\input{classes.tex} +\input{category.tex} +\input{topics.tex} + +\addcontentsline{toc}{chapter}{Index} +\setheader{{\it INDEX}}{}{}{}{}{{\it INDEX}}% +\setfooter{\thepage}{}{}{}{}{\thepage} +\printindex + +\end{document} + diff --git a/docs/latex/wx/refs.bib b/docs/latex/wx/refs.bib new file mode 100644 index 0000000000..836814c312 --- /dev/null +++ b/docs/latex/wx/refs.bib @@ -0,0 +1,59 @@ +@techreport{robins87, +author = {Robins, Gabriel}, +title = {The {ISI} grapher: a portable tool for displaying graphs pictorially (ISI/RS-87-196)}, +institution = {University of South California}, +year = {1987}, +month = {September} +} +@book{helpbook, +author = {Boggan, Scott and Fakas, David and Welinske, Joe} +, title = {Developing on-line help for {W}indows} +, publisher = {Sams Publishing} +, address = {11711 North College, Carmel, Indiana 46032, USA} +, year = {1993} +} +@book{wong93, +author = {Wong, William} +, title = {Plug and play programming} +, publisher = {M and T Books} +, address = {115 West 18th Street, New York, New York 10011} +, year = {1993} +} +@book{pree94, +author = {Pree, Wolfgang} +, title = {Design patterns for object-oriented software development} +, publisher = {Addison-Wesley} +, address = {Reading, MA} +, year = {1994} +} +@book{gamma95, +author = {Gamma, Erich and Helm, Richard and Johnson, Ralph and Vlissides, John} +, title = {Design patterns: elements of reusable object-oriented software} +, publisher = {Addison-Wesley} +, address = {Reading, MA} +, year = {1994} +} +@book{kopka, +author = {Kopka, Helmut and Daly, Patrick W.} +, title = {A Guide to LaTeX} +, publisher = {Addison-Wesley} +, year = {1993} +} +@manual{smart95a, +author = {Smart, Julian} +, title = {wxCLIPS User Manual} +, publisher = {Artificial Intelligence Applications Institute} +, organization = {University of Edinburgh} +, address = {80 South Bridge, Edinburgh, EH1 1HN} +, year = {1995} +} + +@manual{smart95b, +author = {Smart, Julian} +, title = {Tex2RTF User Manual} +, publisher = {Artificial Intelligence Applications Institute} +, organization = {University of Edinburgh} +, address = {80 South Bridge, Edinburgh, EH1 1HN} +, year = {1995} +} + diff --git a/docs/latex/wx/region.tex b/docs/latex/wx/region.tex new file mode 100644 index 0000000000..1d3c224ada --- /dev/null +++ b/docs/latex/wx/region.tex @@ -0,0 +1,182 @@ +\section{\class{wxRegion}}\label{wxregion} + +A wxRegion represents a simple or complex region on a device context or window. It uses +reference counting, so copying and assignment operations are fast. + +\wxheading{Derived from} + +\helpref{wxGDIObject}{wxgdiobject}\\ +\helpref{wxObject}{wxobject} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxRegion::wxRegion}\label{wxregionconstr} + +\func{}{wxRegion}{\void} + +Default constructor. + +\func{}{wxRegion}{\param{long}{ x}, \param{long}{ y}, \param{long}{ width}, \param{long}{ height}} + +Constructs a rectangular region with the given position and size. + +\func{}{wxRegion}{\param{const wxPoint\&}{ topLeft}, \param{const wxPoint\&}{ bottomRight}} + +Constructs a rectangular region from the top left point and the bottom right point. + +\func{}{wxRegion}{\param{const wxRect\&}{ rect}} + +Constructs a rectangular region a wxRect object. + +\func{}{wxRegion}{\param{const wxRegion\&}{ region}} + +Constructs a region by copying another region. + +\membersection{wxRegion::\destruct{wxRegion}} + +\func{}{\destruct{wxRegion}}{\void} + +Destructor. + +\membersection{wxRegion::Clear}\label{wxregionclear} + +\func{void}{Clear}{\void} + +Clears the current region. + +\membersection{wxRegion::Contains}\label{wxregioncontains} + +\constfunc{wxRegionContain}{Contains}{\param{long\& }{x}, \param{long\& }{y}} + +Returns a value indicating whether the given point is contained within the region. + +\constfunc{wxRegionContain}{Contains}{\param{const wxPoint\&}{ pt}} + +Returns a value indicating whether the given point is contained within the region. + +\constfunc{wxRegionContain}{Contains}{\param{long\& }{x}, \param{long\& }{y}, \param{long\& }{width}, \param{long\& }{height}} + +Returns a value indicating whether the given rectangle is contained within the region. + +\constfunc{wxRegionContain}{Contains}{\param{const wxRect\& }{rect}} + +Returns a value indicating whether the given rectangle is contained within the region. + +\wxheading{Return value} + +The return value is one of wxOutRegion, wxPartRegion and wxInRegion. + +On Windows, only wxOutRegion and wxInRegion are returned; a value wxInRegion then indicates that +all or some part of the region is contained in this region. + +\membersection{wxRegion::GetBox}\label{wxregiongetbox} + +\constfunc{void}{GetBox}{\param{long\& }{x}, \param{long\& }{y}, \param{long\& }{width}, \param{long\& }{height}} + +Returns the outer bounds of the region. + +\constfunc{wxRect}{GetBox}{\void} + +Returns the outer bounds of the region. + +\membersection{wxRegion::Intersect}\label{wxregionintersect} + +\func{bool}{Intersect}{\param{long}{ x}, \param{long}{ y}, \param{long}{ width}, \param{long}{ height}} + +Finds the intersection of this region and another, rectangular region, specified using position and size. + +\func{bool}{Intersect}{\param{const wxRect\&}{ rect}} + +Finds the intersection of this region and another, rectangular region. + +\func{bool}{Intersect}{\param{const wxRegion\&}{ region}} + +Finds the intersection of this region and another region. + +\wxheading{Return value} + +TRUE if successful, FALSE otherwise. + +\wxheading{Remarks} + +Creates the intersection of the two regions, that is, the parts which are in both regions. The result +is stored in this region. + +\membersection{wxRegion::IsEmpty}\label{wxregionisempty} + +\constfunc{bool}{IsEmpty}{\void} + +\func{bool}{IsEmpty}{\void} + +Returns TRUE if the region is empty, FALSE otherwise. + +\func{bool}{Subtract}{\param{const wxRect\&}{ rect}} + +Subtracts a rectangular region from this region. + +\func{bool}{Subtract}{\param{const wxRegion\&}{ region}} + +Subtracts a region from this region. + +\wxheading{Return value} + +TRUE if successful, FALSE otherwise. + +\wxheading{Remarks} + +This operation combines the parts of 'this' region that are not part of the second region. +The result is stored in this region. + +\membersection{wxRegion::Union}\label{wxregionunion} + +\func{bool}{Union}{\param{long}{ x}, \param{long}{ y}, \param{long}{ width}, \param{long}{ height}} + +Finds the union of this region and another, rectangular region, specified using position and size. + +\func{bool}{Union}{\param{const wxRect\&}{ rect}} + +Finds the union of this region and another, rectangular region. + +\func{bool}{Union}{\param{const wxRegion\&}{ region}} + +Finds the union of this region and another region. + +\wxheading{Return value} + +TRUE if successful, FALSE otherwise. + +\wxheading{Remarks} + +This operation creates a region that combines all of this region and the second region. +The result is stored in this region. + +\membersection{wxRegion::Xor}\label{wxregionxor} + +\func{bool}{Xor}{\param{long}{ x}, \param{long}{ y}, \param{long}{ width}, \param{long}{ height}} + +Finds the Xor of this region and another, rectangular region, specified using position and size. + +\func{bool}{Xor}{\param{const wxRect\&}{ rect}} + +Finds the Xor of this region and another, rectangular region. + +\func{bool}{Xor}{\param{const wxRegion\&}{ region}} + +Finds the Xor of this region and another region. + +\wxheading{Return value} + +TRUE if successful, FALSE otherwise. + +\wxheading{Remarks} + +This operation creates a region that combines all of this region and the second region, except +for any overlapping areas. The result is stored in this region. + +\membersection{wxRegion::operator $=$}\label{wxregionassign} + +\func{void}{operator $=$}{\param{const wxRegion\&}{ region}} + +Copies {\it region} by reference counting. + + diff --git a/docs/latex/wx/screendc.tex b/docs/latex/wx/screendc.tex new file mode 100644 index 0000000000..9c5b06a3ef --- /dev/null +++ b/docs/latex/wx/screendc.tex @@ -0,0 +1,55 @@ +\section{\class{wxScreenDC}}\label{wxscreendc} + +A wxScreenDC can be used to paint on the screen. +This should normally be constructed as a temporary stack object; don't store +a wxScreenDC object. + +\wxheading{Derived from} + +\helpref{wxDC}{wxdc} + +\wxheading{See also} + +\helpref{wxDC}{wxdc}, \helpref{wxMemoryDC}{wxmemorydc}, \helpref{wxPaintDC}{wxpaintdc},\rtfsp +\helpref{wxClientDC}{wxclientdc}, \helpref{wxWindowDC}{wxwindowdc} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxScreenDC::wxScreenDC} + +\func{}{wxScreenDC}{\void} + +Constructor. + +\membersection{wxScreenDC::StartDrawingOnTop}\label{wxscreendcstartdrawingontop} + +\func{bool}{StartDrawingOnTop}{\param{wxWindow*}{ window}} + +\func{bool}{StartDrawingOnTop}{\param{wxRect*}{ rect = NULL}} + +Use this in conjunction with \helpref{EndDrawingOnTop}{wxscreendcenddrawingontop} to +ensure that drawing to the screen occurs on top of existing windows. Without this, +some window systems (such as X) only allow drawing to take place underneath +other windows. + +By using the first form of this function, an application is specifying that +the area that will be drawn on coincides with the given window. + +By using the second form, an application can specify an area of the screen +which is to be drawn on. If NULL is passed, the whole screen is available. + +It is recommended that an area of the screen is specified because with large regions, +flickering effects are noticeable when destroying the temporary transparent window used +to implement this feature. + +You might use this pair of functions when implementing a drag feature, for example +as in the \helpref{wxSplitterWindow}{wxsplitterwindow} implementation. + +\membersection{wxScreenDC::EndDrawingOnTop}\label{wxscreendcenddrawingontop} + +\func{bool}{EndDrawingOnTop}{\void} + +Use this in conjunction with \helpref{StartDrawingOnTop}{wxscreendcstartdrawingontop}. + +This function destroys the temporary window created to implement on-top drawing (X only). + diff --git a/docs/latex/wx/scrolbar.tex b/docs/latex/wx/scrolbar.tex new file mode 100644 index 0000000000..3836a838d7 --- /dev/null +++ b/docs/latex/wx/scrolbar.tex @@ -0,0 +1,295 @@ +\section{\class{wxScrollBar}}\label{wxscrollbar} + +A wxScrollBar is a control that represents a horizontal or +vertical scrollbar. It is distinct from the two scrollbars that some windows +provide automatically, but the two types of scrollbar share the way +events are received. + +\wxheading{Derived from} + +\helpref{wxControl}{wxcontrol}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{wxSB\_HORIZONTAL}}{Specifies a horizontal scrollbar.} +\twocolitem{\windowstyle{wxSB\_VERTICAL}}{Specifies a vertical scrollbar.} +\end{twocollist} + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{Remarks} + +A scrollbar has the following main attributes: {\it range}, {\it thumb size}, {\it page size}, and {\it position}. + +The range is the total number of units associated with the view represented by the scrollbar. +For a table with 15 columns, the range would be 15. + +The thumb size is the number of units that are currently visible. For the table example, the window +might be sized so that only 5 columns are currently visible, in which case the application would +set the thumb size to 5. When the thumb size becomes the same as or greater than the range, +the scrollbar will be automatically hidden on most platforms. + +The page size is the number of units that the scrollbar should scroll by, when `paging' through +the data. This value is normally the same as the thumb size length, because +it is natural to assume that the visible window size defines a page. + +The scrollbar position is the current thumb position. + +Most applications will find it convenient to provide a function called {\bf AdjustScrollbars} which can +be called initially, from an {\bf OnSize} event handler, and whenever the application data +changes in size. It will adjust the view, object and page size according +to the size of the window and the size of the data. + +\wxheading{Event handling} + +To process input from a scrollbar, use one of these event handler macros to direct input to member +functions that take a \helpref{wxScrollEvent}{wxscrollevent} argument: + +\twocolwidtha{7cm} +\begin{twocollist} +\twocolitem{{\bf EVT\_COMMAND\_SCROLL(id, func)}}{Catch all scroll commands.} +\twocolitem{{\bf EVT\_COMMAND\_TOP(id, func)}}{Catch a command to put the scroll thumb at the maximum position.} +\twocolitem{{\bf EVT\_COMMAND\_BOTTOM(id, func)}}{Catch a command to put the scroll thumb at the maximum position.} +\twocolitem{{\bf EVT\_COMMAND\_LINEUP(id, func)}}{Catch a line up command.} +\twocolitem{{\bf EVT\_COMMAND\_LINEDOWN(id, func)}}{Catch a line down command.} +\twocolitem{{\bf EVT\_COMMAND\_PAGEUP(id, func)}}{Catch a page up command.} +\twocolitem{{\bf EVT\_COMMAND\_PAGEDOWN(id, func)}}{Catch a page down command.} +\twocolitem{{\bf EVT\_COMMAND\_THUMBTRACK(id, func)}}{Catch a thumbtrack command (continuous movement of the scroll thumb).} +\end{twocollist}% +% +\wxheading{See also} + +\helpref{Scrolling overview}{scrollingoverview},\rtfsp +\helpref{Event handling overview}{eventhandlingoverview},\rtfsp +\helpref{wxScrolledWindow}{wxscrolledwindow} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxScrollBar::wxScrollBar}\label{wxscrollbarconstr} + +\func{}{wxScrollBar}{\void} + +Default constructor. + +\func{}{wxScrollBar}{\param{wxWindow*}{ parent}, \param{const wxWindowID }{id},\rtfsp +\param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long}{ style = wxSB\_HORIZONTAL}, \param{const wxValidator\& }{validator = wxDefaultValidator},\rtfsp +\param{const wxString\& }{name = ``scrollBar"}} + +Constructor, creating and showing a scrollbar. + +\wxheading{Parameters} + +\docparam{parent}{Parent window. Must not be NULL.} + +\docparam{id}{Window identifier. A value of -1 indicates a default value.} + +\docparam{pos}{Window position. If the position (-1, -1) is specified then a default position is chosen.} + +\docparam{size}{Window size. If the default size (-1, -1) is specified then a default size is chosen.} + +\docparam{style}{Window style. See \helpref{wxScrollBar}{wxscrollbar}.} + +\docparam{validator}{Window validator.} + +\docparam{name}{Window name.} + +\wxheading{See also} + +\helpref{wxScrollBar::Create}{wxscrollbarcreate}, \helpref{wxValidator}{wxvalidator} + +\membersection{wxScrollBar::\destruct{wxScrollBar}} + +\func{void}{\destruct{wxScrollBar}}{\void} + +Destructor, destroying the scrollbar. + +\membersection{wxScrollBar::Create}\label{wxscrollbarcreate} + +\func{bool}{Create}{\param{wxWindow*}{ parent}, \param{const wxWindowID }{id},\rtfsp +\param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long}{ style = wxSB\_HORIZONTAL}, \param{const wxValidator\& }{validator = wxDefaultValidator},\rtfsp +\param{const wxString\& }{name = ``scrollBar"}} + +Scrollbar creation function called by the scrollbar constructor. +See \helpref{wxScrollBar::wxScrollBar}{wxscrollbarconstr} for details. + +\membersection{wxScrollBar::GetRange}\label{wxscrollbargetrange} + +\constfunc{int}{GetRange}{\void} + +Returns the length of the scrollbar. + +\wxheading{See also} + +\helpref{wxScrollBar::SetScrollbar}{wxscrollbarsetscrollbar} + +\membersection{wxScrollBar::GetPageSize}\label{wxscrollbargetpagesize} + +\constfunc{int}{GetPageSize}{\void} + +Returns the page size of the scrollbar. This is the number of scroll units +that will be scrolled when the user pages up or down. Often it is the +same as the thumb size. + +\wxheading{See also} + +\helpref{wxScrollBar::SetScrollbar}{wxscrollbarsetscrollbar} + +\membersection{wxScrollBar::GetPosition}\label{wxscrollbargetposition} + +\constfunc{int}{GetPosition}{\void} + +Returns the current position of the scrollbar. + +\wxheading{See also} + +\helpref{wxScrollBar::SetPosition}{wxscrollbarsetposition} + +\membersection{wxScrollBar::GetThumbLength}\label{wxscrollbargetthumblength} + +\constfunc{int}{GetThumbLength}{\void} + +Returns the thumb or `view' size. + +\wxheading{See also} + +\helpref{wxScrollBar::SetScrollbar}{wxscrollbarsetscrollbar} + +\begin{comment} +\membersection{wxScrollBar::SetObjectLength}\label{wxscrollbarsetobjectlength} + +\func{void}{SetObjectLength}{\param{const int}{ objectLength}} + +Sets the object length for the scrollbar. This is the total object size (virtual size). You must +call \helpref{SetViewLength}{wxscrollbarsetviewlength} {\it before} calling SetObjectLength. + +\wxheading{Parameters} + +\docparam{objectLength}{The object length of the scrollbar.} + +\wxheading{Remarks} + +Example: you are implementing scrollbars on a text window, where text lines have a maximum width +of 100 characters. Your text window has a current width of 60 characters. So the view length is 60, +and the object length is 100. The scrollbar will then enable you to scroll to see the other 40 characters. + +You will need to call {\bf SetViewLength} and {\bf SetObjectLength} whenever there +is a change in the size of the window (the view size) or the size of the +contents (the object length). + +\wxheading{See also} + +\helpref{wxScrollBar::GetObjectLength}{wxscrollbargetobjectlength} + +\membersection{wxScrollBar::SetPageSize}\label{wxscrollbarsetpagesize} + +\func{void}{SetPageSize}{\param{const int}{ pageSize}} + +Sets the page size for the scrollbar. This is the number of scroll units which are scrolled when the +user pages down (clicks on the scrollbar outside the thumbtrack area). + +\wxheading{Parameters} + +\docparam{pageSize}{The page size in scroll units.} + +\wxheading{Remarks} + +At present, this needs to be called {\it before} other set functions. + +\wxheading{See also} + +\helpref{wxScrollBar::GetPageSize}{wxscrollbargetpagesize} +\end{comment} + +\membersection{wxScrollBar::SetPosition}\label{wxscrollbarsetposition} + +\func{void}{SetPosition}{\param{const int}{ viewStart}} + +Sets the position of the scrollbar. + +\wxheading{Parameters} + +\docparam{viewStart}{The position of the scrollbar thumb.} + +\wxheading{See also} + +\helpref{wxScrollBar::GetPosition}{wxscrollbargetposition} + +\membersection{wxScrollBar::SetScrollbar}\label{wxscrollbarsetscrollbar} + +\func{virtual void}{SetScrollbar}{\param{const int }{position},\rtfsp +\param{const int }{thumbSize}, \param{const int }{range},\rtfsp +\param{const int }{pageSize},\rtfsp +\param{const bool }{refresh = TRUE}} + +Sets the scrollbar properties. + +\wxheading{Parameters} + +\docparam{position}{The position of the scrollbar in scroll units.} + +\docparam{thumbSize}{The size of the thumb, or visible portion of the scrollbar, in scroll units.} + +\docparam{range}{The maximum position of the scrollbar.} + +\docparam{pageSize}{The size of the page size in scroll units. This is the number of units +the scrollbar will scroll when it is paged up or down. Often it is the same as +the thumb size.} + +\docparam{refresh}{TRUE to redraw the scrollbar, FALSE otherwise.} + +\wxheading{Remarks} + +Let's say you wish to display 50 lines of text, using the same font. +The window is sized so that you can only see 16 lines at a time. + +You would use: + +{\small% +\begin{verbatim} + scrollbar->SetScrollbar(0, 16, 50, 15); +\end{verbatim} +} + +The page size is 1 less than the thumb size so that the last line of the previous +page will be visible on the next page, to help orient the user. + +Note that with the window at this size, the thumb position can never go +above 50 minus 16, or 34. + +You can determine how many lines are currently visible by dividing the current view +size by the character height in pixels. + +When defining your own scrollbar behaviour, you will always need to recalculate +the scrollbar settings when the window size changes. You could therefore put your +scrollbar calculations and SetScrollbar +call into a function named AdjustScrollbars, which can be called initially and also +from a \helpref{wxWindow::OnSize}{wxwindowonsize} event handler function. + +\wxheading{See also} + +\helpref{Scrolling overview}{scrollingoverview},\rtfsp +\helpref{wxWindow::SetScrollbar}{wxwindowsetscrollbar}, \helpref{wxScrolledWindow}{wxscrolledwindow} + +\begin{comment} +\membersection{wxScrollBar::SetViewLength}\label{wxscrollbarsetviewlength} + +\func{void}{SetViewLength}{\param{const int}{ viewLength}} + +Sets the view length for the scrollbar. + +\wxheading{Parameters} + +\docparam{viewLength}{View length.} + +\wxheading{See also} + +\helpref{wxScrollBar::GetViewLength}{wxscrollbargetviewlength} +\end{comment} + diff --git a/docs/latex/wx/scrolevt.tex b/docs/latex/wx/scrolevt.tex new file mode 100644 index 0000000000..7ed9ea26de --- /dev/null +++ b/docs/latex/wx/scrolevt.tex @@ -0,0 +1,71 @@ +\section{\class{wxScrollEvent}}\label{wxscrollevent} + +A scroll event holds information about events sent from scrollbars and scrolling windows. + +\wxheading{Derived from} + +\helpref{wxCommandEvent}{wxcommandevent}\\ +\helpref{wxEvent}{wxevent}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Event table macros} + +To process a scroll event, use these event handler macros to direct input to member +functions that take a wxScrollEvent argument. You can use EVT\_COMMAND\_SCROLL... macros +with window IDs for when intercepting scroll events from controls, or EVT\_SCROLL... macros +without window IDs for intercepting scroll events from the receiving window. + +\twocolwidtha{7cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf EVT\_SCROLL(func)}}{Process all scroll events.} +\twocolitem{{\bf EVT\_SCROLL\_TOP(func)}}{Process wxEVT\_SCROLL\_TOP scroll-to-top events.} +\twocolitem{{\bf EVT\_SCROLL\_BOTTOM(func)}}{Process wxEVT\_SCROLL\_TOP scroll-to-bottom events.} +\twocolitem{{\bf EVT\_SCROLL\_LINEUP(func)}}{Process wxEVT\_SCROLL\_LINEUP line up events.} +\twocolitem{{\bf EVT\_SCROLL\_LINEDOWN(func)}}{Process wxEVT\_SCROLL\_LINEDOWN line down events.} +\twocolitem{{\bf EVT\_SCROLL\_PAGEUP(func)}}{Process wxEVT\_SCROLL\_PAGEUP page up events.} +\twocolitem{{\bf EVT\_SCROLL\_PAGEDOWN(func)}}{Process wxEVT\_SCROLL\_PAGEDOWN page down events.} +\twocolitem{{\bf EVT\_SCROLL\_THUMBTRACK(func)}}{Process wxEVT\_SCROLL\_THUMBTRACK thumbtrack events (frequent events +sent as the user drags the thumtrack).} +\twocolitem{{\bf EVT\_COMMAND\_SCROLL(id, func)}}{Process all scroll events.} +\twocolitem{{\bf EVT\_COMMAND\_SCROLL\_TOP(id, func)}}{Process wxEVT\_SCROLL\_TOP scroll-to-top events.} +\twocolitem{{\bf EVT\_COMMAND\_SCROLL\_BOTTOM(id, func)}}{Process wxEVT\_SCROLL\_TOP scroll-to-bottom events.} +\twocolitem{{\bf EVT\_COMMAND\_SCROLL\_LINEUP(id, func)}}{Process wxEVT\_SCROLL\_LINEUP line up events.} +\twocolitem{{\bf EVT\_COMMAND\_SCROLL\_LINEDOWN(id, func)}}{Process wxEVT\_SCROLL\_LINEDOWN line down events.} +\twocolitem{{\bf EVT\_COMMAND\_SCROLL\_PAGEUP(id, func)}}{Process wxEVT\_SCROLL\_PAGEUP page up events.} +\twocolitem{{\bf EVT\_COMMAND\_SCROLL\_PAGEDOWN(id, func)}}{Process wxEVT\_SCROLL\_PAGEDOWN page down events.} +\twocolitem{{\bf EVT\_COMMAND\_SCROLL\_THUMBTRACK(id, func)}}{Process wxEVT\_SCROLL\_THUMBTRACK thumbtrack events (frequent events +sent as the user drags the thumtrack).} +\end{twocollist}% + +\wxheading{Remarks} + +Note that unless specifying a scroll control identifier, you will need to test for scrollbar +orientation with \helpref{wxScrollEvent::GetOrientation}{wxscrolleventgetorientation}, since +horizontal and vertical scroll events are processed using the same event handler. + +\wxheading{See also} + +\helpref{wxWindow::OnScroll}{wxwindowonscroll}, \helpref{wxScrollBar}{wxscrollbar}, \helpref{Event handling overview}{eventhandlingoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxScrollEvent::wxScrollEvent} + +\func{}{wxScrollEvent}{\param{WXTYPE }{commandType = 0}, \param{int }{id = 0}, \param{int}{ pos = 0}, +\rtfsp\param{int}{ orientation = 0}} + +Constructor. + +\membersection{wxScrollEvent::GetOrientation}\label{wxscrolleventgetorientation} + +\constfunc{int}{GetOrientation}{\void} + +Returns wxHORIZONTAL or wxVERTICAL, depending on the orientation of the scrollbar. + +\membersection{wxScrollEvent::GetPosition}\label{wxscrolleventgetposition} + +\constfunc{int}{GetPosition}{\void} + +Returns the position of the scrollbar. + + diff --git a/docs/latex/wx/scrolwin.tex b/docs/latex/wx/scrolwin.tex new file mode 100644 index 0000000000..bed28301c1 --- /dev/null +++ b/docs/latex/wx/scrolwin.tex @@ -0,0 +1,337 @@ +\section{\class{wxScrolledWindow}}\label{wxscrolledwindow} + +The wxScrolledWindow class manages scrolling for its client area, transforming +the coordinates according to the scrollbar positions, and setting the +scroll positions, thumb sizes and ranges according to the area in view. + +As with all windows, an application can draw onto a wxScrolledWindow using a \helpref{device context}{dcoverview}. + +You have the option of handling the \helpref{OnPaint}{wxscrolledwindowonpaint} handler +or overriding the \helpref{OnDraw}{wxscrolledwindowondraw} function, which is passed +a pre-scrolled device context (prepared by \helpref{PrepareDC}{wxscrolledwindowpreparedc}). + +If you don't wish to calculate your own scrolling, you must call PrepareDC when not drawing from +within OnDraw, to set the device origin for the device context according to the current +scroll position. + +\wxheading{Derived from} + +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{wxRETAINED}}{Uses a backing pixmap to speed refreshes. Motif only.} +\end{twocollist} + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{Remarks} + +Use wxScrolledWindow for applications where the user scrolls by a fixed amount, and +where a `page' can be interpreted to be the current visible portion of the window. For +more sophisticated applications, use the wxScrolledWindow implementation as a guide +to build your own scroll behaviour. + +\wxheading{See also} + +\helpref{wxScrollBar}{wxscrollbar}, \helpref{wxClientDC}{wxclientdc}, \helpref{wxPaintDC}{wxpaintdc} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxScrolledWindow::wxScrolledWindow}\label{wxscrolledwindowconstr} + +\func{}{wxScrolledWindow}{\void} + +Default constructor. + +\func{}{wxScrolledWindow}{\param{wxWindow*}{ parent}, \param{const wxWindowID }{id = -1},\rtfsp +\param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long}{ style = wxHSCROLL \pipe wxVSCROLL}, \param{const wxString\& }{name = ``scrolledWindow"}} + +Constructor. + +\wxheading{Parameters} + +\docparam{parent}{Parent window.} + +\docparam{id}{Window identifier. A value of -1 indicates a default value.} + +\docparam{pos}{Window position. If a position of (-1, -1) is specified then a default position +is chosen.} + +\docparam{size}{Window size. If a size of (-1, -1) is specified then the window is sized +appropriately.} + +\docparam{style}{Window style. See \helpref{wxScrolledWindow}{wxscrolledwindow}.} + +\docparam{name}{Window name.} + +\wxheading{Remarks} + +The window is initially created without visible scrollbars. +Call \helpref{wxScrolledWindow::SetScrollbars}{wxscrolledwindowsetscrollbars} to +specify how big the virtual window size should be. + +\membersection{wxScrolledWindow::\destruct{wxScrolledWindow}} + +\func{}{\destruct{wxScrolledWindow}}{\void} + +Destructor. + +\membersection{wxScrolledWindow::Create}\label{wxscrolledwindowcreate} + +\func{bool}{Create}{\param{wxWindow*}{ parent}, \param{const wxWindowID }{id = -1},\rtfsp +\param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long}{ style = wxHSCROLL \pipe wxVSCROLL}, \param{const wxString\& }{name = ``scrolledWindow"}} + +Creates the window for two-step construction. Derived classes +should call or replace this function. See \helpref{wxScrolledWindow::wxScrolledWindow}{wxscrolledwindowconstr}\rtfsp +for details. + +\membersection{wxScrolledWindow::EnableScrolling}\label{wxscrolledwindowenablescrolling} + +\func{void}{EnableScrolling}{\param{const bool}{ xScrolling}, \param{const bool}{ yScrolling}} + +Enable or disable physical scrolling in the given direction. Physical +scrolling is the physical transfer of bits up or down the +screen when a scroll event occurs. If the application scrolls by a +variable amount (e.g. if there are different font sizes) then physical +scrolling will not work, and you should switch it off. + +\wxheading{Parameters} + +\docparam{xScrolling}{If TRUE, enables physical scrolling in the x direction.} + +\docparam{yScrolling}{If TRUE, enables physical scrolling in the y direction.} + +\wxheading{Remarks} + +Physical scrolling may not be available on all platforms. Where it is available, it is enabled +by default. + +\membersection{wxScrolledWindow::GetScrollPixelsPerUnit}\label{wxscrolledwindowgetscrollpixelsperunit} + +\constfunc{void}{GetScrollPixelsPerUnit}{\param{int* }{xUnit}, \param{int* }{yUnit}} + +Get the number of pixels per scroll unit (line), in each direction, as set +by \helpref{wxScrolledWindow::SetScrollbars}{wxscrolledwindowsetscrollbars}. A value of zero indicates no +scrolling in that direction. + +\wxheading{Parameters} + +\docparam{xUnit}{Receives the number of pixels per horizontal unit.} + +\docparam{yUnit}{Receives the number of pixels per vertical unit.} + +\wxheading{See also} + +\helpref{wxScrolledWindow::SetScrollbars}{wxscrolledwindowsetscrollbars},\rtfsp +\helpref{wxScrolledWindow::GetVirtualSize}{wxscrolledwindowgetvirtualsize},\rtfsp +\helpref{wxWindow::GetScrollPage}{wxwindowgetscrollpage} + +\membersection{wxScrolledWindow::GetVirtualSize}\label{wxscrolledwindowgetvirtualsize} + +\constfunc{void}{GetVirtualSize}{\param{int* }{x}, \param{int* }{y}} + +Gets the size in device units of the scrollable window area (as +opposed to the client size, which is the area of the window currently +visible). + +\wxheading{Parameters} + +\docparam{x}{Receives the length of the scrollable window, in pixels.} + +\docparam{y}{Receives the height of the scrollable window, in pixels.} + +\wxheading{Remarks} + +Use \helpref{wxDC::DeviceToLogicalX}{wxdcdevicetologicalx} and \helpref{wxDC::DeviceToLogicalY}{wxdcdevicetologicaly}\rtfsp +to translate these units to logical units. + +\wxheading{See also} + +\helpref{wxScrolledWindow::SetScrollbars}{wxscrolledwindowsetscrollbars},\rtfsp +\helpref{wxScrolledWindow::GetScrollPixelsPerUnit}{wxscrolledwindowgetscrollpixelsperunit},\rtfsp +\helpref{wxWindow::GetScrollPage}{wxwindowgetscrollpage} + +\membersection{wxScrolledWindow::IsRetained}\label{wxscrolledwindowisretained} + +\constfunc{bool}{IsRetained}{\void} + +TRUE if the window has a backing bitmap. + +\membersection{wxScrolledWindow::PrepareDC}\label{wxscrolledwindowpreparedc} + +\func{void}{PrepareDC}{\param{wxDC\& }{dc}} + +Call this function to prepare the device context for drawing a scrolled image. It +sets the device origin according to the current scroll position. + +PrepareDC is called automatically within the default \helpref{wxScrolledWindow::OnPaint}{wxscrolledwindowonpaint} event +handler, so your \helpref{wxScrolledWindow::OnDraw}{wxscrolledwindowondraw} override +will be passed a 'pre-scrolled' device context. However, if you wish to draw from +outside of OnDraw (via OnPaint), or you wish to implement OnPaint yourself, you must +call this function yourself. For example: + +\begin{verbatim} +void MyCanvas::OnEvent(wxMouseEvent& event) +{ + wxClientDC dc(this); + PrepareDC(dc); + + dc.SetPen(*wxBLACK_PEN); + float x, y; + event.Position(&x, &y); + if (xpos > -1 && ypos > -1 && event.Dragging()) + { + dc.DrawLine(xpos, ypos, x, y); + } + xpos = x; + ypos = y; +} +\end{verbatim} + +\membersection{wxScrolledWindow::OnDraw}\label{wxscrolledwindowondraw} + +\func{virtual void}{OnDraw}{\param{wxDC\& }{dc}} + +Called by the default \helpref{wxScrolledWindow::OnPaint}{wxscrolledwindowonpaint} implementation +to allow the application to define painting behaviour without having to worry about +calling \helpref{wxScrolledWindow::PrepareDC}{wxscrolledwindowpreparedc}. + +\membersection{wxScrolledWindow::OnPaint}\label{wxscrolledwindowonpaint} + +\func{void}{OnPaint}{\param{wxPaintEvent\& }{event}} + +Sent to the window when the window must be refreshed. + +For more details, see \helpref{wxWindow::OnPaint}{wxwindowonpaint}. + +The default implementation for wxScrolledWindow's OnPaint handler is simply: + +\begin{verbatim} +void wxScrolledWindow::OnPaint(wxPaintEvent& event) +{ + wxPaintDC dc(this); + PrepareDC(dc); + + OnDraw(dc); +} +\end{verbatim} + +\membersection{wxScrolledWindow::OnScroll}\label{wxscrolledwindowonscroll} + +\func{void}{OnScroll}{\param{wxScrollEvent\& }{event}} + +Override this function to intercept scroll events. This +member function implements the default scroll behaviour. If +you do not call the default function, you will have to manage +all scrolling behaviour including drawing the window contents +at an appropriate position relative to the scrollbars. + +For more details, see \helpref{wxWindow::OnScroll}{wxwindowonscroll}. + +\wxheading{See also} + +\helpref{wxScrollEvent}{wxscrollevent} + +\membersection{wxScrolledWindow::Scroll}\label{wxscrolledwindowscroll} + +\func{void}{Scroll}{\param{int}{ x}, \param{int}{ y}} + +Scrolls a window so the view start is at the given point. + +\wxheading{Parameters} + +\docparam{x}{The x position to scroll to, in scroll units.} + +\docparam{y}{The y position to scroll to, in scroll units.} + +\wxheading{Remarks} + +The positions are in scroll units, not pixels, so to convert to pixels you +will have to multiply by the number of pixels per scroll increment. +If either parameter is -1, that position will be ignored (no change in +that direction). + +\wxheading{See also} + +\helpref{wxScrolledWindow::SetScrollbars}{wxscrolledwindowsetscrollbars},\rtfsp +\helpref{wxScrolledWindow::GetScrollPixelsPerUnit}{wxscrolledwindowgetscrollpixelsperunit} + +\membersection{wxScrolledWindow::SetScrollbars}\label{wxscrolledwindowsetscrollbars} + +\func{void}{SetScrollbars}{\param{int}{ pixelsPerUnitX}, \param{int}{ pixelsPerUnitY},\rtfsp +\param{int}{ noUnitsX}, \param{int}{ noUnitsY},\rtfsp +\param{int }{xPos = 0}, \param{int}{ yPos = 0}} + +Sets up vertical and/or horizontal scrollbars. + +\wxheading{Parameters} + +\docparam{pixelsPerUnitX}{Pixels per scroll unit in the horizontal direction.} + +\docparam{pixelsPerUnitY}{Pixels per scroll unit in the vertical direction.} + +\docparam{noUnitsX}{Number of units in the horizontal direction.} + +\docparam{noUnitsY}{Number of units in the vertical direction.} + +\docparam{xPos}{Position to initialize the scrollbars in the horizontal direction, in scroll units.} + +\docparam{yPos}{Position to initialize the scrollbars in the vertical direction, in scroll units.} + +\wxheading{Remarks} + +The first pair of parameters give the number of pixels per `scroll step', i.e. amount +moved when the up or down scroll arrows are pressed. +The second pair gives the length of scrollbar in scroll steps, which sets the size of the virtual +window. + +{\it xPos} and {\it yPos} optionally specify a position to scroll to immediately. + +For example, the following gives a window horizontal and vertical +scrollbars with 20 pixels per scroll step, and a size of 50 steps (1000 +pixels) in each direction. + +\begin{verbatim} + window->SetScrollbars(20, 20, 50, 50); +\end{verbatim} + +wxScrolledWindow manages the page size itself, +using the current client window size as the page size. + +Note that for more sophisticated scrolling applications, for example where +scroll steps may be variable according to the position in the document, it will be +necessary to derive a new class from wxWindow, overriding {\bf OnSize} and +adjusting the scrollbars appropriately. + +\membersection{wxScrolledWindow::ViewStart}\label{wxscrolledwindowviewstart} + +\constfunc{void}{ViewStart}{\param{int* }{x}, \param{int* }{ y}} + +Get the position at which the visible portion of the window starts. + +\wxheading{Parameters} + +\docparam{x}{Receives the first visible x position in scroll units.} + +\docparam{y}{Receives the first visible y position in scroll units.} + +\wxheading{Remarks} + +If either of the scrollbars is not at the home position, {\it x} and/or +\rtfsp{\it y} will be greater than zero. Combined with \helpref{wxWindow::GetClientSize}{wxwindowgetclientsize}, +the application can use this function to efficiently redraw only the +visible portion of the window. The positions are in logical scroll +units, not pixels, so to convert to pixels you will have to multiply +by the number of pixels per scroll increment. + +\wxheading{See also} + +\helpref{wxScrolledWindow::SetScrollbars}{wxscrolledwindowsetscrollbars} + diff --git a/docs/latex/wx/settings.tex b/docs/latex/wx/settings.tex new file mode 100644 index 0000000000..c85151e9b6 --- /dev/null +++ b/docs/latex/wx/settings.tex @@ -0,0 +1,141 @@ +\section{\class{wxSystemSettings}}\label{wxsystemsettings} + +wxSystemSettings allows the application to ask for details about +the system. This can include settings such as standard colours, fonts, +and user interface element sizes. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxFont}{wxfont}, \helpref{wxColour}{wxcolour} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxSystemSettings::wxSystemSettings} + +\func{}{wxSystemSettings}{\void} + +Default constructor. You don't need to create an instance of wxSystemSettings +since all of its functions are static. + +\membersection{wxSystemSettings::GetSystemColour}\label{wxsystemsettingsgetsystemcolour} + +\func{static wxColour}{GetSystemColour}{\param{int}{ index}} + +Returns a system colour. + +{\it index} can be one of: + +\twocolwidtha{7cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf wxSYS\_COLOUR\_SCROLLBAR}}{The scrollbar grey area.} +\twocolitem{{\bf wxSYS\_COLOUR\_BACKGROUND}}{The desktop colour.} +\twocolitem{{\bf wxSYS\_COLOUR\_ACTIVECAPTION}}{Active window caption.} +\twocolitem{{\bf wxSYS\_COLOUR\_INACTIVECAPTION}}{Inactive window caption.} +\twocolitem{{\bf wxSYS\_COLOUR\_MENU}}{Menu background.} +\twocolitem{{\bf wxSYS\_COLOUR\_WINDOW}}{Window background.} +\twocolitem{{\bf wxSYS\_COLOUR\_WINDOWFRAME}}{Window frame.} +\twocolitem{{\bf wxSYS\_COLOUR\_MENUTEXT}}{Menu text.} +\twocolitem{{\bf wxSYS\_COLOUR\_WINDOWTEXT}}{Text in windows.} +\twocolitem{{\bf wxSYS\_COLOUR\_CAPTIONTEXT}}{Text in caption, size box and scrollbar arrow box.} +\twocolitem{{\bf wxSYS\_COLOUR\_ACTIVEBORDER}}{Active window border.} +\twocolitem{{\bf wxSYS\_COLOUR\_INACTIVEBORDER}}{Inactive window border.} +\twocolitem{{\bf wxSYS\_COLOUR\_APPWORKSPACE}}{Background colour MDI applications.} +\twocolitem{{\bf wxSYS\_COLOUR\_HIGHLIGHT}}{Item(s) selected in a control.} +\twocolitem{{\bf wxSYS\_COLOUR\_HIGHLIGHTTEXT}}{Text of item(s) selected in a control.} +\twocolitem{{\bf wxSYS\_COLOUR\_BTNFACE}}{Face shading on push buttons.} +\twocolitem{{\bf wxSYS\_COLOUR\_BTNSHADOW}}{Edge shading on push buttons.} +\twocolitem{{\bf wxSYS\_COLOUR\_GRAYTEXT}}{Greyed (disabled) text.} +\twocolitem{{\bf wxSYS\_COLOUR\_BTNTEXT}}{Text on push buttons.} +\twocolitem{{\bf wxSYS\_COLOUR\_INACTIVECAPTIONTEXT}}{Colour of text in active captions.} +\twocolitem{{\bf wxSYS\_COLOUR\_BTNHIGHLIGHT}}{Highlight colour for buttons (same as wxSYS\_COLOUR\_3DHILIGHT).} +\twocolitem{{\bf wxSYS\_COLOUR\_3DDKSHADOW}}{Dark shadow for three-dimensional dispaly elements.} +\twocolitem{{\bf wxSYS\_COLOUR\_3DLIGHT}}{Light colour for three-dimensional display elements.} +\twocolitem{{\bf wxSYS\_COLOUR\_INFOTEXT}}{Text colour for tooltip controls.} +\twocolitem{{\bf wxSYS\_COLOUR\_INFOBK}}{Background colour for tooltip controls.} +\twocolitem{{\bf wxSYS\_COLOUR\_DESKTOP}}{Same as wxSYS\_COLOUR\_BACKGROUND.} +\twocolitem{{\bf wxSYS\_COLOUR\_3DFACE}}{Same as wxSYS\_COLOUR\_BTNFACE.} +\twocolitem{{\bf wxSYS\_COLOUR\_3DSHADOW}}{Same as wxSYS\_COLOUR\_BTNSHADOW.} +\twocolitem{{\bf wxSYS\_COLOUR\_3DHIGHLIGHT}}{Same as wxSYS\_COLOUR\_BTNHIGHLIGHT.} +\twocolitem{{\bf wxSYS\_COLOUR\_3DHILIGHT}}{Same as wxSYS\_COLOUR\_BTNHIGHLIGHT.} +\twocolitem{{\bf wxSYS\_COLOUR\_BTNHILIGHT}}{Same as wxSYS\_COLOUR\_BTNHIGHLIGHT.} +\end{twocollist} + +\membersection{wxSystemSettings::GetSystemFont}\label{wxsystemsettingsgetsystemfont} + +\func{static wxFont}{GetSystemFont}{\param{int}{ index}} + +Returns a system font. + +{\it index} can be one of: + +\twocolwidtha{7cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf wxSYS\_OEM\_FIXED\_FONT}}{Original equipment manufacturer dependent fixed-pitch font.} +\twocolitem{{\bf wxSYS\_ANSI\_FIXED\_FONT}}{Windows fixed-pitch font.} +\twocolitem{{\bf wxSYS\_ANSI\_VAR\_FONT}}{Windows variable-pitch (proportional) font.} +\twocolitem{{\bf wxSYS\_SYSTEM\_FONT}}{System font.} +\twocolitem{{\bf wxSYS\_DEVICE\_DEFAULT\_FONT}}{Device-dependent font (Windows NT only).} +\twocolitem{{\bf wxSYS\_DEFAULT\_GUI\_FONT}}{Default font for user interface objects such as menus and dialog boxes. +Not available in versions of Windows earlier than Windows 95 or Windows NT 4.0.} +\end{twocollist} + +\membersection{wxSystemSettings::GetSystemMetric}\label{wxsystemsettingsgetsystemmetric} + +\func{static int}{GetSystemMetric}{\param{int}{ index}} + +Returns a system metric. + +{\it index} can be one of: + +\twocolwidtha{7cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf wxSYS\_MOUSE\_BUTTONS}}{Number of buttons on mouse, or zero if no mouse was installed.} +\twocolitem{{\bf wxSYS\_BORDER\_X}}{Width of single border.} +\twocolitem{{\bf wxSYS\_BORDER\_Y}}{Height of single border.} +\twocolitem{{\bf wxSYS\_CURSOR\_X}}{Width of cursor.} +\twocolitem{{\bf wxSYS\_CURSOR\_Y}}{Height of cursor.} +\twocolitem{{\bf wxSYS\_DCLICK\_X}}{Width in pixels of rectangle within which two successive mouse +clicks must fall to generate a double-click.} +\twocolitem{{\bf wxSYS\_DCLICK\_Y}}{Height in pixels of rectangle within which two successive mouse +clicks must fall to generate a double-click.} +\twocolitem{{\bf wxSYS\_DRAG\_X}}{Width in pixels of a rectangle centered on a drag point +to allow for limited movement of the mouse pointer before a drag operation begins.} +\twocolitem{{\bf wxSYS\_DRAG\_Y}}{Height in pixels of a rectangle centered on a drag point +to allow for limited movement of the mouse pointer before a drag operation begins.} +\twocolitem{{\bf wxSYS\_EDGE\_X}}{Width of a 3D border, in pixels. } +\twocolitem{{\bf wxSYS\_EDGE\_Y}}{Height of a 3D border, in pixels. } +\twocolitem{{\bf wxSYS\_HSCROLL\_ARROW\_X}}{Width of arrow bitmap on horizontal scrollbar.} +\twocolitem{{\bf wxSYS\_HSCROLL\_ARROW\_Y}}{Height of arrow bitmap on horizontal scrollbar.} +\twocolitem{{\bf wxSYS\_HTHUMB\_X}}{Width of horizontal scrollbar thumb.} +\twocolitem{{\bf wxSYS\_ICON\_X}}{The default width of an icon.} +\twocolitem{{\bf wxSYS\_ICON\_Y}}{The default height of an icon.} +\twocolitem{{\bf wxSYS\_ICONSPACING\_X}}{Width of a grid cell for items in large icon view, +in pixels. Each item fits into a rectangle of this size when arranged.} +\twocolitem{{\bf wxSYS\_ICONSPACING\_Y}}{Height of a grid cell for items in large icon view, +in pixels. Each item fits into a rectangle of this size when arranged.} +\twocolitem{{\bf wxSYS\_WINDOWMIN\_X}}{Minimum width of a window.} +\twocolitem{{\bf wxSYS\_WINDOWMIN\_Y}}{Minimum height of a window.} +\twocolitem{{\bf wxSYS\_SCREEN\_X}}{Width of the screen in pixels.} +\twocolitem{{\bf wxSYS\_SCREEN\_Y}}{Height of the screen in pixels.} +\twocolitem{{\bf wxSYS\_FRAMESIZE\_X}}{Width of the window frame for a wxTHICK\_FRAME window.} +\twocolitem{{\bf wxSYS\_FRAMESIZE\_Y}}{Height of the window frame for a wxTHICK\_FRAME window.} +\twocolitem{{\bf wxSYS\_SMALLICON\_X}}{Recommended width of a small icon (in window captions, and small icon view).} +\twocolitem{{\bf wxSYS\_SMALLICON\_Y}}{Recommended height of a small icon (in window captions, and small icon view).} +\twocolitem{{\bf wxSYS\_HSCROLL\_Y}}{Height of horizontal scrollbar in pixels.} +\twocolitem{{\bf wxSYS\_VSCROLL\_X}}{Width of vertical scrollbar in pixels.} +\twocolitem{{\bf wxSYS\_VSCROLL\_ARROW\_X}}{Width of arrow bitmap on a vertical scrollbar.} +\twocolitem{{\bf wxSYS\_VSCROLL\_ARROW\_Y}}{Height of arrow bitmap on a vertical scrollbar.} +\twocolitem{{\bf wxSYS\_VTHUMB\_Y}}{Height of vertical scrollbar thumb.} +\twocolitem{{\bf wxSYS\_CAPTION\_Y}}{Height of normal caption area.} +\twocolitem{{\bf wxSYS\_MENU\_Y}}{Height of single-line menu bar.} +\twocolitem{{\bf wxSYS\_NETWORK\_PRESENT}}{1 if there is a network present, 0 otherwise.} +\twocolitem{{\bf wxSYS\_PENWINDOWS\_PRESENT}}{1 if PenWindows is installed, 0 otherwise.} +\twocolitem{{\bf wxSYS\_SHOW\_SOUNDS}}{Non-zero if the user requires an application to present information visually in situations +where it would otherwise present the information only in audible form; zero otherwise.} +\twocolitem{{\bf wxSYS\_SWAP\_BUTTONS}}{Non-zero if the meanings of the left and right mouse buttons are swapped; zero otherwise.} +\end{twocollist} + diff --git a/docs/latex/wx/shelves.bmp b/docs/latex/wx/shelves.bmp new file mode 100644 index 0000000000000000000000000000000000000000..2e9a62cc5c91d14dc639e3788a65ae5306afea04 GIT binary patch literal 630 zcmaixF;2ul3`KuXiV>`2_6C%cE74G+v|MLHx0YzO&@c>InDD<29yVs7yr!L0Z>0} zG}TM1zu00w%hP(xs#hHI?|0PJ7RIRWOWV5jJDxtc^t+zi4y@MS_WyZPwXPd`v9dZQ z{_GTd`myA{@<7yMSP!g@+&2Da-SB&(pYEetlh|MN1J{lEYi447ur5+OXQ>!uNDE|5T&xo@2;9r0HEQ`>40~$mJeb|!iAv}@|EvsSS!5X$?I|+|uL(6Jdc(8^o z*-pYE+0e2Y79Ol&OSY5nNH(;rhJ^=f*pltEH6GXgjp9dreV&YW#)h}_{Z+rst&XJ|?|fDCI&QqYsW*c7fE_Jg^$oc?2n~B}T33Y=A4-~vb7Fj4 z7>}CEqa69FZzu;3H$LE~ZQdpFfE_Jg^$oc?JaQ0alj(fb>$vgqrrzk{&L224dnxsj zGA3$9XYv>tQXiR%==n+?OLN!xO4m#ELgJzJfHbZO%&&B%)GwoDMF8!ysdX%^;}BNb z85`(0WiLm4@F+Uk8QWQOJn5-w6dnEa>reC7H|@>RI6Bwx9{l6)2JE6G=`uOwfE z`%3ba>nq7u;l7f5<@!qURk*JtU%9@Ld=>61$yctgBwvO5O7fNKE6G>kzLI?9`bzRu zxUVE%xxSKo749p^SFW!lUxoWh@|Ei=$yedNl6>X*O7c~>uOwf&zLIreC7H|@>RI6Bwx9{l6)2JE6G=`uOwfE`%3ba>nq7u;l7f5<@)M+ z^VOpzCLlhJq0S1+SMMwx0X*J^>IjMt8^?jqBN)dih=+~iz~>Q+;}pVUgoDo`97hn3 z5e`0&a2z2##yHqKBH#$&F~-5>5dlX44+jUAM+_VRJRBTc9x-t6dAK;3Jfh&>^Kfx6 zc|^g%<}rbT$0H67HjfD$JRWgyaCuDOVDX5AgUe$I2a87}984aQI5<3F;b8KZ#KGYa z3kQ$KG!6!jXgGL0rg1QMM8m=2F@uB7BOVSGj~N_v9`SH+c+BA-^N5Ip!($EynMXt% z3?8#Ms61lgVDOm5LFEw>2c5?}4kC}JIOsg)aS(Y##X;t=fP=;(E)Ft}1spUUadA+2 zEa4#Wh>U~EV+jX|M`RpC9*a0AJYwS@@>s+{;Sn1Ljfah+D6G3U2LcZpM^T)D3+euc zh2!zvqxJqk;9=o7zCT*;S(+&KKWrR_!&ry+{U{s9=@dbSClBm0`ba&I1gt0u1`q5q z`ba&I1gt2EY&@XbkA?2PxwHeshX-`~Sm^$nOO}_+o&0%d7nv&bnn8=t{Xx{BM&DGS z*O=WR*FEC{d7z8HSEiCd1J-ZnhML#m$pad~sEDh>o5!Qs z|E|vAaWpw}_3`kM-+S}G{G@zUV7%)(D_>!LQobrM-gO=51QuT&!?}AL-2)S^_!!RJ z5u$q#@6Ds{E_$keV^uukqdPcys;dXT`tg9!9Dq3I@lK2f4{T`Yb3`4UJZ1=V3iPWF zk9Y)z;lP?7kMYdP?tk~rgU8W6dc1djJiKuD%y-|%>$%;M7Y{!i9_RC9IQ*^${cw2j zNQT2JK0I-(^GJuoi-#wUbsp((`0((>0TUN2^S`f_5C>e;sIv6?IKDUzYrhAX5XWi# z_aMD-99DkMDR&@|?EbB;%V^s$M z$Fh#JIM#Gfa4hObjAKm)1;?U}#5h)TkZ>&NNR4Af2MNcLj?_4obE; zycqWl^5Hl=;jx>&dEbDGfJ;U9hZescnFUa zBhdP)#5rpT^Y3ddmJX1z2_0}ra;?SY0oNo~T3Q`&kqf5Uimx^i=k@glImANmt7|sZ zphHD>sg~EdXn9;`=Z#*A4r4Gbpej5r0D{p4;IZ34!Sl!N?f&-m_NyQErk=ZJ^W93F zwDC$?ypNTRk1wA-efsgI7qbac*GL(dtXpVMG2)xGZeN~;6^ zDBuNjK+jdTu$S0D-Fd7k9lFo0jvc-O&3Xq_Ppe`F-3B9}jtUJ`@8@(N3mkpuH1@97 zflv@sw-$K73INcq&>O?5#AVO{8Mjh8Ko$zJc|f;NhjNXfqaAa2Y1JuTIXX~V+S1wR z6|Y;hj;gH6DIJ;uFwujrAV5{U!xwx)XK{&};^+Ox=gt4%is#X=z}5r~>iP^QZxbt>gKhz8ktrDkxMW;0HQ$>6+%zZ;qAp zrh2P=$Ixt4CYcTkI2QO5I86R)=cz)Ucg5zow)G<{i*JkF?=Up>jefKv8Yh%qz zrUaaQ-QcTUhYlDW=hvr0^&Y~z6Lw`flx>>kOZN)7Q9p4%|6r`0p06fBV0gpkt)bu`==kD|6Z+7}-Qjdn$9= zq1Wz#(ZH&_P8gSj^OPYgUHHY@%5l7)>H>1I&|91-xw^0y@yLdP2Gtbxqh!3h6y|p6 zyR#J|nEAl9#l!hP=-yd+Ep`O+Iv<<~mYUbeW@L1nrqq>CD=gdN_%!NE$7>u%aAv*r zWs`W%MM|cN{+wQzF+Bq#-CXEwOK89sKFx;8`Sut#QS(0k(&;RJCI(>QZAHrYcnO!8 zK0=KH@d170H#uahO_7nn+j{u*{Z(qEO>dSK*XGNtdJg9MiIXC9Wtb}GOw;2h+lxKP zqL^u(JMLk0c^Zg6=|1h#ZTEgIb93$dn610DL*uOAwhh?p9VrQ!Je%`o7+Ew}efCIB z>6Ec@6^cHg1JdrZwkn$33A4)zSage;GrS}nV{UNCOX`ayYq`UGlx>~EP~c7Ouk-GN zdFX6#>oydrPj}8RDbzLAb}oV`>B1t6InTf<-a?CU0?u``cJBkrJO3f*+@Um|(#iDb zY>42YUV;BbqM>D!_cWB~@Q|Lxc9f)8D5x3Tdzjh#!Zz_j$DyvlDIg4xL{awdhD=FApF{O6d=p!Xn< zyY#|Yk{ju931n0$c7ceise0n#SgSAt+$@{2)+j5VYqmED;(H#gNBHR^xAj3Kt(d>q zPb5$tm1zJFRrtF{JsB!>d`VcH(NpbvlB7!_YL`E(#`=}&*=z+T+qxp7ZKk2kK9fe zhtq8aL15eDj=D2fU(SW6J#AMYI}x{Sk!~-6pRXf#B84<_nGJegvRJEv6qHab4#0N6 z#7?wK-~1=F;`W;-J5WWIylXTlu;WhNh3Mg2_;o~2$9=io*w^qpb_}pn#JDP!h2D&X zueDPgvJ10h$>-_@c0EDv!W}j90o0x@Y2v4NBZY;3=o9JW%y$#~`|@x8l!~Y?-)o18}B7CIcA~g$el`0_L6g03Wd}OK&>Y~ zqP%q%_#cxg`oyHzqAk4@|1YZANqcDxeTCvm+`V#l-o=+VIzy3IFA4a{qo#S!E_ zd%1mBmx?ui7^u(LcqFc0*d9tHq+Mq$6z14S?Mfr8mPYV zC5t34<6e)9y~Qd$$<{Gle}%w-xd(I#rg?F?n3GO!dv+|y4yT{VrJjgn#pzz&1U4EE zh=}->i22%r&Oy{F;||Lh^jxwMh_7q%ILf4_wE@%2)aLM!qL$hPqaPE4Brmr3pu@j$ zV;a*ne^(i)g|TAe8SOMaLdB03Tiz=fAyB27L?^!8Ose(m zyl1N|syRrj|5R7r@5W;V8&McYt1qkFcJtLRRohDw3_5$@`A~Rjp7SRmTA|$QDbdtN zno1bz7w3H&I6C(I9dUGY(YLB(dJp-An8x7YA3!my;Jl7sc_0oMX`Hc2pvLdSd$_M^ z%$^YUntzQ}gf{ie{yCxMZ$}B=-IurQ8HQCf& z!saop+v*Pv`EbjoJMS%dRMq?LqJl%;H=`PAhlJ-LY4tfQwZD}8z=_GsQCXW~IQISi zb?#|L^-COIKBf8Gmnb$i+Z+Ev5Zf48o0tq1IVsowy(j+Sva_f>M{4NGDi%*+&mJRw zJNM=gXYydgKZL(?}V#m8wt=+%oaQf4wSj^eRlt%~mjQoYU=nUC7iM zC%o=t%lDn9sqx#$aCxfTC>Add-uB!iW-N*O-5K0=b+7T6zFLT{>we$?spp{%s(shl zH5>E(ftvlDfN74{o_3etYGlAHeCF8duX-ah6a5EY!+m8t?fx+S{aJ&uR07gZ5Y;wJ zTj%dORoF!_2hH6LaqXxW^Wy4$D~C5D6oL{s5?X>VAoP+?s4yRh^Y`NJ9muc|+1m$p zx)OG<c{PAf`PKV;)Q2qxb;!7pkvCri+vb~F{8P)X z{8A^UH~hLGR3=x?>_OfoEiJi;jN+r(if1d=w&go##eKb|GdBV%dI+58tlR4uh#83(%Xt#-Gx*Y%Jtx;h^B1 zccR`KbxXtp?5uyeLG!QA31ZF4gWapiDWgrZ@<$_=r;GxF&nEPP*?sLkQz1K4Pt0=2 z0u*#)pu?~hoQe+-zY$oj5*EZCCcPTkei3|e>|L#0802f{6IICG{V+>vNMux)J0^^$ z7|8d_d;XtrKmKqD)$m^X@N~TS6B#>tN3WmM@R);edBZRh)d)$uh@9w%t{V}?h2cOh z8$}rpEyM?Y>Bu*>kxGY=ABrM(S1t5^sk{=>H!ik+DP(6creY|hYZGH<8WYO;J~}xq zkQ=Dy;%IBvW9JFvc9PNcm9cSK3j?G$omn+ zT>8~xHcRSJWyRnm0jMY!49BHbI~K?353`nm52XYOI>M<8u-sHwxgNZUE3oI6{ud$R z(lOXqJB!xzc*`Pq$J3~@?)XS`O)8_oT!VdIdc?{atnM&=s4gK`HU0v5Gw(f3JOv#lv7fP0xY!7zl}9-Y4cYgfSBmSpvf7oXlBe zb=k0=YV1FK<_gXw+ozzbc*R@53lgnt!Nm523OT~dQ*m%M5 zD0!w(+WpWM1VcI5lmPZ*b=kL)*pxosWUbhgXXEhK!jNaO(6?Aa?SRx2hIo^41JHV^ zUPp?R(;G8T+JZo;gKVPSdV(`S-F`gnLTcJOviX(uWFKLDn*hXXNkrhfhthgFJWv>7hO8;+<)U!n!a}2ACloacq!u9D_8<2*9Rha_eSrBhg04 z8;2QLYxb5{WYbZa5I53bE&Ub~%GwrD%M_g!i@N8FL}nnH2^vHK%0n9YQ5Mbd4?0B{ zO^Ma$bV9$2LF13nrX6VbI{KR|cvv_yWfwUKdOb!nN}u4)B6T2Vgpp7zVnsNsS~z8$ ztg<|wbw3rM&z%is$U5MDwYZMhCuFbKXM4tGj}Wp7m~zgJvm!w`5JwcFoc$U(hXl&J zx{-Av9d`Xhg=UoN@ilV>o6Sqn{2hSc0pv{z?U%4LrT6aA^)YE+D(y6QAk0qN`bjkfhMyW$Qi8xD1_1 zFPGvED1_iLf+jHT2N-$oVokZ?6q-?SG(|1OI5`ed0H>rUoD@5=V;{<5Um9bh0i>?LskBivI6&MyOp1FMx16Uzbll>kJwT#2=A$#4G>F=UA|p@hV& z)_juC>YVo(oYrAnYTjLxlaWgX_;fMqmWc;Tv@ksf^BEk*oN9N zBwJ(xkomrxk5XQ_S~#-KyS-7~c<8W0&PlPau!?kYWOg_+2L2JjT;5l3<)~aUuDq)3 zJS>uXq$_q9SLt|Ax!qAYNwHhx*LW^eRl;?5DKdBOB$KYUN)TMJ3#hi(u!{jz^OaQJ z=BYjfSD$ahpzTw{Xs`mQUf3SeSv0W5x}%1TOP%?hFq=W`l4C7!@*2tengV~VHa$0p zr%qkIPRFE9H?ZzfRqcg&KQF242D?B5mpW^ndNa}M8pGGLE>+02T_1d0@2*kr!GrfS z@d{bGW_oIk;>Sbe@jU8wjwMy%D0aUpd}J>^+N6Pg?WVEGH9wvPluttWJy+em%ym!l`u*OxFYNoB0IQiz&l13nF3oE=8Fy%EhN-B_U1BAEn zY&B(1wyvDEHk_}!hi(%ybz|FV=;TaOnpUF$<*(Yb-r4&uc7r5TQkSMju zl#o73rKw!GE4j+FH&ddw9^H$M=p|0|rndJs^Y$g2@B3`p2UYItLidG7^iihzblUm` zc>A^J`@fj>t19(>L-#8_?zNffpE>KF;~iK~7+Bouo(LKccGX-X4ZIxg+BzFxn;+Ow t7`#%&9uzeA3q5#38a$gC{E62^Z=)#8~#>^pU_G@(V{|A_T-X;J5 literal 0 HcmV?d00001 diff --git a/docs/latex/wx/splitter.tex b/docs/latex/wx/splitter.tex new file mode 100644 index 0000000000..625a6a093e --- /dev/null +++ b/docs/latex/wx/splitter.tex @@ -0,0 +1,340 @@ +\section{\class{wxSplitterWindow}}\label{wxsplitterwindow} + +\overview{wxSplitterWindow overview}{wxsplitterwindowoverview} + +This class manages up to two subwindows. The current view can be +split into two programmatically (perhaps from a menu command), and unsplit +either programmatically or via the wxSplitterWindow user interface. + +Appropriate 3D shading for the Windows 95 user interface is an option. + +\wxheading{Window styles} + +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{wxSP\_3D}}{Draws a 3D effect border and sash.} +\twocolitem{\windowstyle{wxSP\_BORDER}}{Draws a thin black border around the window, and a black sash.} +\twocolitem{\windowstyle{wxSP\_NOBORDER}}{No border, and a black sash.} +\end{twocollist} + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{Derived from} + +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxSplitterWindow::wxSplitterWindow}\label{wxsplitterwindowconstr} + +\func{}{wxSplitterWindow}{\void} + +Default constructor. + +\func{}{wxSplitterWindow}{\param{wxWindow*}{ parent}, \param{const wxWindowID}{ id}, \param{int }{x},\rtfsp +\param{const wxPoint\& }{point = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long }{style=wxSP\_3D}, \param{const wxString\&}{ name = "splitterWindow"}} + +Constructor for creating the window. + +\wxheading{Parameters} + +\docparam{parent}{The parent of the splitter window.} + +\docparam{id}{The window identifier.} + +\docparam{pos}{The window position.} + +\docparam{size}{The window size.} + +\docparam{style}{The window style. See \helpref{wxSplitterWindow}{wxsplitterwindow}.} + +\docparam{name}{The window name.} + +\wxheading{Remarks} + +After using this constructor, you must create either one or two subwindows +with the splitter window as parent, and then call one of \helpref{wxSplitterWindow::Initialize}{wxsplitterwindowinitialize},\rtfsp +\helpref{wxSplitterWindow::SplitVertically}{wxsplitterwindowsplitvertically} and \helpref{wxSplitterWindow::SplitHorizontally}{wxsplitterwindowsplithorizontally} in +order to set the pane(s). + +You can create two windows, with one hidden when not being shown; or you can +create and delete the second pane on demand. + +\wxheading{See also} + +\helpref{wxSplitterWindow::Initialize}{wxsplitterwindowinitialize}, \helpref{wxSplitterWindow::SplitVertically}{wxsplitterwindowsplitvertically},\rtfsp +\helpref{wxSplitterWindow::SplitHorizontally}{wxsplitterwindowsplithorizontally},\rtfsp +\helpref{wxSplitterWindow::Create}{wxsplitterwindowcreate} + +\membersection{wxSplitterWindow::\destruct{wxSplitterWindow}} + +\func{}{\destruct{wxSplitterWindow}}{\void} + +Destroys the wxSplitterWindow and its children. + +\membersection{wxSplitterWindow::Create}\label{wxsplitterwindowcreate} + +\func{bool}{Create}{\param{wxWindow*}{ parent}, \param{const wxWindowID}{ id}, \param{int }{x},\rtfsp +\param{const wxPoint\& }{point = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long }{style=wxSP\_3D}, \param{const wxString\&}{ name = "splitterWindow"}} + +Creation function, for two-step construction. See \helpref{wxSplitterWindow::wxSplitterWindow}{wxsplitterwindowconstr} for +details. + +\membersection{wxSplitterWindow::GetMinimumPaneSize}\label{wxsplitterwindowgetminimumpanesize} + +\constfunc{int}{GetMinimumPaneSize}{\void} + +Returns the current minimum pane size (defaults to zero). + +\wxheading{See also} + +\helpref{wxSplitterWindow::SetMinimumPaneSize}{wxsplitterwindowsetminimumpanesize} + +\membersection{wxSplitterWindow::GetSashPosition}\label{wxsplitterwindowgetsashposition} + +\func{int}{GetSashPosition}{\void} + +Returns the current sash position. + +\wxheading{See also} + +\helpref{wxSplitterWindow::SetSashPosition}{wxsplitterwindowsetsashposition} + +\membersection{wxSplitterWindow::GetSplitMode}\label{wxsplitterwindowgetsplitmode} + +\constfunc{int}{GetSplitMode}{\void} + +Gets the split mode. + +\wxheading{See also} + +\helpref{wxSplitterWindow::SetSplitMode}{wxsplitterwindowsetsplitmode}, \helpref{wxSplitterWindow::SplitVertically}{wxsplitterwindowsplitvertically},\rtfsp +\helpref{wxSplitterWindow::SplitHorizontally}{wxsplitterwindowsplithorizontally}. + +\membersection{wxSplitterWindow::GetWindow1}\label{wxsplitterwindowgetwindow1} + +\constfunc{wxWindow*}{GetWindow1}{\void} + +Returns the left/top or only pane. + +\membersection{wxSplitterWindow::GetWindow2}\label{wxsplitterwindowgetwindow2} + +\constfunc{wxWindow*}{GetWindow2}{\void} + +Returns the right/bottom pane. + +\membersection{wxSplitterWindow::Initialize}\label{wxsplitterwindowinitialize} + +\func{void}{Initialize}{\param{wxWindow* }{window}} + +Initializes the splitter window to have one pane. + +\wxheading{Parameters} + +\docparam{window}{The pane for the unsplit window.} + +\wxheading{Remarks} + +This should be called if you wish to initially view only a single pane in the splitter window. + +\wxheading{See also} + +\helpref{wxSplitterWindow::SplitVertically}{wxsplitterwindowsplitvertically},\rtfsp +\helpref{wxSplitterWindow::SplitHorizontally}{wxsplitterwindowsplithorizontally}. + +\membersection{wxSplitterWindow::IsSplit}\label{wxsplitterwindowissplit} + +\constfunc{bool}{IsSplit}{\void} + +Returns TRUE if the window is split, FALSE otherwise. + +\membersection{wxSplitterWindow::OnDoubleClickSash}\label{wxsplitterwindowondoubleclicksash} + +\func{virtual void}{OnDoubleClickSash}{\param{int }{x}, \param{int }{y}} + +Application-overridable function called when the sash is double-clicked with +the left mouse button. + +\wxheading{Parameters} + +\docparam{x}{The x position of the mouse cursor.} + +\docparam{y}{The y position of the mouse cursor.} + +\wxheading{Remarks} + +The default implementation of this function calls \helpref{Unsplit}{wxsplitterwindowunsplit} if +the minimum pane size is zero. + +\wxheading{See also} + +\helpref{wxSplitterWindow::Unsplit}{wxsplitterwindowunsplit} + +\membersection{wxSplitterWindow::OnUnsplit}\label{wxsplitterwindowonunsplit} + +\func{virtual void}{OnUnsplit}{\param{wxWindow* }{removed}} + +Application-overridable function called when the window is unsplit, either +programmatically or using the wxSplitterWindow user interface. + +\wxheading{Parameters} + +\docparam{removed}{The window being removed.} + +\wxheading{Remarks} + +The default implementation of this function simply hides {\it removed}. You +may wish to delete the window. + +\wxheading{See also} + +\helpref{wxSplitterWindow::Unsplit}{wxsplitterwindowunsplit} + +\membersection{wxSplitterWindow::SetSashPosition}\label{wxsplitterwindowsetsashposition} + +\func{void}{SetSashPosition}{\param{const int }{position}, \param{const bool}{ redraw = TRUE}} + +Sets the sash position. + +\wxheading{Parameters} + +\docparam{position}{The sash position in pixels.} + +\docparam{redraw}{If TRUE, resizes the panes and redraws the sash and border.} + +\wxheading{Remarks} + +Does not currently check for an out-of-range value. + +\wxheading{See also} + +\helpref{wxSplitterWindow::GetSashPosition}{wxsplitterwindowgetsashposition} + +\membersection{wxSplitterWindow::SetMinimumPaneSize}\label{wxsplitterwindowsetminimumpanesize} + +\func{void}{SetMinimumPaneSize}{\param{const int }{paneSize}} + +Sets the minimum pane size. + +\wxheading{Parameters} + +\docparam{paneSize}{Minimum pane size in pixels.} + +\wxheading{Remarks} + +The default minimum pane size is zero, which means that either pane can be reduced to zero by dragging +the sash, thus removing one of the panes. To prevent this behaviour (and veto out-of-range sash dragging), +set a minimum size, for example 20 pixels. + +\wxheading{See also} + +\helpref{wxSplitterWindow::GetMinimumPaneSize}{wxsplitterwindowgetminimumpanesize} + +\membersection{wxSplitterWindow::SetSplitMode}\label{wxsplitterwindowsetsplitmode} + +\func{void}{SetSplitMode}{\param{const int }{mode}} + +Sets the split mode. + +\wxheading{Parameters} + +\docparam{mode}{Can be wxSPLIT\_VERTICAL or wxSPLIT\_HORIZONTAL.} + +\wxheading{Remarks} + +Only sets the internal variable; does not update the display. + +\wxheading{See also} + +\helpref{wxSplitterWindow::GetSplitMode}{wxsplitterwindowgetsplitmode}, \helpref{wxSplitterWindow::SplitVertically}{wxsplitterwindowsplitvertically},\rtfsp +\helpref{wxSplitterWindow::SplitHorizontally}{wxsplitterwindowsplithorizontally}. + +\membersection{wxSplitterWindow::SplitHorizontally}\label{wxsplitterwindowsplithorizontally} + +\func{bool}{SplitHorizontally}{\param{wxWindow* }{window1}, \param{wxWindow* }{window2}, + \param{const int}{ sashPosition = -1}} + +Initializes the top and bottom panes of the splitter window. + +\wxheading{Parameters} + +\docparam{window1}{The top pane.} + +\docparam{window2}{The bottom pane.} + +\docparam{sashPosition}{The initial position of the sash. If the value is -1, a default position +is chosen.} + +\wxheading{Return value} + +TRUE if successful, FALSE otherwise (the window was already split). + +\wxheading{Remarks} + +This should be called if you wish to initially view two panes. It can also be called at any subsequent time, +but the application should check that the window is not currently split using \helpref{IsSplit}{wxsplitterwindowissplit}. + +\wxheading{See also} + +\helpref{wxSplitterWindow::SplitVertically}{wxsplitterwindowsplitvertically}, \helpref{wxSplitterWindow::IsSplit}{wxsplitterwindowissplit},\rtfsp +\helpref{wxSplitterWindow::Unsplit}{wxsplitterwindowunsplit}. + +\membersection{wxSplitterWindow::SplitVertically}\label{wxsplitterwindowsplitvertically} + +\func{bool}{SplitVertically}{\param{wxWindow* }{window1}, \param{wxWindow* }{window2}, + \param{const int}{ sashPosition = -1}} + +Initializes the left and right panes of the splitter window. + +\wxheading{Parameters} + +\docparam{window1}{The left pane.} + +\docparam{window2}{The right pane.} + +\docparam{sashPosition}{The initial position of the sash. If the value is -1, a default position +is chosen.} + +\wxheading{Return value} + +TRUE if successful, FALSE otherwise (the window was already split). + +\wxheading{Remarks} + +This should be called if you wish to initially view two panes. It can also be called at any subsequent time, +but the application should check that the window is not currently split using \helpref{IsSplit}{wxsplitterwindowissplit}. + +\wxheading{See also} + +\helpref{wxSplitterWindow::SplitHorizontally}{wxsplitterwindowsplithorizontally}, \helpref{wxSplitterWindow::IsSplit}{wxsplitterwindowissplit},\rtfsp +\helpref{wxSplitterWindow::Unsplit}{wxsplitterwindowunsplit}. + +\membersection{wxSplitterWindow::Unsplit}\label{wxsplitterwindowunsplit} + +\func{bool}{Unsplit}{\param{wxWindow* }{toRemove = NULL}} + +Unsplits the window. + +\wxheading{Parameters} + +\docparam{toRemove}{The pane to remove, or NULL to remove the right or bottom pane.} + +\wxheading{Return value} + +TRUE if successful, FALSE otherwise (the window was not split). + +\wxheading{Remarks} + +This call will not actually delete the pane being removed; it calls \helpref{OnUnsplit}{wxsplitterwindowonunsplit}\rtfsp +which can be overridden for the desired behaviour. By default, the pane being removed is hidden. + +\wxheading{See also} + +\helpref{wxSplitterWindow::SplitHorizontally}{wxsplitterwindowsplithorizontally}, \helpref{wxSplitterWindow::SplitVertically}{wxsplitterwindowsplitvertically},\rtfsp +\helpref{wxSplitterWindow::IsSplit}{wxsplitterwindowissplit}, \helpref{wxSplitterWindow::OnUnsplit}{wxsplitterwindowonunsplit} + + + diff --git a/docs/latex/wx/statbmp.tex b/docs/latex/wx/statbmp.tex new file mode 100644 index 0000000000..5c1929271d --- /dev/null +++ b/docs/latex/wx/statbmp.tex @@ -0,0 +1,92 @@ +\section{\class{wxStaticBitmap}}\label{wxstaticbitmap} + +A static bitmap control displays a bitmap. + +\wxheading{Derived from} + +\helpref{wxControl}{wxcontrol}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +There are no special styles for this control. + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{See also} + +\helpref{wxStaticBitmap}{wxstaticbitmap}, \helpref{wxStaticBox}{wxstaticbox} + +\wxheading{Remarks} + +The bitmap to be displayed should have a small number of colours, such as 16, to avoid +palette problems. + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxStaticBitmap::wxStaticBitmap}\label{wxstaticbitmapconstr} + +\func{}{wxStaticBitmap}{\void} + +Default constructor. + +\func{}{wxStaticBitmap}{\param{wxWindow* }{parent}, \param{const wxWindowID}{ id},\rtfsp +\param{const wxBitmap\& }{label = ``"}, \param{const wxPosition\& }{pos}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long}{ style = 0}, \param{const wxString\& }{name = ``staticBitmap"}} + +Constructor, creating and showing a text control. + +\wxheading{Parameters} + +\docparam{parent}{Parent window. Should not be NULL.} + +\docparam{id}{Control identifier. A value of -1 denotes a default value.} + +\docparam{label}{Bitmap label.} + +\docparam{pos}{Window position.} + +\docparam{size}{Window size.} + +\docparam{style}{Window style. See \helpref{wxStaticBitmap}{wxstaticbitmap}.} + +\docparam{name}{Window name.} + +\wxheading{See also} + +\helpref{wxStaticBitmap::Create}{wxstaticbitmapcreate} + +\membersection{wxStaticBitmap::Create}\label{wxstaticbitmapcreate} + +\func{bool}{Create}{\param{wxWindow* }{parent}, \param{const wxWindowID}{ id},\rtfsp +\param{const wxBitmap\& }{label = ``"}, \param{const wxPosition\& }{pos}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long}{ style = 0}, \param{const wxString\& }{name = ``staticBitmap"}} + +Creation function, for two-step construction. For details see \helpref{wxStaticBitmap::wxStaticBitmap}{wxstaticbitmapconstr}. + +\membersection{wxStaticBitmap::GetBitmap}\label{wxstaticbitmapgetbitmap} + +\constfunc{wxBitmap\&}{GetBitmap}{\void} + +Returns a reference to the label bitmap. + +\wxheading{See also} + +\helpref{wxStaticBitmap::SetBitmap}{wxstaticbitmapsetbitmap} + +\membersection{wxStaticBitmap::SetBitmap}\label{wxstaticbitmapsetbitmap} + +\func{virtual void}{SetBitmap}{\param{const wxBitmap\& }{ label}} + +Sets the bitmap label. + +\wxheading{Parameters} + +\docparam{label}{The new bitmap.} + +\wxheading{See also} + +\docparam{wxStaticBitmap::GetBitmap}{wxstaticbitmapgetbitmap} + diff --git a/docs/latex/wx/statbox.tex b/docs/latex/wx/statbox.tex new file mode 100644 index 0000000000..a0698b0f33 --- /dev/null +++ b/docs/latex/wx/statbox.tex @@ -0,0 +1,72 @@ +\section{\class{wxStaticBox}}\label{wxstaticbox} + +A static box is a rectangle drawn around other panel items to denote +a logical grouping of items. + +\wxheading{Derived from} + +\helpref{wxControl}{wxcontrol}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +There are no special styles for this control. + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{See also} + +\helpref{wxStaticText}{wxstatictext} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxStaticBox::wxStaticBox}\label{wxstaticboxconstr} + +\func{}{wxStaticBox}{\void} + +Default constructor. + +\func{}{wxStaticBox}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id}, \param{const wxString\& }{label},\rtfsp +\param{const wxPoint\&}{ pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long}{ style = 0}, \param{const wxString\& }{name = ``staticBox"}} + +Constructor, creating and showing a static box. + +\wxheading{Parameters} + +\docparam{parent}{Parent window. Must not be NULL.} + +\docparam{id}{Window identifier. A value of -1 indicates a default value.} + +\docparam{label}{Text to be displayed in the static box, the empty string for no label.} + +\docparam{pos}{Window position. If the position (-1, -1) is specified then a default position is chosen.} + +\docparam{size}{Checkbox size. If the size (-1, -1) is specified then a default size is chosen.} + +\docparam{style}{Window style. See \helpref{wxStaticBox}{wxstaticbox}.} + +\docparam{name}{Window name.} + +\wxheading{See also} + +\helpref{wxStaticBox::Create}{wxstaticboxcreate} + +\membersection{wxStaticBox::\destruct{wxStaticBox}} + +\func{void}{\destruct{wxStaticBox}}{\void} + +Destructor, destroying the group box. + +\membersection{wxStaticBox::Create}\label{wxstaticboxcreate} + +\func{bool}{Create}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id}, \param{const wxString\& }{label},\rtfsp +\param{const wxPoint\&}{ pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long}{ style = 0}, \param{const wxString\& }{name = ``staticBox"}} + +Creates the static box for two-step construction. See \helpref{wxStaticBox::wxStaticBox}{wxstaticboxconstr}\rtfsp +for further details. + + diff --git a/docs/latex/wx/stattext.tex b/docs/latex/wx/stattext.tex new file mode 100644 index 0000000000..a8678e27e5 --- /dev/null +++ b/docs/latex/wx/stattext.tex @@ -0,0 +1,84 @@ +\section{\class{wxStaticText}}\label{wxstatictext} + +A static text control displays one or more lines of read-only text. + +TODO: should a static text have a validator? E.g. if you wanted +to use it to initialise the control with some text taken from +the validator. + +\wxheading{Derived from} + +\helpref{wxControl}{wxcontrol}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +There are no special styles for this control. + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{See also} + +\helpref{wxStaticBitmap}{wxstaticbitmap}, \helpref{wxStaticBox}{wxstaticbox} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxStaticText::wxStaticText}\label{wxstatictextconstr} + +\func{}{wxStaticText}{\void} + +Default constructor. + +\func{}{wxStaticText}{\param{wxWindow* }{parent}, \param{const wxWindowID}{ id},\rtfsp +\param{const wxString\& }{label = ``"}, \param{const wxPosition\& }{pos}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long}{ style = 0}, \param{const wxString\& }{name = ``staticText"}} + +Constructor, creating and showing a text control. + +\wxheading{Parameters} + +\docparam{parent}{Parent window. Should not be NULL.} + +\docparam{id}{Control identifier. A value of -1 denotes a default value.} + +\docparam{label}{Text label.} + +\docparam{pos}{Window position.} + +\docparam{size}{Window size.} + +\docparam{style}{Window style. See \helpref{wxStaticText}{wxstatictext}.} + +\docparam{name}{Window name.} + +\wxheading{See also} + +\helpref{wxStaticText::Create}{wxstatictextcreate} + +\membersection{wxStaticText::Create}\label{wxstatictextcreate} + +\func{bool}{Create}{\param{wxWindow* }{parent}, \param{const wxWindowID}{ id},\rtfsp +\param{const wxString\& }{label = ``"}, \param{const wxPosition\& }{pos}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long}{ style = 0}, \param{const wxString\& }{name = ``staticText"}} + +Creation function, for two-step construction. For details see \helpref{wxStaticText::wxStaticText}{wxstatictextconstr}. + +\membersection{wxStaticText::GetLabel}\label{wxstatictextgetlabel} + +\constfunc{wxString}{GetLabel}{\void} + +Returns the contents of the control. + +\membersection{wxStaticText::SetLabel}\label{wxstatictextsetlabel} + +\func{virtual void}{SetLabel}{\param{const wxString\& }{ label}} + +Sets the static text label. + +\wxheading{Parameters} + +\docparam{label}{The new label to set. It may contain newline characters.} + + diff --git a/docs/latex/wx/statusbr.tex b/docs/latex/wx/statusbr.tex new file mode 100644 index 0000000000..300038d768 --- /dev/null +++ b/docs/latex/wx/statusbr.tex @@ -0,0 +1,241 @@ +\section{\class{wxStatusBar}}\label{wxstatusbar} + +A status bar is a narrow window that can be placed along the bottom of a frame to give +small amounts of status information. It can contain one or more fields, one or more of which can +be variable length according to the size of the window. + +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +There are no special styles for this window. + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{Remarks} + +It is possible to create controls and other windows on the status bar. Position these windows +from an {\bf OnSize} event handler. + +\wxheading{See also} + +\helpref{wxFrame}{wxframe} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxStatusBar::wxStatusBar}\label{wxstatusbarconstr} + +\func{}{wxStatusBar}{\void} + +Default constructor. + +\func{}{wxStatusBar}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id},\rtfsp +\param{const wxPoint\&}{ pos = wxDefaultPosition},\rtfsp +\param{const wxSize\&}{ size = wxDefaultSize}, \param{long}{ style = 0},\rtfsp +\param{const wxString\& }{name = ``statusBar"}} + +Constructor, creating the window. + +\wxheading{Parameters} + +\docparam{parent}{The window parent, usually a frame.} + +\docparam{id}{The window identifier. It may take a value of -1 to indicate a default value.} + +\docparam{pos}{The window position. A value of (-1, -1) indicates a default position, chosen by +either the windowing system or wxWindows, depending on platform.} + +\docparam{size}{The window size. A value of (-1, -1) indicates a default size, chosen by +either the windowing system or wxWindows, depending on platform.} + +\docparam{style}{The window style. See \helpref{wxStatusBar}{wxstatusbar}.} + +\docparam{name}{The name of the window. This parameter is used to associate a name with the item, +allowing the application user to set Motif resource values for +individual windows.} + +\wxheading{See also} + +\helpref{wxStatusBar::Create}{wxstatusbarcreate} + +\membersection{wxStatusBar::\destruct{wxStatusBar}} + +\func{void}{\destruct{wxStatusBar}}{\void} + +Destructor. + +\membersection{wxStatusBar::Create}\label{wxstatusbarcreate} + +\func{bool}{Create}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id},\rtfsp +\param{const wxPoint\&}{ pos = wxDefaultPosition},\rtfsp +\param{const wxSize\&}{ size = wxDefaultSize}, \param{long}{ style = 0},\rtfsp +\param{const wxString\& }{name = ``statusBar"}} + +Creates the window, for two-step construction. + +See \helpref{wxStatusBar::wxStatusBar}{wxstatusbarconstr} for details. + +\membersection{wxStatusBar::GetFieldRect}\label{wxstatusbargetfieldrect} + +\constfunc{virtual bool}{GetFieldRect}{\param{const int}{ i}, \param{wxRect\&}{ rect}} + +Returns the size and position of a fields internal bounding rectangle. + +\wxheading{Parameters} + +\docparam{i}{The field in question.} + +\docparam{rect}{The rectangle values are placed in this variable.} + +\wxheading{Return value} + +TRUE if the field index is valid, FALSE otherwise. + +\wxheading{See also} + +\helpref{wxRect}{wxrect} + +\membersection{wxStatusBar::GetFieldsCount}\label{wxstatusbargetfieldscount} + +\constfunc{int}{GetFieldsCount}{\void} + +Returns the number of fields in the status bar. + +\membersection{wxStatusBar::GetStatusText}\label{wxstatusbargetstatustext} + +\constfunc{virtual wxString}{GetStatusText}{\param{const int}{ ir = 0}} + +Returns the string associated with a status bar field. + +\wxheading{Parameters} + +\docparam{i}{The number of the status field to retrieve, starting from zero.} + +\wxheading{Return value} + +The status field string if the field is valid, otherwise the empty string. + +\wxheading{See also} + +\helpref{wxStatusBar::SetStatusText}{wxstatusbarsetstatustext} + +\membersection{wxStatusBar::DrawField}\label{wxstatusbardrawfield} + +\func{virtual void}{DrawField}{\param{wxDC\& }{dc}, \param{const int }{i}} + +Draws a field, including shaded borders and text. + +\wxheading{Parameters} + +\docparam{dc}{The device context to draw onto.} + +\docparam{i}{The field to be drawn.} + +\wxheading{See also} + +\helpref{wxStatusBar::DrawFieldText}{wxstatusbardrawfieldtext} + +\membersection{wxStatusBar::DrawFieldText}\label{wxstatusbardrawfieldtext} + +\func{virtual void}{DrawFieldText}{\param{wxDC\& }{dc}, \param{const int }{i}} + +Draws a field's text. + +\wxheading{Parameters} + +\docparam{dc}{The device context to draw onto.} + +\docparam{i}{The field whose text is to be drawn.} + +\wxheading{See also} + +\helpref{wxStatusBar::DrawField}{wxstatusbardrawfield} + +\membersection{wxStatusBar::InitColours}\label{wxstatusbarinitcolours} + +\func{virtual void}{InitColours}{\void} + +Sets up the background colour and shading pens using suitable system colours (Windows) or tasteful shades +of grey (other platforms). + +\wxheading{Remarks} + +This function is called when the window is created, and also +from \helpref{wxStatusBar::OnSysColourChanged}{wxstatusbaronsyscolourchanged} on Windows. + +\wxheading{See also} + +\helpref{wxStatusBar::OnSysColourChanged}{wxstatusbaronsyscolourchanged} + +\membersection{wxStatusBar::OnSysColourChanged}\label{wxstatusbaronsyscolourchanged} + +\func{void}{OnSysColourChanged}{\param{wxSysColourChangedEvent\& }{event}} + +Handles a system colour change by calling \helpref{wxStatusBar::InitColours}{wxstatusbarinitcolours}, +and refreshes the window. + +\wxheading{Parameters} + +\docparam{event}{The colour change event.} + +\wxheading{See also} + +\helpref{wxStatusBar::InitColours}{wxstatusbarinitcolours} + +\membersection{wxStatusBar::SetFieldsCount}\label{wxstatusbarsetfieldscount} + +\func{virtual void}{SetFieldsCount}{\param{const int}{ number = 1}, \param{const int* }{widths = NULL}} + +Sets the number of fields, and optionally the field widths. + +\wxheading{Parameters} + +\docparam{number}{The number of fields.} + +\docparam{widths}{An array of {\it n} integers, each of which is a status field width +in pixels. A value of -1 indicates that the field is variable width; at least one +field must be -1.} + +\membersection{wxStatusBar::SetStatusText}\label{wxstatusbarsetstatustext} + +\func{virtual void}{SetStatusText}{\param{const wxString\& }{text}, \param{const int}{ i = 0}} + +Sets the text for one field. + +\wxheading{Parameters} + +\docparam{text}{The text to be set. Use an empty string (``") to clear the field.} + +\docparam{i}{The field to set, starting from zero.} + +\wxheading{See also} + +\helpref{wxStatusBar::GetStatusText}{wxstatusbargetstatustext}, \helpref{wxFrame::SetStatusText}{wxframesetstatustext} + +\membersection{wxStatusBar::SetStatusWidths}\label{wxstatusbarsetstatuswidths} + +\func{virtual void}{SetStatusWidths}{\param{const int}{ n}, \param{const int *}{widths}} + +Sets the widths of the fields in the status line. + +\wxheading{Parameters} + +\docparam{n}{The number of fields in the status bar.} + +\docparam{widths}{Must contain an array of {\it n} integers, each of which is a status field width +in pixels. A value of -1 indicates that the field is variable width; at least one +field must be -1. You should delete this array after calling {\bf SetStatusWidths}.} + +\wxheading{Remarks} + +The widths of the variable fields are calculated from the total width of all fields, +minus the sum of widths of the non-variable fields, divided by the number of +variable fields. + +\wxheading{See also} + +\helpref{wxStatusBar::SetFieldsCount}{wxstatusbarsetfieldscount}, \helpref{wxFrame::SetStatusWidths}{wxframesetstatuswidths} + + diff --git a/docs/latex/wx/strlist.tex b/docs/latex/wx/strlist.tex new file mode 100644 index 0000000000..0c45fe457e --- /dev/null +++ b/docs/latex/wx/strlist.tex @@ -0,0 +1,68 @@ +\section{\class{wxStringList}}\label{wxstringlist} + +A string list is a list which is assumed to contain strings, with a +specific member functions. Memory is allocated when strings are added to +the list, and deallocated by the destructor or by the {\bf Delete}\rtfsp +member. + +\wxheading{Derived from} + +\helpref{wxList}{wxlist}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxString}{wxstring}, \helpref{wxList}{wxlist} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxStringList::wxStringList} + +\func{}{wxStringList}{\void} + +Constructor. + +\func{void}{wxStringList}{\param{char* }{first}, ...} + +Constructor, taking NULL-terminated string argument list. wxStringList +allocates memory for the strings. + +\membersection{wxStringList::\destruct{wxStringList}} + +\func{}{\destruct{wxStringList}}{\void} + +Deletes string list, deallocating strings. + +\membersection{wxStringList::Add} + +\func{wxNode *}{Add}{\param{const wxString\& }{s}} + +Adds string to list, allocating memory. + +\membersection{wxStringList::Delete} + +\func{void}{Delete}{\param{const wxString\& }{s}} + +Searches for string and deletes from list, deallocating memory. + +\membersection{wxStringList::ListToArray} + +\func{char*}{ListToArray}{\param{bool}{ new\_copies = FALSE}} + +Converts the list to an array of strings, only allocating new memory if +\rtfsp{\bf new\_copies} is TRUE. + +\membersection{wxStringList::Member} + +\func{bool}{Member}{\param{const wxString\& }{s}} + +Returns TRUE if {\bf s} is a member of the list (tested using {\bf strcmp}). + +\membersection{wxStringList::Sort} + +\func{void}{Sort}{\void} + +Sorts the strings in ascending alphabetical order. Note that all nodes +(but not strings) get deallocated and new ones allocated. + + diff --git a/docs/latex/wx/sysclevt.tex b/docs/latex/wx/sysclevt.tex new file mode 100644 index 0000000000..dc1fd4918a --- /dev/null +++ b/docs/latex/wx/sysclevt.tex @@ -0,0 +1,40 @@ +\section{\class{wxSysColourChangedEvent}}\label{wxsyscolourchangedevent} + +This class is used for system colour change events, which are generated +when the user changes the colour settings using the control panel. +This is only appropriate under Windows. + +\wxheading{Derived from} + +\helpref{wxEvent}{wxevent}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Event table macros} + +To process a system colour changed event, use this event handler macro to direct input to a member +function that takes a wxSysColourChanged argument. + +\twocolwidtha{7cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf EVT\_SYS\_COLOUR\_CHANGED(func)}}{Process a wxEVT\_SYS\_COLOUR\_CHANGED event.} +\end{twocollist}% + +\wxheading{Remarks} + +The default event handler for this event propagates the event to child windows, since +Windows only sends the events to top-level windows. If +intercepting this event for a top-level window, remember to call the base class handler, +or to pass the event on to the window's children explicitly. + +\wxheading{See also} + +\helpref{wxWindow::OnSysColourChanged}{wxwindowonsyscolourchanged}, \helpref{Event handling overview}{eventhandlingoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxSysColourChangedEvent::wxSysColourChanged} + +\func{}{wxSysColourChanged}{\void} + +Constructor. + diff --git a/docs/latex/wx/t2rtf32.ini b/docs/latex/wx/t2rtf32.ini new file mode 100644 index 0000000000..9169e3fc22 --- /dev/null +++ b/docs/latex/wx/t2rtf32.ini @@ -0,0 +1,21 @@ +;;; Tex2RTF initialisation file for 32-bit WinHelp +runTwice = yes +titleFontSize = 12 +authorFontSize = 10 +authorFontSize = 10 +chapterFontSize = 12 +sectionFontSize = 12 +subsectionFontSize = 12 +headerRule = yes +footerRule = yes +useHeadingStyles = yes +listItemIndent=40 +generateHPJ = yes +htmlBrowseButtons = bitmap +winHelpContents = yes +winHelpVersion = 4 ; 3 for Windows 3.x, 4 for Windows 95 +winHelpTitle = "wxWindows Manual" +\overview [2] { \settransparency{on}\sethotspotcolour{off}\sethotspotunderline{on}\winhelponly{\image{}{books.bmp}\settransparency{off}} +\htmlonly{\image{}{books.gif}}\helpref{#1}{#2} +\sethotspotcolour{on}\sethotspotunderline{on}} + diff --git a/docs/latex/wx/tab.tex b/docs/latex/wx/tab.tex new file mode 100644 index 0000000000..27335c3678 --- /dev/null +++ b/docs/latex/wx/tab.tex @@ -0,0 +1,568 @@ +\section{\class{wxTabbedDialog}}\label{wxtabbeddialog} + +A dialog suitable for handling tabs. + +\wxheading{Derived from} + +\helpref{wxDialog}{wxdialog}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{Tab classes overview}{wxtaboverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxTabbedDialog::wxTabbedDialog} + +\func{}{wxTabbedDialog}{\param{wxWindow *}{parent}, \param{const wxWindowID }{id}, + \param{const wxString\& }{title}, \param{const wxPoint\&}{ pos}, \param{const wxSize\&}{ size}, + \param{const long}{ style=wxDEFAULT\_DIALOG\_STYLE}, \param{const wxString\& }{name="dialogBox"}} + +Constructor. + +\membersection{wxTabbedDialog::\destruct{wxTabbedDialog}} + +\func{}{\destruct{wxTabbedDialog}}{\void} + +Destructor. This destructor deletes the tab view associated with the dialog box. +If you do not wish this to happen, set the tab view to NULL before destruction (for example, +in the OnCloseWindow event handler). + +\membersection{wxTabbedDialog::SetTabView} + +\func{void}{SetTabView}{\param{wxTabView *}{view}} + +Sets the tab view associated with the dialog box. + +\membersection{wxTabbedDialog::GetTabView} + +\func{wxTabView *}{GetTabView}{\void} + +Returns the tab view associated with the dialog box. + +\section{\class{wxTabbedPanel}}\label{wxtabbedpanel} + +A panel suitable for handling tabs. + +\wxheading{Derived from} + +\helpref{wxPanel}{wxpanel}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{Tab classes overview}{wxtaboverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxTabbedPanel::wxTabbedPanel} + +\func{}{wxTabbedPanel}{\param{wxWindow *}{parent}, \param{const wxWindowID}{ id}, + \param{const wxPoint\&}{ pos}, \param{const wxSize\&}{ size}, + \param{const long}{ style=0}, \param{const wxString\& }{name="panel"}} + +Constructor. + +\membersection{wxTabbedPanel::SetTabView} + +\func{void}{SetTabView}{\param{wxTabView *}{view}} + +Sets the tab view associated with the panel. + +\membersection{wxTabbedPanel::GetTabView} + +\func{wxTabView *}{GetTabView}{\void} + +Returns the tab view associated with the panel. + +\section{\class{wxTabControl}}\label{wxtabcontrol} + +You will rarely need to use this class directly. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\overview{Tab classes overview}{wxtaboverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxTabControl::wxTabControl} + +\func{void}{wxTabControl}{\param{wxTabView *}{view = NULL}} + +Constructor. + +\membersection{wxTabControl::GetColPosition} + +\func{int}{GetColPosition}{\void} + +Returns the position of the tab in the tab column. + +\membersection{wxTabControl::GetFont} + +\func{wxFont *}{GetFont}{\void} + +Returns the font to be used for this tab. + +\membersection{wxTabControl::GetHeight} + +\func{int}{GetHeight}{\void} + +Returns the tab height. + +\membersection{wxTabControl::GetId} + +\func{int}{GetId}{\void} + +Returns the tab identifier. + +\membersection{wxTabControl::GetLabel} + +\func{wxString}{GetLabel}{\void} + +Returns the tab label. + +\membersection{wxTabControl::GetRowPosition} + +\func{int}{GetRowPosition}{\void} + +Returns the position of the tab in the layer or row. + +\membersection{wxTabControl::GetSelected} + +\func{bool}{GetSelected}{\void} + +Returns the selected flag. + +\membersection{wxTabControl::GetWidth} + +\func{int}{GetWidth}{\void} + +Returns the tab width. + +\membersection{wxTabControl::GetX} + +\func{int}{GetX}{\void} + +Returns the x offset from the top-left of the view area. + +\membersection{wxTabControl::GetY} + +\func{int}{GetY}{\void} + +Returns the y offset from the top-left of the view area. + +\membersection{wxTabControl::HitTest} + +\func{bool}{HitTest}{\param{int}{ x}, \param{int}{ y}} + +Returns TRUE if the point x, y is within the tab area. + +\membersection{wxTabControl::OnDraw} + +\func{void}{OnDraw}{\param{wxDC\& }{dc}, \param{bool}{ lastInRow}} + +Draws the tab control on the given device context. + +\membersection{wxTabControl::SetColPosition} + +\func{void}{SetColPosition}{\param{int}{ pos}} + +Sets the position in the column. + +\membersection{wxTabControl::SetFont} + +\func{void}{SetFont}{\param{wxFont *}{font}} + +Sets the font to be used for this tab. + +\membersection{wxTabControl::SetId} + +\func{void}{SetId}{\param{int}{ id}} + +Sets the tab identifier. + +\membersection{wxTabControl::SetLabel} + +\func{void}{SetLabel}{\param{const wxString\& }{str}} + +Sets the label for the tab. + +\membersection{wxTabControl::SetPosition} + +\func{void}{SetPosition}{\param{int}{ x}, \param{int}{ y}} + +Sets the x and y offsets for this tab, measured from the top-left of the view area. + +\membersection{wxTabControl::SetRowPosition} + +\func{void}{SetRowPosition}{\param{int}{ pos}} + +Sets the position on the layer (row). + +\membersection{wxTabControl::SetSelected} + +\func{void}{SetSelected}{\param{bool }{selected}} + +Sets the selection flag for this tab (does not set the current tab for the view; +use wxTabView::SetSelectedTab for that). + +\membersection{wxTabControl::SetSize} + +\func{void}{SetSize}{\param{int}{ width}, \param{int}{ height}} + +Sets the width and height for this tab. + +\section{\class{wxTabView}}\label{wxtabview} + +Responsible for drawing tabs onto a window, and dealing with input. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxTabView overview}{wxtabviewoverview}, \helpref{wxPanelTabView}{wxpaneltabview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxTabView::wxTabView} + +\func{}{wxTabView}{\param{long }{style = wxTAB\_STYLE\_DRAW\_BOX \pipe wxTAB\_STYLE\_COLOUR\_INTERIOR}} + +Constructor. + +{\it style} may be a bit list of the following: + +\begin{twocollist}\itemsep=0pt +\twocolitem{wxTAB\_STYLE\_DRAW\_BOX}{Draw a box around the view area. Most commonly used for dialogs.} +\twocolitem{wxTAB\_STYLE\_COLOUR\_INTERIOR}{Draw tab backgrounds in the specified colour. Omitting this style +will ensure that the tab background matches the dialog background.} +\end{twocollist} + +\membersection{wxTabView::AddTab}\label{wxtabviewaddtab} + +\func{wxTabControl *}{AddTab}{\param{int}{ id}, \param{const wxString\& }{label}, \param{wxTabControl *}{existingTab=NULL}} + +Adds a tab to the view. + +{\it id} is the application-chosen identifier for the tab, which will be used in subsequent tab operations. + +{\it label} is the label to give the tab. + +{\it existingTab} maybe NULL to specify a new tab, or non-NULL to indicate that an existing tab should be used. + +A new layer (row) is started when the current layer has been filled up with tabs. + +\membersection{wxTabView::CalculateTabWidth}\label{wxtabviewcalculatetabwidth} + +\func{int}{CalculateTabWidth}{\param{int}{ noTabs}, \param{bool}{ adjustView = FALSE}} + +The application can specify the tab width using this function, in terms +of the number of tabs per layer (row) which will fit the view area, which +should have been set previously with SetViewRect. + +{\it noTabs} is the number of tabs which should take up the full width +of the view area. + +{\it adjustView} can be set to TRUE in order to readjust the view width +to exactly fit the given number of tabs. + +The new tab width is returned. + +\membersection{wxTabView::ClearTabs} + +\func{void}{ClearTabs}{\param{bool }{deleteTabs=TRUE}} + +Clears the tabs, deleting them if {\it deleteTabs} is TRUE. + +\membersection{wxTabView::Draw} + +\func{void}{Draw}{\param{wxDC\& }{dc}} + +Draws the tabs and (optionally) a box around the view area. + +\membersection{wxTabView::FindTabControlForId} + +\func{wxTabControl *}{FindTabControlForId}{\param{int}{ id}} + +Finds the wxTabControl corresponding to {\it id}. + +\membersection{wxTabView::FindTabControlForPosition} + +\func{wxTabControl *}{FindTabControlForPosition}{\param{int}{ layer}, \param{int}{ position}} + +Finds the wxTabControl at layer {\it layer}, position in layer {\it position}, both starting from +zero. Note that tabs change layer as they are selected or deselected. + +\membersection{wxTabView::GetBackgroundBrush} + +\func{wxBrush *}{GetBackgroundBrush}{\void} + +Returns the brush used to draw in the background colour. It is set when +SetBackgroundColour is called. + +\membersection{wxTabView::GetBackgroundColour} + +\func{wxColour}{GetBackgroundColour}{\void} + +Returns the colour used for each tab background. By default, this is +light grey. To ensure a match with the dialog or panel background, omit +the wxTAB\_STYLE\_COLOUR\_INTERIOR flag from the wxTabView constructor. + +\membersection{wxTabView::GetBackgroundPen} + +\func{wxPen *}{GetBackgroundPen}{\void} + +Returns the pen used to draw in the background colour. It is set when +SetBackgroundColour is called. + +\membersection{wxTabView::GetHighlightColour} + +\func{wxColour}{GetHighlightColour}{\void} + +Returns the colour used for bright highlights on the left side of `3D' surfaces. By default, this is white. + +\membersection{wxTabView::GetHighlightPen} + +\func{wxPen *}{GetHighlightPen}{\void} + +Returns the pen used to draw 3D effect highlights. This is set when +SetHighlightColour is called. + +\membersection{wxTabView::GetHorizontalTabOffset} + +\func{int}{GetHorizontalTabOffset}{\void} + +Returns the horizontal spacing by which each tab layer is offset from the one below. + +\membersection{wxTabView::GetNumberOfLayers} + +\func{int}{GetNumberOfLayers}{\void} + +Returns the number of layers (rows of tabs). + +\membersection{wxTabView::GetSelectedTabFont} + +\func{wxFont *}{GetSelectedTabFont}{\void} + +Returns the font to be used for the selected tab label. + +\membersection{wxTabView::GetShadowColour} + +\func{wxColour}{GetShadowColour}{\void} + +Returns the colour used for shadows on the right-hand side of `3D' surfaces. By default, this is dark grey. + +\membersection{wxTabView::GetTabHeight} + +\func{int}{GetTabHeight}{\void} + +Returns the tab default height. + +\membersection{wxTabView::GetTabFont} + +\func{wxFont *}{GetTabFont}{\void} + +Returns the tab label font. + +\membersection{wxTabView::GetTabSelectionHeight} + +\func{int}{GetTabSelectionHeight}{\void} + +Returns the height to be used for the currently selected tab; normally a few pixels +higher than the other tabs. + +\membersection{wxTabView::GetTabStyle} + +\func{long}{GetTabStyle}{\void} + +Returns the tab style. See constructor documentation for details of valid styles. + +\membersection{wxTabView::GetTabWidth} + +\func{int}{GetTabWidth}{\void} + +Returns the tab default width. + +\membersection{wxTabView::GetTextColour} + +\func{wxColour}{GetTextColour}{\void} + +Returns the colour used to draw label text. By default, this is +black. + +\membersection{wxTabView::GetTopMargin} + +\func{int}{GetTopMargin}{\void} + +Returns the height between the top of the view area and the bottom of the first +row of tabs. + +\membersection{wxTabView::GetShadowPen} + +\func{wxPen *}{GetShadowPen}{\void} + +Returns the pen used to draw 3D effect shadows. This is set when +SetShadowColour is called. + +\membersection{wxTabView::GetViewRect} + +\func{wxRectangle}{GetViewRect}{\void} + +Returns the rectangle specifying the view area (above which tabs are +placed). + +\membersection{wxTabView::GetVerticalTabTextSpacing} + +\func{int}{GetVerticalTabTextSpacing}{\void} + +Returns the vertical spacing between the top of an unselected tab, and the tab label. + +\membersection{wxTabView::GetWindow} + +\func{wwxWindow *}{GetWindow}{\void} + +Returns the window for the view. + +\membersection{wxTabView::OnCreateTabControl} + +\func{wxTabControl *}{OnCreateTabControl}{\void} + +Creates a new tab control. By default, this returns a wxTabControl object, but the application may wish +to define a derived class, in which case the tab view should be subclassed and this function overridden. + +\membersection{wxTabView::Layout} + +\func{void}{Layout}{\void} + +Recalculates the positions of the tabs, and adjusts the layer of the selected tab if necessary. + +You may want to call this function if the view width has changed (for example, from an OnSize handler). + +\membersection{wxTabView::OnEvent} + +\func{bool}{OnEvent}{\param{wxMouseEvent\& }{event}} + +Processes mouse events sent from the panel or dialog. Returns TRUE if the event was processed, +FALSE otherwise. + +\membersection{wxTabView::OnTabActivate} + +\func{void}{OnTabActivate}{\param{int}{ activateId}, \param{int}{ deactivateId}} + +Called when a tab is activated, with the new active tab id, and the former active tab id. + +\membersection{wxTabView::OnTabPreActivate} + +\func{bool}{OnTabPreActivate}{\param{int}{ activateId}, \param{int}{ deactivateId}} + +Called just before a tab is activated, with the new active tab id, and the former active tab id. + +If the function returns FALSE, the tab is not activated. + +\membersection{wxTabView::SetBackgroundColour} + +\func{void}{SetBackgroundColour}{\param{const wxColour\&}{ col}} + +Sets the colour to be used for each tab background. By default, this is +light grey. To ensure a match with the dialog or panel background, omit +the wxTAB\_STYLE\_COLOUR\_INTERIOR flag from the wxTabView constructor. + +\membersection{wxTabView::SetHighlightColour} + +\func{void}{SetHighlightColour}{\param{const wxColour\&}{ col}} + +Sets the colour to be used for bright highlights on the left side of `3D' surfaces. By default, this is white. + +\membersection{wxTabView::SetHorizontalTabOffset} + +\func{void}{SetHorizontalTabOffset}{\param{int}{ offset}} + +Sets the horizontal spacing by which each tab layer is offset from the one below. + +\membersection{wxTabView::SetSelectedTabFont} + +\func{void}{SetSelectedTabFont}{\param{wxFont *}{font}} + +Sets the font to be used for the selected tab label. + +\membersection{wxTabView::SetShadowColour} + +\func{void}{SetShadowColour}{\param{const wxColour\&}{ col}} + +Sets the colour to be used for shadows on the right-hand side of `3D' surfaces. By default, this is dark grey. + +\membersection{wxTabView::SetTabFont} + +\func{void}{SetTabFont}{\param{wxFont *}{font}} + +Sets the tab label font. + +\membersection{wxTabView::SetTabStyle} + +\func{void}{SetTabStyle}{\param{long}{ tabStyle}} + +Sets the tab style. See constructor documentation for details of valid styles. + +\membersection{wxTabView::SetTabSize} + +\func{void}{SetTabSize}{\param{int}{ width}, \param{int}{ height}} + +Sets the tab default width and height. + +\membersection{wxTabView::SetTabSelectionHeight} + +\func{void}{SetTabSelectionHeight}{\param{int}{ height}} + +Sets the height to be used for the currently selected tab; normally a few pixels +higher than the other tabs. + +\membersection{wxTabView::SetTabSelection} + +\func{void}{SetTabSelection}{\param{int}{ sel}, \param{bool}{ activateTool=TRUE}} + +Sets the selected tab, calling the application's OnTabActivate function. + +If {\it activateTool} is FALSE, OnTabActivate will not be called. + +\membersection{wxTabView::SetTextColour} + +\func{void}{SetTextColour}{\param{const wxColour\&}{ col}} + +Sets the colour to be used to draw label text. By default, this is +black. + +\membersection{wxTabView::SetTopMargin} + +\func{void}{SetTopMargin}{\param{int}{ margin}} + +Sets the height between the top of the view area and the bottom of the first +row of tabs. + +\membersection{wxTabView::SetVerticalTabTextSpacing} + +\func{void}{SetVerticalTabTextSpacing}{\param{int}{ spacing}} + +Sets the vertical spacing between the top of an unselected tab, and the tab label. + +\membersection{wxTabView::SetViewRect}\label{wxtabviewsetviewrect} + +\func{void}{SetViewRect}{\param{const wxRectangle\& }{rect}} + +Sets the rectangle specifying the view area (above which tabs are +placed). This must be set by the application. + +\membersection{wxTabView::SetWindow} + +\func{void}{SetWindow}{\param{wxWindow *}{window}} + +Set the window that the tab view will use for drawing onto. + diff --git a/docs/latex/wx/tabctrl.tex b/docs/latex/wx/tabctrl.tex new file mode 100644 index 0000000000..8c1a5af6af --- /dev/null +++ b/docs/latex/wx/tabctrl.tex @@ -0,0 +1,95 @@ +\section{\class{wxTabCtrl}}\label{wxtabctrl} + +This class represents a tab control, which manages multiple tabs. + +\wxheading{Derived from} + +\helpref{wxControl}{wxcontrol}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxTabCtrl::wxTabCtrl}\label{wxtabctrlconstr} + +\func{}{wxTabCtrl}{\void} + +Default constructor. + +\func{}{wxTabCtrl}{\param{wxWindow*}{ parent}, \param{const wxWindowID }{id}, \param{const wxPoint\&}{ pos = wxDefaultPosition}, + \param{const wxSize\&}{ size}, \param{const long}{ style = 0}, \param{const wxString\& }{name = "tabCtrl"}} + +Constructs a tab control. + +\wxheading{Parameters} + +\docparam{parent}{The parent window. Must be non-NULL.} + +\docparam{id}{The window identifier.} + +\docparam{pos}{The window position.} + +\docparam{size}{The window size.} + +\docparam{style}{The window style. Its value is a bit list of zero or more of {\bf wxTC\_MULTILINE}, + {\bf wxTC\_RIGHTJUSTIFY}, {\bf wxTC\_FIXEDWIDTH} and {\bf wxTC\_OWNERDRAW}.} + +\membersection{wxTabCtrl::\destruct{wxTabCtrl}} + +\func{}{\destruct{wxTabCtrl}}{\void} + +Destroys the wxTabCtrl object. + +\membersection{wxTabCtrl::Create}\label{wxtabctrlcreate} + +\func{bool}{Create}{\param{wxWindow*}{ parent}, \param{const wxWindowID }{id}, \param{const wxPoint\&}{ pos = wxDefaultPosition}, + \param{const wxSize\&}{ size}, \param{const long}{ style = 0}, \param{const wxString\& }{name = "tabCtrl"}} + +Creates a tab control. See \helpref{wxTabCtrl::wxTabCtrl}{wxtabctrlconstr} for a description +of the parameters. + +\membersection{wxTabCtrl::GetImageList}\label{wxtabctrlgetimagelist} + +\constfunc{wxImageList*}{GetImageList}{\void} + +Returns the associated image list. + +\wxheading{See also} + +\helpref{wxImageList}{wximagelist}, \helpref{wxTabCtrl::SetImageList}{wxtabctrlsetimagelist} + +\membersection{wxTabCtrl::GetItemCount}\label{wxtabctrlgetitemcount} + +\constfunc{int}{GetItemCount}{\void} + +Returns the number of tabs in the tab control. + +\membersection{wxTabCtrl::GetItemRect}\label{wxtabctrlgetitemrect} + +\constfunc{bool}{GetItemRect}{\param{const int item}, \param{wxRect\&}{ rect}} + +Returns the rectangle bounding the given tab. + +\wxheading{See also} + +\helpref{wxRect}{wxrect} + +\membersection{wxTabCtrl::GetRowCount}\label{wxtabctrlgetrowcount} + +\constfunc{bool}{GetRowCount}{\void} + +Returns the number of rows in the tab control. + +\membersection{wxTabCtrl::GetSelection}\label{wxtabctrlgetselection} + +\constfunc{int}{GetSelection}{\void} + +Returns the index for the currently selected tab. + +\wxheading{See also} + +\helpref{wxTabCtrl::SetSelection}{wxtabctrlsetselection} + + + diff --git a/docs/latex/wx/tapp.tex b/docs/latex/wx/tapp.tex new file mode 100644 index 0000000000..c5e0322a72 --- /dev/null +++ b/docs/latex/wx/tapp.tex @@ -0,0 +1,56 @@ +\section{wxApp overview}\label{wxappoverview} + +Classes: \helpref{wxApp}{wxapp} + +A wxWindows application does not have a {\it main} procedure; the equivalent is the +\rtfsp\helpref{OnInit}{wxapponinit} member defined for a class derived from wxApp.\rtfsp +\rtfsp{\it OnInit} will usually create a top window as a bare minimum. + +Unlike in earlier versions of wxWindows, OnInit does not return a frame. Instead it +returns a boolean value which indicates whether processing should continue (TRUE) or not (FALSE). +You call \helpref{wxApp::SetTopWindow}{wxappsettopwindow} to let wxWindows know +about the top window. + +Note that the program's command line arguments, represented by {\it +argc} and {\it argv}, are available from within wxApp member functions. + +An application closes by destroying all windows. Because all frames must +be destroyed for the application to exit, it is advisable to use parent +frames wherever possible when creating new frames, so that deleting the +top level frame will automatically delete child frames. The alternative +is to explicitly delete child frames in the top-level frame's \helpref{wxWindow::OnCloseWindow}{wxwindowonclosewindow}\rtfsp +handler. + +In emergencies the \helpref{wxExit}{wxexit} function can be called to kill the +application. + +An example of defining an application follows: + +\begin{verbatim} +class DerivedApp: public wxApp +{ + public: + bool OnInit(void); +}; + +IMPLEMENT_APP(DerivedApp) + +bool DerivedApp::OnInit(void) +{ + wxFrame *the_frame = new wxFrame(NULL, argv[0]); + ... + SetTopWindow(the_frame); + + return TRUE; +} +\end{verbatim} + +Note the use of IMPLEMENT\_APP(appClass), which allows wxWindows to dynamically create an instance of the application object +at the appropriate point in wxWindows initialization. Previous versions of wxWindows used +to rely on the creation of a global application object, but this is no longer recommended, +because required global initialization may not have been performed at application object +construction time. + +You can also use DECLARE\_APP(appClass) in a header file to declare the wxGetApp function which returns +a reference to the application object. + diff --git a/docs/latex/wx/taskbar.tex b/docs/latex/wx/taskbar.tex new file mode 100644 index 0000000000..f6a81a4288 --- /dev/null +++ b/docs/latex/wx/taskbar.tex @@ -0,0 +1,90 @@ +\section{\class{wxTaskBarIcon}}\label{wxtaskbaricon} + +This class represents a Windows 95 taskbar icon, appearing in the `system tray' and responding to +mouse clicks. An icon has an optional tooltip. This class is only supported for Windows 95/NT. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxTaskBarIcon::wxTaskBarIcon}\label{wxtaskbariconconstr} + +\func{}{wxTaskBarIcon}{\void} + +Default constructor. + +\membersection{wxTaskBarIcon::\destruct{wxTaskBarIcon}} + +\func{}{\destruct{wxTaskBarIcon}}{\void} + +Destroys the wxTaskBarIcon object, removing the icon if not already removed. + +\membersection{wxTaskBarIcon::IsIconInstalled}\label{wxtaskbariconisiconinstalled} + +\func{bool}{IsIconInstalled}{\void} + +Returns TRUE if \helpref{SetIcon}{wxtaskbariconseticon} was called with no subsequent \helpref{RemoveIcon}{wxtaskbariconremoveicon}. + +\membersection{wxTaskBarIcon::IsOK}\label{wxtaskbariconisok} + +\func{bool}{IsOK}{\void} + +Returns TRUE if the object initialized successfully. + +\membersection{wxTaskBarIcon::OnLButtonDown}\label{wxtaskbaricononlbuttondown} + +\func{virtual void}{OnLButtonDown}{\void} + +Override this function to intercept left mouse button down events. + +\membersection{wxTaskBarIcon::OnLButtonDClick}\label{wxtaskbaricononlbuttondclick} + +\func{virtual void}{OnLButtonDClick}{\void} + +Override this function to intercept left mouse button double-click events. + +\membersection{wxTaskBarIcon::OnLButtonUp}\label{wxtaskbaricononlbuttonup} + +\func{virtual void}{OnLButtonUp}{\void} + +Override this function to intercept left mouse button up events. + +\membersection{wxTaskBarIcon::OnRButtonDown}\label{wxtaskbaricononrbuttondown} + +\func{virtual void}{OnRButtonDown}{\void} + +Override this function to intercept right mouse button down events. + +\membersection{wxTaskBarIcon::OnRButtonDClick}\label{wxtaskbaricononrbuttondclick} + +\func{virtual void}{OnRButtonDClick}{\void} + +Override this function to intercept right mouse button double-click events. + +\membersection{wxTaskBarIcon::OnRButtonUp}\label{wxtaskbaricononrbuttonup} + +\func{virtual void}{OnRButtonUp}{\void} + +Override this function to intercept right mouse button up events. + +\membersection{wxTaskBarIcon::OnMouseMove}\label{wxtaskbaricononmousemove} + +\func{virtual void}{OnMouseMove}{\void} + +Override this function to intercept mouse move events. + +\membersection{wxTaskBarIcon::RemoveIcon}\label{wxtaskbariconremoveicon} + +\func{bool}{RemoveIcon}{\void} + +Removes the icon previously set with \helpref{SetIcon}{wxtaskbariconseticon}. + +\membersection{wxTaskBarIcon::SetIcon}\label{wxtaskbariconseticon} + +\func{bool}{SetIcon}{\param{const wxIcon\&}{ icon}, \param{const wxString\& }{tooltip}} + +Sets the icon, and optional tooltip text. + + diff --git a/docs/latex/wx/tbitmap.tex b/docs/latex/wx/tbitmap.tex new file mode 100644 index 0000000000..ce20413d8e --- /dev/null +++ b/docs/latex/wx/tbitmap.tex @@ -0,0 +1,85 @@ +\section{Bitmaps overview}\label{wxbitmapoverview} + +Classes: \helpref{wxBitmap}{wxbitmap}, \helpref{wxBitmapHandler}{wxbitmaphandler}, \helpref{wxIcon}{wxicon}, \helpref{wxCursor}{wxcursor}. + +The wxBitmap class encapsulates the concept of a platform-dependent bitmap, +either monochrome or colour. Platform-specific methods for creating a +wxBitmap object from an existing file are catered for, and +this is an occasion where conditional compilation will sometimes be +required. + +A bitmap created dynamically or loaded from a file can be selected +into a memory device context (instance of \helpref{wxMemoryDC}{wxmemorydc}). This +enables the bitmap to be copied to a canvas or memory device context +using \helpref{wxDC::Blit}{wxdcblit}, or to be used as a drawing surface. The {\bf +wxToolBarSimple} class is implemented using bitmaps, and the toolbar demo +shows one of the toolbar bitmaps being used for drawing a miniature +version of the graphic which appears on the main canvas. + +See \helpref{wxMemoryDC}{wxmemorydc} for an example of drawing onto a bitmap. + +The following shows the conditional compilation required to load a +bitmap in X and in Windows 3. The alternative is to use the string +version of the bitmap constructor, which loads a file under X and a +resource under Windows 3, but has the disadvantage of requiring the +X icon file to be available at run-time. + +\begin{verbatim} +#ifdef wx_x +#include "aiai.xbm" +#endif +#ifdef wx_msw + wxIcon *icon = new wxBitmap("aiai"); +#endif +#ifdef wx_x + wxIcon *icon = new wxBitmap(aiai_bits, aiai_width, aiai_height); +#endif +\end{verbatim} + +\subsection{Loading bitmaps: further information} + +There is provision for a number of bitmap +formats via the standard wxBitmap class. These facilities can +be enabled or disabled using settings in wx\_setup.h. + +XPM colour pixmaps may be loaded and saved under Windows and X, with +some restrictions imposed by the lack of colourmap facility when +using XPM files. The user may elect to use XPM files as a cross-platform +stabdard, or translate between XPM and BMP files using a suitable +utility. + +Also, under Windows, DIBs (device independent bitmaps with extension BMP) +may be dynamically loaded and saved. Under X, GIF and BMP files may be +loaded but not saved. + +\subsection{Bitmap format handlers} + +To provide extensibility, the functionality for loading and saving bitmap formats +is not implemented in the wxBitmap class, but in a number of handler classes, +derived from wxBitmapHandler. There is a static list of handlers which wxBitmap +examines when a file load/save operation is requested. Some handlers are provided as standard, but if you +have special requirements, you may wish to initialise the wxBitmap class with +some extra handlers which you write yourself or receive from a third party. + +To add a handler object to wxBitmap, your application needs to include the header which implements it, and +then call the static function \helpref{wxBitmap::AddHandler}{wxbitmapaddhandler}. For example: + +{\small +\begin{verbatim} + #include "JPEGBitmapHandler.h" + ... + // Initialisation + wxBitmap::AddHandler(new wxJPEGBitmapHandler); + ... +\end{verbatim} +} + +Assuming wxJPEGBitmapHandler has been written correctly, you should now be able to load and save JPEG files +using the usual wxBitmap API. + +To see how bitmap handlers are implemented, please look at the files {\tt bitmap.h} and {\tt bitmap.cpp}. + +\subsection{wxIcon overview}\label{wxiconoverview} + +TODO. + diff --git a/docs/latex/wx/tcommdlg.tex b/docs/latex/wx/tcommdlg.tex new file mode 100644 index 0000000000..6f6fc688da --- /dev/null +++ b/docs/latex/wx/tcommdlg.tex @@ -0,0 +1,212 @@ +\section{Common dialogs overview}\label{commondialogsoverview} + +Classes: \helpref{wxColourDialog}{wxcolourdialog}, \helpref{wxFontDialog}{wxfontdialog}, +\rtfsp\helpref{wxPrintDialog}{wxprintdialog}, \helpref{wxFileDialog}{wxfiledialog},\rtfsp +\helpref{wxDirDialog}{wxdirdialog}, \helpref{wxTextEntryDialog}{wxtextentrydialog},\rtfsp +\helpref{wxMessageDialog}{wxmessagedialog}, \helpref{wxSingleChoiceDialog}{wxsinglechoicedialog},\rtfsp +\helpref{wxMultipleChoiceDialog}{wxmultiplechoicedialog} + +Common dialog classes and functions encapsulate commonly-needed dialog box requirements. +They are all `modal', grabbing the flow of control until the user dismisses the dialog, +to make them easy to use within an application. + +Some dialogs have both platform-dependent and platform-independent implementations, +so that if underlying windowing systems that do not provide the required functionality, +the generic classes and functions can stand in. For example, under MS Windows, wxColourDialog +uses the standard colour selector. There is also an equivalent called wxGenericColourDialog +for other platforms, and a macro defines wxColourDialog to be the same as wxGenericColourDialog +on non-MS Windows platforms. However, under MS Windows, the generic dialog can also be +used, for testing or other purposes. + +\subsection{wxColourDialog overview}\label{wxcolourdialogoverview} + +Classes: \helpref{wxColourDialog}{wxcolourdialog}, \helpref{wxColourData}{wxcolourdata} + +The wxColourDialog presents a colour selector to the user, and returns +with colour information. + +{\bf The MS Windows colour selector} + +Under Windows, the native colour selector common dialog is used. This +presents a dialog box with three main regions: at the top left, a +palette of 48 commonly-used colours is shown. Under this, there is a +palette of 16 `custom colours' which can be set by the application if +desired. Additionally, the user may open up the dialog box to show +a right-hand panel containing controls to select a precise colour, and add +it to the custom colour palette. + +{\bf The generic colour selector} + +Under non-MS Windows platforms, the colour selector is a simulation of +most of the features of the MS Windows selector. Two palettes of 48 +standard and 16 custom colours are presented, with the right-hand area +containing three sliders for the user to select a colour from red, +green and blue components. This colour may be added to the custom colour +palette, and will replace either the currently selected custom colour, +or the first one in the palette if none is selected. The RGB colour sliders +are not optional in the generic colour selector. The generic colour +selector is also available under MS Windows; use the name +wxGenericColourDialog. + +{\bf Example} + +In the samples/dialogs directory, there is an example of using +the wxColourDialog class. Here is an excerpt, which +sets various parameters of a wxColourData object, including +a grey scale for the custom colours. If the user did not cancel +the dialog, the application retrieves the selected colour and +uses it to set the background of a canvas. + +\begin{verbatim} + wxColourData data; + data.SetChooseFull(TRUE); + for (int i = 0; i < 16; i++) + { + wxColour colour(i*16, i*16, i*16); + data.SetCustomColour(i, colour); + } + + wxColourDialog dialog(this, &data); + if (dialog.ShowModal() == wxID_OK) + { + wxColourData retData = dialog.GetColourData(); + wxColour col = retData.GetColour(); + wxBrush brush(col, wxSOLID); + myCanvas->SetBackground(brush); + myCanvas->Clear(); + myCanvas->Refresh(); + } +\end{verbatim} + + +\subsection{wxFontDialog overview}\label{wxfontdialogoverview} + +Classes: \helpref{wxFontDialog}{wxfontdialog}, \helpref{wxFontData}{wxfontdata} + +The wxFontDialog presents a font selector to the user, and returns +with font and colour information. + +{\bf The MS Windows font selector} + +Under Windows, the native font selector common dialog is used. This +presents a dialog box with controls for font name, point size, style, weight, +underlining, strikeout and text foreground colour. A sample of the +font is shown on a white area of the dialog box. Note that +in the translation from full MS Windows fonts to wxWindows font +conventions, strikeout is ignored and a font family (such as +Swiss or Modern) is deduced from the actual font name (such as Arial +or Courier). The full range of Windows fonts cannot be used in wxWindows +at present. + +{\bf The generic font selector} + +Under non-MS Windows platforms, the font selector is simpler. +Controls for font family, point size, style, weight, +underlining and text foreground colour are provided, and +a sample is shown upon a white background. The generic font selector +is also available under MS Windows; use the name wxGenericFontDialog. + +In both cases, the application is responsible for deleting the +new font returned from calling wxFontDialog::Show (if any). +This returned font is guaranteed to be a new object and not +one currently in use in the application. + +{\bf Example} + +In the samples/dialogs directory, there is an example of using +the wxFontDialog class. The application uses the returned font +and colour for drawing text on a canvas. Here is an excerpt: + +\begin{verbatim} + wxFontData data; + data.SetInitialFont(canvasFont); + data.SetColour(canvasTextColour); + + wxFontDialog dialog(this, &data); + if (dialog.ShowModal() == wxID_OK) + { + wxFontData retData = dialog.GetFontData(); + canvasFont = retData.GetChosenFont(); + canvasTextColour = retData.GetColour(); + myCanvas->Refresh(); + } +\end{verbatim} + +\subsection{wxPrintDialog overview}\label{wxprintdialogoverview} + +Classes: \helpref{wxPrintDialog}{wxprintdialog}, \helpref{wxPrintData}{wxprintdata} + +This class represents the print and print setup common dialogs. +You may obtain a \helpref{wxPrinterDC}{wxprinterdc} device context from +a successfully dismissed print dialog. + +The samples/printing example shows how to use it: see \helpref{Printing overview}{printingoverview} for +an excerpt from this example. + +\subsection{wxFileDialog overview}\label{wxfiledialogoverview} + +Classes: \helpref{wxFileDialog}{wxfiledialog} + +Pops up a file selector box. In Windows, this is the common file selector +dialog. In X, this is a file selector box with somewhat less functionality. +The path and filename are distinct elements of a full file pathname. +If path is ``", the current directory will be used. If filename is ``", +no default filename will be supplied. The wildcard determines what files +are displayed in the file selector, and file extension supplies a type +extension for the required filename. Flags may be a combination of wxOPEN, +wxSAVE, wxOVERWRITE\_PROMPT, wxHIDE\_READONLY, or 0. They are only significant +at present in Windows. + +Both the X and Windows versions implement a wildcard filter. Typing a +filename containing wildcards (*, ?) in the filename text item, and +clicking on Ok, will result in only those files matching the pattern being +displayed. In the X version, supplying no default name will result in the +wildcard filter being inserted in the filename text item; the filter is +ignored if a default name is supplied. + +Under Windows (only), the wildcard may be a specification for multiple +types of file with a description for each, such as: + +\begin{verbatim} + "BMP files (*.bmp) | *.bmp | GIF files (*.gif) | *.gif" +\end{verbatim} + +\subsection{wxDirDialog overview}\label{wxdirdialogoverview} + +Classes: \helpref{wxDirDialog}{wxdirdialog} + +This dialog shows a directory selector dialog, allowing the user to select a single +directory. + +\subsection{wxTextEntryDialog overview}\label{wxtextentrydialogoverview} + +Classes: \helpref{wxTextEntryDialog}{wxtextentrydialog} + +This is a dialog with a text entry field. The value that the user +entered is obtained using \helpref{wxTextEntryDialog::GetValue}{wxtextentrydialoggetvalue}. + +\subsection{wxMessageDialog overview}\label{wxmessagedialogoverview} + +Classes: \helpref{wxMessageDialog}{wxmessagedialog} + +This dialog shows a message, plus buttons that can be chosen from OK, Cancel, Yes, and No. +Under Windows, an optional icon can be shown, such as an exclamation mark or question mark. + +The return value of \helpref{wxMessageDialog::ShowModal}{wxmessagedialogshowmodal} indicates +which button the user pressed. + +\subsection{wxSingleChoiceDialog overview}\label{wxsinglechoicedialogoverview} + +Classes: \helpref{wxSingleChoiceDialog}{wxsinglechoicedialog} + +This dialog shows a list of choices, plus OK and (optionally) Cancel. The user can +select one of them. The selection can be obtained from the dialog as an index, +a string or client data. + +\subsection{wxMultipleChoiceDialog overview}\label{wxmultiplechoicedialogoverview} + +Classes: \helpref{wxMultipleChoiceDialog}{wxmultiplechoicedialog} + +This dialog shows a list of choices, plus OK and (optionally) Cancel. The user can +select one or more of them. TODO. + diff --git a/docs/latex/wx/tconstr.tex b/docs/latex/wx/tconstr.tex new file mode 100644 index 0000000000..3c659234db --- /dev/null +++ b/docs/latex/wx/tconstr.tex @@ -0,0 +1,160 @@ +\section{Constraints overview}\label{constraintsoverview} + +Classes: \helpref{wxLayoutConstraints}{wxlayoutconstraints}, \helpref{wxIndividualLayoutConstraint}{wxindividuallayoutconstraint}. + +Objects of class wxLayoutConstraint can be associated with a window to define the +way its subwindows are laid out, with respect to their siblings or parent. + +The class consists of the following eight constraints of class wxIndividualLayoutConstraint, +some or all of which should be accessed directly to set the appropriate +constraints. + +\begin{itemize}\itemsep=0pt +\item {\bf left:} represents the left hand edge of the window +\item {\bf right:} represents the right hand edge of the window +\item {\bf top:} represents the top edge of the window +\item {\bf bottom:} represents the bottom edge of the window +\item {\bf width:} represents the width of the window +\item {\bf height:} represents the height of the window +\item {\bf centreX:} represents the horizontal centre point of the window +\item {\bf centreY:} represents the vertical centre point of the window +\end{itemize} + +Most constraints are initially set to have the relationship wxUnconstrained, +which means that their values should be calculated by looking at known constraints. +The exceptions are {\it width} and {\it height}, which are set to wxAsIs to +ensure that if the user does not specify a constraint, the existing +width and height will be used, to be compatible with panel items which often +have take a default size. If the constraint is wxAsIs, the dimension will +not be changed. + +To call the \helpref{wxWindow::Layout}{wxwindowlayout} function which evaluates +constraints, you can either call wxWindow::SetAutoLayout to tell +default OnSize handlers to call Layout, or override OnSize and call Layout yourself. + +\subsection{Constraint layout: more detail} + +By default, windows do not have a wxLayoutConstraints object. In this case, much layout +must be done explicitly, by performing calculations in OnSize members, except +for the case of frames that have one subwindow, where wxFrame::OnSize takes care +of resizing the child. + +To avoid the need for these rather awkward calculations, the user can create +a wxLayoutConstraints object and associate it with a window with wxWindow::SetConstraints. +This object contains a constraint for each of the window edges, two for the centre point, +and two for the window size. By setting some or all of these constraints appropriately, +the user can achieve quite complex layout by defining relationships between windows. + +In wxWindows, each window can be constrained relative to either its {\it +siblings} on the same window, or the {\it parent}. The layout algorithm +therefore operates in a top-down manner, finding the correct layout for +the children of a window, then the layout for the grandchildren, and so +on. Note that this differs markedly from native Motif layout, where +constraints can ripple upwards and can eventually change the frame +window or dialog box size. We assume in wxWindows that the {\it user} is +always `boss' and specifies the size of the outer window, to which +subwindows must conform. Obviously, this might be a limitation in some +circumstances, but it suffices for most situations, and the +simplification avoids some of the nightmarish problems associated with +programming Motif. + +When the user sets constraints, many of the constraints for windows +edges and dimensions remain unconstrained. For a given window, +the wxWindow::Layout algorithm first resets all constraints +in all children to have unknown edge or dimension values, and then iterates through the constraints, +evaulating them. For unconstrained edges and dimensions, it +tries to find the value using known relationships that always hold. For example, +an unconstrained {\it width} may be calculated from the {\it left} and {\it right edges}, if +both are currently known. For edges and dimensions with user-supplied constraints, these +constraints are evaulated if the inputs of the constraint are known. + +The algorithm stops when all child edges and dimension are known (success), or there +there are unknown edges or dimensions but there has been no change in this cycle (failure). + +It then sets all the window positions and sizes according to the values it has found. + +Because the algorithm is iterative, the order in which constraints are considered is +irrelevant. + +\subsection{Window layout examples}\label{layoutexamples} + +\subsubsection{Example 1: subwindow layout} + +This example specifies a panel and a canvas side by side, +with a text subwindow below it. + +\begin{verbatim} + frame->panel = new wxPanel(frame, 0, 0, 1000, 500, 0); + frame->canvas = new MyCanvas(frame, 0, 0, 400, 400, wxRETAINED); + frame->text_window = new MyTextWindow(frame, 0, 250, 400, 250, wxNATIVE_IMPL); + + // Set constraints for panel subwindow + wxLayoutConstraints *c1 = new wxLayoutConstraints; + + c1->left.SameAs (frame, wxLeft); + c1->top.SameAs (frame, wxTop); + c1->right.PercentOf (frame, wxWidth, 50); + c1->height.PercentOf (frame, wxHeight, 50); + + frame->panel->SetConstraints(c1); + + // Set constraints for canvas subwindow + wxLayoutConstraints *c2 = new wxLayoutConstraints; + + c2->left.SameAs (frame->panel, wxRight); + c2->top.SameAs (frame, wxTop); + c2->right.SameAs (frame, wxRight); + c2->height.PercentOf (frame, wxHeight, 50); + + frame->canvas->SetConstraints(c2); + + // Set constraints for text subwindow + wxLayoutConstraints *c3 = new wxLayoutConstraints; + c3->left.SameAs (frame, wxLeft); + c3->top.Below (frame->panel); + c3->right.SameAs (frame, wxRight); + c3->bottom.SameAs (frame, wxBottom); + + frame->text_window->SetConstraints(c3); +\end{verbatim} + +\subsubsection{Example 2: panel item layout} + +This example sizes a button width to 80 percent of the panel width, and centres +it horizontally. A listbox and multitext item are placed below it. The listbox +takes up 40 percent of the panel width, and the multitext item takes up +the remainder of the width. Margins of 5 pixels are used. + +\begin{verbatim} + // Create some panel items + wxButton *btn1 = new wxButton(frame->panel, (wxFunction)NULL, "A button") ; + + wxLayoutConstraints *b1 = new wxLayoutConstraints; + b1->centreX.SameAs (frame->panel, wxCentreX); + b1->top.SameAs (frame->panel, wxTop, 5); + b1->width.PercentOf (frame->panel, wxWidth, 80); + b1->height.PercentOf (frame->panel, wxHeight, 10); + btn1->SetConstraints(b1); + + wxListBox *list = new wxListBox(frame->panel, (wxFunction)NULL, "A list", + wxSINGLE, -1, -1, 200, 100); + + wxLayoutConstraints *b2 = new wxLayoutConstraints; + b2->top.Below (btn1, 5); + b2->left.SameAs (frame->panel, wxLeft, 5); + b2->width.PercentOf (frame->panel, wxWidth, 40); + b2->bottom.SameAs (frame->panel, wxBottom, 5); + list->SetConstraints(b2); + + wxMultiText *mtext = new wxMultiText(frame->panel, (wxFunction)NULL, "Multiline text", "Some text", + -1, -1, 150, 100); + + wxLayoutConstraints *b3 = new wxLayoutConstraints; + b3->top.Below (btn1, 5); + b3->left.RightOf (list, 5); + b3->right.SameAs (frame->panel, wxRight, 5); + b3->bottom.SameAs (frame->panel, wxBottom, 5); + mtext->SetConstraints(b3); +\end{verbatim} + + diff --git a/docs/latex/wx/tdb.tex b/docs/latex/wx/tdb.tex new file mode 100644 index 0000000000..28c43f79b7 --- /dev/null +++ b/docs/latex/wx/tdb.tex @@ -0,0 +1,240 @@ +\section{Database classes overview}\label{odbcoverview} + +Classes: \helpref{wxDatabase}{wxdatabase}, \helpref{wxRecordSet}{wxrecordset}, \helpref{wxQueryCol}{wxquerycol}, +\rtfsp\helpref{wxQueryField}{wxqueryfield} + +\normalboxd{IMPORTANT NOTE: The ODBC classes are a preliminary release and incomplete. Please +take this into account when using them. Feedback and bug fixes are appreciated, +as always. The classes are being developed by Olaf Klein (oklein@smallo.ruhr.de) and +Patrick Halke (patrick@zaphod.ruhr.de).} + +wxWindows provides a set of classes for accessing a subset of Microsoft's ODBC (Open Database Connectivity) +product. Currently, this wrapper is available under MS Windows only, although +ODBC may appear on other platforms, and a generic or product-specific SQL emulator for the ODBC +classes may be provided in wxWindows at a later date. + +ODBC presents a unified API (Application Programmer's Interface) to a +wide variety of databases, by interfacing indirectly to each database or +file via an ODBC driver. The language for most of the database +operations is SQL, so you need to learn a small amount of SQL as well as +the wxWindows ODBC wrapper API. Even though the databases may not be +SQL-based, the ODBC drivers translate SQL into appropriate operations +for the database or file: even text files have rudimentry ODBC support, +along with dBASE, Access, Excel and other file formats. + +The run-time files for ODBC are bundled with many existing database +packages, including MS Office. The required header files, sql.h and +sqlext.h, are bundled with several compilers including MS VC++ and +Watcom C++. The only other way to obtain these header files is from the +ODBC SDK, which is only available with the MS Developer Network CD-ROMs +-- at great expense. If you have odbc.dll, you can make the required +import library odbc.lib using the tool `implib'. You need to have odbc.lib +in your compiler library path. + +The minimum you need to distribute with your application is odbc.dll, which must +go in the Windows system directory. For the application to function correctly, +ODBC drivers must be installed on the user's machine. If you do not use the database +classes, odbc.dll will be loaded but not called (so ODBC does not need to be +setup fully if no ODBC calls will be made). + +A sample is distributed with wxWindows in {\tt samples/odbc}. You will need to install +the sample dbf file as a data source using the ODBC setup utility, available from +the control panel if ODBC has been fully installed. + +\subsection{Procedures for writing an ODBC application} + +You first need to create a wxDatabase object. If you want to get information +from the ODBC manager instead of from a particular database (for example +using \helpref{wxRecordSet::GetDataSources}{wxrecordsetgetdatasources}), then you +do not need to call \helpref{wxDatabase::Open}{wxdatabaseopen}. +If you do wish to connect to a datasource, then call wxDatabase::Open. +You can reuse your wxDatabase object, calling wxDatabase::Close and wxDatabase::Open +multiple times. + +Then, create a wxRecordSet object for retrieving or sending information. +For ODBC manager information retrieval, you can create it as a dynaset (retrieve the +information as needed) or a snapshot (get all the data at once). +If you are going to call \helpref{wxRecordSet::ExecuteSQL}{wxrecordsetexecutesql}, you need to create it as a snapshot. +Dynaset mode is not yet implemented for user data. + +Having called a function such as wxRecordSet::ExecuteSQL or +wxRecordSet::GetDataSources, you may have a number of records +associated with the recordset, if appropriate to the operation. You can +now retrieve information such as the number of records retrieved and the +actual data itself. Use \helpref{wxRecordSet::GetFieldData}{wxrecordsetgetfielddata} or +\helpref{wxRecordSet::GetFieldDataPtr}{wxrecordsetgetfielddataptr} to get the data or a pointer to it, passing +a column index or name. The data returned will be for the current +record. To move around the records, use \helpref{wxRecordSet::MoveNext}{wxrecordsetmovenext}, +\rtfsp\helpref{wxRecordSet::MovePrev}{wxrecordsetmoveprev} and associated functions. + +You can use the same recordset for multiple operations, or delete +the recordset and create a new one. + +Note that when you delete a wxDatabase, any associated recordsets +also get deleted, so beware of holding onto invalid pointers. + +\subsection{wxDatabase overview}\label{wxdatabaseoverview} + +\overview{Database classes overview}{odbcoverview} + +Class: \helpref{wxDatabase}{wxdatabase} + +Every database object represents an ODBC connection. To do anything useful +with a database object you need to bind a wxRecordSet object to it. All you +can do with wxDatabase is opening/closing connections and getting some info +about it (users, passwords, and so on). + +\subsection{wxQueryCol overview}\label{wxquerycoloverview} + +\overview{Database classes overview}{odbcoverview} + +Class: \helpref{wxQueryCol}{wxquerycol} + +Every data column is represented by an instance of this class. +It contains the name and type of a column and a list of wxQueryFields where +the real data is stored. The links to user-defined variables are stored +here, as well. + +\subsection{wxQueryField overview}\label{wxqueryfieldoverview} + +\overview{Database classes overview}{odbcoverview} + +Class: \helpref{wxQueryField}{wxqueryfield} + +As every data column is represented by an instance of the class wxQueryCol, +every data item of a specific column is represented by an instance of +wxQueryField. Each column contains a list of wxQueryFields. If wxRecordSet is +of the type wxOPEN\_TYPE\_DYNASET, there will be only one field for each column, +which will be updated every time you call functions like wxRecordSet::Move +or wxRecordSet::GoTo. If wxRecordSet is of the type wxOPEN\_TYPE\_SNAPSHOT, +all data returned by an ODBC function will be loaded at once and the number +of wxQueryField instances for each column will depend on the number of records. + +\subsection{wxRecordSet overview}\label{wxrecordsetoverview} + +\overview{Database classes overview}{odbcoverview} + +Class: \helpref{wxRecordSet}{wxrecordset} + +Each wxRecordSet represents a database query. You can make multiple queries +at a time by using multiple wxRecordSets with a wxDatabase or you can make +your queries in sequential order using the same wxRecordSet. + +\subsection{ODBC SQL data types}\label{sqltypes} + +\overview{Database classes overview}{odbcoverview} + +These are the data types supported in ODBC SQL. Note that there are other, extended level conformance +types, not currently supported in wxWindows. + +\begin{twocollist}\itemsep=0pt +\twocolitem{CHAR(n)}{A character string of fixed length {\it n}.} +\twocolitem{VARCHAR(n)}{A varying length character string of maximum length {\it n}.} +\twocolitem{LONG VARCHAR(n)}{A varying length character string: equivalent to VARCHAR for the purposes +of ODBC.} +\twocolitem{DECIMAL(p, s)}{An exact numeric of precision {\it p} and scale {\it s}.} +\twocolitem{NUMERIC(p, s)}{Same as DECIMAL.} +\twocolitem{SMALLINT}{A 2 byte integer.} +\twocolitem{INTEGER}{A 4 byte integer.} +\twocolitem{REAL}{A 4 byte floating point number.} +\twocolitem{FLOAT}{An 8 byte floating point number.} +\twocolitem{DOUBLE PRECISION}{Same as FLOAT.} +\end{twocollist} + +These data types correspond to the following ODBC identifiers: + +\begin{twocollist}\itemsep=0pt +\twocolitem{SQL\_CHAR}{A character string of fixed length.} +\twocolitem{SQL\_VARCHAR}{A varying length character string.} +\twocolitem{SQL\_DECIMAL}{An exact numeric.} +\twocolitem{SQL\_NUMERIC}{Same as SQL\_DECIMAL.} +\twocolitem{SQL\_SMALLINT}{A 2 byte integer.} +\twocolitem{SQL\_INTEGER}{A 4 byte integer.} +\twocolitem{SQL\_REAL}{A 4 byte floating point number.} +\twocolitem{SQL\_FLOAT}{An 8 byte floating point number.} +\twocolitem{SQL\_DOUBLE}{Same as SQL\_FLOAT.} +\end{twocollist} + +\subsection{A selection of SQL commands}\label{sqlcommands} + +\overview{Database classes overview}{odbcoverview} + +The following is a very brief description of some common SQL commands, with +examples. + +\subsubsection{Create} + +Creates a table. + +Example: + +\begin{verbatim} +CREATE TABLE Book + (BookNumber INTEGER PRIMARY KEY + , CategoryCode CHAR(2) DEFAULT 'RO' NOT NULL + , Title VARCHAR(100) UNIQUE + , NumberOfPages SMALLINT + , RetailPriceAmount NUMERIC(5,2) + ) +\end{verbatim} + +\subsubsection{Insert} + +Inserts records into a table. + +Example: + +\begin{verbatim} +INSERT INTO Book + (BookNumber, CategoryCode, Title) + VALUES(5, 'HR', 'The Lark Ascending') +\end{verbatim} + +\subsubsection{Select} + +The Select operation retrieves rows and columns from a table. The criteria +for selection and the columns returned may be specified. + +Examples: + +\verb$SELECT * FROM Book$ + +Selects all rows and columns from table Book. + +\verb$SELECT Title, RetailPriceAmount FROM Book WHERE RetailPriceAmount > 20.0$ + +Selects columns Title and RetailPriceAmount from table Book, returning only +the rows that match the WHERE clause. + +\verb$SELECT * FROM Book WHERE CatCode = 'LL' OR CatCode = 'RR'$ + +Selects all columns from table Book, returning only +the rows that match the WHERE clause. + +\verb$SELECT * FROM Book WHERE CatCode IS NULL$ + +Selects all columns from table Book, returning only rows where the CatCode column +is NULL. + +\verb$SELECT * FROM Book ORDER BY Title$ + +Selects all columns from table Book, ordering by Title, in ascending order. To specify +descending order, add DESC after the ORDER BY Title clause. + +\verb$SELECT Title FROM Book WHERE RetailPriceAmount >= 20.0 AND RetailPriceAmount <= 35.0$ + +Selects records where RetailPriceAmount conforms to the WHERE expression. + +\subsubsection{Update} + +Updates records in a table. + +Example: + +\verb$UPDATE Incident SET X = 123 WHERE ASSET = 'BD34'$ + +This example sets a field in column `X' to the number 123, for the record +where the column ASSET has the value `BD34'. + + + diff --git a/docs/latex/wx/tdc.tex b/docs/latex/wx/tdc.tex new file mode 100644 index 0000000000..08da3e8c9d --- /dev/null +++ b/docs/latex/wx/tdc.tex @@ -0,0 +1,42 @@ +\section{Device context overview}\label{dcoverview} + +Classes: \helpref{wxDC}{wxdc}, \helpref{wxPostScriptDC}{wxpostscriptdc},\rtfsp +\rtfsp\helpref{wxMetaFileDC}{wxmetafiledc}, \helpref{wxMemoryDC}{wxmemorydc}, \helpref{wxPrinterDC}{wxprinterdc},\rtfsp +\helpref{wxScreenDC}{wxscreendc}, \helpref{wxClientDC}{wxclientdc}, \helpref{wxPaintDC}{wxpaintdc},\rtfsp +\helpref{wxWindowDC}{wxwindowdc}. + +A wxDC is a {\it device context} onto which graphics and text can be drawn. +The device context is intended to represent a number of output devices in a generic way, +with the same API being used throughout. + +Some device contexts are created temporarily in order to draw on a window. +This is true of \helpref{wxScreenDC}{wxscreendc}, \helpref{wxClientDC}{wxclientdc}, \helpref{wxPaintDC}{wxpaintdc}, +and \helpref{wxWindowDC}{wxwindowdc}. The following describes the differences between +these device contexts and when you should use them. + +\begin{itemize}\itemsep=0pt +\item {\bf wxScreenDC.} Use this to paint on the screen, as opposed to an individual window. +\item {\bf wxClientDC.} Use this to paint on the client area of window (the part without +borders and other decorations), but do not use it from within an \helpref{wxWindow::OnPaint}{wxwindowonpaint} event. +\item {\bf wxPaintDC.} Use this to paint on the client area of a window, but {\it only} from +within an \helpref{wxWindow::OnPaint}{wxwindowonpaint} event. +\item {\bf wxWindowDC.} Use this to paint on the whole area of a window, including decorations. +This may not be available on non-Windows platforms. +\end{itemize} + +To use a client, paint or window device context, create an object on the stack with +the window as argument, for example: + +\begin{verbatim} + void MyWindow::OnMyCmd(wxCommandEvent& event) + { + wxClientDC dc(window); + DrawMyPicture(dc); + } +\end{verbatim} + +Try to write code so it is parameterised by wxDC - if you do this, the same piece of code may +write to a number of different devices, by passing a different device context. This doesn't +work for everything (for example not all device contexts support bitmap drawing) but +will work most of the time. + diff --git a/docs/latex/wx/tdebug.tex b/docs/latex/wx/tdebug.tex new file mode 100644 index 0000000000..e996ebdfb2 --- /dev/null +++ b/docs/latex/wx/tdebug.tex @@ -0,0 +1,104 @@ +\section{Debugging overview}\label{debuggingoverview} + +Classes: \helpref{wxDebugContext}{wxdebugcontext}, \helpref{wxDebugStreamBuf}{wxdebugstreambuf}, +\rtfsp\helpref{wxObject}{wxobject} + +Various classes, functions and macros are provided in wxWindows to help you debug +your application. Most of these are only available if you compile both wxWindows, +your application and {\it all} libraries that use wxWindows with the DEBUG flag +set to 1 or more. + +wxDebugContext is a class that never gets instantiated, but ties together +various functions and variables. It allows you to set the debugging stream, dump +all objects to that stream, write statistics about object allocation, and +check memory for errors. + +You can use the \helpref{WXTRACE}{trace} macro to output debugging information in DEBUG mode; +it will be defined to nothing for non-debugging code. + +It is good practice to define a Dump member function for each class you derive +from a wxWindows class, so that wxDebugContext::Dump can call it and +give valuable information about the state of the application. + +For wxDebugContext to do its work, the {\it new} and {\it delete}\rtfsp +operators for wxObject have been redefined to store extra information +about dynamically allocated objects (but not statically declared +objects). This slows down a debugging version of an application, but can +in theory find difficult-to-detect memory leaks (objects are not +deallocated), overwrites (writing past the end of your object) and +underwrites (writing to memory in front of the object). + +If you have difficulty tracking down a memory leak, recompile +in debugging mode and call wxDebugContext::Dump and wxDebugContext::Statistics +at appropriate places. They will tell you what objects have not yet been +deleted, and what kinds of object they are. + +If you use the macro WXDEBUG\_NEW instead of the normal 'new', the debugging +output (and error messages reporting memory problems) will also tell you what +file and on what line you allocated the object. + +To avoid the need for replacing existing new operators with WXDEBUG\_NEW, you +can write this at the top of each application file: + +\begin{verbatim} +#define new WXDEBUG\_NEW +\end{verbatim} + +In non-debugging mode, this will revert to the usual interpretation +of new. Note that for this not to mess up new-based allocation of non-wxObject derived classes and +built-in types, there are global definitions of new and delete which match +the syntax required for storing filename and line numbers. These merely +call malloc and free, and so do not do anything interesting. The definitions +may possibly cause multiple symbol problems for some compilers and so might +need to be omitted by setting the USE\_GLOBAL\_MEMORY\_OPERATORS to 0 in wx\_setup.h + +\subsection{wxDebugContext overview}\label{wxdebugcontextoverview} + +\overview{Debugging overview}{debuggingoverview} + +Class: \helpref{wxDebugContext}{wxdebugcontext} + +wxDebugContext is a class for performing various debugging and memory tracing +operations. wxDebugContext, and the related macros and function WXTRACE and +wxTrace, are only present if USE\_DEBUG\_CONTEXT is used. + +This class has only static data and function members, and there should be +no instances. Probably the most useful members are SetFile (for directing output +to a file, instead of the default standard error or debugger output); +Dump (for dumping the dynamically allocated objects) and PrintStatistics +(for dumping information about allocation of objects). You can also call +Check to check memory blocks for integrity. + +Here's an example of use. The SetCheckpoint ensures that only the +allocations done after the checkpoint will be dumped. Unfortunately +the define of new to WXDEBUG\_NEW does not work for Borland C++ (and +perhaps other compilers) because it fails to find the correct overloaded +operator for non-object usage of new. Instead, you need to use WXDEBUG\_NEW +explicitly if there are any examples of non-object new usage in the file. + +\begin{verbatim} +#define new WXDEBUG_NEW + + wxDebugContext::SetCheckpoint(); + + wxDebugContext::SetFile("c:\\temp\\debug.log"); + + wxString *thing = new wxString; + + // Proves that defining 'new' to be 'WXDEBUG_NEW' doesn't mess up + // non-object allocation. Doesn't work for Borland C++. + char *ordinaryNonObject = new char[1000]; + + wxDebugContext::Dump(); + wxDebugContext::PrintStatistics(); +\end{verbatim} + +You can use wxDebugContext if DEBUG is 1 or more, or you can use it +at any other time (if USE\_DEBUG\_CONTEXT is 1). It is not disabled +for DEBUG = 1 (as in earlier versions of wxWindows) because you +may not wish to recompile wxWindows and your entire application +just to make use of the error logging facility. This is especially +true in a Windows NT or Windows 95 environment, where you cannot +easily output to a debug window: wxDebugContext can be used to +write to log files instead. + diff --git a/docs/latex/wx/tdelwin.tex b/docs/latex/wx/tdelwin.tex new file mode 100644 index 0000000000..e8b591cde9 --- /dev/null +++ b/docs/latex/wx/tdelwin.tex @@ -0,0 +1,130 @@ +\section{Window deletion overview}\label{windowdeletionoverview} + +Classes: \helpref{wxCloseEvent}{wxcloseevent}, \helpref{wxWindow}{wxwindow} + +Window deletion can be a confusing subject, so this overview is provided +to make it clear when and how you delete windows, or respond to user requests +to close windows. + +\wxheading{What is the sequence of events in a window deletion?} + +When the user clicks on the system close button or system close command, +in a frame or a dialog, wxWindows calls \helpref{wxWindow::Close}{wxwindowclose}. + +This function then generates a \helpref{wxCloseEvent}{wxcloseevent} event which +can be handled by the application (by using an EVT\_CLOSE event table entry). It is the duty of the application to +define a suitable event handler, and decide whether or not to destroy the window. +If the application is for some reason forcing the application to close, +the window should always be destroyed, otherwise there is the option to +ignore the request, or maybe wait until the user has answered a question +before deciding whether it's safe to close. + +The wxCloseEvent handler should only call \helpref{wxWindow::Destroy}{wxwindowdestroy} to +delete the window, and not use the {\bf delete} operator. This is because +for some window classes, wxWindows delays actual deletion of the window until all events have been processed, +since otherwise there is the danger that events will be sent to a non-existent window. + +\wxheading{How can the application close a window itself?} + +Your application can use the \helpref{wxWindow::Close}{wxwindowclose} event just as +the framework does. Pass a TRUE argument to this function to tell the event handler +that we definitely want to delete the frame. + +If for some reason you don't wish to use the {\bf Close} function to delete a window, at least use +the {\bf Destroy} function so that wxWindows can decide when it's safe to delete the window. + +\wxheading{What is the default behaviour?} + +By default, the close event handlers for wxFrame and wxDialog +both call the old \helpref{wxWindow::OnClose}{wxwindowonclose} handler +for backward compatibility. So you can still use the old form if you wish. + +In addition, the default close event handler for wxDialog simulates a Cancel command, +generating a wxID\_CANCEL event. Since the handler for this cancel event might +itself call {\bf Close}, there is a check for infinite looping. + +Under Windows, wxDialog also defines a handler for \helpref{wxWindow::OnCharHook}{wxwindowoncharhook} that +generates a Cancel event if the Escape key has been pressed. + +\wxheading{What should I do when the user calls up Exit from a menu?} + +You can simply call \helpref{wxWindow::Close}{wxwindowclose} on the frame. This +will invoke your own close event handler which may destroy the frame. + +You can do checking to see if your application can be safely exited at this point, +either from within your close event handler, or from within your exit menu command +handler. For example, you may wish to check that all files have been saved. +Give the user a chance to save and quit, to not save but quit anyway, or to cancel +the exit command altogether. + +\wxheading{What should I do to upgrade my 1.xx OnClose to 2.0?} + +In wxWindows 1.xx, the {\bf OnClose} function did not actually delete 'this', but signalled +to the calling function (either {\bf Close}, or the wxWindows framework) to delete +or not delete the window. + +You can still use this function unchanged in 2.0, but it's worth upgrading to +the new method in case future versions of wxWindows does not support the old one. + +To update your code, you should provide an event table entry in your frame or +dialog, using the EVT\_CLOSE macro. The event handler function might look like this: + +{\small% +\begin{verbatim} + void MyFrame::OnCloseWindow(wxCloseEvent& event) + { + // If the application forces the deletion, + // obey without question. + if (event.GetForce()) + { + this->Destroy(); + return; + } + + // Otherwise... + if (MyDataHasBeenModified()) + { + wxMessageDialog* dialog = new wxMessageDialog(this, + "Save changed data?", "My app", wxYES_NO|wxCANCEL); + + int ans = dialog->ShowModal(); + dialog->Close(TRUE); + + switch (ans) + { + case wxID_YES: // Save, then destroy, quitting app + SaveMyData(); + this->Destroy(); + break; + case wxID_NO: // Don't save; just destroy, quitting app + this->Destroy(); + break; + case wxID_CANCEL: // Do nothing - so don't quit app. + default: + break; + } + } + } +\end{verbatim} +}% + +\wxheading{How do I exit the application gracefully?} + +A wxWindows application automatically exits when the top frame (returned +from \helpref{wxApp::OnInit}{wxapponinit}) is destroyed. This may be modified +in later versions to exit only when the {\it last} top-level frame is destroyed. + +\wxheading{Do child windows get deleted automatically?} + +Yes, child windows are deleted from within the parent destructor. This includes any children +that are themselves frames or dialogs, so you may wish to close these child frame or dialog windows +explicitly from within the parent close handler. + +\wxheading{What about other kinds of window?} + +So far we've been talking about `managed' windows, i.e. frames and dialogs. Windows +with parents, such as controls, don't have delayed destruction and don't usually have +close event handlers, though you can implement them if you wish. For consistency, +continue to use the \helpref{wxWindow::Destroy}{wxwindowdestroy} function instead +of the {\bf delete} operator when deleting these kinds of windows explicitly. + diff --git a/docs/latex/wx/tdialog.tex b/docs/latex/wx/tdialog.tex new file mode 100644 index 0000000000..a3ac9fbd6a --- /dev/null +++ b/docs/latex/wx/tdialog.tex @@ -0,0 +1,31 @@ +\section{wxDialog overview}\label{wxdialogoverview} + +Classes: \helpref{wxDialog}{wxdialog} + +A dialog box is similar to a panel, in that it is a window which can +be used for placing controls, with the following exceptions: + +\begin{enumerate} +\item A surrounding frame is implicitly created. +\item Extra functionality is automatically given to the dialog box, + such as tabbing between items (currently Windows only). +\item If the dialog box is {\it modal}, the calling program is blocked + until the dialog box is dismissed. +\end{enumerate} + +Under Windows 3, modal dialogs have to be emulated using +modeless dialogs and a message loop. This is because Windows 3 expects +the contents of a modal dialog to be loaded from a resource file or +created on receipt of a dialog initialization message. This is too +restrictive for wxWindows, where any window may be created and displayed +before its contents are created. + +For a set of dialog convenience functions, including file selection, see +\rtfsp\helpref{Dialog functions}{dialogfunctions}. + +See also \helpref{wxPanel}{wxpanel} and \helpref{wxWindow}{wxwindow} for inherited +member functions. Validation of data in controls is covered +in \helpref{Validator overview}{validatoroverview}. + + + diff --git a/docs/latex/wx/tdocview.tex b/docs/latex/wx/tdocview.tex new file mode 100644 index 0000000000..08d9cd7bf6 --- /dev/null +++ b/docs/latex/wx/tdocview.tex @@ -0,0 +1,318 @@ +\section{Document/view overview}\label{docviewoverview} + +Classes: \helpref{wxDocument}{wxdocument}, \helpref{wxView}{wxview}, \helpref{wxDocTemplate}{wxdoctemplate},\rtfsp +\helpref{wxDocManager}{wxdocmanager}, \helpref{wxDocParentFrame}{wxdocparentframe}, \helpref{wxDocChildFrame}{wxdocchildframe}, +\rtfsp\helpref{wxCommand}{wxcommand}, \helpref{wxCommandProcessor}{wxcommandprocessor} + +The document/view framework is found in most application frameworks, because it +can dramatically simplify the code required to build many kinds of application. + +The idea is that you can model your application primarily in terms of {\it documents} to store data +and provide interface-independent operations upon it, and {\it views} to visualise and manipulate +the data. Documents know how to do input and output given stream objects, and views are responsible +for taking input from physical windows and performing the manipulation on the document data. +If a document's data changes, all views should be updated to reflect the change. + +The framework can provide many user-interface elements based on this model. Once you have defined +your own classes and the relationships between them, the framework takes care +of popping up file selectors, opening and closing files, asking the user to save +modifications, routing menu commands to appropriate (possibly default) code, even +some default print/preview functionality and support for command undo/redo. +The framework is highly modular, allowing overriding and replacement of functionality +and objects to achieve more than the default behaviour. + +These are the overall steps involved in creating an application based on the document/view framework: + +\begin{enumerate}\itemsep=0pt +\item Define your own document and view classes, overriding a minimal set of +member functions e.g. for input/output, drawing and initialization. +\item Define any subwindows +(such as a canvas) that are needed for the view(s). You may need to route some events +to views or documents, for example OnPaint needs to be routed to wxView::OnDraw. +\item Decide what style of interface you will use: Microsoft's MDI (multiple +document child frames surrounded by an overall frame), SDI (a separate, unconstrained frame +for each document), or single-window (one document open at a time, as in Windows Write). +\item Use the appropriate wxDocParentFrame and wxDocChildFrame classes. Construct an instance +of wxDocParentFrame in your wxApp::OnInit, and a wxDocChildFrame (if not single-window) when +you initialize a view. Create menus using standard menu ids (such as wxID\_OPEN, wxID\_PRINT), +routing non-application-specific identifiers to the base frame's OnMenuCommand. +\item Construct a single wxDocManager instance at the beginning of your wxApp::OnInit, and then +as many wxDocTemplate instances as necessary to define relationships between documents and +views. For a simple application, there will be just one wxDocTemplate. +\end{enumerate} + +If you wish to implement Undo/Redo, you need to derive your own class(es) from wxCommand +and use wxCommandProcessor::Submit instead of directly executing code. The framework will +take care of calling Undo and Do functions as appropriate, so long as the wxID\_UNDO and +wxID\_REDO menu items are defined in the view menu. + +Here are a few examples of the tailoring you can do to go beyond the default framework +behaviour: + +\begin{itemize}\itemsep=0pt +\item Override wxDocument::OnCreateCommandProcessor to define a different Do/Undo strategy, +or a command history editor. +\item Override wxView::OnCreatePrintout to create an instance of a derived \helpref{wxPrintout}{wxprintout}\rtfsp +class, to provide multi-page document facilities. +\item Override wxDocManager::SelectDocumentPath to provide a different file selector. +\item Limit the maximum number of open documents and the maximum number of undo commands. +\end{itemize} + +Note that to activate framework functionality, you need to use some or all of +the wxWindows \helpref{predefined command identifiers}{predefinedids} in your menus. + +\subsection{wxDocument overview}\label{wxdocumentoverview} + +\overview{Document/view framework overview}{docviewoverview} + +Class: \helpref{wxDocument}{wxdocument} + +The wxDocument class can be used to model an application's file-based +data. It is part of the document/view framework supported by wxWindows, +and cooperates with the \helpref{wxView}{wxview}, \helpref{wxDocTemplate}{wxdoctemplate}\rtfsp +and \helpref{wxDocManager}{wxdocmanager} classes. + +Using this framework can save a lot of routine user-interface programming, +since a range of menu commands -- such as open, save, save as -- are supported automatically. +The programmer just needs to define a minimal set of classes and member functions +for the framework to call when necessary. Data, and the means to view and edit +the data, are explicitly separated out in this model, and the concept of multiple {\it views} onto +the same data is supported. + +Note that the document/view model will suit many but not all styles of application. +For example, it would be overkill for a simple file conversion utility, where there +may be no call for {\it views} on {\it documents} or the ability to open, edit and save +files. But probably the majority of applications are document-based. + +See the example application in {\tt samples/docview}. + +To use the abstract wxDocument class, you need to derive a new class and override +at least the member functions SaveObject and LoadObject. SaveObject and +LoadObject will be called by the framework when the document needs to be saved +or loaded. + +Use the macros DECLARE\_DYNAMIC\_CLASS and IMPLEMENT\_DYNAMIC\_CLASS in order +to allow the framework to create document objects on demand. When you create +a \helpref{wxDocTemplate}{wxdoctemplate} object on application initialization, you +should pass CLASSINFO(YourDocumentClass) to the wxDocTemplate constructor +so that it knows how to create an instance of this class. + +If you do not wish to use the wxWindows method of creating document +objects dynamically, you must override wxDocTemplate::CreateDocument +to return an instance of the appropriate class. + +\subsection{wxView overview}\label{wxviewoverview} + +\overview{Document/view framework overview}{docviewoverview} + +Class: \helpref{wxView}{wxview} + +The wxView class can be used to model the viewing and editing component of +an application's file-based data. It is part of the document/view framework supported by wxWindows, +and cooperates with the \helpref{wxDocument}{wxdocument}, \helpref{wxDocTemplate}{wxdoctemplate} +and \helpref{wxDocManager}{wxdocmanager} classes. + +See the example application in {\tt samples/docview}. + +To use the abstract wxView class, you need to derive a new class and override +at least the member functions OnCreate, OnDraw, OnUpdate and OnClose. You'll probably +want to override OnMenuCommand to respond to menu commands from the frame containing the +view. + +Use the macros DECLARE\_DYNAMIC\_CLASS and IMPLEMENT\_DYNAMIC\_CLASS in order +to allow the framework to create view objects on demand. When you create +a \helpref{wxDocTemplate}{wxdoctemplate} object on application initialization, you +should pass CLASSINFO(YourViewClass) to the wxDocTemplate constructor +so that it knows how to create an instance of this class. + +If you do not wish to use the wxWindows method of creating view +objects dynamically, you must override wxDocTemplate::CreateView +to return an instance of the appropriate class. + +\subsection{wxDocTemplate overview}\label{wxdoctemplateoverview} + +\overview{Document/view framework overview}{docviewoverview} + +Class: \helpref{wxDocTemplate}{wxdoctemplate} + +The wxDocTemplate class is used to model the relationship between a +document class and a view class. The application creates a document +template object for each document/view pair. The list of document +templates managed by the wxDocManager instance is used to create +documents and views. Each document template knows what file filters +and default extension are appropriate for a document/view combination, +and how to create a document or view. + +For example, you might write a small doodling application that can load +and save lists of line segments. If you had two views of the data -- graphical, +and a list of the segments -- then you would create one document class DoodleDocument, +and two view classes (DoodleGraphicView and DoodleListView). You would also +need two document templates, one for the graphical view and another for the +list view. You would pass the same document class and default file extension to both +document templates, but each would be passed a different view class. When +the user clicks on the Open menu item, the file selector is displayed +with a list of possible file filters -- one for each wxDocTemplate. Selecting +the filter selects the wxDocTemplate, and when +a file is selected, that template will be used for creating a document +and view. Under non-Windows platforms, the user will be prompted for +a list of templates before the file selector is shown, since most file selectors +do not allow a choice of file filters. + +For the case where an application has one document type and one view type, +a single document template is constructed, and dialogs will be appropriately +simplified. + +wxDocTemplate is part of the document/view framework supported by wxWindows, +and cooperates with the \helpref{wxView}{wxview}, \helpref{wxDocument}{wxdocument} +and \helpref{wxDocManager}{wxdocmanager} classes. + +See the example application in {\tt samples/docview}. + +To use the wxDocTemplate class, you do not need to derive a new class. +Just pass relevant information to the constructor including CLASSINFO(YourDocumentClass) and +CLASSINFO(YourViewClass) to allow dynamic instance creation. +If you do not wish to use the wxWindows method of creating document +objects dynamically, you must override wxDocTemplate::CreateDocument +and wxDocTemplate::CreateView to return instances of the appropriate class. + +{\it NOTE}: the document template has nothing to do with the C++ template construct. C++ +templates are not used anywhere in wxWindows. + +\subsection{wxDocManager overview}\label{wxdocmanageroverview} + +\overview{Document/view framework overview}{docviewoverview} + +Class: \helpref{wxDocManager}{wxdocmanager} + +The wxDocManager class is part of the document/view framework supported by wxWindows, +and cooperates with the \helpref{wxView}{wxview}, \helpref{wxDocument}{wxdocument}\rtfsp +and \helpref{wxDocTemplate}{wxdoctemplate} classes. + +A wxDocManager instance coordinates documents, views and document templates. It keeps a list of document and +and template instances, and much functionality is routed through this object, such +as providing selection and file dialogs. The application can use this class `as is' or +derive a class and override some members to extend or change the functionality. +Create an instance of this class near the beginning of your application initialization, +before any documents, views or templates are manipulated. + +There may be multiple wxDocManager instances in an application. + +See the example application in {\tt samples/docview}. + +\subsection{wxCommand overview}\label{wxcommandoverview} + +\overview{Document/view framework overview}{docviewoverview} + +Classes: \helpref{wxCommand}{wxcommand}, \helpref{wxCommandProcessor}{wxcommandprocessor} + +wxCommand is a base class for modelling an application command, +which is an action usually performed by selecting a menu item, pressing +a toolbar button or any other means provided by the application to +change the data or view. + +Instead of the application functionality being scattered around +switch statements and functions in a way that may be hard to +read and maintain, the functionality for a command is explicitly represented +as an object which can be manipulated by a framework or application. +When a user interface event occurs, the application {\it submits} a command +to a \helpref{wxCommandProcessor}{wxcommandprocessoroverview} object to execute and +store. + +The wxWindows document/view framework handles Undo and Redo by use of +wxCommand and wxCommandProcessor objects. You might find further uses +for wxCommand, such as implementing a macro facility that stores, loads +and replays commands. + +An application can derive a new class for every command, or, more likely, use +one class parameterized with an integer or string command identifier. + +\subsection{wxCommandProcessor overview}\label{wxcommandprocessoroverview} + +\overview{Document/view framework overview}{docviewoverview} + +Classes: \helpref{wxCommandProcessor}{wxcommandprocessor}, \helpref{wxCommand}{wxcommand} + +wxCommandProcessor is a class that maintains a history of wxCommand +instances, with undo/redo functionality built-in. Derive a new class from this +if you want different behaviour. + +\subsection{wxFileHistory overview}\label{wxfilehistoryoverview} + +\overview{Document/view framework overview}{docviewoverview} + +Classes: \helpref{wxFileHistory}{wxfilehistory}, \helpref{wxDocManager}{wxdocmanager} + +wxFileHistory encapsulates functionality to record the last few files visited, and +to allow the user to quickly load these files using the list appended to the File menu. + +Although wxFileHistory is used by wxDocManager, it can be used independently. You may wish +to derive from it to allow different behaviour, such as popping up a scrolling +list of files. + +By calling wxFileHistory::FileHistoryUseMenu you can associate a file menu with +the file history, that will be used for appending the filenames. They are +appended using menu identifiers in the range wxID\_FILE1 to wxID\_FILE9. + +In order to respond to a file load command from one of these identifiers, +you need to handle them in your wxFrame::OnMenuCommand. Below is the +code used by the default document/view parent frame. + +\begin{verbatim} +void wxDocParentFrame::OnMenuCommand(int id) +{ + switch (id) + { + case wxID_EXIT: + { + if (GetEventHandler()->OnClose()) + delete this; + break; + } + case wxID_FILE1: + case wxID_FILE2: + case wxID_FILE3: + case wxID_FILE4: + case wxID_FILE5: + case wxID_FILE6: + case wxID_FILE7: + case wxID_FILE8: + case wxID_FILE9: + { + char *f = docManager->GetHistoryFile(id-wxID_FILE1); + if (f) + (void)docManager->CreateDocument(f, wxDOC_SILENT); + break; + } + default: + { + docManager->OnMenuCommand(id); + } + } +} +\end{verbatim} + +\subsection{wxWindows predefined command identifiers}\label{predefinedids} + +To allow communication between the application's menus and the +document/view framework, several command identifiers are predefined for you +to use in menus. The framework recognizes them and processes them if you +forward commands from wxFrame::OnMenuCommand (or perhaps from toolbars and +other user interface constructs). + +\begin{itemize}\itemsep=0pt +\item wxID\_OPEN (5000) +\item wxID\_CLOSE (5001) +\item wxID\_NEW (5002) +\item wxID\_SAVE (5003) +\item wxID\_SAVEAS (5004) +\item wxID\_REVERT (5005) +\item wxID\_EXIT (5006) +\item wxID\_UNDO (5007) +\item wxID\_REDO (5008) +\item wxID\_HELP (5009) +\item wxID\_PRINT (5010) +\item wxID\_PRINT\_SETUP (5011) +\item wxID\_PREVIEW (5012) +\end{itemize} + + diff --git a/docs/latex/wx/tevent.tex b/docs/latex/wx/tevent.tex new file mode 100644 index 0000000000..363f403a70 --- /dev/null +++ b/docs/latex/wx/tevent.tex @@ -0,0 +1,188 @@ +\section{Event handling overview}\label{eventhandlingoverview} + +Classes: \helpref{wxEvtHandler}{wxevthandler}, \helpref{wxWindow}{wxwindow}, \helpref{wxEvent}{wxevent} + +\subsection{Introduction} + +Before version 2.0 of wxWindows, events were handled by the application +either by supplying callback functions, or by overriding virtual member +functions such as {\bf OnSize}. + +From wxWindows 2.0, {\it event tables} are used instead, with a few exceptions. + +An event table is placed in an implementation file to tell wxWindows how to map +events to member functions. These member functions are not virtual functions, but +they all similar in form: they take a single wxEvent-derived argument, and have a void return +type. + +Here's an example of an event table. + +\begin{verbatim} +BEGIN_EVENT_TABLE(MyFrame, wxFrame) + EVT_MENU (wxID_EXIT, MyFrame::OnExit) + EVT_MENU (DO_TEST, MyFrame::DoTest) + EVT_SIZE ( MyFrame::OnSize) + EVT_BUTTON (BUTTON1, MyFrame::OnButton1) +END_EVENT_TABLE() +\end{verbatim} + +The first two entries map menu commands to two different member functions. The EVT\_SIZE macro +doesn't need a window identifier, since normally you are only interested in the +current window's size events. (In fact you could intercept a particular window's size event +by using EVT\_CUSTOM(wxEVT\_SIZE, id, func).) + +The EVT\_BUTTON macro demonstrates that the originating event does not have to come from +the window class implementing the event table - if the event source is a button within a panel within a frame, this will still +work, because event tables are searched up through the hierarchy of windows. In this +case, the button's event table will be searched, then the parent panel's, then the frame's. + +As mentioned before, the member functions that handle events do not have to be virtual. +These member functions take an event argument, and the class of event differs according +to the type of event and the class of the originating window. For size +events, \helpref{wxSizeEvent}{wxsizeevent} is used. For menu commands and most control +commands (such as button presses), \helpref{wxCommandEvent}{wxcommandevent} is used. +When controls get more complicated, then specific event classes are used, such +as \helpref{wxTreeEvent}{wxtreeevent} for events from \helpref{wxTreeCtrl}{wxtreectrl} windows. + +As well as the event table in the implementation file, there must be a DECLARE\_EVENT\_TABLE +macro in the class definition. For example: + +{\small% +\begin{verbatim} +class MyFrame: public wxFrame { + + DECLARE_DYNAMIC_CLASS(MyFrame) + +public: + ... + void OnExit(wxCommandEvent& event); + void OnSize(wxSizeEvent& event); +protected: + int m_count; + ... + DECLARE_EVENT_TABLE() +}; +\end{verbatim} +}% + +\subsection{How events are processed}\label{eventprocessing} + +When an event is received from the windowing system, wxWindows calls \helpref{wxEvtHandler::ProcessEvent}{wxevthandlerprocessevent} on +the first event handler object belonging to the window generating the event. + +The normal order of event table searching by ProcessEvent is as follows: + +\begin{enumerate}\itemsep=0pt +\item If the object is disabled (via a call to \helpref{wxEvtHandler::SetEvtHandlerEnabled}{wxevthandlersetevthandlerenabled}) +the function skips to step (6). +\item If the object is a wxWindow, {\bf ProcessEvent} is recursively called on the window's\rtfsp +\helpref{wxValidator}{wxvalidator}. If this returns TRUE, the function exits. +\item {\bf SearchEventTable} is called for this event handler. If this fails, the base +class table is tried, and so on until no more tables exist or an appropriate function was found, +in which case the function exits. +\item The search is applied down the entire chain of event handlers (usually the chain has a length +of one). If this succeeds, the function exits. +\item If the object is a wxWindow and the event is a wxCommandEvent, {\bf ProcessEvent} is +recursively applied to the parent window's event handler. If this returns TRUE, the function exits. +\item Finally, {\bf ProcessEvent} is called on the wxApp object. +\end{enumerate} + +Note that your application may wish to override ProcessEvent to redirect processing of +events. This is done in the document/view framework, for example, to allow event handlers +to be defined in the document or view. + +\subsection{Pluggable event handlers} + +In fact, you don't have to derive a new class from a window class +if you don't want to. You can derive a new class from wxEvtHandler instead, +defining the appropriate event table, and then call +\rtfsp\helpref{wxWindow::SetEventHandler}{wxwindowseteventhandler} (or, preferably, +\rtfsp\helpref{wxWindow::PushEventHandler}{wxwindowpusheventhandler}) to make this +event handler the object that responds to events. This way, you can avoid +a lot of class derivation, and use the same event handler object to +handle events from instances of different classes. If you ever have to call a window's event handler +manually, use the GetEventHandler function to retrieve the window's event handler and use that +to call the member function. By default, GetEventHandler returns a pointer to the window itself +unless an application has redirected event handling using SetEventHandler or PushEventHandler. + +One use of PushEventHandler is to temporarily or permanently change the +behaviour of the GUI. For example, you might want to invoke a dialog editor +in your application that changes aspects of dialog boxes. You can +grab all the input for an existing dialog box, and edit it `in situ', +before restoring its behaviour to normal. So even if the application +has derived new classes to customize behaviour, your utility can indulge +in a spot of body-snatching. It could be a useful technique for on-line +tutorials, too, where you take a user through a serious of steps and +don't want them to diverge from the lesson. Here, you can examine the events +coming from buttons and windows, and if acceptable, pass them through to +the original event handler. Use PushEventHandler/PopEventHandler +to form a chain of event handlers, where each handler processes a different +range of events independently from the other handlers. + +\subsection{Event macros summary}\label{eventmacros} + +\wxheading{Specifying an event table} + +\twocolwidtha{8cm}% +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{EVT\_CUSTOM(eventId, id, func)}}{Allows you to add a custom event table +entry by specifying the event identifier (such as wxEVT\_SIZE), the window identifier, +and a member function to call.} +\twocolitem{\windowstyle{EVT\_CUSTOM\_RANGE(eventId, id1, id2, func)}}{The same as EVT\_CUSTOM, +but responds to a range of window identifiers.} +\end{twocollist} + +\wxheading{Generic event table macros} + +\twocolwidtha{8cm}% +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{EVT\_CUSTOM(eventId, id, func)}}{Allows you to add a custom event table +entry by specifying the event identifier (such as wxEVT\_SIZE), the window identifier, +and a member function to call.} +\twocolitem{\windowstyle{EVT\_CUSTOM\_RANGE(eventId, id1, id2, func)}}{The same as EVT\_CUSTOM, +but responds to a range of window identifiers.} +\twocolitem{\windowstyle{EVT\_COMMAND(eventId, id, func)}}{The same as EVT\_CUSTOM, but +expects a member function with a wxCommandEvent argument.} +\twocolitem{\windowstyle{EVT\_COMMAND\_RANGE(eventId, id1, id2, func)}}{The same as EVT\_CUSTOM\_RANGE, but +expects a member function with a wxCommandEvent argument.} +\end{twocollist} + +\wxheading{Macros listed by event class} + +The documentation for specific event macros is organised by event class. Please refer +to these sections for details. + +\twocolwidtha{8cm}% +\begin{twocollist}\itemsep=0pt +\twocolitem{\helpref{wxActivateEvent}{wxactivateevent}}{The EVT\_ACTIVATE and EVT\_ACTIVATE\_APP macros intercept +activation and deactivation events.} +\twocolitem{\helpref{wxCommandEvent}{wxcommandevent}}{A range of commonly-used control events.} +\twocolitem{\helpref{wxCloseEvent}{wxcloseevent}}{The EVT\_CLOSE macro handles window closure +called via \helpref{wxWindow::Close}{wxwindowclose}.} +\twocolitem{\helpref{wxDropFilesEvent}{wxdropfilesevent}}{The EVT\_DROP\_FILES macros handles +file drop events.} +\twocolitem{\helpref{wxEraseEvent}{wxeraseevent}}{The EVT\_ERASE\_BACKGROUND macro is used to handle window erase requests.} +\twocolitem{\helpref{wxFocusEvent}{wxfocusevent}}{The EVT\_SET\_FOCUS and EVT\_KILL\_FOCUS macros are used to handle keybaord focus events.} +\twocolitem{\helpref{wxKeyEvent}{wxkeyevent}}{EVT\_CHAR and EVT\_CHAR\_HOOK macros handle keyboard +input for any window.} +\twocolitem{\helpref{wxIdleEvent}{wxidleevent}}{The EVT\_IDLE macro handle application idle events +(to process background tasks, for example).} +\twocolitem{\helpref{wxInitDialogEvent}{wxinitdialogevent}}{The EVT\_INIT\_DIALOG macro is used +to handle dialog initialisation.} +\twocolitem{\helpref{wxListEvent}{wxlistevent}}{These macros handle \helpref{wxListCtrl}{wxlistctrl} events.} +\twocolitem{\helpref{wxMenuEvent}{wxmenuevent}}{These macros handle special menu events (not menu commands).} +\twocolitem{\helpref{wxMouseEvent}{wxmouseevent}}{Mouse event macros can handle either individual +mouse events or all mouse events.} +\twocolitem{\helpref{wxMoveEvent}{wxmoveevent}}{The EVT\_MOVE macro is used to handle a window move.} +\twocolitem{\helpref{wxUpdateUIEvent}{wxupdateuievent}}{The EVT\_UPDATE\_UI macro is used to handle user interface +update pseudo-events, which are generated to give the application the chance to update the visual state of menus, +toolbars and controls.} +\twocolitem{\helpref{wxPaintEvent}{wxpaintevent}}{The EVT\_PAINT macro is used to handle window paint requests.} +\twocolitem{\helpref{wxScrollEvent}{wxscrollevent}}{These macros are used to handle scroll events from +windows, \helpref{wxScrollBar}{wxscrollbar}, and \helpref{wxSpinButton}{wxspinbutton}.} +\twocolitem{\helpref{wxSizeEvent}{wxsizeevent}}{The EVT\_SIZE macro is used to handle a window resize.} +\twocolitem{\helpref{wxSysColourChangedEvent}{wxsyscolourchangedevent}}{The EVT\_SYS\_COLOUR\_CHANGED macro is used to handle +events informing the application that the user has changed the system colours (Windows only).} +\twocolitem{\helpref{wxTreeEvent}{wxtreeevent}}{These macros handle \helpref{wxTreeCtrl}{wxtreectrl} events.} +\end{twocollist} + diff --git a/docs/latex/wx/tex2rtf.ini b/docs/latex/wx/tex2rtf.ini new file mode 100644 index 0000000000..3a79f73de0 --- /dev/null +++ b/docs/latex/wx/tex2rtf.ini @@ -0,0 +1,28 @@ +;;; Tex2RTF initialisation file +runTwice = yes +titleFontSize = 12 +authorFontSize = 10 +authorFontSize = 10 +chapterFontSize = 12 +sectionFontSize = 12 +subsectionFontSize = 12 +contentsDepth = 2 +headerRule = yes +footerRule = yes +useHeadingStyles = yes +listItemIndent=40 +generateHPJ = yes +htmlBrowseButtons = bitmap +winHelpContents = yes +winHelpVersion = 3 ; 3 for Windows 3.x, 4 for Windows 95 +winHelpTitle = "wxWindows Manual" +truncateFilenames = yes +combineSubSections = yes +\overview [2] {\rtfonly{See also }\settransparency{on}\sethotspotcolour{off}\sethotspotunderline{on}\winhelponly{\image{}{books.bmp}\settransparency{off}} +\htmlonly{\image{}{books.gif}}\helpref{#1}{#2} +\sethotspotcolour{on}\sethotspotunderline{on}} +\docparam [2]{\parskip{0}{\it #1}\htmlignore{\par}\parskip{10}\indented{1cm}{#2}} +\wxheading [1]{{\bf \htmlignore{\fcol{blue}{#1}}\htmlonly{\fcol{red}{#1}}}} +\const [0] {{\bf const}} +\constfunc [3] {{\bf #1} {\bf #2}(#3) {\bf const}\index{#2}} +\windowstyle [1] {{\bf #1}\index{#1}} diff --git a/docs/latex/wx/texhelp.sty b/docs/latex/wx/texhelp.sty new file mode 100644 index 0000000000..e52374f9f4 --- /dev/null +++ b/docs/latex/wx/texhelp.sty @@ -0,0 +1,292 @@ +% LaTeX style file +% Name: texhelp.sty +% Author: Julian Smart +% +% Purpose +% ------- +% Style file to enable the simultaneous preparation of printed LaTeX and on-line +% hypertext manuals. +% Use in conjunction with Tex2RTF (see Tex2RTF documentation). +% +% Note that if a non-ASCII character starts a newline and there should be a space +% between the last word on the previous line and the first word on this line, +% you need to use \rtfsp to generate a space in Windows Help. \rtfsp is ignored +% in all other formats. +% +% Julian Smart +% Artificial Intelligence Applications Institute +% +% +% ============== C++/CLIPS Documentation Facilities ============== +% +% Each class definition should be typeset with e.g. +% +% \section{\class{Name}: Parent} +% +% followed by a description of the class. +% Each member should follow: +% +% \membersection{wxName::Member} +% +% with a description of what this member does. +% Then, one (or more if overloaded) member (function) in detail: +% +% \func{return type}{name}{args} +% or +% \member{type}{name} +% +% where args is a list of \param{type}{name}, ... + +% Function, e.g. +% e.g. to typeset +% +% void DoIt(char *string); +% +% write: +% +% \func{void}{DoIt}{\param{char *}{string}} +% + +\newcommand{\func}[3]{\hangafter=1\noindent\hangindent=10mm +{{\it #1} {\bf #2}\index{#2}}(#3)} + +% For function/type definition where the name is a pointer, +% e.g. to typeset +% +% typedef void (*wxFunction)(wxObject&) +% +% write: +% +% \pfunc{typedef void}{wxFunction}{param{wxObject&}} + +\newcommand{\pfunc}[3]{\hangafter=1\noindent\hangindent=10mm +{{\it #1} ({\bf *#2})\index{#2}}(#3)} + +% Use an ordinary \section command for class name definitions. + +% This is used for a member, such as wxBitmap: GetDepth +\newcommand{\membersection}[1]{\subsection*{#1}\index{#1}} + +% CLIPS function +\newcommand{\clipsfunc}[3]{\hangafter=1\noindent\hangindent=10mm +{{\bf #1} ({\bf #2}\index{#2}}#3)} + +\newcommand{\clipssection}[1]{\chapter{#1}} + +% This is used for a CLIPS function name +\newcommand{\functionsection}[1]{\subsection*{#1}} + +% Member: a type and a name +\newcommand{\member}[2]{{\bf #1 \it #2}} + +% C++ Parameter: a type and a name (no intervening space) +\newcommand{\param}[2]{{\it #1}{\bf #2}} + +% CLIPS Parameter: a type and a name (one intervening space) +\newcommand{\cparam}[2]{{\bf #1} {\it #2}} + +% Class: puts in index +\newcommand{\class}[1]{#1\index{#1}} + +%\newcommand{\docparam}[2]{\parskip=0pt {\it #1}\par\parskip=10pt\begin{indented}{1cm}{#2}\end{indented}} + +% Void type +\newcommand{\void}{{\it void}} + +% Typeset destructor +\newcommand{\destruct}[1]{{$\sim$}#1} + +% Typeset insert/extract operators +\newcommand{\cinsert}{$<<$} +\newcommand{\cextract}{$>>$} + + +% =================== Hypertext facilities =================== +% +% To insert hyperlinks (or references, in Latex), \label the sections +% or membersections \label{ref-label} immediately after the section, on the same line, +% and use \helpref{text-to-show}{ref-label} to make a reference. +% + +% Type text with section reference +\newcommand{\helpref}[2]{{\it #1} (p.\ \pageref{#2}) } + +% Type text with URL in verbatim mode +\newcommand{\urlref}[2]{#1 (\verb$#2$)} + +% Don't typeset section number in LaTeX +\newcommand{\helprefn}[2]{{\it #1}} + +% Like helpref, but popup text in WinHelp instead of hyperlinked +\newcommand{\popref}[2]{{\it #1}} + +% Like footnote, but popup text. +\newcommand{\footnotepopup}[2]{{\it #1}\footnote{#2}} + +% =================== On-line help specific macros =================== +% + +% Global document font size/family, help only. +\newcommand{\helpfontsize}[1]{} +\newcommand{\helpfontfamily}[1]{} + +% Ignore in all on-line help +\newcommand{\helpignore}[1]{#1} +% Only print in all on-line help +\newcommand{\helponly}[1]{} + +% Ignore in LaTeX +\newcommand{\latexignore}[1]{} +% Only print in LaTeX +\newcommand{\latexonly}[1]{#1} + +% Ignore in linear RTF +\newcommand{\rtfignore}[1]{#1} +% Only print in linear RTF +\newcommand{\rtfonly}[1]{} + +% Ignore in WinHelp RTF +\newcommand{\winhelpignore}[1]{#1} +% Only print in WinHelp RTF +\newcommand{\winhelponly}[1]{} + +% Ignore in wxHelp +\newcommand{\xlpignore}[1]{#1} +% Only print in wxHelp +\newcommand{\xlponly}[1]{} + +% Ignore in HTML +\newcommand{\htmlignore}[1]{#1} +% Only print in HTML +\newcommand{\htmlonly}[1]{} + +% Input a file only for help system (binder thickness is not a limitation +% in help systems!) +\newcommand{\helpinput}[1]{} + +\newcommand{\rtfsp}{ } % Force a space in RTF, ignore in Latex + +% =================== Miscellaneous macros =================== +% +% Headings consistent with generated ones +\newcommand{\myheading}[1]{\vspace*{25pt} +\begin{flushleft} +{\LARGE \bf #1} +\end{flushleft} +\vskip 20pt +} + +% Heading with entry in contents page. +\newcommand{\chapterheading}[1]{\myheading{#1} +\addcontentsline{toc}{chapter}{#1}} + +\newcommand{\sectionheading}[1]{\myheading{#1} +\addcontentsline{toc}{section}{#1}} + +% Glossary environment +\newenvironment{helpglossary}{\newpage\chapterheading{Glossary}\begin{description}}{\end{description}} + +% Glossary entry +\newcommand{\gloss}[1]{\item[#1]\index{#1}} + +% Image: EPS in Latex, BMP or MF (whatever's available) in RTF. Requires psbox. +\newcommand{\image}[2]{\psboxto(#1){#2}} + +% Image, left aligned (HTML) +\newcommand{\imager}[2]{\psboxto(#1){#2}} + +% Image, right aligned (HTML) +\newcommand{\imagel}[2]{\psboxto(#1){#2}} + +% Imagemap: principally for HTML only. In Latex, +% acts like \image. +\newcommand{\imagemap}[3]{\psboxto(#1){#2}} + +% Headers and footers +% \setheader{EvenPageLeft}{EvenPageCentre}{EvenPageRight} +% {OddPageLeft}{OddPageCentre}{OddPageRight} +\newcommand{\setheader}[6]{ +\lhead[\fancyplain{}{#1}]{\fancyplain{}{#4}} +\chead[\fancyplain{}{#2}]{\fancyplain{}{#5}} +\rhead[\fancyplain{}{#3}]{\fancyplain{}{#6}} +} + +% \setfooter{EvenPageLeft}{EvenPageCentre}{EvenPageRight} +% {OddPageLeft}{OddPageCentre}{OddPageRight} +\newcommand{\setfooter}[6]{ +\lfoot[\fancyplain{#1}{#1}]{\fancyplain{#4}{#4}} +\cfoot[\fancyplain{#2}{#2}]{\fancyplain{#5}{#5}} +\rfoot[\fancyplain{#3}{#3}]{\fancyplain{#6}{#6}} +} + +% Needed for telling RTF where margin paragraph should go +% in mirrored margins mode. +\newcommand{\marginpareven}[1]{\hspace*{0pt}\marginpar{#1}} +\newcommand{\marginparodd}[1]{\hspace*{0pt}\marginpar{#1}} + +% Environment for two-column table popular in WinHelp and manuals. +\newcommand{\twocolwidtha}[1]{\def\twocolwidthaval{#1}} +\newcommand{\twocolwidthb}[1]{\def\twocolwidthbval{#1}} +\newcommand{\twocolspacing}[1]{\def\twocolspacingval{#1}} + +\twocolwidtha{3cm} +\twocolwidthb{8.5cm} +\twocolspacing{2} + +\newcommand{\twocolitem}[2]{#1 & #2\\} +\newcommand{\twocolitemruled}[2]{#1 & #2\\\hline} + +\newenvironment{twocollist}{\renewcommand{\arraystretch}{\twocolspacingval}\begin{tabular}{lp{\twocolwidthbval}}}% +{\end{tabular}\renewcommand{\arraystretch}{1}} + +% Specifying table rows for RTF compatibility +\newcommand{\row}[1]{#1\\} + +% Use for the last ruled row for correct RTF generation. +\newcommand{\ruledrow}[1]{#1\\\hline} + +% Indentation environment. Arg1 is left margin size +\newenvironment{indented}[1]{\begin{list}{}{\leftmargin=#1}\item[]}% +{\end{list}} + +% Framed box of text, normal formatting. +\newcommand{\normalbox}[1]{\fbox{\vbox{#1}}} +% Double-framed box of text. +\newcommand{\normalboxd}[1]{\fbox{\fbox{\vbox{#1}}}} + +% WITHDRAWN -- can't do in RTF, easily. +% Framed box of text, horizontally centred. Ragged right within box. +% \newcommand{\centeredbox}[2]{\begin{center}\fbox{\parbox{#1}{\raggedright#2}}\end{center}} +% Double-framed box of text, horizontally centred. Ragged right within box. +% \newcommand{\centeredboxd}[2]{\begin{center}\fbox{\fbox{\parbox{#1}{\raggedright#2}}}\end{center}} + +% toocomplex environment: simply prints the argument in LaTeX, +% comes out verbatim in all generated formats. +\newenvironment{toocomplex}{}{} + +% Colour: dummy commands since LaTeX doesn't support colour. +% \definecolour{name}{red}{blue}{green} +% \fcol{name}{text} ; Foreground +% \bcol{name}{text} ; Background +\newcommand{\definecolour}[4]{} +\newcommand{\definecolor}[4]{} +\newcommand{\fcol}[2]{#2} +\newcommand{\bcol}[2]{#2} +\newcommand{\sethotspotcolour}[1]{} +\newcommand{\sethotspotunderline}[1]{} +\newcommand{\settransparency}[1]{} +\newcommand{\backslashraw}[0]{} +\newcommand{\lbraceraw}[0]{} +\newcommand{\rbraceraw}[0]{} +\newcommand{\registered}[0]{(r)} +\newcommand{\background}[1]{} +\newcommand{\textcolour}[1]{} +\newcommand{\overview}[2]{See \helpref{#1}{#2}.} +\newcommand{\docparam}[2]{{\it #1}\begin{list}{}{\leftmargin=1cm}\item[] +#2% +\end{list}} +\newcommand{\wxheading}[1]{{\bf #1}} +\newcommand{\const}[0]{{\bf const}} +\newcommand{\constfunc}[3]{{\bf #1} {\bf #2}(#3) {\bf const}\index{#2}} +\newcommand{\windowstyle}[1]{{\bf #1}\index{#1}} + diff --git a/docs/latex/wx/texpr.tex b/docs/latex/wx/texpr.tex new file mode 100644 index 0000000000..0cf364f452 --- /dev/null +++ b/docs/latex/wx/texpr.tex @@ -0,0 +1,203 @@ +\section{wxExpr overview}\label{exproverview} + +wxExpr is a C++ class reading and writing a subset of Prolog-like syntax, +supporting objects attribute/value pairs. + +wxExpr can be used to develop programs with readable and +robust data files. Within wxWindows itself, it is used to parse +the {\tt .wxr} dialog resource files. + +{\bf History of wxExpr} + +During the development of the tool Hardy within the AIAI, a need arose +for a data file format for C++ that was easy for both humans and +programs to read, was robust in the face of fast-moving software +development, and that provided some compatibility with AI languages +such as Prolog and LISP. + +The result was the wxExpr library (formerly called PrologIO), which is able to read and write a +Prolog-like attribute-value syntax, and is additionally capable of +writing LISP syntax for no extra programming effort. The advantages of +such a library are as follows: + +\begin{enumerate}\itemsep=0pt +\item The data files are readable by humans; +\item I/O routines are easier to write and debug compared with using binary files; +\item the files are robust: unrecognised data will just be ignored by the application +\item Inbuilt hashing gives a random access capability, useful for when linking +up C++ objects as data is read in; +\item Prolog and LISP programs can load the files using a single command. +\end{enumerate} + +The library was extended to use the ability to read and write +Prolog-like structures for remote procedure call (RPC) communication. +The next two sections outline the two main ways the library can be used. + +\subsection{wxExpr for data file manipulation}\itemsep=0pt + +The fact that the output is in Prolog syntax is irrelevant for most +programmers, who just need a reasonable I/O facility. Typical output +looks like this: + +\begin{verbatim} +diagram_definition(type = "Spirit Belief Network"). + +node_definition(type = "Model", + image_type = "Diamond", + attribute_for_label = "name", + attribute_for_status_line = "label", + colour = "CYAN", + default_width = 120, + default_height = 80, + text_size = 10, + can_resize = 1, + has_hypertext_item = 1, + attributes = ["name", "combining_function", "level_of_belief"]). + +arc_definition(type = "Potentially Confirming", + image_type = "Spline", + arrow_type = "End", + line_style = "Solid", + width = 1, + segmentable = 0, + attribute_for_label = "label", + attribute_for_status_line = "label", + colour = "BLACK", + text_size = 10, + has_hypertext_item = 1, + can_connect_to = ["Evidence", "Cluster", "Model", "Evidence", "Evidence", "Cluster"], + can_connect_from = ["Data", "Evidence", "Cluster", "Evidence", "Data", "Cluster"]). +\end{verbatim} + +This is substantially easier to read and debug than a series of numbers and +strings. + +Note the object-oriented style: a file comprises a series of {\it clauses}. +Each clause is an object with a {\it functor}\/ or object name, followed +by a list of attribute-value pairs enclosed in parentheses, and finished +with a full stop. Each attribute value may be a string, a word (no quotes), +an integer, a real number, or a list with potentially recursive elements. + +The way that the facility is used by an application to read in a file is +as follows: + +\begin{enumerate}\itemsep=0pt +\item The application creates a wxExprDatabase instance. +\item The application tells the database to read in the entire file. +\item The application searches the database for objects it requires, +decomposing the objects using the wxExpr API. The database may be hashed, +allowing rapid linking-up of application data. +\item The application deletes or clears the wxExprDatabase. +\end{enumerate} + +Writing a file is just as easy: + +\begin{enumerate}\itemsep=0pt +\item The application creates a wxExprDatabase instance. +\item The application adds objects to the database using the API. +\item The application tells the database to write out the entire database, +in Prolog or LISP notation. +\item The application deletes or clears the wxExprDatabase. +\end{enumerate} + +To use the library, include "wxexpr.h". + +\subsection{wxExpr compilation} + +For UNIX compilation, ensure that YACC and LEX or FLEX are on your system. Check that +the makefile uses the correct programs: a common error is to compile +y\_tab.c with a C++ compiler. Edit the CCLEX variable in make.env +to specify a C compiler. Also, do not attempt to compile lex\_yy.c +since it is included by y\_tab.c. + +For DOS compilation, the simplest thing is to copy dosyacc.c to y\_tab.c, and doslex.c to +lex\_yy.c. It is y\_tab.c that must be compiled (lex\_yy.c is included by +y\_tab.c) so if adding source files to a project file, ONLY add y\_tab.c +plus the .cc files. If you wish to alter the parser, you will need YACC +and FLEX on DOS. + +The DOS tools are available at the AIAI ftp site, in the tools directory. Note that +for FLEX installation, you need to copy flex.skl into the directory +c:/lib. + +If you are using Borland C++ and wish to regenerate lex\_yy.c and y\_tab.c +you need to generate lex\_yy.c with FLEX and then comment out the `malloc' and `free' +prototypes in lex\_yy.c. It will compile with lots of warnings. If you +get an undefined \_PROIO\_YYWRAP symbol when you link, you need to remove +USE\_DEFINE from the makefile and recompile. This is because the parser.y +file has a choice of defining this symbol as a function or as a define, +depending on what the version of FLEX expects. See the bottom of +parser.y, and if necessary edit it to make it compile in the opposite +way to the current compilation. + +To test out wxExpr compile the test program (samples/wxexpr/wxexpr.exe), +and try loading test.exp into the test +program. Then save it to another file. If the second is identical to the +first, wxExpr is in a working state. + +\subsection{Bugs} + +These are the known bugs: + +\begin{enumerate}\itemsep=0pt +\item Functors are permissable only in the main clause (object). +Therefore nesting of structures must be done using lists, not predicates +as in Prolog. +\item There is a limit to the size of strings read in (about 5000 bytes). +\end{enumerate} + +\subsection{Using wxExpr} + +This section is a brief introduction to using the wxExpr package. + +First, some terminology. A {\it wxExprDatabase}\/ is a list of {\it clauses}, +each of which represents an object or record which needs to be saved to a file. +A clause has a {\it functor}\/ (name), and a list of attributes, each of which +has a value. Attributes may take the following types of value: string, word, +integer, floating point number, and list. A list can itself contain any +type, allowing for nested data structures. + +Consider the following code. + +\begin{verbatim} +wxExprDatabase db; + +wxExpr *my_clause = new wxExpr("object"); +my_clause->AddAttributeValue("id", (long)1); +my_clause->AddAttributeValueString("name", "Julian Smart"); +db.Append(my_clause); + +ofstream file("my_file"); +db.Write(file); +\end{verbatim} + +This creates a database, constructs a clause, adds it to the database, +and writes the whole database to a file. The file it produces looks like +this: + +\begin{verbatim} +object(id = 1, + name = "Julian Smart"). +\end{verbatim} + +To read the database back in, the following will work: + +\begin{verbatim} +wxExprDatabase db; +db.Read("my_file"); + +db.BeginFind(); + +wxExpr *my_clause = db.FindClauseByFunctor("object"); +int id = 0; +wxString name = "None found"; + +my_clause->GetAttributeValue("id", id); +my_clause->GetAttributeValue("name", name); + +cout << "Id is " << id << ", name is " << name << "\n"; +\end{verbatim} + +Note the setting of defaults before attempting to retrieve attribute values, +since they may not be found. + diff --git a/docs/latex/wx/text.tex b/docs/latex/wx/text.tex new file mode 100644 index 0000000000..61abfc09c4 --- /dev/null +++ b/docs/latex/wx/text.tex @@ -0,0 +1,427 @@ +\section{\class{wxTextCtrl}}\label{wxtextctrl} + +A text control allows text to be displayed and edited. It may be +single line or multiline. + +\wxheading{Derived from} + +streambuf\\ +\helpref{wxControl}{wxcontrol}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{wxTE\_PROCESS\_ENTER}}{The callback function will +receive the message wxEVENT\_TYPE\_TEXT\_ENTER\_COMMAND. Note +that this will break tab traversal for this panel item under +Windows.} +\twocolitem{\windowstyle{wxTE\_MULTILINE}}{The text control allows multiple lines.} +\twocolitem{\windowstyle{wxTE\_PASSWORD}}{The text will be echoed as asterisks.} +\twocolitem{\windowstyle{wxTE\_READONLY}}{The text will not be user-editable.} +\twocolitem{\windowstyle{wxHSCROLL}}{A vertical scrollbar will be present.} +\end{twocollist} + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{Remarks} + +This class multiply-inherits from {\bf streambuf} where compilers allow, allowing code such +as the following: + +{\small% +\begin{verbatim} + wxTextCtrl *control = new wxTextCtrl(...); + + ostream stream(control) + + stream << 123.456 << " some text\n"; + stream.flush(); +\end{verbatim} +}% + +If your compiler does not support derivation from {\bf streambuf} and gives a compile error, define the symbol {\bf NO\_TEXT\_WINDOW\_STREAM} in the +wxTextCtrl header file. + +%\wxheading{See also} +% +%\helpref{wxRichTextCtrl}{wxrichtextctrl} +% +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxTextCtrl::wxTextCtrl}\label{wxtextctrlconstr} + +\func{}{wxTextCtrl}{\void} + +Default constructor. + +\func{}{wxTextCtrl}{\param{wxWindow* }{parent}, \param{const wxWindowID}{ id},\rtfsp +\param{const wxString\& }{value = ``"}, \param{const wxPosition\& }{pos}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long}{ style = 0}, \param{const wxValidator\& }{validator}, \param{const wxString\& }{name = ``text"}} + +Constructor, creating and showing a text control. + +\wxheading{Parameters} + +\docparam{parent}{Parent window. Should not be NULL.} + +\docparam{id}{Control identifier. A value of -1 denotes a default value.} + +\docparam{value}{Default text value.} + +\docparam{pos}{Text control position.} + +\docparam{size}{Text control size.} + +\docparam{style}{Window style. See \helpref{wxTextCtrl}{wxtextctrl}.} + +\docparam{validator}{Window validator.} + +\docparam{name}{Window name.} + +\wxheading{Remarks} + +Under Windows, if the {\bf wxTE\_MULTILINE} style is used, the window is implemented +as a Windows rich text control with unlimited capacity. Otherwise, normal edit control limits +apply. + +\wxheading{See also} + +\helpref{wxTextCtrl::Create}{wxtextctrlcreate}, \helpref{wxValidator}{wxvalidator} + +\membersection{wxTextCtrl::\destruct{wxTextCtrl}} + +\func{}{\destruct{wxTextCtrl}}{\void} + +Destructor, destroying the text control. + +\membersection{wxTextCtrl::Clear}\label{wxtextctrlclear} + +\func{virtual void}{Clear}{\void} + +Clears the text in the control. + +\membersection{wxTextCtrl::Copy}\label{wxtextctrlcopy} + +\func{virtual void}{Copy}{\void} + +Copies the selected text to the clipboard under Motif and MS Windows. + +\membersection{wxTextCtrl::Create}\label{wxtextctrlcreate} + +\func{bool}{Create}{\param{wxWindow* }{parent}, \param{const wxWindowID}{ id},\rtfsp +\param{const wxString\& }{value = ``"}, \param{const wxPosition\& }{pos}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long}{ style = 0}, \param{const wxValidator\& }{validator}, \param{const wxString\& }{name = ``text"}} + +Creates the text control for two-step construction. Derived classes +should call or replace this function. See \helpref{wxTextCtrl::wxTextCtrl}{wxtextctrlconstr}\rtfsp +for further details. + +\membersection{wxTextCtrl::Cut}\label{wxtextctrlcut} + +\func{virtual void}{Cut}{\void} + +Copies the selected text to the clipboard and removes the selection. + +\membersection{wxTextCtrl::DiscardEdits} + +\func{void}{DiscardEdits}{\void} + +Resets the internal `modified' flag as if the current edits had been saved. + +\membersection{wxTextCtrl::GetInsertionPoint}\label{wxtextctrlgetinsertionpoint} + +\constfunc{virtual long}{GetInsertionPoint}{\void} + +Returns the insertion point. + +\membersection{wxTextCtrl::GetLastPosition}\label{wxtextctrlgetlastposition} + +\constfunc{virtual long}{GetLastPosition}{\void} + +Returns the last position in the text control. + +\membersection{wxTextCtrl::GetLineLength}\label{wxtextctrlgetlinelength} + +\constfunc{int}{GetLineLength}{\param{long}{ lineNo}} + +Gets the length of the specified line. + +\wxheading{Parameters} + +\docparam{lineNo}{Line number (starting from zero).} + +\wxheading{Return value} + +The length of the line, or -1 if {\it lineNo} was invalid. + +\membersection{wxTextCtrl::GetLineText}\label{wxtextctrlgetlinetext} + +\constfunc{wxString}{GetLineText}{\param{const long}{ lineNo}} + +Returns the contents of a given line in the text control. + +\wxheading{Parameters} + +\docparam{lineNo}{The line number, starting from zero.} + +\wxheading{Return value} + +The contents of the line. + +\membersection{wxTextCtrl::GetNumberOfLines}\label{wxtextctrlgetnumberoflines} + +\constfunc{int}{GetNumberOfLines}{\void} + +Returns the number of lines in the text control buffer. + +\membersection{wxTextCtrl::GetValue}\label{wxtextctrlgetvalue} + +\constfunc{wxString}{GetValue}{\void} + +Gets the contents of the control. + +\membersection{wxTextCtrl::IsModified}\label{wxtextctrlismodified} + +\constfunc{bool}{IsModified}{\void} + +Returns TRUE if the text has been modified. + +\membersection{wxTextCtrl::LoadFile}\label{wxtextctrlloadfile} + +\func{bool}{LoadFile}{\param{const wxString\& }{ filename}} + +Loads and displays the named file, if it exists. + +\wxheading{Parameters} + +\docparam{filename}{The filename of the file to load.} + +\wxheading{Return value} + +TRUE if successful, FALSE otherwise. + +\membersection{wxTextCtrl::OnChar}\label{wxtextctrlonchar} + +\func{void}{OnChar}{\param{wxKeyEvent\& }{event}} + +Default handler for character input. + +\wxheading{Remarks} + +It is possible to intercept character +input by overriding this member. Call this function +to let the default behaviour take place; not calling +it results in the character being ignored. You can +replace the {\it keyCode} member of {\it event} to +translate keystrokes. + +Note that Windows and Motif have different ways +of implementing the default behaviour. In Windows, +calling wxTextCtrl::OnChar immediately +processes the character. In Motif, +calling this function simply sets a flag +to let default processing happen. This might affect +the way in which you write your OnChar function +on different platforms. + +\wxheading{See also} + +\helpref{wxKeyEvent}{wxkeyevent} + +\membersection{wxTextCtrl::OnDropFiles}\label{wxtextctrlondropfiles} + +\func{void}{OnDropFiles}{\param{wxDropFilesEvent\& }{event}} + +This event handler function implements default drag and drop behaviour, which +is to load the first dropped file into the control. + +\wxheading{Parameters} + +\docparam{event}{The drop files event.} + +\wxheading{See also} + +\helpref{wxDropFilesEvent}{wxdropfilesevent} + +\membersection{wxTextCtrl::Paste}\label{wxtextctrlpaste} + +\func{virtual void}{Paste}{\void} + +Pastes text from the clipboard to the text item. + +\membersection{wxTextCtrl::PositionToXY}\label{wxtextctrlpositiontoxy} + +\constfunc{long}{PositionToXY}{\param{const long }{pos}, \param{long *}{x}, \param{long *}{y}} + +Converts given character and line position to a position. + +\wxheading{Parameters} + +\docparam{pos}{Position.} + +\docparam{x}{Receives character position.} + +\docparam{y}{Receives line position.} + +\wxheading{See also} + +\helpref{wxTextCtrl::XYToPosition}{wxtextctrlxytoposition} + +\membersection{wxTextCtrl::Remove}\label{wxtextctrlremove} + +\func{virtual void}{Remove}{\param{const long}{ from}, \param{const long}{ to}} + +Removes the text between the two positions. + +\wxheading{Parameters} + +\docparam{from}{The first position.} + +\docparam{to}{The last position.} + +\membersection{wxTextCtrl::Replace}\label{wxtextctrlreplace} + +\func{virtual void}{Replace}{\param{const long}{ from}, \param{const long}{ to}, \param{const wxString\& }{value}} + +Replaces the text between two positions with the given text. + +\wxheading{Parameters} + +\docparam{from}{The first position.} + +\docparam{to}{The last position.} + +\docparam{value}{The value to replace the existing text with.} + +\membersection{wxTextCtrl::SaveFile}\label{wxtextctrlsavefile} + +\func{bool}{SaveFile}{\param{const wxString\& }{ filename}} + +Saves the contents of the control in a text file. + +\wxheading{Parameters} + +\docparam{filename}{The name of file in which to save the text.} + +\wxheading{Return value} + +TRUE if the operation was successful, FALSE otherwise. + +\membersection{wxTextCtrl::SetEditable}\label{wxtextctrlseteditable} + +\func{virtual void}{SetEditable}{\param{const bool}{ editable}} + +Makes the text item editable or read-only. + +\wxheading{Parameters} + +\docparam{editable}{If TRUE, the control is editable. If FALSE, the control is read-only.} + +\membersection{wxTextCtrl::SetInsertionPoint}\label{wxtextctrlsetinsertionpoint} + +\func{virtual void}{SetInsertionPoint}{\param{const long}{ pos}} + +Sets the insertion point. Windows only. ?? + +\wxheading{Parameters} + +\docparam{pos}{Position to set.} + +\membersection{wxTextCtrl::SetInsertionPointEnd}\label{wxtextctrlsetinsertionpointend} + +\func{virtual void}{SetInsertionPointEnd}{\void} + +Sets the insertion point at the end of the text control. + +\membersection{wxTextCtrl::SetSelection}\label{wxtextctrlsetselection} + +\func{virtual void}{SetSelection}{\param{const long}{ from}, \param{const long}{ to}} + +Selects the text between the two positions. + +\wxheading{Parameters} + +\docparam{from}{The first position.} + +\docparam{to}{The last position.} + +\membersection{wxTextCtrl::SetValue}\label{wxtextctrlsetvalue} + +\func{virtual void}{SetValue}{\param{const wxString\& }{ value}} + +Sets the text value. + +\wxheading{Parameters} + +\docparam{value}{The new value to set. It may contain newline characters if the text control is multi-line.} + +\membersection{wxTextCtrl::ShowPosition}\label{wxtextctrlshowposition} + +\func{void}{ShowPosition}{\param{const long}{ pos}} + +Makes the line containing the given position visible. + +\wxheading{Parameters} + +\docparam{pos}{The position that should be visible.} + +\membersection{wxTextCtrl::WriteText}\label{wxtextctrlwritetext} + +\func{void}{WriteText}{\param{const wxString\& }{ text}} + +Writes the text into the text control at the current position. + +\wxheading{Parameters} + +\docparam{text}{Text to write to the text control.} + +\wxheading{Remarks} + +Newlines in the text string +are the only control characters allowed, and they will cause appropriate +line breaks. See \helpref{wxTextCtrl::\cinsert}{wxtextctrlinsert} for more convenient ways of writing to the +window. + +\membersection{wxTextCtrl::XYToPosition}\label{wxtextctrlxytoposition} + +\func{long}{XYToPosition}{\param{const long}{ x}, \param{const long}{ y}} + +Converts the given character and line position to a position. + +\wxheading{Parameters} + +\docparam{x}{The character position.} + +\docparam{y}{The line position.} + +\wxheading{Return value} + +The position value. + +\membersection{wxTextCtrl::operator \cinsert}\label{wxtextctrlinsert} + +\func{wxTextCtrl\&}{operator \cinsert}{\param{const wxString\& }{s}} + +\func{wxTextCtrl\&}{operator \cinsert}{\param{int}{ i}} + +\func{wxTextCtrl\&}{operator \cinsert}{\param{long}{ i}} + +\func{wxTextCtrl\&}{operator \cinsert}{\param{float}{ f}} + +\func{wxTextCtrl\&}{operator \cinsert}{\param{double}{ d}} + +\func{wxTextCtrl\&}{operator \cinsert}{\param{char}{ c}} + +Operator definitions for writing to a text control, for example: + +\begin{verbatim} + wxTextCtrl *wnd = new wxTextCtrl(my_frame); + + (*wnd) << "Welcome to text control number " << 1 << ".\n"; +\end{verbatim} + + diff --git a/docs/latex/wx/textdlg.tex b/docs/latex/wx/textdlg.tex new file mode 100644 index 0000000000..ec2f8d1db5 --- /dev/null +++ b/docs/latex/wx/textdlg.tex @@ -0,0 +1,64 @@ +\section{\class{wxTextEntryDialog}}\label{wxtextentrydialog} + +This class represents a dialog that requests a one-line text string from the user. +It is implemented as a generic wxWindows dialog. + +\wxheading{Derived from} + +\helpref{wxDialog}{wxdialog}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxTextEntryDialog overview}{wxtextentrydialogoverview} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxTextEntryDialog::wxTextEntryDialog}\label{wxtextentrydialogconstr} + +\func{}{wxTextEntryDialog}{\param{wxWindow* }{parent}, \param{const wxString\& }{message = "Please enter text"},\rtfsp +\param{const wxString\& }{defaultValue = ""}, \param{long }{style = wxOK \pipe wxCANCEL \pipe wxCENTRE}, \param{const wxPoint\& }{pos = wxDefaultPosition}} + +Constructor. Use \helpref{wxTextEntryDialog::ShowModal}{wxtextentrydialogshowmodal} to show the dialog. + +\wxheading{Parameters} + +\docparam{parent}{Parent window.} + +\docparam{message}{Message to show on the dialog.} + +\docparam{defaultValue}{The default value, which may be the empty string.} + +\docparam{style}{A dialog style, specifying the buttons (wxOK, wxCANCEL) and an optional wxCENTRE style.} + +\docparam{pos}{Dialog position.} + +\membersection{wxTextEntryDialog::\destruct{wxTextEntryDialog}} + +\func{}{\destruct{wxTextEntryDialog}}{\void} + +Destructor. + +\membersection{wxTextEntryDialog::GetValue}\label{wxtextentrydialoggetvalue} + +\constfunc{wxString}{GetValue}{\void} + +Returns the text that the user has entered if the user has pressed OK, or the original value +if the user has pressed Cancel. + +\membersection{wxTextEntryDialog::SetValue}\label{wxtextentrydialogsetvalue} + +\func{void}{SetValue}{\param{const wxString\& }{value}} + +Sets the default text value. + +\membersection{wxTextEntryDialog::ShowModal}\label{wxtextentrydialogshowmodal} + +\func{int}{ShowModal}{\void} + +Shows the dialog, returning wxID\_OK if the user pressed OK, and wxOK\_CANCEL +otherwise. + + diff --git a/docs/latex/wx/tfont.tex b/docs/latex/wx/tfont.tex new file mode 100644 index 0000000000..9e6c6d83db --- /dev/null +++ b/docs/latex/wx/tfont.tex @@ -0,0 +1,36 @@ +\section{Font overview}\label{wxfontoverview} + +Class: \helpref{wxFont}{wxfont} + +A font is an object which determines the appearance of text, primarily +when drawing text to a canvas or device context. A font is determined by +up to six parameters: + +\begin{twocollist}\itemsep=0pt +\twocolitem{Point size}{This is the standard way of referring to text size.} +\twocolitem{Family}{Supported families are: + {\bf wxDEFAULT, wxDECORATIVE, wxROMAN, wxSCRIPT, wxSWISS, wxMODERN}. + {\bf wxMODERN} is a fixed pitch font; the others are either fixed or variable pitch.} +\twocolitem{Style}{The value can be {\bf wxNORMAL, wxSLANT} or {\bf wxITALIC}.} +\twocolitem{Weight}{The value can be {\bf wxNORMAL, wxLIGHT} or {\bf wxBOLD}.} +\twocolitem{Underlining}{The value can be TRUE or FALSE.} +\twocolitem{Face name}{An optional string specifying the actual typeface to be used. If NULL, +a default typeface will chosen based on the family.} +\end{twocollist} + +Specifying a family, rather than a specific typeface name, ensures a degree of portability +across platforms because a suitable font will be chosen for the given font family. + +Under Windows, the face name can be one of the installed fonts on the user's system. Since +the choice of fonts differs from system to system, either choose standard Windows fonts, +or if allowing the user to specify a face name, store the family id with any file that +might be transported to a different Windows machine or other platform. + +\normalbox{{\bf Note:} There is currently a difference between the appearance of fonts on the +two platforms, if the mapping mode is anything other than MM\_TEXT. +Under X, font size is always specified in points. Under MS Windows, the +unit for text is points but the text is scaled according to the +current mapping mode. However, user scaling on a device canvas will +also scale fonts under both environments.} + + diff --git a/docs/latex/wx/tgrid.tex b/docs/latex/wx/tgrid.tex new file mode 100644 index 0000000000..af721965bd --- /dev/null +++ b/docs/latex/wx/tgrid.tex @@ -0,0 +1,40 @@ +\section{wxGrid classes overview}\label{gridoverview} + +wxGrid is a class for displaying and editing tabular information. + +To use wxGrid, include the wxgrid.h header file and link with the +wxGrid library. Create a wxGrid object, or, if you need to override +some default behaviour, create an object of a class derived from wxGrid. +You need to call CreateGrid before there are any cells in the grid. + +All row and column positions start from zero, and dimensions are in pixels. + +If you make changes to row or column dimensions, call UpdateDimensions and +then AdjustScrollbars. If you make changes to the grid appearance (such as +a change of cell background colour or font), call Refresh for the changes +to be shown. + +\subsection{Example} + +The following fragment is taken from the file samples/grid/test.cpp. Note the +call to UpdateDimensions, which is required if the application +has changed any dimensions such as column width or row height. +You may also need to call AdjustScrollbars. In this case, AdjustScrollbars +isn't necessary because it will be called by wxGrid::OnSize which is invoked +when the window is first displayed. + +\begin{verbatim} + // Make a grid + frame->grid = new wxGrid(frame, 0, 0, 400, 400); + + frame->grid->CreateGrid(10, 8); + frame->grid->SetColumnWidth(3, 200); + frame->grid->SetRowHeight(4, 45); + frame->grid->SetCellValue("First cell", 0, 0); + frame->grid->SetCellValue("Another cell", 1, 1); + frame->grid->SetCellValue("Yet another cell", 2, 2); + frame->grid->SetCellTextFont(wxTheFontList->FindOrCreateFont(12, wxROMAN, wxITALIC, wxNORMAL), 0, 0); + frame->grid->SetCellTextColour(*wxRED, 1, 1); + frame->grid->SetCellBackgroundColour(*wxCYAN, 2, 2); + frame->grid->UpdateDimensions(); +\end{verbatim} diff --git a/docs/latex/wx/tguide.tex b/docs/latex/wx/tguide.tex new file mode 100644 index 0000000000..a130495bd4 --- /dev/null +++ b/docs/latex/wx/tguide.tex @@ -0,0 +1,56 @@ +\section{Writing a wxWindows application: a rough guide}\label{roughguide} + +To set a wxWindows application going, you'll need to derive a \helpref{wxApp}{wxapp} class and +override \helpref{wxApp::OnInit}{wxapponinit}. + +An application must have a top-level \helpref{wxFrame}{wxframe} window (returned by \helpref{wxApp::OnInit}{wxapponinit}), +each frame containing one or more instances of \helpref{wxPanel}{wxpanel}, \helpref{wxSplitterWindow}{wxsplitterwindow}\rtfsp +or other windows and controls. + +A frame can have a \helpref{wxMenuBar}{wxmenubar}, a status line, and a \helpref{wxIcon}{wxicon} for +when the frame is iconized. + +A \helpref{wxPanel}{wxpanel} is used to place controls (classes derived from \helpref{wxControl}{wxcontrol}) +which are used for user interaction. Examples of controls are \helpref{wxButton}{wxbutton}, +\rtfsp\helpref{wxCheckBox}{wxcheckbox}, \helpref{wxChoice}{wxchoice}, \helpref{wxListBox}{wxlistbox}, +\rtfsp\helpref{wxRadioBox}{wxradiobox}, \helpref{wxSlider}{wxslider}. + +Instances of \helpref{wxDialog}{wxdialog} can also be used for panels, items and they have +the advantage of not requiring a separate frame. + +Instead of creating a dialog box and populating it with items, it is possible to choose +one of the convenient common dialog classes, such as \helpref{wxMessageDialog}{wxmessagedialog}\rtfsp +and \helpref{wxFileDialog}{wxfiledialog}. + +You never draw directly onto a canvas --- you use a {\it device context} (DC). \helpref{wxDC}{wxdc} is +the base for \helpref{wxClientDC}{wxclientdc}, \helpref{wxPaintDC}{wxpaintdc}, \helpref{wxMemoryDC}{wxmemorydc}, \helpref{wxPostScriptDC}{wxpostscriptdc}, +\rtfsp\helpref{wxMemoryDC}{wxmemorydc}, \helpref{wxMetaFileDC}{wxmetafiledc} and \helpref{wxPrinterDC}{wxprinterdc}. +If your drawing functions have {\bf wxDC} as a parameter, you can pass any of these DCs +to the function, and thus use the same code to draw to several different devices. +You can draw using the member functions of {\bf wxDC}, such as \helpref{wxDC::DrawLine}{wxdcdrawline}\rtfsp +and \helpref{wxDC::DrawText}{wxdcdrawtext}. Control colour on a canvas (\helpref{wxColour}{wxcolour}) with +brushes (\helpref{wxBrush}{wxbrush}) and pens (\helpref{wxPen}{wxpen}). + +To intercept events, you add a DECLARE\_EVENT\_TABLE macro to the window class declaration, +and put a BEGIN\_EVENT\_TABLE ... END\_EVENT\_TABLE block in the implementation file. Between these +macros, you add event macros which map the event (such as a mouse click) to a member function. +These might override predefined event handlers such as \helpref{wxWindow::OnChar}{wxwindowonchar} and +\rtfsp\helpref{wxWindow::OnMouseEvent}{wxwindowonmouseevent}. + +Most modern applications will have an on-line, hypertext help system; for this, you +need wxHelp and the \helpref{wxHelpInstance}{wxhelpinstance} class to control +wxHelp. To add sparkle, you might use the wxToolBar class (documented separately) +which makes heavy use of the \helpref{wxBitmap}{wxbitmap}. + +GUI applications aren't all graphical wizardry. List and hash table needs are +catered for by \helpref{wxList}{wxlist}, \helpref{wxStringList}{wxstringlist} and \helpref{wxHashTable}{wxhashtable}. +You will undoubtedly need some platform-independent \helpref{file functions}{filefunctions}, +and you may find it handy to maintain and search a list of paths using \helpref{wxPathList}{wxpathlist}. +There's a \helpref{miscellany}{miscellany} of operating system and other functions. + +If you have several communicating applications, you can try out the DDE-like functions, by +using the three classes \helpref{wxDDEClient}{wxddeclient}, \helpref{wxDDEServer}{wxddeserver} and +\rtfsp\helpref{wxDDEConnection}{wxddeconnection}. These use DDE under Windows, and a simulation using +sockets under UNIX. + + diff --git a/docs/latex/wx/timaglst.tex b/docs/latex/wx/timaglst.tex new file mode 100644 index 0000000000..8559b16c79 --- /dev/null +++ b/docs/latex/wx/timaglst.tex @@ -0,0 +1,6 @@ +\section{wxImageList overview}\label{wximagelistoverview} + +Classes: \helpref{wxImageList}{wximagelist} + +TODO. + diff --git a/docs/latex/wx/time.tex b/docs/latex/wx/time.tex new file mode 100644 index 0000000000..8ace4d25f2 --- /dev/null +++ b/docs/latex/wx/time.tex @@ -0,0 +1,17 @@ +\section{\class{wxTime}}\label{wxtime} + +A class for manipulating times. + +TODO. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{wxDate}{wxDate} + +\latexignore{\rtfignore{\wxheading{Members}}} + + diff --git a/docs/latex/wx/timer.tex b/docs/latex/wx/timer.tex new file mode 100644 index 0000000000..6f2094999f --- /dev/null +++ b/docs/latex/wx/timer.tex @@ -0,0 +1,59 @@ +\section{\class{wxTimer}}\label{wxtimer} + +The wxTimer object is an abstraction of MS Windows and X toolkit timers. To +use it, derive a new class and override the {\bf Notify} member to +perform the required action. Start with {\bf Start}, stop with {\bf +Stop}, it's as simple as that. + +\wxheading{Derived from} + +\helpref{wxObject}{wxobject} + +\wxheading{See also} + +\helpref{::wxStartTimer}{wxstarttimer}, \helpref{::wxGetElapsedTime}{wxgetelapsedtime} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxTimer::wxTimer} + +\func{}{wxTimer}{\void} + +Constructor. + +\membersection{wxTimer::\destruct{wxTimer}} + +\func{}{\destruct{wxTimer}}{\void} + +Destructor. Stops the timer if activated. + +\membersection{wxTimer::Interval} + +\func{int}{Interval}{\void} + +Returns the current interval for the timer. + +\membersection{wxTimer::Notify} + +\func{void}{Notify}{\void} + +This member should be overridden by the user. It is called on timeout. + +\membersection{wxTimer::Start} + +\func{bool}{Start}{\param{int}{ milliseconds = -1}, \param{bool}{ oneShot=FALSE}} + +(Re)starts the timer. If {\it milliseconds}\/ is absent or -1, the +previous value is used. Returns FALSE if the timer could not be started, +TRUE otherwise (in MS Windows timers are a limited resource). + +If {\it oneShot} is FALSE (the default), the Notify function will be repeatedly +called. If TRUE, Notify will be called only once. + +\membersection{wxTimer::Stop} + +\func{void}{Stop}{\void} + +Stops the timer. + + diff --git a/docs/latex/wx/tipc.tex b/docs/latex/wx/tipc.tex new file mode 100644 index 0000000000..dc98cfb361 --- /dev/null +++ b/docs/latex/wx/tipc.tex @@ -0,0 +1,177 @@ +\section{Interprocess communication overview}\label{ipcoverview} + +Classes: \helpref{wxDDEServer}{wxddeserver}, \helpref{wxDDEConnection}{wxddeconnection}, +\rtfsp\helpref{wxDDEClient}{wxddeclient}. + +TODO: rewrite. + +The following describes how wxWindows implements DDE. The following +three classes are central. + +\begin{enumerate}\itemsep=0pt +\item wxDDEClient. This represents the client application, and is used +only within a client program. +\item wxDDEServer. This represents the server application, and is used +only within a server program. +\item wxDDEConnection. This represents the connection from the current +client or server to the other application (server or client), and can be used +in both server and client programs. Most DDE +transactions operate on this object. +\end{enumerate} + +Messages between applications are usually identified by three variables: +connection object, topic name and item name. A data string is a fourth +element of some messages. To create a connection (a conversation in +Windows parlance), the client application sends the message +MakeConnection to the client object, with a string service name to +identify the server and a topic name to identify the topic for the +duration of the connection. Under UNIX, the service name must contain an +integer port identifier. + +The server then responds and either vetos the connection or allows it. +If allowed, a connection object is created which persists until the +connection is closed. The connection object is then used for subsequent +messages between client and server. + +To create a working server, the programmer must: + +\begin{enumerate}\itemsep=0pt +\item Derive a class from wxDDEServer. +\item Override the handler OnAcceptConnection for accepting or rejecting a connection, +on the basis of the topic argument. This member must create and return a connection +object if the connection is accepted. +\item Create an instance of your server object, and call Create to +activate it, giving it a service name. +\item Derive a class from wxDDEConnection. +\item Provide handlers for various messages that are sent to the server +side of a wxDDEConnection. +\end{enumerate} + +To create a working client, the programmer must: + +\begin{enumerate}\itemsep=0pt +\item Derive a class from wxDDEClient. +\item Override the handler OnMakeConnection to create and return +an appropriate connection object. +\item Create an instance of your client object. +\item Derive a class from wxDDEConnection. +\item Provide handlers for various messages that are sent to the client +side of a wxDDEConnection. +\item When appropriate, create a new connection by sending a MakeConnection +message to the client object, with arguments host name (processed in UNIX only), +service name, and topic name for this connection. The client object will call OnMakeConnection +to create a connection object of the desired type. +\item Use the wxDDEConnection member functions to send messages to the server. +\end{enumerate} + +\subsection{Data transfer} + +These are the ways that data can be transferred from one application to +another. + +\begin{itemize}\itemsep=0pt +\item {\bf Execute:} the client calls the server with a data string representing +a command to be executed. This succeeds or fails, depending on the +server's willingness to answer. If the client wants to find the result +of the Execute command other than success or failure, it has to explicitly +call Request. +\item {\bf Request:} the client asks the server for a particular data string +associated with a given item string. If the server is unwilling to +reply, the return value is NULL. Otherwise, the return value is a string +(actually a pointer to the connection buffer, so it should not be +deallocated by the application). +\item {\bf Poke:} The client sends a data string associated with an item +string directly to the server. This succeeds or fails. +\item {\bf Advise:} The client asks to be advised of any change in data +associated with a particular item. If the server agrees, the server will +send an OnAdvise message to the client along with the item and data. +\end{itemize} + +The default data type is wxCF\_TEXT (ASCII text), and the default data +size is the length of the null-terminated string. Windows-specific data +types could also be used on the PC. + +\subsection{Examples} + +See the sample programs {\it server}\/ and {\it client}\/ in the IPC +samples directory. Run the server, then the client. This demonstrates +using the Execute, Request, and Poke commands from the client, together +with an Advise loop: selecting an item in the server list box causes +that item to be highlighted in the client list box. + +See also the source for wxHelp, which is a DDE server, and the files +wx\_help.h and wx\_help.cc which implement the client interface to +wxHelp. + +\subsection{More DDE details} + +A wxDDEClient object represents the client part of a client-server DDE +(Dynamic Data Exchange) conversation (available in both +Windows and UNIX). + +To create a client which can communicate with a suitable server, +you need to derive a class from wxDDEConnection and another from wxDDEClient. +The custom wxDDEConnection class will intercept communications in +a `conversation' with a server, and the custom wxDDEServer is required +so that a user-overriden \helpref{wxDDEClient::OnMakeConnection}{wxddeclientonmakeconnection} member can return +a wxDDEConnection of the required class, when a connection is made. + +For example: + +\begin{verbatim} +class MyConnection: public wxDDEConnection +{ + public: + MyConnection(void)::wxDDEConnection(ipc_buffer, 3999) {} + ~MyConnection(void) { } + Bool OnAdvise(char *topic, char *item, char *data, int size, int format) + { wxMessageBox(topic, data); } +}; + +class MyClient: public wxDDEClient +{ + public: + MyClient(void) {} + wxDDEConnection *OnMakeConnection(void) { return new MyConnection; } +}; + +\end{verbatim} + +Here, {\bf MyConnection} will respond to \helpref{OnAdvise}{wxddeconnectiononadvise} messages sent +by the server. + +When the client application starts, it must first call \helpref{wxIPCInitialize}{wxipcinitialize}\rtfsp +before creating an instance of the derived wxDDEClient. In the following, command line +arguments are used to pass the host name (the name of the machine the server is running +on) and the server name (identifying the server process). Calling \helpref{wxDDEClient::MakeConnection}{wxddeclientmakeconnection}\rtfsp +implicitly creates an instance of {\bf MyConnection} if the request for a +connection is accepted, and the client then requests an {\it Advise} loop +from the server, where the server calls the client when data has changed. + +\begin{verbatim} + wxIPCInitialize(); + + char *server = "4242"; + char hostName[256]; + wxGetHostName(hostName, sizeof(hostName)); + + char *host = hostName; + + if (argc > 1) + server = argv[1]; + if (argc > 2) + host = argv[2]; + + // Create a new client + MyClient *client = new MyClient; + the_connection = (MyConnection *)client->MakeConnection(host, server, "IPC TEST"); + + if (!the_connection) + { + wxMessageBox("Failed to make connection to server", "Client Demo Error"); + return NULL; + } + the_connection->StartAdvise("Item"); +\end{verbatim} + + diff --git a/docs/latex/wx/tlistctl.tex b/docs/latex/wx/tlistctl.tex new file mode 100644 index 0000000000..49f939255e --- /dev/null +++ b/docs/latex/wx/tlistctl.tex @@ -0,0 +1,6 @@ +\section{wxListCtrl overview}\label{wxlistctrloverview} + +Classes: \helpref{wxListCtrl}{wxlistctrl}, \helpref{wxImageList}{wximagelist} + +TODO. + diff --git a/docs/latex/wx/toolbar.tex b/docs/latex/wx/toolbar.tex new file mode 100644 index 0000000000..7601e65627 --- /dev/null +++ b/docs/latex/wx/toolbar.tex @@ -0,0 +1,770 @@ +\section{\class{wxToolBarBase}}\label{wxtoolbarbase} + +{\bf wxToolBarBase} is the base class for a number of toolbar classes. The most portable +one of these is the generic \helpref{wxToolBarSimple}{wxtoolbarsimple} class. {\bf wxToolBarBase} defines +automatic scrolling management functionality which is identical to \helpref{wxScrolledWindow}{wxscrolledwindow}, +so please refer to this class also. + +\wxheading{Derived from} + +\helpref{wxControl}{wxcontrol}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Remarks} + +Because there is a variety of toolbar classes, you may wish to choose which class +is best for your application on each platform, and define {\bf wxToolBar} appropriately. For example: + +\begin{verbatim} +#if WIN95 +class wxToolBar: public wxToolBar95 +#elif defined(wx_msw) +class wxToolBar: public wxToolBarMSW +#else +class wxToolBar: public wxToolBarSimple +#endif +{ +}; +\end{verbatim} + +TODO: maybe change the confusing names: GetDefaultSize becomes GetToolBitmapSize, and +GetDefaultButtonSize becomes GetToolSize. Document SetRows for wxToolBar95, and make it +part of the base API? + +\wxheading{Event handling} + +Derive a new class from an existing toolbar class, and override appropriate virtual functions. + +TODO: make consistent with other event handling; have wxToolBarEvent and appropriate macros. + +\wxheading{See also} + +\overview{Toolbar overview}{wxtoolbaroverview},\rtfsp +\helpref{wxToolBarSimple}{wxtoolbarsimple},\rtfsp +\helpref{wxToolBarMSW}{wxtoolbarmsw},\rtfsp +\helpref{wxToolBar95}{wxtoolbar95},\rtfsp +\helpref{wxScrolledWindow}{wxscrolledwindow} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxToolBarBase::wxToolBarBase}\label{wxtoolbarbaseconstr} + +\func{}{wxToolBarBase}{\void} + +Default constructor. + +%\wxheading{See also} +% +%\helpref{wxToolBarBase::Create}{wxtoolbarbasecreate} +% +\membersection{wxToolBarBase::\destruct{wxToolBarBase}} + +\func{void}{\destruct{wxToolBarBase}}{\void} + +Toolbar destructor. + +\membersection{wxToolBarBase::AddSeparator}\label{wxtoolbarbaseaddseparator} + +\func{void}{AddSeparator}{\void} + +Adds a separator for spacing groups of tools. + +\wxheading{See also} + +\helpref{wxToolBarBase::AddTool}{wxtoolbarbaseaddtool}, \helpref{wxToolBarBase::SetToolSeparation}{wxtoolbarbasesettoolseparation} + +\membersection{wxToolBarBase::AddTool}\label{wxtoolbarbaseaddtool} + +\func{wxToolBarBaseTool*}{AddTool}{\param{const int}{ toolIndex}, \param{const wxBitmap\&}{ bitmap1},\rtfsp +\param{const wxBitmap\&}{ bitmap2 = (wxBitmap *)NULL}, \param{const bool}{ isToggle = FALSE},\rtfsp +\param{const float}{ xPos = -1}, \param{const float}{ yPos = -1},\rtfsp +\param{wxObject *}{clientData = NULL}, \param{const wxString\& }{shortHelpString = ""}, \param{const wxString\& }{longHelpString = ""}} + +Adds a tool to the toolbar. + +\wxheading{Parameters} + +\docparam{toolIndex}{An integer by which +the tool may be identified in subsequent operations.} + +\docparam{isToggle}{Specifies whether the tool is a toggle or not: a toggle tool may be in +two states, whereas a non-toggle tool is just a button.} + +\docparam{bitmap1}{The primary tool bitmap for toggle and button tools.} + +\docparam{bitmap2}{The second bitmap specifies the on-state bitmap for a toggle +tool. If this is NULL, either an inverted version of the primary bitmap is +used for the on-state of a toggle tool (monochrome displays) or a black +border is drawn around the tool (colour displays). Note that to pass a NULL value, +you need to cast it to (wxBitmap *) so that C++ can construct an appropriate temporary +wxBitmap object.} + +\docparam{xPos}{Specifies the x position of the tool if automatic layout is not suitable.} + +\docparam{yPos}{Specifies the y position of the tool if automatic layout is not suitable.} + +\docparam{clientData}{An optional pointer to client data which can be +retrieved later using \helpref{wxToolBarBase::GetToolClientData}{wxtoolbarbasegettoolclientdata}.} + +\docparam{shortHelpString}{Used for displaying a tooltip for the tool in the +Windows 95 implementation of wxButtonBar. Pass the empty string if this is not required.} + +\docparam{longHelpString}{Used to displayer longer help, such as status line help. +Pass the empty string if this is not required.} + +\wxheading{See also} + +\helpref{wxToolBarBase::AddSeparator}{wxtoolbarbaseaddseparator} + +\membersection{wxToolBarBase::CreateTools}\label{wxtoolbarbasecreatetools} + +\func{bool}{CreateTools}{\void} + +Call this function after all tools have been added to the toolbar, to actually +create the tools. + +\wxheading{Remarks} + +Strictly speaking, this is required only for the Windows 95 version of wxButtonBar, +but for portability it should be called anyway. + +\wxheading{See also} + +\helpref{wxToolBarBase::AddTool}{wxtoolbarbaseaddtool} + +\membersection{wxToolBarBase::DrawTool}\label{wxtoolbarbasedrawtool} + +\func{void}{DrawTool}{\param{wxMemoryDC\& }{memDC}, \param{wxToolBarBaseTool* }{tool}} + +Draws the specified tool onto the canvas using the given memory device context. + +\wxheading{Parameters} + +\docparam{memDC}{A memory DC to be used for drawing the tool.} + +\docparam{tool}{Tool to be drawn.} + +\wxheading{Remarks} + +For internal use only. + +\membersection{wxToolBarBase::EnableTool}\label{wxtoolbarbaseenabletool} + +\func{void}{EnableTool}{\param{const int }{toolIndex}, \param{const bool}{ enable}} + +Enables or disables the tool. + +\wxheading{Parameters} + +\docparam{toolIndex}{Tool to enable or disable.} + +\docparam{enable}{If TRUE, enables the tool, otherwise disables it.} + +\wxheading{Remarks} + +For \helpref{wxToolBarSimple}{wxtoolbarsimple}, does nothing. Some other implementations +will change the visible state of the tool to indicate that it is disabled. + +\wxheading{See also} + +\helpref{wxToolBarBase::GetToolEnabled}{wxtoolbarbasegettoolenabled},\rtfsp +%\helpref{wxToolBarBase::SetToolState}{wxtoolbarbasesettoolstate},\rtfsp +\helpref{wxToolBarBase::ToggleTool}{wxtoolbarbasetoggletool} + +\membersection{wxToolBarBase::FindToolForPosition}\label{wxtoolbarbasefindtoolforposition} + +\constfunc{wxToolBarBaseTool*}{FindToolForPosition}{\param{const float}{ x}, \param{const float}{ y}} + +Finds a tool for the given mouse position. + +\wxheading{Parameters} + +\docparam{x}{X position.} + +\docparam{y}{Y position.} + +\wxheading{Return value} + +A pointer to a tool if a tool is found, or NULL otherwise. + +\wxheading{Remarks} + +Used internally, and should not need to be used by the programmer. + +\membersection{wxToolBarBase::GetDefaultButtonSize}\label{wxtoolbarbasegetdefaultbuttonsize} + +\func{wxSize}{GetDefaultButtonSize}{\void} + +Returns the size of a whole button, which is usually larger than a tool bitmap because +of added 3D effects. + +\wxheading{See also} + +\helpref{wxToolBarBase::SetDefaultSize}{wxtoolbarbasesetdefaultsize},\rtfsp +\helpref{wxToolBarBase::GetDefaultSize}{wxtoolbarbasegetdefaultsize} + +\membersection{wxToolBarBase::GetDefaultSize}\label{wxtoolbarbasegetdefaultsize} + +\func{wxSize}{GetDefaultSize}{\void} + +Returns the size of bitmap that the toolbar expects to have. The default bitmap size is 16 by 15 pixels. + +\wxheading{Remarks} + +Note that this is the size of the bitmap you pass to \helpref{wxToolBarBase::AddTool}{wxtoolbarbaseaddtool}, +and not the eventual size of the tool button. + +\wxheading{See also} + +\helpref{wxToolBarBase::SetDefaultSize}{wxtoolbarbasesetdefaultsize},\rtfsp +\helpref{wxToolBarBase::GetDefaultButtonSize}{wxtoolbarbasegetdefaultbuttonsize} + +\membersection{wxToolBarBase::GetMargins}\label{wxtoolbarbasegetmargins} + +\constfunc{wxSize}{GetMargins}{\void} + +Returns the left/right and top/bottom margins, which are also used for inter-toolspacing. + +\wxheading{See also} + +\helpref{wxToolBarBase::SetMargins}{wxtoolbarbasesetmargins} + +\membersection{wxToolBarBase::GetMaxSize}\label{wxtoolbarbasegetmaxsize} + +\constfunc{void}{GetMaxSize}{\param{float*}{ w}, \param{float*}{ h}} + +Gets the maximum size taken up by the tools after layout, including margins. +This can be used to size a frame around the toolbar canvas. + +\wxheading{Parameters} + +\docparam{w}{Receives the maximum horizontal size.} + +\docparam{h}{Receives the maximum vertical size.} + +\membersection{wxToolBarBase::GetToolClientData}\label{wxtoolbarbasegettoolclientdata} + +\constfunc{wxObject*}{GetToolClientData}{\param{const int }{toolIndex}} + +Get any client data associated with the tool. + +\wxheading{Parameters} + +\docparam{toolIndex}{Index of the tool, as passed to \helpref{wxToolBarBase::AddTool}{wxtoolbarbaseaddtool}.} + +\wxheading{Return value} + +Client data, or NULL if there is none. + +\membersection{wxToolBarBase::GetToolEnabled}\label{wxtoolbarbasegettoolenabled} + +\constfunc{bool}{GetToolEnabled}{\param{const int }{toolIndex}} + +Called to determine whether a tool is enabled (responds to user input). + +\wxheading{Parameters} + +\docparam{toolIndex}{Index of the tool in question.} + +\wxheading{Return value} + +TRUE if the tool is enabled, FALSE otherwise. + +%\wxheading{See also} +% +%\helpref{wxToolBarBase::SetToolEnabled}{wxtoolbarbasesettoolenabled} +% +\membersection{wxToolBarBase::GetToolLongHelp}\label{wxtoolbarbasegettoollonghelp} + +\constfunc{wxString}{GetToolLongHelp}{\param{const int }{toolIndex}} + +Returns the long help for the given tool. + +\wxheading{Parameters} + +\docparam{toolIndex}{The tool in question.} + +\wxheading{See also} + +\helpref{wxToolBarBase::SetToolLongHelp}{wxtoolbarbasesettoollonghelp},\rtfsp +\helpref{wxToolBarBase::SetToolShortHelp}{wxtoolbarbasesettoolshorthelp}\rtfsp + +\membersection{wxToolBarBase::GetToolPacking}\label{wxtoolbarbasegettoolpacking} + +\constfunc{int}{GetToolPacking}{\void} + +Returns the value used for packing tools. + +\wxheading{See also} + +\helpref{wxToolBarBase::SetToolPacking}{wxtoolbarbasesettoolpacking} + +\membersection{wxToolBarBase::GetToolSeparation}\label{wxtoolbarbasegettoolseparation} + +\constfunc{int}{GetToolSeparation}{\void} + +Returns the default separator size. + +\wxheading{See also} + +\helpref{wxToolBarBase::SetToolSeparation}{wxtoolbarbasesettoolseparation} + +\membersection{wxToolBarBase::GetToolShortHelp}\label{wxtoolbarbasegettoolshorthelp} + +\constfunc{wxString}{GetToolShortHelp}{\param{const int }{toolIndex}} + +Returns the short help for the given tool. + +Returns the long help for the given tool. + +\wxheading{Parameters} + +\docparam{toolIndex}{The tool in question.} + +\wxheading{See also} + +\helpref{wxToolBarBase::GetToolLongHelp}{wxtoolbarbasegettoollonghelp},\rtfsp +\helpref{wxToolBarBase::SetToolShortHelp}{wxtoolbarbasesettoolshorthelp}\rtfsp + +\membersection{wxToolBarBase::GetToolState}\label{wxtoolbarbasegettoolstate} + +\constfunc{bool}{GetToolState}{\param{const int }{toolIndex}} + +Gets the on/off state of a toggle tool. + +\wxheading{Parameters} + +\docparam{toolIndex}{The tool in question.} + +\wxheading{Return value} + +TRUE if the tool is toggled on, FALSE otherwise. + +%\wxheading{See also} +% +%\helpref{wxToolBarBase::SetToolState}{wxtoolbarbasesettoolstate} +% +\membersection{wxToolBarBase::Layout}\label{wxtoolbarbaselayout} + +\func{void}{Layout}{\void} + +Called by the application after the tools have been added to +automatically lay the tools out on the canvas. If you have given +absolute positions when adding the tools, do not call this. + +\membersection{wxToolBarBase::OnLeftClick}\label{wxtoolbarbaseonleftclick} + +\func{bool}{OnLeftClick}{\param{int}{ toolIndex}, \param{bool}{ toggleDown}} + +Called when the user clicks on a tool with the left mouse button. The +programmer should override this function to detect left tool clicks. + +\wxheading{Parameters} + +\docparam{toolIndex}{The identifier passed to \helpref{wxToolBarBase::AddTool}{wxtoolbarbaseaddtool}.} + +\docparam{toggleDown}{TRUE if the tool is a toggle and the toggle is down, otherwise is FALSE.} + +\wxheading{Return value} + +If the tool is a toggle and this function returns FALSE, the toggle +toggle state (internal and visual) will not be changed. This provides a way of +specifying that toggle operations are not permitted in some circumstances. + +\wxheading{See also} + +\helpref{wxToolBarBase::OnMouseEnter}{wxtoolbarbaseonmouseenter},\rtfsp +\helpref{wxToolBarBase::OnRightClick}{wxtoolbarbaseonrightclick} + +\membersection{wxToolBarBase::OnMouseEnter}\label{wxtoolbarbaseonmouseenter} + +\func{void}{OnMouseEnter}{\param{int}{ toolIndex}} + +This is called when the mouse cursor moves into a tool or out of +the toolbar. + +\wxheading{Parameters} + +\docparam{toolIndex}{Greater than -1 if the mouse cursor has moved into the tool, +or -1 if the mouse cursor has moved. The +programmer can override this to provide extra information about the tool, +such as a short description on the status line.} + +\wxheading{Remarks} + +With some derived toolbar classes, if the mouse moves quickly out of the toolbar, wxWindows may not be able to +detect it. Therefore this function may not always be called when expected. + +\membersection{wxToolBarBase::OnRightClick}\label{wxtoolbarbaseonrightclick} + +\func{void}{OnRightClick}{\param{int}{ toolIndex}, \param{float}{ x}, \param{float}{ y}} + +Called when the user clicks on a tool with the right mouse button. The +programmer should override this function to detect right tool clicks. + +\wxheading{Parameters} + +\docparam{toolIndex}{The identifier passed to \helpref{wxToolBarBase::AddTool}{wxtoolbarbaseaddtool}.} + +\docparam{x}{The x position of the mouse cursor.} + +\docparam{y}{The y position of the mouse cursor.} + +\wxheading{Remarks} + +A typical use of this member might be to pop up a menu. + +\wxheading{See also} + +\helpref{wxToolBarBase::OnMouseEnter}{wxtoolbarbaseonmouseenter},\rtfsp +\helpref{wxToolBarBase::OnLeftClick}{wxtoolbarbaseonleftclick} + +\membersection{wxToolBarBase::SetDefaultSize}\label{wxtoolbarbasesetdefaultsize} + +\func{void}{SetDefaultSize}{\param{const wxSize\&}{ size}} + +Sets the default size of each tool bitmap. The default bitmap size is 16 by 15 pixels. + +\wxheading{Parameters} + +\docparam{size}{The size of the bitmaps in the toolbar.} + +\wxheading{Remarks} + +This should be called to tell the toolbar what the tool bitmap size is. Call +it before you add tools. + +Note that this is the size of the bitmap you pass to \helpref{wxToolBarBase::AddTool}{wxtoolbarbaseaddtool}, +and not the eventual size of the tool button. + +\wxheading{See also} + +\helpref{wxToolBarBase::GetDefaultSize}{wxtoolbarbasegetdefaultsize},\rtfsp +\helpref{wxToolBarBase::GetDefaultButtonSize}{wxtoolbarbasegetdefaultbuttonsize} + +\membersection{wxToolBarBase::SetMargins}\label{wxtoolbarbasesetmargins} + +\func{void}{SetMargins}{\param{const wxSize\&}{ size}} + +\func{void}{SetMargins}{\param{const int}{ x}, \param{const int}{ y}} + +Set the values to be used as margins for the toolbar. + +\wxheading{Parameters} + +\docparam{size}{Margin size.} + +\docparam{x}{Left margin, right margin and inter-tool separation value.} + +\docparam{y}{Top margin, bottom margin and inter-tool separation value.} + +\wxheading{Remarks} + +This must be called before the tools are added if absolute positioning is to be used, and the +default (zero-size) margins are to be overridden. + +\wxheading{See also} + +\helpref{wxToolBarBase::GetMargins}{wxtoolbarbasegetmargins}, \helpref{wxSize}{wxsize} + +\membersection{wxToolBarBase::SetToolLongHelp}\label{wxtoolbarbasesettoollonghelp} + +\func{void}{SetToolLongHelp}{\param{int }{toolIndex}, \param{const wxString\& }{helpString}} + +Sets the long help for the given tool. + +\wxheading{Parameters} + +\docparam{toolIndex}{The tool in question.} + +\docparam{helpString}{A string for the long help.} + +\wxheading{Remarks} + +You might use the long help for displaying the tool purpose on the status line. + +\wxheading{See also} + +\helpref{wxToolBarBase::GetToolLongHelp}{wxtoolbarbasegettoollonghelp},\rtfsp +\helpref{wxToolBarBase::SetToolShortHelp}{wxtoolbarbasesettoolshorthelp},\rtfsp + +\membersection{wxToolBarBase::SetToolPacking}\label{wxtoolbarbasesettoolpacking} + +\func{void}{SetToolPacking}{\param{const int}{ packing}} + +Sets the value used for spacing tools. The default value is 1. + +\wxheading{Parameters} + +\docparam{packing}{The value for packing.} + +\wxheading{Remarks} + +The packing is used for spacing in the vertical direction if the toolbar is horizontal, +and for spacing in the horizontal direction if the toolbar is vertical. + +\wxheading{See also} + +\helpref{wxToolBarBase::GetToolPacking}{wxtoolbarbasegettoolpacking} + +\membersection{wxToolBarBase::SetToolShortHelp}\label{wxtoolbarbasesettoolshorthelp} + +\func{void}{SetToolShortHelp}{\param{const int }{toolIndex}, \param{const wxString\& }{helpString}} + +Sets the short help for the given tool. + +\wxheading{Parameters} + +\docparam{toolIndex}{The tool in question.} + +\docparam{helpString}{The string for the short help.} + +\wxheading{Remarks} + +An application might use short help for identifying the tool purpose in a tooltip. + +\wxheading{See also} + +\helpref{wxToolBarBase::GetToolShortHelp}{wxtoolbarbasegettoolshorthelp}, \helpref{wxToolBarBase::SetToolLongHelp}{wxtoolbarbasesettoollonghelp} + +\membersection{wxToolBarBase::SetToolSeparation}\label{wxtoolbarbasesettoolseparation} + +\func{void}{SetToolSeparation}{\param{const int}{ separation}} + +Sets the default separator size. The default value is 5. + +\wxheading{Parameters} + +\docparam{separation}{The separator size.} + +\wxheading{See also} + +\helpref{wxToolBarBase::AddSeparator}{wxtoolbarbaseaddseparator} + +\membersection{wxToolBarBase::ToggleTool}\label{wxtoolbarbasetoggletool} + +\func{void}{ToggleTool}{\param{const int }{toolIndex}, \param{const bool}{ toggle}} + +Toggles a tool on or off. + +\wxheading{Parameters} + +\docparam{toolIndex}{Tool in question.} + +\docparam{toggle}{If TRUE, toggles the tool on, otherwise toggles it off.} + +\wxheading{Remarks} + +Only applies to a tool that has been specified as a toggle tool. + +\wxheading{See also} + +\helpref{wxToolBarBase::GetToolState}{wxtoolbarbasegettoolstate} + +\section{\class{wxToolBar95}}\label{wxtoolbar95} + +This class should be used when a 3D-effect toolbar is required under Windows 95. +It uses the native toolbar control. + +\wxheading{Derived from} + +\helpref{wxToolBarBase}{wxtoolbarbase}\\ +\helpref{wxControl}{wxcontrol}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +There are no specific styles for this class. + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{Remarks} + +Note that this toolbar paints tools to reflect user-selected colours. +The toolbar orientation must always be {\bf wxVERTICAL}. + +For member functions, see the documentation for \helpref{wxToolBarBase}{wxtoolbarbase}. + +\wxheading{See also} + +\overview{Toolbar overview}{wxtoolbaroverview},\rtfsp +\helpref{wxToolBarBase}{wxtoolbarbase},\rtfsp +\helpref{wxToolBarSimple}{wxtoolbarsimple},\rtfsp +\helpref{wxToolBarMSW}{wxtoolbarmsw} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxToolBar95::wxToolBar95}\label{wxtoolbar95constr} + +\func{}{wxToolBar95}{\param{wxWindow*}{ parent}, \param{const wxWindowID }{id},\rtfsp +\param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long }{style = 0}, \param{const int }{orientation = wxVERTICAL},\rtfsp +\param{const int }{nRowsOrColumns = 1}, \param{const wxString\& }{name = ``toolBar"}} + +Constructs a toolbar. + +\wxheading{Parameters} + +\docparam{parent}{Parent window. Must not be NULL.} + +\docparam{id}{Window identifier. A value of -1 indicates a default value.} + +\docparam{pos}{Window position. If the position (-1, -1) is specified then a default position is chosen.} + +\docparam{size}{Window size. If the default size (-1, -1) is specified then a default size is chosen.} + +\docparam{orientation}{Specifies a wxVERTICAL or wxHORIZONTAL orientation for laying out +the toolbar.} + +\docparam{nRowsOrColumns}{Specifies the number of rows or +columns, whose meaning depends on {\it orientation}. If laid out +vertically, {\it nRowsOrColumns} specifies the number of rows to draw +before the next column is started; if horizontal, it refers to the +number of columns to draw before the next row is started.} + +\docparam{style}{Window style. See \helpref{wxToolBar95}{wxtoolbar95}.} + +\docparam{name}{Window name.} + +\section{\class{wxToolBarMSW}}\label{wxtoolbarmsw} + +This class should be used when a 3D-effect toolbar is required for Windows versions earlier +than Windows 95. + +\wxheading{Derived from} + +\helpref{wxToolBarBase}{wxtoolbarbase}\\ +\helpref{wxControl}{wxcontrol}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +There are no specific styles for this class. + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{Remarks} + +Note that this toolbar does not paint tools to reflect user-selected colours: grey shading is used. + +For member functions, see the documentation for \helpref{wxToolBarBase}{wxtoolbarbase}. + +\wxheading{See also} + +\overview{Toolbar overview}{wxtoolbaroverview},\rtfsp +\helpref{wxToolBarBase}{wxtoolbarbase},\rtfsp +\helpref{wxToolBarSimple}{wxtoolbarsimple},\rtfsp +\helpref{wxToolBar95}{wxtoolbar95} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxToolBarMSW::wxToolBarMSW}\label{wxtoolbarmswconstr} + +\func{}{wxToolBarMSW}{\param{wxWindow*}{ parent}, \param{const wxWindowID }{id},\rtfsp +\param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long }{style = 0}, \param{const int }{orientation = wxVERTICAL},\rtfsp +\param{const int }{nRowsOrColumns = 1}, \param{const wxString\& }{name = ``toolBar"}} + +Constructs a toolbar. + +\wxheading{Parameters} + +\docparam{parent}{Parent window. Must not be NULL.} + +\docparam{id}{Window identifier. A value of -1 indicates a default value.} + +\docparam{pos}{Window position. If the position (-1, -1) is specified then a default position is chosen.} + +\docparam{size}{Window size. If the default size (-1, -1) is specified then a default size is chosen.} + +\docparam{orientation}{Specifies a wxVERTICAL or wxHORIZONTAL orientation for laying out +the toolbar.} + +\docparam{nRowsOrColumns}{Specifies the number of rows or +columns, whose meaning depends on {\it orientation}. If laid out +vertically, {\it nRowsOrColumns} specifies the number of rows to draw +before the next column is started; if horizontal, it refers to the +number of columns to draw before the next row is started.} + +\docparam{style}{Window style. See \helpref{wxToolBarMSW}{wxtoolbarmsw}.} + +\docparam{name}{Window name.} + + +\section{\class{wxToolBarSimple}}\label{wxtoolbarsimple} + +This is the generic toolbar class which has an identical appearance +on all platforms. + +\wxheading{Derived from} + +\helpref{wxToolBarBase}{wxtoolbarbase}\\ +\helpref{wxControl}{wxcontrol}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{wxTB\_3DBUTTONS}}{Gives the simple toolbar a mild 3D look to its buttons.} +\end{twocollist} + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{Remarks} + +In this class, disabling a toolbar tool does not change its appearance. + +For member functions, see the documentation for \helpref{wxToolBarBase}{wxtoolbarbase}. + +\wxheading{See also} + +\overview{Toolbar overview}{wxtoolbaroverview},\rtfsp +\helpref{wxToolBarBase}{wxtoolbarbase},\rtfsp +\helpref{wxToolBarSimple}{wxtoolbarsimple},\rtfsp +\helpref{wxToolBar95}{wxtoolbar95} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxToolBarSimple::wxToolBarSimple}\label{wxtoolbarsimpleconstr} + +\func{}{wxToolBarSimple}{\param{wxWindow*}{ parent}, \param{const wxWindowID }{id},\rtfsp +\param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp +\param{const long }{style = 0}, \param{const int }{orientation = wxVERTICAL},\rtfsp +\param{const int }{nRowsOrColumns = 1}, \param{const wxString\& }{name = ``toolBar"}} + +Constructs a toolbar. + +\wxheading{Parameters} + +\docparam{parent}{Parent window. Must not be NULL.} + +\docparam{id}{Window identifier. A value of -1 indicates a default value.} + +\docparam{pos}{Window position. If the position (-1, -1) is specified then a default position is chosen.} + +\docparam{size}{Window size. If the default size (-1, -1) is specified then a default size is chosen.} + +\docparam{orientation}{Specifies a wxVERTICAL or wxHORIZONTAL orientation for laying out +the toolbar.} + +\docparam{nRowsOrColumns}{Specifies the number of rows or +columns, whose meaning depends on {\it orientation}. If laid out +vertically, {\it nRowsOrColumns} specifies the number of rows to draw +before the next column is started; if horizontal, it refers to the +number of columns to draw before the next row is started.} + +\docparam{style}{Window style. See \helpref{wxToolBarSimple}{wxtoolbarsimple}.} + +\docparam{name}{Window name.} + + + diff --git a/docs/latex/wx/topics.tex b/docs/latex/wx/topics.tex new file mode 100644 index 0000000000..d189e2d9a1 --- /dev/null +++ b/docs/latex/wx/topics.tex @@ -0,0 +1,37 @@ +\chapter{Topic overviews}\label{overviews} +\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% + +This chapter contains a selection of topic overviews. + +\input tapp.tex +\input tbitmap.tex +\input tdialog.tex +\input tfont.tex +\input tstring.tex +\input tsplittr.tex +\input ttreectl.tex +\input tlistctl.tex +\input timaglst.tex +\input tcommdlg.tex +\input tconstr.tex +\input tdb.tex +\input tdc.tex +\input tdebug.tex +\input tdelwin.tex +\input tscroll.tex +\input tdocview.tex +\input tevent.tex +\input tguide.tex +\input tipc.tex +\input tprint.tex +\input tresourc.tex +\input truntime.tex +\input tstyles.tex +\input ttab.tex +\input ttoolbar.tex +\input tvalidat.tex +\input texpr.tex +\input tgrid.tex +\input tusage.tex + diff --git a/docs/latex/wx/tprint.tex b/docs/latex/wx/tprint.tex new file mode 100644 index 0000000000..b6f031cc26 --- /dev/null +++ b/docs/latex/wx/tprint.tex @@ -0,0 +1,59 @@ +\section{Printing overview}\label{printingoverview} + +Classes: \helpref{wxPrintout}{wxprintout}, \helpref{wxPrinter}{wxprinter},\rtfsp +\helpref{wxPrintPreview}{wxprintpreview}, \helpref{wxPrinterDC}{wxprinterdc},\rtfsp +\helpref{wxPrintDialog}{wxprintdialog}. + +The printing framework relies on the application to provide classes +whose member functions can respond to particular requests, such +as `print this page' or `does this page exist in the document?'. +This method allows wxWindows to take over the housekeeping duties of +turning preview pages, calling the print dialog box, creating +the printer device context, and so on: the application can concentrate +on the rendering of the information onto a device context. +The printing framework is mainly a Windows feature; PostScript +support under non-Windows platforms is emerging but has not been rigorously tested. + +The \helpref{document/view framework}{docviewoverview} creates a default wxPrintout +object for every view, calling wxView::OnDraw to achieve a +prepackaged print/preview facility. + +A document's printing ability is represented in an application by a +derived wxPrintout class. This class prints a page on request, and can +be passed to the Print function of a wxPrinter object to actually print +the document, or can be passed to a wxPrintPreview object to initiate +previewing. The following code (from the printing sample) shows how easy +it is to initiate printing, previewing and the print setup dialog, once the wxPrintout +functionality has been defined. Notice the use of MyPrintout for +both printing and previewing. All the preview user interface functionality +is taken care of by wxWindows. For details on how MyPrintout is defined, +please look at the printout sample code. + +\begin{verbatim} + case WXPRINT_PRINT: + { + wxPrinter printer; + MyPrintout printout("My printout"); + printer.Print(this, &printout, TRUE); + break; + } + case WXPRINT_PREVIEW: + { + // Pass two printout objects: for preview, and possible printing. + wxPrintPreview *preview = new wxPrintPreview(new MyPrintout, new MyPrintout); + wxPreviewFrame *frame = new wxPreviewFrame(preview, this, "Demo Print Preview", 100, 100, 600, 650); + frame->Centre(wxBOTH); + frame->Initialize(); + frame->Show(TRUE); + break; + } + case WXPRINT_PRINT_SETUP: + { + wxPrintDialog printerDialog(this); + printerDialog.GetPrintData().SetSetupDialog(TRUE); + printerDialog.Show(TRUE); + break; + } +\end{verbatim} + + diff --git a/docs/latex/wx/treectrl.tex b/docs/latex/wx/treectrl.tex new file mode 100644 index 0000000000..2eef812861 --- /dev/null +++ b/docs/latex/wx/treectrl.tex @@ -0,0 +1,387 @@ +\section{\class{wxTreeCtrl}}\label{wxtreectrl} + +A tree control presents information as a hierarchy, with items that may be expanded +to show further items. Items in a tree control are referenced by long integer handles. + +To intercept events from a tree control, use the event table macros described in \helpref{wxTreeEvent}{wxtreeevent}. + +\wxheading{Derived from} + +\helpref{wxControl}{wxcontrol}\\ +\helpref{wxWindow}{wxwindow}\\ +\helpref{wxEvtHandler}{wxevthandler}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Window styles} + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{wxTR\_HAS\_BUTTONS}}{Use this style to show + and - buttons to the +left of parent items.} +\twocolitem{\windowstyle{wxTR\_EDIT\_LABELS}}{Use this style if you wish the user to be +able to edit labels in the tree control.} +\end{twocollist} + +See also \helpref{window styles overview}{windowstyles}. + +\wxheading{See also} + +\helpref{wxTreeCtrl overview}{wxtreectrloverview}, \helpref{wxListBox}{wxlistbox}, \helpref{wxListCtrl}{wxlistctrl},\rtfsp +\helpref{wxImageList}{wximagelist}, \helpref{wxTreeEvent}{wxtreeevent} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxTreeCtrl::wxTreeCtrl}\label{wxtreectrlconstr} + +\func{}{wxTreeCtrl}{\void} + +Default constructor. + +\func{}{wxTreeCtrl}{\param{wxWindow*}{ parent}, \param{const wxWindowID}{ id},\rtfsp +\param{const wxPoint\&}{ pos = wxDefaultPosition}, \param{const wxSize\&}{ size = wxDefaultSize},\rtfsp +\param{const long}{ style = wxTR\_HAS\_BUTTONS}, \param{const wxValidator\& }{validator = wxDefaultValidator}, \param{const wxString\& }{name = ``listCtrl"}} + +Constructor, creating and showing a tree control. + +\wxheading{Parameters} + +\docparam{parent}{Parent window. Must not be NULL.} + +\docparam{id}{Window identifier. A value of -1 indicates a default value.} + +\docparam{pos}{Window position.} + +\docparam{size}{Window size. If the default size (-1, -1) is specified then the window is sized +appropriately.} + +\docparam{style}{Window style. See \helpref{wxTreeCtrl}{wxtreectrl}.} + +\docparam{validator}{Window validator.} + +\docparam{name}{Window name.} + +\wxheading{See also} + +\helpref{wxTreeCtrl::Create}{wxtreectrlcreate}, \helpref{wxValidator}{wxvalidator} + +\membersection{wxTreeCtrl::\destruct{wxTreeCtrl}} + +\func{void}{\destruct{wxTreeCtrl}}{\void} + +Destructor, destroying the list control. + +\membersection{wxTreeCtrl::Create}\label{wxtreectrlcreate} + +\func{bool}{wxTreeCtrl}{\param{wxWindow*}{ parent}, \param{const wxWindowID}{ id},\rtfsp +\param{const wxPoint\&}{ pos = wxDefaultPosition}, \param{const wxSize\&}{ size = wxDefaultSize},\rtfsp +\param{const long}{ style = wxTR\_HAS\_BUTTONS}, \param{const wxValidator\& }{validator = wxDefaultValidator}, \param{const wxString\& }{name = ``listCtrl"}} + +Creates the tree control. See \helpref{wxTreeCtrl::wxTreeCtrl}{wxtreectrlconstr} for further details. + +\membersection{wxTreeCtrl::DeleteAllItems}\label{wxtreectrldeleteallitems} + +\func{bool}{DeleteAllItems}{\void} + +Deletes all the items in the control. + +\membersection{wxTreeCtrl::DeleteItem}\label{wxtreectrldeleteitem} + +\func{bool}{DeleteItem}{\param{const long }{item}} + +Deletes the specified item. + +\membersection{wxTreeCtrl::Edit}\label{wxtreectrledit} + +\func{wxTextCtrl\&}{Edit}{\param{const long }{item}} + +Starts editing the label of the given item, returning the text control that the tree control uses for editing. + +\membersection{wxTreeCtrl::EnsureVisible}\label{wxtreectrlensurevisible} + +\func{bool}{EnsureVisible}{\param{const long }{item}} + +Scrolls and/or expands items to ensure that the given item is visible. + +\membersection{wxTreeCtrl::ExpandItem}\label{wxtreectrlexpanditem} + +\func{bool}{ExpandItem}{\param{const long }{item}, \param{const int }{action}} + +Expands the given item. + +{\it action} may be one of: + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{wxTREE\_EXPAND\_EXPAND}}{Expands the item.} +\twocolitem{\windowstyle{wxTREE\_EXPAND\_COLLAPSE}}{Collapses the item.} +\twocolitem{\windowstyle{wxTREE\_EXPAND\_COLLAPSE\_RESET}}{Collapses the item and removes the child items.} +\twocolitem{\windowstyle{wxTREE\_EXPAND\_TOGGLE}}{Expands if the item is collapsed, collapses if the item is expanded.} +\end{twocollist} + +\membersection{wxTreeCtrl::GetChild}\label{wxtreectrlgetchild} + +\constfunc{long}{GetChild}{\param{const long }{item}} + +Call this function to retrieve the tree view item that is the first child of the item specified by {\it item}. + +\membersection{wxTreeCtrl::GetCount}\label{wxtreectrlgetcount} + +\constfunc{int}{GetCount}{\void} + +Returns the number of items in the control. + +\membersection{wxTreeCtrl::GetEditControl}\label{wxtreectrlgeteditcontrol} + +\constfunc{wxTextCtrl\&}{GetEditControl}{\void} + +Returns the edit control used to edit a label. + +\membersection{wxTreeCtrl::GetFirstVisibleItem}\label{wxtreectrlgetfirstvisibleitem} + +\constfunc{long}{GetFirstVisibleItem}{\void} + +Returns the first visible item. + +\membersection{wxTreeCtrl::GetImageList}\label{wxtreectrlgetimagelist} + +\constfunc{wxImageList*}{GetImageList}{\param{const int }{which = wxIMAGE\_LIST\_NORMAL}} + +Returns the specified image list. {\it which} may be one of: + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{\windowstyle{wxIMAGE\_LIST\_NORMAL}}{The normal (large icon) image list.} +\twocolitem{\windowstyle{wxIMAGE\_LIST\_SMALL}}{The small icon image list.} +\twocolitem{\windowstyle{wxIMAGE\_LIST\_STATE}}{The user-defined state image list (unimplemented).} +\end{twocollist} + +\membersection{wxTreeCtrl::GetIndent}\label{wxtreectrlgetindent} + +\constfunc{int}{GetIndent}{\void} + +Returns the current tree control indentation. + +\membersection{wxTreeCtrl::GetItem}\label{wxtreectrlgetitem} + +\constfunc{bool}{GetItem}{\param{wxTreeItem\& }{info}} + +Gets information about the item. See \helpref{wxTreeCtrl::SetItem}{wxtreectrlsetitem} for more +information. + +\membersection{wxTreeCtrl::GetItemData}\label{wxtreectrlgetitemdata} + +\constfunc{long}{GetItemData}{\param{const long }{item}} + +Returns the client data associated with the item, if any. + +\membersection{wxTreeCtrl::GetItemRect}\label{wxtreectrlgetitemrect} + +\constfunc{bool}{GetItemRect}{\param{const long }{item}, \param{wxRect\& }{rect}, \param{bool }{textOnly = FALSE}} + +Returns the position and size of the rectangle bounding the item. + +\membersection{wxTreeCtrl::GetItemState}\label{wxtreectrlgetitemstate} + +\constfunc{int}{GetItemState}{\param{const long }{item}, \param{const long }{stateMask}} + +Gets the item state. For a list of state flags, see \helpref{wxTreeCtrl::SetItem}{wxtreectrlsetitem}. + +\membersection{wxTreeCtrl::GetItemText}\label{wxtreectrlgetitemtext} + +\constfunc{wxString}{GetItemText}{\param{const long }{item}} + +Returns the item label. + +\membersection{wxTreeCtrl::GetNextItem}\label{wxtreectrlgetnextitem} + +\constfunc{long}{GetNextItem}{\param{const long }{item}, \param{int }{code}} + +Searches for an item using the given criterion, starting from {\it item}. + +Returns the item or 0 if unsuccessful. + +{\it code} can be one of: + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{wxTREE\_NEXT\_CARET}{Retrieves the currently selected item.} +\twocolitem{wxTREE\_NEXT\_CHILD}{Retrieves the first child item. The hItem parameter must be NULL.} +\twocolitem{wxTREE\_NEXT\_DROPHILITE}{Retrieves the item that is the target of a drag-and-drop operation.} +\twocolitem{wxTREE\_NEXT\_FIRSTVISIBLE}{Retrieves the first visible item.} +\twocolitem{wxTREE\_NEXT\_NEXT}{Retrieves the next sibling item.} +\twocolitem{wxTREE\_NEXT\_NEXTVISIBLE}{Retrieves the next visible item that follows the specified item.} +\twocolitem{wxTREE\_NEXT\_PARENT}{Retrieves the parent of the specified item.} +\twocolitem{wxTREE\_NEXT\_PREVIOUS}{Retrieves the previous sibling item.} +\twocolitem{wxTREE\_NEXT\_PREVIOUSVISIBLE}{Retrieves the first visible item that precedes the specified item.} +\twocolitem{wxTREE\_NEXT\_ROOT}{Retrieves the first child item of the root item of which the specified item is a part.} +\end{twocollist} + +\membersection{wxTreeCtrl::GetNextVisibleItem}\label{wxtreectrlgetnextvisibleitem} + +\constfunc{long}{GetNextVisibleItem}{\param{const long }{item}} + +Returns the next visible item. + +\membersection{wxTreeCtrl::GetParent}\label{wxtreectrlgetparent} + +\constfunc{long}{GetParent}{\param{const long }{item}} + +Returns the item's parent. + +\membersection{wxTreeCtrl::GetRootItem}\label{wxtreectrlgetrootitem} + +\constfunc{long}{GetRootItem}{\void} + +Returns the root item for the tree control. + +\membersection{wxTreeCtrl::GetSelection}\label{wxtreectrlgetselection} + +\constfunc{long}{GetSelection}{\void} + +Returns the selection, or 0 if there is no selection. + +\membersection{wxTreeCtrl::HitTest}\label{wxtreectrlhittest} + +\func{long}{HitTest}{\param{const wxPoint\& }{point}, \param{int\& }{flags}} + +Calculates which (if any) item is under the given point, returning extra information +in {\it flags}. {\it flags} is a bitlist of the following: + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{wxTREE\_HITTEST\_ABOVE}{Above the client area.} +\twocolitem{wxTREE\_HITTEST\_BELOW}{Below the client area.} +\twocolitem{wxTREE\_HITTEST\_NOWHERE}{In the client area but below the last item.} +\twocolitem{wxTREE\_HITTEST\_ONITEMBUTTON}{On the button associated with an item.} +\twocolitem{wxTREE\_HITTEST\_ONITEMICON}{On the bitmap associated with an item.} +\twocolitem{wxTREE\_HITTEST\_ONITEMINDENT}{In the indentation associated with an item.} +\twocolitem{wxTREE\_HITTEST\_ONITEMLABEL}{On the label (string) associated with an item.} +\twocolitem{wxTREE\_HITTEST\_ONITEMRIGHT}{In the area to the right of an item.} +\twocolitem{wxTREE\_HITTEST\_ONITEMSTATEICON}{On the state icon for a tree view item that is in a user-defined state.} +\twocolitem{wxTREE\_HITTEST\_TOLEFT}{To the right of the client area.} +\twocolitem{wxTREE\_HITTEST\_TORIGHT}{To the left of the client area.} +\end{twocollist} + +\membersection{wxTreeCtrl::InsertItem}\label{wxtreectrlinsertitem} + +\func{long}{InsertItem}{\param{const long }{parent}, \param{wxTreeItem\& }{info}, \param{const long }{insertAfter = wxTREE\_INSERT\_LAST}} + +Inserts an item. For more information on {\it info}, see \helpref{wxTreeCtrl::SetItem}{wxtreectrlsetitem}. + +\func{long}{InsertItem}{\param{const long }{parent}, \param{const wxString\& }{label}, \param{const int }{image = -1}, \param{const int }{selImage = -1}, \param{const long }{insertAfter = wxTREE\_INSERT\_LAST}} + +Inserts an item. + +If {\it image} > -1 and {\it selImage} is -1, the same image is used for +both selected and unselected items. + +\membersection{wxTreeCtrl::ItemHasChildren}\label{wxtreectrlitemhaschildren} + +\constfunc{bool}{ItemHasChildren}{\param{const long }{item}} + +Returns TRUE if the item has children. + +\membersection{wxTreeCtrl::ScrollTo}\label{wxtreectrlscrollto} + +\func{bool}{ScrollTo}{\param{const long }{item}} + +selects the specified item and scrolls the item into view, + +\membersection{wxTreeCtrl::SelectItem}\label{wxtreectrlselectitem} + +\func{bool}{SelectItem}{\param{const long }{item}} + +Selects the given item. + +\membersection{wxTreeCtrl::SetIndent}\label{wxtreectrlsetindent} + +\func{void}{SetIndent}{\param{int }{indent}} + +Sets the indentation for the tree control. + +\membersection{wxTreeCtrl::SetImageList}\label{wxtreectrlsetimagelist} + +\func{void}{SetImageList}{\param{wxImageList*}{ imageList}, \param{const int }{which = wxIMAGE\_LIST\_NORMAL}} + +Sets the image list. {\it which} should be one of wxIMAGE\_LIST\_NORMAL, wxIMAGE\_LIST\_SMALL and +wxIMAGE\_LIST\_STATE. + +\membersection{wxTreeCtrl::SetItem}\label{wxtreectrlsetitem} + +\func{bool}{SetItem}{\param{wxTreeItem\& }{info}} + +Sets the properties of the item. + +The members of wxTreeItem are as follows: + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{m\_mask}{A bitlist specifying the valid members. See below for mask flags.} +\twocolitem{m\_itemId}{The item identifier.} +\twocolitem{m\_state}{The item state. See below for state flags.} +\twocolitem{m\_stateMask}{A bitlist specifying the valid contents of {\it m\_state}. These flags +are taken from the same set of symbols as {\it m\_state}.} +\twocolitem{m\_text}{The item label.} +\twocolitem{m\_image}{The item image index (an index into the appropriate image list).} +\twocolitem{m\_selectedImage}{The item selected index (an index into the appropriate image list).} +\twocolitem{m\_children}{The number of child items that this item has.} +\twocolitem{m\_data}{The application-defined data associated with this item.} +\end{twocollist} + +Valid mask flags are: + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{wxTREE\_MASK\_HANDLE}{The {\it m\_itemId} member is valid.} +\twocolitem{wxTREE\_MASK\_STATE}{The {\it m\_state} member is valid.} +\twocolitem{wxTREE\_MASK\_TEXT}{The {\it m\_text} member is valid.} +\twocolitem{wxTREE\_MASK\_IMAGE}{The {\it m\_image} member is valid.} +\twocolitem{wxTREE\_MASK\_SELECTED\_IMAGE}{The {\it m\_selectedImage} member is valid.} +\twocolitem{wxTREE\_MASK\_CHILDREN}{The {\it m\_children} member is valid.} +\twocolitem{wxTREE\_MASK\_DATA}{The {\it m\_data} member is valid.} +\end{twocollist} + +Valid state and state mask flags are: + +\twocolwidtha{5cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{wxTREE\_STATE\_BOLD}{The label is emboldened.} +\twocolitem{wxTREE\_STATE\_DROPHILITED}{The item indicates it is a drop target.} +\twocolitem{wxTREE\_STATE\_EXPANDED}{The item is expanded.} +\twocolitem{wxTREE\_STATE\_EXPANDEDONCE}{The item's list of child items has been expanded at least once.} +\twocolitem{wxTREE\_STATE\_FOCUSED}{The item has the focus, so it is surrounded by a standard focus rectangle. +Only one item can have the focus.} +\twocolitem{wxTREE\_STATE\_SELECTED}{The item is selected.} +\twocolitem{wxTREE\_STATE\_CUT}{The item is selected as part of a cut and paste operation.} +\end{twocollist} + +\membersection{wxTreeCtrl::SetItemImage}\label{wxtreectrlsetitemimage} + +\func{bool}{SetItemImage}{\param{const long }{item}, \param{const int }{image}, \param{const int }{selImage}} + +Sets the item image and selected image. These are indices into the assciated image list. + +\membersection{wxTreeCtrl::SetItemState}\label{wxtreectrlsetitemstate} + +\func{bool}{SetItemState}{\param{const long }{item}, \param{const long }{state}, \param{const long }{stateMask}} + +Sets the item state. See \helpref{wxTreeCtrl::SetItem}{wxtreectrlsetitem} for valid state and state mask flags. + +\membersection{wxTreeCtrl::SetItemText}\label{wxtreectrlsetitemtext} + +\func{void}{SetItemText}{\param{const long }{item}, \param{const wxString\& }{text}} + +Sets the item label. + +\membersection{wxTreeCtrl::SetItemData}\label{wxtreectrlsetitemdata} + +\func{bool}{SetItemData}{\param{const long }{item}, \param{long }{data}} + +Sets the item client data. + +\membersection{wxTreeCtrl::SortChildren}\label{wxtreectrlsortchildren} + +\func{bool}{SortChildren}{\param{const long }{item}} + +Sorts the children of the given item in ascending alphabetical order. + diff --git a/docs/latex/wx/treeevt.tex b/docs/latex/wx/treeevt.tex new file mode 100644 index 0000000000..f8cdc48c03 --- /dev/null +++ b/docs/latex/wx/treeevt.tex @@ -0,0 +1,67 @@ +\section{\class{wxTreeEvent}}\label{wxtreeevent} + +A tree event holds information about events associated with wxTreeCtrl objects. + +\wxheading{Derived from} + +\helpref{wxCommandEvent}{wxcommandevent}\\ +\helpref{wxEvent}{wxevent}\\ +\helpref{wxObject}{wxobject} + +\wxheading{Event table macros} + +To process input from a tree control, use these event handler macros to direct input to member +functions that take a wxTreeEvent argument. + +\twocolwidtha{7cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf EVT\_TREE\_BEGIN\_DRAG(id, func)}}{Begin dragging with the left mouse button.} +\twocolitem{{\bf EVT\_TREE\_BEGIN\_RDRAG(id, func)}}{Begin dragging with the right mouse button.} +\twocolitem{{\bf EVT\_TREE\_BEGIN\_LABEL\_EDIT(id, func)}}{Begin editing a label.} +\twocolitem{{\bf EVT\_TREE\_END\_LABEL\_EDIT(id, func)}}{Finish editing a label.} +\twocolitem{{\bf EVT\_TREE\_DELETE\_ITEM(id, func)}}{Delete an item.} +\twocolitem{{\bf EVT\_TREE\_GET\_INFO(id, func)}}{Request information from the application.} +\twocolitem{{\bf EVT\_TREE\_SET\_INFO(id, func)}}{Information is being supplied.} +\twocolitem{{\bf EVT\_TREE\_ITEM\_EXPANDED(id, func)}}{Parent has been expanded.} +\twocolitem{{\bf EVT\_TREE\_ITEM\_EXPANDING(id, func)}}{Parent is being expanded.} +\twocolitem{{\bf EVT\_TREE\_SEL\_CHANGED(id, func)}}{Selection has changed.} +\twocolitem{{\bf EVT\_TREE\_SEL\_CHANGING(id, func)}}{Selection is changing.} +\twocolitem{{\bf EVT\_TREE\_KEY\_DOWN(id, func)}}{A key has been pressed.} +\end{twocollist}% + +\wxheading{See also} + +\helpref{wxTreeCtrl}{wxtreectrl} + +\latexignore{\rtfignore{\wxheading{Members}}} + +\membersection{wxTreeEvent::wxTreeEvent} + +\func{}{wxTreeEvent}{\param{WXTYPE }{commandType = 0}, \param{int }{id = 0}} + +Constructor. + +\membersection{wxTreeEvent::m\_code} + +\member{int}{m\_code} + +Key code if the event is a keypress event. + +\membersection{wxTreeEvent::m\_itemIndex} + +\member{wxTreeItem}{m\_item} + +The item. + +\membersection{wxTreeEvent::m\_oldItem} + +\member{long}{m\_oldItem} + +The old item index. + +\membersection{wxTreeEvent::m\_pointDrag} + +\member{wxPoint}{m\_pointDrag} + +The position of the mouse pointer if the event is a drag event. + diff --git a/docs/latex/wx/tresourc.tex b/docs/latex/wx/tresourc.tex new file mode 100644 index 0000000000..5757aed65d --- /dev/null +++ b/docs/latex/wx/tresourc.tex @@ -0,0 +1,337 @@ +\section{The wxWindows resource system}\label{resourceformats} + +From version 1.61, wxWindows has an optional {\it resource file} facility, +which allows separation of dialog, menu, bitmap and icon specifications +from the application code. + +It is similar in principle to the Windows resource file (whose ASCII form is +suffixed .RC and whose binary form is suffixed .RES). The wxWindows resource +file is currently ASCII-only, suffixed .WXR. Note that under Windows, +the .WXR file does not {\it replace} the native Windows resource file, +it merely supplements it. There is no existing native resource format in X +(except for the defaults file, which has limited expressive power). + +Using wxWindows resources for panels and dialogs has an effect on how +you deal with panel item callbacks: you can't specify a callback function in +a resource file, so how do you achieve the same effect as with programmatic +panel construction? The solution is similar to that adopted by Windows, which +is to use the {\it parent} panel or dialog to intercept user events. + +From 1.61, wxWindows routes panel item events that do not have a callback +to the \helpref{OnCommand}{wxwindowoncommand} member of the panel (or dialog). So, to use +panel or dialog resources, you need to derive a new class and override the +default (empty) OnCommand member. The first argument is a reference +to a wxWindow, and the second is a reference to a wxCommandEvent. Check the +name of the panel item that's generating an event by using the \helpref{wxWindow::GetName}{wxwindowgetname}\rtfsp +function and a string comparison function such as \helpref{wxStringEq}{wxstringeq}. +You may need to cast the reference to an appropriate specific type to perform +some operations. + +To obtain a pointer to a panel item when you only have the name (for example, +when you need to set a value of a text item from outside of the {\bf OnCommand} function), +use the function \helpref{wxFindWindowByName}{wxfindwindowbyname}. + +For details of functions for manipulating resource files and loading +user interface elements, see \helpref{wxWindows resource functions}{resourcefuncs}. + +\subsection{The format of a .WXR file} + +A wxWindows resource file may look a little odd at first. It's C++ +compatible, comprising mostly of static string variable declarations with +PrologIO syntax within the string. + +Here's a sample .WXR file: + +\begin{verbatim} +/* + * wxWindows Resource File + * Written by wxBuilder + * + */ + +#include "noname.ids" + +static char *aiai_resource = "bitmap(name = 'aiai_resource',\ + bitmap = ['aiai', wxBITMAP_TYPE_BMP_RESOURCE, 'WINDOWS'],\ + bitmap = ['aiai.xpm', wxBITMAP_TYPE_XPM, 'X'])."; + +static char *menuBar11 = "menu(name = 'menuBar11',\ + menu = \ + [\ + ['&File', 1, '', \ + ['&Open File', 2, 'Open a file'],\ + ['&Save File', 3, 'Save a file'],\ + [],\ + ['E&xit', 4, 'Exit program']\ + ],\ + ['&Help', 5, '', \ + ['&About', 6, 'About this program']\ + ]\ + ])."; + +static char *project_resource = "icon(name = 'project_resource',\ + icon = ['project', wxBITMAP_TYPE_ICO_RESOURCE, 'WINDOWS'],\ + icon = ['project_data', wxBITMAP_TYPE_XBM, 'X'])."; + +static char *panel3 = "dialog(name = 'panel3',\ + style = '',\ + title = 'untitled',\ + button_font = [14, 'wxSWISS', 'wxNORMAL', 'wxBOLD', 0],\ + label_font = [10, 'wxSWISS', 'wxNORMAL', 'wxNORMAL', 0],\ + x = 0, y = 37, width = 292, height = 164,\ + control = [wxButton, 'OK', '', 'button5', 23, 34, -1, -1, 'aiai_resource'],\ + control = [wxMessage, 'A Label', '', 'message7', 166, 61, -1, -1, 'aiai_resource'],\ + control = [wxText, 'Text', 'wxVERTICAL_LABEL', 'text8', 24, 110, -1, -1])."; +\end{verbatim} + +As you can see, C++-style comments are allowed, and apparently include files +are supported too: but this is a special case, where the included file +is a file of defines shared by the C++ application code and resource file +to relate identifiers (such as FILE\_OPEN) to integers. + +Each {\it resource object} is of standard PrologIO syntax, that is, +an object name such as {\bf dialog} or {\bf icon}, then an open +parenthesis, a list of comma-delimited attribute/value pairs, a closing +parenthesis, and a full stop. Backslashes are required to escape newlines, +for the benefit of C++ syntax. If double quotation marks are used to +delimit strings, they need to be escaped with backslash within a C++ string +(so it's easier to use single quotation marks instead). + +\normalbox{{\it A note on PrologIO string syntax:} A string that begins with +an alphabetic character, and contains only alphanumeric characters, +hyphens and underscores, need not be quoted at all. Single quotes and double +quotes may be used to delimit more complex strings. In fact, single-quoted +and no-quoted strings are actually called {\it words}, but are treated +as strings for the purpose of the resource system.} + +A resource file like this is typically included in the application main file, +as if it were a normal C++ file. This eliminates the need for a separate +resource file to be distributed alongside the executable. However, the +resource file can be dynamically loaded if desired (for example by a non-C++ +language such as CLIPS, Prolog or Python). + +Once included, the resources need to be `parsed' (interpreted), because +so far the data is just a number of static string variables. The function\rtfsp +{\bf ::wxResourceParseData} is called early on in initialization of the application +(usually in {\bf wxApp::OnInit}) with a variable as argument. This may need to be +called a number of times, one for each variable. However, more than one +resource `object' can be stored in one string variable at a time, so you can +get all your resources into one variable if you want to. + +{\bf ::wxResourceParseData} parses the contents of the resource, ready for use +by functions such as {\bf ::wxResourceCreateBitmap} and {\bf wxPanel::LoadFromResource}. + +If a wxWindows resource object (such as a bitmap resource) refers to a +C++ data structure, such as static XBM or XPM data, a further call ({\bf +::wxResourceRegisterBitmapData}) needs to be made on initialization to tell +wxWindows about this data. The wxWindows resource object will refer to a +string identifier, such as `project\_data' in the example file above. +This identifier will be looked up in a table to get the C++ static data +to use for the bitmap or icon. + +In the C++ fragment below, the WXR resource file is included, +and appropriate resource initialization is carried out in {\bf OnInit}. +Note that at this stage, no actual wxWindows dialogs, menus, bitmaps or +icons are created; their `templates' are merely being set up for later +use. + +\begin{verbatim} +/* + * File: noname.cc + * Purpose: main application module, generated by wxBuilder. + */ + +#include "wx.h" +#include "wx_help.h" +#include "noname.h" + +// Includes the dialog, menu etc. resources +#include "noname.wxr" + +// Includes XBM data +#include "project.xbm" + +// Declare an instance of the application: allows the program to start +AppClass theApp; + +// Called to initialize the program +wxFrame *AppClass::OnInit(void) +{ +#ifdef wx_x + wxResourceRegisterBitmapData("project_data", project_bits, project_width, project_height); +#endif + wxResourceParseData(menuBar11); + wxResourceParseData(aiai_resource); + wxResourceParseData(project_resource); + wxResourceParseData(panel3); + ... +} +\end{verbatim} + + +\subsection{Dialog resource format} + +A dialog resource object may be used for either panels or dialog boxes, and +consists of the following attributes. In the following, a {\it font specification}\rtfsp +is a list consisting of point size, family, style, weight, underlined, optional facename. + +\begin{twocollist}\itemsep=0pt +\twocolitemruled{Attribute}{Value} +\twocolitem{name}{The name of the resource.} +\twocolitem{style}{Optional dialog box or panel window style.} +\twocolitem{title}{The title of the dialog box (unused if a panel).}. +\twocolitem{modal}{Whether modal: 1 if modal, 0 if modeless, absent if a panel resource.} +\twocolitem{button\_font}{The font used for control buttons: a list comprising point size (integer), +family (string), font style (string), font weight (string) and underlining (0 or 1).} +\twocolitem{label\_font}{The font used for control labels: a list comprising point size (integer), +family (string), font style (string), font weight (string) and underlining (0 or 1).} +\twocolitem{x}{The x position of the dialog or panel.} +\twocolitem{y}{The y position of the dialog or panel.} +\twocolitem{width}{The width of the dialog or panel.} +\twocolitem{height}{The height of the dialog or panel.} +\twocolitem{background\_colour}{The background colour of the dialog or panel. Only valid if the style includes wxUSER\_COLOURS.} +\twocolitem{label\_colour}{The default label colour for the children of the dialog or panel. Only valid if the style includes wxUSER\_COLOURS.} +\twocolitem{button\_colour}{The default button text colour for the children of the dialog or panel. Only valid if the style includes wxUSER\_COLOURS.} +\twocolitem{label\_font}{Font spec} +\twocolitem{button\_font}{Font spec} +\end{twocollist} + +Then comes zero or more attributes named `control' for each control +(panel item) on the dialog or panel. The value is a list of further +elements. In the table below, the names in the first column correspond to +the first element of the value list, and the second column details the +remaining elements of the list. + +\begin{twocollist}\itemsep=0pt +\twocolitemruled{Control}{Values} +\twocolitem{wxButton}{title (string), window style (string), name (string), x, y, width, height, button bitmap resource (optional string), button font spec} +\twocolitem{wxCheckBox}{title (string), window style (string), name (string), x, y, width, height, default value (optional integer, 1 or 0), label font spec} +\twocolitem{wxChoice}{title (string), window style (string), name (string), x, y, width, height, values (optional list of strings), label font spec, button font spec} +\twocolitem{wxComboBox}{title (string), window style (string), name (string), x, y, width, height, default text value, values (optional list of strings), label font spec, button font spec} +\twocolitem{wxGauge}{title (string), window style (string), name (string), x, y, width, height, value (optional integer), range (optional integer), label font spec, button font spec} +\twocolitem{wxGroupBox}{title (string), window style (string), name (string), x, y, width, height, label font spec} +\twocolitem{wxListBox}{title (string), window style (string), name (string), x, y, width, height, values (optional list of strings), multiple (optional string, wxSINGLE or wxMULTIPLE), +label font spec, button font spec} +\twocolitem{wxMessage}{title (string), window style (string), name (string), x, y, width, height, message bitmap resource (optional string), label font spec} +\twocolitem{wxMultiText}{title (string), window style (string), name (string), x, y, width, height, default value (optional string), +label font spec, button font spec} +\twocolitem{wxRadioBox}{title (string), window style (string), name (string), x, y, width, height, values (optional list of strings), number of rows or cols, +label font spec, button font spec} +\twocolitem{wxRadioButton}{title (string), window style (string), name (string), x, y, width, height, default value (optional integer, 1 or 0), label font spec} +\twocolitem{wxScrollBar}{title (string), window style (string), name (string), x, y, width, height, value (optional integer), +page length (optional integer), object length (optional integer), view length (optional integer)} +\twocolitem{wxSlider}{title (string), window style (string), name (string), x, y, width, height, value (optional integer), minimum (optional integer), maximum (optional integer), +label font spec, button font spec} +\twocolitem{wxText}{title (string), window style (string), name (string), x, y, width, height, default value (optional string), +label font spec, button font spec} +\end{twocollist} + +\subsection{Menubar resource format} + +A menubar resource object consists of the following attributes. + +\begin{twocollist}\itemsep=0pt +\twocolitemruled{Attribute}{Value} +\twocolitem{name}{The name of the menubar resource.} +\twocolitem{menu}{A list containing all the menus, as detailed below.} +\end{twocollist} + +The value of the {\bf menu} attribute is a list of menu item specifications, where each menu +item specification is itself a list comprising: + +\begin{itemize}\itemsep=0pt +\item title (a string) +\item menu item identifier (a string or non-zero integer, see below) +\item help string (optional) +\item 0 or 1 for the `checkable' parameter (optional) +\item optionally, further menu item specifications if this item is a pulldown menu. +\end{itemize} + +If the menu item specification is the empty list ([]), this is interpreted as a menu separator. + +If further (optional) information is associated with each menu item in a future release of wxWindows, +it will be placed after the help string and before the optional pulldown menu specifications. + +Note that the menu item identifier must be an integer if the resource is being +included as C++ code and then parsed on initialisation. Unfortunately,\rtfsp +\verb$#$define substitution is not performed inside strings, and +therefore the program cannot know the mapping. However, if the .WXR file +is being loaded dynamically, wxWindows will attempt to replace string +identifiers with \verb$#$defined integers, because it is able to parse +the included \verb$#$defines. + +\subsection{Bitmap resource format} + +A bitmap resource object consists of a name attribute, and one or more {\bf bitmap} attributes. +There can be more than one of these to allow specification of bitmaps that are optimum for the +platform and display. + +\begin{itemize}\itemsep=0pt +\item Bitmap name or filename. +\item Type of bitmap; for example, wxBITMAP\_TYPE\_BMP\_RESOURCE. See class reference under {\bf wxBitmap} for +a full list). +\item Platform this bitmap is valid for; one of WINDOWS, X, MAC and ANY. +\item Number of colours (optional). +\item X resolution (optional). +\item Y resolution (optional). +\end{itemize} + +\subsection{Icon resource format} + +An icon resource object consists of a name attribute, and one or more {\bf icon} attributes. +There can be more than one of these to allow specification of icons that are optimum for the +platform and display. + +\begin{itemize}\itemsep=0pt +\item Icon name or filename. +\item Type of icon; for example, wxBITMAP\_TYPE\_ICO\_RESOURCE. See class reference under {\bf wxBitmap} for +a full list). +\item Platform this bitmap is valid for; one of WINDOWS, X, MAC and ANY. +\item Number of colours (optional). +\item X resolution (optional). +\item Y resolution (optional). +\end{itemize} + + +\subsection{Resource format design issues} + +The .WXR file format is a recent addition and subject to change. +The use of an ASCII resource file format may seem rather inefficient, but this +choice has a number of advantages: + +\begin{itemize}\itemsep=0pt +\item Since it is C++ compatible, it can be included into an application's source code, +eliminating the problems associated with distributing a separate resource file +with the executable. However, it can also be loaded dynamically from a file, which will be required +for non-C++ programs that use wxWindows. +\item No extra binary file format and separate converter need be maintained for the wxWindows project +(although others are welcome to add the equivalent of the Windows `rc' resource +parser and a binary format). +\item It would be difficult to append a binary resource component onto an executable +in a portable way. +\item The file format is essentially the PrologIO object format, for which +a parser already exists, so parsing is easy. For those programs that use PrologIO +anyway, the size overhead of the parser is minimal. +\end{itemize} + +The disadvantages of the approach include: + +\begin{itemize}\itemsep=0pt +\item Parsing adds a small execution overhead to program initialization. +\item Under 16-bit Windows especially, global data is at a premium. +Using a .RC resource table for some wxWindows resource data may be a partial solution, +although .RC strings are limited to 255 characters. +\item Without a resource preprocessor, it is not possible to substitute integers +for identifiers (so menu identifiers have to be written as integers in the resource +object, in addition to providing \verb$#$defines for application code convenience). +\end{itemize} + +\subsection{Compiling the resource system} + +To enable the resource system, set {\bf USE\_WX\_RESOURCES} to 1 in wx\_setup.h. +If your wxWindows makefile supports it, set the same name in the makefile to 1. + +You will also need to compile the PrologIO utility (not always the easiest +task): you will need YACC, and LEX (or FLEX). DOS versions of these are +available on the AIAI ftp site under /pub/wxwin/tools. + diff --git a/docs/latex/wx/truntime.tex b/docs/latex/wx/truntime.tex new file mode 100644 index 0000000000..2d1da9c021 --- /dev/null +++ b/docs/latex/wx/truntime.tex @@ -0,0 +1,93 @@ +\section{Run time class information overview}\label{runtimeclassoverview} + +Classes: \helpref{wxObject}{wxobject}, \helpref{wxClassInfo}{wxclassinfo}. + +One of the failings of C++ is that no run-time information is provided +about a class and its position in the inheritance hierarchy. +Another is that instances of a class cannot be created just by knowing the name of a class, +which makes facilities such as persistent storage hard to implement. + +Most C++ GUI frameworks overcome these limitations by means of a set of +macros and functions and wxWindows (from version 1.62) is no exception. +Each class that you wish to be known the type system should have +a macro such as DECLARE\_DYNAMIC\_CLASS just inside the class declaration. +The macro IMPLEMENT\_DYNAMIC\_CLASS should be in the implementation file. + +Variations on these \helpref{macros}{macros} are used for multiple inheritance, and abstract +classes that cannot be instantiated dynamically or otherwise. + +DECLARE\_DYNAMIC\_CLASS inserts a static wxClassInfo declaration into the +class, initialized by IMPLEMENT\_DYNAMIC\_CLASS. When initialized, the +wxClassInfo object inserts itself into a linked list (accessed through +wxClassInfo::first and wxClassInfo::next pointers). The linked list +is fully created by the time all global initialisation is done. + +IMPLEMENT\_DYNAMIC\_CLASS is a macro that not only initialises the static +wxClassInfo member, but defines a global function capable of creating a +dynamic object of the class in question. A pointer to this function is +stored in wxClassInfo, and is used when an object should be created +dynamically. + +wxObject::IsKindOf uses the linked list of wxClassInfo. It takes +a wxClassInfo argument, so use CLASSINFO(className) to return an +appropriate wxClassInfo pointer to use in this function. + +The function \helpref{wxCreateDynamicObject}{wxcreatedynamicobject} can be used +to construct a new object of a given type, by supplying a string name. +If you have a pointer to the wxClassInfo object instead, then you +can simply call wxClassInfo::CreateObject. + +\subsection{wxClassInfo}\label{wxclassinfooverview} + +\overview{Run time class information overview}{runtimeclassoverview} + +Class: \helpref{wxClassInfo}{wxclassinfo} + +This class stores meta-information about classes. An application +may use macros such as DECLARE\_DYNAMIC\_CLASS and IMPLEMENT\_DYNAMIC\_CLASS +to record run-time information about a class, including: + +\begin{itemize}\itemsep=0pt +\item its position in the inheritance hierarchy; +\item the base class name(s) (up to two base classes are permitted); +\item a string representation of the class name; +\item a function that can be called to construct an instance of this class. +\end{itemize} + +The DECLARE\_... macros declare a static wxClassInfo variable in a class, which is initialized +by macros of the form IMPLEMENT\_... in the implementation C++ file. Classes whose instances may be +constructed dynamically are given a global constructor function which returns a new object. + +You can get the wxClassInfo for a class by using the CLASSINFO macro, e.g. CLASSINFO(wxFrame). +You can get the wxClassInfo for an object using wxObject::GetClassInfo. + +See also \helpref{wxObject}{wxobject} and \helpref{wxCreateDynamicObject}{wxcreatedynamicobject}. + +\subsection{Example} + +In a header file wx\_frame.h: + +\begin{verbatim} +class wxFrame: public wxWindow +{ + DECLARE_DYNAMIC_CLASS(wxFrame) + + private: + char *frameTitle; + public: + ... +}; +\end{verbatim} + +In a C++ file wx\_frame.cc: + +\begin{verbatim} +IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow) + +wxFrame::wxFrame(void) +{ +... +} +\end{verbatim} + + diff --git a/docs/latex/wx/tscroll.tex b/docs/latex/wx/tscroll.tex new file mode 100644 index 0000000000..40986ab426 --- /dev/null +++ b/docs/latex/wx/tscroll.tex @@ -0,0 +1,90 @@ +\section{Scrolling overview}\label{scrollingoverview} + +Classes: \helpref{wxWindow}{wxwindow}, \helpref{wxScrolledWindow}{wxscrolledwindow}, \helpref{wxIcon}{wxicon}, \helpref{wxScrollBar}{wxscrollbar}. + +Scrollbars come in various guises in wxWindows. All windows have the potential +to show a vertical scrollbar and/or a horizontal scrollbar: it's a basic capability of a window. +However, in practice, not all windows do make use of scrollbars, such as a single-line wxTextCtrl. + +Because any class derived from \helpref{wxWindow}{wxwindow} may have scrollbars, +there are functions to manipulate the scrollbars and event handlers to intercept +scroll events. But just because a window generates a scroll event, doesn't mean +that the window necessarily handles it and physically scrolls the window. The base class +wxWindow in fact doesn't have any default functionality to handle scroll events. +If you created a wxWindow object with scrollbars, and then clicked on the scrollbars, nothing +at all would happen. This is deliberate, because the {\it interpretation} of scroll +events varies from one window class to another. + +\helpref{wxScrolledWindow}{wxscrolledwindow} (formerly wxCanvas) is an example of a window that +adds functionality to make scrolling really work. It assumes that scrolling happens in +consistent units, not different-sized jumps, and that page size is represented +by the visible portion of the window. It's suited to drawing applications, but perhaps +not so suitable for a sophisticated editor in which the amount scrolled may vary according +to the size of text on a given line. For this, you would derive from wxWindow and +implement scrolling yourself. \helpref{wxGrid}{wxgrid} is an example of a class +that implements its own scrolling, largely because columns and rows can vary in size. + +\wxheading{The scrollbar model} + +The function \helpref{wxWindow::SetScrollbar}{wxwindowsetscrollbar} gives a clue about +the way a scrollbar is modelled. This function takes the following arguments: + +\twocolwidtha{5cm}% +\begin{twocollist} +\twocolitem{orientation}{Which scrollbar: wxVERTICAL or wxHORIZONTAL.} +\twocolitem{position}{The position of the scrollbar in scroll units.} +\twocolitem{visible}{The size of the visible portion of the scrollbar, in scroll units.} +\twocolitem{range}{The maximum position of the scrollbar.} +\twocolitem{refresh}{Whether the scrollbar should be repainted.} +\end{twocollist}% + +{\it orientation} determines whether we're talking about +the built-in horizontal or vertical scrollbar. + +{\it position} is simply the position of the `thumb' (the bit you drag to scroll around). +It's given in scroll units, and so is relative to the total range of the scrollbar. + +{\it visible} gives the number of scroll units that represents the portion of the +window currently visible. Normally, a scrollbar is capable of indicating this visually +by showing a different length of thumb. + +{\it range} is the maximum value of the scrollbar, where zero is the start +position. You choose the units that suit you, +so if you wanted to display text that has 100 lines, you would set this to 100. +Note that this doesn't have to correspond to the number of pixels scrolled - it's +up to you how you actually show the contents of the window. + +{\it refresh} just indicates whether the scrollbar should be repainted immediately or not. + +\wxheading{An example} + +Let's say you wish to display 50 lines of text, using the same font. +The window is sized so that you can only see 16 lines at a time. + +You would use: + +{\small% +\begin{verbatim} + SetScrollbar(wxVERTICAL, 0, 16, 50); +\end{verbatim} +} + +Note that with the window at this size, the thumb position can never go +above 50 minus 16, or 34. + +You can determine how many lines are currently visible by dividing the current view +size by the character height in pixels. + +When defining your own scrollbar behaviour, you will always need to recalculate +the scrollbar settings when the window size changes. You could therefore put your +scrollbar calculations and SetScrollbar +call into a function named AdjustScrollbars, which can be called initially and also +from your \helpref{wxWindow::OnSize}{wxwindowonsize} event handler function. + +%\normalbox{{\bf For Windows programmers:} note that scrollbar range in wxWindows has a different meaning +%from that in Windows. In native Windows scrollbar calls, range is the number of positions that the scrollbar +%can physically scroll through - in our example above, it would be 34. But it's easier +%to think in terms of the number of units that the whole scrollbar represents - the virtual +%window size - which is why wxWindows does it differently.} + + diff --git a/docs/latex/wx/tsplittr.tex b/docs/latex/wx/tsplittr.tex new file mode 100644 index 0000000000..ac4a35b945 --- /dev/null +++ b/docs/latex/wx/tsplittr.tex @@ -0,0 +1,65 @@ +\section{wxSplitterWindow overview}\label{wxsplitterwindowoverview} + +Classes: \helpref{wxSplitterWindow}{wxsplitterwindow} + +The following screenshot shows the appearance of a splitter window with a vertical split. + +$$\image{8cm;0cm}{splitter.eps}$$ + +The style wxSP\_3D has been used to show a 3D border and 3D sash. + +\subsection{Example} + +The following fragment shows how to create a splitter window, creating two +subwindows and hiding one of them. + +{\small +\begin{verbatim} + splitter = new wxSplitterWindow(this, 0, 0, 400, 400, wxSP_3D); + + leftCanvas = new MyCanvas(splitter); + leftCanvas->SetBackground(wxRED_BRUSH); + leftCanvas->SetScrollbars(20, 20, 50, 50, 4, 4); + + rightCanvas = new MyCanvas(splitter); + rightCanvas->SetBackground(wxCYAN_BRUSH); + rightCanvas->SetScrollbars(20, 20, 50, 50, 4, 4); + rightCanvas->Show(FALSE); + + splitter->Initialize(leftCanvas); + + // Set this to prevent unsplitting +// splitter->SetMinimumPaneSize(20); +\end{verbatim} +} + +The next fragment shows how the splitter window can be manipulated after creation. + +{\small +\begin{verbatim} + void MyFrame::OnSplitVertical(wxCommandEvent& event) + { + if ( splitter->IsSplit() ) + splitter->Unsplit(); + leftCanvas->Show(TRUE); + rightCanvas->Show(TRUE); + splitter->SplitVertically( leftCanvas, rightCanvas ); + } + + void MyFrame::OnSplitHorizontal(wxCommandEvent& event) + { + if ( splitter->IsSplit() ) + splitter->Unsplit(); + leftCanvas->Show(TRUE); + rightCanvas->Show(TRUE); + splitter->SplitHorizontally( leftCanvas, rightCanvas ); + } + + void MyFrame::OnUnsplit(wxCommandEvent& event) + { + if ( splitter->IsSplit() ) + splitter->Unsplit(); + } +\end{verbatim} +} + diff --git a/docs/latex/wx/tstring.tex b/docs/latex/wx/tstring.tex new file mode 100644 index 0000000000..b9afab0b9f --- /dev/null +++ b/docs/latex/wx/tstring.tex @@ -0,0 +1,1079 @@ +\section{wxString overview}\label{wxstringoverview} + +Class: \helpref{wxString}{wxstring} + +Strings are used very frequently in most programs. There is no direct support in +the C++ language for strings. A string class can be useful in many +situations: it not only makes the code shorter and easier to read, it also +provides more security, because we don't have to deal with pointer acrobatics. + +wxString is available in two versions: a cut-down wxWindows, +copyright-free version, and a much more powerful GNU-derived version. The default is the +GNU-derived, fully-featured version, ported and revised by Stefan Hammes. + +For backward compatibility most of the member functions of the original +wxWindows wxString class have been included, except some `dangerous' +functions. + +wxString can be compiled under MSW, UNIX and VMS (see below). The +function names have been capitalized to be consistent with the wxWindows +naming scheme. + +The reasons for not using the GNU string class directly are: + +\begin{itemize}\itemsep=0pt +\item It is not available on all systems (generally speaking, it is available only on some +UNIX systems). +\item We can make changes and extensions to the string class as needed and are not +forced to use `only' the functionality of the GNU string class. +\end{itemize} + +The GNU code comes with certain copyright restrictions. If you can't +live with these, you will need to use the cut-down wxString class +instead, by editing wx\_setup.h and appropriate wxWindows makefiles. + +\subsection{Copyright of the original GNU code portion} + +Copyright (C) 1988, 1991, 1992 Free Software Foundation, Inc. +written by Doug Lea (dl@rocky.oswego.edu) + +This file is part of the GNU C++ Library. This library is free +software; you can redistribute it and/or modify it under the terms of +the GNU Library General Public License as published by the Free +Software Foundation; either version 2 of the License, or (at your +option) any later version. This library is distributed in the hope +that it will be useful, but WITHOUT ANY WARRANTY; without even the +implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. See the GNU Library General Public License for more details. +You should have received a copy of the GNU Library General Public +License along with this library; if not, write to the Free Software +Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + +\subsection{Features/Additions/Modifications} + +The wxString class offers many string handling functions and a support for +regular expressions. This gives powerful, easy-to-use pattern-matching functionality. +See below for a discussion of the GNU features of wxString. See also +the header file `wxstrgnu.h' which shows all member functions. + +As stated above, there are extensions to the wxString class. +This includes the including of the `old' wxString class member functions. +Below is a list of the additional member functions: + +\begin{itemize}\itemsep=0pt +\item Access to the internal representation. Should be used with care: +\begin{verbatim} + char* GetData() const; +\end{verbatim} +\item To make a copy of 'this' (only for compatibility): +\begin{verbatim} + wxString Copy() const; +\end{verbatim} +\item For case sensitive and case insensitive comparisons: +\begin{verbatim} + enum caseCompare {exact, ignoreCase}; + int CompareTo(const char* cs, caseCompare cmp = exact) const; + int CompareTo(const wxString& st, caseCompare cmp = exact) const; +\end{verbatim} + +\item For case sensitive and case insensitive containment check: +\begin{verbatim} + Bool Contains(const char* pat, caseCompare cmp = exact) const; + Bool Contains(const wxString& pat, caseCompare cmp = exact) const; +\end{verbatim} + +\item For case sensitive and case insensitive index calculation: +\begin{verbatim} + int Index(const char* pat, int i=0, caseCompare cmp = exact) const; + int Index(const wxString& s, int i=0, caseCompare cmp = exact) const; +\end{verbatim} + +\item For element access in addition to the [] operator: +\begin{verbatim} + char& operator()(int); // Indexing with bounds checking +\end{verbatim} + +\item To put something in front of a string: +\begin{verbatim} + wxString& Prepend(const char*); // Prepend a character string + wxString& Prepend(const wxString& s); + wxString& Prepend(char c, int rep=1); // Prepend c rep times +\end{verbatim} + +\item For concatenation: +\begin{verbatim} + wxString& Append(const char* cs); + wxString& Append(const wxString& s); + wxString& Append(char c, int rep=1); // Append c rep times +\end{verbatim} + +\item To get the first and last occurrence of a char or string: +\begin{verbatim} + int First(char c) const; + int First(const char* cs) const; + int First(const wxString& cs) const; + int Last(char c) const; + int Last(const char* cs) const; + int Last(const wxString& cs) const; +\end{verbatim} + +\item To insert something into a string +\begin{verbatim} + wxString& Insert(int pos, const char*); + wxString& Insert(int pos, const wxString&); +\end{verbatim} + +\item To remove data (in addition to the 'Del' functions): +\begin{verbatim} + wxString& Remove(int pos); // Remove pos to end of string + wxString& Remove(int pos, int n); // Remove n chars starting at pos + wxString& RemoveLast(void); // It removes the last char of a string +\end{verbatim} + +\item To replace data: +\begin{verbatim} + wxString& Replace(int pos, int n, const char*); + wxString& Replace(int pos, int n, const wxString&); +\end{verbatim} + +\item Alternative names for compatibility: +\begin{verbatim} + void LowerCase(); // Change self to lower-case + void UpperCase(); // Change self to upper-case +\end{verbatim} + +\item Edward Zimmermann's additions: +\begin{verbatim} + wxString SubString(int from, int to); +\end{verbatim} + +\item Formatted assignment: +\begin{verbatim} + void sprintf(const char *fmt, ...); +\end{verbatim} + +We do not use the 'sprintf' constructor of the old wxString class anymore, +because with that constructor, every initialisation with a string would +go through sprintf and this is not desirable, because sprintf interprets +some characters. With the above function we can write: + +\begin{verbatim} + wxString msg; msg.sprintf("Processing item %d\n",count); +\end{verbatim} + +\item Strip chars at the front and/or end. +This can be useful for trimming strings: +\begin{verbatim} + enum StripType {leading = 0x1, trailing = 0x2, both = 0x3}; + wxSubString Strip(StripType s=trailing, char c=' '); +\end{verbatim} + +\item Line input: +Besides the stream I/O functions this function can be used for non-standard +formatted I/O with arbitrary line terminators. +\begin{verbatim} + friend int Readline(FILE *f, wxString& x, + char terminator = '\\n', + int discard_terminator = 1); +\end{verbatim} + +\item The GNU wxString class lacks some classification functions: +\begin{verbatim} + int IsAscii() const; + int IsWord() const; + int IsNumber() const; + int IsNull() const; + int IsDefined() const; +\end{verbatim} + +\item The meaning of nil has been changed. A wxString x is only nil, if it +has been declared `wxString x'. In all other cases it is NOT nil. This +seems to me more logical than to let a `wxString x=""' be nil as it +was in the original GNU code. + +\item {\bf IMPORTANT:} +the following is a very, very, very ugly macro, but it makes things more +transparent in cases, where a library function requires a +(char*) argument. This is especially the case in wxWindows, +where most char-arguments are (char*) and not (const char*). +this macro should only be used in such cases and NOT to +modify the internal data. The standard type conversion function +of wxString returns a '(const char*)'. +The conventional way would be 'function((char*)string.Chars())'. +With the macro this can be achieved by 'function(wxCHARARG(string))'. +Whis makes it clearer that the usage should be confined +to arguments. See below for examples. + +\begin{verbatim} +#define wxCHARARG(s) ((char*)(s).Chars()) +\end{verbatim} + +\end{itemize} + +\subsection{Function calls} + +When using wxString objects as parameters to other functions you should +note the following: + +\begin{verbatim} +void f1(const char *s){} +void f2(char *s){} + +main(){ + wxString aString; + f1(aString); // ok + f2(aString); // error + f2(wxCHARARG(aString)); // ok + printf("%s",aString); // NO compilation error, but a runtime error. + printf("%s",aString.Chars()); // ok + printf("%s",wxCHARARG(aString)); // ok +} +\end{verbatim} + +\subsection{Header files} + +For DOS and UNIX we use a stub-headerfile {\tt include/base/wxstring.h}\rtfsp +which includes the two headerfiles in the {\tt contrib/wxstring} directory, +namely {\tt contrib/wxstring/wxstrgnu.h} and {\tt contrib/wxstring/wxregex.h}. +If there is a headerfile {\tt contrib/wxstring/wxstring.h}, please +delete it. It will cause problems in the VMS compilation. + +For VMS we have to do an addition due to the not very intelligent inclusion mechanism +of the VMS C++ compiler: +In the VMS-Makefile, the include-file search path is augmented with the +{\tt contrib/wxstring} directory, so that the correct headerfiles +can be included. + +So you have only to specify + +\begin{verbatim} +#define USE_GNU_WXSTRING 1 +\end{verbatim} + +in {\tt include/base/wx\_setup.h} to use the wxString class. + +\subsection{Test program} + +Stefan Hammes has included a test program {\tt test.cc} in the contrib/wxstring directory for many features +of wxString and wxRegex. It also tests Stefan's extensions. +When running the compiled program, there should +be NO assert-errors if everything is OK. When compiling the test +program, you can ignore warnings about unused variables. They +occur because Stefan has used a special method of initializing all +variables to the same start values before each test. + +\subsection{Compilers} + +wxString and wxRegex have been compiled successfully with the following +compilers (it should work on nearly every C++ compiler): + +\begin{itemize}\itemsep=0pt +\item PC MS-Visual C++ 1.0, 1.5 +\item UNIX gcc v2.6.3 +\item UNIX Sun SunPro compiler under Solaris 2.x +\item VMS DEC C++ compiler (on VAX and AXP) +\end{itemize} + +Warnings about type conversion or assignments can be ignored. + +\subsection{GNU Documentation} + +Below is the original GNU wxString and wxRegex +documentation. It describes most functions of the classes. +The function names have been capitalized to be consistent with +the wxWindows naming scheme. The examples are integrated into the test program. + +Copyright (C) 1988, 1991, 1992 Free Software Foundation, Inc. + +Permission is granted to make and distribute verbatim copies of this +manual provided the copyright notice and this permission notice are +preserved on all copies. + +Permission is granted to copy and distribute modified versions of +this manual under the conditions for verbatim copying, provided also +that the section entitled "GNU Library General Public License" is +included exactly as in the original, and provided that the entire +resulting derived work is distributed under the terms of a permission +notice identical to this one. + +Permission is granted to copy and distribute translations of this +manual into another language, under the above conditions for modified +versions, except that the section entitled "GNU Library General Public +License" and this permission notice may be included in translations +approved by the Free Software Foundation instead of in the original +English. + +\subsubsection{The wxString class} + +The `wxString' class is designed to extend GNU C++ to support string +processing capabilities similar to those in languages like Awk. The +class provides facilities that ought to be convenient and efficient +enough to be useful replacements for `char*' based processing via the C +string library (i.e., `strcpy, strcmp,' etc.) in many applications. +Many details about wxString representations are described in the +Representation section. + +A separate `wxSubString' class supports substring extraction and +modification operations. This is implemented in a way that user +programs never directly construct or represent substrings, which are +only used indirectly via wxString operations. + +Another separate class, `wxRegex' is also used indirectly via wxString +operations in support of regular expression searching, matching, and the +like. The wxRegex class is based entirely on the GNU Emacs regex +functions. See \helpref{Regular Expressions}{regularexpressions} +for a full explanation of regular expression syntax. (For +implementation details, see the internal documentation in files +{\tt wxregex.h} and {\tt wxregex.cc}). + +\subsubsection{Constructor examples} + +Strings are initialized and assigned as in the following examples: + +{\tt wxString x;} +Set x to the nil string. This is different from the original GNU code +which sets a strings also to nil when it is assign 0 or "". + +{\tt wxString x = "Hello"; wxString y("Hello");} +Set x and y to a copy of the string "Hello". + +{\tt wxString x = 'A'; wxString y('A');} +Set x and y to the string value "A". + +{\tt wxString u = x; wxString v(x);} +Set u and v to the same string as wxString x + +{\tt wxString u = x.At(1,4); wxString v(x.At(1,4));} +Set u and v to the length 4 substring of x starting at position 1 +(counting indexes from 0). + +{\tt wxString x("abc", 2);} +Sets x to "ab", i.e., the first 2 characters of "abc". + +There are no directly accessible forms for declaring wxSubString +variables. + +The declaration \verb$wxRegex r("[a-zA-Z_][a-zA-Z0-9_]*");$ creates +compiled regular expression suitable for use in wxString operations +described below. (In this case, one that matches any C++ identifier). +The first argument may also be a wxString. Be careful in distinguishing +the role of backslashes in quoted GNU C++ `char*' constants versus those +in Regexes. For example, a wxRegex that matches either one or more tabs +or all strings beginning with "ba" and ending with any number of +occurrences of "na" could be declared as + +\begin{verbatim} + wxRegex r = "\\(\t+\\)\\|\\(ba\\(na\\)*\\)" +\end{verbatim} + +Note that only one backslash is needed +to signify the tab, but two are needed for the parenthesization and +virgule, since the GNU C++ lexical analyzer decodes and strips +backslashes before they are seen by wxRegex. + +There are three additional optional arguments to the wxRegex +constructor that are less commonly useful: + +{\tt fast (default 0)} +`fast' may be set to true (1) if the wxRegex should be +"fast-compiled". This causes an additional compilation step that +is generally worthwhile if the wxRegex will be used many times. + +{\tt bufsize (default max(40, length of the string))} +This is an estimate of the size of the internal compiled +expression. Set it to a larger value if you know that the +expression will require a lot of space. If you do not know, do not +worry: realloc is used if necessary. + +{\tt transtable (default none == 0)} +The address of a byte translation table (a char[256]) that +translates each character before matching. + +As a convenience, several Regexes are predefined and usable in any +program. Here are their declarations from {\tt wxString.h}. +\begin{verbatim} + extern wxRegex RXwhite; // = "[ \n\t]+" + extern wxRegex RXint; // = "-?[0-9]+" + extern wxRegex RXdouble; // = "-?\\(\\([0-9]+\\.[0-9]*\\)\\| + // \\([0-9]+\\)\\| + // \\(\\.[0-9]+\\)\\) + // \\([eE][---+]?[0-9]+\\)?" + extern wxRegex RXalpha; // = "[A-Za-z]+" + extern wxRegex RXlowercase; // = "[a-z]+" + extern wxRegex RXuppercase; // = "[A-Z]+" + extern wxRegex RXalphanum; // = "[0-9A-Za-z]+" + extern wxRegex RXidentifier; // = "[A-Za-z_][A-Za-z0-9_]*" +\end{verbatim} + +\subsubsection{Examples} + +Most {\tt wxString} class capabilities are best shown via example. The +examples below use the following declarations. + +\begin{verbatim} + wxString x = "Hello"; + wxString y = "world"; + wxString n = "123"; + wxString z; + char *s = ","; + wxString lft, mid, rgt; + wxRegex r = "e[a-z]*o"; + wxRegex r2("/[a-z]*/"); + char c; + int i, pos, len; + double f; + wxString words[10]; + words[0] = "a"; + words[1] = "b"; + words[2] = "c"; +\end{verbatim} + +\subsubsection{Comparing, Searching and Matching examples} + +The usual lexicographic relational operators (`==, !=, <, <=, >, >=') +are defined. A functional form `compare(wxString, wxString)' is also +provided, as is `fcompare(wxString, wxString)', which compares Strings +without regard for upper vs. lower case. + +All other matching and searching operations are based on some form +of the (non-public) `match' and `search' functions. `match' and +`search' differ in that `match' attempts to match only at the given +starting position, while `search' starts at the position, and then +proceeds left or right looking for a match. As seen in the following +examples, the second optional `startpos' argument to functions using +`match' and `search' specifies the starting position of the search: If +non-negative, it results in a left-to-right search starting at position +`startpos', and if negative, a right-to-left search starting at +position `x.Length() + startpos'. In all cases, the index returned is +that of the beginning of the match, or -1 if there is no match. + +Three wxString functions serve as front ends to `search' and `match'. +`index' performs a search, returning the index, `matches' performs a +match, returning nonzero (actually, the length of the match) on success, +and `contains' is a boolean function performing either a search or +match, depending on whether an index argument is provided: + +{\tt x.Index("lo")} +Returns the zero-based index of the leftmost occurrence of +substring "lo" (3, in this case). The argument may be a wxString, +wxSubString, char, char*, or wxRegex. + +{\tt x.Index("l", 2)} +Returns the index of the first of the leftmost occurrence of "l" +found starting the search at position x[2], or 2 in this case. + +{\tt x.Index("l", -1)} +Returns the index of the rightmost occurrence of "l", or 3 here. + +{\tt x.Index("l", -3)} +Returns the index of the rightmost occurrence of "l" found by +starting the search at the 3rd to the last position of x, +returning 2 in this case. + +{\tt pos = r.Search("leo", 3, len, 0)} +Returns the index of r in the {\tt char*} string of length 3, starting +at position 0, also placing the length of the match in reference +parameter len. + +{\tt x.Contains("He")} +Returns nonzero if the wxString x contains the substring "He". The +argument may be a wxString, wxSubString, char, char*, or wxRegex. + +{\tt x.Contains("el", 1)} +Returns nonzero if x contains the substring "el" at position 1. +As in this example, the second argument to `contains', if present, +means to match the substring only at that position, and not to +search elsewhere in the string. + +{\tt x.Contains(RXwhite);} +Returns nonzero if x contains any whitespace (space, tab, or +newline). Recall that `RXwhite' is a global whitespace wxRegex. + +{\tt x.Matches("lo", 3)} +Returns nonzero if x starting at position 3 exactly matches "lo", +with no trailing characters (as it does in this example). + +{\tt x.Matches(r)} +Returns nonzero if wxString x as a whole matches wxRegex r. + +{\tt int f = x.Freq("l")} +Returns the number of distinct, nonoverlapping matches to the +argument (2 in this case). + +\subsubsection{Substring extraction examples} + +Substrings may be extracted via the `at', `before', `through', +`from', and `after' functions. These behave as either lvalues or +rvalues. + +{\tt z = x.At(2, 3)} +Sets wxString z to be equal to the length 3 substring of wxString x +starting at zero-based position 2, setting z to "llo" in this +case. A nil wxString is returned if the arguments don't make sense. + +{\tt x.At(2, 2) = "r"} +Sets what was in positions 2 to 3 of x to "r", setting x to "Hero" +in this case. As indicated here, wxSubString assignments may be of +different lengths. + +{\tt x.At("He") = "je";} +x("He") is the substring of x that matches the first occurrence of +it's argument. The substitution sets x to "jello". If "He" did not +occur, the substring would be nil, and the assignment would have +no effect. + +{\tt x.At("l", -1) = "i";} +Replaces the rightmost occurrence of "l" with "i", setting x to +"Helio". + +{\tt z = x.At(r)} +Sets wxString z to the first match in x of wxRegex r, or "ello" in this +case. A nil wxString is returned if there is no match. + +{\tt z = x.Before("o")} +Sets z to the part of x to the left of the first occurrence of +"o", or "Hell" in this case. The argument may also be a wxString, +wxSubString, or wxRegex. (If there is no match, z is set to "".) + +{\tt x.Before("ll") = "Bri";} +Sets the part of x to the left of "ll" to "Bri", setting x to +"Brillo". + +{\tt z = x.Before(2)} +Sets z to the part of x to the left of x[2], or "He" in this case. + +{\tt z = x.After("Hel")} +Sets z to the part of x to the right of "Hel", or "lo" in this +case. + +{\tt z = x.Through("el")} +Sets z to the part of x up and including "el", or "Hel" in this +case. + +{\tt z = x.From("el")} +Sets z to the part of x from "el" to the end, or "ello" in this +case. + +{\tt x.After("Hel") = "p";} +Sets x to "Help"; + +{\tt z = x.After(3)} +Sets z to the part of x to the right of x[3] or "o" in this case. + +{\tt z = " ab c"; z = z.After(RXwhite)} +Sets z to the part of its old string to the right of the first +group of whitespace, setting z to "ab c"; Use GSub(below) to strip +out multiple occurrences of whitespace or any pattern. + +{\tt x[0] = 'J';} +Sets the first element of x to 'J'. x[i] returns a reference to +the ith element of x, or triggers an error if i is out of range. + +{\tt CommonPrefix(x, "Help")} +Returns the wxString containing the common prefix of the two Strings +or "Hel" in this case. + +{\tt CommonSuffix(x, "to")} +Returns the wxString containing the common suffix of the two Strings +or "o" in this case. + +\subsubsection{Concatenation examples} + +{\tt z = x + s + ' ' + y.At("w") + y.After("w") + ".";} +Sets z to "Hello, world." + +{\tt x += y;} +Sets x to "Helloworld". + +{\tt Cat(x, y, z)} +A faster way to say z = x + y. + +{\tt Cat(z, y, x, x)} +Double concatenation; A faster way to say x = z + y + x. + +{\tt y.Prepend(x);} +A faster way to say y = x + y. + +{\tt z = Replicate(x, 3);} +Sets z to "HelloHelloHello". + +{\tt z = Join(words, 3, "/")} +Sets z to the concatenation of the first 3 Strings in wxString array +words, each separated by "/", setting z to "a/b/c" in this case. +The last argument may be "" or 0, indicating no separation. + +\subsubsection{Other manipulation examples} + +{\tt z = "this string has five words"; i = Split(z, words, 10, RXwhite);} +Sets up to 10 elements of wxString array words to the parts of z +separated by whitespace, and returns the number of parts actually +encountered (5 in this case). Here, words[0] = "this", words[1] = +"string", etc. The last argument may be any of the usual. If +there is no match, all of z ends up in words[0]. The words array +is *not* dynamically created by split. + +{\tt int nmatches x.GSub("l","ll")} +Substitutes all original occurrences of "l" with "ll", setting x +to "Hellllo". The first argument may be any of the usual, +including wxRegex. If the second argument is "" or 0, all +occurrences are deleted. gsub returns the number of matches that +were replaced. + +{\tt z = x + y; z.Del("loworl");} +Deletes the leftmost occurrence of "loworl" in z, setting z to +"Held". + +{\tt z = Reverse(x)} +Sets z to the reverse of x, or "olleH". + +{\tt z = Upcase(x)} +Sets z to x, with all letters set to uppercase, setting z to +"HELLO". + +{\tt z = Downcase(x)} +Sets z to x, with all letters set to lowercase, setting z to +"hello" + +{\tt z = Capitalize(x)} +Sets z to x, with the first letter of each word set to uppercase, +and all others to lowercase, setting z to "Hello" + +{\tt x.Reverse(), x.Upcase(), x.Downcase(), x.Capitalize()} +in-place, self-modifying versions of the above. + +\subsubsection{Reading, Writing and Conversion examples} + +{\tt cout << x} +Writes out x. + +{\tt cout << x.At(2, 3)} +Writes out the substring "llo". + +{\tt cin >> x} +Reads a whitespace-bounded string into x. + +{\tt x.Length()} +Returns the length of wxString x (5, in this case). + +{\tt s = (const char*)x} +Can be used to extract the `char*' char array. This coercion is +useful for sending a wxString as an argument to any function +expecting a `const char*' argument (like `atoi', and +`File::open'). This operator must be used with care, since the +conversion returns a pointer to `wxString' internals without copying +the characters: The resulting `(char*)' is only valid until the +next wxString operation, and you must not modify it. (The +conversion is defined to return a const value so that GNU C++ will +produce warning and/or error messages if changes are attempted.) + +\subsection{Regular Expressions}\label{regularexpressions} + +The following are extracts from GNU documentation. + +\subsubsection{Regular Expression Overview} + +Regular expression matching allows you to test whether a string fits +into a specific syntactic shape. You can also search a string for a +substring that fits a pattern. + +A regular expression describes a set of strings. The simplest case +is one that describes a particular string; for example, the string +`foo' when regarded as a regular expression matches `foo' and nothing +else. Nontrivial regular expressions use certain special constructs +so that they can match more than one string. For example, the +regular expression `foo$\backslash$|bar' matches either the string `foo' or the +string `bar'; the regular expression `c[ad]*r' matches any of the +strings `cr', `car', `cdr', `caar', `cadddar' and all other such +strings with any number of `a''s and `d''s. + +The first step in matching a regular expression is to compile it. +You must supply the pattern string and also a pattern buffer to hold +the compiled result. That result contains the pattern in an internal +format that is easier to use in matching. + +Having compiled a pattern, you can match it against strings. You can +match the compiled pattern any number of times against different +strings. + +\subsubsection{Syntax of Regular Expressions} + +Regular expressions have a syntax in which a few characters are +special constructs and the rest are "ordinary". An ordinary +character is a simple regular expression which matches that character +and nothing else. The special characters are `\verb+\$+', `\verb+^+', `.', `*', +`+', `?', `[', `]' and `$\backslash$'. Any other character appearing in a +regular expression is ordinary, unless a `$\backslash$' precedes it. + +For example, `f' is not a special character, so it is ordinary, and +therefore `f' is a regular expression that matches the string `f' and +no other string. (It does *not* match the string `ff'.) Likewise, +`o' is a regular expression that matches only `o'. + +Any two regular expressions A and B can be concatenated. The result +is a regular expression which matches a string if A matches some +amount of the beginning of that string and B matches the rest of the +string. + +As a simple example, we can concatenate the regular expressions `f' +and `o' to get the regular expression `fo', which matches only the +string `fo'. Still trivial. + +Note: for Unix compatibility, special characters are treated as +ordinary ones if they are in contexts where their special meanings +make no sense. For example, `*foo' treats `*' as ordinary since +there is no preceding expression on which the `*' can act. It is +poor practice to depend on this behavior; better to quote the special +character anyway, regardless of where is appears. + +The following are the characters and character sequences which have +special meaning within regular expressions. Any character not +mentioned here is not special; it stands for exactly itself for the +purposes of searching and matching. + +\begin{itemize} +\itemsep=0pt + +\item \rtfsp +{\tt .} is a special character that matches anything except a newline. +Using concatenation, we can make regular expressions like {\tt a.b} +which matches any three-character string which begins with {\tt a} +and ends with {\tt b}. + +\item \rtfsp +{\tt *} is not a construct by itself; it is a suffix, which means the +preceding regular expression is to be repeated as many times as +possible. In {\tt fo*}, the {\tt *} applies to the {\tt o}, so {\tt fo*} +matches {\tt f} followed by any number of {\tt o}'s. + +The case of zero {\tt o}'s is allowed: {\tt fo*} does match {\tt f}. + +{\tt *} always applies to the *smallest* possible preceding +expression. Thus, {\tt fo*} has a repeating {\tt o}, not a repeating +{\tt fo}. + +The matcher processes a {\tt *} construct by matching, immediately, +as many repetitions as can be found. Then it continues with the +rest of the pattern. If that fails, backtracking occurs, +discarding some of the matches of the {\tt *}'d construct in case +that makes it possible to match the rest of the pattern. For +example, matching {\tt c$[$ad$]$*ar} against the string {\tt caddaar}, the +{\tt $[$ad$]$*} first matches {\tt addaa}, but this does not allow the next +{\tt a} in the pattern to match. So the last of the matches of +{\tt $[$ad$]$} is undone and the following {\tt a} is tried again. Now it +succeeds. + +\item \rtfsp +{\tt +} is like {\tt *} except that at least one match for the preceding +pattern is required for {\tt +}. Thus, {\tt c$[$ad$]$+r} does not match +{\tt cr} but does match anything else that {\tt c$[$ad$]$*r} would match. + +\item \rtfsp +{\tt ?} is like {\tt *} except that it allows either zero or one match +for the preceding pattern. Thus, {\tt c$[$ad$]$?r} matches {\tt cr} or +{\tt car} or {\tt cdr}, and nothing else. + +\item \rtfsp +{\tt $[$} begins a "character set", which is terminated by a {\tt $]$}. In +the simplest case, the characters between the two form the set. +Thus, {\tt $[$ad$]$} matches either {\tt a} or {\tt d}, and {\tt $[$ad$]$*} matches any +string of {\tt a}'s and {\tt d}'s (including the empty string), from +which it follows that {\tt c$[$ad$]$*r} matches {\tt car}, etc. + +Character ranges can also be included in a character set, by +writing two characters with a {\tt -} between them. Thus, {\tt $[$a-z$]$} +matches any lower-case letter. Ranges may be intermixed freely +with individual characters, as in {\tt $[$a-z\$\%.$]$}, which matches any +lower case letter or {\tt \$}, {\tt \%} or period. + +Note that the usual special characters are not special any more +inside a character set. A completely different set of special +characters exists inside character sets: {\tt $]$}, {\tt -} and \verb$^$. + +To include a {\tt $]$} in a character set, you must make it the first +character. For example, {\tt $[$$]$a$]$} matches {\tt $]$} or {\tt a}. To include +a {\tt -}, you must use it in a context where it cannot possibly +indicate a range: that is, as the first character, or +immediately after a range. + +\item \rtfsp +\verb$[^$ begins a "complement character set", which matches any +character except the ones specified. Thus, \verb$[^a-z0-9A-Z]$ +matches all characters {\it except} letters and digits. + +\item \rtfsp +\verb$^$ is not special in a character set unless it is the first +character. The character following the \verb$^$ is treated as if it +were first (it may be a {\tt -} or a {\tt $]$}). + +\verb$^$ is a special character that matches the empty string -- but only +if at the beginning of a line in the text being matched. +Otherwise it fails to match anything. Thus, \verb$^foo$ matches a +{\tt foo} which occurs at the beginning of a line. + +\item \rtfsp +{\tt \$} +is similar to \verb$^$ but matches only at the end of a line. Thus, +{\tt xx*\$} matches a string of one or more {\tt x}'s at the end of a line. + +\item \rtfsp +{\tt $\backslash$} +has two functions: it quotes the above special characters +(including {\tt $\backslash$}), and it introduces additional special constructs. + +Because {\tt $\backslash$} quotes special characters, {\tt $\backslash$\$} is a regular +expression which matches only {\tt \$}, and {\tt $\backslash$$[$} is a regular +expression which matches only {\tt $[$}, and so on. + +For the most part, {\tt $\backslash$} followed by any character matches only +that character. However, there are several exceptions: +characters which, when preceded by {\tt $\backslash$}, are special constructs. +Such characters are always ordinary when encountered on their own. + +No new special characters will ever be defined. All extensions +to the regular expression syntax are made by defining new +two-character constructs that begin with {\tt $\backslash$}. + +\item \rtfsp +{\tt $\backslash$|} +specifies an alternative. Two regular expressions A and B with +{\tt $\backslash$|} in between form an expression that matches anything that +either A or B will match. + +Thus, {\tt foo$\backslash$|bar} matches either {\tt foo} or {\tt bar} but no other +string. + +{\tt $\backslash$|} applies to the largest possible surrounding expressions. +Only a surrounding {\tt $\backslash$( ... $\backslash$)} grouping can limit the grouping +power of {\tt $\backslash$|}. + +Full backtracking capability exists when multiple {\tt $\backslash$|}'s are used. + +\item \rtfsp +{\tt $\backslash$( ... $\backslash$)} +is a grouping construct that serves three purposes: +\begin{enumerate} +\item To enclose a set of {\tt $\backslash$|} alternatives for other operations. +Thus, {\tt $\backslash$(foo$\backslash$|bar$\backslash$)x} matches either {\tt foox} or {\tt barx}. +\item To enclose a complicated expression for the postfix {\tt *} to +operate on. Thus, {\tt ba$\backslash$(na$\backslash$)*} matches {\tt bananana}, etc., +with any (zero or more) number of {\tt na}'s. +\item To mark a matched substring for future reference. +\end{enumerate} + +This last application is not a consequence of the idea of a +parenthetical grouping; it is a separate feature which happens +to be assigned as a second meaning to the same {\tt $\backslash$( ... $\backslash$)} +construct because there is no conflict in practice between the +two meanings. Here is an explanation of this feature: + +\item \rtfsp +{\tt $\backslash$DIGIT} +After the end of a {\tt $\backslash$( ... $\backslash$)} construct, the matcher remembers +the beginning and end of the text matched by that construct. +Then, later on in the regular expression, you can use {\tt $\backslash$} +followed by DIGIT to mean "match the same text matched the +DIGIT'th time by the {\tt $\backslash$( ... $\backslash$)} construct." The {\tt $\backslash$( ... $\backslash$)} +constructs are numbered in order of commencement in the regexp. + +The strings matching the first nine {\tt $\backslash$( ... $\backslash$)} constructs +appearing in a regular expression are assigned numbers 1 through +9 in order of their beginnings. {\tt $\backslash$1} through {\tt $\backslash$9} may be used +to refer to the text matched by the corresponding {\tt $\backslash$( ... $\backslash$)} +construct. + +For example, {\tt $\backslash$(.*$\backslash$)$\backslash$1} matches any string that is composed of +two identical halves. The {\tt $\backslash$(.*$\backslash$)} matches the first half, +which may be anything, but the {\tt $\backslash$1} that follows must match the +same exact text. + +\item \rtfsp +{\tt $\backslash$b} +matches the empty string, but only if it is at the beginning or +end of a word. Thus, {\tt $\backslash$bfoo$\backslash$b} matches any occurrence of {\tt foo} +as a separate word. {\tt $\backslash$bball$\backslash$(s$\backslash$|$\backslash$)$\backslash$b} matches {\tt ball} or {\tt balls} +as a separate word. + +\item \rtfsp +{\tt $\backslash$B} +matches the empty string, provided it is *not* at the beginning +or end of a word. + +\item \rtfsp +{\tt $\backslash$<} +matches the empty string, but only if it is at the beginning of +a word. + +\item \rtfsp +{\tt $\backslash$>} +matches the empty string, but only if it is at the end of a word. + +\item \rtfsp +{\tt $\backslash$w} +matches any word-constituent character. + +\item \rtfsp +{\tt $\backslash$W} +matches any character that is not a word-constituent. + +\end{itemize} + + + + + +\section{wxString member functions}\label{wxstringcategories} + +\overview{Overview}{wxstringoverview} + +This section describes categories of \helpref{wxString}{wxstring} class +member functions. + +TODO: describe each one briefly here. + +{\large {\bf Assigment}} + +\begin{itemize}\itemsep=0pt +\item \helpref{wxString::operator $=$}{wxstringoperatorassign}\\ +\end{itemize} + +{\large {\bf Classification}} + +\begin{itemize}\itemsep=0pt +\item \helpref{wxString::IsAscii}{wxstringIsAscii} +\item \helpref{wxString::IsWord}{wxstringIsWord} +\item \helpref{wxString::IsNumber}{wxstringIsNumber} +\item \helpref{wxString::IsNull}{wxstringIsNull} +\item \helpref{wxString::IsDefined}{wxstringIsDefined} +\end{itemize} + +{\large {\bf Comparisons (case sensitive and insensitive)}} + +\begin{itemize}\itemsep=0pt +\item \helpref{wxString::CompareTo}{wxstringCompareTo} +\item \helpref{Compare}{wxstringCompare} +\item \helpref{FCompare}{wxstringFCompare} +\item \helpref{Comparisons}{wxstringComparison} +\end{itemize} + +{\large {\bf Composition and Concatenation}} + +\begin{itemize}\itemsep=0pt +\item \helpref{wxString::operator $+=$}{wxstringPlusEqual} +\item \helpref{wxString::Append}{wxstringAppend} +\item \helpref{wxString::Prepend}{wxstringPrepend} +\item \helpref{wxString::Cat}{wxstringCat} +\item \helpref{operator $+$}{wxstringoperatorplus} +\end{itemize} + +{\large {\bf Constructors/Destructors}} + +\begin{itemize}\itemsep=0pt +\item \helpref{wxString::wxString}{wxstringconstruct} +\item \helpref{wxString::~wxString}{wxstringdestruct} +\end{itemize} + +{\large {\bf Conversions}} + +\begin{itemize} +\item \helpref{wxString::operator const char *}{wxstringoperatorconstcharpt} +\item \helpref{wxString::Chars}{wxstringChars} +\item \helpref{wxString::GetData}{wxstringGetData} +\end{itemize} + +{\large {\bf Deletion/Insertion}} + +\begin{itemize}\itemsep=0pt +\item \helpref{wxString::Del}{wxstringDel} +\item \helpref{wxString::Remove}{wxstringRemove} +\item \helpref{wxString::Insert}{wxstringInsert} +\item \helpref{Split}{wxstringSplit} +\item \helpref{Join}{wxstringJoin} +\end{itemize} + +{\large {\bf Duplication}} + +\begin{itemize}\itemsep=0pt +\item \helpref{wxString::Copy}{wxstringCopy} +\item \helpref{wxString::Replicate}{wxstringReplicate} +\end{itemize} + +{\large {\bf Element access}} + +\begin{itemize}\itemsep=0pt +\item \helpref{wxString::operator[]}{wxstringoperatorbracket} +\item \helpref{wxString::operator()}{wxstringoperatorparenth} +\item \helpref{wxString::Elem}{wxstringElem} +\item \helpref{wxString::Firstchar}{wxstringFirstchar} +\item \helpref{wxString::Lastchar}{wxstringLastchar} +\end{itemize} + +{\large {\bf Extraction of Substrings}} + +\begin{itemize}\itemsep=0pt +\item \helpref{wxString::At}{wxstringAt} +\item \helpref{wxString::Before}{wxstringBefore} +\item \helpref{wxString::Through}{wxstringThrough} +\item \helpref{wxString::From}{wxstringFrom} +\item \helpref{wxString::After}{wxstringAfter} +\item \helpref{wxString::SubString}{wxstringSubString} +\end{itemize} + +{\large {\bf Input/Output}} + +\begin{itemize}\itemsep=0pt +\item \helpref{wxString::sprintf}{wxstringsprintf} +\item \helpref{wxString::operator \cinsert}{wxstringoperatorout} +\item \helpref{wxString::operator \cextract}{wxstringoperatorin} +\item \helpref{wxString::Readline}{wxstringReadline} +\end{itemize} + +{\large {\bf Searching/Matching}} + +\begin{itemize}\itemsep=0pt +\item \helpref{wxString::Index}{wxstringIndex} +\item \helpref{wxString::Contains}{wxstringContains} +\item \helpref{wxString::Matches}{wxstringMatches} +\item \helpref{wxString::Freq}{wxstringFreq} +\item \helpref{wxString::First}{wxstringFirst} +\item \helpref{wxString::Last}{wxstringLast} +\end{itemize} + +{\large {\bf Substitution}} + +\begin{itemize}\itemsep=0pt +\item \helpref{wxString::GSub}{wxstringGSub} +\item \helpref{wxString::Replace}{wxstringReplace} +\end{itemize} + +{\large {\bf Status}} + +\begin{itemize}\itemsep=0pt +\item \helpref{wxString::Length}{wxstringLength} +\item \helpref{wxString::Empty}{wxstringEmpty} +\item \helpref{wxString::Allocation}{wxstringAllocation} +\item \helpref{wxString::IsNull}{wxstringIsNull} +\end{itemize} + +{\large {\bf Transformations}} + +\begin{itemize}\itemsep=0pt +\item \helpref{wxString::Reverse}{wxstringReverse} +\item \helpref{wxString::Upcase}{wxstringUpcase} +\item \helpref{wxString::UpperCase}{wxstringUpperCase} +\item \helpref{wxString::DownCase}{wxstringDownCase} +\item \helpref{wxString::LowerCase}{wxstringLowerCase} +\item \helpref{wxString::Capitalize}{wxstringCapitalize} +\end{itemize} + +{\large {\bf Utilities}} + +\begin{itemize}\itemsep=0pt +\item \helpref{wxString::Strip}{wxstringStrip} +\item \helpref{wxString::Error}{wxstringError} +\item \helpref{wxString::OK}{wxstringOK} +\item \helpref{wxString::Alloc}{wxstringAlloc} +\item \helpref{wxCHARARG}{wxstringwxCHARARG} +\item \helpref{CommonPrefix}{wxstringCommonPrefix} +\item \helpref{CommonSuffix}{wxstringCommonSuffix} +\end{itemize} + diff --git a/docs/latex/wx/tstyles.tex b/docs/latex/wx/tstyles.tex new file mode 100644 index 0000000000..393f753182 --- /dev/null +++ b/docs/latex/wx/tstyles.tex @@ -0,0 +1,14 @@ +\section{Window styles}\label{windowstyles} + +Window styles are used to specify alternative behaviour and appearances for windows, when they are +created. The symbols are defined in such as way that they can be combined in a `bit-list' using the +C++ {\it bitwise-or} operator. For example: + +\begin{verbatim} + wxCAPTION | wxMINIMIZE_BOX | wxMINIMIZE_BOX | wxTHICK_FRAME +\end{verbatim} + +For the window styles specific to each window class, please see the documentation +for the window. Most windows can use the generic styles listed for \helpref{wxWindow}{wxwindow} in +addition to their own styles. + diff --git a/docs/latex/wx/ttab.tex b/docs/latex/wx/ttab.tex new file mode 100644 index 0000000000..33eee2ab3e --- /dev/null +++ b/docs/latex/wx/ttab.tex @@ -0,0 +1,219 @@ +\section{Tab classes overview}\label{wxtaboverview} + +Classes: \helpref{wxTabView}{wxtabview}, \helpref{wxPanelTabView}{wxpaneltabview}, + \helpref{wxTabbedPanel}{wxtabbedpanel}, \helpref{wxTabbedDialogBox}{wxtabbeddialogbox}, + \helpref{wxTabControl}{wxtabcontrol} + +The tab classes provides a way to display rows of tabs (like file divider tabs), which can be +used to switch between panels or other information. Tabs are most +commonly used in dialog boxes where the number of options is too great +to fit on one dialog. + +\wxheading{The appearance and behaviour of a wxTabbedDialogBox} + +The following screenshot shows the appearance of the sample tabbed dialog application. + +$$\image{8cm;0cm}{wxtab1.eps}$$ + +By clicking on the tabs, the user can display a different set of controls. In the example, +the Close and Help buttons remain constant. These two buttons are children of the main dialog box, +whereas the other controls are children of panels which are shown and hidden according to +which tab is active. + +A tabbed dialog may have several layers (rows) of tabs, each being +offset vertically and horizontally from the previous. Tabs work in +columns, in that when a tab is pressed, it swaps place with the tab on +the first row of the same column, in order to give the effect of +displaying that tab. All tabs must be of the same width. +This is a constraint of the implementation, but it also +means that the user will find it easier to find tabs since there are +distinct tab columns. On some tabbed dialog implementations, tabs jump around +seemingly randomly because tabs have different widths. +In this implementation, a tab can always be found on the same column. + +Tabs are always drawn along the top of the view area; the implementation does +not allow for vertical tabs or any other configuration. + +\wxheading{Using tabs} + +The tab classes provide facilities for switching between contexts by +means of `tabs', which look like file divider tabs. + +You must create both a {\it view} to handle the tabs, and a {\it window} to display the tabs +and related information. The wxTabbedDialog and wxTabbedPanel classes are provided for +convenience, but you could equally well construct your own window class and derived +tab view. + +If you wish to display a tabbed dialog - the most common use - you should follow these steps. + +\begin{enumerate}\itemsep=0pt +\item Create a new wxTabbedDialog class, and any buttons you wish always to be displayed +(regardless of which tab is active). +\item Create a new wxPanelTabView, passing the dialog as the first argument. +\item Set the view rectangle with \helpref{wxTabView::SetViewRect}{wxtabviewsetviewrect}, +to specify the area in which child panels will be +shown. The tabs will sit on top of this view rectangle. +\item Call \helpref{wxTabView::CalculateTabWidth}{wxtabviewcalculatetabwidth} to calculate +the width of the tabs based on the view area. This is optional if, for example, you have one row +of tabs which does not extend the full width of the view area. +\item Call \helpref{wxTabView::AddTab}{wxtabviewaddtab} for each of the tabs you wish to create, passing +a unique identifier and a tab label. +\item Construct a number of windows, one for each tab, and call \helpref{wxPanelTabView::AddTabWindow}{wxpaneltabviewaddtabwindow} for +each of these, passing a tab identifier and the window. +\item Set the tab selection. +\item Show the dialog. +\end{enumerate} + +Under Motif, you may also need to size the dialog just before setting the tab selection, for unknown reasons. + +Some constraints you need to be aware of: + +\begin{itemize}\itemsep=0pt +\item All tabs must be of the same width. +\item Omit the wxTAB\_STYLE\_COLOUR\_INTERIOR flag to ensure that the dialog background +and tab backgrounds match. +\end{itemize} + +\subsection{Example} + +The following fragment is taken from the file test.cpp. + +{\small +\begin{verbatim} +void MyDialog::Init(void) +{ + int dialogWidth = 365; + int dialogHeight = 390; + + wxButton *okButton = new wxButton(this, wxID_OK, "Close", wxPoint(100, 330), wxSize(80, 25)); + wxButton *cancelButton = new wxButton(this, wxID_CANCEL, "Cancel", wxPoint(185, 330), wxSize(80, 25)); + wxButton *HelpButton = new wxButton(this, wxID_HELP, "Help", wxPoint(270, 330), wxSize(80, 25)); + okButton->SetDefault(); + + // Note, omit the wxTAB_STYLE_COLOUR_INTERIOR, so we will guarantee a match + // with the panel background, and save a bit of time. + wxPanelTabView *view = new wxPanelTabView(this, wxTAB_STYLE_DRAW_BOX); + + wxRectangle rect; + rect.x = 5; + rect.y = 70; + // Could calculate the view width from the tab width and spacing, + // as below, but let's assume we have a fixed view width. +// rect.width = view->GetTabWidth()*4 + 3*view->GetHorizontalTabSpacing(); + rect.width = 326; + rect.height = 250; + + view->SetViewRect(rect); + + // Calculate the tab width for 4 tabs, based on a view width of 326 and + // the current horizontal spacing. Adjust the view width to exactly fit + // the tabs. + view->CalculateTabWidth(4, TRUE); + + if (!view->AddTab(TEST_TAB_CAT, wxString("Cat"))) + return; + + if (!view->AddTab(TEST_TAB_DOG, wxString("Dog"))) + return; + if (!view->AddTab(TEST_TAB_GUINEAPIG, wxString("Guinea Pig"))) + return; + if (!view->AddTab(TEST_TAB_GOAT, wxString("Goat"))) + return; + if (!view->AddTab(TEST_TAB_ANTEATER, wxString("Ant-eater"))) + return; + if (!view->AddTab(TEST_TAB_SHEEP, wxString("Sheep"))) + return; + if (!view->AddTab(TEST_TAB_COW, wxString("Cow"))) + return; + if (!view->AddTab(TEST_TAB_HORSE, wxString("Horse"))) + return; + if (!view->AddTab(TEST_TAB_PIG, wxString("Pig"))) + return; + if (!view->AddTab(TEST_TAB_OSTRICH, wxString("Ostrich"))) + return; + if (!view->AddTab(TEST_TAB_AARDVARK, wxString("Aardvark"))) + return; + if (!view->AddTab(TEST_TAB_HUMMINGBIRD,wxString("Hummingbird"))) + return; + + // Add some panels + wxPanel *panel1 = new wxPanel(this, -1, wxPoint(rect.x + 20, rect.y + 10), wxSize(290, 220), wxTAB_TRAVERSAL); + (void)new wxButton(panel1, -1, "Press me", wxPoint(10, 10)); + (void)new wxTextCtrl(panel1, -1, "1234", wxPoint(10, 40), wxSize(120, 150)); + + view->AddTabWindow(TEST_TAB_CAT, panel1); + + wxPanel *panel2 = new wxPanel(this, -1, wxPoint(rect.x + 20, rect.y + 10), wxSize(290, 220)); + + wxString animals[] = { "Fox", "Hare", "Rabbit", "Sabre-toothed tiger", "T Rex" }; + (void)new wxListBox(panel2, -1, wxPoint(5, 5), wxSize(170, 80), 5, animals); + + (void)new wxTextCtrl(panel2, -1, "Some notes about the animals in this house", wxPoint(5, 100), wxSize(170, 100)), + wxTE_MULTILINE; + + view->AddTabWindow(TEST_TAB_DOG, panel2); + + // Don't know why this is necessary under Motif... +#ifdef wx_motif + this->SetSize(dialogWidth, dialogHeight-20); +#endif + + view->SetTabSelection(TEST_TAB_CAT); + + this->Centre(wxBOTH); +} +\end{verbatim} +} + +\subsection{wxTab change log} + +June 3rd 1997, Version 1.2 + +\begin{itemize}\itemsep=0pt +\item Fixed bug which drew some tabs incorrectly. +\item Altered sample to put buttons below tabs, as per standard +Windows conventions. +\item Added improvements from Hitachi Europe Limited: draws correctly +on Motif and Windows, and tabs are now rounded - much nicer. +\end{itemize} + +April 29th 1996, Version 1.1 + +\begin{itemize}\itemsep=0pt +\item Added SetHorizontalTabOffset, SetHorizontalTabSpacing. +\item Corrected bug in colouring tabs (1 pixel out). +\item Corrected bug in adding tabs: last tab on first row could overlap right-hand +edge. +\item Added Layout function to allow resizing of the view rectangle and subsequent redrawing +of the tabs. +\item Added WXTAB\_VERSION symbol. +\item Fixed bug in SetTabSelection which did not move the selected tab to the first row. +\item Added argument in SetTabSelection to optionally avoid calling activation code. +\item Changed wxPanelTabView API to allow use of any window, not just a panel, in a tab. +\end{itemize} + +April 24th 1996, Version 1.0 + +\begin{itemize}\itemsep=0pt +\item First release. +\end{itemize} + +\section{wxTabView overview}\label{wxtabviewoverview} + +Classes: \helpref{wxTabView}{wxtabview}, \helpref{wxPanelTabView}{wxpaneltabview} + +A wxTabView manages and draws a number of tabs. Because it is separate +from the tabbed window implementation, it can be reused in a number of contexts. +This library provides tabbed dialog and panel classes to use with the +wxPanelTabView class, but an application could derive other kinds of +view from wxTabView. + +For example, a help application might draw a representation of a book on +a canvas, with a row of tabs along the top. The new tab view class might +be called wxCanvasTabView, for example, with the wxBookCanvas posting +the OnEvent function to the wxCanvasTabView before processing further, +application-specific event processing. + +A window class designed to work with a view class must call the view's +OnEvent and Draw functions at appropriate times. + diff --git a/docs/latex/wx/ttoolbar.tex b/docs/latex/wx/ttoolbar.tex new file mode 100644 index 0000000000..d4178dd51c --- /dev/null +++ b/docs/latex/wx/ttoolbar.tex @@ -0,0 +1,128 @@ +\section{Toolbar overview}\label{wxtoolbaroverview} + +Classes: \helpref{wxToolBarBase}{wxtoolbarbase}, \helpref{wxToolBarSimple}{wxtoolbarsimple},\rtfsp +\helpref{wxToolBarMSW}{wxtoolbarmsw}, \helpref{wxToolBar95}{wxtoolbar95} + +The toolbar family of classes allows an application to use toolbars +in a variety of configurations and styles. + +The toolbar is a popular user interface component and contains a set of bitmap +buttons or toggles. A toolbar gives faster access to an application's facilities than +menus, which have to be popped up and selected rather laboriously. + +Instead of supplying one toolbar class with a number +of different implementations depending on platform, wxWindows separates +out the classes. This is because there are a number of different toolbar +styles that you may wish to use simultaneously, and also, future +toolbar implementations will emerge (for example, using the +new-style Windows `coolbar' as seen in Microsoft applications) which +cannot be shoe-horned into the one class. + +This does mean that if you wish to use a more sophisticated toolbar +on one platform (say, wxToolBar95) and a simple toolbar on another +platform (wxToolBarSimple), then you will need some simple ifdefing, such as: + +\begin{verbatim} + #ifdef wx_msw + # define wxToolBar wxToolBar95 + #else + # define wxToolBar wxToolBarSimple + #endif +\end{verbatim} + +Fortunately, the APIs of the toolbar classes are virtually identical. + +The following is a summary of the toolbar classes and their differences. + +\begin{itemize}\itemsep=0pt +\item {\bf wxToolBarBase.} This is a base class with pure virtual functions, +and should not be used directly. +\item {\bf wxToolBarSimple.} A simple toolbar class written entirely with generic wxWindows +functionality. A simply 3D effect for buttons is possible, but it is not consistent +with the Windows look and feel. This toolbar can scroll, and you can have arbitrary +numbers of rows and columns. +\item {\bf wxToolBarMSW.} This class implements an old-style Windows toolbar, only on +Windows. There are small, three-dimensional buttons, which do not (currently) reflect +the current Windows colour settings: the buttons are grey. +\item {\bf wxToolBar95.} Uses the native Windows 95 toolbar class. It dynamically adjusts its +background and button colours according to user colour settings. +CreateTools must be called after the tools have been added. +No absolute positioning is supported but you can specify the number +of rows, and add tool separators with {\bf AddSeparator}. {\bf Layout} does nothing. +Tooltips are supported. {\bf OnRightClick} is not supported. +For some reason, a wxToolBar95 control cannot be moved to any +position other than the top-left of the frame. +\end{itemize} + +A toolbar might appear as a single row of images under +the menubar, or it might be in a separate frame layout in several rows +and columns. The class handles the layout of the images, unless explicit +positioning is requested. + +A tool is a bitmap which can either be a button (there is no `state', +it just generates an event when clicked) or it can be a toggle. If a +toggle, a second bitmap can be provided to depict the `on' state; if +the second bitmap is omitted, either the inverse of the first bitmap +will be used (for monochrome displays) or a thick border is drawn +around the bitmap (for colour displays where inverting will not have +the desired result). + +The Windows-specific toolbar classes expect 16-colour bitmaps that are 16 pixels wide and 15 pixels +high. If you want to use a different size, call {\bf SetDefaultSize}\rtfsp +as the demo shows, before adding tools to the button bar. Don't supply more than +one bitmap for each tool, because the toolbar generates all three images (normal, +depressed and checked) from the single bitmap you give it. + +Mouse click events for a given button are sent to a member called +\rtfsp{\bf OnLeftClick}, and so an application must derive from wxToolBar in order +to use it. The application can also handle {\bf OnMouseEnter} events for +the tools, to give the user extra feedback about the tools as the mouse +moves over them. + +\subsection{Using the toolbar library} + +Include one of the files {\tt tbarsmpl.h, tbar95.h, tbarmsw.h}. + +Example of toolbar use are given in the sample programs tbarsmpl, +tbarmsw and tbar95. + +Each sample creates a main window, and two toolbars: a floating toolbar +with 24 tools, and a toolbar along the top of the main drawing canvas, divided into groups. + +The test program defines a general-purpose derived frame called +\rtfsp{\bf wxFrameWithToolBar} which can manage a frame with one main subwindow +and one horizontal toolbar. + +Note that one of the bitmaps on the floating toolbar is a small version of the +main graphic: this demonstrates how a memory device context can be used to +draw into a bitmap. An application which allowed the user to build up a symbol +library dynamically might create this kind of bitmap. + +Left clicks and movements over the toolbars are intercepted and information +is displayed on the status line. + +The following fragment illustrates the essence of creating a toolbar. + +\begin{verbatim} + toolBarBitmaps[0] = new wxBitmap("icon1"); + toolBarBitmaps[1] = new wxBitmap("icon2"); + toolBarBitmaps[2] = new wxBitmap("icon3"); + ... + + toolBarFrame = new wxFrame(NULL, "Tools", -1, wxPoint(0, 0), wxSize(300, 200), + wxDEFAULT_FRAME_STYLE | wxSTAY_ON_TOP); + + // 5 rows + toolBar = new TestToolBar(toolBarFrame, 10, 10, -1, -1, 0, wxVERTICAL, 5); + toolBar->SetMargins(2, 2); + + for (int i = 10; i < 25; i++) + toolBar->AddTool(i, toolBarBitmaps[i], NULL, TRUE); + + toolBar->Layout(); + float maxWidth, maxHeight; + wxSize size(toolBar->GetMaxSize()); + toolBarFrame->SetClientSize(maxSize.x, maxSize.y); + toolBarFrame->Show(TRUE); +\end{verbatim} + diff --git a/docs/latex/wx/ttreectl.tex b/docs/latex/wx/ttreectl.tex new file mode 100644 index 0000000000..fb6f85e216 --- /dev/null +++ b/docs/latex/wx/ttreectl.tex @@ -0,0 +1,6 @@ +\section{wxTreeCtrl overview}\label{wxtreectrloverview} + +Classes: \helpref{wxTreeCtrl}{wxtreectrl}, \helpref{wxImageList}{wximagelist} + +TODO. + diff --git a/docs/latex/wx/tusage.tex b/docs/latex/wx/tusage.tex new file mode 100644 index 0000000000..51ee8552b9 --- /dev/null +++ b/docs/latex/wx/tusage.tex @@ -0,0 +1,22 @@ +\section{Notes on using the reference}\label{referencenotes} + +In the descriptions of the wxWindows classes and their member +functions, note that descriptions of inherited member functions are not +duplicated in derived classes unless their behaviour is different. So in +using a class such as wxCanvas, be aware that wxWindow functions may be +relevant. + +Note also that arguments with default values may be omitted from a +function call, for brevity. Size and position arguments may usually be +given a value of -1 (the default), in which case wxWindows will choose a +suitable value. + +Most strings are returned as wxString objects. However, for remaining +char * return values, the strings are allocated and +deallocated by wxWindows. Therefore, return values should always be +copied for long-term use, especially since the same buffer is often +used by wxWindows. + +The member functions are given in alphabetical order except for +constructors and destructors which appear first. + diff --git a/docs/latex/wx/tvalidat.tex b/docs/latex/wx/tvalidat.tex new file mode 100644 index 0000000000..2709a704c6 --- /dev/null +++ b/docs/latex/wx/tvalidat.tex @@ -0,0 +1,116 @@ +\section{Validator overview}\label{validatoroverview} + +Classes: \helpref{wxValidator}{wxvalidator}, \helpref{wxTextValidator}{wxtextvalidator} + +The aim of the validator concept is to make dialogs very much easier to write. +A validator is an object that can be plugged into a control (such as a wxTextCtrl), and +mediates between C++ data and the control, transferring the data in either direction +and validating it. It also is able to intercept events generated +by the control, providing filtering behaviour without the need to derive a new control class. + +You can use a stock validator, such as \helpref{wxTextValidator}{wxtextvalidator}; or +you can write your own. + +\wxheading{Example} + +Here is an example of wxTextValidator usage. + +\begin{verbatim} + wxTextCtrl *txt1 = new wxTextCtrl(this, VALIDATE_TEXT, "", + wxPoint(10, 10), wxSize(100, 80), 0, + wxTextValidator(wxFILTER_ALPHA, &g_data.m_string)); +\end{verbatim} + +In this example, the text validator object provides the following functionality: + +\begin{enumerate}\itemsep=0pt +\item It transfers the value of g\_data.m\_string (a wxString variable) to the wxTextCtrl when +the dialog is initialised. +\item It transfers the wxTextCtrl data back to this variable when the dialog is dismissed. +\item It filters input characters so that only alphabetic characters are allowed. +\end{enumerate} + +The validation and filtering of input is accomplished in two ways. When a character is input, +wxTextValidator checks the character against the allowed filter flag (wxFILTER\_ALPHA in this case). If +the character is inappropriate, it is vetoed (does not appear) and a warning beep sounds. +The second type of validation is performed when the dialog is about to be dismissed, so if +the default string contained invalid characters already, a dialog box is shown giving the +error, and the dialog is not dismissed. + +\wxheading{Anatomy of a validator} + +A programmer creating a new validator class should provide the following functionality. + +A validator constructor is responsible for allowing the programmer to specify the kind +of validation required, and perhaps a pointer to a C++ variable that is used for storing the +data for the control. If such a variable address is not supplied by the user, then +the validator should store the data internally. + +The \helpref{wxValidator::Validate}{wxvalidatorvalidate} member function should return +TRUE if the data in the control (not the C++ variable) is valid. It should also show +an appropriate message if data was not valid. + +The \helpref{wxValidator::TransferToWindow}{wxvalidatortransfertowindow} member function should +transfer the data from the validator or associated C++ variable to the control. + +The \helpref{wxValidator::TransferFromWindow}{wxvalidatortransferfromwindow} member function should +transfer the data from the control to the validator or associated C++ variable. + +There should be a copy constructor, and a \helpref{wxValidator::Clone}{wxvalidatorclone} function +which returns a copy of the validator object. This is important because validators +are passed by reference to window constructors, and must therefore be cloned internally. + +You can optionally define event handlers for the validator, to implement filtering. These handlers +will capture events before the control itself does. + +For an example implementation, see the valtext.h and valtext.cpp files in the wxWindows library. + +\wxheading{How validators interact with dialogs} + +For validators to work correctly, validator functions must be called at the right times during +dialog initialisation and dismissal. + +When a \helpref{wxDialog::Show}{wxdialogshow} is called (for a modeless dialog) +or \helpref{wxDialog::ShowModal}{wxdialogshowmodal} is called (for a modal dialog), +the function \helpref{wxWindow::InitDialog}{wxwindowinitdialog} is automatically called. +This in turn sends an initialisation event to the dialog. The default handler for +the wxEVT\_INIT\_DIALOG event is defined in the wxWindow class to simply call +the function \helpref{wxWindow::TransferDataToWindow}{wxwindowtransferdatatowindow}. This +function finds all the validators in the window's children and calls the TransferToWindow +function for each. Thus, data is transferred from C++ variables to the dialog +just as the dialog is being shown. + +\normalbox{If you are using a window or panel instead of a dialog, you will need to +call \helpref{wxWindow::InitDialog}{wxwindowinitdialog} explicitly before showing the +window.} + +When the user clicks on a button, for example the OK button, the application should +first call \helpref{wxWindow::Validate}{wxwindowvalidate}, which returns FALSE if +any of the child window validators failed to validate the window data. The button handler +should return immediately if validation failed. Secondly, the application should +call \helpref{wxWindow::TransferDataFromWindow}{wxwindowtransferdatafromwindow} and +return if this failed. It is then safe to end the dialog by calling EndModal (if modal) +or Show (if modeless). + +In fact, wxDialog contains a default command event handler for the wxID\_OK button. It goes like +this: + +\begin{verbatim} +void wxDialog::OnOK(wxCommandEvent& event) +{ + if ( Validate() && TransferDataFromWindow() ) + { + if ( IsModal() ) + EndModal(wxID_OK); + else + { + SetReturnCode(wxID_OK); + this->Show(FALSE); + } + } +} +\end{verbatim} + +So if using validators and a normal OK button, you may not even need to write any +code for handling dialog dismissal. + diff --git a/docs/latex/wx/up.gif b/docs/latex/wx/up.gif new file mode 100644 index 0000000000000000000000000000000000000000..316d0d2a14b571bea2eb874efd04bfe509f53b34 GIT binary patch literal 137 zcmV;40CxXJNk%v~VHyA!0Pz3-zrVld=jU&4Z(9HWEC2ui02%-o0007FjE||ytzv+j zv|1owxcuhWh0?c)Avq0}dTQw^q7qBdoDA6WKJ*l>%gtCeAWZlgxpoy|ZDMRPr_m>p rx}08pS4?)u<%PW=wxdategreaterthan +3 wxDate::operator >==wxdategreaterthaneq +3 wxDate::operator ===wxdateequals +3 wxDate::operator !==wxdatenotequals +3 wxDate::operator <<=wxdateinsert +2 wxDC +3 wxDC=wxdc +3 wxDC::wxDC=topic168 +3 wxDC::~wxDC=topic169 +3 wxDC::BeginDrawing=wxdcbegindrawing +3 wxDC::Blit=wxdcblit +3 wxDC::Clear=wxdcclear +3 wxDC::CrossHair=wxdccrosshair +3 wxDC::DestroyClippingRegion=wxdcdestroyclippingregion +3 wxDC::DeviceToLogicalX=wxdcdevicetologicalx +3 wxDC::DeviceToLogicalXRel=wxdcdevicetologicalxrel +3 wxDC::DeviceToLogicalY=wxdcdevicetologicaly +3 wxDC::DeviceToLogicalYRel=wxdcdevicetologicalyrel +3 wxDC::DrawArc=wxdcdrawarc +3 wxDC::DrawEllipse=wxdcdrawellipse +3 wxDC::DrawEllipticArc=wxdcdrawellipticarc +3 wxDC::DrawIcon=wxdcdrawicon +3 wxDC::DrawLine=wxdcdrawline +3 wxDC::DrawLines=wxdcdrawlines +3 wxDC::DrawPolygon=wxdcdrawpolygon +3 wxDC::DrawPoint=wxdcdrawpoint +3 wxDC::DrawRectangle=wxdcdrawrectangle +3 wxDC::DrawRoundedRectangle=wxdcdrawroundedrectangle +3 wxDC::DrawSpline=wxdcdrawspline +3 wxDC::DrawText=wxdcdrawtext +3 wxDC::EndDoc=wxdcenddoc +3 wxDC::EndDrawing=wxdcenddrawing +3 wxDC::EndPage=wxdcendpage +3 wxDC::FloodFill=wxdcfloodfill +3 wxDC::GetBackground=wxdcgetbackground +3 wxDC::GetBrush=wxdcgetbrush +3 wxDC::GetCharHeight=wxdcgetcharheight +3 wxDC::GetCharWidth=wxdcgetcharwidth +3 wxCanvas::GetClippingBox=wxdcgetclippingbox +3 wxDC::GetFont=wxdcgetfont +3 wxDC::GetLogicalFunction=wxdcgetlogicalfunction +3 wxDC::GetMapMode=wxdcgetmapmode +3 wxDC::GetOptimization=wxdcgetoptimization +3 wxDC::GetPen=wxdcgetpen +3 wxDC::GetPixel=wxdcgetpixel +3 wxDC::GetSize=wxdcgetsize +3 wxDC::GetTextBackground=wxdcgettextbackground +3 wxDC::GetTextExtent=wxdcgettextextent +3 wxDC::GetTextForeground=wxdcgettextforeground +3 wxDC::LogicalToDeviceX=wxdclogicaltodevicex +3 wxDC::LogicalToDeviceXRel=wxdclogicaltodevicexrel +3 wxDC::LogicalToDeviceY=wxdclogicaltodevicey +3 wxDC::LogicalToDeviceYRel=wxdclogicaltodeviceyrel +3 wxDC::MaxX=wxdcmaxx +3 wxDC::MaxY=wxdcmaxy +3 wxDC::MinX=wxdcminx +3 wxDC::MinY=wxdcminy +3 wxDC::Ok=wxdcok +3 wxDC::SetDeviceOrigin=wxdcsetdeviceorigin +3 wxDC::SetBackground=wxdcsetbackground +3 wxDC::SetBackgroundMode=wxdcsetbackgroundmode +3 wxDC::SetClippingRegion=wxdcsetclippingregion +3 wxDC::SetPalette=wxdcsetpalette +3 wxDC::SetBrush=wxdcsetbrush +3 wxDC::SetFont=wxdcsetfont +3 wxDC::SetLogicalFunction=wxdcsetlogicalfunction +3 wxDC::SetMapMode=wxdcsetmapmode +3 wxDC::SetOptimization=wxsetoptimization +3 wxDC::SetPen=wxdcsetpen +3 wxDC::SetTextBackground=wxdcsettextbackground +3 wxDC::SetTextForeground=wxdcsettextforeground +3 wxDC::SetUserScale=wxdcsetuserscale +3 wxDC::StartDoc=wxdcstartdoc +3 wxDC::StartPage=wxdcstartpage +2 wxDDEClient +3 wxDDEClient=wxddeclient +3 wxDDEClient::wxDDEClient=topic170 +3 wxDDEClient::MakeConnection=wxddeclientmakeconnection +3 wxDDEClient::OnMakeConnection=wxddeclientonmakeconnection +3 wxDDEClient::ValidHost=topic171 +2 wxDDEConnection +3 wxDDEConnection=wxddeconnection +3 wxDDEConnection::wxDDEConnection=topic172 +3 wxDDEConnection::Advise=topic173 +3 wxDDEConnection::Execute=topic174 +3 wxDDEConnection::Disconnect=topic175 +3 wxDDEConnection::OnAdvise=wxddeconnectiononadvise +3 wxDDEConnection::OnDisconnect=wxddeconnectionondisconnect +3 wxDDEConnection::OnExecute=wxddeconnectiononexecute +3 wxDDEConnection::OnPoke=wxddeconnectiononpoke +3 wxDDEConnection::OnRequest=wxddeconnectiononrequest +3 wxDDEConnection::OnStartAdvise=wxddeconnectiononstartadvise +3 wxDDEConnection::OnStopAdvise=wxddeconnectiononstopadvise +3 wxDDEConnection::Poke=wxddeconnectionpoke +3 wxDDEConnection::Request=wxddeconnectionrequest +3 wxDDEConnection::StartAdvise=wxddeconnectionstartadvise +3 wxDDEConnection::StopAdvise=wxddeconnectionstopadvise +2 wxDDEServer +3 wxDDEServer=wxddeserver +3 wxDDEServer::wxDDEServer=topic176 +3 wxDDEServer::Create=topic177 +3 wxDDEServer::OnAcceptConnection=wxddeserveronacceptconnection +2 wxDebugContext +3 wxDebugContext=wxdebugcontext +3 wxDebugContext::Check=wxdebugcontextcheck +3 wxDebugContext::Dump=wxdebugcontextdump +3 wxDebugContext::GetCheckPrevious=wxdebugcontextgetcheckprevious +3 wxDebugContext::GetDebugMode=wxdebugcontextgetdebugmode +3 wxDebugContext::GetLevel=wxdebugcontextgetlevel +3 wxDebugContext::GetStream=wxdebugcontextgetstream +3 wxDebugContext::GetStreamBuf=wxdebugcontextgetstreambuf +3 wxDebugContext::HasStream=wxdebugcontexthasstream +3 wxDebugContext::PrintClasses=wxdebugcontextprintclasses +3 wxDebugContext::PrintStatistics=wxdebugcontextprintstatistics +3 wxDebugContext::SetCheckpoint=wxdebugcontextsetcheckpoint +3 wxDebugContext::SetCheckPrevious=wxdebugcontextsetcheckprevious +3 wxDebugContext::SetDebugMode=wxdebugcontextsetdebugmode +3 wxDebugContext::SetFile=wxdebugcontextsetfile +3 wxDebugContext::SetLevel=wxdebugcontextsetlevel +3 wxDebugContext::SetStandardError=wxdebugcontextsetstandarderror +3 wxDebugContext::SetStream=wxdebugcontextsetstream +2 wxDebugStreamBuf +3 wxDebugStreamBuf=wxdebugstreambuf +2 wxDialog +3 wxDialog=wxdialog +3 wxDialog::wxDialog=wxdialogconstr +3 wxDialog::~wxDialog=topic178 +3 wxDialog::Centre=wxdialogcentre +3 wxDialog::Create=wxdialogcreate +3 wxDialog::EndModal=wxdialogendmodal +3 wxDialog::GetTitle=wxdialoggettitle +3 wxDialog::Iconize=wxdialogiconized +3 wxDialog::IsIconized=wxdialogisiconized +3 wxDialog::IsModal=wxdialogismodal +3 wxDialog::OnCharHook=wxdialogoncharhook +3 wxDialog::OnApply=wxdialogonapply +3 wxDialog::OnCancel=wxdialogoncancel +3 wxDialog::OnOK=wxdialogonok +3 wxDialog::OnSysColourChanged=wxdialogonsyscolourchanged +3 wxDialog::SetModal=wxdialogsetmodal +3 wxDialog::SetTitle=wxdialogsettitle +3 wxDialog::Show=wxdialogshow +3 wxDialog::ShowModal=wxdialogshowmodal +2 wxDirDialog +3 wxDirDialog=wxdirdialog +3 wxDirDialog::wxDirDialog=wxdirdialogconstr +3 wxDirDialog::~wxDirDialog=topic179 +3 wxDirDialog::GetPath=wxdirdialoggetpath +3 wxDirDialog::GetMessage=wxdirdialoggetmessage +3 wxDirDialog::GetStyle=wxdirdialoggetstyle +3 wxDirDialog::SetMessage=wxdirdialogsetmessage +3 wxDirDialog::SetPath=wxdirdialogsetpath +3 wxDirDialog::SetStyle=wxdirdialogsetstyle +3 wxDirDialog::ShowModal=wxdirdialogshowmodal +2 wxDocument +3 wxDocument=wxdocument +3 wxDocument::m_commandProcessor=topic180 +3 wxDocument::m_documentFile=topic181 +3 wxDocument::m_documentModified=topic182 +3 wxDocument::m_documentTemplate=topic183 +3 wxDocument::m_documentTitle=topic184 +3 wxDocument::m_documentTypeName=documenttypename +3 wxDocument::m_documentViews=topic185 +3 wxDocument::wxDocument=topic186 +3 wxDocument::~wxDocument=topic187 +3 wxDocument::AddView=topic188 +3 wxDocument::Close=topic189 +3 wxDocument::DeleteAllViews=topic190 +3 wxDocument::GetCommandProcessor=topic191 +3 wxDocument::GetDocumentTemplate=topic192 +3 wxDocument::GetDocumentManager=topic193 +3 wxDocument::GetDocumentName=topic194 +3 wxDocument::GetDocumentWindow=topic195 +3 wxDocument::GetFilename=topic196 +3 wxDocument::GetFirstView=topic197 +3 wxDocument::GetPrintableName=topic198 +3 wxDocument::GetTitle=topic199 +3 wxDocument::IsModified=wxdocumentismodified +3 wxDocument::LoadObject=topic200 +3 wxDocument::Modify=wxdocumentmodify +3 wxDocument::OnChangedViewList=topic201 +3 wxDocument::OnCloseDocument=topic202 +3 wxDocument::OnCreate=topic203 +3 wxDocument::OnCreateCommandProcessor=topic204 +3 wxDocument::OnNewDocument=topic205 +3 wxDocument::OnOpenDocument=topic206 +3 wxDocument::OnSaveDocument=topic207 +3 wxDocument::OnSaveModified=topic208 +3 wxDocument::RemoveView=topic209 +3 wxDocument::Save=topic210 +3 wxDocument::SaveAs=topic211 +3 wxDocument::SaveObject=topic212 +3 wxDocument::SetCommandProcessor=topic213 +3 wxDocument::SetDocumentName=topic214 +3 wxDocument::SetDocumentTemplate=topic215 +3 wxDocument::SetFilename=topic216 +3 wxDocument::SetTitle=topic217 +2 wxDocChildFrame +3 wxDocChildFrame=wxdocchildframe +3 wxDocChildFrame::m_childDocument=topic218 +3 wxDocChildFrame::m_childView=topic219 +3 wxDocChildFrame::wxDocChildFrame=topic220 +3 wxDocChildFrame::~wxDocChildFrame=topic221 +3 wxDocChildFrame::GetDocument=topic222 +3 wxDocChildFrame::GetView=topic223 +3 wxDocChildFrame::OnActivate=topic224 +3 wxDocChildFrame::OnClose=topic225 +3 wxDocChildFrame::SetDocument=topic226 +3 wxDocChildFrame::SetView=topic227 +2 wxDocManager +3 wxDocManager=wxdocmanager +3 wxDocManager::m_currentView=topic228 +3 wxDocManager::m_defaultDocumentNameCounter=topic229 +3 wxDocManager::m_fileHistory=topic230 +3 wxDocManager::m_maxDocsOpen=topic231 +3 wxDocManager::m_docs=topic232 +3 wxDocManager::m_flags=topic233 +3 wxDocManager::m_templates=topic234 +3 wxDocManager::wxDocManager=topic235 +3 wxDocManager::~wxDocManager=topic236 +3 wxDocManager::ActivateView=topic237 +3 wxDocManager::AddDocument=topic238 +3 wxDocManager::AddFileToHistory=topic239 +3 wxDocManager::AssociateTemplate=topic240 +3 wxDocManager::CreateDocument=topic241 +3 wxDocManager::CreateView=topic242 +3 wxDocManager::DisassociateTemplate=topic243 +3 wxDocManager::FileHistoryLoad=topic244 +3 wxDocManager::FileHistorySave=topic245 +3 wxDocManager::FileHistoryUseMenu=topic246 +3 wxDocManager::FindTemplateForPath=topic247 +3 wxDocManager::GetCurrentDocument=topic248 +3 wxDocManager::GetCurrentView=topic249 +3 wxDocManager::GetDocuments=topic250 +3 wxDocManager::GetFileHistory=topic251 +3 wxDocManager::GetMaxDocsOpen=topic252 +3 wxDocManager::GetNoHistoryFiles=topic253 +3 wxDocManager::Initialize=wxdocmanagerinitialize +3 wxDocManager::MakeDefaultName=topic254 +3 wxDocManager::OnCreateFileHistory=topic255 +3 wxDocManager::OnFileClose=topic256 +3 wxDocManager::OnFileNew=topic257 +3 wxDocManager::OnFileOpen=topic258 +3 wxDocManager::OnFileSave=topic259 +3 wxDocManager::OnFileSaveAs=topic260 +3 wxDocManager::OnMenuCommand=topic261 +3 wxDocManager::RemoveDocument=topic262 +3 wxDocManager::SelectDocumentPath=topic263 +3 wxDocManager::SelectDocumentType=topic264 +3 wxDocManager::SelectViewType=topic265 +3 wxDocManager::SetMaxDocsOpen=topic266 +2 wxDocParentFrame +3 wxDocParentFrame=wxdocparentframe +3 wxDocParentFrame::wxDocParentFrame=topic267 +3 wxDocParentFrame::~wxDocParentFrame=topic268 +3 wxDocParentFrame::OnClose=topic269 +2 wxDocTemplate +3 wxDocTemplate=wxdoctemplate +3 wxDocTemplate::m_defaultExt=topic270 +3 wxDocTemplate::m_description=topic271 +3 wxDocTemplate::m_directory=topic272 +3 wxDocTemplate::m_docClassInfo=topic273 +3 wxDocTemplate::m_docTypeName=topic274 +3 wxDocTemplate::m_documentManager=topic275 +3 wxDocTemplate::m_fileFilter=topic276 +3 wxDocTemplate::m_flags=topic277 +3 wxDocTemplate::m_viewClassInfo=topic278 +3 wxDocTemplate::m_viewTypeName=topic279 +3 wxDocTemplate::wxDocTemplate=topic280 +3 wxDocTemplate::~wxDocTemplate=topic281 +3 wxDocTemplate::CreateDocument=topic282 +3 wxDocTemplate::CreateView=topic283 +3 wxDocTemplate::GetDefaultExtension=topic284 +3 wxDocTemplate::GetDescription=topic285 +3 wxDocTemplate::GetDirectory=topic286 +3 wxDocTemplate::GetDocumentManager=topic287 +3 wxDocTemplate::GetDocumentName=topic288 +3 wxDocTemplate::GetFileFilter=topic289 +3 wxDocTemplate::GetFlags=topic290 +3 wxDocTemplate::GetViewName=topic291 +3 wxDocTemplate::IsVisible=topic292 +3 wxDocTemplate::SetDefaultExtension=topic293 +3 wxDocTemplate::SetDescription=topic294 +3 wxDocTemplate::SetDirectory=topic295 +3 wxDocTemplate::SetDocumentManager=topic296 +3 wxDocTemplate::SetFileFilter=topic297 +3 wxDocTemplate::SetFlags=topic298 +2 wxDropFilesEvent +3 wxDropFilesEvent=wxdropfilesevent +3 wxDropFilesEvent::wxDropFilesEvent=topic299 +3 wxDropFilesEvent::m_files=topic300 +3 wxDropFilesEvent::m_noFiles=topic301 +3 wxDropFilesEvent::m_pos=topic302 +3 wxDropFilesEvent::GetFiles=wxdropfileseventgetfiles +3 wxDropFilesEvent::GetNumberOfFiles=wxdropfileseventgetnumberoffiles +3 wxDropFilesEvent::GetPosition=wxdropfileseventgetposition +2 wxEraseEvent +3 wxEraseEvent=wxeraseevent +3 wxEraseEvent::wxEraseEvent=topic303 +3 wxEraseEvent::m_dc=topic304 +3 wxEraseEvent::GetDC=wxeraseeventgetdc +2 wxEvent +3 wxEvent=wxevent +3 wxEvent::wxEvent=topic305 +3 wxEvent::m_eventHandle=topic306 +3 wxEvent::m_eventObject=topic307 +3 wxEvent::m_eventType=topic308 +3 wxEvent::m_id=topic309 +3 wxEvent::m_skipped=topic310 +3 wxEvent::m_timeStamp=topic311 +3 wxEvent::GetEventClass=topic312 +3 wxEvent::GetEventObject=topic313 +3 wxEvent::GetEventType=topic314 +3 wxEvent::GetId=topic315 +3 wxEvent::GetObjectType=topic316 +3 wxEvent::GetSkipped=topic317 +3 wxEvent::GetTimestamp=topic318 +3 wxEvent::SetEventObject=topic319 +3 wxEvent::SetEventType=topic320 +3 wxEvent::SetId=topic321 +3 wxEvent::SetTimestamp=topic322 +3 wxEvent::Skip=wxeventskip +2 wxEvtHandler +3 wxEvtHandler=wxevthandler +3 wxEvtHandler::wxEvtHandler=topic323 +3 wxEvtHandler::~wxEvtHandler=topic324 +3 wxEvtHandler::Default=wxevthandlerdefault +3 wxEvtHandler::GetClientData=wxevthandlergetclientdata +3 wxEvtHandler::GetEvtHandlerEnabled=wxevthandlergetevthandlerenabled +3 wxEvtHandler::GetNextHandler=wxevthandlergetnexthandler +3 wxEvtHandler::GetPreviousHandler=wxevthandlergetprevioushandler +3 wxEvtHandler::ProcessEvent=wxevthandlerprocessevent +3 wxEvtHandler::SearchEventTable=wxevthandlersearcheventtable +3 wxEvtHandler::SetClientData=wxevthandlersetclientdata +3 wxEvtHandler::SetEvtHandlerEnabled=wxevthandlersetevthandlerenabled +3 wxEvtHandler::SetNextHandler=wxevthandlersetnexthandler +3 wxEvtHandler::SetPreviousHandler=wxevthandlersetprevioushandler +2 wxExpr +3 wxExpr=wxexpr +3 wxExpr::wxExpr=wxexprconstr +3 wxExpr::~wxExpr=topic325 +3 wxExpr::AddAttributeValue=wxexpraddattributevalue +3 wxExpr::AddAttributeValueString=wxexpraddattributevaluestring +3 wxExpr::AddAttributeValueStringList=wxexpraddattributevaluestringlist +3 wxExpr::AddAttributeValueWord=wxexpraddattributevalueword +3 wxExpr::Append=wxexprappend +3 wxExpr::Arg=wxexprarg +3 wxExpr::Insert=wxexprinsert +3 wxExpr::GetAttributeValue=wxexprgetattributevalue +3 wxExpr::GetAttributeValueStringList=wxexprgetattributestringlist +3 wxExpr::AttributeValue=wxexprattributevalue +3 wxExpr::Copy=wxexprcopy +3 wxExpr::DeleteAttributeValue=wxexprdeletattributevalue +3 wxExpr::Functor=wxexprfunctor +3 wxExpr::GetClientData=wxexprgetclientdata +3 wxExpr::GetFirst=wxexprgetfirst +3 wxExpr::GetLast=wxexprgetlast +3 wxExpr::GetNext=wxexprgetnext +3 wxExpr::IntegerValue=wxexprintegervalue +3 wxExpr::Nth=wxexprnth +3 wxExpr::RealValue=wxexprrealvalue +3 wxExpr::SetClientData=wxexprsetclientdata +3 wxExpr::StringValue=wxexprstringvalue +3 wxExpr::Type=wxexprtype +3 wxExpr::WordValue=wxexprwordvalue +3 wxExpr::WriteLispExpr=wxexprwritelistexpr +3 wxExpr::WritePrologClause=wxexprwriteprologclause +3 wxExpr::WriteExpr=wxexprwriteexpr +3 Functions and macros=topic326 +2 wxExprDatabase +3 wxExprDatabase=wxexprdatabase +3 wxExprDatabase::wxExprDatabase=wxexprdatabaseconstr +3 wxExprDatabase::~wxExprDatabase=topic327 +3 wxExprDatabase::Append=wxexprdatabaseappend +3 wxExprDatabase::BeginFind=wxexprdatabasebeginfind +3 wxExprDatabase::ClearDatabase=wxexprdatabasecleardatabase +3 wxExprDatabase::FindClause=wxexprdatabasefindclause +3 wxExprDatabase::FindClauseByFunctor=wxexprdatabasefindclausebyfunctor +3 wxExprDatabase::GetErrorCount=wxexprdatabasegeterrorcount +3 wxExprDatabase::HashFind=wxexprdatabasehashfind +3 wxExprDatabase::Read=wxexprdatabaseread +3 wxExprDatabase::ReadFromString=wxexprdatabasereadfromstring +3 wxExprDatabase::WriteLisp=wxexprdatabasewritelisp +3 wxExprDatabase::Write=wxexprdatabasewrite +2 wxFileDialog +3 wxFileDialog=wxfiledialog +3 wxFileDialog::wxFileDialog=wxfiledialogconstr +3 wxFileDialog::~wxFileDialog=topic328 +3 wxFileDialog::GetDirectory=wxfiledialoggetdirectory +3 wxFileDialog::GetFilename=wxfiledialoggetfilename +3 wxFileDialog::GetFilterIndex=wxfiledialoggetfilterindex +3 wxFileDialog::GetMessage=wxfiledialoggetmessage +3 wxFileDialog::GetPath=wxfiledialoggetpath +3 wxFileDialog::GetStyle=wxfiledialoggetstyle +3 wxFileDialog::GetWildcard=wxfiledialoggetwildcard +3 wxFileDialog::SetDirectory=wxfiledialogsetdirectory +3 wxFileDialog::SetFilename=wxfiledialogsetfilename +3 wxFileDialog::SetFilterIndex=wxfiledialogsetfilterindex +3 wxFileDialog::SetMessage=wxfiledialogsetmessage +3 wxFileDialog::SetPath=wxfiledialogsetpath +3 wxFileDialog::SetStyle=wxfiledialogsetstyle +3 wxFileDialog::SetWildcard=wxfiledialogsetwildcard +3 wxFileDialog::ShowModal=wxfiledialogshowmodal +2 wxFileHistory +3 wxFileHistory=wxfilehistory +3 wxFileHistory::m_fileHistory=topic329 +3 wxFileHistory::m_fileHistoryN=topic330 +3 wxFileHistory::m_fileMaxFiles=topic331 +3 wxFileHistory::m_fileMenu=topic332 +3 wxFileHistory::wxFileHistory=topic333 +3 wxFileHistory::~wxFileHistory=topic334 +3 wxFileHistory::AddFileToHistory=topic335 +3 wxFileHistory::FileHistoryLoad=topic336 +3 wxFileHistory::FileHistorySave=topic337 +3 wxFileHistory::FileHistoryUseMenu=topic338 +3 wxFileHistory::GetMaxFiles=topic339 +3 wxFileHistory::GetNoHistoryFiles=topic340 +2 wxFocusEvent +3 wxFocusEvent=wxfocusevent +3 wxFocusEvent::wxFocusEvent=topic341 +2 wxFont +3 wxFont=wxfont +3 wxFont::wxFont=wxfontconstr +3 wxFont::~wxFont=topic342 +3 wxFont::GetFaceName=wxfontgetfacename +3 wxFont::GetFamily=wxfontgetfamily +3 wxFont::GetFontId=wxfontgetfontid +3 wxFont::GetPointSize=wxfontgetpointsize +3 wxFont::GetStyle=wxfontgetstyle +3 wxFont::GetUnderlined=wxfontgetunderlined +3 wxFont::GetWeight=wxfontgetweight +3 wxFont::SetFaceName=wxfontsetfacename +3 wxFont::SetFamily=wxfontsetfamily +3 wxFont::SetPointSize=wxfontsetpointsize +3 wxFont::SetStyle=wxfontsetstyle +3 wxFont::SetUnderlined=wxfontsetunderlined +3 wxFont::SetWeight=wxfontsetweight +3 wxFont::operator ==wxfontassignment +3 wxFont::operator ===wxfontequals +3 wxFont::operator !==wxfontnotequals +2 wxFontData +3 wxFontData=wxfontdata +3 wxFontData::wxFontData=topic343 +3 wxFontData::~wxFontData=topic344 +3 wxFontData::EnableEffects=topic345 +3 wxFontData::GetAllowSymbols=topic346 +3 wxFontData::GetColour=topic347 +3 wxFontData::GetChosenFont=topic348 +3 wxFontData::GetEnableEffects=topic349 +3 wxFontData::GetInitialFont=topic350 +3 wxFontData::GetShowHelp=topic351 +3 wxFontData::SetAllowSymbols=topic352 +3 wxFontData::SetChosenFont=topic353 +3 wxFontData::SetColour=topic354 +3 wxFontData::SetInitialFont=topic355 +3 wxFontData::SetRange=topic356 +3 wxFontData::SetShowHelp=topic357 +3 wxFontData::operator ==topic358 +2 wxFontDialog +3 wxFontDialog=wxfontdialog +3 wxFontDialog::wxFontDialog=topic359 +3 wxFontDialog::~wxFontDialog=topic360 +3 wxFontDialog::GetFontData=topic361 +3 wxFontDialog::ShowModal=topic362 +2 wxFontList +3 wxFontList=wxfontlist +3 wxFontList::wxFontList=topic363 +3 wxFontList::AddFont=topic364 +3 wxFontList::FindOrCreateFont=findorcreatefont +3 wxFontList::RemoveFont=topic365 +2 wxFrame +3 wxFrame=wxframe +3 wxFrame::wxFrame=wxframeconstr +3 wxFrame::~wxFrame=topic366 +3 wxFrame::Centre=wxframecentre +3 wxFrame::Command=wxframecommand +3 wxFrame::Create=wxframecreate +3 wxFrame::CreateStatusBar=wxframecreatestatusbar +3 wxFrame::GetMenuBar=wxframegetmenubar +3 wxFrame::GetStatusBar=wxframegetstatusbar +3 wxFrame::GetTitle=wxframegettitle +3 wxFrame::Iconize=wxframeiconize +3 wxFrame::IsIconized=wxframeisiconized +3 wxFrame::LoadAccelerators=wxframeloadaccelerators +3 wxFrame::Maximize=wxframemaximize +3 wxFrame::OnActivate=topic367 +3 wxFrame::OnCreateStatusBar=wxframeoncreatestatusbar +3 wxFrame::OnMenuCommand=wxframeonmenucommand +3 wxFrame::OnMenuHighlight=wxframeonmenuhighlight +3 wxFrame::OnSize=wxframeonsize +3 wxFrame::SetIcon=wxframeseticon +3 wxFrame::SetMenuBar=wxframesetmenubar +3 wxFrame::SetStatusText=wxframesetstatustext +3 wxFrame::SetStatusWidths=wxframesetstatuswidths +3 wxFrame::SetTitle=wxframesettitle +2 wxGauge +3 wxGauge=wxgauge +3 wxGauge::wxGauge=wxgaugeconstr +3 wxGauge::~wxGauge=topic368 +3 wxGauge::Create=wxgaugecreate +3 wxGauge::GetBezelFace=wxgaugegetbezelface +3 wxGauge::GetRange=wxgaugegetrange +3 wxGauge::GetShadowWidth=wxgaugegetshadowwidth +3 wxGauge::GetValue=wxgaugegetvalue +3 wxGauge::SetBezelFace=wxgaugesetbezelface +3 wxGauge::SetRange=wxgaugesetrange +3 wxGauge::SetShadowWidth=wxgaugesetshadowwidth +3 wxGauge::SetValue=wxgaugesetvalue +2 wxGDIObject +3 wxGDIObject=wxgdiobject +3 wxGDIObject::wxGDIObject=wxgdiobjectconstr +2 wxGrid +3 wxGrid=wxgrid +3 wxGrid::wxGrid=wxgridconstr +3 wxGrid::AdjustScrollbars=wxgridadjustscrollbars +3 wxGrid::AppendCols=wxgridappendcols +3 wxGrid::AppendRows=wxgridappendrows +3 wxGrid::BeginBatch=wxgridbeginbatch +3 wxGrid::CellHitTest=wxgridcellhittest +3 wxGrid::CreateGrid=wxgridcreategrid +3 wxGrid::CurrentCellVisible=wxgridcurrentcellvisible +3 wxGrid::DeleteCols=wxgriddeletecols +3 wxGrid::DeleteRows=wxgriddeleterows +3 wxGrid::EndBatch=wxgridendbatch +3 wxGrid::GetBatchCount=wxgridgetbatchcount +3 wxGrid::GetCell=wxgridgetcell +3 wxGrid::GetCellAlignment=wxgridgetcellalignment +3 wxGrid::GetCellBackgroundColour=wxgridgetcellbackgroundcolour +3 wxGrid::GetCells=wxgridgetcells +3 wxGrid::GetCellTextColour=wxgridgetcelltextcolour +3 wxGrid::GetCellTextFont=wxgridgetcelltextfont +3 wxGrid::GetCellValue=wxgridgetcellvalue +3 wxGrid::GetCols=wxgridgetcols +3 wxGrid::GetColumnWidth=wxgridcolumnwidth +3 wxGrid::GetCurrentRect=wxgridgetcurrentrect +3 wxGrid::GetCursorColumn=wxgridgetcursorcolumn +3 wxGrid::GetCursorRow=wxgridgetcursorrow +3 wxGrid::GetEditable=wxgridgeteditable +3 wxGrid::GetHorizScrollBar=wxgridgethorizscrollbar +3 wxGrid::GetLabelAlignment=wxgridgetlabelalignment +3 wxGrid::GetLabelBackgroundColour=wxgridgetlabelbackgroundcolour +3 wxGrid::GetLabelSize=wxgridgetlabelsize +3 wxGrid::GetLabelTextColour=wxgridgetlabeltextcolour +3 wxGrid::GetLabelTextFont=wxgridgetlabeltextfont +3 wxGrid::GetLabelValue=wxgridgetlabelvalue +3 wxGrid::GetRowHeight=wxgridgetrowheight +3 wxGrid::GetRows=wxgridgetrows +3 wxGrid::GetScrollPosX=wxgridgetscrollposx +3 wxGrid::GetScrollPosY=wxgridgetscrollposy +3 wxGrid::GetTextItem=wxgridgettextitem +3 wxGrid::GetVertScrollBar=wxgridgetvertscrollbar +3 wxGrid::InsertCols=wxgridinsertcols +3 wxGrid::InsertRows=wxgridinsertrows +3 wxGrid::OnActivate=wxgridonactivate +3 wxGrid::OnChangeLabels=wxgridonchangelabels +3 wxGrid::OnChangeSelectionLabel=wxgridonchangeselectionlabel +3 wxGrid::OnCreateCell=wxgridoncreatecell +3 wxGrid::OnCellLeftClick=wxgridoncellleftclick +3 wxGrid::OnCellRightClick=wxgridoncellrightclick +3 wxGrid::OnLabelLeftClick=wxgridonlabelleftclick +3 wxGrid::OnLabelRightClick=wxgridonlabelrightclick +3 wxGrid::OnSelectCell=wxgridonselectcell +3 wxGrid::OnSelectCellImplementation=wxgridonselectcellimplementation +3 wxGrid::SetCellAlignment=wxgridsetcellalignment +3 wxGrid::SetCellBackgroundColour=wxgridsetcellbackgroundcolour +3 wxGrid::SetCellTextColour=wxgridsetcelltextcolour +3 wxGrid::SetCellTextFont=wxgridsetcelltextfont +3 wxGrid::SetCellValue=wxgridsetcellvalue +3 wxGrid::SetColumnWidth=wxgridsetcolumnwidth +3 wxGrid::SetDividerPen=wxgridsetdividerpen +3 wxGrid::SetEditable=wxgridseteditable +3 wxGrid::SetGridCursor=wxgridsetgridcursor +3 wxGrid::SetLabelAlignment=wxgridsetlabelalignment +3 wxGrid::SetLabelBackgroundColour=wxgridsetlabelbackgroundcolour +3 wxGrid::SetLabelSize=wxgridsetlabelsize +3 wxGrid::SetLabelTextColour=wxgridsetlabeltextcolour +3 wxGrid::SetLabelTextFont=wxgridsetlabeltextfont +3 wxGrid::SetLabelValue=wxgridsetlabelvalue +3 wxGrid::SetRowHeight=wxgridsetrowheight +3 wxGrid::UpdateDimensions=wxgridupdatedimensions +2 wxHashTable +3 wxHashTable=wxhashtable +3 wxHashTable::wxHashTable=topic369 +3 wxHashTable::~wxHashTable=topic370 +3 wxHashTable::BeginFind=topic371 +3 wxHashTable::Clear=topic372 +3 wxHashTable::Delete=topic373 +3 wxHashTable::Get=topic374 +3 wxHashTable::MakeKey=topic375 +3 wxHashTable::Next=topic376 +3 wxHashTable::Put=topic377 +2 wxHelpInstance +3 wxHelpInstance=wxhelpinstance +3 wxHelpInstance::wxHelpInstance=topic378 +3 wxHelpInstance::~wxHelpInstance=topic379 +3 wxHelpInstance::Initialize=topic380 +3 wxHelpInstance::DisplayBlock=topic381 +3 wxHelpInstance::DisplayContents=topic382 +3 wxHelpInstance::DisplaySection=topic383 +3 wxHelpInstance::KeywordSearch=topic384 +3 wxHelpInstance::LoadFile=topic385 +3 wxHelpInstance::OnQuit=topic386 +3 wxHelpInstance::Quit=topic387 +2 wxIdleEvent +3 wxIdleEvent=wxidleevent +3 wxIdleEvent::wxIdleEvent=topic388 +2 wxIcon +3 wxIcon=wxicon +3 wxIcon::wxIcon=wxiconconstr +3 wxIcon::~wxIcon=topic389 +3 wxIcon::GetDepth=topic390 +3 wxIcon::GetHeight=wxicongetheight +3 wxIcon::GetWidth=wxicongetwidth +3 wxIcon::LoadFile=wxiconloadfile +3 wxIcon::Ok=wxiconok +3 wxIcon::SetDepth=wxiconsetdepth +3 wxIcon::SetHeight=wxiconsetheight +3 wxIcon::SetOk=topic391 +3 wxIcon::SetWidth=topic392 +3 wxIcon::operator ==topic393 +3 wxIcon::operator ===topic394 +3 wxIcon::operator !==topic395 +2 wxImageList +3 wxImageList=wximagelist +3 wxImageList::wxImageList=wximagelistconstr +3 wxImageList::Add=wximagelistadd +3 wxImageList::Create=wximagelistcreate +3 wxImageList::Draw=wximagelistdraw +3 wxImageList::GetImageCount=wximagelistgetimagecount +3 wxImageList::Remove=wximagelistremove +3 wxImageList::RemoveAll=wximagelistremoveall +3 wxImageList::Replace=wximagelistreplace +2 wxIndividualLayoutConstraint +3 wxIndividualLayoutConstraint=wxindividuallayoutconstraint +3 Edges and relationships=topic396 +3 wxIndividualLayoutConstraint::wxIndividualLayoutConstraint=topic397 +3 wxIndividualLayoutConstraint::Above=topic398 +3 wxIndividualLayoutConstraint::Absolute=topic399 +3 wxIndividualLayoutConstraint::AsIs=topic400 +3 wxIndividualLayoutConstraint::Below=topic401 +3 wxIndividualLayoutConstraint::Unconstrained=topic402 +3 wxIndividualLayoutConstraint::LeftOf=topic403 +3 wxIndividualLayoutConstraint::PercentOf=topic404 +3 wxIndividualLayoutConstraint::RightOf=topic405 +3 wxIndividualLayoutConstraint::SameAs=topic406 +3 wxIndividualLayoutConstraint::Set=topic407 +2 wxInitDialogEvent +3 wxInitDialogEvent=wxinitdialogevent +3 wxInitDialogEvent::wxInitDialogEvent=topic408 +2 wxKeyEvent +3 wxKeyEvent=wxkeyevent +3 wxKeyEvent::m_altDown=topic409 +3 wxKeyEvent::m_controlDown=topic410 +3 wxKeyEvent::m_keyCode=topic411 +3 wxKeyEvent::m_metaDown=topic412 +3 wxKeyEvent::m_shiftDown=topic413 +3 wxKeyEvent::m_x=topic414 +3 wxKeyEvent::m_y=topic415 +3 wxKeyEvent::wxKeyEvent=topic416 +3 wxKeyEvent::AltDown=topic417 +3 wxKeyEvent::ControlDown=topic418 +3 wxKeyEvent::GetX=topic419 +3 wxKeyEvent::GetY=topic420 +3 wxKeyEvent::KeyCode=topic421 +3 wxKeyEvent::MetaDown=topic422 +3 wxKeyEvent::Position=topic423 +3 wxKeyEvent::ShiftDown=topic424 +2 wxLayoutConstraints +3 wxLayoutConstraints=wxlayoutconstraints +3 wxLayoutConstraints::wxLayoutConstraints=topic425 +3 wxLayoutConstraints::bottom=topic426 +3 wxLayoutConstraints::centreX=topic427 +3 wxLayoutConstraints::centreY=topic428 +3 wxLayoutConstraints::height=topic429 +3 wxLayoutConstraints::left=topic430 +3 wxLayoutConstraints::right=topic431 +3 wxLayoutConstraints::top=topic432 +3 wxLayoutConstraints::width=topic433 +2 wxList +3 wxList=wxlist +3 wxList::wxList=topic434 +3 wxList::~wxList=topic435 +3 wxList::Append=topic436 +3 wxList::Clear=topic437 +3 wxList::DeleteContents=topic438 +3 wxList::DeleteNode=topic439 +3 wxList::DeleteObject=topic440 +3 wxList::Find=topic441 +3 wxList::First=topic442 +3 wxList::Insert=topic443 +3 wxList::Last=topic444 +3 wxList::Member=topic445 +3 wxList::Nth=topic446 +3 wxList::Number=topic447 +3 wxList::Sort=topic448 +2 wxListBox +3 wxListBox=wxlistbox +3 wxListBox::wxListBox=wxlistboxconstr +3 wxListBox::~wxListBox=topic449 +3 wxListBox::Append=wxlistboxappend +3 wxListBox::Clear=wxlistboxclear +3 wxListBox::Create=wxlistboxcreate +3 wxListBox::Delete=wxlistboxdelete +3 wxListBox::Deselect=wxlistboxdeselect +3 wxListBox::FindString=wxlistboxfindstring +3 wxListBox::GetClientData=wxlistboxgetclientdata +3 wxListBox::GetSelection=wxlistboxgetselection +3 wxListBox::GetSelections=wxlistboxgetselections +3 wxListBox::GetString=wxlistboxgetstring +3 wxListBox::GetStringSelection=wxlistboxgetstringselection +3 wxListBox::Number=wxlistboxnumber +3 wxListBox::Selected=wxlistboxselected +3 wxListBox::Set=wxlistboxset +3 wxListBox::SetClientData=wxlistboxsetclientdata +3 wxListBox::SetFirstItem=wxlistboxsetfirstitem +3 wxListBox::SetSelection=wxlistboxsetselection +3 wxListBox::SetString=wxlistboxsetstring +3 wxListBox::SetStringSelection=wxlistboxsetstringselection +2 wxListCtrl +3 wxListCtrl=wxlistctrl +3 wxListCtrl::wxListCtrl=wxlistctrlconstr +3 wxListCtrl::~wxListCtrl=topic450 +3 wxListCtrl::Arrange=wxlistctrlarrange +3 wxListCtrl::Create=wxlistctrlcreate +3 wxListCtrl::DeleteItem=wxlistctrldeleteitem +3 wxListCtrl::DeleteAllItems=wxlistctrldeleteallitems +3 wxListCtrl::DeleteColumn=wxlistctrldeletecolumn +3 wxListCtrl::Edit=wxlistctrledit +3 wxListCtrl::EnsureVisible=wxlistctrlensurevisible +3 wxListCtrl::FindItem=wxlistctrlfinditem +3 wxListCtrl::GetColumn=wxlistctrlgetcolumn +3 wxListCtrl::GetColumnWidth=wxlistctrlgetcolumnwidth +3 wxListCtrl::GetCountPerPage=wxlistctrlgetcountperpage +3 wxListCtrl::GetEditControl=wxlistctrlgeteditcontrol +3 wxListCtrl::GetImageList=wxlistctrlgetimagelist +3 wxListCtrl::GetItem=wxlistctrlgetitem +3 wxListCtrl::GetItemData=wxlistctrlgetitemdata +3 wxListCtrl::GetItemPosition=wxlistctrlgetitemposition +3 wxListCtrl::GetItemRect=wxlistctrlgetitemrect +3 wxListCtrl::GetItemState=wxlistctrlgetitemstate +3 wxListCtrl::GetItemCount=wxlistctrlgetitemcount +3 wxListCtrl::GetItemSpacing=wxlistctrlgetitemspacing +3 wxListCtrl::GetItemText=wxlistctrlgetitemtext +3 wxListCtrl::GetNextItem=wxlistctrlgetnextitem +3 wxListCtrl::GetSelectedItemCount=wxlistctrlgetselecteditemcount +3 wxListCtrl::GetTextColour=wxlistctrlgettextcolour +3 wxListCtrl::GetTopItem=wxlistctrlgettopitem +3 wxListCtrl::HitTest=wxlistctrlhittest +3 wxListCtrl::InsertColumn=wxlistctrlinsertcolumn +3 wxListCtrl::InsertItem=wxlistctrlinsertitem +3 wxListCtrl::ScrollList=wxlistctrlscrolllist +3 wxListCtrl::SetBackgroundColour=wxlistctrlsetbackgroundcolour +3 wxListCtrl::SetColumn=wxlistctrlsetcolumn +3 wxListCtrl::SetColumnWidth=wxlistctrlsetcolumnwidth +3 wxListCtrl::SetImageList=wxlistctrlsetimagelist +3 wxListCtrl::SetItem=wxlistctrlsetitem +3 wxListCtrl::SetItemData=wxlistctrlsetitemdata +3 wxListCtrl::SetItemImage=wxlistctrlsetitemimage +3 wxListCtrl::SetItemPosition=wxlistctrlsetitemposition +3 wxListCtrl::SetItemState=wxlistctrlsetitemstate +3 wxListCtrl::SetItemText=wxlistctrlsetitemtext +3 wxListCtrl::SetSingleStyle=wxlistctrlsetsinglestyle +3 wxListCtrl::SetTextColour=wxlistctrlsettextcolour +3 wxListCtrl::SetWindowStyleFlag=wxlistctrlsetwindowstyleflag +3 wxListCtrl::SortItems=wxlistctrlsortitems +2 wxListEvent +3 wxListEvent=wxlistevent +3 wxListEvent::wxListEvent=topic451 +3 wxListEvent::m_code=topic452 +3 wxListEvent::m_itemIndex=topic453 +3 wxListEvent::m_oldItemIndex=topic454 +3 wxListEvent::m_col=topic455 +3 wxListEvent::m_cancelled=topic456 +3 wxListEvent::m_pointDrag=topic457 +3 wxListEvent::m_item=topic458 +2 wxMask +3 wxMask=wxmask +3 wxMask::wxMask=wxmaskconstr +3 wxMask::~wxMask=topic459 +2 wxMDIChildFrame +3 wxMDIChildFrame=wxmdichildframe +3 wxMDIChildFrame::wxMDIChildFrame=wxmdichildframeconstr +3 wxMDIChildFrame::~wxMDIChildFrame=topic460 +3 wxMDIChildFrame::Activate=wxmdichildframeactivate +3 wxMDIChildFrame::Create=wxmdichildframecreate +3 wxMDIChildFrame::Maximize=wxmdichildframemaximize +3 wxMDIChildFrame::Restore=wxmdichildframerestore +2 wxMDIClientWindow +3 wxMDIClientWindow=wxmdiclientwindow +3 wxMDIClientWindow::wxMDIClientWindow=wxmdiclientwindowconstr +3 wxMDIClientWindow::~wxMDIClientWindow=topic461 +3 wxMDIClientWindow::CreateClient=wxmdiclientwindowcreateclient +2 wxMDIParentFrame +3 wxMDIParentFrame=wxmdiparentframe +3 wxMDIParentFrame::wxMDIParentFrame=wxmdiparentframeconstr +3 wxMDIParentFrame::~wxMDIParentFrame=topic462 +3 wxMDIParentFrame::ActivateNext=wxmdiparentframeactivatenext +3 wxMDIParentFrame::ActivatePrevious=wxmdiparentframeactivateprevious +3 wxMDIParentFrame::ArrangeIcons=wxmdiparentframearrangeicons +3 wxMDIParentFrame::Cascade=wxmdiparentframecascade +3 wxMDIParentFrame::Create=wxmdiparentframecreate +3 wxMDIParentFrame::GetClientSize=wxmdiparentframegetclientsize +3 wxMDIParentFrame::GetActiveChild=wxmdiparentframegetactivechild +3 wxMDIParentFrame::GetClientWindow=wxmdiparentframegetclientwindow +3 wxMDIParentFrame::GetToolBar=wxmdiparentframegettoolbar +3 wxMDIParentFrame::OnCreateClient=wxmdiparentframeoncreateclient +3 wxMDIParentFrame::SetToolBar=wxmdiparentframesettoolbar +3 wxMDIParentFrame::Tile=wxmdiparentframetile +2 wxMenu +3 wxMenu=wxmenu +3 wxMenu::wxMenu=wxmenuconstr +3 wxMenu::~wxMenu=topic463 +3 wxMenu::Append=wxmenuappend +3 wxMenu::AppendSeparator=wxmenuappendseparator +3 wxMenu::Break=wxmenubreak +3 wxMenu::Check=wxmenucheck +3 wxMenu::Checked=wxmenuchecked +3 wxMenu::Enable=wxmenuenable +3 wxMenu::Enabled=wxmenuenabled +3 wxMenu::FindItem=wxmenufinditem +3 wxMenu::FindItemForId=wxmenufinditemforid +3 wxMenu::GetHelpString=wxmenugethelpstring +3 wxMenu::GetLabel=wxmenugetlabel +3 wxMenu::GetTitle=wxmenugettitle +3 wxMenu::SetHelpString=wxmenusethelpstring +3 wxMenu::SetLabel=wxmenusetlabel +3 wxMenu::SetTitle=wxmenusettitle +2 wxMenuBar +3 wxMenuBar=wxmenubar +3 wxMenuBar::wxMenuBar=wxmenubarconstr +3 wxMenuBar::~wxMenuBar=topic464 +3 wxMenuBar::Append=wxmenubarappend +3 wxMenuBar::Check=wxmenubarcheck +3 wxMenuBar::Checked=wxmenubarchecked +3 wxMenuBar::Enable=wxmenubarenable +3 wxMenuBar::EnableTop=wxmenubarenabletop +3 wxMenuBar::FindMenuItem=wxmenubarfindmenuitem +3 wxMenuBar::FindItemById=wxmenubarfinditembyid +3 wxMenuBar::GetHelpString=wxmenubargethelpstring +3 wxMenuBar::GetLabel=wxmenubargetlabel +3 wxMenuBar::GetLabelTop=wxmenubargetlabeltop +3 wxMenuBar::SetHelpString=wxmenubarsethelpstring +3 wxMenuBar::SetLabel=wxmenubarsetlabel +3 wxMenuBar::SetLabelTop=wxmenubarsetlabeltop +2 wxMenuEvent +3 wxMenuEvent=wxmenuevent +3 wxMenuEvent::wxMenuEvent=topic465 +3 wxMenuEvent::m_menuId=topic466 +3 wxMenuEvent::GetMenuId=wxmenueventgetmenuid +2 wxMemoryDC +3 wxMemoryDC=wxmemorydc +3 wxMemoryDC::wxMemoryDC=topic467 +3 wxMemoryDC::SelectObject=topic468 +2 wxMessageDialog +3 wxMessageDialog=wxmessagedialog +3 wxMessageDialog::wxMessageDialog=wxmessagedialogconstr +3 wxMessageDialog::~wxMessageDialog=topic469 +3 wxMessageDialog::ShowModal=wxmessagedialogshowmodal +2 wxMetaFile +3 wxMetaFile=wxmetafile +3 wxMetaFile::wxMetaFile=topic470 +3 wxMetaFile::~wxMetaFile=topic471 +3 wxMetaFile::Ok=wxmetafileok +3 wxMetaFile::Play=wxmetafileplay +3 wxMetaFile::SetClipboard=topic472 +2 wxMetaFileDC +3 wxMetaFileDC=wxmetafiledc +3 wxMetaFileDC::wxMetaFileDC=topic473 +3 wxMetaFileDC::~wxMetaFileDC=topic474 +3 wxMetaFileDC::Close=wxmetafiledcclose +2 wxMiniFrame +3 wxMiniFrame=wxminiframe +3 wxMiniFrame::wxMiniFrame=wxminiframeconstr +3 wxMiniFrame::~wxMiniFrame=topic475 +3 wxMiniFrame::Create=wxminiframecreate +2 wxMouseEvent +3 wxMouseEvent=wxmouseevent +3 wxMouseEvent::m_altDown=topic476 +3 wxMouseEvent::m_controlDown=topic477 +3 wxMouseEvent::m_leftDown=topic478 +3 wxMouseEvent::m_middleDown=topic479 +3 wxMouseEvent::m_rightDown=topic480 +3 wxMouseEvent::m_leftDown=topic481 +3 wxMouseEvent::m_metaDown=topic482 +3 wxMouseEvent::m_shiftDown=topic483 +3 wxMouseEvent::m_x=topic484 +3 wxMouseEvent::m_y=topic485 +3 wxMouseEvent::wxMouseEvent=topic486 +3 wxMouseEvent::AltDown=topic487 +3 wxMouseEvent::Button=topic488 +3 wxMouseEvent::ButtonDClick=buttondclick +3 wxMouseEvent::ButtonDown=topic489 +3 wxMouseEvent::ButtonUp=topic490 +3 wxMouseEvent::ControlDown=topic491 +3 wxMouseEvent::Dragging=topic492 +3 wxMouseEvent::Entering=wxmouseevententering +3 wxMouseEvent::GetX=wxmouseeventgetx +3 wxMouseEvent::GetY=wxmouseeventgety +3 wxMouseEvent::IsButton=topic493 +3 wxMouseEvent::Leaving=wxmouseeventleaving +3 wxMouseEvent::LeftDClick=topic494 +3 wxMouseEvent::LeftDown=topic495 +3 wxMouseEvent::LeftIsDown=topic496 +3 wxMouseEvent::LeftUp=topic497 +3 wxMouseEvent::MetaDown=topic498 +3 wxMouseEvent::MiddleDClick=topic499 +3 wxMouseEvent::MiddleDown=topic500 +3 wxMouseEvent::MiddleIsDown=topic501 +3 wxMouseEvent::MiddleUp=topic502 +3 wxMouseEvent::Moving=topic503 +3 wxMouseEvent::Position=topic504 +3 wxMouseEvent::RightDClick=topic505 +3 wxMouseEvent::RightDown=topic506 +3 wxMouseEvent::RightIsDown=topic507 +3 wxMouseEvent::RightUp=topic508 +3 wxMouseEvent::ShiftDown=topic509 +2 wxMoveEvent +3 wxMoveEvent=wxmoveevent +3 wxMoveEvent::wxMoveEvent=topic510 +3 wxMoveEvent::GetPosition=wxmoveeventgetposition +2 wxMultipleChoiceDialog +3 wxMultipleChoiceDialog=wxmultiplechoicedialog +2 wxNode +3 wxNode=wxnode +3 wxNode::Data=topic511 +3 wxNode::Next=topic512 +3 wxNode::Previous=topic513 +3 wxNode::SetData=topic514 +2 wxObject +3 wxObject=wxobject +3 wxObject::wxObject=wxobjectconstr +3 wxObject::~wxObject=topic515 +3 wxObject::m_refData=wxobjectmrefdata +3 wxObject::Dump=wxobjectdump +3 wxObject::GetClassInfo=wxobjectgetclassinfo +3 wxObject::GetRefData=wxobjectgetrefdata +3 wxObject::IsKindOf=wxobjectiskindof +3 wxObject::Ref=wxobjectref +3 wxObject::SetRefData=wxobjectsetrefdata +3 wxObject::UnRef=wxobjectunref +3 wxObject::operator new=wxobjectnew +3 wxObject::operator delete=wxobjectdelete +2 wxObjectRefData +3 wxObjectRefData=wxobjectrefdata +3 wxObjectRefData::m_count=topic516 +3 wxObjectRefData::wxObjectRefData=wxobjectrefdataconstr +3 wxObjectRefData::~wxObjectRefData=topic517 +2 wxPageSetupData +3 wxPageSetupData=wxpagesetupdata +3 wxPageSetupData::wxPageSetupData=topic518 +3 wxPageSetupData::~wxPageSetupData=topic519 +3 wxPageSetupData::EnableHelp=wxpagesetupdataenablehelp +3 wxPageSetupData::EnableMargins=wxpagesetupdataenablemargins +3 wxPageSetupData::EnableOrientation=wxpagesetupdataenableorientation +3 wxPageSetupData::EnablePaper=wxpagesetupdataenablepaper +3 wxPageSetupData::EnablePrinter=wxpagesetupdataenableprinter +3 wxPageSetupData::GetPaperSize=wxpagesetupdatagetpapersize +3 wxPageSetupData::GetMarginTopLeft=wxpagesetupdatagetmargintopleft +3 wxPageSetupData::GetMarginBottomRight=wxpagesetupdatagetmarginbottomright +3 wxPageSetupData::GetMinMarginTopLeft=wxpagesetupdatagetminmargintopleft +3 wxPageSetupData::GetMinMarginBottomRight=wxpagesetupdatagetminmarginbottomright +3 wxPageSetupData::GetOrientation=wxpagesetupdatagetorientation +3 wxPageSetupData::GetDefaultMinMargins=wxpagesetupdatagetdefaultminmargins +3 wxPageSetupData::GetEnableMargins=wxpagesetupdatagetenablemargins +3 wxPageSetupData::GetEnableOrientation=wxpagesetupdatagetenableorientation +3 wxPageSetupData::GetEnablePaper=wxpagesetupdatagetenablepaper +3 wxPageSetupData::GetEnablePrinter=wxpagesetupdatagetenableprinter +3 wxPageSetupData::GetEnableHelp=wxpagesetupdatagetenablehelp +3 wxPageSetupData::GetDefaultInfo=wxpagesetupdatagetdefaultinfo +3 wxPageSetupData::SetPaperSize=wxpagesetupdatasetpapersize +3 wxPageSetupData::SetMarginTopLeft=wxpagesetupdatasetmargintopleft +3 wxPageSetupData::SetMarginBottomRight=wxpagesetupdatasetmarginbottomright +3 wxPageSetupData::SetMinMarginTopLeft=wxpagesetupdatasetminmargintopleft +3 wxPageSetupData::SetMinMarginBottomRight=wxpagesetupdatasetminmarginbottomright +3 wxPageSetupData::SetOrientation=wxpagesetupdatasetorientation +3 wxPageSetupData::SetDefaultMinMargins=wxpagesetupdatasetdefaultminmargins +3 wxPageSetupData::SetDefaultInfo=wxpagesetupdatasetdefaultinfo +2 wxPageSetupDialog +3 wxPageSetupDialog=wxpagesetupdialog +3 wxPageSetupDialog::wxPageSetupDialog=topic520 +3 wxPageSetupDialog::~wxPageSetupDialog=topic521 +3 wxPageSetupDialog::GetPageSetupData=wxpagesetupdialoggetpagesetupdata +3 wxPageSetupDialog::ShowModal=wxpagesetupdialogshowmodal +2 wxPaintDC +3 wxPaintDC=wxpaintdc +3 wxPaintDC::wxPaintDC=topic522 +2 wxPaintEvent +3 wxPaintEvent=wxpaintevent +3 wxPaintEvent::wxPaintEvent=topic523 +2 wxPalette +3 wxPalette=wxpalette +3 wxPalette::wxPalette=wxpaletteconstr +3 wxPalette::~wxPalette=topic524 +3 wxPalette::Create=wxpalettecreate +3 wxPalette::GetPixel=wxpalettegetpixel +3 wxPalette::GetRGB=wxpalettegetrgb +3 wxPalette::Ok=wxpaletteok +3 wxPalette::operator ==wxpaletteassignment +3 wxPalette::operator ===wxpaletteequals +3 wxPalette::operator !==wxpalettenotequals +2 wxPanel +3 wxPanel=wxpanel +3 wxPanel::wxPanel=wxpanelconstr +3 wxPanel::~wxPanel=topic525 +3 wxPanel::Create=wxpanelcreate +3 wxPanel::InitDialog=wxpanelinitdialog +3 wxPanel::OnSysColourChanged=wxpanelonsyscolourchanged +2 wxPanelTabView +3 wxPanelTabView=wxpaneltabview +3 wxPanelTabView::wxPanelTabView=wxpaneltabviewconstr +3 wxPanelTabView::~wxPanelTabView=topic526 +3 wxPanelTabView::AddTabWindow=wxpaneltabviewaddtabwindow +3 wxPanelTabView::ClearWindows=topic527 +3 wxPanelTabView::GetCurrentWindow=topic528 +3 wxPanelTabView::GetTabWindow=topic529 +3 wxPanelTabView::ShowWindowForTab=topic530 +2 wxPathList +3 wxPathList=wxpathlist +3 wxPathList::wxPathList=topic531 +3 wxPathList::AddEnvList=topic532 +3 wxPathList::Add=topic533 +3 wxPathList::EnsureFileAccessible=topic534 +3 wxPathList::FindAbsoluteValidPath=topic535 +3 wxPathList::FindValidPath=topic536 +3 wxPathList::Member=topic537 +2 wxPen +3 wxPen=wxpen +3 wxPen::wxPen=wxpenconstr +3 wxPen::~wxPen=topic538 +3 wxPen::GetCap=wxpengetcap +3 wxPen::GetColour=wxpengetcolour +3 wxPen::GetDashes=wxpengetdashes +3 wxPen::GetJoin=wxpengetjoin +3 wxPen::GetStipple=wxpengetstipple +3 wxPen::GetStyle=wxpengetstyle +3 wxPen::GetWidth=wxpengetwidth +3 wxPen::Ok=wxpenok +3 wxPen::SetCap=wxpensetcap +3 wxPen::SetColour=wxpensetcolour +3 wxPen::SetDashes=wxpensetdashes +3 wxPen::SetJoin=wxpensetjoin +3 wxPen::SetStipple=wxpensetstipple +3 wxPen::SetStyle=wxpensetstyle +3 wxPen::SetWidth=wxpensetwidth +3 wxPen::operator ==wxpenassignment +3 wxPen::operator ===wxpenequals +3 wxPen::operator !==wxpennotequals +2 wxPenList +3 wxPenList=wxpenlist +3 wxPenList::wxPenList=topic539 +3 wxPenList::AddPen=wxpenlistaddpen +3 wxPenList::FindOrCreatePen=wxpenlistfindorcreatepen +3 wxPenList::RemovePen=wxpenlistremovepen +2 wxPoint +3 wxPoint=wxpoint +3 wxPoint::wxPoint=topic540 +3 wxPoint::x=topic541 +3 wxPoint::y=topic542 +2 wxPreviewCanvas +3 wxPreviewCanvas=wxpreviewcanvas +3 wxPreviewCanvas::wxPreviewCanvas=topic543 +3 wxPreviewCanvas::~wxPreviewCanvas=topic544 +3 wxPreviewCanvas::OnPaint=wxpreviewcanvasonpaint +2 wxPreviewControlBar +3 wxPreviewControlBar=wxpreviewcontrolbar +3 wxPreviewControlBar::wxPreviewControlbar=topic545 +3 wxPreviewControlBar::~wxPreviewControlBar=topic546 +3 wxPreviewControlBar::CreateButtons=topic547 +3 wxPreviewControlBar::GetPrintPreview=topic548 +3 wxPreviewControlBar::GetZoomControl=topic549 +3 wxPreviewControlBar::SetZoomControl=topic550 +2 wxPreviewFrame +3 wxPreviewFrame=wxpreviewframe +3 wxPreviewFrame::wxPreviewFrame=topic551 +3 wxPreviewFrame::~wxPreviewFrame=topic552 +3 wxPreviewFrame::CreateControlBar=topic553 +3 wxPreviewFrame::CreateCanvas=topic554 +3 wxPreviewFrame::Initialize=topic555 +3 wxPreviewFrame::OnClose=topic556 +2 wxPrintData +3 wxPrintData=wxprintdata +3 wxPrintData::wxPrintData=topic557 +3 wxPrintData::~wxPrintData=topic558 +3 wxPrintData::EnableHelp=wxprintdataenablehelp +3 wxPrintData::EnablePageNumbers=wxprintdataenablepagenumbers +3 wxPrintData::EnablePrintToFile=wxprintdataenableprinttofile +3 wxPrintData::EnableSelection=wxprintdataenableselection +3 wxPrintData::GetAllPages=wxprintdatagetallpages +3 wxPrintData::GetCollate=wxprintdatagetcollate +3 wxPrintData::GetFromPage=wxprintdatagetfrompage +3 wxPrintData::GetMaxPage=wxprintdatagetmaxpage +3 wxPrintData::GetMinPage=wxprintdatagetminpage +3 wxPrintData::GetNoCopies=wxprintdatagetnocopies +3 wxPrintData::GetOrientation=wxprintdatagetorientation +3 wxPrintData::GetToPage=wxprintdatagettopage +3 wxPrintData::SetCollate=wxprintdatasetcollate +3 wxPrintData::SetFromPage=wxprintdatasetfrompage +3 wxPrintData::SetMaxPage=wxprintdatasetmaxpage +3 wxPrintData::SetMinPage=wxprintdatasetminpage +3 wxPrintData::SetOrientation=wxprintdatasetorientation +3 wxPrintData::SetNoCopies=wxprintdatasetnocopies +3 wxPrintData::SetPrintToFile=wxprintdatasetprinttofile +3 wxPrintData::SetSetupDialog=wxprintdatasetsetupdialog +3 wxPrintData::SetToPage=wxprintdatasettopage +2 wxPrintDialog +3 wxPrintDialog=wxprintdialog +3 wxPrintDialog::wxPrintDialog=topic559 +3 wxPrintDialog::~wxPrintDialog=topic560 +3 wxPrintDialog::GetPrintData=wxprintdialoggetprintdata +3 wxPrintDialog::GetPrintDC=wxprintdialoggetprintdc +3 wxPrintDialog::ShowModal=wxprintdialogshowmodal +2 wxPrinter +3 wxPrinter=wxprinter +3 wxPrinter::wxPrinter=topic561 +3 wxPrinter::~wxPrinter=topic562 +3 wxPrinter::Abort=wxprinterabort +3 wxPrinter::CreateAbortWindow=wxprintercreateabortwindow +3 wxPrinter::GetPrintData=wxprintergetprintdata +3 wxPrinter::Print=wxprinterprint +3 wxPrinter::PrintDialog=wxprinterprintdialog +3 wxPrinter::ReportError=wxprinterreporterror +3 wxPrinter::Setup=wxprintersetup +2 wxPrinterDC +3 wxPrinterDC=wxprinterdc +3 wxPrinterDC::wxPrinterDC=topic563 +2 wxPrintout +3 wxPrintout=wxprintout +3 wxPrintout::wxPrintout=topic564 +3 wxPrintout::~wxPrintout=topic565 +3 wxPrintout::GetDC=wxprintoutgetdc +3 wxPrintout::GetPageInfo=wxprintoutgetpageinfo +3 wxPrintout::GetPageSizeMM=wxprintoutgetpagesizemm +3 wxPrintout::GetPageSizePixels=wxprintoutgetpagesizepixels +3 wxPrintout::GetPPIPrinter=wxprintoutgetppiprinter +3 wxPrintout::GetPPIScreen=wxprintoutgetppiscreen +3 wxPrintout::HasPage=wxprintouthaspage +3 wxPrintout::IsPreview=wxprintoutispreview +3 wxPrintout::OnBeginDocument=wxprintoutonbegindocument +3 wxPrintout::OnEndDocument=wxprintoutonenddocument +3 wxPrintout::OnBeginPrinting=wxprintoutonbeginprinting +3 wxPrintout::OnEndPrinting=wxprintoutonendprinting +3 wxPrintout::OnPreparePrinting=wxprintoutonprepareprinting +3 wxPrintout::OnPrintPage=wxprintoutonprintpage +2 wxPrintPreview +3 wxPrintPreview=wxprintpreview +3 wxPrintPreview::wxPrintPreview=topic566 +3 wxPrintPreview::~wxPrintPreview=topic567 +3 wxPrintPreview::DrawBlankPage=wxprintpreviewdrawblankpage +3 wxPrintPreview::GetCanvas=wxprintpreviewgetcanvas +3 wxPrintPreview::GetCurrentPage=wxprintpreviewgetcurrentpage +3 wxPrintPreview::GetFrame=wxprintpreviewgetframe +3 wxPrintPreview::GetMaxPage=wxprintpreviewgetmaxpage +3 wxPrintPreview::GetMinPage=wxprintpreviewgetminpage +3 wxPrintPreview::GetPrintData=wxprintpreviewgetprintdata +3 wxPrintPreview::GetPrintout=wxprintpreviewgetprintout +3 wxPrintPreview::GetPrintoutForPrinting=wxprintpreviewgetprintoutforprinting +3 wxPrintPreview::Ok=wxprintpreviewok +3 wxPrintPreview::PaintPage=wxprintpreviewpaintpage +3 wxPrintPreview::Print=wxprintpreviewprint +3 wxPrintPreview::RenderPage=wxprintpreviewrenderpage +3 wxPrintPreview::SetCanvas=wxprintpreviewsetcanvas +3 wxPrintPreview::SetCurrentPage=wxprintpreviewsetcurrentpage +3 wxPrintPreview::SetFrame=wxprintpreviewsetframe +3 wxPrintPreview::SetPrintout=wxprintpreviewsetprintout +3 wxPrintPreview::SetZoom=wxprintpreviewsetzoom +2 wxPostScriptDC +3 wxPostScriptDC=wxpostscriptdc +3 wxPostScriptDC::wxPostScriptDC=topic568 +3 wxPostScriptDC::GetStream=topic569 +2 wxQueryCol +3 wxQueryCol=wxquerycol +3 wxQueryCol::wxQueryCol=topic570 +3 wxQueryCol::~wxQueryCol=topic571 +3 wxQueryCol::BindVar=topic572 +3 wxQueryCol::FillVar=topic573 +3 wxQueryCol::GetData=topic574 +3 wxQueryCol::GetName=topic575 +3 wxQueryCol::GetType=topic576 +3 wxQueryCol::GetSize=topic577 +3 wxQueryCol::IsRowDirty=topic578 +3 wxQueryCol::IsNullable=topic579 +3 wxQueryCol::AppendField=topic580 +3 wxQueryCol::SetData=topic581 +3 wxQueryCol::SetName=topic582 +3 wxQueryCol::SetNullable=topic583 +3 wxQueryCol::SetFieldDirty=topic584 +3 wxQueryCol::SetType=topic585 +2 wxQueryField +3 wxQueryField=wxqueryfield +3 wxQueryField::wxQueryField=topic586 +3 wxQueryField::~wxQueryField=topic587 +3 wxQueryField::AllocData=topic588 +3 wxQueryField::ClearData=topic589 +3 wxQueryField::GetData=topic590 +3 wxQueryField::GetSize=topic591 +3 wxQueryField::GetType=topic592 +3 wxQueryField::IsDirty=topic593 +3 wxQueryField::SetData=topic594 +3 wxQueryField::SetDirty=topic595 +3 wxQueryField::SetSize=topic596 +3 wxQueryField::SetType=topic597 +2 wxRealPoint +3 wxRealPoint=wxrealpoint +3 wxRealPoint::wxRealPoint=topic598 +2 wxRect +3 wxRect=wxrect +3 wxRect::wxRect=topic599 +3 wxRect::x=topic600 +3 wxRect::y=topic601 +3 wxRect::width=topic602 +3 wxRect::height=topic603 +3 wxRect::GetBottom=wxrectgetbottom +3 wxRect::GetHeight=wxrectgetheight +3 wxRect::GetLeft=wxrectgetleft +3 wxRect::GetPosition=wxrectgetposition +3 wxRect::GetRight=wxrectgetright +3 wxRect::GetSize=wxrectgetsize +3 wxRect::GetTop=wxrectgettop +3 wxRect::GetWidth=wxrectgetwidth +3 wxRect::GetX=wxrectgetx +3 wxRect::GetY=wxrectgety +3 wxRect::SetHeight=wxrectsetheight +3 wxRect::SetWidth=wxrectsetwidth +3 wxRect::SetX=wxrectsetx +3 wxRect::SetY=wxrectsety +3 wxRect::operator ==topic604 +3 wxRect::operator ===topic605 +3 wxRect::operator !==topic606 +2 wxRecordSet +3 wxRecordSet=wxrecordset +3 wxRecordSet::wxRecordSet=topic607 +3 wxRecordSet::~wxRecordSet=topic608 +3 wxRecordSet::AddNew=topic609 +3 wxRecordSet::BeginQuery=topic610 +3 wxRecordSet::BindVar=topic611 +3 wxRecordSet::CanAppend=topic612 +3 wxRecordSet::Cancel=topic613 +3 wxRecordSet::CanRestart=topic614 +3 wxRecordSet::CanScroll=topic615 +3 wxRecordSet::CanTransact=topic616 +3 wxRecordSet::CanUpdate=topic617 +3 wxRecordSet::ConstructDefaultSQL=topic618 +3 wxRecordSet::Delete=topic619 +3 wxRecordSet::Edit=topic620 +3 wxRecordSet::EndQuery=topic621 +3 wxRecordSet::ExecuteSQL=wxrecordsetexecutesql +3 wxRecordSet::FillVars=topic622 +3 wxRecordSet::GetColName=topic623 +3 wxRecordSet::GetColType=topic624 +3 wxRecordSet::GetColumns=topic625 +3 wxRecordSet::GetCurrentRecord=topic626 +3 wxRecordSet::GetDatabase=topic627 +3 wxRecordSet::GetDataSources=wxrecordsetgetdatasources +3 wxRecordSet::GetDefaultConnect=topic628 +3 wxRecordSet::GetDefaultSQL=topic629 +3 wxRecordSet::GetErrorCode=topic630 +3 wxRecordSet::GetFieldData=wxrecordsetgetfielddata +3 wxRecordSet::GetFieldDataPtr=wxrecordsetgetfielddataptr +3 wxRecordSet::GetFilter=topic631 +3 wxRecordSet::GetForeignKeys=topic632 +3 wxRecordSet::GetNumberCols=topic633 +3 wxRecordSet::GetNumberFields=topic634 +3 wxRecordSet::GetNumberParams=topic635 +3 wxRecordSet::GetNumberRecords=topic636 +3 wxRecordSet::GetPrimaryKeys=topic637 +3 wxRecordSet::GetOptions=topic638 +3 wxRecordSet::GetResultSet=topic639 +3 wxRecordSet::GetSortString=topic640 +3 wxRecordSet::GetSQL=topic641 +3 wxRecordSet::GetTableName=topic642 +3 wxRecordSet::GetTables=topic643 +3 wxRecordSet::GetType=topic644 +3 wxRecordSet::GoTo=topic645 +3 wxRecordSet::IsBOF=topic646 +3 wxRecordSet::IsFieldDirty=topic647 +3 wxRecordSet::IsFieldNull=topic648 +3 wxRecordSet::IsColNullable=topic649 +3 wxRecordSet::IsEOF=topic650 +3 wxRecordSet::IsDeleted=topic651 +3 wxRecordSet::IsOpen=topic652 +3 wxRecordSet::Move=topic653 +3 wxRecordSet::MoveFirst=topic654 +3 wxRecordSet::MoveLast=topic655 +3 wxRecordSet::MoveNext=wxrecordsetmovenext +3 wxRecordSet::MovePrev=wxrecordsetmoveprev +3 wxRecordSet::Query=topic656 +3 wxRecordSet::RecordCountFinal=topic657 +3 wxRecordSet::Requery=topic658 +3 wxRecordSet::SetFieldDirty=topic659 +3 wxRecordSet::SetDefaultSQL=topic660 +3 wxRecordSet::SetFieldNull=topic661 +3 wxRecordSet::SetOptions=topic662 +3 wxRecordSet::SetTableName=topic663 +3 wxRecordSet::SetType=topic664 +3 wxRecordSet::Update=topic665 +2 wxRadioBox +3 wxRadioBox=wxradiobox +3 wxRadioBox::wxRadioBox=wxradioboxconstr +3 wxRadioBox::~wxRadioBox=topic666 +3 wxRadioBox::Create=wxradioboxcreate +3 wxRadioBox::Enable=wxradioboxenable +3 wxRadioBox::FindString=wxradioboxfindstring +3 wxRadioBox::GetLabel=wxradioboxgetlabel +3 wxRadioBox::GetSelection=wxradioboxgetselection +3 wxRadioBox::GetStringSelection=wxradioboxgetstringselection +3 wxRadioBox::Number=wxradioboxnumber +3 wxRadioBox::SetLabel=wxradioboxsetlabel +3 wxRadioBox::SetSelection=wxradioboxsetselection +3 wxRadioBox::SetStringSelection=wxradioboxsetstringselection +3 wxRadioBox::Show=wxradioboxshow +3 wxRadioBox::GetString=wxradioboxgetstring +2 wxRadioButton +3 wxRadioButton=wxradiobutton +3 wxRadioButton::wxRadioButton=wxradiobuttonconstr +3 wxRadioButton::~wxRadioButton=topic667 +3 wxRadioButton::Create=wxradiobuttoncreate +3 wxRadioButton::GetValue=wxradiobuttongetvalue +3 wxRadioButton::SetValue=wxradiobuttonsetvalue +2 wxScreenDC +3 wxScreenDC=wxscreendc +3 wxScreenDC::wxScreenDC=topic668 +3 wxScreenDC::StartDrawingOnTop=wxscreendcstartdrawingontop +3 wxScreenDC::EndDrawingOnTop=wxscreendcenddrawingontop +2 wxScrollBar +3 wxScrollBar=wxscrollbar +3 wxScrollBar::wxScrollBar=wxscrollbarconstr +3 wxScrollBar::~wxScrollBar=topic669 +3 wxScrollBar::Create=wxscrollbarcreate +3 wxScrollBar::GetRange=wxscrollbargetrange +3 wxScrollBar::GetPageSize=wxscrollbargetpagesize +3 wxScrollBar::GetPosition=wxscrollbargetposition +3 wxScrollBar::GetThumbLength=wxscrollbargetthumblength +3 wxScrollBar::SetPosition=wxscrollbarsetposition +3 wxScrollBar::SetScrollbar=wxscrollbarsetscrollbar +2 wxScrollEvent +3 wxScrollEvent=wxscrollevent +3 wxScrollEvent::wxScrollEvent=topic670 +3 wxScrollEvent::GetOrientation=wxscrolleventgetorientation +3 wxScrollEvent::GetPosition=wxscrolleventgetposition +2 wxScrolledWindow +3 wxScrolledWindow=wxscrolledwindow +3 wxScrolledWindow::wxScrolledWindow=wxscrolledwindowconstr +3 wxScrolledWindow::~wxScrolledWindow=topic671 +3 wxScrolledWindow::Create=wxscrolledwindowcreate +3 wxScrolledWindow::EnableScrolling=wxscrolledwindowenablescrolling +3 wxScrolledWindow::GetScrollPixelsPerUnit=wxscrolledwindowgetscrollpixelsperunit +3 wxScrolledWindow::GetVirtualSize=wxscrolledwindowgetvirtualsize +3 wxScrolledWindow::IsRetained=wxscrolledwindowisretained +3 wxScrolledWindow::PrepareDC=wxscrolledwindowpreparedc +3 wxScrolledWindow::OnDraw=wxscrolledwindowondraw +3 wxScrolledWindow::OnPaint=wxscrolledwindowonpaint +3 wxScrolledWindow::OnScroll=wxscrolledwindowonscroll +3 wxScrolledWindow::Scroll=wxscrolledwindowscroll +3 wxScrolledWindow::SetScrollbars=wxscrolledwindowsetscrollbars +3 wxScrolledWindow::ViewStart=wxscrolledwindowviewstart +2 wxSingleChoiceDialog +3 wxSingleChoiceDialog=wxsinglechoicedialog +3 wxSingleChoiceDialog::wxSingleChoiceDialog=wxsinglechoicedialogconstr +3 wxSingleChoiceDialog::~wxSingleChoiceDialog=topic672 +3 wxSingleChoiceDialog::GetSelection=topic673 +3 wxSingleChoiceDialog::GetSelectionClientData=topic674 +3 wxSingleChoiceDialog::GetStringSelection=topic675 +3 wxSingleChoiceDialog::ShowModal=wxsinglechoicedialogshowmodal +2 wxSize +3 wxSize=wxsize +3 wxSize::wxSize=topic676 +3 wxSize::x=topic677 +3 wxSize::y=topic678 +3 wxSize::GetX=wxsizegetx +3 wxSize::GetY=wxsizegety +3 wxSize::Set=wxsizeset +3 wxSize::operator ==topic679 +2 wxSizeEvent +3 wxSizeEvent=wxsizeevent +3 wxSizeEvent::wxSizeEvent=topic680 +3 wxSizeEvent::GetSize=wxsizeeventgetsize +2 wxSlider +3 wxSlider=wxslider +3 wxSlider::wxSlider=wxsliderconstr +3 wxSlider::~wxSlider=topic681 +3 wxSlider::ClearSel=wxsliderclearsel +3 wxSlider::ClearTicks=wxsliderclearticks +3 wxSlider::Create=wxslidercreate +3 wxSlider::GetLineSize=wxslidergetlinesize +3 wxSlider::GetMax=wxslidergetmax +3 wxSlider::GetMin=wxslidergetmin +3 wxSlider::GetPageSize=wxslidergetpagesize +3 wxSlider::GetSelEnd=wxslidergetselend +3 wxSlider::GetSelStart=wxslidergetselstart +3 wxSlider::GetThumbLength=wxslidergetthumblength +3 wxSlider::GetTickFreq=wxslidergettickfreq +3 wxSlider::GetValue=wxslidergetvalue +3 wxSlider::SetRange=wxslidersetrange +3 wxSlider::SetTickFreq=wxslidersettickfreq +3 wxSlider::SetLineSize=wxslidersetlinesize +3 wxSlider::SetPageSize=wxslidersetpagesize +3 wxSlider::SetSelection=wxslidersetselection +3 wxSlider::SetThumbLength=wxslidersetthumblength +3 wxSlider::SetTick=wxslidersettick +3 wxSlider::SetValue=wxslidersetvalue +2 wxSpinButton +3 wxSpinButton=wxspinbutton +3 wxSpinButton::wxSpinButton=wxspinbuttonconstr +3 wxSpinButton::~wxSpinButton=topic682 +3 wxSpinButton::Create=wxspinbuttoncreate +3 wxSpinButton::GetMax=wxspinbuttongetmax +3 wxSpinButton::GetMin=wxspinbuttongetmin +3 wxSpinButton::GetValue=wxspinbuttongetvalue +3 wxSpinButton::SetRange=wxspinbuttonsetrange +3 wxSpinButton::SetValue=wxspinbuttonsetvalue +2 wxSplitterWindow +3 wxSplitterWindow=wxsplitterwindow +3 wxSplitterWindow::wxSplitterWindow=wxsplitterwindowconstr +3 wxSplitterWindow::~wxSplitterWindow=topic683 +3 wxSplitterWindow::Create=wxsplitterwindowcreate +3 wxSplitterWindow::GetMinimumPaneSize=wxsplitterwindowgetminimumpanesize +3 wxSplitterWindow::GetSashPosition=wxsplitterwindowgetsashposition +3 wxSplitterWindow::GetSplitMode=wxsplitterwindowgetsplitmode +3 wxSplitterWindow::GetWindow1=wxsplitterwindowgetwindow1 +3 wxSplitterWindow::GetWindow2=wxsplitterwindowgetwindow2 +3 wxSplitterWindow::Initialize=wxsplitterwindowinitialize +3 wxSplitterWindow::IsSplit=wxsplitterwindowissplit +3 wxSplitterWindow::OnDoubleClickSash=wxsplitterwindowondoubleclicksash +3 wxSplitterWindow::OnUnsplit=wxsplitterwindowonunsplit +3 wxSplitterWindow::SetSashPosition=wxsplitterwindowsetsashposition +3 wxSplitterWindow::SetMinimumPaneSize=wxsplitterwindowsetminimumpanesize +3 wxSplitterWindow::SetSplitMode=wxsplitterwindowsetsplitmode +3 wxSplitterWindow::SplitHorizontally=wxsplitterwindowsplithorizontally +3 wxSplitterWindow::SplitVertically=wxsplitterwindowsplitvertically +3 wxSplitterWindow::Unsplit=wxsplitterwindowunsplit +2 wxStaticBitmap +3 wxStaticBitmap=wxstaticbitmap +3 wxStaticBitmap::wxStaticBitmap=wxstaticbitmapconstr +3 wxStaticBitmap::Create=wxstaticbitmapcreate +3 wxStaticBitmap::GetBitmap=wxstaticbitmapgetbitmap +3 wxStaticBitmap::SetBitmap=wxstaticbitmapsetbitmap +2 wxStaticBox +3 wxStaticBox=wxstaticbox +3 wxStaticBox::wxStaticBox=wxstaticboxconstr +3 wxStaticBox::~wxStaticBox=topic684 +3 wxStaticBox::Create=wxstaticboxcreate +2 wxStaticText +3 wxStaticText=wxstatictext +3 wxStaticText::wxStaticText=wxstatictextconstr +3 wxStaticText::Create=wxstatictextcreate +3 wxStaticText::GetLabel=wxstatictextgetlabel +3 wxStaticText::SetLabel=wxstatictextsetlabel +2 wxStatusBar +3 wxStatusBar=wxstatusbar +3 wxStatusBar::wxStatusBar=wxstatusbarconstr +3 wxStatusBar::~wxStatusBar=topic685 +3 wxStatusBar::Create=wxstatusbarcreate +3 wxStatusBar::GetFieldRect=wxstatusbargetfieldrect +3 wxStatusBar::GetFieldsCount=wxstatusbargetfieldscount +3 wxStatusBar::GetStatusText=wxstatusbargetstatustext +3 wxStatusBar::DrawField=wxstatusbardrawfield +3 wxStatusBar::DrawFieldText=wxstatusbardrawfieldtext +3 wxStatusBar::InitColours=wxstatusbarinitcolours +3 wxStatusBar::OnSysColourChanged=wxstatusbaronsyscolourchanged +3 wxStatusBar::SetFieldsCount=wxstatusbarsetfieldscount +3 wxStatusBar::SetStatusText=wxstatusbarsetstatustext +3 wxStatusBar::SetStatusWidths=wxstatusbarsetstatuswidths +2 wxString +3 wxString=wxstring +3 wxString::wxString=wxstringconstruct +3 wxString::~wxString=wxstringdestruct +3 wxString::Alloc=wxstringAlloc +3 wxString::Allocation=wxstringAllocation +3 wxString::Append=wxstringAppend +3 wxString::After=wxstringAfter +3 wxString::At=wxstringAt +3 wxString::Before=wxstringBefore +3 wxString::Capitalize=wxstringCapitalize +3 wxString::Cat=wxstringCat +3 wxString::Chars=wxstringChars +3 wxString::CompareTo=wxstringCompareTo +3 wxString::Contains=wxstringContains +3 wxString::Copy=wxstringCopy +3 wxString::Del=wxstringDel +3 wxString::DownCase=wxstringDownCase +3 wxString::Elem=wxstringElem +3 wxString::Empty=wxstringEmpty +3 wxString::Error=wxstringError +3 wxString::First=wxstringFirst +3 wxString::Firstchar=wxstringFirstchar +3 wxString::Freq=wxstringFreq +3 wxString::From=wxstringFrom +3 wxString::GetData=wxstringGetData +3 wxString::GSub=wxstringGSub +3 wxString::Index=wxstringIndex +3 wxString::Insert=wxstringInsert +3 wxString::IsAscii=wxstringIsAscii +3 wxString::IsDefined=wxstringIsDefined +3 wxString::IsNull=wxstringIsNull +3 wxString::IsNumber=wxstringIsNumber +3 wxString::IsWord=wxstringIsWord +3 wxString::Last=wxstringLast +3 wxString::Lastchar=wxstringLastchar +3 wxString::Length=wxstringLength +3 wxString::LowerCase=wxstringLowerCase +3 wxString::Matches=wxstringMatches +3 wxString::OK=wxstringOK +3 wxString::Prepend=wxstringPrepend +3 wxString::Readline=wxstringReadline +3 wxString::Remove=wxstringRemove +3 wxString::Replace=wxstringReplace +3 wxString::Replicate=wxstringReplicate +3 wxString::Reverse=wxstringReverse +3 wxString::sprintf=wxstringsprintf +3 wxString::Strip=wxstringStrip +3 wxString::SubString=wxstringSubString +3 wxString::Through=wxstringThrough +3 wxString::Upcase=wxstringUpcase +3 wxString::UpperCase=wxstringUpperCase +3 wxString::operator ==wxstringoperatorassign +3 wxString::operator +==wxstringPlusEqual +3 wxString::operator []=wxstringoperatorbracket +3 wxString::operator ()=wxstringoperatorparenth +3 wxString::operator <<=wxstringoperatorout +3 wxString::operator >>=wxstringoperatorin +3 wxString::operator const char*=wxstringoperatorconstcharpt +3 wxCHARARG=wxstringwxCHARARG +3 CommonPrefix=wxstringCommonPrefix +3 CommonSuffix=wxstringCommonSuffix +3 Compare=wxstringCompare +3 FCompare=wxstringFCompare +3 Comparison operators=wxstringComparison +3 operator +=wxstringoperatorplus +3 Join=wxstringJoin +3 Split=wxstringSplit +2 wxStringList +3 wxStringList=wxstringlist +3 wxStringList::wxStringList=topic686 +3 wxStringList::~wxStringList=topic687 +3 wxStringList::Add=topic688 +3 wxStringList::Delete=topic689 +3 wxStringList::ListToArray=topic690 +3 wxStringList::Member=topic691 +3 wxStringList::Sort=topic692 +2 wxSysColourChangedEvent +3 wxSysColourChangedEvent=wxsyscolourchangedevent +3 wxSysColourChangedEvent::wxSysColourChanged=topic693 +2 wxSystemSettings +3 wxSystemSettings=wxsystemsettings +3 wxSystemSettings::wxSystemSettings=topic694 +3 wxSystemSettings::GetSystemColour=wxsystemsettingsgetsystemcolour +3 wxSystemSettings::GetSystemFont=wxsystemsettingsgetsystemfont +3 wxSystemSettings::GetSystemMetric=wxsystemsettingsgetsystemmetric +2 wxTabbedDialog +3 wxTabbedDialog=wxtabbeddialogbox +3 wxTabbedDialog::wxTabbedDialog=topic695 +3 wxTabbedDialog::~wxTabbedDialog=topic696 +3 wxTabbedDialog::SetTabView=topic697 +3 wxTabbedDialog::GetTabView=topic698 +2 wxTabbedPanel +3 wxTabbedPanel=wxtabbedpanel +3 wxTabbedPanel::wxTabbedPanel=topic699 +3 wxTabbedPanel::SetTabView=topic700 +3 wxTabbedPanel::GetTabView=topic701 +2 wxTabControl +3 wxTabControl=wxtabcontrol +3 wxTabControl::wxTabControl=topic702 +3 wxTabControl::GetColPosition=topic703 +3 wxTabControl::GetFont=topic704 +3 wxTabControl::GetHeight=topic705 +3 wxTabControl::GetId=topic706 +3 wxTabControl::GetLabel=topic707 +3 wxTabControl::GetRowPosition=topic708 +3 wxTabControl::GetSelected=topic709 +3 wxTabControl::GetWidth=topic710 +3 wxTabControl::GetX=topic711 +3 wxTabControl::GetY=topic712 +3 wxTabControl::HitTest=topic713 +3 wxTabControl::OnDraw=topic714 +3 wxTabControl::SetColPosition=topic715 +3 wxTabControl::SetFont=topic716 +3 wxTabControl::SetId=topic717 +3 wxTabControl::SetLabel=topic718 +3 wxTabControl::SetPosition=topic719 +3 wxTabControl::SetRowPosition=topic720 +3 wxTabControl::SetSelected=topic721 +3 wxTabControl::SetSize=topic722 +2 wxTabView +3 wxTabView=wxtabview +3 wxTabView::wxTabView=topic723 +3 wxTabView::AddTab=wxtabviewaddtab +3 wxTabView::CalculateTabWidth=wxtabviewcalculatetabwidth +3 wxTabView::ClearTabs=topic724 +3 wxTabView::Draw=topic725 +3 wxTabView::FindTabControlForId=topic726 +3 wxTabView::FindTabControlForPosition=topic727 +3 wxTabView::GetBackgroundBrush=topic728 +3 wxTabView::GetBackgroundColour=topic729 +3 wxTabView::GetBackgroundPen=topic730 +3 wxTabView::GetHighlightColour=topic731 +3 wxTabView::GetHighlightPen=topic732 +3 wxTabView::GetHorizontalTabOffset=topic733 +3 wxTabView::GetNumberOfLayers=topic734 +3 wxTabView::GetSelectedTabFont=topic735 +3 wxTabView::GetShadowColour=topic736 +3 wxTabView::GetTabHeight=topic737 +3 wxTabView::GetTabFont=topic738 +3 wxTabView::GetTabSelectionHeight=topic739 +3 wxTabView::GetTabStyle=topic740 +3 wxTabView::GetTabWidth=topic741 +3 wxTabView::GetTextColour=topic742 +3 wxTabView::GetTopMargin=topic743 +3 wxTabView::GetShadowPen=topic744 +3 wxTabView::GetViewRect=topic745 +3 wxTabView::GetVerticalTabTextSpacing=topic746 +3 wxTabView::GetWindow=topic747 +3 wxTabView::OnCreateTabControl=topic748 +3 wxTabView::Layout=topic749 +3 wxTabView::OnEvent=topic750 +3 wxTabView::OnTabActivate=topic751 +3 wxTabView::OnTabPreActivate=topic752 +3 wxTabView::SetBackgroundColour=topic753 +3 wxTabView::SetHighlightColour=topic754 +3 wxTabView::SetHorizontalTabOffset=topic755 +3 wxTabView::SetSelectedTabFont=topic756 +3 wxTabView::SetShadowColour=topic757 +3 wxTabView::SetTabFont=topic758 +3 wxTabView::SetTabStyle=topic759 +3 wxTabView::SetTabSize=topic760 +3 wxTabView::SetTabSelectionHeight=topic761 +3 wxTabView::SetTabSelection=topic762 +3 wxTabView::SetTextColour=topic763 +3 wxTabView::SetTopMargin=topic764 +3 wxTabView::SetVerticalTabTextSpacing=topic765 +3 wxTabView::SetViewRect=wxtabviewsetviewrect +3 wxTabView::SetWindow=topic766 +2 wxTextCtrl +3 wxTextCtrl=wxtextctrl +3 wxTextCtrl::wxTextCtrl=wxtextctrlconstr +3 wxTextCtrl::~wxTextCtrl=topic767 +3 wxTextCtrl::Clear=wxtextctrlclear +3 wxTextCtrl::Copy=wxtextctrlcopy +3 wxTextCtrl::Create=wxtextctrlcreate +3 wxTextCtrl::Cut=wxtextctrlcut +3 wxTextCtrl::DiscardEdits=topic768 +3 wxTextCtrl::GetInsertionPoint=wxtextctrlgetinsertionpoint +3 wxTextCtrl::GetLastPosition=wxtextctrlgetlastposition +3 wxTextCtrl::GetLineLength=wxtextctrlgetlinelength +3 wxTextCtrl::GetLineText=wxtextctrlgetlinetext +3 wxTextCtrl::GetNumberOfLines=wxtextctrlgetnumberoflines +3 wxTextCtrl::GetValue=wxtextctrlgetvalue +3 wxTextCtrl::IsModified=wxtextctrlismodified +3 wxTextCtrl::LoadFile=wxtextctrlloadfile +3 wxTextCtrl::OnChar=wxtextctrlonchar +3 wxTextCtrl::OnDropFiles=wxtextctrlondropfiles +3 wxTextCtrl::Paste=wxtextctrlpaste +3 wxTextCtrl::PositionToXY=wxtextctrlpositiontoxy +3 wxTextCtrl::Remove=wxtextctrlremove +3 wxTextCtrl::Replace=wxtextctrlreplace +3 wxTextCtrl::SaveFile=wxtextctrlsavefile +3 wxTextCtrl::SetEditable=wxtextctrlseteditable +3 wxTextCtrl::SetInsertionPoint=wxtextctrlsetinsertionpoint +3 wxTextCtrl::SetInsertionPointEnd=wxtextctrlsetinsertionpointend +3 wxTextCtrl::SetSelection=wxtextctrlsetselection +3 wxTextCtrl::SetValue=wxtextctrlsetvalue +3 wxTextCtrl::ShowPosition=wxtextctrlshowposition +3 wxTextCtrl::WriteText=wxtextctrlwritetext +3 wxTextCtrl::XYToPosition=wxtextctrlxytoposition +3 wxTextCtrl::operator <<=wxtextctrlinsert +2 wxTextEntryDialog +3 wxTextEntryDialog=wxtextentrydialog +3 wxTextEntryDialog::wxTextEntryDialog=wxtextentrydialogconstr +3 wxTextEntryDialog::~wxTextEntryDialog=topic769 +3 wxTextEntryDialog::GetValue=wxtextentrydialoggetvalue +3 wxTextEntryDialog::SetValue=wxtextentrydialogsetvalue +3 wxTextEntryDialog::ShowModal=wxtextentrydialogshowmodal +2 wxTextValidator +3 wxTextValidator=wxtextvalidator +3 wxTextValidator::wxTextValidator=wxtextvalidatorconstr +3 wxTextValidator::~wxTextValidator=topic770 +3 wxTextValidator::Clone=wxtextvalidatorclone +3 wxTextValidator::GetExcludeList=wxtextvalidatorgetexcludelist +3 wxTextValidator::GetIncludeList=wxtextvalidatorgetincludelist +3 wxTextValidator::GetStyle=wxtextvalidatorgetstyle +3 wxTextValidator::OnChar=wxtextvalidatoronchar +3 wxTextValidator::SetExcludeList=wxtextvalidatorsetexcludelist +3 wxTextValidator::SetIncludeList=wxtextvalidatorsetincludelist +3 wxTextValidator::SetStyle=wxtextvalidatorsetstyle +3 wxTextValidator::TransferFromWindow=wxtextvalidatortransferfromwindow +3 wxTextValidator::TransferToWindow=wxtextvalidatortransfertowindow +3 wxTextValidator::Validate=wxtextvalidatorvalidate +2 wxTime +3 wxTime=wxtime +2 wxTimer +3 wxTimer=wxtimer +3 wxTimer::wxTimer=topic771 +3 wxTimer::~wxTimer=topic772 +3 wxTimer::Interval=topic773 +3 wxTimer::Notify=topic774 +3 wxTimer::Start=topic775 +3 wxTimer::Stop=topic776 +2 wxTreeCtrl +3 wxTreeCtrl=wxtreectrl +3 wxTreeCtrl::wxTreeCtrl=wxtreectrlconstr +3 wxTreeCtrl::~wxTreeCtrl=topic777 +3 wxTreeCtrl::Create=wxtreectrlcreate +3 wxTreeCtrl::DeleteAllItems=wxtreectrldeleteallitems +3 wxTreeCtrl::DeleteItem=wxtreectrldeleteitem +3 wxTreeCtrl::Edit=wxtreectrledit +3 wxTreeCtrl::EnsureVisible=wxtreectrlensurevisible +3 wxTreeCtrl::ExpandItem=wxtreectrlexpanditem +3 wxTreeCtrl::GetChild=wxtreectrlgetchild +3 wxTreeCtrl::GetCount=wxtreectrlgetcount +3 wxTreeCtrl::GetEditControl=wxtreectrlgeteditcontrol +3 wxTreeCtrl::GetFirstVisibleItem=wxtreectrlgetfirstvisibleitem +3 wxTreeCtrl::GetImageList=wxtreectrlgetimagelist +3 wxTreeCtrl::GetIndent=wxtreectrlgetindent +3 wxTreeCtrl::GetItem=wxtreectrlgetitem +3 wxTreeCtrl::GetItemData=wxtreectrlgetitemdata +3 wxTreeCtrl::GetItemRect=wxtreectrlgetitemrect +3 wxTreeCtrl::GetItemState=wxtreectrlgetitemstate +3 wxTreeCtrl::GetItemText=wxtreectrlgetitemtext +3 wxTreeCtrl::GetNextItem=wxtreectrlgetnextitem +3 wxTreeCtrl::GetNextVisibleItem=wxtreectrlgetnextvisibleitem +3 wxTreeCtrl::GetParent=wxtreectrlgetparent +3 wxTreeCtrl::GetRootItem=wxtreectrlgetrootitem +3 wxTreeCtrl::GetSelection=wxtreectrlgetselection +3 wxTreeCtrl::HitTest=wxtreectrlhittest +3 wxTreeCtrl::InsertItem=wxtreectrlinsertitem +3 wxTreeCtrl::ItemHasChildren=wxtreectrlitemhaschildren +3 wxTreeCtrl::ScrollTo=wxtreectrlscrollto +3 wxTreeCtrl::SelectItem=wxtreectrlselectitem +3 wxTreeCtrl::SetIndent=wxtreectrlsetindent +3 wxTreeCtrl::SetImageList=wxtreectrlsetimagelist +3 wxTreeCtrl::SetItem=wxtreectrlsetitem +3 wxTreeCtrl::SetItemImage=wxtreectrlsetitemimage +3 wxTreeCtrl::SetItemState=wxtreectrlsetitemstate +3 wxTreeCtrl::SetItemText=wxtreectrlsetitemtext +3 wxTreeCtrl::SetItemData=wxtreectrlsetitemdata +3 wxTreeCtrl::SortChildren=wxtreectrlsortchildren +2 wxTreeEvent +3 wxTreeEvent=wxtreeevent +3 wxTreeEvent::wxTreeEvent=topic778 +3 wxTreeEvent::m_code=topic779 +3 wxTreeEvent::m_itemIndex=topic780 +3 wxTreeEvent::m_oldItem=topic781 +3 wxTreeEvent::m_pointDrag=topic782 +2 wxToolBarBase +3 wxToolBarBase=wxtoolbarbase +3 wxToolBarBase::wxToolBarBase=wxtoolbarbaseconstr +3 wxToolBarBase::~wxToolBarBase=topic783 +3 wxToolBarBase::AddSeparator=wxtoolbarbaseaddseparator +3 wxToolBarBase::AddTool=wxtoolbarbaseaddtool +3 wxToolBarBase::CreateTools=wxtoolbarbasecreatetools +3 wxToolBarBase::DrawTool=wxtoolbarbasedrawtool +3 wxToolBarBase::EnableTool=wxtoolbarbaseenabletool +3 wxToolBarBase::FindToolForPosition=wxtoolbarbasefindtoolforposition +3 wxToolBarBase::GetDefaultButtonSize=wxtoolbarbasegetdefaultbuttonsize +3 wxToolBarBase::GetDefaultSize=wxtoolbarbasegetdefaultsize +3 wxToolBarBase::GetMargins=wxtoolbarbasegetmargins +3 wxToolBarBase::GetMaxSize=wxtoolbarbasegetmaxsize +3 wxToolBarBase::GetToolClientData=wxtoolbarbasegettoolclientdata +3 wxToolBarBase::GetToolEnabled=wxtoolbarbasegettoolenabled +3 wxToolBarBase::GetToolLongHelp=wxtoolbarbasegettoollonghelp +3 wxToolBarBase::GetToolPacking=wxtoolbarbasegettoolpacking +3 wxToolBarBase::GetToolSeparation=wxtoolbarbasegettoolseparation +3 wxToolBarBase::GetToolShortHelp=wxtoolbarbasegettoolshorthelp +3 wxToolBarBase::GetToolState=wxtoolbarbasegettoolstate +3 wxToolBarBase::Layout=wxtoolbarbaselayout +3 wxToolBarBase::OnLeftClick=wxtoolbarbaseonleftclick +3 wxToolBarBase::OnMouseEnter=wxtoolbarbaseonmouseenter +3 wxToolBarBase::OnRightClick=wxtoolbarbaseonrightclick +3 wxToolBarBase::SetDefaultSize=wxtoolbarbasesetdefaultsize +3 wxToolBarBase::SetMargins=wxtoolbarbasesetmargins +3 wxToolBarBase::SetToolLongHelp=wxtoolbarbasesettoollonghelp +3 wxToolBarBase::SetToolPacking=wxtoolbarbasesettoolpacking +3 wxToolBarBase::SetToolShortHelp=wxtoolbarbasesettoolshorthelp +3 wxToolBarBase::SetToolSeparation=wxtoolbarbasesettoolseparation +3 wxToolBarBase::ToggleTool=wxtoolbarbasetoggletool +2 wxToolBar95 +3 wxToolBar95=wxtoolbar95 +3 wxToolBar95::wxToolBar95=wxtoolbar95constr +2 wxToolBarMSW +3 wxToolBarMSW=wxtoolbarmsw +3 wxToolBarMSW::wxToolBarMSW=wxtoolbarmswconstr +2 wxToolBarSimple +3 wxToolBarSimple=wxtoolbarsimple +3 wxToolBarSimple::wxToolBarSimple=wxtoolbarsimpleconstr +2 wxUpdateIterator +3 wxUpdateIterator=wxupdateiterator +3 wxUpdateIterator::wxUpdateIterator=topic784 +3 wxUpdateIterator::GetX=topic785 +3 wxUpdateIterator::GetY=topic786 +3 wxUpdateIterator::GetWidth=topic787 +3 wxUpdateIterator::GetHeight=topic788 +3 wxUpdateIterator::operator ++=topic789 +2 wxUpdateUIEvent +3 wxUpdateUIEvent=wxupdateuievent +3 wxUpdateUIEvent::wxUpdateUIEvent=topic790 +3 wxUpdateUIEvent::m_checked=topic791 +3 wxUpdateUIEvent::m_enabled=topic792 +3 wxUpdateUIEvent::m_setChecked=topic793 +3 wxUpdateUIEvent::m_setEnabled=topic794 +3 wxUpdateUIEvent::m_setText=topic795 +3 wxUpdateUIEvent::m_text=topic796 +3 wxUpdateUIEvent::Check=wxupdateuieventcheck +3 wxUpdateUIEvent::Enable=wxupdateuieventenable +3 wxUpdateUIEvent::GetChecked=wxupdateuieventgetchecked +3 wxUpdateUIEvent::GetEnabled=wxupdateuieventgetenabled +3 wxUpdateUIEvent::GetSetChecked=wxupdateuieventgetsetchecked +3 wxUpdateUIEvent::GetSetEnabled=wxupdateuieventgetsetenabled +3 wxUpdateUIEvent::GetSetText=wxupdateuieventgetsettext +3 wxUpdateUIEvent::GetText=wxupdateuieventgettext +3 wxUpdateUIEvent::SetText=wxupdateuieventsettext +2 wxValidator +3 wxValidator=wxvalidator +3 wxValidator::wxValidator=wxvalidatorconstr +3 wxValidator::~wxValidator=topic797 +3 wxValidator::Clone=wxvalidatorclone +3 wxValidator::GetWindow=wxvalidatorgetwindow +3 wxValidator::SetWindow=wxvalidatorsetwindow +3 wxValidator::TransferFromWindow=wxvalidatortransferfromwindow +3 wxValidator::TransferToWindow=wxvalidatortransfertowindow +3 wxValidator::Validate=wxvalidatorvalidate +2 wxView +3 wxView=wxview +3 wxView::m_viewDocument=topic798 +3 wxView::m_viewFrame=topic799 +3 wxView::m_viewTypeName=topic800 +3 wxView::wxView=topic801 +3 wxView::~wxView=topic802 +3 wxView::Activate=topic803 +3 wxView::Close=topic804 +3 wxView::GetDocument=topic805 +3 wxView::GetDocumentManager=topic806 +3 wxView::GetFrame=topic807 +3 wxView::GetViewName=topic808 +3 wxView::OnActivateView=topic809 +3 wxView::OnChangeFilename=topic810 +3 wxView::OnClose=topic811 +3 wxView::OnCreate=topic812 +3 wxView::OnCreatePrintout=topic813 +3 wxView::OnUpdate=topic814 +3 wxView::SetDocument=topic815 +3 wxView::SetFrame=topic816 +3 wxView::SetViewName=topic817 +2 wxWindow +3 wxWindow=wxwindow +3 wxWindow::wxWindow=topic818 +3 wxWindow::~wxWindow=topic819 +3 wxWindow::AddChild=topic820 +3 wxWindow::CaptureMouse=wxwindowcapturemouse +3 wxWindow::Center=wxwindowcenter +3 wxWindow::Centre=wxwindowcentre +3 wxWindow::Clear=wxwindowclear +3 wxWindow::ClientToScreen=topic821 +3 wxWindow::Close=wxwindowclose +3 wxWindow::Destroy=wxwindowdestroy +3 wxWindow::DestroyChildren=topic822 +3 wxWindow::DragAcceptFiles=wxwindowdragacceptfiles +3 wxWindow::Enable=wxwindowenable +3 wxWindow::FakePopupMenu=wxwindowfakepopupmenu +3 wxWindow::FindFocus=wxwindowfindfocus +3 wxWindow::Fit=wxwindowfit +3 wxWindow::GetBackgroundColour=wxwindowgetbackgroundcolour +3 wxWindow::GetCharHeight=topic823 +3 wxWindow::GetCharWidth=topic824 +3 wxWindow::GetChildren=topic825 +3 wxWindow::GetClientSize=wxwindowgetclientsize +3 wxWindow::GetConstraints=wxwindowgetconstraints +3 wxWindow::GetDefaultItem=wxwindowgetdefaultitem +3 wxWindow::GetEventHandler=wxwindowgeteventhandler +3 wxWindow::GetFont=wxwindowgetfont +3 wxWindow::GetForegroundColour=wxwindowgetforegroundcolour +3 wxWindow::GetGrandParent=topic826 +3 wxWindow::GetHandle=topic827 +3 wxWindow::GetId=wxwindowgetid +3 wxWindow::GetPosition=topic828 +3 wxWindow::GetLabel=topic829 +3 wxWindow::GetName=wxwindowgetname +3 wxWindow::GetParent=topic830 +3 wxWindow::GetReturnCode=wxwindowgetreturncode +3 wxWindow::GetScrollThumb=wxwindowgetscrollthumb +3 wxWindow::GetScrollPos=wxwindowgetscrollpos +3 wxWindow::GetScrollRange=wxwindowgetscrollrange +3 wxWindow::GetSize=topic831 +3 wxWindow::GetTextExtent=topic832 +3 wxWindow::GetTitle=wxwindowgettitle +3 wxWindow::GetWindowStyleFlag=topic833 +3 wxWindow::InitDialog=wxwindowinitdialog +3 wxWindow::IsEnabled=wxwindowisenabled +3 wxWindow::IsRetained=wxwindowisretained +3 wxWindow::IsShown=wxwindowisshown +3 wxWindow::Layout=wxwindowlayout +3 wxWindow::LoadFromResource=wxwindowloadfromresource +3 wxWindow::Lower=wxwindowlower +3 wxWindow::MakeModal=wxwindowmakemodal +3 wxWindow::Move=wxwindowmove +3 wxWindow::OnActivate=wxwindowonactivate +3 wxWindow::OnChar=wxwindowonchar +3 wxWindow::OnCharHook=wxwindowoncharhook +3 wxWindow::OnCommand=wxwindowoncommand +3 wxWindow::OnClose=wxwindowonclose +3 wxWindow::OnCloseWindow=wxwindowonclosewindow +3 wxWindow::OnDefaultAction=wxwindowondefaultaction +3 wxWindow::OnDropFiles=wxwindowondropfiles +3 wxWindow::OnEraseBackground=wxwindowonerasebackground +3 wxWindow::OnKillFocus=wxwindowonkillfocus +3 wxWindow::OnIdle=wxwindowonidle +3 wxWindow::OnInitDialog=wxwindowoninitdialog +3 wxWindow::OnMenuCommand=wxwindowonmenucommand +3 wxWindow::OnMenuHighlight=wxwindowonmenuhighlight +3 wxWindow::OnMouseEvent=wxwindowonmouseevent +3 wxWindow::OnMove=wxwindowonmove +3 wxWindow::OnPaint=wxwindowonpaint +3 wxWindow::OnScroll=wxwindowonscroll +3 wxWindow::OnSetFocus=wxwindowonsetfocus +3 wxWindow::OnSize=wxwindowonsize +3 wxWindow::OnSysColourChanged=wxwindowonsyscolourchanged +3 wxWindow::PopEventHandler=wxwindowpopeventhandler +3 wxWindow::PopupMenu=wxwindowpopupmenu +3 wxWindow::PushEventHandler=wxwindowpusheventhandler +3 wxWindow::Raise=wxwindowraise +3 wxWindow::Refresh=wxwindowrefresh +3 wxWindow::ReleaseMouse=wxwindowreleasemouse +3 wxWindow::RemoveChild=wxwindowremovechild +3 wxWindow::ScreenToClient=topic834 +3 wxWindow::ScrollWindow=wxwindowscrollwindow +3 wxWindow::SetAutoLayout=wxwindowsetautolayout +3 wxWindow::SetBackgroundColour=wxwindowsetbackgroundcolour +3 wxWindow::SetConstraints=wxwindowsetconstraints +3 wxWindow::SetFocus=wxwindowsetfocus +3 wxWindow::SetFont=wxwindowsetfont +3 wxWindow::SetForegroundColour=wxwindowsetforegroundcolour +3 wxWindow::SetId=wxwindowsetid +3 wxWindow::SetName=wxwindowsetname +3 wxWindow::SetReturnCode=wxwindowsetreturncode +3 wxWindow::SetScrollbar=wxwindowsetscrollbar +3 wxWindow::SetScrollPos=wxwindowsetscrollpos +3 wxWindow::SetSize=wxwindowsetsize +3 wxWindow::SetSizeHints=wxwindowsetsizehints +3 wxWindow::SetClientSize=topic835 +3 wxWindow::SetPalette=topic836 +3 wxWindow::SetCursor=wxwindowsetcursor +3 wxWindow::SetEventHandler=wxwindowseteventhandler +3 wxWindow::SetTitle=wxwindowsettitle +3 wxWindow::Show=topic837 +3 wxWindow::TransferDataFromWindow=wxwindowtransferdatafromwindow +3 wxWindow::TransferDataToWindow=wxwindowtransferdatatowindow +3 wxWindow::Validate=wxwindowvalidate +3 wxWindow::WarpPointer=wxwindowwarppointer +2 wxWindowDC +3 wxWindowDC=wxwindowdc +3 wxWindowDC::wxWindowDC=topic838 +1 Functions +2 Functions=functions +2 File functions +3 File functions=filefunctions +3 ::wxDirExists=topic839 +3 ::wxDos2UnixFilename=topic840 +3 ::wxFileExists=topic841 +3 ::wxFileNameFromPath=topic842 +3 ::wxFindFirstFile=wxfindfirstfile +3 ::wxFindNextFile=wxfindnextfile +3 ::wxIsAbsolutePath=topic843 +3 ::wxPathOnly=topic844 +3 ::wxUnix2DosFilename=topic845 +3 ::wxConcatFiles=topic846 +3 ::wxCopyFile=topic847 +3 ::wxGetHostName=wxgethostname +3 ::wxGetEmailAddress=wxgetemailaddress +3 ::wxGetUserId=wxgetuserid +3 ::wxGetUserName=wxgetusername +3 ::wxGetWorkingDirectory=topic848 +3 ::wxGetTempFileName=topic849 +3 ::wxIsWild=wxiswild +3 ::wxMatchWild=wxmatchwild +3 ::wxMkdir=topic850 +3 ::wxRemoveFile=topic851 +3 ::wxRenameFile=topic852 +3 ::wxRmdir=topic853 +3 ::wxSetWorkingDirectory=topic854 +2 String functions +3 String functions=topic855 +3 ::copystring=topic856 +3 ::wxStringMatch=topic857 +3 ::wxStringEq=wxstringeq +3 ::wxTransferFileToStream=wxtransferfiletostream +3 ::wxTransferStreamToFile=wxtransferstreamtofile +2 Dialog functions +3 Dialog functions=dialogfunctions +3 ::wxFileSelector=wxfileselector +3 ::wxGetTextFromUser=wxgettextfromuser +3 ::wxGetMultipleChoice=wxgetmultiplechoice +3 ::wxGetSingleChoice=wxgetsinglechoice +3 ::wxGetSingleChoiceIndex=wxgetsinglechoiceindex +3 ::wxGetSingleChoiceData=wxgetsinglechoicedata +3 ::wxMessageBox=wxmessagebox +2 GDI functions +3 GDI functions=gdifunctions +3 ::wxColourDisplay=topic858 +3 ::wxDisplayDepth=topic859 +3 ::wxMakeMetaFilePlaceable=wxmakemetafileplaceable +3 ::wxSetCursor=wxsetcursor +2 System event functions +3 System event functions=topic860 +3 ::wxAddPrimaryEventHandler=topic861 +3 ::wxAddSecondaryEventHandler=topic862 +3 ::wxNotifyEvent=topic863 +3 ::wxRegisterEventClass=topic864 +3 ::wxRegisterEventName=topic865 +3 ::wxRegisterExternalEventHandlers=topic866 +3 ::wxRemoveSecondaryEventHandler=topic867 +3 ::wxSendEvent=wxsendevent +2 Printer settings +3 Printer settings=printersettings +3 ::wxGetPrinterCommand=topic868 +3 ::wxGetPrinterFile=topic869 +3 ::wxGetPrinterMode=topic870 +3 ::wxGetPrinterOptions=topic871 +3 ::wxGetPrinterOrientation=topic872 +3 ::wxGetPrinterPreviewCommand=topic873 +3 ::wxGetPrinterScaling=topic874 +3 ::wxGetPrinterTranslation=topic875 +3 ::wxSetPrinterCommand=topic876 +3 ::wxSetPrinterFile=topic877 +3 ::wxSetPrinterMode=topic878 +3 ::wxSetPrinterOptions=topic879 +3 ::wxSetPrinterOrientation=topic880 +3 ::wxSetPrinterPreviewCommand=topic881 +3 ::wxSetPrinterScaling=topic882 +3 ::wxSetPrinterTranslation=topic883 +2 Clipboard functions +3 Clipboard functions=clipsboard +3 ::wxClipboardOpen=topic884 +3 ::wxCloseClipboard=topic885 +3 ::wxEmptyClipboard=topic886 +3 ::wxEnumClipboardFormats=topic887 +3 ::wxGetClipboardData=topic888 +3 ::wxGetClipboardFormatName=topic889 +3 ::wxIsClipboardFormatAvailable=topic890 +3 ::wxOpenClipboard=topic891 +3 ::wxRegisterClipboardFormat=topic892 +3 ::wxSetClipboardData=topic893 +2 Miscellaneous functions +3 Miscellaneous functions=miscellany +3 ::NewId=topic894 +3 ::RegisterId=topic895 +3 ::wxBeginBusyCursor=wxbeginbusycursor +3 ::wxBell=topic896 +3 ::wxCleanUp=wxcleanup +3 ::wxCreateDynamicObject=wxcreatedynamicobject +3 ::wxDebugMsg=topic897 +3 ::wxDisplaySize=topic898 +3 ::wxEntry=wxentry +3 ::wxError=wxerror +3 ::wxEndBusyCursor=wxendbusycursor +3 ::wxExecute=wxexecute +3 ::wxExit=wxexit +3 ::wxFatalError=wxfatalerror +3 ::wxFindMenuItemId=topic899 +3 ::wxFindWindowByLabel=topic900 +3 ::wxFindWindowByName=wxfindwindowbyname +3 ::wxGetActiveWindow=wxgetactivewindow +3 ::wxGetDisplayName=wxgetdisplayname +3 ::wxGetHomeDir=topic901 +3 ::wxGetHostName=topic902 +3 ::wxGetElapsedTime=wxgetelapsedtime +3 ::wxGetFreeMemory=topic903 +3 ::wxGetMousePosition=topic904 +3 ::wxGetOsVersion=topic905 +3 ::wxGetResource=wxgetresource +3 ::wxGetUserId=topic906 +3 ::wxGetUserName=topic907 +3 ::wxKill=wxkill +3 ::wxInitClipboard=wxinitclipboard +3 ::wxIPCCleanUp=wxipccleanup +3 ::wxIPCInitialize=wxipcinitialize +3 ::wxIsBusy=wxisbusy +3 ::wxLoadUserResource=wxloaduserresource +3 ::wxNow=wxnow +3 ::wxPostDelete=wxpostdelete +3 ::wxSetDisplayName=wxsetdisplayname +3 ::wxShell=wxshell +3 ::wxSleep=topic908 +3 ::wxStripMenuCodes=topic909 +3 ::wxStartTimer=wxstarttimer +3 ::wxToLower=wxtolower +3 ::wxToUpper=wxtoupper +3 ::wxTrace=wxtrace +3 ::wxTraceLevel=wxtracelevel +3 ::wxWriteResource=wxwriteresource +3 ::wxYield=topic910 +2 Macros +3 Macros=macros +3 CLASSINFO=classinfo +3 WXDEBUG_NEW=debugnew +3 DECLARE_ABSTRACT_CLASS=topic911 +3 DECLARE_APP=declareapp +3 DECLARE_CLASS=topic912 +3 DECLARE_DYNAMIC_CLASS=topic913 +3 IMPLEMENT_ABSTRACT_CLASS=topic914 +3 IMPLEMENT_ABSTRACT_CLASS2=topic915 +3 IMPLEMENT_APP=implementapp +3 IMPLEMENT_CLASS=topic916 +3 IMPLEMENT_CLASS2=topic917 +3 IMPLEMENT_DYNAMIC_CLASS=topic918 +3 IMPLEMENT_DYNAMIC_CLASS2=topic919 +3 WXTRACE=trace +3 WXTRACELEVEL=tracelevel +2 wxWindows resource functions +3 wxWindows resource functions=resourcefuncs +3 ::wxResourceAddIdentifier=wxresourceaddidentifier +3 ::wxResourceClear=topic920 +3 ::wxResourceCreateBitmap=topic921 +3 ::wxResourceCreateIcon=topic922 +3 ::wxResourceCreateMenuBar=topic923 +3 ::wxResourceGetIdentifier=topic924 +3 ::wxResourceParseData=wxresourcedata +3 ::wxResourceParseFile=topic925 +3 ::wxResourceParseString=wxresourceparsestring +3 ::wxResourceRegisterBitmapData=registerbitmapdata +3 ::wxResourceRegisterIconData=topic926 +1 Classes by category +2 Classes by category=classesbycat +1 Topic overviews +2 Topic overviews=overviews +2 wxApp overview=wxappoverview +2 Bitmaps overview +3 Bitmaps overview=wxbitmapoverview +3 Loading bitmaps: further information=topic927 +3 Bitmap format handlers=topic928 +3 wxIcon overview=wxiconoverview +2 wxDialog overview +3 wxDialog overview=wxdialogoverview +2 Font overview +3 Font overview=wxfontoverview +2 wxString overview +3 wxString overview=wxstringoverview +3 Copyright of the original GNU code portion=topic929 +3 Features/Additions/Modifications=topic930 +3 Function calls=topic931 +3 Header files=topic932 +3 Test program=topic933 +3 Compilers=topic934 +3 GNU Documentation +4 GNU Documentation=topic935 +4 The wxString class=topic936 +4 Constructor examples=topic937 +4 Examples=topic938 +4 Comparing, Searching and Matching examples=topic939 +4 Substring extraction examples=topic940 +4 Concatenation examples=topic941 +4 Other manipulation examples=topic942 +4 Reading, Writing and Conversion examples=topic943 +3 Regular Expressions +4 Regular Expressions=regularexpressions +4 Regular Expression Overview=topic944 +4 Syntax of Regular Expressions=topic945 +2 wxString member functions +3 wxString member functions=wxstringcategories +2 wxSplitterWindow overview +3 wxSplitterWindow overview=wxsplitterwindowoverview +3 Example=topic946 +2 wxTreeCtrl overview +3 wxTreeCtrl overview=wxtreectrloverview +2 wxListCtrl overview +3 wxListCtrl overview=wxlistctrloverview +2 wxImageList overview +3 wxImageList overview=wximagelistoverview +2 Common dialogs overview +3 Common dialogs overview=commondialogsoverview +3 wxColourDialog overview=wxcolourdialogoverview +3 wxFontDialog overview=wxfontdialogoverview +3 wxPrintDialog overview=wxprintdialogoverview +3 wxFileDialog overview=wxfiledialogoverview +3 wxDirDialog overview=wxdirdialogoverview +3 wxTextEntryDialog overview=wxtextentrydialogoverview +3 wxMessageDialog overview=wxmessagedialogoverview +3 wxSingleChoiceDialog overview=wxsinglechoicedialogoverview +3 wxMultipleChoiceDialog overview=wxmultiplechoicedialogoverview +2 Constraints overview +3 Constraints overview=constraintsoverview +3 Constraint layout: more detail=topic947 +3 Window layout examples +4 Window layout examples=layoutexamples +4 Example 1: subwindow layout=topic948 +4 Example 2: panel item layout=topic949 +2 Database classes overview +3 Database classes overview=odbcoverview +3 Procedures for writing an ODBC application=topic950 +3 wxDatabase overview=wxdatabaseoverview +3 wxQueryCol overview=wxquerycoloverview +3 wxQueryField overview=wxqueryfieldoverview +3 wxRecordSet overview=wxrecordsetoverview +3 ODBC SQL data types=sqltypes +3 A selection of SQL commands +4 A selection of SQL commands=sqlcommands +4 Create=topic951 +4 Insert=topic952 +4 Select=topic953 +4 Update=topic954 +2 Device context overview +3 Device context overview=dcoverview +2 Debugging overview +3 Debugging overview=debuggingoverview +3 wxDebugContext overview=wxdebugcontextoverview +2 Window deletion overview +3 Window deletion overview=windowdeletionoverview +2 Scrolling overview +3 Scrolling overview=scrollingoverview +2 Document/view overview +3 Document/view overview=docviewoverview +3 wxDocument overview=wxdocumentoverview +3 wxView overview=wxviewoverview +3 wxDocTemplate overview=wxdoctemplateoverview +3 wxDocManager overview=wxdocmanageroverview +3 wxCommand overview=wxcommandoverview +3 wxCommandProcessor overview=wxcommandprocessoroverview +3 wxFileHistory overview=wxfilehistoryoverview +3 wxWindows predefined command identifiers=predefinedids +2 Event handling overview +3 Event handling overview=eventhandlingoverview +3 Introduction=topic955 +3 How events are processed=eventprocessing +3 Pluggable event handlers=topic956 +3 Event macros summary=eventmacros +2 Writing a wxWindows application: a rough guide +3 Writing a wxWindows application: a rough guide=roughguide +2 Interprocess communication overview +3 Interprocess communication overview=ipcoverview +3 Data transfer=topic957 +3 Examples=topic958 +3 More DDE details=topic959 +2 Printing overview +3 Printing overview=printingoverview +2 The wxWindows resource system +3 The wxWindows resource system=resourceformats +3 The format of a .WXR file=topic960 +3 Dialog resource format=topic961 +3 Menubar resource format=topic962 +3 Bitmap resource format=topic963 +3 Icon resource format=topic964 +3 Resource format design issues=topic965 +3 Compiling the resource system=topic966 +2 Run time class information overview +3 Run time class information overview=runtimeclassoverview +3 wxClassInfo=wxclassinfooverview +3 Example=topic967 +2 Window styles +3 Window styles=windowstyles +2 Tab classes overview +3 Tab classes overview=wxtaboverview +3 Example=topic968 +3 wxTab change log=topic969 +2 wxTabView overview +3 wxTabView overview=wxtabviewoverview +2 Toolbar overview +3 Toolbar overview=wxtoolbaroverview +3 Using the toolbar library=topic970 +2 Validator overview +3 Validator overview=validatoroverview +2 wxExpr overview +3 wxExpr overview=exproverview +3 wxExpr for data file manipulation=topic971 +3 wxExpr compilation=topic972 +3 Bugs=topic973 +3 Using wxExpr=topic974 +2 wxGrid classes overview +3 wxGrid classes overview=gridoverview +3 Example=topic975 +2 Notes on using the reference +3 Notes on using the reference=referencenotes +1 References +2 References=bibliography diff --git a/docs/latex/wx/wx.hpj b/docs/latex/wx/wx.hpj new file mode 100644 index 0000000000..3d572aed67 --- /dev/null +++ b/docs/latex/wx/wx.hpj @@ -0,0 +1,17 @@ +[OPTIONS] +BMROOT=d:\wx2\docs\latex\wx ; Assume that bitmaps are where the source is +TITLE=wxWindows Manual +CONTENTS=Contents +COMPRESS=HIGH + +[FILES] +wx.rtf + +[CONFIG] +CreateButton("Up", "&Up", "JumpId(`wx.hlp', `Contents')") +BrowseButtons() + +[MAP] + +[BITMAPS] + diff --git a/docs/latex/wx/wxstring.tex b/docs/latex/wx/wxstring.tex new file mode 100644 index 0000000000..5777dcf3eb --- /dev/null +++ b/docs/latex/wx/wxstring.tex @@ -0,0 +1,593 @@ +\section{\class{wxString}}\label{wxstring} + +\overview{Overview}{wxstringoverview} + +\helpref{Member functions by category}{wxstringcategories} + +{\bf CAVE:} The description of the memberfunctions is very +sparse in the moment. It will be extended in the next +version of the help file. The list of memberfunctions +is complete. + +\membersection{wxString::wxString}\label{wxstringconstruct} + +\func{void}{wxString}{\param{void}{}}\\ +\func{void}{wxString}{\param{const wxString\&}{ x}}\\ +\func{void}{wxString}{\param{const wxSubString\&}{ x}}\\ +\func{void}{wxString}{\param{const char*}{ t}}\\ +\func{void}{wxString}{\param{const char*}{ t}, \param{int}{ len}}\\ +\func{void}{wxString}{\param{char}{ c}} + +Constructors. + +\membersection{wxString::\destruct{wxString}}\label{wxstringdestruct} + +\func{void}{\destruct{wxString}}{\void} + +String destructor. + +\membersection{wxString::Alloc}\label{wxstringAlloc} + +\func{void}{Alloc}{\param{int}{ newsize}} + +Preallocate some space for wxString. + +\membersection{wxString::Allocation}\label{wxstringAllocation} + +\func{int}{Allocation}{\param{void}{}} \param{ const}{} + +Report current allocation (not length!). + +\membersection{wxString::Append}\label{wxstringAppend} + +\func{wxString\&}{Append}{\param{const char*}{ cs}}\\ +\func{wxString\&}{Append}{\param{const wxString\&}{ s}} + +Concatenation. + +\func{wxString\&}{Append}{\param{char}{ c}, \param{int}{ rep = 1}} + +Append {\it c}, {\it rep} times + +\membersection{wxString::After}\label{wxstringAfter} + +\func{wxSubString}{After}{\param{int}{ pos}}\\ +\func{wxSubString}{After}{\param{const wxString\&}{ x}, \param{int}{ startpos = 0}}\\ +\func{wxSubString}{After}{\param{const wxSubString\&}{ x}, \param{int}{ startpos = 0}}\\ +\func{wxSubString}{After}{\param{const char*}{ t}, \param{int}{ startpos = 0}}\\ +\func{wxSubString}{After}{\param{char}{ c}, \param{int}{ startpos = 0}}\\ +\func{wxSubString}{After}{\param{const wxRegex\&}{ r}, \param{int}{ startpos = 0}} + +\membersection{wxString::At}\label{wxstringAt} + +\func{wxSubString}{At}{\param{int}{ pos}, \param{int}{ len}}\\ +\func{wxSubString}{operator ()}{\param{int}{ pos}, \param{int}{ len}}\\ +\func{wxSubString}{At}{\param{const wxString\&}{ x}, \param{int}{ startpos = 0}}\\ +\func{wxSubString}{At}{\param{const wxSubString\&}{ x}, \param{int}{ startpos = 0}}\\ +\func{wxSubString}{At}{\param{const char*}{ t}, \param{int}{ startpos = 0}}\\ +\func{wxSubString}{At}{\param{char}{ c}, \param{int}{ startpos = 0}}\\ +\func{wxSubString}{At}{\param{const wxRegex\&}{ r}, \param{int}{ startpos = 0}} + +wxSubString extraction. + +Note that you can't take a substring of a const wxString, since +this leaves open the possiblility of indirectly modifying the +wxString through the wxSubString. + +\membersection{wxString::Before}\label{wxstringBefore} + +\func{wxSubString}{Before}{\param{int}{ pos}}\\ +\func{wxSubString}{Before}{\param{const wxString\&}{ x}, \param{int}{ startpos = 0}}\\ +\func{wxSubString}{Before}{\param{const wxSubString\&}{ x}, \param{int}{ startpos = 0}}\\ +\func{wxSubString}{Before}{\param{const char*}{ t}, \param{int}{ startpos = 0}}\\ +\func{wxSubString}{Before}{\param{char}{ c}, \param{int}{ startpos = 0}}\\ +\func{wxSubString}{Before}{\param{const wxRegex\&}{ r}, \param{int}{ startpos = 0}} + +\membersection{wxString::Capitalize}\label{wxstringCapitalize} + +\func{void}{Capitalize}{\param{void}{}}\\ +\func{friend wxString}{Capitalize}{\param{wxString\&}{ x}} + +\membersection{wxString::Cat}\label{wxstringCat} + +\func{friend void}{Cat}{\param{const wxString\&}{ a}, \param{const wxString\&}{ b}, \param{wxString\&}{ c}}\\ +\func{friend void}{Cat}{\param{const wxString\&}{ a}, \param{const wxSubString\&}{ b}, \param{wxString\&}{ c}}\\ +\func{friend void}{Cat}{\param{const wxString\&}{ a}, \param{const char*}{ b}, \param{wxString\&}{ c}}\\ +\func{friend void}{Cat}{\param{const wxString\&}{ a}, \param{char}{ b}, \param{wxString\&}{ c}}\\ +\func{friend void}{Cat}{\param{const wxSubString\&}{ a}, \param{const wxString\&}{ b}, \param{wxString\&}{ c}}\\ +\func{friend void}{Cat}{\param{const wxSubString\&}{ a}, \param{const wxSubString\&}{ b}, \param{wxString\&}{ c}}\\ +\func{friend void}{Cat}{\param{const wxSubString\&}{ a}, \param{const char*}{ b}, \param{wxString\&}{ c}}\\ +\func{friend void}{Cat}{\param{const wxSubString\&}{ a}, \param{char}{ b}, \param{wxString\&}{ c}}\\ +\func{friend void}{Cat}{\param{const char*}{ a}, \param{const wxString\&}{ b}, \param{wxString\&}{ c}}\\ +\func{friend void}{Cat}{\param{const char*}{ a}, \param{const wxSubString\&}{ b}, \param{wxString\&}{ c}}\\ +\func{friend void}{Cat}{\param{const char*}{ a}, \param{const char*}{ b}, \param{wxString\&}{ c}}\\ +\func{friend void}{Cat}{\param{const char*}{ a}, \param{char}{ b}, \param{wxString\&}{ c}} + +Concatenate first two arguments, store the result in the last argument. + +\func{friend void}{Cat}{\param{const wxString\&}{ a}, \param{const wxString\&}{ b}, \param{const wxString\&}{ c}, \param{wxString\&}{ d}}\\ +\func{friend void}{Cat}{\param{const wxString\&}{ a}, \param{const wxString\&}{ b}, \param{const wxSubString\&}{ c}, \param{wxString\&}{ d}}\\ +\func{friend void}{Cat}{\param{const wxString\&}{ a}, \param{const wxString\&}{ b}, \param{const char*}{ c}, \param{wxString\&}{ d}}\\ +\func{friend void}{Cat}{\param{const wxString\&}{ a}, \param{const wxString\&}{ b}, \param{char}{ c}, \param{wxString\&}{ d}}\\ +\func{friend void}{Cat}{\param{const wxString\&}{ a}, \param{const wxSubString\&}{ b}, \param{const wxString\&}{ c}, \param{wxString\&}{ d}}\\ +\func{friend void}{Cat}{\param{const wxString\&}{ a}, \param{const wxSubString\&}{ b}, \param{const wxSubString\&}{ c}, \param{wxString\&}{ d}}\\ +\func{friend void}{Cat}{\param{const wxString\&}{ a}, \param{const wxSubString\&}{ b}, \param{const char*}{ c}, \param{wxString\&}{ d}}\\ +\func{friend void}{Cat}{\param{const wxString\&}{ a}, \param{const wxSubString\&}{ b}, \param{char}{ c}, \param{wxString\&}{ d}}\\ +\func{friend void}{Cat}{\param{const wxString\&}{ a}, \param{const char*}{ b}, \param{const wxString\&}{ c}, \param{wxString\&}{ d}}\\ +\func{friend void}{Cat}{\param{const wxString\&}{ a}, \param{const char*}{ b}, \param{const wxSubString\&}{ c}, \param{wxString\&}{ d}}\\ +\func{friend void}{Cat}{\param{const wxString\&}{ a}, \param{const char*}{ b}, \param{const char*}{ c}, \param{wxString\&}{ d}}\\ +\func{friend void}{Cat}{\param{const wxString\&}{ a}, \param{const char*}{ b}, \param{char}{ c}, \param{wxString\&}{ d}} + +\func{friend void}{Cat}{\param{const char*}{ a}, \param{const wxString\&}{ b}, \param{const wxString\&}{ c}, \param{wxString\&}{ d}}\\ +\func{friend void}{Cat}{\param{const char*}{ a}, \param{const wxString\&}{ b}, \param{const wxSubString\&}{ c}, \param{wxString\&}{ d}}\\ +\func{friend void}{Cat}{\param{const char*}{ a}, \param{const wxString\&}{ b}, \param{const char*}{ c}, \param{wxString\&}{ d}}\\ +\func{friend void}{Cat}{\param{const char*}{ a}, \param{const wxString\&}{ b}, \param{char}{ c}, \param{wxString\&}{ d}}\\ +\func{friend void}{Cat}{\param{const char*}{ a}, \param{const wxSubString\&}{ b}, \param{const wxString\&}{ c}, \param{wxString\&}{ d}}\\ +\func{friend void}{Cat}{\param{const char*}{ a}, \param{const wxSubString\&}{ b}, \param{const wxSubString\&}{ c}, \param{wxString\&}{ d}}\\ +\func{friend void}{Cat}{\param{const char*}{ a}, \param{const wxSubString\&}{ b}, \param{const char*}{ c}, \param{wxString\&}{ d}}\\ +\func{friend void}{Cat}{\param{const char*}{ a}, \param{const wxSubString\&}{ b}, \param{char}{ c}, \param{wxString\&}{ d}}\\ +\func{friend void}{Cat}{\param{const char*}{ a}, \param{const char*}{ b}, \param{const wxString\&}{ c}, \param{wxString\&}{ d}}\\ +\func{friend void}{Cat}{\param{const char*}{ a}, \param{const char*}{ b}, \param{const wxSubString\&}{ c}, \param{wxString\&}{ d}}\\ +\func{friend void}{Cat}{\param{const char*}{ a}, \param{const char*}{ b}, \param{const char*}{ c}, \param{wxString\&}{ d}}\\ +\func{friend void}{Cat}{\param{const char*}{ a}, \param{const char*}{ b}, \param{char}{ c}, \param{wxString\&}{ d}} + +Double concatenation, by request. (Yes, there are too many versions, +but if one is supported, then the others should be too). +Concatenate the first 3 args, store the result in the last argument. + +\membersection{wxString::Chars}\label{wxstringChars} + +\func{const char*}{Chars}{\param{void}{}} \param{ const}{} + +Conversion. + +\membersection{wxString::CompareTo}\label{wxstringCompareTo} + +\begin{verbatim} +#define NO_POS ((int)(-1)) // undefined position +enum CaseCompare {exact, ignoreCase}; +\end{verbatim} + +\func{int}{CompareTo}{\param{const char*}{ cs}, \param{CaseCompare}{ cmp = exact}} \param{ const}{}\\ +\func{int}{CompareTo}{\param{const wxString\&}{ cs}, \param{CaseCompare}{ cmp = exact}} \param{ const}{} + +\membersection{wxString::Contains}\label{wxstringContains} + +\func{bool}{Contains}{\param{char}{ c}} \param{ const}{}\\ +\func{bool}{Contains}{\param{const wxString\&}{ y}} \param{ const}{}\\ +\func{bool}{Contains}{\param{const wxSubString\&}{ y}} \param{ const}{}\\ +\func{bool}{Contains}{\param{const char*}{ t}} \param{ const}{}\\ +\func{bool}{Contains}{\param{const wxRegex\&}{ r}} \param{ const}{} + +Return 1 if target appears anyhere in wxString; else 0. + +\func{bool}{Contains}{\param{const char*}{ pat}, \param{CaseCompare}{ cmp}} \param{ const}{}\\ +\func{bool}{Contains}{\param{const wxString\&}{ pat}, \param{CaseCompare}{ cmp}} \param{ const}{} + +Case dependent/independent variation . + +\func{bool}{Contains}{\param{char}{ c}, \param{int}{ pos}} \param{ const}{}\\ +\func{bool}{Contains}{\param{const wxString\&}{ y}, \param{int}{ pos}} \param{ const}{}\\ +\func{bool}{Contains}{\param{const wxSubString\&}{ y}, \param{int}{ pos}} \param{ const}{}\\ +\func{bool}{Contains}{\param{const char*}{ t}, \param{int}{ pos}} \param{ const}{}\\ +\func{bool}{Contains}{\param{const wxRegex\&}{ r}, \param{int}{ pos}} \param{ const}{} + +Return 1 if the target appears anywhere after position {\it pos} (or +before, if {\it pos} is negative) in wxString; else 0. + +\membersection{wxString::Copy}\label{wxstringCopy} + +\func{wxString}{Copy}{\param{void}{}} \param{ const}{} + +Duplication. + +\membersection{wxString::Del}\label{wxstringDel} + +\func{wxString\&}{Del}{\param{int}{ pos}, \param{int}{ len}} + +Delete {\it len} characters starting at {\it pos}. + +\func{wxString\&}{Del}{\param{const wxString\&}{ y}, \param{int}{ startpos = 0}}\\ +\func{wxString\&}{Del}{\param{const wxSubString\&}{ y}, \param{int}{ startpos = 0}}\\ +\func{wxString\&}{Del}{\param{const char*}{ t}, \param{int}{ startpos = 0}}\\ +\func{wxString\&}{Del}{\param{char}{ c}, \param{int}{ startpos = 0}}\\ +\func{wxString\&}{Del}{\param{const wxRegex\&}{ r}, \param{int}{ startpos = 0}} + +Delete the first occurrence of target after {\it startpos}. + +\membersection{wxString::DownCase}\label{wxstringDownCase} + +\func{void}{Downcase}{\param{void}{}}\\ +\func{friend wxString}{Downcase}{\param{wxString\&}{ x}} + +\membersection{wxString::Elem}\label{wxstringElem} + +\func{char}{Elem}{\param{int}{ i}} \param{ const}{} + +Element extraction. + +\membersection{wxString::Empty}\label{wxstringEmpty} + +\func{int}{Empty}{\param{void}{}} \param{ const}{} + +\membersection{wxString::Error}\label{wxstringError} + +\func{void}{Error}{\param{const char*}{ msg}} \param{ const}{} + +\membersection{wxString::First}\label{wxstringFirst} + +\func{int}{First}{\param{char}{ c}} \param{ const}{}\\ +\func{int}{First}{\param{const char*}{ cs}} \param{ const}{}\\ +\func{int}{First}{\param{const wxString\&}{ cs}} \param{ const}{} + +Return first or last occurrence of item. + +\membersection{wxString::Firstchar}\label{wxstringFirstchar} +\func{char}{Firstchar}{\param{void}{}} \param{ const}{} + +Element extraction. + +\membersection{wxString::Freq}\label{wxstringFreq} + +\func{int}{Freq}{\param{char}{ c}} \param{ const}{}\\ +\func{int}{Freq}{\param{const wxString\&}{ y}} \param{ const}{}\\ +\func{int}{Freq}{\param{const wxSubString\&}{ y}} \param{ const}{}\\ +\func{int}{Freq}{\param{const char*}{ t}} \param{ const}{} + +Return number of occurrences of target in wxString. + +\membersection{wxString::From}\label{wxstringFrom} + +\func{wxSubString}{From}{\param{int}{ pos}}\\ +\func{wxSubString}{From}{\param{const wxString\&}{ x}, \param{int}{ startpos = 0}}\\ +\func{wxSubString}{From}{\param{const wxSubString\&}{ x}, \param{int}{ startpos = 0}}\\ +\func{wxSubString}{From}{\param{const char*}{ t}, \param{int}{ startpos = 0}}\\ +\func{wxSubString}{From}{\param{char}{ c}, \param{int}{ startpos = 0}}\\ +\func{wxSubString}{From}{\param{const wxRegex\&}{ r}, \param{int}{ startpos = 0}} + +\membersection{wxString::GetData}\label{wxstringGetData} + +\func{char*}{GetData}{\param{void}{}} + +wxWindows compatibility conversion. + +\membersection{wxString::GSub}\label{wxstringGSub} +\func{int}{GSub}{\param{const wxString\&}{ pat}, \param{const wxString\&}{ repl}}\\ +\func{int}{GSub}{\param{const wxSubString\&}{ pat}, \param{const wxString\&}{ repl}}\\ +\func{int}{GSub}{\param{const char*}{ pat}, \param{const wxString\&}{ repl}}\\ +\func{int}{GSub}{\param{const char*}{ pat}, \param{const char*}{ repl}}\\ +\func{int}{GSub}{\param{const wxRegex\&}{ pat}, \param{const wxString\&}{ repl}} + +Global substitution: substitute all occurrences of {\it pat} with {\it repl}, +returning the number of matches. + +\membersection{wxString::Index}\label{wxstringIndex} + +\func{int}{Index}{\param{char}{ c}, \param{int}{ startpos = 0}} \param{ const}{}\\ +\func{int}{Index}{\param{const wxString\&}{ y}, \param{int}{ startpos = 0}} \param{ const}{}\\ +\func{int}{Index}{\param{const wxString\&}{ y}, \param{int}{ startpos}, \param{CaseCompare}{ cmp}} \param{ const}{}\\ +\func{int}{Index}{\param{const wxSubString\&}{ y}, \param{int}{ startpos = 0}} \param{ const}{}\\ +\func{int}{Index}{\param{const char*}{ t}, \param{int}{ startpos = 0}} \param{ const}{}\\ +\func{int}{Index}{\param{const char*}{ t}, \param{int}{ startpos}, \param{CaseCompare}{ cmp}} \param{ const}{}\\ +\func{int}{Index}{\param{const wxRegex\&}{ r}, \param{int}{ startpos = 0}} \param{ const}{} + +Return the position of target in string, or -1 for failure. + +\membersection{wxString::Insert}\label{wxstringInsert} + +\func{wxString\&}{Insert}{\param{int}{ pos}, \param{const char*}{ s}}\\ +\func{wxString\&}{Insert}{\param{int}{ pos}, \param{const wxString\&}{ s}} + +Insertion. + +\membersection{wxString::IsAscii}\label{wxstringIsAscii} + +\func{int}{IsAscii}{\param{void}{}} \param{ const}{} + +Classification (should be capital, because of ctype.h macros). + +\membersection{wxString::IsDefined}\label{wxstringIsDefined} + +\func{int}{IsDefined}{\param{void}{}} \param{ const}{} + +Classification (should be capital, because of ctype.h macros). + +\membersection{wxString::IsNull}\label{wxstringIsNull} + +\func{int}{IsNull}{\param{void}{}} \param{ const}{} + +Classification (should be capital, because of ctype.h macros). + +\membersection{wxString::IsNumber}\label{wxstringIsNumber} + +\func{int}{IsNumber}{\param{void}{}} \param{ const}{} + +Classification (should be capital, because of ctype.h macros). + +\membersection{wxString::IsWord}\label{wxstringIsWord} + +\func{int}{IsWord}{\param{void}{}} \param{ const}{} + +Classification (should be capital, because of ctype.h macros). + +\membersection{wxString::Last}\label{wxstringLast} + +\func{int}{Last}{\param{char}{ c}} \param{ const}{}\\ +\func{int}{Last}{\param{const char*}{ cs}} \param{ const}{}\\ +\func{int}{Last}{\param{const wxString\&}{ cs}} \param{ const}{} + +First or last occurrence of item. + +\membersection{wxString::Lastchar}\label{wxstringLastchar} + +\func{char}{Lastchar}{\param{void}{}} \param{ const}{} + +Element extraction. + +\membersection{wxString::Length}\label{wxstringLength} + +\func{unsigned int}{Length}{\param{void}{}} \param{ const}{} + +\membersection{wxString::LowerCase}\label{wxstringLowerCase} + +\func{void}{LowerCase}{\param{void}{}} + +\membersection{wxString::Matches}\label{wxstringMatches} + +\func{bool}{Matches}{\param{char}{ c}, \param{int}{ pos = 0}} \param{ const}{}\\ +\func{bool}{Matches}{\param{const wxString\&}{ y}, \param{int}{ pos = 0}} \param{ const}{}\\ +\func{bool}{Matches}{\param{const wxSubString\&}{ y}, \param{int}{ pos = 0}} \param{ const}{}\\ +\func{bool}{Matches}{\param{const char*}{ t}, \param{int}{ pos = 0}} \param{ const}{}\\ +\func{bool}{Matches}{\param{const wxRegex\&}{ r}, \param{int}{ pos = 0}} \param{ const}{} + +Return 1 if target appears at position {\it pos} in wxString; else 0. + +\membersection{wxString::OK}\label{wxstringOK} + +\func{int}{OK}{\param{void}{}} \param{ const}{} + +\membersection{wxString::Prepend}\label{wxstringPrepend} + +\func{wxString\&}{Prepend}{\param{const wxString\&}{ y}}\\ +\func{wxString\&}{Prepend}{\param{const wxSubString\&}{ y}}\\ +\func{wxString\&}{Prepend}{\param{const char*}{ t}}\\ +\func{wxString\&}{Prepend}{\param{char}{ c}} + +Prepend. + +\func{wxString\&}{Prepend}{\param{char}{ c}, \param{int}{ rep=1}} + +Prepend {\it c}, {\it rep} times. + +\membersection{wxString::Readline}\label{wxstringReadline} + +\func{friend int}{Readline}{\param{istream\&}{ s}, \param{wxString\&}{ x}, + \param{char}{ terminator = '$\backslash$n'}, + \param{int}{ discard\_terminator = 1}}\\ +\func{friend int}{Readline}{\param{FILE *}{ f}, \param{wxString\&}{ x}, + \param{char}{ terminator = '$\backslash$n'}, + \param{int}{ discard\_terminator = 1}} + +\membersection{wxString::Remove}\label{wxstringRemove} + +\func{wxString\&}{RemoveLast}{\param{void}{}}\\ +\func{wxString\&}{Remove}{\param{int}{ pos}}\\ +\func{wxString\&}{Remove}{\param{int}{ pos}, \param{int}{ len}} + +Remove {\it pos} to end of string. + +\membersection{wxString::Replace}\label{wxstringReplace} + +\func{wxString\&}{Replace}{\param{int}{ pos}, \param{int}{ n}, \param{const char*}{ s}}\\ +\func{wxString\&}{Replace}{\param{int}{ pos}, \param{int}{ n}, \param{const wxString\&}{ s}} + +\membersection{wxString::Replicate}\label{wxstringReplicate} + +\func{friend wxString}{Replicate}{\param{char}{ c}, \param{int}{ n}}\\ +\func{friend wxString}{Replicate}{\param{const wxString\&}{ y}, \param{int}{ n}} + +Replication. + +\membersection{wxString::Reverse}\label{wxstringReverse} + +\func{void}{Reverse}{\param{void}{}}\\ +\func{friend wxString}{Reverse}{\param{wxString\&}{ x}} + +\membersection{wxString::sprintf}\label{wxstringsprintf} +\func{void}{sprintf}{\param{const wxString\& }{ fmt}} + +Formatted assignment. We do not use the 'sprintf' constructor anymore, +because with that constructor, every initialisation with a string would +go through sprintf and this is not desirable, because sprintf +interprets some characters. With the above function we can write: + +\begin{verbatim} +wxString msg; msg.sprintf("Processing item %d\n", count); +\end{verbatim} + +\membersection{wxString::Strip}\label{wxstringStrip} + +\begin{verbatim} +enumStripType {leading = 0x1, trailing = 0x2, both = 0x3}; +\end{verbatim} + +\func{wxSubString}{Strip}{\param{StripType}{ s = trailing}, \param{char}{ c = ' '}} + +Strip characterss at the front and/or end. +StripType is defined for bitwise ORing. + +\membersection{wxString::SubString}\label{wxstringSubString} + +\func{wxString}{SubString}{\param{int}{ from}, \param{int}{ to}} + +Edward Zimmermann's additions. + +\membersection{wxString::Through}\label{wxstringThrough} + +\func{wxSubString}{Through}{\param{int}{ pos}}\\ +\func{wxSubString}{Through}{\param{const wxString\&}{ x}, \param{int}{ startpos = 0}}\\ +\func{wxSubString}{Through}{\param{const wxSubString\&}{ x}, \param{int}{ startpos = 0}}\\ +\func{wxSubString}{Through}{\param{const char*}{ t}, \param{int}{ startpos = 0}}\\ +\func{wxSubString}{Through}{\param{char}{ c}, \param{int}{ startpos = 0}}\\ +\func{wxSubString}{Through}{\param{const wxRegex\&}{ r}, \param{int}{ startpos = 0}} + +\membersection{wxString::Upcase}\label{wxstringUpcase} + +\func{void}{Upcase}{\param{void}{}}\\ +\func{friend wxString}{Upcase}{\param{wxString\&}{ x}} + +\membersection{wxString::UpperCase}\label{wxstringUpperCase} + +\func{void}{UpperCase}{\param{void}{}}\\ + +\membersection{wxString::operator $=$}\label{wxstringoperatorassign} + +\func{wxString\&}{operator $=$}{\param{const wxString\&}{ y}}\\ +\func{wxString\&}{operator $=$}{\param{const char*}{ y}}\\ +\func{wxString\&}{operator $=$}{\param{char}{ c}}\\ +\func{wxString\&}{operator $=$}{\param{const wxSubString\&}{ y}} + +Assignment. + +\membersection{wxString::operator $+=$}\label{wxstringPlusEqual} + +\func{wxString\&}{operator $+=$}{\param{const wxString\&}{ y}}\\ +\func{wxString\&}{operator $+=$}{\param{const wxSubString\&}{ y}}\\ +\func{wxString\&}{operator $+=$}{\param{const char*}{ t}}\\ +\func{wxString\&}{operator $+=$}{\param{char}{ c}} + +Concatenation. + +\membersection{wxString::operator []}\label{wxstringoperatorbracket} + +\func{char\&}{operator []}{\param{int}{ i}} + +Element extraction. + +\membersection{wxString::operator ()}\label{wxstringoperatorparenth} + +\func{char\&}{operator ()}{\param{int}{ i}} + +\membersection{wxString::operator \cinsert}\label{wxstringoperatorout} +\func{friend ostream\&}{operator \cinsert}{\param{ostream\&}{ s}, \param{const wxString\&}{ x}}\\ +\func{friend ostream\&}{operator \cinsert}{\param{ostream\&}{ s}, \param{const wxSubString\&}{ x}} + +\membersection{wxString::operator \cextract}\label{wxstringoperatorin} +\func{friend istream\&}{operator \cextract}{\param{istream\&}{ s}, \param{wxString\&}{ x}} + +\membersection{wxString::operator const char*}\label{wxstringoperatorconstcharpt} +\constfunc{}{operator const char*}{\param{void}{}} + +Conversion. + +\membersection{wxCHARARG}\label{wxstringwxCHARARG} + +\begin{verbatim} +#define wxCHARARG(s) ((const wxString\& )(s).Chars()) +\end{verbatim} + +Here is a very, very, very ugly macro, but it makes things more +transparent in cases, where a library function requires a +(const wxString\& ) argument. This is especially the case in wxWindows, +where all char-arguments are (const wxString\& ) and not (const char* ). +This macro should only be used in such cases and NOT to +modify the internal data. +The conventional way would be 'function((char*)string.Chars())'. +With the wxCHARARG macro, this can be achieved by 'function(wxCHARARG(string))'. +This makes it clearer that the usage should be confined +to arguments. + +\membersection{CommonPrefix}\label{wxstringCommonPrefix} + +\func{friend wxString}{CommonPrefix}{\param{const wxString\&}{ x}, \param{const wxString\&}{ y},\\ + \param{int}{ startpos = 0}}\\ + +\membersection{CommonSuffix}\label{wxstringCommonSuffix} + +\func{friend wxString}{CommonSuffix}{\param{const wxString\&}{ x}, \param{const wxString\&}{ y},\\ + \param{int}{ startpos = -1}} + +\membersection{Compare}\label{wxstringCompare} + +\func{int}{Compare}{\param{const wxString\&}{ x}, \param{const wxString\&}{ y}}\\ +\func{int}{Compare}{\param{const wxString\&}{ x}, \param{const wxSubString\&}{ y}}\\ +\func{int}{Compare}{\param{const wxString\&}{ x}, \param{const char*}{ y}}\\ +\func{int}{Compare}{\param{const wxSubString\&}{ x}, \param{const wxString\&}{ y}}\\ +\func{int}{Compare}{\param{const wxSubString\&}{ x}, \param{const wxSubString\&}{ y}}\\ +\func{int}{Compare}{\param{const wxSubString\&}{ x}, \param{const char*}{ y}} + +Case dependent comparison. Returns 0 if the match succeeded. + +\membersection{FCompare}\label{wxstringFCompare} + +\func{int}{FCompare}{\param{const wxString\&}{ x}, \param{const wxString\&}{ y}} + +Case independent comparison. Returns 0 if the match succeeded. + +\membersection{Comparison operators}\label{wxstringComparison} + +\func{int}{operator $==$}{\param{const wxString\&}{ x}, \param{const wxString\&}{ y}}\\ +\func{int}{operator $!=$}{\param{const wxString\&}{ x}, \param{const wxString\&}{ y}}\\ +\func{int}{operator $>$}{\param{const wxString\&}{ x}, \param{const wxString\&}{ y}}\\ +\func{int}{operator $>=$}{\param{const wxString\&}{ x}, \param{const wxString\&}{ y}}\\ +\func{int}{operator $<$}{\param{const wxString\&}{ x}, \param{const wxString\&}{ y}}\\ +\func{int}{operator $<=$}{\param{const wxString\&}{ x}, \param{const wxString\&}{ y}}\\ +\func{int}{operator $==$}{\param{const wxString\&}{ x}, \param{const wxSubString\&}{ y}}\\ +\func{int}{operator $!=$}{\param{const wxString\&}{ x}, \param{const wxSubString\&}{ y}}\\ +\func{int}{operator $>$}{\param{const wxString\&}{ x}, \param{const wxSubString\&}{ y}}\\ +\func{int}{operator $>=$}{\param{const wxString\&}{ x}, \param{const wxSubString\&}{ y}}\\ +\func{int}{operator $<$}{\param{const wxString\&}{ x}, \param{const wxSubString\&}{ y}}\\ +\func{int}{operator $<=$}{\param{const wxString\&}{ x}, \param{const wxSubString\&}{ y}}\\ +\func{int}{operator $==$}{\param{const wxString\&}{ x}, \param{const char*}{ t}}\\ +\func{int}{operator $!=$}{\param{const wxString\&}{ x}, \param{const char*}{ t}}\\ +\func{int}{operator $>$}{\param{const wxString\&}{ x}, \param{const char*}{ t}}\\ +\func{int}{operator $>=$}{\param{const wxString\&}{ x}, \param{const char*}{ t}}\\ +\func{int}{operator $<$}{\param{const wxString\&}{ x}, \param{const char*}{ t}}\\ +\func{int}{operator $<=$}{\param{const wxString\&}{ x}, \param{const char*}{ t}}\\ +\func{int}{operator $==$}{\param{const wxSubString\&}{ x}, \param{const wxString\&}{ y}}\\ +\func{int}{operator $!=$}{\param{const wxSubString\&}{ x}, \param{const wxString\&}{ y}}\\ +\func{int}{operator $>$}{\param{const wxSubString\&}{ x}, \param{const wxString\&}{ y}}\\ +\func{int}{operator $>=$}{\param{const wxSubString\&}{ x}, \param{const wxString\&}{ y}}\\ +\func{int}{operator $<$}{\param{const wxSubString\&}{ x}, \param{const wxString\&}{ y}}\\ +\func{int}{operator $<=$}{\param{const wxSubString\&}{ x}, \param{const wxString\&}{ y}}\\ +\func{int}{operator $==$}{\param{const wxSubString\&}{ x}, \param{const wxSubString\&}{ y}}\\ +\func{int}{operator $!=$}{\param{const wxSubString\&}{ x}, \param{const wxSubString\&}{ y}}\\ +\func{int}{operator $>$}{\param{const wxSubString\&}{ x}, \param{const wxSubString\&}{ y}}\\ +\func{int}{operator $>=$}{\param{const wxSubString\&}{ x}, \param{const wxSubString\&}{ y}}\\ +\func{int}{operator $<$}{\param{const wxSubString\&}{ x}, \param{const wxSubString\&}{ y}}\\ +\func{int}{operator $<=$}{\param{const wxSubString\&}{ x}, \param{const wxSubString\&}{ y}}\\ +\func{int}{operator $==$}{\param{const wxSubString\&}{ x}, \param{const char*}{ t}}\\ +\func{int}{operator $!=$}{\param{const wxSubString\&}{ x}, \param{const char*}{ t}}\\ +\func{int}{operator $>$}{\param{const wxSubString\&}{ x}, \param{const char*}{ t}}\\ +\func{int}{operator $>=$}{\param{const wxSubString\&}{ x}, \param{const char*}{ t}}\\ +\func{int}{operator $<$}{\param{const wxSubString\&}{ x}, \param{const char*}{ t}}\\ +\func{int}{operator $<=$}{\param{const wxSubString\&}{ x}, \param{const char*}{ t}} + +\membersection{operator $+$}\label{wxstringoperatorplus} + +\func{wxString}{operator $+$}{\param{const wxString\&}{ x}, \param{const wxString\&}{ y}}\\ +\func{wxString}{operator $+$}{\param{const wxString\&}{ x}, \param{const wxSubString\&}{ y}}\\ +\func{wxString}{operator $+$}{\param{const wxString\&}{ x}, \param{const char*}{ y}}\\ +\func{wxString}{operator $+$}{\param{const wxString\&}{ x}, \param{char}{ y}}\\ +\func{wxString}{operator $+$}{\param{const wxSubString\&}{ x}, \param{const wxString\&}{ y}}\\ +\func{wxString}{operator $+$}{\param{const wxSubString\&}{ x}, \param{const wxSubString\&}{ y}}\\ +\func{wxString}{operator $+$}{\param{const wxSubString\&}{ x}, \param{const char*}{ y}}\\ +\func{wxString}{operator $+$}{\param{const wxSubString\&}{ x}, \param{char}{ y}}\\ +\func{wxString}{operator $+$}{\param{const char*}{ x}, \param{const wxString\&}{ y}}\\ +\func{wxString}{operator $+$}{\param{const char*}{ x}, \param{const wxSubString\&}{ y}} + +\membersection{Join}\label{wxstringJoin} + +\func{friend wxString}{Join}{\param{wxString}{ src[]}, \param{int}{ n}, \param{const wxString\&}{ sep}} + +\membersection{Split}\label{wxstringSplit} + +\func{friend int}{Split}{\param{const wxString\&}{ x}, \param{wxString}{ res[]}, \param{int}{ maxn},\\ + \param{const wxString\&}{ sep}}\\ +\func{friend int}{Split}{\param{const wxString\&}{ x}, \param{wxString}{ res[]}, \param{int}{ maxn},\\ + \param{const wxRegex\&}{ sep}}\\ + +Split string into array res at separators; return number of elements + + + diff --git a/docs/latex/wx/wxtab1.bmp b/docs/latex/wx/wxtab1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..754c02827ee8b93a4da81e845fb1de20704f98c9 GIT binary patch literal 73718 zcmeI5&61-!5{0=D6X9je8_af|W1_bc^&}JF)wp+EyS}?SZ`AjZyyzHu=X*}-2MGiu zwk$(Ms%#@fB7GcEAc3I%_3!`x7B|Fo5MWD)yP4CKru4HF=uLx9mvFTk|(3R|tt#{~T9<84iI+;h~rZdrF zjC-Y8J-m3Rm!|i_Vk$B)y%i!=G%>v^imAxT^j3&e(ZuwwD5fGS(_0}@MHADzqL_-T zOmBrq6-`Xdv<(PWj{Hv-lt>w$+P{?)s81^>!s;!dM{T=S$eheWm`Wny-jaTy|m+ZTR$a%TwBvVM zKQX;cZ%w_l<9Ay>F}+Q1O}(_^cUwO(y-jaTy|m+ZTR$a%TYO!^a?2Kgn;(EnWD7OMakLxvm~c~U>g|cIoZS{0 zj(beG=@yau`iB34xRJc!xS7EH=KZ7#df(+I?Z*3DuMqXxU9WI)sh6mfV0X21bG>ZG z?Hm};K5X=iu$r5;^b;wO+z$OH+__*6&NbBgLDGD6<3_Wp>3AQOcf|3r^cx%Z=$)lF zE)4(Im?s*vMliv_kf$GMVyg%LgJZ;%|vI$S!s#!Y=x+A5VUMpp-IA1I=C?* zw|tl+vmLfUQqa`J(j?t;J8*aKZ`iJaKMvfYx964QJ9=M|!caoT3dl;G?2cZwe3IH9qv=Uu9xy8gcWLk2gNbG#zmHmVbu7D11*IW#n$8Hf9;@etp z7RY+(swbkXg%CT`OMo#2WU}OKNJpYHCb=-w%Ws!f&o_X3+LUtYiG*HBZk_WJmzw=X zbNETK=Sk%MyJr}J7*htQ33pf&rcy5t`uxs8&+|uZpB$B&)uKte%3Z0c``h4o5_vwg z`VYP3p%5Ptn0wCaq1>OhvT;98+fvS^cS)7!rLF3HzFbad3gPd>&t8Ip`+PcGPN(zb zjL%-Mhf61O$H6n09XFT{rMKtq=q$Sl>wZGPkLV}hK6k8{2dkG5dsm+ATy@<~Ty5M> zjZ|{)rY7bft9s|=yO}fYw!6agHoY|pn4f4=s%K+**V9sylj*Hdsh*ALT~A9*PNug; zrFu52ddJ&ORU;2?z$*9mhl@xvIP7~W+l@1=>L0z_x%g;spX8%1cTcY|Zi;|!alB7W z!TTPi98+&xi$0{E;5y?Gxp4$<#f{-77>L1cpOrOiW&6CU4<#yF`xMh@PX;51kZ83GGUOvZ97D=`(+`>J% zIla}tx1lXse`@X%#sPGv^ZA?{KX@G4yWZgDD26k}GGyT?+#J=r9#noJ+=by6PvOqT z%+76rn!D?!!$vl8%lK$M#eha3MGen3aKJhf_fF8z5 z`zHt7fOQUR7ZVyT2NidvuS}Octo(W8qjgpy4+?T@GqK$q6$B0ic@U)q6 z%VP|In={Knt#<`(K9&PzAt@D3xxLD%pR62IRNUFYFPYh>H&OVg0x4N95$7`u@(3&w zATphYADS$Nw%mjnfI=)DJdm&=bKI7e-0qALXooGxxQE4&u@q^^T`K?Hw9m$^(qUu0 zROP8On$ugg`mdyYsOitEGSwNCx$z8@DkR6meQ+m0%IGKN=IK(NYIWyKokPr6&G?B@ zx0iZp74p>&>no) zPs9x-*9Uc%H8-Ajq+YuAAXx@gBdq3 z9upcDtkOz})a~4Ibwn=uY@(bRE4Vw)jjQ%}l|+hu4>ucwQ;f|i3htn{^OM0#?$O(| z2P@oD>-*Aph|Et!?^rJ%&>LM=*B-2(IP@-zKgqb^)tPq;if{K5cjd26y@Vf(+us>C zkAZ{AL+ma;+3d(OD=7SX(03fWL+=@k&B+SxRN>vUPZZo^m52F_dT$nWVTGCTCu#c| zj|Hb;z}|Y^S-{x5s27Y$|1#xHKu6JSdaJJ7Z8Vzn(^LX%;#PLGH=5;2o>kblP1j@d z5}q`t++9iOtJkX%+dV~%yY1fiw0fi6DWh+2`bA3)zj!?dTWlEAa$*#%pjU)dz0rJ= z(KozdEp<^!`L|X(_XR(mv?8aaAC4pV{g2euC(D@K&Qu zP;qngP2?7lPbYZ2dsdnP-sm)!NHs=rj2l8F{}O^E%y~M?za2G^ftXU3Yed0RH|oVde_rZlauMKQK_Dd>0M7tO-`n_ zMx}Z-rguFpH948y8kOqVnBMiY)Z|puTX(w!R=uVO*r+p98y2~>I3F)Gq+$`i@ct7n zp9{tvl+i1}HB4{O4OePMVOd68Q4jXZhQSKcDD~X?eG=PAv|I|VmPZc1O4)G8FJ3NP zGmNX~xFHCh_Z`z*Mx}7*6t%-Jw3xq(L_;j$%`9B|$8~ewD3bdDxCh`vH1zYd7sK%` zRB_Awh9UD%$b=g=O>j{k&yUY>%Pk^;yL%O|BRB5Xg)B$hVh>wxVIEZ6SV_?HRpDfP zmO|iVZe%3P!i{VGfqPExV9&MkpykHSkD13D?%?(}wJx~L0#~6I;Kc;tZpK6jzT#bc z>Td38dQ)Z5T$GpnIPWJ^S@zA{+}Q9*Z7cc7a=i@u-QCmTEiKVw*p;I_NPE^xzF$8N zDnD^MQspOk?qM$ABp%@xjZ%W)Wa(Z0%{%k)mRexJbX>~xgyW5)q1$H(1pRwHM^`YH zC##6LO7A4&EE;jL)WXaY3|UHqxAtHzy6GMCh%QpET@|uUrj7L0_VT{>3ENT>FL~32 z?>e*F?K_K$qWgL&2)+C+|7dKOgDXI7tu_pK8#k30!rt`W=8gTZA&W76EoL^Sb-Aj9Z#X94Cp-xI>y5VuQtq z4cW1jnIV?4DeL-~U2eLlci_e#%6W$!Jg2bh6Joaw z9h6ZixVAuB7|K+Mmi6X7cig_K$GKtCGaO!7kdCg{D7YzjZZ=W^0?<$B z;hbiQuXDTJW$5a$&czHeZti>vqo|ie5Dy&fmNB=lm#&`~OO?nfH>?KGe4F#?CiODU zJkDhsICcMMm*xuH;4bGLQnOM*VrlvW zLl!fycL`!hdjd{B zjMd!9ZKMbkagf4p1{?X(*^o|0G#hb?1k8@B5I+$la=RXF6z^?ue9x!7y}NX)tVLG#$8Q>A;Oy$L-tYI&SIeWF%73fFu3~QC7KOAvZ-Gw~G#L z;v5PE31#9Zgua6t`*O`ss5i6r9nHM^IBcMJ5IS|iLl{j2aeDjCCAi^6;vL>k;48k5 ztJ9l4h%Clo!0~#cLoZu6zWOs55>ob_tC5TXEoSVvy#zS;@i{(ume1EqU^`K^j@2_7D7v7D#$vz9Oz1pPr?e?tbe*th(EC-~xLky;f5Huo z1GmEudUF~UAx=l9!K?h67k^Uj_uEf0W%W}0gjJI1zFvY^QeMS9)tmlIw{{`;x6H*< z(K?v4pBDTZ5L50T>VCMh;|Usi)NaDfWLc7MJJa@3ONry-_lqz#7kgB0-vhXY(=HB=U+Z~wy!T!#Ux{Yd-UtPBY`R+jIy1xKLR^rhB literal 0 HcmV?d00001 diff --git a/docs/latex/wx/wxtab1.eps b/docs/latex/wx/wxtab1.eps new file mode 100644 index 0000000000..eff7361042 --- /dev/null +++ b/docs/latex/wx/wxtab1.eps @@ -0,0 +1,1086 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: wxtab1.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 124 196 489 596 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +124 196 translate + +% size of image (on paper, in 1/72inch coords) +365 400 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 15 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 0000bf c0c0c0 808080 ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +365 400 8 % dimensions of data +[365 0 0 -400 0 400] % mapping matrix +rlecmapimage + +7f037f036b030000 +8103047f047f046804810300 +83030402037f037f0364038304020300 +8403040203017f017f0163018304020300 +8403040203017f017f0163018304020300 +8403040203017f017f0152010e0485000104020300 +8403040203017f017f0152018104020b028603000104020300 +840304020301810104040408010104040101040f01010404010404030101040701010412 +0104047f0175018104020b028603000104020300 +840304020301020101040a010104040101040f01010404010104010101040c0101041201 +0104010101047f017401810402010201000302010001028603000104020300 +840304020301020101040a010104040101040f01010404010104020101040b0101041201 +0104010101047f017401810402020201000102010002028603000104020300 +840304020301020101040401030401010404010104040201030402010404040101040201 +010401010104010103040101010401010304020104040401010401010104020103040101 +01048101048104017f0165018104020302030003028603000104020300 +840304020301020101040701010481010481040181010482040104810401810104820401 +048104018101048204010481040181010481040103010104020101040101010404010104 +810104820401048104018101048204010481040181010481040103010404020101040101 +0104810104820401048104017f0165018104020402010004028603000104020300 +840304020301020101040401040481010481040181010482040104810401810104820401 +040404810104810401810104810401030101040201010401010104010104048101048204 +010481040181010482040104810401810104810401030101040101010401010104010101 +04010102047f0167018104020302030003028603000104020300 +840304020301020101040301010401010104810104810401810104820401048104018101 +048204010481040103010104010101040401010402010104010101048101048104018101 +048204010482040104810401810104820401048104018101048104010301010401010104 +0101010401010104010102047f0167018104020202010001020100020286030001040203 +00 +840304020301020101040301010401010104810104810401810104820401048104018101 +048204010481040181010482040104810401810104810401030101040101010402010104 +810104810401810104820401048204010481040181010482040104810401810104810401 +03010104010101040101010401010104810104820401048104017f016501810402010201 +000302010001028603000104020300 +840304020301020101040401040481010403040101040402010304020104040401040403 +010104010104048101048104018101040204020104040401040403010304010101048101 +048104017f0165018104020b028603000104020300 +840304020301500101047f017f018104020b028603000104020300 +8403040203014c0104047f017f01820104030c0385000104020300 +8403040203017f017f0152010f00840104020300 +8403040203017f017f0163018304020300 +8403040203017f017f0163018304020300 +83030402047f047f04650482020300 +820304027f027f026702810300 +820304027f027f026702810300 +820304027f027f026702810300 +820304027f027f026702810300 +820304027f027f026702810300 +8203040218024f04820302044e04820302044e04820302044e048103020602810300 +8203040218028104024d0283030004024d0283030004024d0283030004024d0282030002 +0502810300 +8203040218028104024d0283030004024d0283030004024d0283030004024d0282030002 +0502810300 +8203040218028104024d0283030004024d0283030004024d0283030004024d0282030002 +0502810300 +8203040218028104024d0283030004024d0283030004024d0283030004024d0282030002 +0502810300 +8203040218028104024d0283030004024d0283030004024d0283030004024d0282030002 +0502810300 +8203040218028104021e0203000102810002260283030004021502020008028100020402 +81000205028100021a028303000402110281000210028100020f02810002140283030004 +020602810002020281000215028100020b02810002030281000207028100020902820300 +020502810300 +8203040218028104021e0281000201028100022802830300040214028100020102810002 +06028100020c028100021a028303000402100283000200020f028100020f028100021402 +83030004020602810002020281000223028100020d028100020902820300020502810300 + +8203040218028104021e0281000201028300020002810200830002000220028303000402 +130281000203028100028102000100810200010086020002000200028102000100010282 +000200810002170283030004021002830002000202020200010283000200028102008500 +020002000201028100028102000100010285000200020002820200021102830300040206 +028100020202830002000201028400020002000200010282000200020001028200020002 +000202010085020002000200810002860200020002000281020083000200020902820300 +020502810300 +8203040218028104021e0281000201028500020002000281020081000220028303000402 +130281000203028300020002010283000200028102008100028402000200020102820002 +008100028202000216028303000402100283000200020102810002010282000200810002 +820200028102008300020002010283000200020102820002008100028402000200021202 +830300040206020500820200020102820002008300020002830200020083000200028602 +000200020002010283000200028102008200020081000285020002000200810002820200 +028102008100020902820300020502810300 +8203040218028104021e0203000102830002000201028100022002830300040213028100 +020302810002810200810002010281000282020002010283000200020302810002010281 +0002160283030004020f0281000201028100020102030082020002010281000201028100 +028402000200020102030082020002010201001402830300040206028100020202830002 +000201028300020002820200028402000200028202000286020002000200020102830002 +000201028300020002010285000200020002010281000201028100020902820300020502 +810300 +8203040218028104021e0281000203028300020002010281000220028303000402130281 +000203028100020202810002820200028202000201028300020002030281000201028100 +02160283030004020f020400010281000201028300020002010281000201028100028402 +000200028202000201028300020002010283000200021202830300040206028100020202 +830002000201028300020002820200028402000200028202000286020002000200020102 +830002000201028300020002010285000200020002010281000201028100020902820300 +020502810300 +8203040218028104021e0281000203028300020002810200810002200283030004021402 +810002010281000282020002010283000200028202000201028300020002010283000200 +020102810002160283030004020e02810002030283000200028102008300020002010281 +000281020081000201028100020102810002810200830002000201028300020002120283 +030004020602810002020283000200028102008300020002820200028402000200028202 +000286020002000200020102830002000281020082000200810002860200020002000201 +028100028102008100020902820300020502810300 +8203040218028104021e0281000203028100028102008300020002200283030004021502 +020003020200010201008202000201028100028102000100010281000201028100021602 +83030004020e028100020302810002810200850002000200020202010082020002010281 +000202020100840200020002010281000282020002110283030004020602810002020281 +000281020085000200020002820200028402000200028202000286020002000200020102 +810002810200860002000200020081000284020002000202020100820200020902820300 +020502810300 +8203040218028104022a02810002200283030004024d0283030004024d0283030004022f +028100021b02820300020502810300 +82030402180281040226020300220283030004024d0283030004024d0283030004022b02 +03001d02820300020502810300 +8203040218028104024d0283030004024d0283030004024d0283030004024d0282030002 +0502810300 +8203040218028104024d0283030004024d0283030004024d0283030004024d0282030002 +0502810300 +8203040218028104024d0283030004024d0283030004024d0283030004024d0282030002 +0502810300 +8203040218028104024d0283030004024d0283030004024d0283030004024d0282030002 +0502810300 +820304020e024f04820302044e04820302044e04820302044e0481030207028203000205 +02810300 +820304020e028104024d0283030004024d0283030004024d0283030004024d0282030002 +0602820300020502810300 +820304020e028104024d0283030004024d0283030004024d0283030004024d0282030002 +0602820300020502810300 +820304020e028104024d0283030004024d0283030004024d0283030004024d0282030002 +0602820300020502810300 +820304020e028104024d0283030004024d0283030004024d0283030004024d0282030002 +0602820300020502810300 +820304020e028104024d0283030004024d0283030004024d0283030004024d0282030002 +0602820300020502810300 +820304020e028104021102810002080281000210028100021b0283030004021602030001 +028100022e0283030004021b0202002e028303000402160281000202028100022f028203 +00020602820300020502810300 +820304020e0281040210028300020002070281000210028100021b028303000402150281 +0002020283000200022e0283030004021a0281000201028100022c028303000402160281 +000202028100022f02820300020602820300020502810300 +820304020e02810402100283000200020102030081020001000502020002020200810200 +010001020200010283000200021002830300040215028100020402820002008100020102 +020002020200010282000200810002190283030004021902810002050202000102810002 +010281000201028100021c02830300040216028100020202810002810200010001028300 +0200028102000100020202001b02820300020602820300020502810300 +820304020e02810402100283000200020102810002010283000200020402810002010283 +000200020102830002000282020002010282000200810002110283030004021602010003 +020100010283000200020102830002000201028200020081000282020002180283030004 +021902810002040281000201028300020002840200020002820200021c02830300040216 +020500820200020102820002008100028202000201028300020002010281000219028203 +00020602820300020502810300 +820304020e028104020f0281000201028100028202000201028300020002040204000102 +030082020002810200030082020002120283030004021802010001028100020102820002 +000300810200030082020002010281000218028303000402190281000204028100020102 +810002880200020002000200021d02830300040216028100020202830002000201028300 +02000202020100020204001a02820300020602820300020502810300 +820304020e028104020f0204000102810002010283000200028102000100820200020302 +81000201028300020002820200020302810002120283030004021a028300020002010283 +000200020302810002030281000201028100021802830300040219028100020402810002 +0102810002880200020002000200021d0283030004021602810002020283000200020102 +83000200020402810002820200021d02820300020602820300020502810300 +820304020e028104020e0281000203028300020002010283000200020402810002010283 +000200028102008300020002820200020102830002000212028303000402150281000202 +028300020002010283000200020102830002000201028200020081000282020002180283 +030004021a02810002010283000200020102810002010281000201028100021e02830300 +040216028100020202830002000201028300020002010281000201028300020002010281 +00021902820300020602820300020502810300 +820304020e028104020e0281000203028300020002010282000200810002040202000202 +010083020002008100028102000100010281000212028303000402160203000102810002 +0102810002810200010002020200010282000200810002190283030004021b0202000202 +0200030281000201028100021e0283030004021602810002020281000281020001000102 +81000202020200020202001b02820300020602820300020502810300 +820304020e028104024d0283030004022e028100021c0283030004024d0283030004024d +02820300020602820300020502810300 +820304020e028104024d0283030004022e028100021c0283030004024d0283030004024d +02820300020602820300020502810300 +820304020e0281040245024f04810302070283030004024d0283030004024d0282030002 +0602820300020502810300 +820304020e0281040245028104024d0282030002060283030004024d0283030004024d02 +820300020602820300020502810300 +820304020e0281040245028104024d0282030002060283030004024d0283030004024d02 +820300020602820300020502810300 +820304020e0281040245028104024d0282030002060283030004024d0283030004024d02 +820300020602820300020502810300 +8203040204024f0483030204024d02820300044e04820302044e04810302070282030002 +0602820300020502810300 +8203040204028104024d0283030004024d0283030004024d0283030004024d0282030002 +0602820300020602820300020502810300 +8203040204028104024d0283030004024d0283030004024d0283030004024d0282030002 +0602820300020602820300020502810300 +8203040204028104024d0283030004024d0283030004024d0283030004024d0282030002 +0602820300020602820300020502810300 +8203040204028104024d0283030004024d0283030004024d0283030004024d0282030002 +0602820300020602820300020502810300 +8203040204028104024d0283030004024d0283030004024d0283030004024d0282030002 +0602820300020602820300020502810300 +8203040204028104021f0202000702810002200283030004021a0204002d028303000402 +0d0202000802810002140203000102810002140283030004021b0202000e028100021d02 +820300020602820300020602820300020502810300 +8203040204028104021e0281000201028100020502810002200283030004021a02010001 +0201002c0283030004020c0281000201028100021d028100020102810002160283030004 +021a0281000201028100020c028100021d02820300020602820300020602820300020502 +810300 +8203040204028104021d02810002050202008102000100200283030004021a0201000102 +010001020300020204001e0283030004020b028100020302830002000201028400020002 +000200020202000202020004028100020102830002000281020083000200020e02830300 +04021902810002030281000281020001000202020081020001001d028203000206028203 +00020602820300020502810300 +8203040204028104021d02810002040281000201028300020002200283030004021a0201 +0001020100810200810002810200820002008100028102008100021d0283030004020b02 +810002050281000201028500020002000201028300020002010283000200020102810002 +02028100020102850002000200028102008100020e028303000402190281000205028100 +0201028300020002010283000200021d0282030002060282030002060282030002050281 +0300 +8203040204028104021d028100020502030082020002200283030004021a020100010201 +00810200810002810200820002008100028102008100021d0283030004020b0281000201 +020200820200020102850002000200020102820002000300010203000302030001028300 +02000201028100020e028303000402190281000201020200820200020102810002810200 +0200820200021d02820300020602820300020602820300020502810300 +8203040204028104021d02810002040281000201028300020002200283030004021a0201 +0001020100810200810002810200820002008100028102008100021d0283030004020b02 +810002030283000200020102850002000200020102830002000203028100020102810002 +02028100020302830002000201028100020e028303000402190281000203028300020002 +01028300020002010283000200021d028203000206028203000206028203000205028103 +00 +8203040204028104021e0281000201028300020002810200830002000220028303000402 +1a02010001020100810200810002810200820002008100028102008100021d0283030004 +020c02810002010281000282020002810200850002000200020102830002000201028300 +0200028102008100020202810002030283000200028102008100020e0283030004021a02 +8100020102810002820200020102830002000281020083000200021d0282030002060282 +0300020602820300020502810300 +8203040204028104021f0202000202010083020002008100021f0283030004021a020400 +02020300020204001e0283030004020d0202000302010086020002000200020102810002 +810200010002020100820200020202810002030281000281020083000200020e02830300 +04021b020200030202000202010083020002008100021c02820300020602820300020602 +820300020502810300 +8203040204028104024d0283030004022802810002010201001e0283030004023c028100 +020e0283030004024d02820300020602820300020602820300020502810300 +8203040204028104024d028303000402290203001f028303000402380203001002830300 +04024d02820300020602820300020602820300020502810300 +8203040204028104024d0283030004024d0283030004024d0283030004024d0282030002 +0602820300020602820300020502810300 +8203040204028104024d0283030004024d0283030004024d0283030004024d0282030002 +0602820300020602820300020502810300 +8203040204028104024d0283030004024d0283030004024d0283030004024d0282030002 +0602820300020602820300020502810300 +8203040204028104024d0283030004024d0283030004024d0283030004024d0282030002 +0602820300020602820300020502810300 +82030402040252044e027f042304820300020602820300020602820300020502810300 +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104021602810002030281000205028100020b028100020e028100020d02 +8100027f026d02820300020602820300020602820300020502810300 +82030402040281040216028100020b028100020a028100021f028100027f026d02820300 +020602820300020602820300020502810300 +820304020402810402160281000203028100028102000100810200010004020200010202 +0004020200010203000102840002000200020002020200010281000281020001007f0269 +02820300020602820300020602820300020502810300 +820304020402810402160281000203028300020002010283000200020302810002010281 +000282020002030281000201028300020002010284000200020083000200028402000200 +0201028500020002000201028100027f0267028203000206028203000206028203000205 +02810300 +820304020402810402160281000203028100028102008100020102810002030281000201 +028100028202000204020300820200020102850002000200028202000282020002810200 +0200820200028102008100027f0269028203000206028203000206028203000205028103 +00 +820304020402810402160281000203028100020202810002820200020302810002010281 +000282020002030281000201028300020002010285000200020002820200028402000200 +020102830002000202028100027f02680282030002060282030002060282030002050281 +0300 +820304020402810402160281000203028300020002010283000200020302810002010281 +000282020002030281000281020083000200020102850002000200028202000284020002 +00028102008500020002000201028100027f026702820300020602820300020602820300 +020502810300 +820304020402810402160204008202000281020001000102010004020200020281000204 +020100840200020002010285000200020002820200028202000281020085000200020002 +81020001007f026902820300020602820300020602820300020502810300 +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f025f024d00150282030002060282030002060282030002050281 +0300 +82030402040281040215027f032b031c028100044b048203000213028203000206028203 +00020602820300020502810300 +82030402040281040215028103007f0028008104021b028100044a040103810002130282 +0300020602820300020602820300020502810300 +8203040204028104021502820300047f0419040b0201008104021b028100048104024802 +01038100021302820300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048102040804810300820004021b02810004 +81040214029d000200020002000200020002000200020002000200020002000200020002 +150201038100021302820300020602820300020602820300020502810300 +8203040204028104021502820300047f041904820204020702810300820004021b028100 +04810402480201038100021302820300020602820300020602820300020502810300 +8203040204028104021502820300048204000402048100047f0411048202040207028103 +00820004021b028100048104021402810002190281000215020103810002130282030002 +0602820300020602820300020502810300 +8203040204028104021502820300048204000402048100047f0411048202040207028103 +00820004021b028100048104024802010381000213028203000206028203000206028203 +00020502810300 +820304020402810402150282030004820400040204810004810400010001048300040004 +81040001007f0403048202040202028100020202810300820004021b0281000481040214 +028100028102000100010281000211028100021502010381000213028203000206028203 +00020602820300020502810300 +820304020402810402150282030004810400040082040004010482000400810004820400 +0401048100047f04010482020402010202000202810300820004021b0281000481040216 +028100020102830002000229020103810002130282030002060282030002060282030002 +0502810300 +820304020402810402150282030004820400040204810004810400020082040004010404 +007f0402048202040281020003000102810300820004021b028100048104021402010005 +028100028102000100020202000202020001028100021502010381000213028203000206 +02820300020602820300020502810300 +820304020402810402150282030004820400040204830004000401048300040004010481 +00047f040504820204020702810300820004021b02810004810402150281000204028300 +020002010283000200020102830002000201028100021702010381000213028203000206 +02820300020602820300020502810300 +820304020402810402150282030004820400040204830004000481040083000400040104 +81000401048100047f040104820204020702810300820004021b02810004810402140201 +000502830002000201028100028102008100020102040082020002150201038100021302 +820300020602820300020602820300020502810300 +820304020402810402150282030004820400040204810004810400850004000400040204 +02007f040304820204020702810300820004021b02810004810402150281000204028300 +02000201028100020202810002820200021b020103810002130282030002060282030002 +0602820300020502810300 +8203040204028104021502820300047f041904810203090301008104021b028100048104 +021402830002000201028500020002000201028300020002010283000200020102830002 +0002150201038100021302820300020602820300020602820300020502810300 +8203040204028104021502820300047f0419040d008104021b0281000481040217020200 +010281000281020001000202020002020200190201038100021302820300020602820300 +020602820300020502810300 +8203040204028104021502820300047f0419048f02040204020402040204020402000402 +1b0281000481040214028100021902810002150201038100021302820300020602820300 +020602820300020502810300 +8203040204028104021502820300047f041a048e0204020402040204020402040004021b +028100048104024802010381000213028203000206028203000206028203000205028103 +00 +8203040204028104021502820300047f0419048f02040204020402040204020402000402 +1b0281000481040214028100021902810002150201038100021302820300020602820300 +020602820300020502810300 +8203040204028104021502820300047f041a048e0204020402040204020402040004021b +0281000481040215029b0002000200020002000200020002000200020002000200020002 +0002160201038100021302820300020602820300020602820300020502810300 +820304020402810402150282030004810400030007048100040304810004030483000400 +047b048f020402040204020402040204020004021b028100048104024802010381000213 +02820300020602820300020602820300020502810300 +820304020402810402150282030004820400040204810004050481000403048100040504 +8100047c048e0204020402040204020402040004021b0281000481040248020103810002 +1302820300020602820300020602820300020502810300 +820304020402810402150282030004820400040204810004810400010001048200040081 +0004830400040081000481040002007b048f020402040204020402040204020004021b02 +820004034b038100021302820300020602820300020602820300020502810300 +820304020402810402150282030004810400030001048100040104820004008100048304 +00040081000486040004000400047b040b0201008104021b028100034c03810002130282 +0300020602820300020602820300020502810300 +820304020402810402150282030004820400048204000402040300820400040104830004 +00040104850004000400047b048102040804810300820004021c024d0015028203000206 +02820300020602820300020502810300 +820304020402810402150282030004820400040104810004820400040104830004000401 +0483000400040104850004000400047b04820204020702810300820004027f0283020300 +020602820300020602820300020502810300 +820304020402810402150282030004820400040104810004820400048104008200040081 +0004830400040081000486040004000400047b04820204020702810300820004027f0283 +020300020602820300020602820300020502810300 +820304020402810402150282030004820400040204810004810400860004000400040081 +0004830400040081000483040004008100047a04820204020702810300820004027f0283 +020300020602820300020602820300020502810300 +8203040204028104021502820300047f041904820204020702810300820004027f028302 +0300020602820300020602820300020502810300 +8203040204028104021502820300047f041904820204020702810300820004027f028302 +0300020602820300020602820300020502810300 +8203040204028104021502820300047f041904820204020702810300820004021c024d00 +1502820300020602820300020602820300020502810300 +8203040204028104021502820300047f041904820204020702810300820004021b028100 +044b04820300021302820300020602820300020602820300020502810300 +8203040204028104021502820300047f041904820204020702810300820004021b028100 +044a0401038100021302820300020602820300020602820300020502810300 +8203040204028104021502820300047f041904820204020702810300820004021b028100 +04810402480201038100021302820300020602820300020602820300020502810300 +82030402040281040215028203000401040300070481000411048100040c048100048204 +00040d048100040204810004820400044b04820204020702810300820004021b02810004 +810402480201038100021302820300020602820300020602820300020502810300 +820304020402810402150282030004820400040204810004050481000411048100040c04 +810004820400040d0481000402048100044e04820204020702810300820004021b028100 +04810402480201038100021302820300020602820300020602820300020502810300 +820304020402810402150282030004820400040504020001048200040081000484040004 +000481040001000404020001040200020402008104000100830400040081000401040200 +020401008204000401040200820400048104008300040004810400010001048300040004 +3b04820204020702810300820004021b0281000481040248020103810002130282030002 +0602820300020602820300020502810300 +820304020402810402150282030004010401000304810004010482000400810004830400 +040081000482040004010481000403048100048204000401048300040004010483000400 +048104008100048404000400040104830004000481040081000402048100048404000400 +0481040083000400040104820004008100043c04820204020702810300820004021b0281 +0004810402480201038100021302820300020602820300020602820300020502810300 +820304020402810402150282030004030401000204030082040004010483000400040104 +040004048100048204000401048300040004010483000400048204000401048200040003 +0082040004010481000402048100048404000400040104820004000300820400043d0482 +0204020702810300820004021b0281000481040218028100020202810002050281000220 +0201038100021302820300020602820300020602820300020502810300 +820304020402810402150282030004050483000400040104830004000401048300040004 +010481000403040200820400048204000401048300040004010483000400048204000401 +048300040004030481000401048100040204810004840400040004010483000400040304 +8100043d04820204020702810300820004021b0281000481040218028100020202810002 +0502810002200201038100021302820300020602820300020602820300020502810300 +820304020402810402150282030004820400040204830004000481040082000400810004 +840400040004010481000401048100040304810004820400040104830004000401048300 +040004820400040104830004000401048300040004810400810004020481000484040004 +00048104008300040004010483000400043d04820204020702810300820004021b028100 +0481040218028100020202810002810200010001028400020002008100021b0201038100 +021302820300020602820300020602820300020502810300 +820304020402810402150282030004010403000204010085040004000400810004820400 +040204020005040100010402000204020001040100820400040104810004810400010002 +0401008204000402040100820400048104008300040004810400010001048100043d0482 +0204020702810300820004021b0281000481040218020500820200020102840002000200 +810002820200021a02010381000213028203000206028203000206028203000205028103 +00 +82030402040281040215028203000451048100044504820204020702810300820004021b +028100048104021802810002020282000200030084020002000201028100021a02010381 +00021302820300020602820300020602820300020502810300 +8203040204028104021502820300044d0403004704820204020702810300820004021b02 +8100048104021802810002020283000200020302830002000201028100021a0201038100 +021302820300020602820300020602820300020502810300 +8203040204028104021502820300047f041904820204020702810300820004021b028100 +048104021802810002020283000200020102840002000200810002820200021a02010381 +00021302820300020602820300020602820300020502810300 +8203040204028104021502820300047f041904820204020702810300820004021b028100 +0481040218028100020202810002810200010001028400020002008100021b0201038100 +021302820300020602820300020602820300020502810300 +8203040204028104021502820300047f041904820204020702810300820004021b028100 +0481040227028100021e0201038100021302820300020602820300020602820300020502 +810300 +8203040204028104021502820300047f041904820204020702810300820004021b028100 +0481040227028100021e0201038100021302820300020602820300020602820300020502 +810300 +8203040204028104021502820300048104000300030404007f040a048202040207028103 +00820004021b028100048104024802010381000213028203000206028203000206028203 +00020502810300 +8203040204028104021502820300040204810004040481000402048100047f0408048102 +03090301008104021b028100048104024802010381000213028203000206028203000206 +02820300020502810300 +820304020402810402150282030004020481000404048100040204810004810400010001 +0481000401048100047c040d008104021b02810004810402480201038100021302820300 +020602820300020602820300020502810300 +820304020402810402150282030004020481000404040400010481000401048100048404 +000400047d040b0201008104021b02810004810402480201038100021302820300020602 +820300020602820300020502810300 +820304020402810402150282030004020481000404048100048204000401040400020481 +00047e048102040804810300820004021b02820004034b03810002130282030002060282 +0300020602820300020502810300 +820304020402810402150282030004020481000404048100040104810004820400040504 +8100047e04820204020702810300820004021b028100034c038100021302820300020602 +820300020602820300020502810300 +820304020402810402150282030004020481000404048100040104810004820400040104 +8100048404000400047d04820204020702810300820004021c024d001502820300020602 +820300020602820300020502810300 +820304020402810402150282030004020481000404048100040204810004810400010001 +0481000401048100047c04820204020702810300820004027f0283020300020602820300 +020602820300020502810300 +8203040204028104021502820300047f0419048202040281020003000102810300820004 +027f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048202040201020200020281030082000402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048202040202028100020202810300820004 +027f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f041904820204020702810300820004027f028302 +0300020602820300020602820300020502810300 +8203040204028104021502820300047f041904820204020702810300820004027f028302 +0300020602820300020602820300020502810300 +8203040204028104021502820300047f041904820204020702810300820004027f028302 +0300020602820300020602820300020502810300 +8203040204028104021502820300047f041904810203090301008104027f028302030002 +0602820300020602820300020502810300 +8203040204028104021502820300047f0419040d008104027f0283020300020602820300 +020602820300020502810300 +82030402040281040215028103027f021a020d008104027f028302030002060282030002 +0602820300020502810300 +82030402040281040215027f042b047f0201028203000206028203000206028203000205 +02810300 +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104021602810002020281000205028100027f027f021d02820300020602 +820300020602820300020502810300 +82030402040281040216020100020281000205028100027f027f021d0282030002060282 +0300020602820300020502810300 +820304020402810402160283000200028202000281020001008102000100010202000202 +02007f027f021202820300020602820300020602820300020502810300 +820304020402810402160283000200028402000200020102830002000282020002010283 +0002000201028100027f027f021002820300020602820300020602820300020502810300 + +820304020402810402160281000286020002000200020102830002000281020003000102 +01007f027f021302820300020602820300020602820300020502810300 +820304020402810402160281000286020002000200020102830002000282020002060281 +00027f027f021102820300020602820300020602820300020502810300 +820304020402810402160281000201020100820200020102830002000282020002010283 +0002000201028100027f027f021002820300020602820300020602820300020502810300 + +820304020402810402160281000202028100028102000100010201000102020002020200 +7f027f021202820300020602820300020602820300020502810300 +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +82030402040281040215027f032b037f0201028203000206028203000206028203000205 +02810300 +82030402040281040215028103007f0028008104027f0283020300020602820300020602 +820300020502810300 +8203040204028104021502820300047f04190482000204080483030004027f0283020300 +020602820300020602820300020502810300 +8203040204028104021502820300047f0419048300020402070283030004027f02830203 +00020602820300020602820300020502810300 +8203040204028104021502820300047f0419048300020402070283030004027f02830203 +00020602820300020602820300020502810300 +8203040204028104021502820300047f0419048300020402070283030004027f02830203 +00020602820300020602820300020502810300 +8203040204028104021502820300048104000200240481000415048100040f0481000403 +048100048204000418048100040d048100040f0483000204020202810002020283030004 +027f0283020300020602820300020602820300020502810300 +82030402040281040215028403000400040204810004220481000415048100040f048100 +0403048100048204000428048100040f04830002040201020200020283030004027f0283 +020300020602820300020602820300020502810300 +820304020402810402150284030004000405040200010482000400020002040200040403 +000204020081040001000104020002040200050402000104820004008100040104020001 +048100040104030002040200830400040081000401040200050402000104030001048400 +04000400020002040200010481000481040001000b048300020402810200030001028303 +0004027f0283020300020602820300020602820300020502810300 +820304020402810402150282030004810400810004020481000401048200040083000400 +048404000400040104810004020481000401048300040004010483000400048204000401 +048300040004010481000402048100040104820004008100048404000400040104830004 +000401048300040004030481000481040081000484040004000401048100040204810004 +010483000400040104840004000400830004000484040004000401048500040004000401 +0481000409048300020402070283030004027f0283020300020602820300020602820300 +020502810300 +820304020402810402150282030004020401000104810004010483000400048204000483 +040004000300030481000401048300040004010483000400048104000300010401000604 +030082040004010483000400040104830004000401048300040004030481000482040004 +010482000400030004040300820400040104850004000400048204000482040004810400 +0200820400048104008100040b048300020402070283030004027f028302030002060282 +0300020602820300020502810300 +820304020402810402150282030004040483000400040104830004000482040004840400 +040004060481000401048300040004010483000400048204000406048100040304810004 +010483000400040104830004000401048300040004010483000400040304810004820400 +040104830004000406048100040104830004000401048500040004000482040004840400 +0400040104830004000402048100040a048300020402070283030004027f028302030002 +0602820300020602820300020502810300 +820304020402810402150284030004000402048300040004010483000400048204000484 +040004000401048100040204810004010483000400040104830004000482040004010483 +000400040104810004020481000481040082000400810004840400040004010483000400 +048104008300040004030481000482040004010483000400040104810004020481000481 +040083000400040104850004000400048204000484040004000481040085000400040004 +01048100040904820002030903820004027f028302030002060282030002060282030002 +0502810300 +820304020402810402150282030004810400020002040200010481000482040004820400 +048104000100040481000401048100048104000100010401000104020002040200050401 +008504000400040081000401040200020401008304000400810004020401008204000401 +048100048104000100050401008404000400040104850004000400048204000482040004 +8104008500040004000481040001000b040d008104027f02830203000206028203000206 +02820300020502810300 +8203040204028104021502820300047f0419048100020a02820004027f02830203000206 +02820300020602820300020502810300 +8203040204028104021502820300047f04190482000204080483030004027f0283020300 +020602820300020602820300020502810300 +8203040204028104021502820300047f0419048300020402070283030004027f02830203 +00020602820300020602820300020502810300 +8203040204028104021502820300047f0419048300020402070283030004027f02830203 +00020602820300020602820300020502810300 +8203040204028104021502820300047f0419048300020402070283030004027f02830203 +00020602820300020602820300020502810300 +8203040204028104021502820300047f0419048300020402070283030004027f02830203 +00020602820300020602820300020502810300 +820304020402810402150284030004000408048100048204000403048100040804810004 +78048300020402070283030004027f028302030002060282030002060282030002050281 +0300 +8203040204028104021502820300040a04810004820400040e0481000478048300020402 +070283030004027f0283020300020602820300020602820300020502810300 +820304020402810402150285030004000400020003040200830400040081000482040004 +810400010004048200040081000401040200010481000401048100048104000100020402 +005e048300020402070283030004027f0283020300020602820300020602820300020502 +810300 +820304020402810402150286030004000400040104810004020481000481040081000486 +040004000400040104810004020401000104830004000401048300040004010483000400 +040104830004000401048100045c048300020402070283030004027f0283020300020602 +820300020602820300020502810300 +820304020402810402150286030004000400040104810004020481000482040004010483 +000400048104008100040404810004010483000400040104830004000401048100048104 +00810004010404005d048300020402070283030004027f02830203000206028203000206 +02820300020502810300 +820304020402810402150286030004000400040104810004020481000482040004010483 +000400040204810004030481000401048300040004010483000400040104810004020481 +0004820400046004820002030903820004027f0283020300020602820300020602820300 +020502810300 +820304020402810402150286030004000400040104810004020481000482040004010485 +000400040004010481000402048100040104830004000401048300040004810400830004 +00040104830004000401048100045c040d008104027f0283020300020602820300020602 +820300020502810300 +820304020402810402150286030004000400040104810004020401008204000401048300 +040004810400010004048100040104810004810400010002040100820400048104000100 +020402005e048d00040204020402040204020402048104027f0283020300020602820300 +020602820300020502810300 +8203040204028104021502820300047f0419048f00020402040204020402040204020402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048d00040204020402040204020402048104 +027f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048f00020402040204020402040204020402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048d00040204020402040204020402048104 +027f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048f00020402040204020402040204020402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048d00040204020402040204020402048104 +027f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048f00020402040204020402040204020402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048d00040204020402040204020402048104 +027f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048f00020402040204020402040204020402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048d00040204020402040204020402048104 +027f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048f00020402040204020402040204020402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048d00040204020402040204020402048104 +027f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048f00020402040204020402040204020402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048d00040204020402040204020402048104 +027f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048f00020402040204020402040204020402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048d00040204020402040204020402048104 +027f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048f00020402040204020402040204020402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048d00040204020402040204020402048104 +027f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048f00020402040204020402040204020402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048d00040204020402040204020402048104 +027f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048f00020402040204020402040204020402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048d00040204020402040204020402048104 +027f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048f00020402040204020402040204020402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048d00040204020402040204020402048104 +027f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048f00020402040204020402040204020402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048d00040204020402040204020402048104 +027f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048f00020402040204020402040204020402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048d00040204020402040204020402048104 +027f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048f00020402040204020402040204020402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048d00040204020402040204020402048104 +027f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048f00020402040204020402040204020402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048d00040204020402040204020402048104 +027f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048f00020402040204020402040204020402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048d00040204020402040204020402048104 +027f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048f00020402040204020402040204020402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048d00040204020402040204020402048104 +027f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048f00020402040204020402040204020402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048d00040204020402040204020402048104 +027f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048f00020402040204020402040204020402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048d00040204020402040204020402048104 +027f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048f00020402040204020402040204020402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048d00040204020402040204020402048104 +027f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048f00020402040204020402040204020402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048100020a02820004027f02830203000206 +02820300020602820300020502810300 +8203040204028104021502820300047f04190482000204080483030004027f0283020300 +020602820300020602820300020502810300 +8203040204028104021502820300047f0419048300020402070283030004027f02830203 +00020602820300020602820300020502810300 +8203040204028104021502820300047f0419048300020402070283030004027f02830203 +00020602820300020602820300020502810300 +8203040204028104021502820300047f0419048300020402070283030004027f02830203 +00020602820300020602820300020502810300 +8203040204028104021502820300047f0419048300020402810200030001028303000402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f041904830002040201020200020283030004027f +0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048300020402020281000202028303000402 +7f0283020300020602820300020602820300020502810300 +8203040204028104021502820300047f0419048300020402070283030004027f02830203 +00020602820300020602820300020502810300 +8203040204028104021502820300047f0419048300020402070283030004027f02830203 +00020602820300020602820300020502810300 +8203040204028104021502820300047f0419048300020402070283030004027f02830203 +00020602820300020602820300020502810300 +8203040204028104021502820300047f041904820002030903820004027f028302030002 +0602820300020602820300020502810300 +82030402040281040215028103027f021a020d008104027f028302030002060282030002 +0602820300020502810300 +82030402040281040215027f042b047f0201028203000206028203000206028203000205 +02810300 +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f024302820300020602820300020602820300020502810300 + +8203040204028104027f027f0243028203000206028203000307038100020502810300 +8203040204028104027f027f02430282030002060281030008000702810300 +8203040204028104027f027f024302820300020602820300020f02810300 +8203040204028104027f027f024302820300020602820300020f02810300 +8203040204028104027f027f024302820300020602820300020f02810300 +8203040204028104027f027f024302820300020602820300020f02810300 +8203040204028104027f027f024302820300020602820300020f02810300 +8203040204028104027f027f024302820300020602820300020f02810300 +8203040204028104027f027f024302820300020602820300020f02810300 +8203040204028104027f027f024302820300020602820300020f02810300 +8203040204028104027f027f024302820300020602820300020f02810300 +8203040204028104027f027f024302820300020602820300020f02810300 +8203040204028104027f027f024302820300020602820300020f02810300 +8203040204028104027f027f024302820300020602820300020f02810300 +8203040204028104027f027f024302820300020602820300020f02810300 +8203040204028104027f027f024302820300020602820300020f02810300 +8203040204028104027f027f024302820300020602820300020f02810300 +8203040204028104027f027f024302820300020602820300020f02810300 +8203040204028104027f027f024302820300020602820300020f02810300 +8203040204028104027f027f024302820300020602820300020f02810300 +8203040204028104027f027f0243028203000307038100020f02810300 +8203040204028104027f027f02430281030008001102810300 +8203040204028104027f027f024302820300021902810300 +8203040204028104027f027f024302820300021902810300 +8203040204028104027f027f024302820300021902810300 +8203040204028104027f027f024302820300021902810300 +8203040204028104027f027f024302820300021902810300 +8203040204028104027f027f024302820300021902810300 +8203040204028104027f027f024302820300021902810300 +8203040204028104027f027f024302820300021902810300 +8203040204028104027f027f024302820300021902810300 +8203040204028104027f027f024302820300021902810300 +8203040204028104027f027f024302820300021902810300 +8203040204028104027f027f024302820300021902810300 +8203040204028104027f027f024302820300021902810300 +8203040204028104027f027f024302820300021902810300 +8203040204028104027f027f024302820300021902810300 +8203040204028104027f027f024302820300021902810300 +8203040204028104027f027f024302820300021902810300 +8203040204028104027f027f024302820300021902810300 +8203040204028104037f037f0344038100021902810300 +8203040204027f007f0047001a02810300 +820304027f027f026702810300 +820304027f027f026702810300 +820304027f027f026702810300 +820304027f027f026702810300 +820304027f027f026702810300 +7f037f036b030000 +7f007f006c00 + +% +% Compression made this file 5.76% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/docs/latex/wx/wxtab1.gif b/docs/latex/wx/wxtab1.gif new file mode 100644 index 0000000000000000000000000000000000000000..307fab6694e310f27d146575e7ed7667fffaf374 GIT binary patch literal 5890 zcmV+d7yal*Nk%w1VQm4B0kZ%A0002L0002L0KdNg006(g0KWjgzreu2fPjGi00030 z0RR60009600RI60|NsC0EC2ui0Br$~0RRO45Xniay*TU5yZ>M)j$~<`XsUJq^1N^? z&vb3yc&_h!@BhG{a7Zi~k2pl@aacK@(5Q4uty-@Zrqb0Uc)#GVcuX#v&*-#z&2GEj z@VIVxY54V*4M3~ z005)grIp00&S%Wjt!2%h@ghq6GtXWumoVd0v`1UIY0t&JxN0LPgR%Kc8YRaHR7cw177FxG^ z7j5b*mQGz)qF&*)b*t=cSF3ZudUaX0uTo%8>#3cpRi(*<02k^qY&0O!x(5Xwb2!wm zWwJAaMa_8mYv<3PCutT2?&iL}i$kkkZOKFFwc=RIp56DU?c27c;-t;HH*3zmg9}G( z`T&yS$dfBy&b+zv=g?^sA5Fcw_3PNPYv0bjyZ7(l!;2qJzP$PBYtO4+&%V9;_weJ( zho64F{rmXy>)+4ceEt3a2L34EfCLt(-G2rqsNjMOHaH%F;6*1P3iWjDKK_1H9o`52Xr=jOj zny93SZpSHggLWg|r}Qie<)fpaIwzuNaYL$inqDfZMYOtFDy^kL1zxPIo`u$}-q?C4 zuD1TlqK?61NGYpR#!sp@C1t-i-=r@h|UZLX{u8{W6%4$JJY z){0xMyRagQ=WVyHOKr93rW-7^Gy!{Pnmw-RXq(LnTkoXudS~ajz=mt-!QXwm?3;8> z+;F57Yx8Q3BNAFKzWTbm?8w|c{BNHjdZ(>*3xDiw!rirOsksKLyRnVj(d)9s{O;^9 zccD5A^3eGjY;@5NCyBDa;jLV$vJ}6(^28+j3@^m-e%W%jRP!8l)yH-WwY2OuOm5Zt ziahhlj5;lf+sV$_ZhPoD71*;!6Pt9zFmEe&v1hrgG16F<*mu%gn@x1y)wdrjl>Ixq+QK7<+@WGYIfElShcU zny(jF`+~nKc>8p0?yjZr$0Hv+=dFvbJmzFVZ>IEUHm_ZW&}E3dbJ}muT=(89_hF2o zUyr=z=PwUC^+*nnO8MFKPN4d}vtK0r^Zz+~%BiMrzmxx?QUJN6KkLQMfASj;{uDUC z8o6(OOal`FC-}Ss3h03b#15(ob+gZbs)2keSb*>st^NGYVZzT_ zJm?<~vTSeoIpM4TguxYF=TSzhn67YDE4=mWa!$*W<0yu)d)4rDeG;L~)}zC<^(Nkfq51A54!hKGIb5pEDup zd_2k@o|=%K!UO61lKHliqRyue1uFAy8n8R+G)_ug-&5m*REY`|g1MV2eWF@Ft(NY2 zO#OyajcU58YSgRlNokJ8O0YkX)1c;wWKy@3#azZriicEBT}j!>untwFp=hVY?8;70 zGR&$|8f;t*2{f)MmanYyD^_#Lo+$3?tvHM8xK<}uRQe5=(1N6BWu`A%!j(KS8z&KK zDA^1Kwz7#_UCb3%xCZL{?@Ow^{cR- z&Dd_8)kkXbwv*-IX4jId#;dy4rJfV6X}h~z+txN}%3T#Rtrkp9_SQ&I-5O|#OTPL7 z7QEqw7k6i?+4D;4x1vm}9?7;#f7#WK*v;;MOY1^CdDpm}6YaX_=2*^-6PsG3>)jT~ zE(xP>Z4J(>X3dDP2}jnxYbEMyE0~`Wrx!)9GHXX4tYZA4l&g^1Yk(WHx?7@^!o{ue zkA=zNA|o`&_Z{+!5vpY99vQ{u6f#*eC*zXhn1M*PXfT@0UnWmEdRfNlmS?J*^O5ZeCd>dS?ivZYS7s%@(0ziOEjonE!9 zm)h#dCVJMm9`%~({OVD}I@iGNX`p*u)Lpu0Z;Z5%qaU0zV10`eiom=(R zyVUpQb9gujP6=^gMzmY2(imE9`pe)5&oiqxPHaenN4}2}9BDt< zE|Tv%Evc6FT6_ZaFA7Df0eO`nGIf3$e}njPs7OJm2f> zrhC6uvWqeOu|rR}ycz!SLJ|w&k8NDjjivR~M*Ze0xAfP?{?n3=4=)yy82c*EA2oeTIYk(HkrH z%3J>On9scCH_!RK%TGs+2Z97VNce@HJ)5CV{e=94W6+ls^6-_s(@doL+B=6sG*Ck8 zU(j&C`F@eVKNsw;mEyXa-tbwoz4FU^BHe$U_f#G}=*}(hLp}iXFTnotx9@|=e`EJk zTdeR&A9hYVIQucsKKIw31Mi~({I4g!?9YGw^!{gm8|Vl9Q`paa8^g)@jTe4;vrfAr zeIGP`=c0eNQGfZTe=wka{Fi$86)gbhNzm7DA-7Wo=xES(d~p{x42XW$w}05TfDveW z;H5Ja7*`jlFl=N^qZLg+vw_rSd@DD54)}l}s3RqKg8kQg_!ofU!A1oJbu2=IHrRp6 zc6aoreLQ%7JE(&`sCw?Vg4xxAcNJS*qcPG|fbv&^OqhToD1!L+gb#>+Q%HqC2!9wz zObez)NLYMwXm^G8fsK`hcvu5XpaDT>f#F9oMJQV@5{GoiYlV1&^p}Tf)iI-@J zN+@<>n2LD_imb>4u84G~r6;hcgur-hr)Pb(h=;g{i@TU_zqgFQ_aMJmdWcwyCO8A? zSB)W9j2Ci@teA}L^Ni&uYSL(b)F=ZGc#YV&db!w%+;~6Uc#78NgpAmL@;HKMc#aaH zji9)Di&q6-n1sTJd?09oJ&1-p=zwNukN3zjt+$W-Xo_Hni8x4x=|_S(IFROukhgaO zR+wF#*O4CCS&ik6$=8EXXp#AMkr>GwRoI8>2930ciX^FkBRG#wSdJ;ld>?dWndXw_ z7miX`hV@5~GZ~aNd6UPnk~)e0X*>yzsA!bihm?4yadT*iFG-9}seDigZ%c`4O?j0l zxP}Szkz(nQ2`G{v=#^iYla82&?f8%$n2CmimRJdv0f>jA=aBw5ZnY?vYN(b%7=8UX zm9ZF&O=%l7P?R@-nBu6I;wX`dn3aAQe|RaFv)Gd`*_fC~2|JL3IslKU2$?Jxl?T$6 zd5Ld#h?4t9lqX4#7CVBoBA1^t2vyWnV;mio^%u8HMNRpX0fj{V9{jDU;qQodp`23KmXhgK>AsH)eU7-+6}PDU@djfv#DC zt|_6ZX`2)2oX^Rb9O{<_no9Hnh&(5slS!X?*_Eltn0=|6qIjT#lrctlc=O4iLAsrI zXqZ08o~h)XI=4sf<)b9(mV^nVe2HdMI)qlri^C;IaM+}SnVnqerC&;BVLEVQN`Mz9 zG9tR5Y1*KP*rsXrrXLrlZ9+G88jMexe0sX49ZH?}k)WjzsL589BPpef2%d$SkvQt1 zfcc|NYMQ}0q5cm#snM~A8NiZ=dZ}Aln$<_B7a5=`ijtoC1A=#?uZX6Cs;SbHncvBo zxY?>jz`8rIgZCl1bo_Z%-XD& zdZ&XbtkUY3=vl2paIJbbmgbsyWyz(%YNEsXldEd1;yMH5I&E7yZ)_T`=*UO+u#x0e zuT+Ps_}U>8m=?;~uiv<)02{E`I1m3^iaeYNT3uu=Xmk z8v7jc+H4mKoV6OV*|-4?`)ws_pTLE(6Y{DZTcR(LcgXd3)!9BC`>)*rv!OS$>I$tk zJG7v`|ZYKuW7o8?`N)vsFuKSDUq5JGFYYu3g)-TN}1q zJGNw7wPt&^P@A@D%d~9Uwn+Q7a67beJGXgPw{|Occ$>Fvx3{q*gNn+xcILNp0(F5a zxNt_e+ro91C5c{#xRIu~H*`j1 znsdi;uFxC3(mTCKC2wukgV1#K)`#S+Y24tds@7Ux){5u^L;$Z7YNJB{ul{>|{^v`%i@z=#Ii2bp15B-&xtJO< z!0k&!RVH=Vi?Cr+j;UFmF1nwxS)TD2!V_tb9ZakrOq{IQnzxCY#j2t)Y6I=7f=M}P z#;YaKS(3~tq2yVTJ8Yad{GS54n7O*Z6`G_^UpY_YUMoYDEiK0A=p8I>Dk&2-z z9K=O@kl@O}9xR|axWY8rnM-`Y@vFcCYLY`dpg>HaY7C%JoW&izQ4@9!ECX;ETqMJ1QUEZWPHINE3C`R%*Xt@(9E-Uh?oGZ&9~glsq@Uu z8-~hEt^V7<$Lh@ntjEJ_BOE-!#VNw`sLAeH!g7hu0W-@eGRYH!x^DeEXY@B z&&i|C*POc9tiu!vp>2%CRy>UZUCj@h%!kC!TTH|~ES>?Xr`({j_)H@D?8)aT#}@s@ z5Q@lNDYM|*#HX6U3SFBO`ob^@$|5Y&PKhk(=!qXKI~1+G(;NiloBq=Yd~6~8)5n3+ z_~@t9R@6pK%|iW&EA6$;o3TwT1W29JJ54)1EzMO8)JYABQJtwRP1RlPs!wepOf1#n ze6MA_nO_an1|7~2Y0GWx16Qq$S-nr|%p`T~)n}d8{j}E{)7L<7*SQGTK_%F{L)fnR z)3g!9y_tXQ+4ZB?_dMEe{nu$N)>Ey% zs-2jn-P+vh#Nr#Bs&ziklUESyh-O8Qa7);jOt=mG4-M}ie+dbaG{vFpW&D@&E-Q<|u<{egG z+uZP7f8IUcUyI)2UESo3kNRzc_5I%W-Q7G~K;KHon zk8L9M>%ne)V!nWn+OxOgC zK2$!KXl}+`j_BDI>5MMuaW3FizUZ0$$QKaFr@Q4%tI}Y;+%Dd;J>GqzuBOpUya+eR z!cNqRUhKIJ-ocLSt^VP!&g^V{=Fbl86Mf>;j%&nz?Xs5b+OBHc-t7Q)?BGtX;y&)o z_U-2GY3QErN?Gpg4s7fG?zMjD@}B6{UhnOG@Axjs?!NEd-tYb%?)o0^m<#X(|7r1l z@OeJ)3U9&EKIaYp?+hRDkZ$l4KkpA8-WM?fb^ z9l!DjZ}Bd_@GT$nET8h&O!FAu-n)+TIUoMvna%U+4)Z|&W+p%M;5+k1|GGk-^iO8< z2+i~kuk#WP^#wojRDZu#fAzGS^;!?o1r(~b-Sr|LBYmed5HI#bFH|3N_Gmx$Nx1eJ z-}WW1_GTaVat~Im2KOp|_f1ckdVlkL-}l)0_fH@ADDU@mzxReuWpp3*i?6eOMfjop z_)?Z=3JB1-3%>eTpZa1B`>5ag zrce7?4f?l_`~3v=m&5kF@AYNhSim3rx!+yIZ~TFc{C2PW$1h6B@BE(){mn1^iOu|q zZ~d38MbWSQ7+yo&@BM^M{n;=63C&Lam~Z~ljs5Ab{@>63o$vndkN)v5|Krd7)o=fu z4*#OB|N9RCM^0KTMF2g^?*~J1Bun!|Q*~uq_l4IiKC-Q&bA9J~{|5#`vzX08ISQ3a zX4Cm}5@E&;!g|GKwOel2`vr%^V{+MiMyJ(lc3b+QRseH)-G0aC^?QEb{|5{d93(6> zJVZ=Xq@#(0dW4LWoTS`wti;UJ+~gFx>;w%J9VPuFJw;7b4KiJIeT9u3(r~M_y~WMd Y-R14|Ra*=e9wsg}K1NPfR*V1uI~l!gZvX%Q literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/alignb.bmp b/utils/dialoged/docs/alignb.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6cc2e1dee47c12433ba418577a2e5ad73fab4848 GIT binary patch literal 238 zcma(~u?>JQ3^NiN1DwGf?EKP+GUlZ2U3w8O1iKLn5)y7~M{(M2`-Q+kTgio-$pIr3 yIJ<@@69WdYU=~JYi`E)lf%k&DI+8~tN`4^$nJY-OD*JU>wjJEKHuH!bxvFW literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/alignb.eps b/utils/dialoged/docs/alignb.eps new file mode 100644 index 0000000000..2909ad7631 --- /dev/null +++ b/utils/dialoged/docs/alignb.eps @@ -0,0 +1,161 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: alignb.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 298 389 314 404 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +298 389 translate + +% size of image (on paper, in 1/72inch coords) +16 15 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 9 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 ffff00 +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +16 15 8 % dimensions of data +[16 0 0 -15 0 15] % mapping matrix +rlecmapimage + +0f01 +07010700 +070181000204020000 +070181000204020000 +070181000204020000 +070181000204020000 +070181000204020000 +8101000300010181000204020000 +8201000201028100018201000204020000 +8201000201028100018201000204020000 +8201000201028100018201000204020000 +8201000201028100018201000204020000 +810100030001010700 +0f01 +0f01 + +% +% Compression made this file 3.12% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/alignb.gif b/utils/dialoged/docs/alignb.gif new file mode 100644 index 0000000000000000000000000000000000000000..7aa46845c988cb03904555c41d226f85c73c5394 GIT binary patch literal 132 zcmZ?wbhEHb6ky3?MTYSPVa$@LWAt;dKpvL;^=iJV#%6=Avm@lb*fIous{b#onF@+4u9p4UP%F Qs@QU~?Q*7-rXYhg05r%jiU0rr literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/alignl.bmp b/utils/dialoged/docs/alignl.bmp new file mode 100644 index 0000000000000000000000000000000000000000..30471101b16de3328c3d7a9ddbb74c95669b30c1 GIT binary patch literal 238 zcmaKju@QhU3I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 9 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 ffff00 +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +16 15 8 % dimensions of data +[16 0 0 -15 0 15] % mapping matrix +rlecmapimage + +0f01 +020105000601 +020181000202028100010501 +020181000202028100010501 +020181000202028100010501 +020105000601 +0f01 +0f01 +02010a000101 +020181000207028100010001 +020181000207028100010001 +020181000207028100010001 +020181000207028100010001 +02010a000101 +0f01 + +% +% Compression made this file 16.11% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/alignl.gif b/utils/dialoged/docs/alignl.gif new file mode 100644 index 0000000000000000000000000000000000000000..650ce397499764159b83973f40ec2b7f10eb38a1 GIT binary patch literal 124 zcmZ?wbhEHb6ky3?MTYSTsMJ@YH6txV`%q(`}ZDc#U4UjI>!V_vvdVi+U~l>bq)DU-7<6smGck Hl^Co6qsc5L literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/alignr.bmp b/utils/dialoged/docs/alignr.bmp new file mode 100644 index 0000000000000000000000000000000000000000..14a2f85241d5a0f1985c58e88c06b64a606b7764 GIT binary patch literal 238 zcmaKju@QhU3fPl58tp)=Q2Jo8bgU*r`XQ zqpFK#Mn{w=#ps68D(8$_P->|Z>mbio$leeL#26AdfBgB^?p|K+nFqW7@RnP41Lmtt AkpKVy literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/alignr.eps b/utils/dialoged/docs/alignr.eps new file mode 100644 index 0000000000..b3470a2290 --- /dev/null +++ b/utils/dialoged/docs/alignr.eps @@ -0,0 +1,161 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: alignr.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 254 389 270 404 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +254 389 translate + +% size of image (on paper, in 1/72inch coords) +16 15 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 9 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 ffff00 +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +16 15 8 % dimensions of data +[16 0 0 -15 0 15] % mapping matrix +rlecmapimage + +0f01 +070105000101 +070181000202028100010001 +070181000202028100010001 +070181000202028100010001 +070105000101 +0f01 +0f01 +02010a000101 +020181000207028100010001 +020181000207028100010001 +020181000207028100010001 +020181000207028100010001 +02010a000101 +0f01 + +% +% Compression made this file 16.11% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/alignr.gif b/utils/dialoged/docs/alignr.gif new file mode 100644 index 0000000000000000000000000000000000000000..19f9a9207e55146957f45d4dcfa537db32236400 GIT binary patch literal 126 zcmZ?wbhEHb6ky3?MTYShPQ!@LWAt;dS@)cm{Pwc@4QI;$64O_8D9|mmNOsYsKTxU9&~*>$NZ1 KnlzPz!5RP#!!4x% literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/alignt.bmp b/utils/dialoged/docs/alignt.bmp new file mode 100644 index 0000000000000000000000000000000000000000..4505cbab566385942c0912c245668a2567a6e4a9 GIT binary patch literal 238 zcmaKkF%Ez*3|OdIzEIAs*ie($j$$j@{;1V~tY85%7&OAt xRk@Kpqg9j`#n=R9Rn8f;QR=7^Z-Dj*I)92ty-z9KwtE_g+7Cp#O78pXpD*v#PFw&0 literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/alignt.eps b/utils/dialoged/docs/alignt.eps new file mode 100644 index 0000000000..0770b5f842 --- /dev/null +++ b/utils/dialoged/docs/alignt.eps @@ -0,0 +1,161 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: alignt.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 254 389 270 404 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +254 389 translate + +% size of image (on paper, in 1/72inch coords) +16 15 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 9 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 ffff00 +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +16 15 8 % dimensions of data +[16 0 0 -15 0 15] % mapping matrix +rlecmapimage + +0f01 +810100030001010700 +8201000201028100018201000204020000 +8201000201028100018201000204020000 +8201000201028100018201000204020000 +8201000201028100018201000204020000 +8101000300010181000204020000 +070181000204020000 +070181000204020000 +070181000204020000 +070181000204020000 +070181000204020000 +07010700 +0f01 +0f01 + +% +% Compression made this file 20.28% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/alignt.gif b/utils/dialoged/docs/alignt.gif new file mode 100644 index 0000000000000000000000000000000000000000..633f980bed544a13ea9cad65bea00a83390d2bab GIT binary patch literal 131 zcmZ?wbhEHb6ky3?MTYSPVX#@LbIzasLc|ghD~%6Q#O`5wqkpx4nM3>gmmcTV2mv&HAn_X0Yt= QN1Zv*g(v5@FfdpH04feKX#fBK literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/arrow.bmp b/utils/dialoged/docs/arrow.bmp new file mode 100644 index 0000000000000000000000000000000000000000..a6b99c89915a274a6ff61417529ce2d3cd94a346 GIT binary patch literal 566 zcmcJMK@x)?3`M_AXY9@k^Z-492k5?caiuOE5VweD`&fMw*SNYNkzPGjz%YMOtT#T literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/arrow.eps b/utils/dialoged/docs/arrow.eps new file mode 100644 index 0000000000..9bacc42a95 --- /dev/null +++ b/utils/dialoged/docs/arrow.eps @@ -0,0 +1,174 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: arrow.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 254 375 282 403 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +254 375 translate + +% size of image (on paper, in 1/72inch coords) +28 28 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 12 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 808080 ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +28 28 8 % dimensions of data +[28 0 0 -28 0 28] % mapping matrix +rlecmapimage + +8102001900 +8100031703810200 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +8200030106018100010c0101020000 +82000301060101000c0101020000 +82000301060102000b0101020000 +82000301060103000a0101020000 +8200030106010400090101020000 +8200030106010500080101020000 +8200030106010600070101020000 +8200030106010700060101020000 +8200030106010400090101020000 +8200030106010100810100810001080101020000 +82000301060181000101010100080101020000 +820003010a010100080101020000 +820003010b010100070101020000 +820003010b010100070101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +8200030217020000 +81000218020000 +1b00 + +% +% Compression made this file 13.95% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/arrow.gif b/utils/dialoged/docs/arrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..aa2c4605cbe99f78ec038111dd57b539ddcf2ade GIT binary patch literal 193 zcmZ?wbhEHblwpuz*vtR|`@wiWnA#8I?caakz=4K_hW|kE{|x`Z6p#k8fI#sl3nK#q zCxZ@1C&&y2mOOz*&((W>yga-6xzGohl+1Y=oh`|)mc72RZ_BA`6*`Z$+I`*-&BgF# zr<%=Uft$jMw0v(0{tB|w4Smk}cvId^jrE+fr|R*aSyvY0)qXvF>&|Cpoy$MT8vMU~ c`(YisopwuWTYH;uM|Y2vME?X4K?VkE08&X(e*gdg literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/back.gif b/utils/dialoged/docs/back.gif new file mode 100644 index 0000000000000000000000000000000000000000..8a61076d3ba74bdedc1d24f60c3d1f5a361a6cee GIT binary patch literal 225 zcmV<703QEGNk%v~VLt#E0Pz3-zrVld=jU&4Z(9HWEC2ui06zd20008IjE||y?GK}z zNf>~$-n{z{YJwGn=81mem9{RpmcUHc_KoNIPRH~B4DyD9p%LJl6@Sa4^Epcbno6kk zD5XxT&EQg7>t<(Iwfoo literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/bmpbuttn.bmp b/utils/dialoged/docs/bmpbuttn.bmp new file mode 100644 index 0000000000000000000000000000000000000000..270cf634fe3dd181c3d21306dae205ad8229dc40 GIT binary patch literal 566 zcmb_ZyA{JA5R>!r9`2F>GC(HC0O_*}RW2o^w}Q=xj^k(7mhS{YMz-<$^SYqmOMbE+ zwHI8=dRod*=uXx)M1X}DZ6I@sloCP+G;%5AtTQ$*T_UO5u>$KhApo~YZmMPAcapZ} zJE?izG@5qe1j4GmYGP>Ej_y0Z_Z`G*MBDF};3v(zqu$+bUwnK&X?bRo&pMA5Sn~Lj LI(Xi!0sgN)rsJo7 literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/bmpbuttn.eps b/utils/dialoged/docs/bmpbuttn.eps new file mode 100644 index 0000000000..6c0f5c523c --- /dev/null +++ b/utils/dialoged/docs/bmpbuttn.eps @@ -0,0 +1,174 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: bmpbuttn.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 254 375 282 403 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +254 375 translate + +% size of image (on paper, in 1/72inch coords) +28 28 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 12 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 808080 ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +28 28 8 % dimensions of data +[28 0 0 -28 0 28] % mapping matrix +rlecmapimage + +81020018000002 +8100031703810200 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +8200030103010c00040101020000 +8200030102018100010b01810001020101020000 +82000301020181000101018100010201010002010100020101020000 +8200030102018100010101810001010181000182010001810100810001010101020000 +82000301020185000100010001010181000182010001810100810001010101020000 +8200030102018400010001008100010101010002010100020101020000 +82000301020183000100018201000106010100020101020000 +82000301020182000100820001000900020101020000 +820003010201810001010181000107010100020101020000 +82000301020181000101018100010101010003010100020101020000 +8200030103010e00020101020000 +8200030104010c00030101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +8200030217020000 +81000218020000 +81020018000002 + +% +% Compression made this file 18.45% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/bmpbuttn.gif b/utils/dialoged/docs/bmpbuttn.gif new file mode 100644 index 0000000000000000000000000000000000000000..220bddc623b62076ab912c06d6a47196fd1cf00f GIT binary patch literal 216 zcmZ?wbhEHblwpuz*vtR|`@wiWnA#8I?caakz=4K_hW|kE{|x`Z6p#k8fI#sl3nK#q zCxZ@1C&&y2mR5mA&((Xw_MP4Re=duSd*-~1C?%zp`?Rcg7VO) zs5>I}pv6Sj+drcuDa&c@jl+|xW~)xWyxJ`5>a3l~>Xj9D_gzTcuxH1&w6pK6-rMyq z+g+ViA{v_0)a=vd=-$=cTGrPyVPb#dlm>pCS+nQNog+MN;UXiY=4B!rf(#7S0Ot8! AC;$Ke literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/body.tex b/utils/dialoged/docs/body.tex new file mode 100644 index 0000000000..7a2e89bb1d --- /dev/null +++ b/utils/dialoged/docs/body.tex @@ -0,0 +1,197 @@ +\chapter{Introduction}\label{introduction} +\pagenumbering{arabic}% +\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% + +The wxWindows Dialog Editor is a tool for creating dialog resource files, in {\tt .wxr} format. +It differs from wxBuilder in the following respectes: + +\begin{enumerate}\itemsep=0pt +\item Scope. It is written for dialog editing only, and is therefore more convenient than wxBuilder for this purpose. +\item File format. Dialog editor reads and writes wxWindows resource files (extension {\tt .wxr}) and has +no independent file format. +\item Robustness. It is written in a more principled way than wxBuilder, and is less ambitious. +\item Ease of use. Windows are edited using the mouse or via consistent {\it property editors}, which +provide immediate visual feedback of changed properties. +\end{enumerate} + +Dialog Editor should be compiled and used with wxWindows 1.65 or later. + +\section{Current status} + +Dialog Editor currently runs under MS Windows. It has yet to +be tested under Motif and XView: see \helpref{Technical notes}{technotes} for a discussion +of what needs to be done. + +\section{Future developments} + +\begin{itemize}\itemsep=0pt +\item XView and Motif versions. +\item It would be nice to have a dialog browser, showing thumbnails of +all dialogs in a particular directory. +\item Maybe add a menubar editor (from wxBuilder). +\item Maybe convert Windows .rc files. +\end{itemize} + +\chapter{Commands}\label{commands} +\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% + +\section{Dialog editor menu bar} + +\subsection{File menu} + +\begin{twocollist}\itemsep=0pt +\twocolitem{New project}{Creates a new project (clears index and resets project name).} +\twocolitem{New dialog}{Creates a new dialog resource.} +\twocolitem{Open}{Opens an existing resource file.} +\twocolitem{Save}{Saves the current resources.} +\twocolitem{Save as}{Saves the current resources in a named file.} +\twocolitem{Clear}{Clears the current resources.} +\twocolitem{Exit}{Exit the program.} +\end{twocollist} + +\subsection{Edit menu} + +\begin{twocollist}\itemsep=0pt +\twocolitem{Recreate}{Recreates the currently selected panel item from the underlying resource. This may be necessary +to regenerate items that cannot be changed dynamically, and which have got out of sync with the displayed +item.} +\twocolitem{Delete}{Deletes the currently selected resource.} +\twocolitem{Toggle edit/test mode}{Toggles from edit to test mode, and vice versa. Edit mode is used for editing +dialogs, test mode allows panel items to be manipulated as they will appear to the user.} +\end{twocollist} + +\subsection{Help menu} + +\begin{twocollist}\itemsep=0pt +\twocolitem{Help topics}{Displays on-line help at the contents page.} +\twocolitem{About}{Displays an dialog showing the Dialog Editor version and author.} +\end{twocollist} + +\latexonly{\newpage} +\section{Command toolbar} + +The command toolbar consists of the following tools: + +\begin{twocollist}%\itemsep=0pt +\twocolitem{\icon{new.eps}{New}}{Clears the project.} +\twocolitem{\icon{open.eps}{Open}}{Opens an existing resource file.} +\twocolitem{\icon{save.eps}{Save}}{Saves the current resources.} +\twocolitem{\icon{vert.eps}{Horizontal align}}{Aligns the centre of the selected items horizontally.} +\twocolitem{\icon{alignt.eps}{Horizontal top-align}}{Aligns the top sides of the selected items horizontally.} +\twocolitem{\icon{alignb.eps}{Horizontal bottom-align}}{Aligns the bottom sides of the selected items horizontally.} +\twocolitem{\icon{horiz.eps}{Vertical align}}{Aligns the centre of the selected items vertically.} +\twocolitem{\icon{alignl.eps}{Vertical left-align}}{Aligns the left sides of the selected items vertically.} +\twocolitem{\icon{alignr.eps}{Vertical right-align}}{Aligns the right sides of the selected items vertically.} +\twocolitem{\icon{copysize.eps}{Copy size}}{Copies the size of the first selected item to the subsequently selected item(s).} +\twocolitem{\icon{tofront.eps}{To front}}{Puts the selected item(s) to the front of the display list.} +\twocolitem{\icon{toback.eps}{To back}}{Puts the selected item(s) to the back of the display list.} +\twocolitem{\icon{help.eps}{Help}}{Invokes Dialog Editor help.} +\end{twocollist} + +\latexonly{\newpage} +\section{Tool palette} + +The tool palette is used to select a type of panel item to create on the dialog. +To create a new panel item, select a tool with left-click, then left-click on the dialog to +window. Select the pointer tool to use left-click for selecting and deselecting +items. + +The tool palette consists of the following tools. + +\begin{twocollist}%\itemsep=0pt +\twocolitem{\icon{arrow.eps}{Pointer}}{Click this to select/deselect items on a dialog.} +\twocolitem{\icon{message.eps}{Message}}{Text message item.} +\twocolitem{\icon{picture.eps}{Bitmap message}}{Bitmap message item.} +\twocolitem{\icon{button.eps}{Button}}{Text button item.} +\twocolitem{\icon{bmpbuttn.eps}{Bitmap button}}{Bitmap button item.} +\twocolitem{\icon{check.eps}{Checkbox}}{Checkbox item.} +\twocolitem{\icon{radio.eps}{Radiobox}}{Radiobox item.} +\twocolitem{\icon{listbox.eps}{Listbox}}{Listbox item.} +\twocolitem{\icon{choice.eps}{Choice}}{Choice item.} +\twocolitem{\icon{text.eps}{Text}}{Single-line text item.} +\twocolitem{\icon{mtext.eps}{Multitext}}{Multi-line text item.} +\twocolitem{\icon{slider.eps}{Slider}}{Slider item.} +\twocolitem{\icon{group.eps}{Groupbpx}}{Groupbox item.} +\twocolitem{\icon{gauge.eps}{Gauge}}{Gauge item.} +\twocolitem{\icon{scroll.eps}{Scrollbar}}{Scrollbar item.} +\end{twocollist} + +\section{Resource list} + +The resource list shows a list of the dialogs, panel items and bitmaps currently loaded +in Dialog Editor. Double-clicking on a dialog item shows the associated dialog box. + +\chapter{Procedures}\label{procedures} +\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% + +\section{Running Dialog Editor} + +To run Dialog Editor under Windows, click on the Program Manager or Explorer icon. +Under UNIX, run from the command line. + +The main window shows a menu bar, command toolbar, tool palette, resource list, and +status line. + +\section{Creating a dialog} + +To create a new dialog, click on the {\bf File: New} menu item, or equivalent +toolbar button. A dialog will appear. To put a panel item on the dialog, left-click +on the appropriate palette icon and then left-click on the dialog. A new item +will appear at the place you clicked. + +You can edit any panel item or dialog by control-left clicking. A property editor +will appear, allowing any property to be selected and edited (see \helpref{Using property editors}{propeditors}). +You can also edit items by right-clicking to show a menu, and then selecting {\it Edit properties}. + +To move a panel item, drag the item with the left mouse button, or edit +the position values in the property editor. To resize a panel item, you +can either select it by left-clicking and then dragging on a selection +handle, or edit the size values in the property editor. + +You can delete items from the right-click menu, or by selecting the item and +choosing {\bf Edit: Delete} from the menu bar. + +\section{Using property editors}\label{propeditors} + +Property editors consist of a list of properties and current values, plus controls at the top of +the editor. If the property is of an appropriate type, you can edit the value directly in the +text field, and confirm or cancel the value using the two buttons to the left of it. +If the property has a predefined range of values, such as labelFontFamily, you can +see a list of permissable values by clicking on the button labelled with an ellipsis symbol ({\bf ...}). +This will show a listbox with possible values and current selection. You may also be able +to cycle through values by double-clicking the value in the listbox. + +Properties may have special editors appropriate to the type. Filename properties invoke +the file selector, and properties containing list of user-definable strings use a +string editor. + +When you change a property value, this value is immediately reflected in +the dialog or panel item. If the item allows this value to be changed +dynamically, the relevant wxWindows function will be called internally +to effect the change. If the value cannot be changed dynamically, the +item will be destroyed and re-created, which means that there will be +more flickering associated with some kinds of property changes than +others. + +\section{Saving and loading files} + +Use {\it File: Save} and {\it File: Save as} or the equivalent toolbar button +to save the current dialog(s) in a wxWindows resource file (extension {\tt .wxr}). + +The {\tt .wxr} file can be used directly in a wxWindows program, if +wxWindows resources have been enabled when building the wxWindows library. +These files can be loaded dynamically, or included directly into program source +with a \verb$#include$ directive. See the wxWindows user manual for further details. + +\section{Multi-platform development} + +{\tt .wxr} files generated on one environment (e.g. Windows) can be used in another (e.g. Motif). +However, because the same panel item can have different sizes on different GUIs, +the user should be cautious in assuming that one resource file will work for all +platforms. It may be better to plan to conditionally include or load different +resource files for different platforms, with spacing modified to suit each +environment. + diff --git a/utils/dialoged/docs/books.bmp b/utils/dialoged/docs/books.bmp new file mode 100644 index 0000000000000000000000000000000000000000..cf1e148734c807052ec6359ad2eb1a3e8d43d43d GIT binary patch literal 1222 zcmb7?v2KGf5Qg0-f^PH?BCA8E<{c_a$x@Y}nZr;qXR5NnfE2boQZn^-S4x_%j?%%`Rfz!C$uHnGuoYEAr~D;JxHUzQYZhY(}{X$xY0SE&#JC# z5a%D|9QDv}6Qc3-Wv8+GlQ-*8<`8epNC>=NSLPUH1b$st*H{R=IXD*!fgA8x5Dt6l zUCo=!AsqI8={C$E9QGLr_q_i zFK;h=LxQhf>;v~gWIyoy(Zu$`w=UNZZuYl$t>-8&*n94Z?RTzqLWjlGhdMVK;w1@P zgX#l^|MHTQ1q9k0=J>%Sz9`L#Hix;bEVz#^(qoBse!qj(7b literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/books.gif b/utils/dialoged/docs/books.gif new file mode 100644 index 0000000000000000000000000000000000000000..a9a1e46844cb79b3a787ae9bb3e6e2d508bf03df GIT binary patch literal 438 zcmZ?wbhEHb)MwCR*vtR|`@wiWnA#8I?caakz=4K_hW|kE{|x`Z6p#k8fItVN1Ekl1 z<==-Bo~!p-yyo5|&a|OdBw-F)fK3h~M^48wm$P>4L6awSt};FJ_To-P0XGMs<;ov4 ztd2A;T@tqP#KXm!wQ-9sM_u`FGQKNQi?-84<=I2%h)`tYU$o^#sQZ1k`! zKE^lWdIOi}l1)t}Syx+_f~s;?oDtlyN%L%HQ2X>XLEHTv1+nE^UFm!x$w>R%`8~dA Y?R$Q+m%X#+np$@6?&;|+EDQ|R0RNK1DF6Tf literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/bugs.tex b/utils/dialoged/docs/bugs.tex new file mode 100644 index 0000000000..8c963602ea --- /dev/null +++ b/utils/dialoged/docs/bugs.tex @@ -0,0 +1,15 @@ +\chapter{Bugs}\label{bugs} +\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% + +Version 1.0 + +\begin{itemize}\itemsep=0pt +\item No XView or Motif versions yet. +\item In Watcom-compiled 32-bit Windows version, bitmap buttons and messages +don't work properly. +\item Some panel item properties missing, e.g. wxPASSWORD, wxREADONLY. +\item When dragging a selected item, other selected items should follow (to be +consistent with convention), but don't. +\item wxSlider sizing a bit broken: a wxWindows problem. +\end{itemize} diff --git a/utils/dialoged/docs/bullet.bmp b/utils/dialoged/docs/bullet.bmp new file mode 100644 index 0000000000000000000000000000000000000000..aad8fc793edd54ffb5910e67b2470659c95448b7 GIT binary patch literal 138 zcmZumxe>rH2vhFtK1GJ`9PYi2Yw9con_&SdBlI1b>qTKR2Gu`ZXgNITWj7;KP=JJL V1)UXU1`*-lNw`O&c<~DR!2u5s7-j$f literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/button.bmp b/utils/dialoged/docs/button.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e7e95d73f060e29f05b3b80d4ff9f4c95815b664 GIT binary patch literal 566 zcmc&xxeb6Y3_K7L=~#dPn1BK3*@cQwrp#8!X5r#IAVi78#ZS(bY|CEOxrJb-ov35h z2A#xxBksjGfCA@|qvaRgdl+Mw2qFj}{-}I0L=&?W3Q+b20}MB6Bi9#>k9g|e>s)V3 g9EJC(I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 12 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 808080 ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +28 28 8 % dimensions of data +[28 0 0 -28 0 28] % mapping matrix +rlecmapimage + +81020018000002 +8100031703810200 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +8200030103010c00040101020000 +8200030102018100010b01810001020101020000 +8200030102018100010b010100020101020000 +8200030102018100010b010100020101020000 +8200030102018100010b010100020101020000 +8200030102018100010b010100020101020000 +8200030102018100010b010100020101020000 +8200030102018100010b010100020101020000 +8200030102018100010b010100020101020000 +8200030102018100010b010100020101020000 +8200030103010e00020101020000 +8200030104010c00030101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +8200030217020000 +81000218020000 +81020018000002 + +% +% Compression made this file 15.35% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/button.gif b/utils/dialoged/docs/button.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbbb8d485a4ce0b33e039ffb184beb2b9ea108e0 GIT binary patch literal 201 zcmZ?wbhEHblwpuz*vtR|`@wiWnA#8I?caakz=4K_hW|kE{|x`Z6p#k8fI#sl3nK#q zCxZ@1C&&y2mNJ1x&((Xw_MP4Re=duSd*-~1C?%zp`?Rcg7VO) zs5>I}pv6SDSU7m|mo2XOn^m@0*@k3acmB@J-9Pn?qNr|Y_00&mjTt@6D@(X8%i4VU jog3Mp8QWaeR%fi!-P7CGE8IV6vXN5dbP*0g1_o;YjtEe2 literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/changes.tex b/utils/dialoged/docs/changes.tex new file mode 100644 index 0000000000..67ab0785d5 --- /dev/null +++ b/utils/dialoged/docs/changes.tex @@ -0,0 +1,63 @@ +\chapter{Change log}\label{changes} +\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% + +March 15th 1997, Version 1.7 + +\begin{itemize}\itemsep=0pt +\item Added fix to wx\_rprop.cpp to avoid Fafa bitmap buttons growing every time the +button edited. +\item Added fix to wx\_resed.cpp, case wxID\_EXIT, to clean up properly on exit, avoiding double deletion of wxBitmap. +\end{itemize} + +May 6th 1996, Version 1.6 + +\begin{itemize}\itemsep=0pt +\item Added panel editing in addition to dialog box editing. +\item Cured some bugs with changing window styles such as wxUSER\_COLOURS and label position. +\item Now preserves syntax of bitmap resources in wxr files. +\end{itemize} + +March 1996, Version 1.5 + +\begin{itemize}\itemsep=0pt +\item Changed behaviour of New tool, and changed File menu to include New project and New dialog items. +Behaviour should be more standard now. +\end{itemize} + +March 1st 1996, Version 1.4 + +\begin{itemize}\itemsep=0pt +\item Items (but not dialogs) can now have duplicate names. +\item Can pass a filename to the program from the command line. +\item Cured bizarre error caused by a Windows combobox sending +a fake left-mouse-up error when losing the focus (switching to another +window). This fix will be in wxWindows 1.66. +\item Rewritten code to use only the new type system, and to take account of +of new window style partitioning (flags for different items may have the same value). +Again, wxWindows 1.66 will have the new style values, to make room for more window +styles. +\end{itemize} + +January 28th 1996, Version 1.2 + +\begin{itemize}\itemsep=0pt +\item Now starts off in non-user-colour mode under Windows +\item Dragging item drags other selected items +\item wxMessage saves size correctly, if used in conjunction with wxWin 1.66 +\end{itemize} + +January 19th 1996, Version 1.1 + +\begin{itemize}\itemsep=0pt +\item Cured crash bug when quitting dialog window +\item Added Clear menu item +\item Added window type name to property window +\end{itemize} + +December 19th 1995, Version 1.0 + +\begin{itemize}\itemsep=0pt +\item First release. +\end{itemize} + diff --git a/utils/dialoged/docs/check.bmp b/utils/dialoged/docs/check.bmp new file mode 100644 index 0000000000000000000000000000000000000000..718f0a9f0296f5336fa65bea0f823eac0d92617b GIT binary patch literal 566 zcmb_Z!41P847^m4$gc}@fKHGB`tL4&)qV2JRMMtBI1aFdAJ6#$$BXe! zzimEX^!+^e^dlsIhLqNckxS&95o4rK+)#?G=p44iVCs$un3e_+xHfb#t`+ZdxUBhA zxA!Di3REtn!tm9V2SUq5ZB$)DIC6^r^!|SLKCd3~_w{x4TlJ1p{)bK4!T+XJuwNfJ C`n9?M literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/check.eps b/utils/dialoged/docs/check.eps new file mode 100644 index 0000000000..0c085f3974 --- /dev/null +++ b/utils/dialoged/docs/check.eps @@ -0,0 +1,174 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: check.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 254 375 282 403 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +254 375 translate + +% size of image (on paper, in 1/72inch coords) +28 28 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 12 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 808080 ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +28 28 8 % dimensions of data +[28 0 0 -28 0 28] % mapping matrix +rlecmapimage + +81020018000002 +8100031703810200 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +8200030103010c00040101020000 +820003010301010008010100040101020000 +820003010301830001000105018300010001030101020000 +82000301030181000182010001030181000182010001030101020000 +820003010301810001010181000101018100010101810001030101020000 +820003010301810001020183000100010201810001030101020000 +82000301030181000103018100010301810001030101020000 +820003010301810001020183000100010201810001030101020000 +820003010301810001010181000101018100010101810001030101020000 +82000301030181000182010001030181000182010001030101020000 +820003010301830001000105018300010001030101020000 +820003010301010008010100040101020000 +8200030103010c00040101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +8200030217020000 +81000218020000 +81020018000002 + +% +% Compression made this file 18.88% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/check.gif b/utils/dialoged/docs/check.gif new file mode 100644 index 0000000000000000000000000000000000000000..d10100c03ecafcd0f6a20f6c9f30647566bcf0ab GIT binary patch literal 215 zcmZ?wbhEHblwpuz*vtR|`@wiWnA#8I?caakz=4K_hW|kE{|x`Z6p#k8fI#sl3nK#q zCxZ@1C&&y2mKK3V&((Xw_MP4Re=duSd*-~1C?%zp`?Rcg7VO^)|K!W!(i`eVV-!)2gRTHP)Fmd(PZB!t)j`GE!<^CMn3kU=08Sl~(ou literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/choice.bmp b/utils/dialoged/docs/choice.bmp new file mode 100644 index 0000000000000000000000000000000000000000..2f56ee55b0e86936ee108ea7767906ed7d127ae5 GIT binary patch literal 566 zcma)3%MHUI41K90ky{t&0GXfz^xj>3Dm`+{RW-GJnt8%y%<;a zTlEREo~KEd9}oeah_Nh;yhTb0Ap{n(PUI{*b{=xXAgb8{EZfckaNW^Oxc}Pw6elZR z;z(~0O=+>`s>UHNUAM-U`;ne%_ KCz%Bt{_6w8y`}*G literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/choice.eps b/utils/dialoged/docs/choice.eps new file mode 100644 index 0000000000..43d29814fa --- /dev/null +++ b/utils/dialoged/docs/choice.eps @@ -0,0 +1,174 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: choice.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 254 375 282 403 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +254 375 translate + +% size of image (on paper, in 1/72inch coords) +28 28 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 12 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 808080 ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +28 28 8 % dimensions of data +[28 0 0 -28 0 28] % mapping matrix +rlecmapimage + +81020018000002 +8100031703810200 +82000301150101020000 +82000301150101020000 +82000301150101020000 +820003018101001200810102810200 +82000301820100010a01010002010100810102810200 +82000301820100010a0102008101000100810102810200 +82000301820100010a010600810102810200 +820003018101001200810102810200 +8200030101018100010901810001030182000102810200 +8200030101018100010901810001820100018301000102810200 +82000301010182000100050002018200010001008301000102810200 +8200030101018100010901810001030182000102810200 +8200030101018100010901810001030182000102810200 +8200030101018200010007008101000500810102810200 +8200030101018100010901810001030182000102810200 +8200030101018100010901810001030182000102810200 +82000301010182000100060001018200010001008301000102810200 +8200030101018100010901810001820100018301000102810200 +8200030101018100010901810001030182000102810200 +8200030101011200810102810200 +82000301150101020000 +82000301150101020000 +82000301150101020000 +8200030217020000 +81000218020000 +81020018000002 + +% +% Compression made this file 20.11% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/choice.gif b/utils/dialoged/docs/choice.gif new file mode 100644 index 0000000000000000000000000000000000000000..a05ff4dee7498536b76867c63f01cb4ebe572ce1 GIT binary patch literal 217 zcmZ?wbhEHblwpuz*vtR|`@wiWnA#8I?caakz=4K_hW|kE{|x`Z6p#k8fI#sl3nK#q zCxZ@1C&&y2mNtP#&((Xw_MP4Re=duSd*-~1C?%zp`?Rcg7VO=ox-7cg=GnHxM@+u# zWN_@-&>^g*zxP>Qmx)mBiQug-*QD;hcvI9^F7K#={;NOUhc|_57i@oWa`*ev9liAj z8_PYciqoo1>a`O58Y8M2LsH5e^(Rf%oH|Y2O=r&BdGqH9FIc?9NNK_Z4nYP6YXF*y BTEGAR literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/classes.tex b/utils/dialoged/docs/classes.tex new file mode 100644 index 0000000000..dbb9491d24 --- /dev/null +++ b/utils/dialoged/docs/classes.tex @@ -0,0 +1,1759 @@ +\chapter{Alphabetical class reference}\label{classref} +\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% + +To be written. + +\begin{comment} + +\overview{Property classes overview}{propertyoverview} + + +\section{\class{wxBoolFormValidator}: wxPropertyFormValidator}\label{wxboolformvalidator} + +\overview{Validator classes}{validatorclasses} + +This class validates a boolean value for a form view. The associated panel item must be a wxCheckBox. + +\membersection{wxBoolFormValidator::wxBoolFormValidator} + +\func{void}{wxBoolFormValidator}{\param{long }{flags=0}} + +Constructor. + +\section{\class{wxBoolListValidator}: wxPropertyListValidator}\label{wxboollistvalidator} + +\overview{Validator classes}{validatorclasses} + +This class validates a boolean value for a list view. + +\membersection{wxBoolListValidator::wxBoolListValidator} + +\func{void}{wxBoolListValidator}{\param{long }{flags=0}} + +Constructor. + +\section{\class{wxIntegerFormValidator}: wxPropertyFormValidator}\label{wxintegerformvalidator} + +\overview{Validator classes}{validatorclasses} + +This class validates a range of integer values for a form view. The associated panel item must be a wxText +or wxSlider. + +\membersection{wxIntegerFormValidator::wxIntegerFormValidator} + +\func{void}{wxIntegerFormValidator}{\param{long }{min=0}, \param{long }{max=0}, + \param{long}{ flags=0}} + +Constructor. Assigning zero to minimum and maximum values indicates that there is no range to check. + + +\section{\class{wxIntegerListValidator}: wxPropertyListValidator}\label{wxintegerlistvalidator} + +\overview{Validator classes}{validatorclasses} + +This class validates a range of integer values for a list view. + +\membersection{wxIntegerListValidator::wxIntegerListValidator} + +\func{void}{wxIntegerListValidator}{\param{long }{min=0}, \param{long }{max=0}, + \param{long}{ flags=wxPROP\_ALLOW\_TEXT\_EDITING}} + +Constructor. Assigning zero to minimum and maximum values indicates that there is no range to check. + +\section{\class{wxFilenameListValidator}: wxPropertyListValidator}\label{wxfilenamelistvalidator} + +\overview{Validator classes}{validatorclasses} + +This class validates a filename for a list view, allowing the user to edit it textually and also popping up +a file selector in ``detailed editing" mode. + +\membersection{wxFilenameListValidator::wxFilenameListValidator} + +\func{void}{wxFilenameListValidator}{\param{wxString }{message = ``Select a file"}, \param{wxString }{wildcard = ``*.*"}, + \param{long}{ flags=0}} + +Constructor. Supply an optional message and wildcard. + +\section{\class{wxListOfStringsListValidator}: wxPropertyListValidator}\label{wxlistofstringslistvalidator} + +\overview{Validator classes}{validatorclasses} + +This class validates a list of strings for a list view. When editing the property, +a dialog box is presented for adding, deleting or editing entries in the list. +At present no constraints may be supplied. + +You can construct a string list property value by constructing a wxStringList object. + +For example: + +\begin{verbatim} + myListValidatorRegistry.RegisterValidator((wxString)"stringlist", + new wxListOfStringsListValidator); + + wxStringList *strings = new wxStringList("earth", "fire", "wind", "water", NULL); + + sheet->AddProperty(new wxProperty("fred", strings, "stringlist")); +\end{verbatim} + +\membersection{wxListOfStringsListValidator::wxListofStringsListValidator} + +\func{void}{wxListOfStringsListValidator}{\param{long}{ flags=0}} + +Constructor. + +\section{\class{wxProperty}: wxObject}\label{wxproperty} + +The {\bf wxProperty} class represents a property, with a \helpref{wxPropertyValue}{wxpropertyvalue}\rtfsp +containing the actual value, a name a role, an optional validator, and +an optional associated window. + +A property might correspond to an actual C++ data member, or it +might correspond to a conceptual property, such as the width of a window. +There is no explicit data member {\it wxWindow::width}, but it may be convenient +to invent such a property for the purposes of editing attributes of the window. +The properties in the property sheet can be mapped to ``reality" by +whatever means (in this case by calling wxWindow::SetSize when the user has +finished editing the property sheet). + +A validator may be associated with the property in order to ensure that this and +only this validator will be used for editing and validating the property. +An alternative method is to use the {\it role} parameter to specify what kind +of validator would be appropriate; for example, specifying ``filename" for the role +would allow the property view to find an appropriate validator at edit time. + + +\membersection{wxProperty::wxProperty} + +\func{void}{wxProperty}{\void} + +\func{void}{wxProperty}{\param{wxProperty\& }{prop}} + +\func{void}{wxProperty}{\param{wxString}{ name}, \param{wxString}{ role}, \param{wxPropertyValidator *}{validator=NULL}} + +\func{void}{wxProperty}{\param{wxString}{ name}, \param{const wxPropertyValue\&}{ val}, \param{wxString}{ role}, \param{wxPropertyValidator *}{validator=NULL}} + +Constructors. + +\membersection{wxProperty::\destruct{wxProperty}} + +\func{void}{\destruct{wxProperty}}{\void} + +Destructor. Destroys the wxPropertyValue, and the property validator if there is one. However, if the +actual C++ value in the wxPropertyValue is a pointer, the data in that variable is not destroyed. + +\membersection{wxProperty::GetValue} + +\func{wxPropertyValue\&}{GetValue}{\void} + +Returns a reference to the property value. + +\membersection{wxProperty::GetValidator} + +\func{wxPropertyValidator *}{GetValidator}{\void} + +Returns a pointer to the associated property validator (if any). + +\membersection{wxProperty::GetName} + +\func{wxString\&}{GetName}{\void} + +Returns the name of the property. + +\membersection{wxProperty::GetRole} + +\func{wxRole\&}{GetRole}{\void} + +Returns the role of the property, to be used when choosing an appropriate validator. + +\membersection{wxProperty::GetWindow} + +\func{wxWindow *}{GetWindow}{\void} + +Returns the window associated with the property (if any). + +\membersection{wxProperty::SetValue} + +\func{void}{SetValue}{\param{wxPropertyValue\&}{ val}} + +Sets the value of the property. + +\membersection{wxProperty::SetName} + +\func{void}{SetName}{\param{wxString\&}{ name}} + +Sets the name of the property. + +\membersection{wxProperty::SetRole} + +\func{void}{SetRole}{\param{wxString\&}{ role}} + +Sets the role of the property. + +\membersection{wxProperty::SetValidator} + +\func{void}{SetValidator}{\param{wxPropertyValidator *}{validator}} + +Sets the validator: this will be deleted when the property is deleted. + +\membersection{wxProperty::SetWindow} + +\func{void}{SetWindow}{\param{wxWindow *}{win}} + +Sets the window associated with the property. + +\membersection{wxProperty::operator $=$} + +\func{void}{operator $=$}{\param{const wxPropertyValue\&}{ val}} + +Assignment operator. + +\section{\class{wxPropertyFormValidator}: wxPropertyValidator}\label{wxpropertyformvalidator} + +The {\bf wxPropertyFormValidator} abstract class is the root of classes that define validation +for a wxPropertyFormView. + + +\section{\class{wxPropertyFormDialog}: wxDialogBox}\label{wxpropertyformdialog} + +The {\bf wxPropertyFormDialog} class is a prepackaged dialog which can +be used for viewing a form property sheet. Pass a property form view object, and the dialog +will pass OnClose and OnDefaultAction listbox messages to the view class for +processing. + +\membersection{wxPropertyFormDialog::wxPropertyFormDialog} + +\func{void}{wxPropertyFormDialog}{\param{wxPropertyFormView *}{view}, \param{wxWindow *}{parent}, \param{char *}{title}, + \param{Bool}{ modal=FALSE}, \param{int}{ x=-1}, \param{int}{ y=-1}, \param{int}{ width=-1}, \param{int}{height=-1}, + \param{long}{ style=wxDEFAULT\_DIALOG\_STYLE}, \param{char *}{name=``dialogBox"}} + +Constructor. + +\membersection{wxPropertyFormDialog::\destruct{wxPropertyFormDialog}} + +\func{void}{\destruct{wxPropertyFormDialog}}{\void} + +Destructor. + + +\section{\class{wxPropertyFormFrame}: wxFrame}\label{wxpropertyformframe} + +The {\bf wxPropertyFormFrame} class is a prepackaged frame which can +be used for viewing a property form. Pass a property form view object, and the frame +will pass OnClose messages to the view class for processing. + +Call Initialize to create the panel and associate the view; override OnCreatePanel +if you wish to use a panel class other than the default wxPropertyFormPanel. + +\membersection{wxPropertyFormFrame::wxPropertyFormFrame} + +\func{void}{wxPropertyFormFrame}{\param{wxPropertyFormView *}{view}, \param{wxFrame *}{parent}, \param{char *}{title}, + \param{int}{ x=-1}, \param{int}{ y=-1}, \param{int}{ width=-1}, \param{int}{height=-1}, + \param{long}{ style=wxSDI $\|$ wxDEFAULT\_FRAME}, \param{char *}{name=``frame"}} + +Constructor. + +\membersection{wxPropertyFormFrame::\destruct{wxPropertyFormFrame}} + +\func{void}{\destruct{wxPropertyFormFrame}}{\void} + +Destructor. + +\membersection{wxPropertyFormFrame::GetPropertyPanel} + +\func{wxPanel *}{GetPropertyPanel}{\void} + +Returns the panel associated with the frame. + +\membersection{wxPropertyFormFrame::Initialize} + +\func{Bool}{Initialize}{\void} + +Must be called to create the panel and associate the view with the panel and frame. + +\membersection{wxPropertyFormFrame::OnCreatePanel} + +\func{wxPanel *}{OnCreatePanel}{\param{wxFrame *}{parent}, \param{wxPropertyFormView *}{view}} + +Creates a panel. Override this to create a panel type other than wxPropertyFormPanel. + + +\section{\class{wxPropertyFormPanel}: wxPanel}\label{wxpropertyformpanel} + +The {\bf wxPropertyFormPanel} class is a prepackaged panel which can +be used for viewing a property form. Pass a property form view object, and the panel +will pass OnDefaultAction listbox messages to the view class for +processing. + +\membersection{wxPropertyFormPanel::wxPropertyFormPanel} + +\func{void}{wxPropertyFormPanel}{\param{wxPropertyFormView *}{view}, \param{wxWindow *}{parent}, + \param{int}{ x=-1}, \param{int}{ y=-1}, \param{int}{ width=-1}, \param{int}{height=-1}, + \param{long}{ style=0}, \param{char *}{name=``panel"}} + +Constructor. + +\membersection{wxPropertyFormPanel::\destruct{wxPropertyFormPanel}} + +\func{void}{\destruct{wxPropertyFormPanel}}{\void} + +Destructor. + + + +\section{\class{wxPropertyFormValidator}: wxPropertyValidator}\label{wxpropertyformvalidatir} + +\overview{wxPropertyFormValidator overview}{wxpropertyformvalidatoroverview} + +The {\bf wxPropertyFormValidator} class defines a base class for form validators. By overriding virtual functions, +the programmer can create custom behaviour for kinds of property. + +\membersection{wxPropertyFormValidator::wxPropertyFormValidator} + +\func{void}{wxPropertyFormValidator}{\param{long}{ flags = 0}} + +Constructor. + +\membersection{wxPropertyFormValidator::\destruct{wxPropertyFormValidator}} + +\func{void}{\destruct{wxPropertyFormValidator}}{\void} + +Destructor. + +\membersection{wxPropertyFormValidator::OnCommand} + +\func{Bool}{OnCommand}{\param{wxProperty *}{property}, \param{wxPropertyFormView *}{view}, + \param{wxWindow *}{parentWindow}, \param{wxCommandEvent\& }{event}} + +Called when the control corresponding to the property receives a command (if not intercepted +by a callback associated with the actual control). + +\membersection{wxPropertyFormValidator::OnCheckValue} + +\func{Bool}{OnCheckValue}{\param{wxProperty *}{property}, \param{wxPropertyFormView *}{view}, + \param{wxWindow *}{parentWindow}} + +Called when the view checks the property value. The value checked by this validator should be taken from the +panel item corresponding to the property. + +\membersection{wxPropertyFormValidator::OnDisplayValue} + +\func{Bool}{OnDisplayValue}{\param{wxProperty *}{property}, \param{wxPropertyFormView *}{view}, + \param{wxWindow *}{parentWindow}} + +Should display the property value in the appropriate control. + +\membersection{wxPropertyFormValidator::OnDoubleClick} + +\func{Bool}{OnDoubleClick}{\param{wxProperty *}{property}, \param{wxPropertyFormView *}{view}, + \param{wxWindow *}{parentWindow}} + +Called when the control corresponding to the property is double clicked (listboxes only). + +\membersection{wxPropertyFormValidator::OnRetrieveValue} + +\func{Bool}{OnRetrieveValue}{\param{wxProperty *}{property}, \param{wxPropertyFormView *}{view}, + \param{wxWindow *}{parentWindow}} + +Should do the transfer from the property editing area to the property itself. + + +\section{\class{wxPropertyFormView}: wxPropertyView}\label{wxpropertyformview} + +\overview{wxPropertyFormView overview}{wxpropertyformviewoverview} + +The {\bf wxPropertyFormView} class shows a wxPropertySheet as a view onto a panel or dialog +box which has already been created. + +\membersection{wxPropertyFormView::wxPropertyFormView} + +\func{void}{wxPropertyFormView}{\param{long}{ flags = 0}} + +Constructor. + +\membersection{wxPropertyFormView::\destruct{wxPropertyFormView}} + +\func{void}{\destruct{wxPropertyFormView}}{\void} + +Destructor. + +\membersection{wxPropertyFormView::AssociateNames}\label{wxpropertyformviewassociatenames} + +\func{void}{AssociateNames}{\void} + +Associates the properties with the controls on the panel. For each panel item, if the +panel item name is the same as a property name, the two objects will be associated. +This function should be called manually since the programmer may wish to do the +association manually. + +\membersection{wxPropertyFormView::Check}\label{wxpropertyformviewcheck} + +\func{Bool}{Check}{\void} + +Checks all properties by calling the appropriate validators; returns FALSE if a validation failed. + +\membersection{wxPropertyFormView::GetPanel}\label{wxpropertyformviewgetpanel} + +\func{wxPanel *}{GetPanel}{\void} + +Returns the panel associated with the view. + +\membersection{wxPropertyFormView::GetManagedWindow}\label{wxpropertyformviewgetmanagedwindow} + +\func{wxWindow *}{GetManagedWindow}{\void} + +Returns the managed window (a frame or dialog) associated with the view. + +\membersection{wxPropertyFormView::OnOk}\label{wxpropertyformviewonok} + +\func{void}{OnOk}{\void} + +Virtual function that will be called when the OK button on the physical window is pressed. +By default, checks and updates the form values, closes and deletes the frame or dialog, then deletes the view. + +\membersection{wxPropertyFormView::OnCancel}\label{wxpropertyformviewoncancel} + +\func{void}{OnCancel}{\void} + +Virtual function that will be called when the Cancel button on the physical window is pressed. +By default, closes and deletes the frame or dialog, then deletes the view. + +\membersection{wxPropertyFormView::OnHelp}\label{wxpropertyformviewonhelp} + +\func{void}{OnHelp}{\void} + +Virtual function that will be called when the Help button on the physical window is pressed. +This needs to be overridden by the application for anything interesting to happen. + +\membersection{wxPropertyFormView::OnRevert}\label{wxpropertyformviewonrevert} + +\func{void}{OnRevert}{\void} + +Virtual function that will be called when the Revert button on the physical window is pressed. +By default transfers the wxProperty values to the panel items (in effect +undoing any unsaved changes in the items). + +\membersection{wxPropertyFormView::OnUpdate}\label{wxpropertyformviewonupdate} + +\func{void}{OnUpdate}{\void} + +Virtual function that will be called when the Update button on the physical window is pressed. +By defaults transfers the displayed values to the wxProperty objects. + +\membersection{wxPropertyFormView::SetManagedWindow}\label{wxpropertyformviewsetmanagedwindow} + +\func{void}{SetManagedWindow}{\param{wxWindow *}{win}} + +Sets the managed window (a frame or dialog) associated with the view. + +\membersection{wxPropertyFormView::TransferToDialog}\label{wxpropertyformviewtransfertodialog} + +\func{Bool}{TransferToDialog}{\void} + +Transfers property values to the controls in the dialog. + +\membersection{wxPropertyFormView::TransferToPropertySheet}\label{wxpropertyformviewtransfertopropertysheet} + +\func{Bool}{TransferToPropertySheet}{\void} + +Transfers property values from the controls in the dialog to the property sheet. + + +\section{\class{wxPropertyListDialog}: wxDialogBox}\label{wxpropertylistdialog} + +The {\bf wxPropertyListDialog} class is a prepackaged dialog which can +be used for viewing a property list. Pass a property list view object, and the dialog +will pass OnClose and OnDefaultAction listbox messages to the view class for +processing. + +\membersection{wxPropertyListDialog::wxPropertyListDialog} + +\func{void}{wxPropertyListDialog}{\param{wxPropertyListView *}{view}, \param{wxWindow *}{parent}, \param{char *}{title}, + \param{Bool}{ modal=FALSE}, \param{int}{ x=-1}, \param{int}{ y=-1}, \param{int}{ width=-1}, \param{int}{height=-1}, + \param{long}{ style=wxDEFAULT\_DIALOG\_STYLE}, \param{char *}{name=``dialogBox"}} + +Constructor. + +\membersection{wxPropertyListDialog::\destruct{wxPropertyListDialog}} + +\func{void}{\destruct{wxPropertyListDialog}}{\void} + +Destructor. + + +\section{\class{wxPropertyListFrame}: wxFrame}\label{wxpropertylistframe} + +The {\bf wxPropertyListFrame} class is a prepackaged frame which can +be used for viewing a property list. Pass a property list view object, and the frame +will pass OnClose messages to the view class for processing. + +Call Initialize to create the panel and associate the view; override OnCreatePanel +if you wish to use a panel class other than the default wxPropertyListPanel. + +\membersection{wxPropertyListFrame::wxPropertyListFrame} + +\func{void}{wxPropertyListFrame}{\param{wxPropertyListView *}{view}, \param{wxFrame *}{parent}, \param{char *}{title}, + \param{int}{ x=-1}, \param{int}{ y=-1}, \param{int}{ width=-1}, \param{int}{height=-1}, + \param{long}{ style=wxSDI $\|$ wxDEFAULT\_FRAME}, \param{char *}{name=``frame"}} + +Constructor. + +\membersection{wxPropertyListFrame::\destruct{wxPropertyListFrame}} + +\func{void}{\destruct{wxPropertyListFrame}}{\void} + +Destructor. + +\membersection{wxPropertyListFrame::GetPropertyPanel} + +\func{wxPanel *}{GetPropertyPanel}{\void} + +Returns the panel associated with the frame. + +\membersection{wxPropertyListFrame::Initialize} + +\func{Bool}{Initialize}{\void} + +Must be called to create the panel and associate the view with the panel and frame. + +\membersection{wxPropertyListFrame::OnCreatePanel} + +\func{wxPanel *}{OnCreatePanel}{\param{wxFrame *}{parent}, \param{wxPropertyListView *}{view}} + +Creates a panel. Override this to create a panel type other than wxPropertyListPanel. + + +\section{\class{wxPropertyListPanel}: wxPanel}\label{wxpropertylistpanel} + +The {\bf wxPropertyListPanel} class is a prepackaged panel which can +be used for viewing a property list. Pass a property list view object, and the panel +will pass OnDefaultAction listbox messages to the view class for +processing. + +\membersection{wxPropertyListPanel::wxPropertyListPanel} + +\func{void}{wxPropertyListPanel}{\param{wxPropertyListView *}{view}, \param{wxWindow *}{parent}, + \param{int}{ x=-1}, \param{int}{ y=-1}, \param{int}{ width=-1}, \param{int}{height=-1}, + \param{long}{ style=0}, \param{char *}{name=``panel"}} + +Constructor. + +\membersection{wxPropertyListPanel::\destruct{wxPropertyListPanel}} + +\func{void}{\destruct{wxPropertyListPanel}}{\void} + +Destructor. + + + + +\section{\class{wxPropertyListValidator}: wxPropertyValidator}\label{wxpropertylistvalidator} + +\overview{wxPropertyListValidator overview}{wxpropertylistvalidatoroverview} + +The {\bf wxPropertyListValidator} abstract class is the base class for +deriving validators for property lists. + +\membersection{wxPropertyListValidator::wxPropertyListValidator} + +\func{void}{wxPropertyListValidator}{\param{long}{ flags = wxPROP\_ALLOW\_TEXT\_EDITING}} + +Constructor. + +\membersection{wxPropertyListValidator::\destruct{wxPropertyListValidator}} + +\func{void}{\destruct{wxPropertyListValidator}}{\void} + +Destructor. + +\membersection{wxPropertyListValidator::OnCheckValue} + +\func{Bool}{OnCheckValue}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view}, + \param{wxWindow *}{parentWindow}} + +Called when the Tick (Confirm) button is pressed or focus is list. Return FALSE if the value +was invalid, which is a signal restores the old value. Return TRUE if the value was valid. + +\membersection{wxPropertyListValidator::OnClearControls} + +\func{Bool}{OnClearControls}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view}, + \param{wxWindow *}{parentWindow}} + +Allows the clearing (enabling, disabling) of property list controls, when the focus leaves the current property. + +\membersection{wxPropertyListValidator::OnClearDetailControls} + +\func{Bool}{OnClearDetailControls}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view}, + \param{wxWindow *}{parentWindow}} + +Called when the focus is lost, if the validator is in detailed editing mode. + +\membersection{wxPropertyListValidator::OnDisplayValue} + +\func{Bool}{OnDisplayValue}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view}, + \param{wxWindow *}{parentWindow}} + +Should display the value in the appropriate controls. The default implementation gets the +textual value from the property and inserts it into the text edit control. + +\membersection{wxPropertyListValidator::OnDoubleClick} + +\func{Bool}{OnDoubleClick}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view}, + \param{wxWindow *}{parentWindow}} + +Called when the property is double clicked. Extra functionality can be provided, +such as cycling through possible values. + +\membersection{wxPropertyListValidator::OnEdit} + +\func{Bool}{OnEdit}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view}, + \param{wxWindow *}{parentWindow}} + +Called when the Edit (detailed editing) button is pressed. The default implementation +calls wxPropertyListView::BeginDetailedEditing; a filename validator (for example) overrides +this function to show the file selector. + +\membersection{wxPropertyListValidator::OnPrepareControls} + +\func{Bool}{OnPrepareControls}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view}, + \param{wxWindow *}{parentWindow}} + +Called to allow the validator to setup the display, such enabling or disabling buttons, and +setting the values and selection in the standard listbox control (the one optionally used for displaying +value options). + +\membersection{wxPropertyListValidator::OnPrepareDetailControls} + +\func{Bool}{OnPrepareDetailControls}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view}, + \param{wxWindow *}{parentWindow}} + +Called when the property is edited `in detail', i.e. when the Edit button is pressed. + +\membersection{wxPropertyListValidator::OnRetrieveValue} + +\func{Bool}{OnRetrieveValue}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view}, + \param{wxWindow *}{parentWindow}} + +Called when Tick (Confirm) is pressed or focus is lost or view wants to update +the property list. Should do the transfer from the property editing area to the property itself + +\membersection{wxPropertyListValidator::OnSelect} + +\func{Bool}{OnSelect}{\param{Bool}{ select}, \param{wxProperty *}{property}, \param{wxPropertyListView *}{view}, + \param{wxWindow *}{parentWindow}} + +Called when the property is selected or deselected: typically displays the value +in the edit control (having chosen a suitable control to display: (non)editable text or listbox). + +\membersection{wxPropertyListValidator::OnValueListSelect} + +\func{Bool}{OnValueListSelect}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view}, + \param{wxWindow *}{parentWindow}} + +Called when the value listbox is selected. The default behaviour is to copy +string to text control, and retrieve the value into the property. + + + +\section{\class{wxPropertyListView}: wxPropertyView}\label{wxpropertylistview} + +\overview{wxPropertyListView overview}{wxpropertylistviewoverview} + +The {\bf wxPropertyListView} class shows a wxPropertySheet as a Visual Basic-style property list. + +\membersection{wxPropertyListView::wxPropertyListView} + +\func{void}{wxPropertyListView}{\param{long}{ flags = wxPROP\_BUTTON\_DEFAULT}} + +Constructor. + +The {\it flags} argument can be a bit list of the following: + +\begin{itemize}\itemsep=0pt +\item wxPROP\_BUTTON\_CLOSE +\item wxPROP\_BUTTON\_OK +\item wxPROP\_BUTTON\_CANCEL +\item wxPROP\_BUTTON\_CHECK\_CROSS +\item wxPROP\_BUTTON\_HELP +\item wxPROP\_DYNAMIC\_VALUE\_FIELD +\item wxPROP\_PULLDOWN +\end{itemize} + +\membersection{wxPropertyListView::\destruct{wxPropertyListView}} + +\func{void}{\destruct{wxPropertyListView}}{\void} + +Destructor. + +\membersection{wxPropertyListView::AssociatePanel}\label{wxpropertylistviewassociatepanel} + +\func{void}{AssociatePanel}{\param{wxPanel *}{panel}} + +Associates the window on which the controls will be displayed, with the view (sets an internal pointer to the window). + +\membersection{wxPropertyListView::BeginShowingProperty}\label{wxpropertylistviewbeginshowingproperty} + +\func{Bool}{BeginShowingProperty}{\param{wxProperty *}{property}} + +Finds the appropriate validator and loads the property into the controls, by calling +wxPropertyValidator::OnPrepareControls and then wxPropertyListView::DisplayProperty. + +\membersection{wxPropertyListView::DisplayProperty}\label{wxpropertylistviewdisplayproperty} + +\func{Bool}{DisplayProperty}{\param{wxProperty *}{property}} + +Calls wxPropertyValidator::OnDisplayValue for the current property's validator. This function +gets called by wxPropertyListView::BeginShowingProperty, which is in turn called +from ShowProperty, called by OnPropertySelect, called by the listbox callback when selected. + +\membersection{wxPropertyListView::EndShowingProperty}\label{wxpropertylistviewendshowingproperty} + +\func{Bool}{EndShowingProperty}{\param{wxProperty *}{property}} + +Finds the appropriate validator and unloads the property from the controls, by calling +wxPropertyListView::RetrieveProperty, wxPropertyValidator::OnClearControls and (if we're in +detailed editing mdoe) wxPropertyValidator::OnClearDetailControls. + +\membersection{wxPropertyListView::GetPanel}\label{wxpropertylistviewgetpanel} + +\func{wxPanel *}{GetPanel}{\void} + +Returns the panel associated with the view. + +\membersection{wxPropertyListView::GetManagedWindow}\label{wxpropertylistviewgetmanagedwindow} + +\func{wxWindow *}{GetManagedWindow}{\void} + +Returns the managed window (a frame or dialog) associated with the view. + +\membersection{wxPropertyListView::GetWindowCancelButton}\label{wxpropertylistviewgetwindowcancelbutton} + +\func{wxButton *}{GetWindowCancelButton}{\void} + +Returns the window cancel button, if any. + +\membersection{wxPropertyListView::GetWindowCloseButton}\label{wxpropertylistviewgetwindowclosebutton} + +\func{wxButton *}{GetWindowCloseButton}{\void} + +Returns the window close or OK button, if any. + +\membersection{wxPropertyListView::GetWindowHelpButton}\label{wxpropertylistviewgetwindowhelpbutton} + +\func{wxButton *}{GetWindowHelpButton}{\void} + +Returns the window help button, if any. + +\membersection{wxPropertyListView::SetManagedWindow}\label{wxpropertylistviewsetmanagedwindow} + +\func{void}{SetManagedWindow}{\param{wxWindow *}{win}} + +Sets the managed window (a frame or dialog) associated with the view. + +\membersection{wxPropertyListView::UpdatePropertyDisplayInList}\label{wxpropertylistviewupdatepropdisplay} + +\func{Bool}{UpdatePropertyDisplayInList}{\param{wxProperty *}{property}} + +Updates the display for the given changed property. + +\membersection{wxPropertyListView::UpdatePropertyList}\label{wxpropertylistviewupdateproplist} + +\func{Bool}{UpdatePropertyList}{\param{Bool }{clearEditArea = TRUE}} + +Updates the whole property list display. + + +\section{\class{wxPropertySheet}: wxObject}\label{wxpropertysheet} + +\overview{wxPropertySheet overview}{wxpropertysheetoverview} + +The {\bf wxPropertySheet} class is used for storing a number of +wxProperty objects (essentially names and values). + +\membersection{wxPropertySheet::wxPropertySheet} + +\func{void}{wxPropertySheet}{\void} + +Constructor. + +\membersection{wxPropertySheet::\destruct{wxPropertySheet}} + +\func{void}{\destruct{wxPropertySheet}}{\void} + +Destructor. Destroys all contained properties. + +\membersection{wxPropertySheet::AddProperty}\label{wxpropertysheetaddproperty} + +\func{void}{AddProperty}{\param{wxProperty *}{property}} + +Adds a property to the sheet. + +\membersection{wxPropertySheet::Clear}\label{wxpropertysheetclear} + +\func{void}{Clear}{\void} + +Clears all the properties from the sheet (deleting them). + +\membersection{wxPropertySheet::GetProperties}\label{wxpropertysheetgetproperties} + +\func{wxList\&}{GetProperties}{\void} + +Returns a reference to the internal list of properties. + +\membersection{wxPropertySheet::GetProperty}\label{wxpropertysheetgetproperty} + +\func{wxProperty *}{GetProperty}{\param{char *}{name}} + +Gets a property by name. + +\membersection{wxPropertySheet::SetAllModified} + +\func{void}{SetAllModified}{\param{Bool}{ flag}} + +Sets the `modified' flag of each property value. + + + +\section{\class{wxPropertyValidator}: wxEvtHandler}\label{wxpropertyvalidator} + +\overview{wxPropertyValidator overview}{wxpropertyvalidatoroverview} + +The {\bf wxPropertyValidator} abstract class is the base class for deriving +validators for properties. + +\membersection{wxPropertyValidator::wxPropertyValidator} + +\func{void}{wxPropertyValidator}{\param{long}{ flags = 0}} + +Constructor. + +\membersection{wxPropertyValidator::\destruct{wxPropertyValidator}} + +\func{void}{\destruct{wxPropertyValidator}}{\void} + +Destructor. + +\membersection{wxPropertyValidator::GetFlags} + +\func{long}{GetFlags}{\void} + +Returns the flags for the validator. + +\membersection{wxPropertyValidator::GetValidatorProperty} + +\func{wxProperty *}{GetValidatorProperty}{\void} + +Gets the property for the validator. + +\membersection{wxPropertyValidator::SetValidatorProperty} + +\func{void}{SetValidatorProperty}{\param{wxProperty *}{property}} + +Sets the property for the validator. + + +\section{\class{wxPropertyValidatorRegistry}: wxHashTable}\label{wxpropertyvalidatorregistry} + +The {\bf wxPropertyValidatorRegistry} class is used for storing validators, +indexed by the `role name' of the property, by which groups of property +can be identified for the purpose of validation and editing. + +\membersection{wxPropertyValidatorRegistry::wxPropertyValidatorRegistry} + +\func{void}{wxPropertyValidatorRegistry}{\void} + +Constructor. + +\membersection{wxPropertyValidatorRegistry::\destruct{wxPropertyValidatorRegistry}} + +\func{void}{\destruct{wxPropertyValidatorRegistry}}{\void} + +Destructor. + +\membersection{wxPropertyValidatorRegistry::Clear} + +\func{void}{ClearRegistry}{\void} + +Clears the registry, deleting the validators. + +\membersection{wxPropertyValidatorRegistry::GetValidator} + +\func{wxPropertyValidator *}{GetValidator}{\param{wxString\& }{roleName}} + +Retrieve a validator by the property role name. + +\membersection{wxPropertyValidatorRegistry::RegisterValidator}\label{wxpropertyvalidatorregistervalidator} + +\func{void}{RegisterValidator}{\param{wxString\& }{roleName}, \param{wxPropertyValidator *}{validator}} + +Register a validator with the registry. {\it roleName} is a name indicating the +role of the property, such as ``filename''. Later, when a validator is chosen for +editing a property, this role name is matched against the class names of the property, +if the property does not already have a validator explicitly associated with it. + + +\section{\class{wxPropertyValue}: wxObject}\label{wxpropertyvalue} + +The {\bf wxPropertyValue} class represents the value of a property, +and is normally associated with a wxProperty object. + +A wxPropertyValue has one of the following types: + +\begin{itemize}\itemsep=0pt +\item wxPropertyValueNull +\item wxPropertyValueInteger +\item wxPropertyValueReal +\item wxPropertyValueBool +\item wxPropertyValueString +\item wxPropertyValueList +\item wxPropertyValueIntegerPtr +\item wxPropertyValueRealPtr +\item wxPropertyValueBoolPtr +\item wxPropertyValueStringPtr +\end{itemize} + +\membersection{wxPropertyValue::wxPropertyValue} + +\func{void}{wxPropertyValue}{\void} + +Default constructor. + +\func{void}{wxPropertyValue}{\param{const wxPropertyValue\& }{copyFrom}} + +Copy constructor. + +\func{void}{wxPropertyValue}{\param{char *}{val}} + +Construction from a string value. + +\func{void}{wxPropertyValue}{\param{long}{ val}} + +Construction from an integer value. You may need to cast to (long) to +avoid confusion with other constructors (such as the Bool constructor). + +\func{void}{wxPropertyValue}{\param{Bool}{ val}} + +Construction from a boolean value. + +\func{void}{wxPropertyValue}{\param{float}{ val}} + +Construction from a floating point value. + +\func{void}{wxPropertyValue}{\param{double}{ val}} + +Construction from a floating point value. + +\func{void}{wxPropertyValue}{\param{wxList *}{ val}} + +Construction from a list of wxPropertyValue objects. The +list, but not each contained wxPropertyValue, will be deleted +by the constructor. The wxPropertyValues will be assigned to +this wxPropertyValue list. In other words, so do not delete wxList or +its data after calling this constructor. + +\func{void}{wxPropertyValue}{\param{wxStringList *}{ val}} + +Construction from a list of strings. The list (including the strings +contained in it) will be deleted by the constructor, so do not +destroy {\it val} explicitly. + +\func{void}{wxPropertyValue}{\param{char **}{val}} + +Construction from a string pointer. + +\func{void}{wxPropertyValue}{\param{long *}{val}} + +Construction from an integer pointer. + +\func{void}{wxPropertyValue}{\param{Bool *}{val}} + +Construction from an boolean pointer. + +\func{void}{wxPropertyValue}{\param{float *}{val}} + +Construction from a floating point pointer. + +The last four constructors use pointers to various C++ types, and do not +store the types themselves; this allows the values to stand in for actual +data values defined elsewhere. + +\membersection{wxPropertyValue::\destruct{wxPropertyValue}} + +\func{void}{\destruct{wxPropertyValue}}{\void} + +Destructor. + +\membersection{wxPropertyValue::Append} + +\func{void}{Append}{\param{wxPropertyValue *}{expr}} + +Appends a property value to the list. + +\membersection{wxPropertyValue::BoolValue} + +\func{Bool}{BoolValue}{\void} + +Returns the boolean value. + +\membersection{wxPropertyValue::BoolValuePtr} + +\func{Bool *}{BoolValuePtr}{\void} + +Returns the pointer to the boolean value. + +\membersection{wxPropertyValue::ClearList} + +\func{void}{ClearList}{\void} + +Deletes the contents of the list. + +\membersection{wxPropertyValue::Delete} + +\func{void}{Delete}{\param{wxPropertyValue *}{expr}} + +Deletes {\it expr} from this list. + +\membersection{wxPropertyValue::GetFirst} + +\func{wxPropertyValue *}{GetFirst}{\void} + +Gets the first value in the list. + +\membersection{wxPropertyValue::GetLast} + +\func{wxPropertyValue *}{GetFirst}{\void} + +Gets the last value in the list. + +\membersection{wxPropertyValue::GetModified} + +\func{Bool}{GetModified}{\void} + +Returns TRUE if the value was modified since being created +(or since SetModified was called). + +\membersection{wxPropertyValue::GetNext} + +\func{wxPropertyValue *}{GetNext}{\void} + +Gets the next value in the list (the one after `this'). + +\membersection{wxPropertyValue::GetStringRepresentation} + +\func{wxString}{GetStringRepresentation}{\void} + +Gets a string representation of the value. + +\membersection{wxPropertyValue::IntegerValue} + +\func{long}{IntegerValue}{\void} + +Returns the integer value. + +\membersection{wxPropertyValue::Insert} + +\func{void}{Insert}{\param{wxPropertyValue *}{expr}} + +Inserts a property value at the front of a list. + +\membersection{wxPropertyValue::IntegerValuePtr} + +\func{long *}{IntegerValuePtr}{\void} + +Returns the pointer to the integer value. + +\membersection{wxPropertyValue::Nth} + +\func{wxPropertyValue *}{Nth}{\param{int}{ n}} + +Returns the nth value of a list expression (starting from zero). + +\membersection{wxPropertyValue::Number} + +\func{int}{Number}{\void} + +Returns the number of elements in a list expression. + +\membersection{wxPropertyValue::RealValue} + +\func{float}{RealValue}{\void} + +Returns the floating point value. + +\membersection{wxPropertyValue::RealValuePtr} + +\func{float *}{RealValuePtr}{\void} + +Returns the pointer to the floating point value. + +\membersection{wxPropertyValue::SetModified} + +\func{void}{SetModified}{\param{Bool}{ flag}} + +Sets the `modified' flag. + +\membersection{wxPropertyValue::StringValue} + +\func{char *}{StringValue}{\void} + +Returns the string value. + +\membersection{wxPropertyValue::StringValuePtr} + +\func{char **}{StringValuePtr}{\void} + +Returns the pointer to the string value. + +\membersection{wxPropertyValue::Type} + +\func{wxPropertyValueType}{Type}{\void} + +Returns the value type. + +\membersection{wxPropertyValue::operator $=$} + +\func{void}{operator $=$}{\param{const wxPropertyValue\& }{val}} + +\func{void}{operator $=$}{\param{const char *}{val}} + +\func{void}{operator $=$}{\param{const long }{val}} + +\func{void}{operator $=$}{\param{const Bool }{val}} + +\func{void}{operator $=$}{\param{const float }{val}} + +\func{void}{operator $=$}{\param{const char **}{val}} + +\func{void}{operator $=$}{\param{const long *}{val}} + +\func{void}{operator $=$}{\param{const Bool *}{val}} + +\func{void}{operator $=$}{\param{const float *}{val}} + +Assignment operators. + + + +\section{\class{wxPropertyView}: wxEvtHandler}\label{wxpropertyview} + +\overview{wxPropertyView overview}{wxpropertyviewoverview} + +The {\bf wxPropertyView} abstract class is the base class for views +of property sheets, acting as intermediaries between properties and +actual windows. + +\membersection{wxPropertyView::wxPropertyView} + +\func{void}{wxPropertyView}{\param{long}{ flags = wxPROP\_BUTTON\_DEFAULT}} + +Constructor. + +The {\it flags} argument can be a bit list of the following: + +\begin{itemize}\itemsep=0pt +\item wxPROP\_BUTTON\_CLOSE +\item wxPROP\_BUTTON\_OK +\item wxPROP\_BUTTON\_CANCEL +\item wxPROP\_BUTTON\_CHECK\_CROSS +\item wxPROP\_BUTTON\_HELP +\item wxPROP\_DYNAMIC\_VALUE\_FIELD +\item wxPROP\_PULLDOWN +\end{itemize} + +\membersection{wxPropertyView::\destruct{wxPropertyView}} + +\func{void}{\destruct{wxPropertyView}}{\void} + +Destructor. + +\membersection{wxPropertyView::AddRegistry}\label{wxpropertyviewaddregistry} + +\func{void}{AddRegistry}{\param{wxPropertyValidatorRegistry *}{registry}} + +Adds a registry (list of property validators) the view's list of registries, which is initially empty. + +\membersection{wxPropertyView::FindPropertyValidator}\label{wxpropertyviewfindpropertyvalidator} + +\func{wxPropertyValidator *}{FindPropertyValidator}{\param{wxProperty *}{property}} + +Finds the property validator that is most appropriate to this property. + +\membersection{wxPropertyView::GetPropertySheet}\label{wxpropertyviewgetpropertysheet} + +\func{wxPropertySheet *}{GetPropertySheet}{\void} + +Gets the property sheet for this view. + +\membersection{wxPropertyView::GetRegistryList}\label{wxpropertyviewgetregistrylist} + +\func{wxList\&}{GetRegistryList}{\void} + +Returns a reference to the list of property validator registries. + +\membersection{wxPropertyView::OnOk}\label{wxpropertyviewonok} + +\func{void}{OnOk}{\void} + +Virtual function that will be called when the OK button on the physical window is pressed (if it exists). + +\membersection{wxPropertyView::OnCancel}\label{wxpropertyviewoncancel} + +\func{void}{OnCancel}{\void} + +Virtual function that will be called when the Cancel button on the physical window is pressed (if it exists). + +\membersection{wxPropertyView::OnClose}\label{wxpropertyviewonclose} + +\func{Bool}{OnClose}{\void} + +Virtual function that will be called when the physical window is closed. The default implementation returns FALSE. + +\membersection{wxPropertyView::OnHelp}\label{wxpropertyviewonhelp} + +\func{void}{OnHelp}{\void} + +Virtual function that will be called when the Help button on the physical window is pressed (if it exists). + +\membersection{wxPropertyView::OnPropertyChanged}\label{wxpropertyviewonpropertychanged} + +\func{void}{OnPropertyChanged}{\param{wxProperty *}{property}} + +Virtual function called by a view or validator when a property's value changed. Validators +must be written correctly for this to be called. You can override this function +to respond immediately to property value changes. + +\membersection{wxPropertyView::OnUpdateView}\label{wxpropertyviewonupdateview} + +\func{Bool}{OnUpdateView}{\void} + +Called by the viewed object to update the view. The default implementation just returns +FALSE. + +\membersection{wxPropertyView::SetPropertySheet}\label{wxpropertyviewsetpropertysheet} + +\func{void}{SetPropertySheet}{\param{wxPropertySheet *}{sheet}} + +Sets the property sheet for this view. + +\membersection{wxPropertyView::ShowView}\label{wxpropertyviewshowview} + +\func{void}{ShowView}{\param{wxPropertySheet *}{sheet}, \param{wxPanel *}{panel}} + +Associates this view with the given panel, and shows the view. + +\section{\class{wxRealFormValidator}: wxPropertyFormValidator}\label{wxrealformvalidator} + +\overview{Validator classes}{validatorclasses} + +This class validates a range of real values for form views. The associated panel item must be a wxText. + +\membersection{wxRealFormValidator::wxRealFormValidator} + +\func{void}{wxRealFormValidator}{\param{float }{min=0.0}, \param{float }{max=0.0}, + \param{long}{ flags=0}} + +Constructor. Assigning zero to minimum and maximum values indicates that there is no range to check. + + +\section{\class{wxStringFormValidator}: wxPropertyFormValidator}\label{wxstringformvalidator} + +\overview{Validator classes}{validatorclasses} + +This class validates a string value for a form view, with an optional choice of possible values. +The associated panel item must be a wxText, wxListBox or wxChoice. For wxListBox and wxChoice items, +if the item is empty, the validator attempts to initialize the item from the strings in +the validator. Note that this does not happen for XView wxChoice items since XView cannot reinitialize a wxChoice. + +\membersection{wxStringFormValidator::wxStringFormValidator} + +\func{void}{wxStringFormValidator}{\param{wxStringList *}{list=NULL}, \param{long}{ flags=0}} + +Constructor. Supply a list of strings to indicate a choice, or no strings to allow the +user to freely edit the string. The string list will be deleted when the validator is deleted. + + +\section{\class{wxRealListValidator}: wxPropertyListValidator}\label{wxreallistvalidator} + +\overview{Validator classes}{validatorclasses} + +This class validates a range of real values for property lists. + +\membersection{wxRealListValidator::wxreallistvalidator} + +\func{void}{wxRealListValidator}{\param{float }{min=0.0}, \param{float }{max=0.0}, + \param{long}{ flags=wxPROP\_ALLOW\_TEXT\_EDITING}} + +Constructor. Assigning zero to minimum and maximum values indicates that there is no range to check. + + +\section{\class{wxStringListValidator}: wxPropertyListValidator}\label{wxstringlistvalidator} + +\overview{Validator classes}{validatorclasses} + +This class validates a string value, with an optional choice of possible values. + +\membersection{wxStringListValidator::wxStringListValidator} + +\func{void}{wxStringListValidator}{\param{wxStringList *}{list=NULL}, \param{long}{ flags=0}} + +Constructor. Supply a list of strings to indicate a choice, or no strings to allow the +user to freely edit the string. The string list will be deleted when the validator is deleted. + + +\chapter{Classes by category}\label{classesbycat} + +A classification of property sheet classes by category. + +\section{Data classes} + +\begin{itemize}\itemsep=0pt +\item \helpref{wxProperty}{wxproperty} +\item \helpref{wxPropertyValue}{wxpropertyvalue} +\item \helpref{wxPropertySheet}{wxpropertysheet} +\end{itemize} + + +\section{Validator classes}\label{validatorclasses} + +Validators check that the values the user has entered for a property are +valid. They can also define specific ways of entering data, such as a +file selector for a filename, and they are responsible for transferring +values between the wxProperty and the physical display. + +Base classes: + +\begin{itemize}\itemsep=0pt +\item \helpref{wxPropertyValidator}{wxproperty} +\item \helpref{wxPropertyListValidator}{wxpropertylistvalidator} +\item \helpref{wxPropertyFormValidator}{wxpropertyformvalidator} +\end{itemize} + +List view validators: + +\begin{itemize}\itemsep=0pt +\item \helpref{wxBoolListValidator}{wxboollistvalidator} +\item \helpref{wxFilenameListValidator}{wxfilenamelistvalidator} +\item \helpref{wxIntegerListValidator}{wxintegerlistvalidator} +\item \helpref{wxListOfStringsListValidator}{wxlistofstringslistvalidator} +\item \helpref{wxRealListValidator}{wxreallistvalidator} +\item \helpref{wxStringListValidator}{wxstringlistvalidator} +\end{itemize} + +Form view validators: + +\begin{itemize}\itemsep=0pt +\item \helpref{wxBoolFormValidator}{wxboolformvalidator} +\item \helpref{wxIntegerFormValidator}{wxintegerformvalidator} +\item \helpref{wxRealFormValidator}{wxrealformvalidator} +\item \helpref{wxStringFormValidator}{wxstringformvalidator} +\end{itemize} + +\section{View classes}\label{viewclasses} + +View classes mediate between a property sheet and a physical window. + +\begin{itemize}\itemsep=0pt +\item \helpref{wxPropertyView}{wxpropertyview} +\item \helpref{wxPropertyListView}{wxpropertylistview} +\item \helpref{wxPropertyFormView}{wxpropertyformview} +\end{itemize} + +\section{Window classes}\label{windowclasses} + +The class library defines some window classes that can be used as-is with a suitable +view class and property sheet. + +\begin{itemize}\itemsep=0pt +\item \helpref{wxPropertyFormFrame}{wxpropertyformframe} +\item \helpref{wxPropertyFormDialog}{wxpropertyformdialog} +\item \helpref{wxPropertyFormPanel}{wxpropertyformpanel} +\item \helpref{wxPropertyListFrame}{wxpropertylistframe} +\item \helpref{wxPropertyListDialog}{wxpropertylistdialog} +\item \helpref{wxPropertyListPanel}{wxpropertylistpanel} +\end{itemize} + +\section{Registry classes} + +A validator registry is a list of validators that can be applied to properties in a property sheet. +There may be one or more registries per property view. + +\begin{itemize}\itemsep=0pt +\item \helpref{wxPropertyValidatorRegistry}{wxpropertyvalidatorregistry} +\end{itemize} + + +\chapter{Topic overviews}\label{overviews} + +This chapter contains a selection of topic overviews. + +\section{Property classes overview}\label{propertyoverview} + +The property classes help a programmer to express relationships between +data and physical windows, in particular: + +\begin{itemize}\itemsep=0pt +\item the transfer of data to and from the physical controls; +\item the behaviour of various controls and custom windows for particular +types of data; +\item the validation of data, notifying the user when incorrect data is entered, +or even better, constraining the input so only valid data can be entered. +\end{itemize} + +With a consistent framework, the programmer should be able to use existing +components and design new ones in a principled manner, to solve many data entry +requirements. + +Each datum is represented in a \helpref{wxProperty}{wxproperty}, which has a name and a value. +Various C++ types are permitted in the value of a property, and the property can store a pointer +to the data instead of a copy of the data. A \helpref{wxPropertySheet}{wxpropertysheet} represents a number of these properties. + +These two classes are independent from the way in which the data is visually manipulated. To +mediate between property sheets and windows, the abstract class \helpref{wxPropertyView}{wxpropertyview} is +available for programmers to derive new kinds of view. One kind of view that is available is the \helpref{wxPropertyListView}{wxpropertylistview}, +which displays the data in a Visual Basic-style list, with a small number of controls for editing +the currently selected property. Another is \helpref{wxPropertyFormView}{wxpropertyformview} which +mediates between an existing dialog or panel and the property sheet. + +The hard work of mediation is actually performed by validators, which are instances of classes +derived from \helpref{wxPropertyValidator}{wxpropertyvalidator}. A validator is associated with +a particular property and is responsible for +responding to user interface events, and displaying, updating and checking the property value. +Because a validator's behaviour depends largely on the kind of view being used, there has to be +a separate hierarchy of validators for each class of view. So for wxPropertyListView, there is +an abstract class \helpref{wxPropertyListValidator}{wxpropertylistvalidator} from which concrete +classes are derived, such as \helpref{wxRealListValidator}{wxreallistvalidator} and +\rtfsp\helpref{wxStringListValidator}{wxstringlistvalidator}. + +A validator can be explicitly set for a property, so there is no doubt which validator +should be used to edit that property. However, it is also possible to define a registry +of validators, and have the validator chosen on the basis of the {\it role} of the property. +So a property with a ``filename" role would match the ``filename" validator, which pops +up a file selector when the user double clicks on the property. + +You don't have to define your own frame or window classes: there are some predefined +that will work with the property list view. See \helpref{Window classes}{windowclasses} for +further details. + +\subsection{Example 1: Property list view} + +The following code fragment shows the essentials of creating a registry of +standard validators, a property sheet containing some properties, and +a property list view and dialog or frame. RegisterValidators will be +called on program start, and PropertySheetTest is called in response to a +menu command. + +Note how some properties are created with an explicit reference to +a validator, and others are provided with a ``role'' which can be matched +against a validator in the registry. + +The interface generated by this test program is shown in the section \helpref{Appearance and +behaviour of a property list view}{appearance}. + +\begin{verbatim} +void RegisterValidators(void) +{ + myListValidatorRegistry.RegisterValidator((wxString)"real", new wxRealListValidator); + myListValidatorRegistry.RegisterValidator((wxString)"string", new wxStringListValidator); + myListValidatorRegistry.RegisterValidator((wxString)"integer", new wxIntegerListValidator); + myListValidatorRegistry.RegisterValidator((wxString)"bool", new wxBoolListValidator); +} + +void PropertyListTest(Bool useDialog) +{ + wxPropertySheet *sheet = new wxPropertySheet; + + sheet->AddProperty(new wxProperty("fred", 1.0, "real")); + sheet->AddProperty(new wxProperty("tough choice", (Bool)TRUE, "bool")); + sheet->AddProperty(new wxProperty("ian", (long)45, "integer", new wxIntegerListValidator(-50, 50))); + sheet->AddProperty(new wxProperty("bill", 25.0, "real", new wxRealListValidator(0.0, 100.0))); + sheet->AddProperty(new wxProperty("julian", "one", "string")); + sheet->AddProperty(new wxProperty("bitmap", "none", "string", new wxFilenameListValidator("Select a bitmap file", "*.bmp"))); + wxStringList *strings = new wxStringList("one", "two", "three", NULL); + sheet->AddProperty(new wxProperty("constrained", "one", "string", new wxStringListValidator(strings))); + + wxPropertyListView *view = + new wxPropertyListView(NULL, + wxPROP_BUTTON_CHECK_CROSS|wxPROP_DYNAMIC_VALUE_FIELD|wxPROP_PULLDOWN); + + wxDialogBox *propDialog = NULL; + wxPropertyListFrame *propFrame = NULL; + if (useDialog) + { + propDialog = new wxPropertyListDialog(view, NULL, "Property Sheet Test", TRUE, -1, -1, 400, 500); + } + else + { + propFrame = new wxPropertyListFrame(view, NULL, "Property Sheet Test", -1, -1, 400, 500); + } + + view->AddRegistry(&myListValidatorRegistry); + + if (useDialog) + { + view->ShowView(sheet, propDialog); + propDialog->Centre(wxBOTH); + propDialog->Show(TRUE); + } + else + { + propFrame->Initialize(); + view->ShowView(sheet, propFrame->GetPropertyPanel()); + propFrame->Centre(wxBOTH); + propFrame->Show(TRUE); + } +} +\end{verbatim} + +\subsection{Example 2: Property form view} + +This example is similar to Example 1, but uses a property form view to +edit a property sheet using a predefined dialog box. + +\begin{verbatim} +void RegisterValidators(void) +{ + myFormValidatorRegistry.RegisterValidator((wxString)"real", new wxRealFormValidator); + myFormValidatorRegistry.RegisterValidator((wxString)"string", new wxStringFormValidator); + myFormValidatorRegistry.RegisterValidator((wxString)"integer", new wxIntegerFormValidator); + myFormValidatorRegistry.RegisterValidator((wxString)"bool", new wxBoolFormValidator); +} + +void PropertyFormTest(Bool useDialog) +{ + wxPropertySheet *sheet = new wxPropertySheet; + + sheet->AddProperty(new wxProperty("fred", 25.0, "real", new wxRealFormValidator(0.0, 100.0))); + sheet->AddProperty(new wxProperty("tough choice", (Bool)TRUE, "bool")); + sheet->AddProperty(new wxProperty("ian", (long)45, "integer", new wxIntegerFormValidator(-50, 50))); + sheet->AddProperty(new wxProperty("julian", "one", "string")); + wxStringList *strings = new wxStringList("one", "two", "three", NULL); + sheet->AddProperty(new wxProperty("constrained", "one", "string", new wxStringFormValidator(strings))); + + wxPropertyFormView *view = new wxPropertyFormView(NULL); + + wxDialogBox *propDialog = NULL; + wxPropertyFormFrame *propFrame = NULL; + if (useDialog) + { + propDialog = new wxPropertyFormDialog(view, NULL, "Property Form Test", TRUE, -1, -1, 400, 300); + } + else + { + propFrame = new wxPropertyFormFrame(view, NULL, "Property Form Test", -1, -1, 400, 300); + propFrame->Initialize(); + } + + wxPanel *panel = propDialog ? propDialog : propFrame->GetPropertyPanel(); + panel->SetLabelPosition(wxVERTICAL); + + // Add items to the panel + + (void) new wxButton(panel, (wxFunction)NULL, "OK", -1, -1, -1, -1, 0, "ok"); + (void) new wxButton(panel, (wxFunction)NULL, "Cancel", -1, -1, 80, -1, 0, "cancel"); + (void) new wxButton(panel, (wxFunction)NULL, "Update", -1, -1, 80, -1, 0, "update"); + (void) new wxButton(panel, (wxFunction)NULL, "Revert", -1, -1, -1, -1, 0, "revert"); + panel->NewLine(); + + // The name of this text item matches the "fred" property + (void) new wxText(panel, (wxFunction)NULL, "Fred", "", -1, -1, 90, -1, 0, "fred"); + (void) new wxCheckBox(panel, (wxFunction)NULL, "Yes or no", -1, -1, -1, -1, 0, "tough choice"); + (void) new wxSlider(panel, (wxFunction)NULL, "Sliding scale", 0, -50, 50, 100, -1, -1, wxHORIZONTAL, "ian"); + panel->NewLine(); + (void) new wxListBox(panel, (wxFunction)NULL, "Constrained", wxSINGLE, -1, -1, 100, 90, 0, NULL, 0, "constrained"); + + view->AddRegistry(&myFormValidatorRegistry); + + if (useDialog) + { + view->ShowView(sheet, propDialog); + view->AssociateNames(); + view->TransferToDialog(); + propDialog->Centre(wxBOTH); + propDialog->Show(TRUE); + } + else + { + view->ShowView(sheet, propFrame->GetPropertyPanel()); + view->AssociateNames(); + view->TransferToDialog(); + propFrame->Centre(wxBOTH); + propFrame->Show(TRUE); + } +} +\end{verbatim} + +\section{Validator classes overview}\label{validatoroverview} + +Classes: \helpref{Validator classes}{validatorclasses} + +The validator classes provide functionality for mediating between a wxProperty and +the actual display. There is a separate family of validator classes for each +class of view, since the differences in user interface for these views implies +that little common functionality can be shared amongst validators. + +\subsection{wxPropertyValidator overview}\label{wxpropertyvalidatoroverview} + +Class: \helpref{wxPropertyValidator}{wxpropertyvalidator} + +This class is the root of all property validator classes. It contains a small +amount of common functionality, including functions to convert between +strings and C++ values. + +A validator is notionally an object which sits between a property and its displayed +value, and checks that the value the user enters is correct, giving an error message +if the validation fails. In fact, the validator does more than that, and is akin to +a view class but at a finer level of detail. It is also responsible for +loading the dialog box control with the value from the property, putting it back +into the property, preparing special controls for editing the value, and +may even invoke special dialogs for editing the value in a convenient way. + +In a property list dialog, there is quite a lot of scope for supplying custom dialogs, +such as file or colour selectors. For a form dialog, there is less scope because +there is no concept of `detailed editing' of a value: one control is associated with +one property, and there is no provision for invoking further dialogs. The reader +may like to work out how the form view could be extended to provide some of the +functionality of the property list! + +Validator objects may be associated explictly with a wxProperty, or they may be +indirectly associated by virtue of a property `kind' that matches validators having +that kind. In the latter case, such validators are stored in a validator registry +which is passed to the view before the dialog is shown. If the validator takes +arguments, such as minimum and maximum values in the case of a wxIntegerListValidator, +then the validator must be associated explicitly with the property. The validator +will be deleted when the property is deleted. + +\subsection{wxPropertyListValidator overview}\label{wxpropertylistvalidatoroverview} + +Class: \helpref{wxPropertyListValidator}{wxpropertylistvalidator} + +This class is the abstract base class for property list view validators. +The list view acts upon a user interface containing a list of properties, +a text item for direct property value editing, confirm/cancel buttons for the value, +a pulldown list for making a choice between values, and OK/Cancel/Help buttons +for the dialog (see \helpref{property list appearance}{appearance}). + +By overriding virtual functions, the programmer can create custom +behaviour for different kinds of property. Custom behaviour can use just the +available controls on the property list dialog, or the validator can +invoke custom editors with quite different controls, which pop up in +`detailed editing' mode. + +See the detailed class documentation for the members you should override +to give your validator appropriate behaviour. + +\subsection{wxPropertyFormValidator overview}\label{wxpropertyformvalidatoroverview} + +This class is the abstract base class for property form view validators. +The form view acts upon an existing dialog box or panel, where either the +panel item names correspond to property names, or the programmer has explicitly +associated the panel item with the property. + +By overriding virtual functions, the programmer determines how +values are displayed or retrieved, and the checking that the validator does. + +See the detailed class documentation for the members you should override +to give your validator appropriate behaviour. + +\section{View classes overview}\label{viewoverview} + +Classes: \helpref{View classes}{viewclasses} + +An instance of a view class relates a property sheet with an actual window. +Currently, there are two classes of view: wxPropertyListView and wxPropertyFormView. + +\subsection{wxPropertyView overview}\label{wxpropertyviewoverview} + +Class: \helpref{wxPropertyView}{wxpropertyview} + +This is the abstract base class for property views. + +\subsection{wxPropertyListView overview}\label{wxpropertylistviewoverview} + +Class: \helpref{wxPropertyListView}{wxpropertylistview} + +The property list view defines the relationship between a property sheet and +a property list dialog or panel. It manages user interface events such as +clicking on a property, pressing return in the text edit field, and clicking +on Confirm or Cancel. These events cause member functions of the +class to be called, and these in turn may call member functions of +the appropriate validator to be called, to prepare controls, check the property value, +invoke detailed editing, etc. + +\subsection{wxPropertyFormView overview}\label{wxpropertyformviewoverview} + +Class: \helpref{wxPropertyFormView}{wxpropertyformview} + +The property form view manages the relationship between a property sheet +and an existing dialog or panel. + +You must first create a panel or dialog box for the view to work on. +The panel should contain panel items with names that correspond to +properties in your property sheet; or you can explicitly set the +panel item for each property. + +Apart from any custom panel items that you wish to control independently +of the property-editing items, wxPropertyFormView takes over the +processing of item events. It can also control normal dialog behaviour such +as OK, Cancel, so you should also create some standard buttons that the property view +can recognise. Just create the buttons with standard names and the view +will do the rest. The following button names are recognised: + +\begin{itemize}\itemsep=0pt +\item {\bf ok}: indicates the OK button. Calls wxPropertyFormView::OnOk. By default, +checks and updates the form values, closes and deletes the frame or dialog, then deletes the view. +\item {\bf cancel}: indicates the Cancel button. Calls wxPropertyFormView::OnCancel. By default, +closes and deletes the frame or dialog, then deletes the view. +\item {\bf help}: indicates the Help button. Calls wxPropertyFormView::OnHelp. This needs +to be overridden by the application for anything interesting to happen. +\item {\bf revert}: indicates the Revert button. Calls wxPropertyFormView::OnRevert, +which by default transfers the wxProperty values to the panel items (in effect +undoing any unsaved changes in the items). +\item {\bf update}: indicates the Revert button. Calls wxPropertyFormView::OnUpdate, which +by defaults transfers the displayed values to the wxProperty objects. +\end{itemize} + +\section{wxPropertySheet overview}\label{wxpropertysheetoverview} + +Classes: \helpref{wxPropertySheet}{wxpropertysheet}, \helpref{wxProperty}{wxproperty}, \helpref{wxPropertyValue}{wxpropertyvalue} + +A property sheet defines zero or more properties. This is a bit like an explicit representation of +a C++ object. wxProperty objects can have values which are pointers to C++ values, or they +can allocate their own storage for values. + +Because the property sheet representation is explicit and can be manipulated by +a program, it is a convenient form to be used for a variety of +editing purposes. wxPropertyListView and wxPropertyFormView are two classes that +specify the relationship between a property sheet and a user interface. You could imagine +other uses for wxPropertySheet, for example to generate a form-like user interface without +the need for GUI programming. Or for storing the names and values of command-line switches, with the +option to subsequently edit these values using a wxPropertyListView. + +A typical use for a property sheet is to represent values of an object +which are only implicit in the current representation of it. For +example, in Visual Basic and similar programming environments, you can +`edit a button', or rather, edit the button's properties. One of the +properties you can edit is {\it width} - but there is no explicit +representation of width in a wxWindows button; instead, you call SetSize +and GetSize members. To translate this into a consisent, +property-oriented scheme, we could derive a new class +wxButtonWithProperties, which has two new functions: SetProperty and +GetProperty. SetProperty accepts a property name and a value, and calls +an appropriate function for the property that is being passed. +GetProperty accepts a property name, returning a property value. So +instead of having to use the usual arbitrary set of C++ member functions +to set or access attributes of a window, programmer deals merely with +SetValue/GetValue, and property names and values. +We now have a single point at which we can modify or query an object by specifying +names and values at run-time. (The implementation of SetProperty and GetProperty +is probably quite messy and involves a large if-then-else statement to +test the property name and act accordingly.) + +When the user invokes the property editor for a wxButtonWithProperties, the system +creates a wxPropertySheet with `imaginary' properties such as width, height, font size +and so on. For each property, wxButtonWithProperties::GetProperty is called, and the result is +passed to the corresponding wxProperty. The wxPropertySheet is passed to a wxPropertyListView +as described elsewhere, and the user edits away. When the user has finished editing, the system calls +wxButtonWithProperties::SetProperty to transfer the wxProperty value back into the button +by way of an appropriate call, wxWindow::SetSize in the case of width and height properties. + +\end{comment} \ No newline at end of file diff --git a/utils/dialoged/docs/contents.gif b/utils/dialoged/docs/contents.gif new file mode 100644 index 0000000000000000000000000000000000000000..3dddfa3dd5f0c652e8b27cd6c29e1fdd49ced5a8 GIT binary patch literal 231 zcmVG0Pz3-zrVld=jU&4Z(9HWEC2ui06_p40008OjE||y?GK}z zO&EZ)-n{z{a)K3v=81;mmA0S4Fj_r^UyThZDG{h6k9m zHI_(7spd!5_$SH6m{RP?8g%v`FfLyzM^}KD0OaB3JT( zCl&anmc%SrXaEDPl~I|Z_fC(&$iNtpk$lmjm`TEJhyo%k)jjO4=f?j&&jF^kxcgy{ PbY7_X>Z|3R^1F!>`pH0Q literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/copysize.eps b/utils/dialoged/docs/copysize.eps new file mode 100644 index 0000000000..9f084995a2 --- /dev/null +++ b/utils/dialoged/docs/copysize.eps @@ -0,0 +1,161 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: copysize.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 254 389 270 404 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +254 389 translate + +% size of image (on paper, in 1/72inch coords) +16 15 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 9 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 ffff00 +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +16 15 8 % dimensions of data +[16 0 0 -15 0 15] % mapping matrix +rlecmapimage + +0f01 +090081010001000101 +810002060281000101018100010001 +810002060281000101018100010001 +8100020602820001000300 +810002060281000181010001000001 +090002018100010001 +0f01 +03018b000100010001000100010001 +0f01 +0301810001810100040082010001 +060181000202028100010101 +0301810001810100040082010001 +0f01 +03018b000100010001000100010001 + +% +% Compression made this file 21.11% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/copysize.gif b/utils/dialoged/docs/copysize.gif new file mode 100644 index 0000000000000000000000000000000000000000..72b6f08a396ed21df224ea5f33ccd6b28b91bb89 GIT binary patch literal 132 zcmZ?wbhEHb6ky3?MTYSPVa$@O;f^@w!_zB7uWRxUzFmWo3p(R)lqxEYI|?b?f!_zdJDhZTin0 QMavdyb$t2iA;@4200o&aL;wH) literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/dialog.bmp b/utils/dialoged/docs/dialog.bmp new file mode 100644 index 0000000000000000000000000000000000000000..889d6ad216daf67bbd6c1f5de4edb3a41a357bdb GIT binary patch literal 566 zcma)3!4bkB5ZpM6>DunWswjvKh$uRACn z)C+m8?6BAU)amp?BEW$d%S7c8DJ6su7|1%1v#dydvPF^Tj2`Hx1p;tb*h#$q;JL}q z)m_PVR=_+HoX|X5aKeAS&2Q_i`LT55t^UY+$oaM1H~+7kHyG-9N5iSyhlPjgt(^B7 L*XF7Oe7)BjDUh8X literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/dialog.eps b/utils/dialoged/docs/dialog.eps new file mode 100644 index 0000000000..63045c2465 --- /dev/null +++ b/utils/dialoged/docs/dialog.eps @@ -0,0 +1,174 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: dialog.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 254 375 282 403 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +254 375 translate + +% size of image (on paper, in 1/72inch coords) +28 28 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 15 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 bf0000 c0c0c0 808080 ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +28 28 8 % dimensions of data +[28 0 0 -28 0 28] % mapping matrix +rlecmapimage + +81030018000003 +8100041704810300 +82000402150201030000 +820004028102011101010201030000 +8200040294020100010001000100010001000100010001000102810203810300 +820004028102011001810002810203810300 +82000402820200020f02810002810203810300 +82000402820200020f02810002810203810300 +82000402820200028102000b000102810002810203810300 +820004028202000282020004090481000282020002810203810300 +820004028202000282020004090481000282020002810203810300 +820004028202000282020004090481000282020002810203810300 +82000402820200028102000b000102810002810203810300 +82000402820200020f02810002810203810300 +82000402820200020f02810002810203810300 +82000402820200020f02810002810203810300 +8200040283020002000500810200050082020002810203810300 +820004028402000200030303830002000303038300020002810203810300 +820004028402000200030303830002000303038300020002810203810300 +8200040283020002000500810200050082020002810203810300 +82000402820200020f02810002810203810300 +820004028102001100010201030000 +82000402150201030000 +82000402150201030000 +82000402150201030000 +8200040317030000 +81000318030000 +81030018000003 + +% +% Compression made this file 21.77% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/dialog.gif b/utils/dialoged/docs/dialog.gif new file mode 100644 index 0000000000000000000000000000000000000000..ae430e334576ccc77c788a042dccda4ff62bae84 GIT binary patch literal 233 zcmZ?wbhEHblwpuz*vtR|`@wiWnA#8I?caakz=4K_hW|kE{|x`Z6p#k8fI#sl3nK#q zCxZ@1C&&y2mT3Zwo~!qU?K`{s|6CRu_sn@2QA$dcECo8}Ki!(fIN^QO`S;s8yWQq6 zHZ8ssc+^HG(kXTF&pnn?CAz;b_{Pm$aBh>--@Ze$4KJCxE#Dq%X6D@(Jv~_DX7~Bo z--_zg8-gVK#N!KFb$Z+xdICDj{U!)anb4Qr+R@e$-&B@bvUt`4pRQ$ED^_Y0PF=rY SgYd>JTlyF8kQ8KKum%86jbd^D literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/dialoged.hpj b/utils/dialoged/docs/dialoged.hpj new file mode 100644 index 0000000000..a212f12137 --- /dev/null +++ b/utils/dialoged/docs/dialoged.hpj @@ -0,0 +1,17 @@ +[OPTIONS] +BMROOT=d:\wx2\utils\dialoged\docs ; Assume that bitmaps are where the source is +TITLE=Dialog Editor Manual +CONTENTS=Contents +COMPRESS=HIGH + +[FILES] +dialoged.rtf + +[CONFIG] +CreateButton("Up", "&Up", "JumpId(`dialoged.hlp', `Contents')") +BrowseButtons() + +[MAP] + +[BITMAPS] + diff --git a/utils/dialoged/docs/dialoged.tex b/utils/dialoged/docs/dialoged.tex new file mode 100644 index 0000000000..f750ddf9fa --- /dev/null +++ b/utils/dialoged/docs/dialoged.tex @@ -0,0 +1,61 @@ +\documentstyle[a4,makeidx,verbatim,texhelp,fancyhea,mysober,mytitle]{report} +\latexonly{\newcommand{\icon}[2]{\image{1cm;0cm}{#1}}} +\input psbox.tex +% Remove this for processing with dvi2ps instead of dvips +%\special{!/@scaleunit 1 def} +\parskip=10pt +\parindent=0pt +\title{User Manual for wxWindows Dialog Editor Version 1.7} +\winhelponly{\author{by Julian Smart, A.I. Applications Institute, University of Edinburgh\\}} +\winhelpignore{\author{Julian Smart\\Artificial Intelligence Applications Institute\\ +University of Edinburgh\\EH1 1HN} +\date{March 1997} +} +\makeindex +\begin{document} +\maketitle +\pagestyle{fancyplain} +\bibliographystyle{plain} +\setheader{{\it CONTENTS}}{}{}{}{}{{\it CONTENTS}} +\setfooter{\thepage}{}{}{}{}{\thepage}% +\pagenumbering{roman} +\tableofcontents + +\chapter*{Copyright notice} +\setheader{{\it COPYRIGHT}}{}{}{}{}{{\it COPYRIGHT}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% + +\begin{center} +Copyright (c) 1996 Artificial Intelligence Applications Institute, +The University of Edinburgh\\ +\end{center} + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose is hereby granted without fee, provided that the +above copyright notice, author statement and this permission notice appear in +all copies of this software and related documentation. + +THE SOFTWARE IS PROVIDED ``AS-IS'' AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, +IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF +MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +IN NO EVENT SHALL THE ARTIFICIAL INTELLIGENCE APPLICATIONS INSTITUTE OR THE +UNIVERSITY OF EDINBURGH BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF THE POSSIBILITY OF +DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH +THE USE OR PERFORMANCE OF THIS SOFTWARE. + +\input{body.tex} +\input{classes.tex} +\input{changes.tex} +\input{bugs.tex} +\input{tech.tex} + +\newpage + +\addcontentsline{toc}{chapter}{Index} +\setheader{{\it INDEX}}{}{}{}{}{{\it INDEX}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% +\printindex +\end{document} diff --git a/utils/dialoged/docs/forward.gif b/utils/dialoged/docs/forward.gif new file mode 100644 index 0000000000000000000000000000000000000000..9c81e8c92fed7fe851ce02e7854dc26a58eae9b2 GIT binary patch literal 164 zcmV;V09*e@Nk%v~VI=?<0Pz3-zrVld=jU&4Z(9HWEC2ui03`qz0007gjE||y?Z1Qp zwAzdF6*A}#V%!v#-{_g@)>Q-cu3}3Ku`2^Nfa3dZ+VyHW%gtsZ`jV7k@%j8Ij}~W) zc{NUP6)X3OWa^|{8nl?rh|gZ1@{(qofnsWu+nmFHSnaq>lB41zSVC9`a)_v*xHx0L S5h*!IS!o$ynW>ps0028gDN7ju literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/gauge.bmp b/utils/dialoged/docs/gauge.bmp new file mode 100644 index 0000000000000000000000000000000000000000..fbb625991598ecedfffe3836dc77a746fe1fadff GIT binary patch literal 566 zcmZ?rHDh7`gEAng0mL#;%*en37C*oUrmztE85n?wVgG&z1tft?h64uFfMnr-gMopg0|_)RFz_RBJ3#z$1gOBl2b;%UUJjFI6a<1H#0NUH fyd25B)aIjy4=hAs;f2BnMiLwV!yAYY02p5YXabu> literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/gauge.eps b/utils/dialoged/docs/gauge.eps new file mode 100644 index 0000000000..6966f30b35 --- /dev/null +++ b/utils/dialoged/docs/gauge.eps @@ -0,0 +1,174 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: gauge.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 254 375 282 403 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +254 375 translate + +% size of image (on paper, in 1/72inch coords) +28 28 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 15 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 bf0000 c0c0c0 808080 ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +28 28 8 % dimensions of data +[28 0 0 -28 0 28] % mapping matrix +rlecmapimage + +81030018000003 +8100041704810300 +82000402150201030000 +82000402150201030000 +8200040204020a00050201030000 +8200040204028100020702810002040201030000 +8200040204028100020702810002040201030000 +8200040204028100020702810002040201030000 +8200040204028100020702810002040201030000 +8200040204028100020702810002040201030000 +8200040204028100020702810002040201030000 +8200040204028100010701810002040201030000 +8200040204028100010701810002040201030000 +8200040204028100010701810002040201030000 +8200040204028100010701810002040201030000 +8200040204028100010701810002040201030000 +8200040204028100010701810002040201030000 +8200040204028100010701810002040201030000 +8200040204028100010701810002040201030000 +8200040204028100010701810002040201030000 +8200040204028100010701810002040201030000 +8200040204028100010701810002040201030000 +8200040204020a00050201030000 +82000402150201030000 +82000402150201030000 +8200040317030000 +81000318030000 +81030018000003 + +% +% Compression made this file 18.92% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/gauge.gif b/utils/dialoged/docs/gauge.gif new file mode 100644 index 0000000000000000000000000000000000000000..af79fe1aef58a40ea131f9d7c82201cf74ba1d0d GIT binary patch literal 212 zcmZ?wbhEHblwpuz*vtR|`@wiWnA#8I?caakz=4K_hW|kE{|x`Z6p#k8fI#sl3nK#q zCxZ@1C&&y2mPUa_&((Xw_MP4Re=duSd*-~1C?%zp`?Rcgs)sH8G=s^Y|Cz~Te^V32 za@!d0pIYmtX{7sFCJU|Hm634zsaOB4yzks=JCEN;;4JvIto*I+PN}@}o1guNtxb4+ vzcjtNpx!>!sgSWb&`h|&V1j?i#0d^M(`U?_HB)%@y!l2-y^AFU85pbq%(Ye; literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/group.bmp b/utils/dialoged/docs/group.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b202efd768eeb3272aaac915e20aa83f71fc59e8 GIT binary patch literal 566 zcmdr}$q~aK3|wb213x$50#ZQ=$UnX4W%IACoe^5uRg2q{}4o;!XOAPGqyw7LOxugNkn{t8s`T@y5s^$Oy literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/group.eps b/utils/dialoged/docs/group.eps new file mode 100644 index 0000000000..6a33b2efbf --- /dev/null +++ b/utils/dialoged/docs/group.eps @@ -0,0 +1,174 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: group.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 292 382 320 410 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +292 382 translate + +% size of image (on paper, in 1/72inch coords) +28 28 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 12 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 808080 ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +28 28 8 % dimensions of data +[28 0 0 -28 0 28] % mapping matrix +rlecmapimage + +81020018000002 +8100031703810200 +82000301150101020000 +82000301150101020000 +820003010301880001000100010001000100060101020000 +82000301040181000184010001000182010001060101020000 +820003018101008100018201000101018100018201000101010300010101020000 +82000301820100018401000100018201000181010001000301810001810102810200 +82000301820100010f01810001810102810200 +82000301820100010f01810001810102810200 +82000301820100010f01810001810102810200 +82000301820100010f01810001810102810200 +82000301820100010f01810001810102810200 +82000301820100010f01810001810102810200 +82000301820100010f01810001810102810200 +82000301820100010f01810001810102810200 +82000301820100010f01810001810102810200 +82000301820100010f01810001810102810200 +82000301820100010f01810001810102810200 +82000301820100010f01810001810102810200 +82000301820100010f01810001810102810200 +82000301820100010f01810001810102810200 +820003018101001100010101020000 +82000301150101020000 +82000301150101020000 +8200030217020000 +81000218020000 +81020018000002 + +% +% Compression made this file 20.15% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/group.gif b/utils/dialoged/docs/group.gif new file mode 100644 index 0000000000000000000000000000000000000000..683efa8ce76e52ad1ff596f50215dc884249a79b GIT binary patch literal 212 zcmZ?wbhEHblwpuz*vtR|`@wiWnA#8I?caakz=4K_hW|kE{|x`Z6p#k8fI#sl3nK#q zCxZ@1C&&y2mPUa_&((Xw_MP4Re=duSd*-~1C?%zp`?RcgsukS$VS6+;>;8cRFEg#T zE&J!c^C(emKDoH?s_>zJ{m;I?0n=6oJxh}m!lmnW!fU52#7s=YfRPLw z#(z`+HfnVtb3|*6sz$d)?>Z4Y`a~+Fh!QKL_)_s}36K9({}0KQlA;AjifpE4cworp Ka}Dl5-EslZsz8AN literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/help.eps b/utils/dialoged/docs/help.eps new file mode 100644 index 0000000000..965ae88d6b --- /dev/null +++ b/utils/dialoged/docs/help.eps @@ -0,0 +1,161 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: help.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 254 389 270 404 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +254 389 translate + +% size of image (on paper, in 1/72inch coords) +16 15 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 9 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 008080 c0c0c0 +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +16 15 8 % dimensions of data +[16 0 0 -15 0 15] % mapping matrix +rlecmapimage + +0f02 +040205000402 +0302810001030101000302 +02028100018101000100010101000202 +02028200010081000283020001008100020102 +02028200010083000200018101008100020102 +03020100820200018101008100020202 +05028100018101008100020302 +0502820001008100020402 +0502820001008100020402 +0502820001008100020402 +060201000602 +05028100018101008100020302 +05028100018101008100020302 +060202000502 + +% +% Compression made this file 24.03% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/help.gif b/utils/dialoged/docs/help.gif new file mode 100644 index 0000000000000000000000000000000000000000..ef1825ee190559c5a842f3dceef2ab9c8200f738 GIT binary patch literal 129 zcmZ?wbhEHb6ky3?MTYSoA)e@LbJmahtQ}`;BXok{mHlDoYZN&P#rM=-IKW+rB*8KIgs7TrCOd OTU`gI`U^2KSOWm-V=-+2 literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/horiz.bmp b/utils/dialoged/docs/horiz.bmp new file mode 100644 index 0000000000000000000000000000000000000000..58af34a727e24407124fed67899ae2071dea12e9 GIT binary patch literal 238 zcmaKjF%Ez*3r)SF8kLTs=5{{JE?DUYEK&^#0pxo{w%L C5KP+u literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/horiz.eps b/utils/dialoged/docs/horiz.eps new file mode 100644 index 0000000000..2c78311a5e --- /dev/null +++ b/utils/dialoged/docs/horiz.eps @@ -0,0 +1,161 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: horiz.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 254 389 270 404 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +254 389 translate + +% size of image (on paper, in 1/72inch coords) +16 15 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 9 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 ffff00 +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +16 15 8 % dimensions of data +[16 0 0 -15 0 15] % mapping matrix +rlecmapimage + +0f01 +050104000401 +050181000201028100010301 +050181000201028100010301 +050181000201028100010301 +050104000401 +0f01 +0f01 +02010a000101 +020181000207028100010001 +020181000207028100010001 +020181000207028100010001 +020181000207028100010001 +02010a000101 +0f01 + +% +% Compression made this file 16.11% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/horiz.gif b/utils/dialoged/docs/horiz.gif new file mode 100644 index 0000000000000000000000000000000000000000..12025ea84ea113351f6153e83f1cb66886673af5 GIT binary patch literal 126 zcmZ?wbhEHb6kyz2>j Km@t)t!5RPzXE4eD literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/listbox.bmp b/utils/dialoged/docs/listbox.bmp new file mode 100644 index 0000000000000000000000000000000000000000..07091ea9e3a502f87b9ef47334804012c616a71b GIT binary patch literal 566 zcmbtR!3~2j3_Pkz=GO%npc8a}{@JCk!qZQ-N;XT+1|S5vs~W@`03W#o%XKB+F*BKs&9Vz-=Wb(?h}dlg_8f x+%IlOuJtQxYZwGl=ePAmTfJBu`d9U`_b=yf{?F_ki~qm(anjF6%24dy>jRR>p!om* literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/listbox.eps b/utils/dialoged/docs/listbox.eps new file mode 100644 index 0000000000..97558a4cc0 --- /dev/null +++ b/utils/dialoged/docs/listbox.eps @@ -0,0 +1,174 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: listbox.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 292 382 320 410 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +292 382 translate + +% size of image (on paper, in 1/72inch coords) +28 28 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 12 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 808080 ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +28 28 8 % dimensions of data +[28 0 0 -28 0 28] % mapping matrix +rlecmapimage + +81020018000002 +8100031703810200 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +820003018101001100010101020000 +820003018201000109018100010301810001810102810200 +820003018201000109018100018201000182010001810102810200 +8200030183010001000500020182000100010082010001810102810200 +820003018201000109018100010301810001810102810200 +820003018201000109018100010301810001810102810200 +82000301830100010007008101000500010101020000 +820003018201000109018100010301810001810102810200 +820003018201000109018100010301810001810102810200 +8200030183010001000600010182000100010082010001810102810200 +820003018201000109018100018201000182010001810102810200 +820003018201000109018100010301810001810102810200 +820003018101001100010101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +8200030217020000 +81000218020000 +81020018000002 + +% +% Compression made this file 5.09% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/listbox.gif b/utils/dialoged/docs/listbox.gif new file mode 100644 index 0000000000000000000000000000000000000000..04b4b2cc5b9ea3a56271485243997170e29ed819 GIT binary patch literal 213 zcmZ?wbhEHblwpuz*vtR|`@wiWnA#8I?caakz=4K_hW|kE{|x`Z6p#k8fI#sl3nK#q zCxZ@1C&&y2mL`El&((Xw_MP4Re=duSd*-~1C?%zp`?Rcg7VOu6V>c>rq7r;Yo_q*dGn2wIu?s?2r@8O0|4{6SLgr$ literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/load.bmp b/utils/dialoged/docs/load.bmp new file mode 100644 index 0000000000000000000000000000000000000000..1c38e97b59dac5b7dcb3d4ac14a31fe36d3fbc6e GIT binary patch literal 238 zcmZvVF%m){3`Ez_nP2KLES>QN_TFVHvE)eH08ZrCQ{W?L=aStGNg%iTOA8O|3{UU~ zcRHZbGxVQiiBQhVP*Szl@Yxs<8e?XVGfPPN!qmmh`zzRz%k)d~SOwQraPKkc3JUWb WyzyG%ebUB{{{0*7WXGE5t%V;V>_w>n literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/load.eps b/utils/dialoged/docs/load.eps new file mode 100644 index 0000000000..b5cd5288df --- /dev/null +++ b/utils/dialoged/docs/load.eps @@ -0,0 +1,161 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: load.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 254 389 270 404 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +254 389 translate + +% size of image (on paper, in 1/72inch coords) +16 15 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 15 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 808000 c0c0c0 ffff00 ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +16 15 8 % dimensions of data +[16 0 0 -15 0 15] % mapping matrix +rlecmapimage + +0f02 +090202000202 +0802810002010282000200 +0d020100 +0102020007020200 +8502000304030005000302 +8c020004030403040304030400020202 +8c020003040304030403040300020202 +86020004030403000800 +860200030403000107010000 +82020004820400010701810002 +84020003000107018100020002 +81020081000107018100020102 +81020009000302 +0f02 + +% +% Compression made this file 20.00% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/load.gif b/utils/dialoged/docs/load.gif new file mode 100644 index 0000000000000000000000000000000000000000..1ae4cecc50dc6c3733f86274f0591d49611e704d GIT binary patch literal 139 zcmZ?wbhEHb6ky3?MTYSS&uA@LauCA>QWTM`^aS1+I0cH&4)6wl6cv%YkS0XZFo|!XGy;2zXI# Y!*KXX##EVUM!rf*k8?-z3o=*(0HH@RhX4Qo literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/message.bmp b/utils/dialoged/docs/message.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8861e7c3e1b0371f5155693083a397046bfdd72c GIT binary patch literal 566 zcmb`Ey%ED8427R_zKgpokO4A*2S}e?s3Mn?-U>D&PvZCN6e%K0f=>b=%=5KgVDhGa z(C)=1%odN64PRUUs0bks^qeBb2=6@;$rLH+jK)txbee6l0Lwmz2W|uI%F<=~3p-p{ zl08VN2R%Wfgq!FH|YIj P`jPoaP58g5UHD!fw->UN literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/message.eps b/utils/dialoged/docs/message.eps new file mode 100644 index 0000000000..bb4717a4c4 --- /dev/null +++ b/utils/dialoged/docs/message.eps @@ -0,0 +1,174 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: message.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 254 375 282 403 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +254 375 translate + +% size of image (on paper, in 1/72inch coords) +28 28 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 12 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 808080 ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +28 28 8 % dimensions of data +[28 0 0 -28 0 28] % mapping matrix +rlecmapimage + +81020018000002 +8100031703810200 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +820003010901810001090101020000 +8200030108010200090101020000 +8200030108010200090101020000 +820003010701820001000100080101020000 +820003010701820001000100080101020000 +82000301060181000101010200070101020000 +82000301060181000101010200070101020000 +82000301050181000103010200060101020000 +8200030105010800060101020000 +82000301040181000105010200050101020000 +82000301040181000105010200050101020000 +82000301030181000107010200040101020000 +820003010201010008010300030101020000 +820003010101030006010500020101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +8200030217020000 +81000218020000 +81020018000002 + +% +% Compression made this file 15.73% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/message.gif b/utils/dialoged/docs/message.gif new file mode 100644 index 0000000000000000000000000000000000000000..54975c536ba6da9cb580b9ef5480b1eca90b3d17 GIT binary patch literal 208 zcmZ?wbhEHblwpuz*vtR|`@wiWnA#8I?caakz=4K_hW|kE{|x`Z6p#k8fI#sl3nK#q zCxZ@1C&&y2mRf;E&((Xw_MP4Re=duSd*-~1C?%zp`?Rcg7VOJDBt3p*H*W{LPo|*31uk rF-L6}bzgw}O$f0Xc!q@44_<5}YKTWq7@x7bJWb zAN2d?6Rs&ArnDRc576L!UKqJW2m#JH7Gg5Qs5?3zO)+S-UIRCJ@lO7UB9qSy)rNNEg%0^ W$H_Q%UVFDr%=6|Y6_C>^cwc`vj;iJW literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/mtext.eps b/utils/dialoged/docs/mtext.eps new file mode 100644 index 0000000000..557442ae7a --- /dev/null +++ b/utils/dialoged/docs/mtext.eps @@ -0,0 +1,174 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: mtext.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 254 375 282 403 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +254 375 translate + +% size of image (on paper, in 1/72inch coords) +28 28 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 12 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 808080 ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +28 28 8 % dimensions of data +[28 0 0 -28 0 28] % mapping matrix +rlecmapimage + +81020018000002 +8100031703810200 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +820003018101001200810102810200 +820003018201000105018100010601010382000102810200 +82000301820100010101010001018100010601010382000102810200 +8200030182010001020181000181010002000401010282000102810200 +820003018201000181010001000101810001820100010301010282000102810200 +820003018201000184010001000182010001820100010301010282000102810200 +8200030182010001810100010081010003000401010282000102810200 +82000301820100010e01010282000102810200 +820003018201000108018100010301010282000102810200 +820003018201000108018100010301010282000102810200 +82000301820100018101000100010103000401010282000102810200 +8200030182010001820100010201810001820100010301010282000102810200 +8200030182010001820100010201810001820100010301010282000102810200 +82000301820100018101000100010104000301010382000102810200 +82000301820100010e01010382000102810200 +820003018101001200810102810200 +82000301150101020000 +82000301150101020000 +82000301150101020000 +8200030217020000 +81000218020000 +81020018000002 + +% +% Compression made this file 22.07% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/mtext.gif b/utils/dialoged/docs/mtext.gif new file mode 100644 index 0000000000000000000000000000000000000000..c1be4008168b8410f40996b4781b96296d009a6e GIT binary patch literal 229 zcmZ?wbhEHblwpuz*vtR|`@wiWnA#8I?caakz=4K_hW|kE{|x`Z6p#k8fI#sl3nK#q zCxZ@1C&&y2mPrDQo~!qU?K`{s|6CRu_sn@2QA$cH_i0)0EZDoPOs`+{S#b0l4tjP;1(ew=nJ8j|<6WY3bU0`GK9aK^RUId`!4(ELX-1{H u>6c`QQqJ8_T9s0iQsQ8(Wab^@`3kuPA_p->w)Xt4Pkz>06 literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/new.eps b/utils/dialoged/docs/new.eps new file mode 100644 index 0000000000..7c9a949c37 --- /dev/null +++ b/utils/dialoged/docs/new.eps @@ -0,0 +1,161 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: new.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 254 389 270 404 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +254 389 translate + +% size of image (on paper, in 1/72inch coords) +16 15 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 9 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +16 15 8 % dimensions of data +[16 0 0 -15 0 15] % mapping matrix +rlecmapimage + +0f01 +020107000401 +0201810002040201000301 +0201810002040283000200010101 +0201810002040203000101 +020181000207028100010001 +020181000207028100010001 +020181000207028100010001 +020181000207028100010001 +020181000207028100010001 +020181000207028100010001 +020181000207028100010001 +020181000207028100010001 +02010a000101 +0f01 + +% +% Compression made this file 20.56% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/new.gif b/utils/dialoged/docs/new.gif new file mode 100644 index 0000000000000000000000000000000000000000..3b1fd4c6db0dcd3fdb8cc5ca8f65ec5adc6b8a49 GIT binary patch literal 131 zcmZ?wbhEHb6kyU;Y8lYM*r^eTR= P?3lHrr|n@COPlx1CCxq%2v|e!MYp%AVpwyo(EN zQs9;PPb#2`TBk`BqO}HhS0VBuVnm|ONJ;DiDi6K56=5~@f>PWVGr{Pi;2e#DJfiFW U&wKV8R!!u0ZaR(3HCdYrFBZyA>Hq)$ literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/open.eps b/utils/dialoged/docs/open.eps new file mode 100644 index 0000000000..f8b500faaa --- /dev/null +++ b/utils/dialoged/docs/open.eps @@ -0,0 +1,161 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: open.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 254 389 270 404 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +254 389 translate + +% size of image (on paper, in 1/72inch coords) +16 15 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 12 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 808080 ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +16 15 8 % dimensions of data +[16 0 0 -15 0 15] % mapping matrix +rlecmapimage + +0f01 +090102000201 +0801810001010182000100 +0d010100 +0101020007010200 +82010003010306000301 +8201000307038100010201 +8201000307038100010201 +8201000302030900 +82010003010381000207020000 +82010003820300020702810001 +84010003000281020081000203028100010001 +81010081000207028100010101 +81010009000301 +0f01 + +% +% Compression made this file 19.17% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/open.gif b/utils/dialoged/docs/open.gif new file mode 100644 index 0000000000000000000000000000000000000000..9f2e6503db47148e9ccff302a04f62ad32e70f61 GIT binary patch literal 137 zcmZ?wbhEHb6kyS8UQRsGm`)S literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/picture.bmp b/utils/dialoged/docs/picture.bmp new file mode 100644 index 0000000000000000000000000000000000000000..00603f0280f64023adf543fcee28f2677e9a7726 GIT binary patch literal 566 zcmbVJ!4bkB5ZpM!)cVGtQ#UTPGCl}MmVY^Elw+Kr_CKc5SUN&{mKH)XSKaX2)sn!Z?>{^&6{krmGeHu YCg097toi%zZKm;0|BsI}5b^b1Z-w8Od;kCd literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/picture.eps b/utils/dialoged/docs/picture.eps new file mode 100644 index 0000000000..981b2fe478 --- /dev/null +++ b/utils/dialoged/docs/picture.eps @@ -0,0 +1,176 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: picture.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 254 375 282 403 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +254 375 translate + +% size of image (on paper, in 1/72inch coords) +28 28 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 12 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 808080 ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +28 28 8 % dimensions of data +[28 0 0 -28 0 28] % mapping matrix +rlecmapimage + +81020018000002 +8100031703810200 +82000301150101020000 +82000301150101020000 +82000301150101020000 +820003018101001100010101020000 +82000301820100010f01810001810102810200 +82000301820100010201810001040102000201810001810102810200 +8200030182010001010183000100010201810001010181000182010001810102810200 +820003018201000181010083000100010201810001010181000182010001810102810200 + +82000301880100010001000100010201810001010181000182010001810102810200 +82000301870100010001000100810001020102000201810001810102810200 +820003018a01000100010001000100010701810001810102810200 +8200030182010001820100018401000100010701810001810102810200 +8200030181010002000101820001000900010101020000 +82000301820100010101810001820100010801810001810102810200 +820003018201000101018300010001810100810001810100810001010181000181010281 +0200 +8200030182010001010185000100010001820100010401810001810102810200 +8200030182010001810100020081010003000101010082010001810102810200 +82000301830100010001000c01810001810102810200 +820003018101001100010101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +8200030217020000 +81000218020000 +81020018000002 + +% +% Compression made this file 23.43% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/picture.gif b/utils/dialoged/docs/picture.gif new file mode 100644 index 0000000000000000000000000000000000000000..05b19aef459d1796f530f01177f55f80460d83cf GIT binary patch literal 224 zcmZ?wbhEHblwpuz*vtR|`@wiWnA#8I?caakz=4K_hW|kE{|x`Z6p#k8fI#sl3nK#q zCxZ@1C&&y2mR^BI&((Xw_MP4Re=duSd*-~1C?%zp`?Rcg7VO=ox-9(roZFfX`Cp7V z14SNRD7E33?U(vRLD^6J@}tt9)oGiLCr_2Eb((y%aQh$EqU~>{OFVa(UH(38huQbW z^@&xLUU9j>Sq%|lmaQG-4(%n@lk+F&cT6)ZnW;Hrj(W1rqQy&=E)ia~a+Q(NF-L6}hDJRw9fH1=6KILQbB@6YQ7!}uSD4J4)v}vzW$W6m_nscq^O5O<%-&>q|7$I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 12 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 808080 ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +28 28 8 % dimensions of data +[28 0 0 -28 0 28] % mapping matrix +rlecmapimage + +81020018000002 +8100031703810200 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +8200030107010400080101020000 +820003010501010004010100060101020000 +8200030104018100010701810001040101020000 +8200030103018100010901810001030101020000 +820003010301810001020102000301810001030101020000 +820003010201810001020104000301810001020101020000 +820003010201810001010106000201810001020101020000 +820003010201810001010106000201810001020101020000 +820003010201810001010106000201810001020101020000 +820003010201810001020104000301810001020101020000 +820003010301810001020102000301810001030101020000 +8200030103018100010901810001030101020000 +8200030104018100010701810001040101020000 +820003010501010004010100060101020000 +8200030107010400080101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +8200030217020000 +81000218020000 +81020018000002 + +% +% Compression made this file 18.24% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/radio.gif b/utils/dialoged/docs/radio.gif new file mode 100644 index 0000000000000000000000000000000000000000..90ed06ce312f2a725561f6b88267967f894a4b33 GIT binary patch literal 215 zcmZ?wbhEHblwpuz*vtR|`@wiWnA#8I?caakz=4K_hW|kE{|x`Z6p#k8fI#sl3nK#q zCxZ@1C&&y2mKK3V&((Xw_MP4Re=duSd*-~1C?%zp`?Rcg7VOoo%#!oTXt_Z&THTzUIjq4mvYu&7Lz`cfFkOK&AjlojM7)f##6|H&sLz0aQ}KG*?w_=1a8 zRQjeqNs}nGHVvg!?_KWBVq|HI=pZK|q%s357h1PxSLBJg*JZ^kAph&Un|rg8-^k)t F;0F1cIhX(d literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/save.eps b/utils/dialoged/docs/save.eps new file mode 100644 index 0000000000..1019aeb244 --- /dev/null +++ b/utils/dialoged/docs/save.eps @@ -0,0 +1,161 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: save.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 254 389 270 404 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +254 389 translate + +% size of image (on paper, in 1/72inch coords) +16 15 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 9 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 808080 +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +16 15 8 % dimensions of data +[16 0 0 -15 0 15] % mapping matrix +rlecmapimage + +0f01 +8101000c000001 +84010002000106018300010001 +840100020001060102000001 +84010002000106018300020001 +84010002000106018300020001 +84010002000106018300020001 +84010002000106018300020001 +8201000281020006000102810001 +820100020a02810001 +82010002810200070082020001 +82010002810200040001018300020001 +82010002810200040001018300020001 +82010002810200040001018300020001 +01010c000001 + +% +% Compression made this file 24.44% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/save.gif b/utils/dialoged/docs/save.gif new file mode 100644 index 0000000000000000000000000000000000000000..3a031950e5338cbfda1d777259ea626ffd58d543 GIT binary patch literal 137 zcmZ?wbhEHb6ky3BlP6Di1)Y)E#R6o-%FDyKuUEYbBUZYVvID321=0?lS8&h;x;(I?E@mP400D8IzD%3-+lwV t-^+WIuCx`Obod_D2cT(GZLfSeI-dXY-syk69O0IFut^Q9H=~37`U0j9uPOil literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/scroll.eps b/utils/dialoged/docs/scroll.eps new file mode 100644 index 0000000000..cae1e34614 --- /dev/null +++ b/utils/dialoged/docs/scroll.eps @@ -0,0 +1,174 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: scroll.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 254 375 282 403 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +254 375 translate + +% size of image (on paper, in 1/72inch coords) +28 28 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 12 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 808080 ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +28 28 8 % dimensions of data +[28 0 0 -28 0 28] % mapping matrix +rlecmapimage + +81020018000002 +8100031703810200 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +83000301001300810102810200 +8400030100010701810001070182000102810200 +8400030100010701810001070182000102810200 +840003010001020181000102018100010201810001020182000102810200 +8400030100010101030001018100018101000200020182000102810200 +840003010001810100030001018100018101000300010182000102810200 +8400030100010101030001018100018101000200020182000102810200 +840003010001020181000102018100010201810001020182000102810200 +8400030100010701810001070182000102810200 +8400030100010701810001070182000102810200 +83000301001300810102810200 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +8200030217020000 +81000218020000 +81020018000002 + +% +% Compression made this file 17.47% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/scroll.gif b/utils/dialoged/docs/scroll.gif new file mode 100644 index 0000000000000000000000000000000000000000..fca1d06ccbc91a60915992887ea7fec24987908e GIT binary patch literal 212 zcmZ?wbhEHblwpuz*vtR|`@wiWnA#8I?caakz=4K_hW|kE{|x`Z6p#k8fI#sl3nK#q zCxZ@1C&&y2mPUa_&((Xw_MP4Re=duSd*-~1C?%zp`?Rcg7VOev~4eg-Mc)XF$zY2&&6TJqMAheeuduXKL0PM#e5$v7u%+12QL3+s6E>9;nDY&~z+ v-H>GCsPEC@l-#b_)}`LlYu-6wqO#7k=`&`|5S}%6o{>`HA_fjY1_o;YmupkI literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/slider.bmp b/utils/dialoged/docs/slider.bmp new file mode 100644 index 0000000000000000000000000000000000000000..884166a2fcb7194be9354247ec6c909238c151ba GIT binary patch literal 566 zcmb_Z!41P847^m8nqL>_0G%KM^xs|lDtY?JSZqelh60t4s!F|Jo8!*7{)Sw)3{~QhrH~{1+ Bv5^1( literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/slider.eps b/utils/dialoged/docs/slider.eps new file mode 100644 index 0000000000..02b1d5a608 --- /dev/null +++ b/utils/dialoged/docs/slider.eps @@ -0,0 +1,174 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: slider.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 254 375 282 403 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +254 375 translate + +% size of image (on paper, in 1/72inch coords) +28 28 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 12 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 808080 ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +28 28 8 % dimensions of data +[28 0 0 -28 0 28] % mapping matrix +rlecmapimage + +81020018000002 +8100031703810200 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +83000301008100010b0101008101000100810102810200 +82000301820100010c018600010001000102810200 +82000301820100010c018600010001000102810200 +830003010001000b010500810102810200 +82000301150101020000 +83000301001300810102810200 +840003010001020101020c0181000201020000 +840003010001020101000c0181000201020000 +840003010001020101000c0181000201020000 +840003010001020101020c0181000201020000 +8300030100130002020000 +8200030181010215020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +8200030217020000 +81000218020000 +81020018000002 + +% +% Compression made this file 14.88% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/slider.gif b/utils/dialoged/docs/slider.gif new file mode 100644 index 0000000000000000000000000000000000000000..701aa1704ff3f98fb90278affc42206d787d3baf GIT binary patch literal 204 zcmZ?wbhEHblwpuz*vtR|4Pe{=rW$~}hK2(N4m310{0EBvXZR1MfHaT=1d2ad7#SEi z8FYY>Koevb7+5L=8a-F<4cm8i_y4&pHtw18GNP1}R_@cX-dV7BTbW+}&b^oSO5|Nq z4&vJ{q_87LsjxlO(92gYclvW3j?GE?#B}|uv^TY>C-D{Bo3uDz;&xTi%)Jk4W`DQ& o{lB5wA*M8-MZ>ebqpiz4x>wD`tL4&l{|T7E7**loj?FpRSw&5oUshN-p>mRAI1m$ zzWao$?Wf76A0YxX#JEk2Tq31}5CVm4hMaXp=g=(%RV!v-UK<49*3ebCKd_wQwK}$Z zR|-harEmdgzH)eo<0$&b#r3-9`M>#aU48Z=Y^v5j!SxDlzH-0!H{RDY3+LWz$mb_j K@V#jV_+MWuNTSsM literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/text.eps b/utils/dialoged/docs/text.eps new file mode 100644 index 0000000000..e79fe4d8e0 --- /dev/null +++ b/utils/dialoged/docs/text.eps @@ -0,0 +1,178 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: text.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 254 375 282 403 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +254 375 translate + +% size of image (on paper, in 1/72inch coords) +28 28 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 12 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 808080 ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +28 28 8 % dimensions of data +[28 0 0 -28 0 28] % mapping matrix +rlecmapimage + +81020018000002 +8100031703810200 +82000301150101020000 +82000301150101020000 +82000301150101020000 +82000301150101020000 +820003018101001200810102810200 +8200030182010001100182000102810200 +82000301820100010e01840001000102810200 +8200030182010001060101000501840001000102810200 +8200030182010001060101000501840001000102810200 +8200030182010001060101000501840001000102810200 +82000301820100018101000200010104000201840001000102810200 +820003018301000100810001810100820001008100018101008100018501000100010281 +0200 +82000301820100010101030081010081000181010081000185010001000102810200 +820003018201000181010082000100820001008100018101008100018501000100010281 +0200 +820003018301000100810001810100820001008100018101008100018501000100010281 +0200 +820003018301000100810001810100820001008100018101008100018501000100010281 +0200 +8200030182010001810100030081010003000201840001000102810200 +82000301820100010e01840001000102810200 +8200030182010001100182000102810200 +820003018101001200810102810200 +82000301150101020000 +82000301150101020000 +82000301150101020000 +8200030217020000 +81000218020000 +81020018000002 + +% +% Compression made this file 22.15% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/text.gif b/utils/dialoged/docs/text.gif new file mode 100644 index 0000000000000000000000000000000000000000..58b51dd161ba0083fba8fe037e32d237ad24a841 GIT binary patch literal 226 zcmZ?wbhEHblwpuz*vtR|`@wiWnA#8I?caakz=4K_hW|kE{|x`Z6p#k8fI#sl3nK#q zCxZ@1C&&y2mVSXo&((Xw_MP4Re=duSd*-~1C?%zp`?Rcg7VOn`tT~*YxH*NCS$WNXxL$@T#g?i=fo*7y=T_^SS_ORmHe67VZ zYa6Pv3$vQ48xvZc(^4I}>b)jZPV%g`pV2+l&~LVS%se$Goh3_`EngJQ3^NiE0|T7F9qjzl2^cf>9QF?FMZ8d)1PO#h65C0vwDWSpW2H>QNDM@S zmJIC1PUI function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 12 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 808080 ffff00 +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +16 15 8 % dimensions of data +[16 0 0 -15 0 15] % mapping matrix +rlecmapimage + +81010005000701 +8201000203028100010601 +82010002030205000201 +82010002030281000302038100010101 +82010002030281000302038100010101 +82010002030281000302038100010101 +810100050003038100010101 +030181000302030600 +0301810003020381000203020000 +0301810003020381000203020000 +0301050004020000 +080181000203020000 +080181000203020000 +08010600 +0f01 + +% +% Compression made this file 21.81% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/toback.gif b/utils/dialoged/docs/toback.gif new file mode 100644 index 0000000000000000000000000000000000000000..82a4ad88ea1e5ffd9dcc9655bfa944ce115239c4 GIT binary patch literal 137 zcmZ?wbhEHb6ky6kZt2!7MtO0PbHJ<I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 12 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 808080 ffff00 +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +16 15 8 % dimensions of data +[16 0 0 -15 0 15] % mapping matrix +rlecmapimage + +81010005000701 +8201000203028100010601 +8201000281020007000201 +820100028202000305038100010101 +820100028202000305038100010101 +820100028202000305038100010101 +810100020006038100010101 +030181000305030300 +03018100030503810002810200 +03018100030503810002810200 +0301080001020000 +080181000203020000 +080181000203020000 +08010600 +0f01 + +% +% Compression made this file 21.25% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/tofront.gif b/utils/dialoged/docs/tofront.gif new file mode 100644 index 0000000000000000000000000000000000000000..ff09220da3e1912f64891777c0cef2e7c16e8bfa GIT binary patch literal 137 zcmZ?wbhEHb6ky||iD1^^@aGQ0o) literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/up.gif b/utils/dialoged/docs/up.gif new file mode 100644 index 0000000000000000000000000000000000000000..316d0d2a14b571bea2eb874efd04bfe509f53b34 GIT binary patch literal 137 zcmV;40CxXJNk%v~VHyA!0Pz3-zrVld=jU&4Z(9HWEC2ui02%-o0007FjE||ytzv+j zv|1owxcuhWh0?c)Avq0}dTQw^q7qBdoDA6WKJ*l>%gtCeAWZlgxpoy|ZDMRPr_m>p rx}08pS4?)u<%PWJQ30?Ld;pCXxv6~fs8i2~vH|E+&J(|oGdii}_YJ!sUz z((YWzGDEE-(MqWb%&45RLI?!KTcy|pcxFM{N3r657vo{E>4N2o^{e;ZbNANgU-K?u CAW)M4 literal 0 HcmV?d00001 diff --git a/utils/dialoged/docs/vert.eps b/utils/dialoged/docs/vert.eps new file mode 100644 index 0000000000..0375e76e5e --- /dev/null +++ b/utils/dialoged/docs/vert.eps @@ -0,0 +1,161 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: vert.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 254 389 270 404 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +254 389 translate + +% size of image (on paper, in 1/72inch coords) +16 15 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 9 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 c0c0c0 ffff00 +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +16 15 8 % dimensions of data +[16 0 0 -15 0 15] % mapping matrix +rlecmapimage + +0f01 +07010700 +070181000204020000 +070181000204020000 +8101000300010181000204020000 +8201000201028100018201000204020000 +8201000201028100018201000204020000 +8201000201028100018201000204020000 +8201000201028100018201000204020000 +8101000300010181000204020000 +070181000204020000 +070181000204020000 +07010700 +0f01 +0f01 + +% +% Compression made this file 20.28% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/dialoged/docs/vert.gif b/utils/dialoged/docs/vert.gif new file mode 100644 index 0000000000000000000000000000000000000000..7992f4c40ae3a04ec954ced9578651d4877d0620 GIT binary patch literal 131 zcmZ?wbhEHb6ky~$-n{z{YJwGn=81mem9{RpmcUHc_KoNIPRH~B4DyD9p%LJl6@Sa4^Epcbno6kk zD5XxT&EQg7>t<(Iwfoo literal 0 HcmV?d00001 diff --git a/utils/wxprop/docs/body.tex b/utils/wxprop/docs/body.tex new file mode 100644 index 0000000000..1a03a2533e --- /dev/null +++ b/utils/wxprop/docs/body.tex @@ -0,0 +1,106 @@ +\chapter{Introduction}\label{introduction} +\pagenumbering{arabic}% +\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% + +The Property Sheet Classes help the programmer to specify complex dialogs and +their relationship with their associated data. By specifying data as a +wxPropertySheet containing wxProperty objects, the programmer can use +a range of available or custom wxPropertyView classes to allow the user to +edit this data. Classes derived from wxPropertyView act as mediators between the +wxPropertySheet and the actual window (and associated panel items). + +For example, the wxPropertyListView is a kind of wxPropertyView which displays +data in a Visual Basic-style property list (see \helpref{the next section}{appearance} for +screen shots). This is a listbox containing names and values, with +an edit control and other optional controls via which the user edits the selected +data item. + +wxPropertyFormView is another kind of wxPropertyView which mediates between +the data and a panel or dialog box which has already been created. This makes it a contender for +the replacement of wxForm, since programmer-controlled layout is going to be much more +satisfactory. If automatic layout is desired, then wxPropertyListView could be used instead. + +The main intention of this class library was to provide property {\it list} behaviour, but +it has been generalised as much as possible so that the concept of a property sheet and its viewers +can reduce programming effort in a range of user interface tasks. + +For further details on the classes and how they are used, please see \helpref{Property classes overview}{propertyoverview}. + +\section{The appearance and behaviour of a property list view}\label{appearance} + +The property list, as seen in an increasing number of development tools +such as Visual Basic and Delphi, is a convenient and compact method for +displaying and editing a number of items without the need for one +control per item, and without the need for designing a special form. The +controls are as follows: + +\begin{itemize}\itemsep=0pt +\item A listbox showing the properties and their current values, which has double-click +properties dependent on the nature of the current property; +\item a text editing area at the top of the display, allowing the user to edit +the currently selected property if appropriate; +\item `confirm' and `cancel' buttons to confirm or cancel an edit (for the property, not the +whole sheet); +\item an optional list that appears when the user can make a choice from several known possible values; +\item a small Edit button to invoke `detailed editing' (perhaps showing or hiding the above value list, or +maybe invoking a common dialog); +\item optional OK/Close, Cancel and Help buttons for the whole dialog. +\end{itemize} + +The concept of `detailed editing' versus quick editing gives the user a choice +of editing mode, so novice and expert behaviour can be catered for, or the user can just +use what he feels comfortable with. + +Behaviour alters depending on the kind of property being edited. For example, a boolean value has +the following behaviour: + +\begin{itemize}\itemsep=0pt +\item Double-clicking on the item toggles between TRUE and FALSE. +\item Showing the value list enables the user to select TRUE or FALSE. +\item The user may be able to type in the word TRUE or FALSE, or the edit control +may be read-only to disallow this since it is error-prone. +\end{itemize} + +A list of strings may pop up a dialog for editing them, a simple string just allows text editing, +double-clicking a colour property may show a colour selector, double-clicking on a filename property may +show a file selector (in addition to being able to type in the name in the edit control), etc. + +Note that the `type' of property, such as string or integer, does not +necessarily determine the behaviour of the property. The programmer has +to be able to specify different behaviours for the same type, depending +on the meaning of the property. For example, a colour and a filename may +both be strings, but their editing behaviour should be different. This +is why objects of type wxPropertyValidator need to be used, to define +behaviour for a given class of properties or even specific property +name. Objects of class wxPropertyView contain a list of property +registries, which enable reuse of bunches of these validators in +different circumstances. Or a wxProperty can be explicitly set to use a +particular validator object. + +The following screen shot of the property classes test program shows the +user editing a string, which is constrained to be one of three possible +values. + +$$\image{8cm;0cm}{prop1.eps}$$\\ + +The second picture shows the user having entered a integer that +was outside the range specified to the validator. Note that in this picture, +the value list is hidden because it is not used when editing an integer. + +$$\image{8cm;0cm}{prop2.eps}$$ + +\chapter{Files}\label{files} +\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% + +The property class library comprises the following files: + +\begin{itemize}\itemsep=0pt +\item wx\_prop.h: base property class header +\item wx\_plist.h: wxPropertyListView and associated classes +\item wx\_pform.h: wxPropertyListView and associated classes +\item wx\_prop.cc: base property class implementation +\item wx\_plist.cc: wxPropertyListView and associated class implementions +\item wx\_pform.cc: wxPropertyFormView and associated class implementions +\end{itemize} diff --git a/utils/wxprop/docs/books.bmp b/utils/wxprop/docs/books.bmp new file mode 100644 index 0000000000000000000000000000000000000000..cf1e148734c807052ec6359ad2eb1a3e8d43d43d GIT binary patch literal 1222 zcmb7?v2KGf5Qg0-f^PH?BCA8E<{c_a$x@Y}nZr;qXR5NnfE2boQZn^-S4x_%j?%%`Rfz!C$uHnGuoYEAr~D;JxHUzQYZhY(}{X$xY0SE&#JC# z5a%D|9QDv}6Qc3-Wv8+GlQ-*8<`8epNC>=NSLPUH1b$st*H{R=IXD*!fgA8x5Dt6l zUCo=!AsqI8={C$E9QGLr_q_i zFK;h=LxQhf>;v~gWIyoy(Zu$`w=UNZZuYl$t>-8&*n94Z?RTzqLWjlGhdMVK;w1@P zgX#l^|MHTQ1q9k0=J>%Sz9`L#Hix;bEVz#^(qoBse!qj(7b literal 0 HcmV?d00001 diff --git a/utils/wxprop/docs/books.gif b/utils/wxprop/docs/books.gif new file mode 100644 index 0000000000000000000000000000000000000000..a9a1e46844cb79b3a787ae9bb3e6e2d508bf03df GIT binary patch literal 438 zcmZ?wbhEHb)MwCR*vtR|`@wiWnA#8I?caakz=4K_hW|kE{|x`Z6p#k8fItVN1Ekl1 z<==-Bo~!p-yyo5|&a|OdBw-F)fK3h~M^48wm$P>4L6awSt};FJ_To-P0XGMs<;ov4 ztd2A;T@tqP#KXm!wQ-9sM_u`FGQKNQi?-84<=I2%h)`tYU$o^#sQZ1k`! zKE^lWdIOi}l1)t}Syx+_f~s;?oDtlyN%L%HQ2X>XLEHTv1+nE^UFm!x$w>R%`8~dA Y?R$Q+m%X#+np$@6?&;|+EDQ|R0RNK1DF6Tf literal 0 HcmV?d00001 diff --git a/utils/wxprop/docs/bullet.bmp b/utils/wxprop/docs/bullet.bmp new file mode 100644 index 0000000000000000000000000000000000000000..aad8fc793edd54ffb5910e67b2470659c95448b7 GIT binary patch literal 138 zcmZumxe>rH2vhFtK1GJ`9PYi2Yw9con_&SdBlI1b>qTKR2Gu`ZXgNITWj7;KP=JJL V1)UXU1`*-lNw`O&c<~DR!2u5s7-j$f literal 0 HcmV?d00001 diff --git a/utils/wxprop/docs/changes.tex b/utils/wxprop/docs/changes.tex new file mode 100644 index 0000000000..83c0a81188 --- /dev/null +++ b/utils/wxprop/docs/changes.tex @@ -0,0 +1,22 @@ +\chapter{Change log}\label{changes} +\pagenumbering{arabic}% +\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% + +November 26th 1995, Version 1.1 + +\begin{itemize}\itemsep=0pt +\item Added wxListOfStringsListValidator - allows adding, deleting, editing +strings. +\item Added wxPropertyValue::ClearList, wxPropertyValue::Delete, +wxPropertyValue::wxPropertyValue(wxStringList *). +\item Added wxPropertyValue::Set/GetModified, wxPropertySheet::SetAllModified. +\item Added wxPropertyView::OnPropertyChanged support, for immediate feedback. +\end{itemize} + +October 1995, Version 1.0 + +\begin{itemize}\itemsep=0pt +\item First release. +\end{itemize} + diff --git a/utils/wxprop/docs/classes.tex b/utils/wxprop/docs/classes.tex new file mode 100644 index 0000000000..d197d77d6d --- /dev/null +++ b/utils/wxprop/docs/classes.tex @@ -0,0 +1,1756 @@ +\chapter{Alphabetical class reference}\label{classref} +\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% + +\overview{Property classes overview}{propertyoverview} + + +\section{\class{wxBoolFormValidator}: wxPropertyFormValidator}\label{wxboolformvalidator} + +\overview{Validator classes}{validatorclasses} + +This class validates a boolean value for a form view. The associated panel item must be a wxCheckBox. + +\membersection{wxBoolFormValidator::wxBoolFormValidator} + +\func{void}{wxBoolFormValidator}{\param{long }{flags=0}} + +Constructor. + +\section{\class{wxBoolListValidator}: wxPropertyListValidator}\label{wxboollistvalidator} + +\overview{Validator classes}{validatorclasses} + +This class validates a boolean value for a list view. + +\membersection{wxBoolListValidator::wxBoolListValidator} + +\func{void}{wxBoolListValidator}{\param{long }{flags=0}} + +Constructor. + +\section{\class{wxIntegerFormValidator}: wxPropertyFormValidator}\label{wxintegerformvalidator} + +\overview{Validator classes}{validatorclasses} + +This class validates a range of integer values for a form view. The associated panel item must be a wxText +or wxSlider. + +\membersection{wxIntegerFormValidator::wxIntegerFormValidator} + +\func{void}{wxIntegerFormValidator}{\param{long }{min=0}, \param{long }{max=0}, + \param{long}{ flags=0}} + +Constructor. Assigning zero to minimum and maximum values indicates that there is no range to check. + + +\section{\class{wxIntegerListValidator}: wxPropertyListValidator}\label{wxintegerlistvalidator} + +\overview{Validator classes}{validatorclasses} + +This class validates a range of integer values for a list view. + +\membersection{wxIntegerListValidator::wxIntegerListValidator} + +\func{void}{wxIntegerListValidator}{\param{long }{min=0}, \param{long }{max=0}, + \param{long}{ flags=wxPROP\_ALLOW\_TEXT\_EDITING}} + +Constructor. Assigning zero to minimum and maximum values indicates that there is no range to check. + +\section{\class{wxFilenameListValidator}: wxPropertyListValidator}\label{wxfilenamelistvalidator} + +\overview{Validator classes}{validatorclasses} + +This class validates a filename for a list view, allowing the user to edit it textually and also popping up +a file selector in ``detailed editing" mode. + +\membersection{wxFilenameListValidator::wxFilenameListValidator} + +\func{void}{wxFilenameListValidator}{\param{wxString }{message = ``Select a file"}, \param{wxString }{wildcard = ``*.*"}, + \param{long}{ flags=0}} + +Constructor. Supply an optional message and wildcard. + +\section{\class{wxListOfStringsListValidator}: wxPropertyListValidator}\label{wxlistofstringslistvalidator} + +\overview{Validator classes}{validatorclasses} + +This class validates a list of strings for a list view. When editing the property, +a dialog box is presented for adding, deleting or editing entries in the list. +At present no constraints may be supplied. + +You can construct a string list property value by constructing a wxStringList object. + +For example: + +\begin{verbatim} + myListValidatorRegistry.RegisterValidator((wxString)"stringlist", + new wxListOfStringsListValidator); + + wxStringList *strings = new wxStringList("earth", "fire", "wind", "water", NULL); + + sheet->AddProperty(new wxProperty("fred", strings, "stringlist")); +\end{verbatim} + +\membersection{wxListOfStringsListValidator::wxListofStringsListValidator} + +\func{void}{wxListOfStringsListValidator}{\param{long}{ flags=0}} + +Constructor. + +\section{\class{wxProperty}: wxObject}\label{wxproperty} + +The {\bf wxProperty} class represents a property, with a \helpref{wxPropertyValue}{wxpropertyvalue}\rtfsp +containing the actual value, a name a role, an optional validator, and +an optional associated window. + +A property might correspond to an actual C++ data member, or it +might correspond to a conceptual property, such as the width of a window. +There is no explicit data member {\it wxWindow::width}, but it may be convenient +to invent such a property for the purposes of editing attributes of the window. +The properties in the property sheet can be mapped to ``reality" by +whatever means (in this case by calling wxWindow::SetSize when the user has +finished editing the property sheet). + +A validator may be associated with the property in order to ensure that this and +only this validator will be used for editing and validating the property. +An alternative method is to use the {\it role} parameter to specify what kind +of validator would be appropriate; for example, specifying ``filename" for the role +would allow the property view to find an appropriate validator at edit time. + + +\membersection{wxProperty::wxProperty} + +\func{void}{wxProperty}{\void} + +\func{void}{wxProperty}{\param{wxProperty\& }{prop}} + +\func{void}{wxProperty}{\param{wxString}{ name}, \param{wxString}{ role}, \param{wxPropertyValidator *}{validator=NULL}} + +\func{void}{wxProperty}{\param{wxString}{ name}, \param{const wxPropertyValue\&}{ val}, \param{wxString}{ role}, \param{wxPropertyValidator *}{validator=NULL}} + +Constructors. + +\membersection{wxProperty::\destruct{wxProperty}} + +\func{void}{\destruct{wxProperty}}{\void} + +Destructor. Destroys the wxPropertyValue, and the property validator if there is one. However, if the +actual C++ value in the wxPropertyValue is a pointer, the data in that variable is not destroyed. + +\membersection{wxProperty::GetValue} + +\func{wxPropertyValue\&}{GetValue}{\void} + +Returns a reference to the property value. + +\membersection{wxProperty::GetValidator} + +\func{wxPropertyValidator *}{GetValidator}{\void} + +Returns a pointer to the associated property validator (if any). + +\membersection{wxProperty::GetName} + +\func{wxString\&}{GetName}{\void} + +Returns the name of the property. + +\membersection{wxProperty::GetRole} + +\func{wxRole\&}{GetRole}{\void} + +Returns the role of the property, to be used when choosing an appropriate validator. + +\membersection{wxProperty::GetWindow} + +\func{wxWindow *}{GetWindow}{\void} + +Returns the window associated with the property (if any). + +\membersection{wxProperty::SetValue} + +\func{void}{SetValue}{\param{wxPropertyValue\&}{ val}} + +Sets the value of the property. + +\membersection{wxProperty::SetName} + +\func{void}{SetName}{\param{wxString\&}{ name}} + +Sets the name of the property. + +\membersection{wxProperty::SetRole} + +\func{void}{SetRole}{\param{wxString\&}{ role}} + +Sets the role of the property. + +\membersection{wxProperty::SetValidator} + +\func{void}{SetValidator}{\param{wxPropertyValidator *}{validator}} + +Sets the validator: this will be deleted when the property is deleted. + +\membersection{wxProperty::SetWindow} + +\func{void}{SetWindow}{\param{wxWindow *}{win}} + +Sets the window associated with the property. + +\membersection{wxProperty::operator $=$} + +\func{void}{operator $=$}{\param{const wxPropertyValue\&}{ val}} + +Assignment operator. + +\section{\class{wxPropertyFormValidator}: wxPropertyValidator}\label{wxpropertyformvalidator} + +The {\bf wxPropertyFormValidator} abstract class is the root of classes that define validation +for a wxPropertyFormView. + + +\section{\class{wxPropertyFormDialog}: wxDialogBox}\label{wxpropertyformdialog} + +The {\bf wxPropertyFormDialog} class is a prepackaged dialog which can +be used for viewing a form property sheet. Pass a property form view object, and the dialog +will pass OnClose and OnDefaultAction listbox messages to the view class for +processing. + +\membersection{wxPropertyFormDialog::wxPropertyFormDialog} + +\func{void}{wxPropertyFormDialog}{\param{wxPropertyFormView *}{view}, \param{wxWindow *}{parent}, \param{char *}{title}, + \param{Bool}{ modal=FALSE}, \param{int}{ x=-1}, \param{int}{ y=-1}, \param{int}{ width=-1}, \param{int}{height=-1}, + \param{long}{ style=wxDEFAULT\_DIALOG\_STYLE}, \param{char *}{name=``dialogBox"}} + +Constructor. + +\membersection{wxPropertyFormDialog::\destruct{wxPropertyFormDialog}} + +\func{void}{\destruct{wxPropertyFormDialog}}{\void} + +Destructor. + + +\section{\class{wxPropertyFormFrame}: wxFrame}\label{wxpropertyformframe} + +The {\bf wxPropertyFormFrame} class is a prepackaged frame which can +be used for viewing a property form. Pass a property form view object, and the frame +will pass OnClose messages to the view class for processing. + +Call Initialize to create the panel and associate the view; override OnCreatePanel +if you wish to use a panel class other than the default wxPropertyFormPanel. + +\membersection{wxPropertyFormFrame::wxPropertyFormFrame} + +\func{void}{wxPropertyFormFrame}{\param{wxPropertyFormView *}{view}, \param{wxFrame *}{parent}, \param{char *}{title}, + \param{int}{ x=-1}, \param{int}{ y=-1}, \param{int}{ width=-1}, \param{int}{height=-1}, + \param{long}{ style=wxSDI $\|$ wxDEFAULT\_FRAME}, \param{char *}{name=``frame"}} + +Constructor. + +\membersection{wxPropertyFormFrame::\destruct{wxPropertyFormFrame}} + +\func{void}{\destruct{wxPropertyFormFrame}}{\void} + +Destructor. + +\membersection{wxPropertyFormFrame::GetPropertyPanel} + +\func{wxPanel *}{GetPropertyPanel}{\void} + +Returns the panel associated with the frame. + +\membersection{wxPropertyFormFrame::Initialize} + +\func{Bool}{Initialize}{\void} + +Must be called to create the panel and associate the view with the panel and frame. + +\membersection{wxPropertyFormFrame::OnCreatePanel} + +\func{wxPanel *}{OnCreatePanel}{\param{wxFrame *}{parent}, \param{wxPropertyFormView *}{view}} + +Creates a panel. Override this to create a panel type other than wxPropertyFormPanel. + + +\section{\class{wxPropertyFormPanel}: wxPanel}\label{wxpropertyformpanel} + +The {\bf wxPropertyFormPanel} class is a prepackaged panel which can +be used for viewing a property form. Pass a property form view object, and the panel +will pass OnDefaultAction listbox messages to the view class for +processing. + +\membersection{wxPropertyFormPanel::wxPropertyFormPanel} + +\func{void}{wxPropertyFormPanel}{\param{wxPropertyFormView *}{view}, \param{wxWindow *}{parent}, + \param{int}{ x=-1}, \param{int}{ y=-1}, \param{int}{ width=-1}, \param{int}{height=-1}, + \param{long}{ style=0}, \param{char *}{name=``panel"}} + +Constructor. + +\membersection{wxPropertyFormPanel::\destruct{wxPropertyFormPanel}} + +\func{void}{\destruct{wxPropertyFormPanel}}{\void} + +Destructor. + + + +\section{\class{wxPropertyFormValidator}: wxPropertyValidator}\label{wxpropertyformvalidatir} + +\overview{wxPropertyFormValidator overview}{wxpropertyformvalidatoroverview} + +The {\bf wxPropertyFormValidator} class defines a base class for form validators. By overriding virtual functions, +the programmer can create custom behaviour for kinds of property. + +\membersection{wxPropertyFormValidator::wxPropertyFormValidator} + +\func{void}{wxPropertyFormValidator}{\param{long}{ flags = 0}} + +Constructor. + +\membersection{wxPropertyFormValidator::\destruct{wxPropertyFormValidator}} + +\func{void}{\destruct{wxPropertyFormValidator}}{\void} + +Destructor. + +\membersection{wxPropertyFormValidator::OnCommand} + +\func{Bool}{OnCommand}{\param{wxProperty *}{property}, \param{wxPropertyFormView *}{view}, + \param{wxWindow *}{parentWindow}, \param{wxCommandEvent\& }{event}} + +Called when the control corresponding to the property receives a command (if not intercepted +by a callback associated with the actual control). + +\membersection{wxPropertyFormValidator::OnCheckValue} + +\func{Bool}{OnCheckValue}{\param{wxProperty *}{property}, \param{wxPropertyFormView *}{view}, + \param{wxWindow *}{parentWindow}} + +Called when the view checks the property value. The value checked by this validator should be taken from the +panel item corresponding to the property. + +\membersection{wxPropertyFormValidator::OnDisplayValue} + +\func{Bool}{OnDisplayValue}{\param{wxProperty *}{property}, \param{wxPropertyFormView *}{view}, + \param{wxWindow *}{parentWindow}} + +Should display the property value in the appropriate control. + +\membersection{wxPropertyFormValidator::OnDoubleClick} + +\func{Bool}{OnDoubleClick}{\param{wxProperty *}{property}, \param{wxPropertyFormView *}{view}, + \param{wxWindow *}{parentWindow}} + +Called when the control corresponding to the property is double clicked (listboxes only). + +\membersection{wxPropertyFormValidator::OnRetrieveValue} + +\func{Bool}{OnRetrieveValue}{\param{wxProperty *}{property}, \param{wxPropertyFormView *}{view}, + \param{wxWindow *}{parentWindow}} + +Should do the transfer from the property editing area to the property itself. + + +\section{\class{wxPropertyFormView}: wxPropertyView}\label{wxpropertyformview} + +\overview{wxPropertyFormView overview}{wxpropertyformviewoverview} + +The {\bf wxPropertyFormView} class shows a wxPropertySheet as a view onto a panel or dialog +box which has already been created. + +\membersection{wxPropertyFormView::wxPropertyFormView} + +\func{void}{wxPropertyFormView}{\param{long}{ flags = 0}} + +Constructor. + +\membersection{wxPropertyFormView::\destruct{wxPropertyFormView}} + +\func{void}{\destruct{wxPropertyFormView}}{\void} + +Destructor. + +\membersection{wxPropertyFormView::AssociateNames}\label{wxpropertyformviewassociatenames} + +\func{void}{AssociateNames}{\void} + +Associates the properties with the controls on the panel. For each panel item, if the +panel item name is the same as a property name, the two objects will be associated. +This function should be called manually since the programmer may wish to do the +association manually. + +\membersection{wxPropertyFormView::Check}\label{wxpropertyformviewcheck} + +\func{Bool}{Check}{\void} + +Checks all properties by calling the appropriate validators; returns FALSE if a validation failed. + +\membersection{wxPropertyFormView::GetPanel}\label{wxpropertyformviewgetpanel} + +\func{wxPanel *}{GetPanel}{\void} + +Returns the panel associated with the view. + +\membersection{wxPropertyFormView::GetManagedWindow}\label{wxpropertyformviewgetmanagedwindow} + +\func{wxWindow *}{GetManagedWindow}{\void} + +Returns the managed window (a frame or dialog) associated with the view. + +\membersection{wxPropertyFormView::OnOk}\label{wxpropertyformviewonok} + +\func{void}{OnOk}{\void} + +Virtual function that will be called when the OK button on the physical window is pressed. +By default, checks and updates the form values, closes and deletes the frame or dialog, then deletes the view. + +\membersection{wxPropertyFormView::OnCancel}\label{wxpropertyformviewoncancel} + +\func{void}{OnCancel}{\void} + +Virtual function that will be called when the Cancel button on the physical window is pressed. +By default, closes and deletes the frame or dialog, then deletes the view. + +\membersection{wxPropertyFormView::OnHelp}\label{wxpropertyformviewonhelp} + +\func{void}{OnHelp}{\void} + +Virtual function that will be called when the Help button on the physical window is pressed. +This needs to be overridden by the application for anything interesting to happen. + +\membersection{wxPropertyFormView::OnRevert}\label{wxpropertyformviewonrevert} + +\func{void}{OnRevert}{\void} + +Virtual function that will be called when the Revert button on the physical window is pressed. +By default transfers the wxProperty values to the panel items (in effect +undoing any unsaved changes in the items). + +\membersection{wxPropertyFormView::OnUpdate}\label{wxpropertyformviewonupdate} + +\func{void}{OnUpdate}{\void} + +Virtual function that will be called when the Update button on the physical window is pressed. +By defaults transfers the displayed values to the wxProperty objects. + +\membersection{wxPropertyFormView::SetManagedWindow}\label{wxpropertyformviewsetmanagedwindow} + +\func{void}{SetManagedWindow}{\param{wxWindow *}{win}} + +Sets the managed window (a frame or dialog) associated with the view. + +\membersection{wxPropertyFormView::TransferToDialog}\label{wxpropertyformviewtransfertodialog} + +\func{Bool}{TransferToDialog}{\void} + +Transfers property values to the controls in the dialog. + +\membersection{wxPropertyFormView::TransferToPropertySheet}\label{wxpropertyformviewtransfertopropertysheet} + +\func{Bool}{TransferToPropertySheet}{\void} + +Transfers property values from the controls in the dialog to the property sheet. + + +\section{\class{wxPropertyListDialog}: wxDialogBox}\label{wxpropertylistdialog} + +The {\bf wxPropertyListDialog} class is a prepackaged dialog which can +be used for viewing a property list. Pass a property list view object, and the dialog +will pass OnClose and OnDefaultAction listbox messages to the view class for +processing. + +\membersection{wxPropertyListDialog::wxPropertyListDialog} + +\func{void}{wxPropertyListDialog}{\param{wxPropertyListView *}{view}, \param{wxWindow *}{parent}, \param{char *}{title}, + \param{Bool}{ modal=FALSE}, \param{int}{ x=-1}, \param{int}{ y=-1}, \param{int}{ width=-1}, \param{int}{height=-1}, + \param{long}{ style=wxDEFAULT\_DIALOG\_STYLE}, \param{char *}{name=``dialogBox"}} + +Constructor. + +\membersection{wxPropertyListDialog::\destruct{wxPropertyListDialog}} + +\func{void}{\destruct{wxPropertyListDialog}}{\void} + +Destructor. + + +\section{\class{wxPropertyListFrame}: wxFrame}\label{wxpropertylistframe} + +The {\bf wxPropertyListFrame} class is a prepackaged frame which can +be used for viewing a property list. Pass a property list view object, and the frame +will pass OnClose messages to the view class for processing. + +Call Initialize to create the panel and associate the view; override OnCreatePanel +if you wish to use a panel class other than the default wxPropertyListPanel. + +\membersection{wxPropertyListFrame::wxPropertyListFrame} + +\func{void}{wxPropertyListFrame}{\param{wxPropertyListView *}{view}, \param{wxFrame *}{parent}, \param{char *}{title}, + \param{int}{ x=-1}, \param{int}{ y=-1}, \param{int}{ width=-1}, \param{int}{height=-1}, + \param{long}{ style=wxSDI $\|$ wxDEFAULT\_FRAME}, \param{char *}{name=``frame"}} + +Constructor. + +\membersection{wxPropertyListFrame::\destruct{wxPropertyListFrame}} + +\func{void}{\destruct{wxPropertyListFrame}}{\void} + +Destructor. + +\membersection{wxPropertyListFrame::GetPropertyPanel} + +\func{wxPanel *}{GetPropertyPanel}{\void} + +Returns the panel associated with the frame. + +\membersection{wxPropertyListFrame::Initialize} + +\func{Bool}{Initialize}{\void} + +Must be called to create the panel and associate the view with the panel and frame. + +\membersection{wxPropertyListFrame::OnCreatePanel} + +\func{wxPanel *}{OnCreatePanel}{\param{wxFrame *}{parent}, \param{wxPropertyListView *}{view}} + +Creates a panel. Override this to create a panel type other than wxPropertyListPanel. + + +\section{\class{wxPropertyListPanel}: wxPanel}\label{wxpropertylistpanel} + +The {\bf wxPropertyListPanel} class is a prepackaged panel which can +be used for viewing a property list. Pass a property list view object, and the panel +will pass OnDefaultAction listbox messages to the view class for +processing. + +\membersection{wxPropertyListPanel::wxPropertyListPanel} + +\func{void}{wxPropertyListPanel}{\param{wxPropertyListView *}{view}, \param{wxWindow *}{parent}, + \param{int}{ x=-1}, \param{int}{ y=-1}, \param{int}{ width=-1}, \param{int}{height=-1}, + \param{long}{ style=0}, \param{char *}{name=``panel"}} + +Constructor. + +\membersection{wxPropertyListPanel::\destruct{wxPropertyListPanel}} + +\func{void}{\destruct{wxPropertyListPanel}}{\void} + +Destructor. + + + + +\section{\class{wxPropertyListValidator}: wxPropertyValidator}\label{wxpropertylistvalidator} + +\overview{wxPropertyListValidator overview}{wxpropertylistvalidatoroverview} + +The {\bf wxPropertyListValidator} abstract class is the base class for +deriving validators for property lists. + +\membersection{wxPropertyListValidator::wxPropertyListValidator} + +\func{void}{wxPropertyListValidator}{\param{long}{ flags = wxPROP\_ALLOW\_TEXT\_EDITING}} + +Constructor. + +\membersection{wxPropertyListValidator::\destruct{wxPropertyListValidator}} + +\func{void}{\destruct{wxPropertyListValidator}}{\void} + +Destructor. + +\membersection{wxPropertyListValidator::OnCheckValue} + +\func{Bool}{OnCheckValue}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view}, + \param{wxWindow *}{parentWindow}} + +Called when the Tick (Confirm) button is pressed or focus is list. Return FALSE if the value +was invalid, which is a signal restores the old value. Return TRUE if the value was valid. + +\membersection{wxPropertyListValidator::OnClearControls} + +\func{Bool}{OnClearControls}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view}, + \param{wxWindow *}{parentWindow}} + +Allows the clearing (enabling, disabling) of property list controls, when the focus leaves the current property. + +\membersection{wxPropertyListValidator::OnClearDetailControls} + +\func{Bool}{OnClearDetailControls}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view}, + \param{wxWindow *}{parentWindow}} + +Called when the focus is lost, if the validator is in detailed editing mode. + +\membersection{wxPropertyListValidator::OnDisplayValue} + +\func{Bool}{OnDisplayValue}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view}, + \param{wxWindow *}{parentWindow}} + +Should display the value in the appropriate controls. The default implementation gets the +textual value from the property and inserts it into the text edit control. + +\membersection{wxPropertyListValidator::OnDoubleClick} + +\func{Bool}{OnDoubleClick}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view}, + \param{wxWindow *}{parentWindow}} + +Called when the property is double clicked. Extra functionality can be provided, +such as cycling through possible values. + +\membersection{wxPropertyListValidator::OnEdit} + +\func{Bool}{OnEdit}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view}, + \param{wxWindow *}{parentWindow}} + +Called when the Edit (detailed editing) button is pressed. The default implementation +calls wxPropertyListView::BeginDetailedEditing; a filename validator (for example) overrides +this function to show the file selector. + +\membersection{wxPropertyListValidator::OnPrepareControls} + +\func{Bool}{OnPrepareControls}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view}, + \param{wxWindow *}{parentWindow}} + +Called to allow the validator to setup the display, such enabling or disabling buttons, and +setting the values and selection in the standard listbox control (the one optionally used for displaying +value options). + +\membersection{wxPropertyListValidator::OnPrepareDetailControls} + +\func{Bool}{OnPrepareDetailControls}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view}, + \param{wxWindow *}{parentWindow}} + +Called when the property is edited `in detail', i.e. when the Edit button is pressed. + +\membersection{wxPropertyListValidator::OnRetrieveValue} + +\func{Bool}{OnRetrieveValue}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view}, + \param{wxWindow *}{parentWindow}} + +Called when Tick (Confirm) is pressed or focus is lost or view wants to update +the property list. Should do the transfer from the property editing area to the property itself + +\membersection{wxPropertyListValidator::OnSelect} + +\func{Bool}{OnSelect}{\param{Bool}{ select}, \param{wxProperty *}{property}, \param{wxPropertyListView *}{view}, + \param{wxWindow *}{parentWindow}} + +Called when the property is selected or deselected: typically displays the value +in the edit control (having chosen a suitable control to display: (non)editable text or listbox). + +\membersection{wxPropertyListValidator::OnValueListSelect} + +\func{Bool}{OnValueListSelect}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view}, + \param{wxWindow *}{parentWindow}} + +Called when the value listbox is selected. The default behaviour is to copy +string to text control, and retrieve the value into the property. + + + +\section{\class{wxPropertyListView}: wxPropertyView}\label{wxpropertylistview} + +\overview{wxPropertyListView overview}{wxpropertylistviewoverview} + +The {\bf wxPropertyListView} class shows a wxPropertySheet as a Visual Basic-style property list. + +\membersection{wxPropertyListView::wxPropertyListView} + +\func{void}{wxPropertyListView}{\param{long}{ flags = wxPROP\_BUTTON\_DEFAULT}} + +Constructor. + +The {\it flags} argument can be a bit list of the following: + +\begin{itemize}\itemsep=0pt +\item wxPROP\_BUTTON\_CLOSE +\item wxPROP\_BUTTON\_OK +\item wxPROP\_BUTTON\_CANCEL +\item wxPROP\_BUTTON\_CHECK\_CROSS +\item wxPROP\_BUTTON\_HELP +\item wxPROP\_DYNAMIC\_VALUE\_FIELD +\item wxPROP\_PULLDOWN +\end{itemize} + +\membersection{wxPropertyListView::\destruct{wxPropertyListView}} + +\func{void}{\destruct{wxPropertyListView}}{\void} + +Destructor. + +\membersection{wxPropertyListView::AssociatePanel}\label{wxpropertylistviewassociatepanel} + +\func{void}{AssociatePanel}{\param{wxPanel *}{panel}} + +Associates the window on which the controls will be displayed, with the view (sets an internal pointer to the window). + +\membersection{wxPropertyListView::BeginShowingProperty}\label{wxpropertylistviewbeginshowingproperty} + +\func{Bool}{BeginShowingProperty}{\param{wxProperty *}{property}} + +Finds the appropriate validator and loads the property into the controls, by calling +wxPropertyValidator::OnPrepareControls and then wxPropertyListView::DisplayProperty. + +\membersection{wxPropertyListView::DisplayProperty}\label{wxpropertylistviewdisplayproperty} + +\func{Bool}{DisplayProperty}{\param{wxProperty *}{property}} + +Calls wxPropertyValidator::OnDisplayValue for the current property's validator. This function +gets called by wxPropertyListView::BeginShowingProperty, which is in turn called +from ShowProperty, called by OnPropertySelect, called by the listbox callback when selected. + +\membersection{wxPropertyListView::EndShowingProperty}\label{wxpropertylistviewendshowingproperty} + +\func{Bool}{EndShowingProperty}{\param{wxProperty *}{property}} + +Finds the appropriate validator and unloads the property from the controls, by calling +wxPropertyListView::RetrieveProperty, wxPropertyValidator::OnClearControls and (if we're in +detailed editing mdoe) wxPropertyValidator::OnClearDetailControls. + +\membersection{wxPropertyListView::GetPanel}\label{wxpropertylistviewgetpanel} + +\func{wxPanel *}{GetPanel}{\void} + +Returns the panel associated with the view. + +\membersection{wxPropertyListView::GetManagedWindow}\label{wxpropertylistviewgetmanagedwindow} + +\func{wxWindow *}{GetManagedWindow}{\void} + +Returns the managed window (a frame or dialog) associated with the view. + +\membersection{wxPropertyListView::GetWindowCancelButton}\label{wxpropertylistviewgetwindowcancelbutton} + +\func{wxButton *}{GetWindowCancelButton}{\void} + +Returns the window cancel button, if any. + +\membersection{wxPropertyListView::GetWindowCloseButton}\label{wxpropertylistviewgetwindowclosebutton} + +\func{wxButton *}{GetWindowCloseButton}{\void} + +Returns the window close or OK button, if any. + +\membersection{wxPropertyListView::GetWindowHelpButton}\label{wxpropertylistviewgetwindowhelpbutton} + +\func{wxButton *}{GetWindowHelpButton}{\void} + +Returns the window help button, if any. + +\membersection{wxPropertyListView::SetManagedWindow}\label{wxpropertylistviewsetmanagedwindow} + +\func{void}{SetManagedWindow}{\param{wxWindow *}{win}} + +Sets the managed window (a frame or dialog) associated with the view. + +\membersection{wxPropertyListView::UpdatePropertyDisplayInList}\label{wxpropertylistviewupdatepropdisplay} + +\func{Bool}{UpdatePropertyDisplayInList}{\param{wxProperty *}{property}} + +Updates the display for the given changed property. + +\membersection{wxPropertyListView::UpdatePropertyList}\label{wxpropertylistviewupdateproplist} + +\func{Bool}{UpdatePropertyList}{\param{Bool }{clearEditArea = TRUE}} + +Updates the whole property list display. + + +\section{\class{wxPropertySheet}: wxObject}\label{wxpropertysheet} + +\overview{wxPropertySheet overview}{wxpropertysheetoverview} + +The {\bf wxPropertySheet} class is used for storing a number of +wxProperty objects (essentially names and values). + +\membersection{wxPropertySheet::wxPropertySheet} + +\func{void}{wxPropertySheet}{\void} + +Constructor. + +\membersection{wxPropertySheet::\destruct{wxPropertySheet}} + +\func{void}{\destruct{wxPropertySheet}}{\void} + +Destructor. Destroys all contained properties. + +\membersection{wxPropertySheet::AddProperty}\label{wxpropertysheetaddproperty} + +\func{void}{AddProperty}{\param{wxProperty *}{property}} + +Adds a property to the sheet. + +\membersection{wxPropertySheet::Clear}\label{wxpropertysheetclear} + +\func{void}{Clear}{\void} + +Clears all the properties from the sheet (deleting them). + +\membersection{wxPropertySheet::GetProperties}\label{wxpropertysheetgetproperties} + +\func{wxList\&}{GetProperties}{\void} + +Returns a reference to the internal list of properties. + +\membersection{wxPropertySheet::GetProperty}\label{wxpropertysheetgetproperty} + +\func{wxProperty *}{GetProperty}{\param{char *}{name}} + +Gets a property by name. + +\membersection{wxPropertySheet::SetAllModified} + +\func{void}{SetAllModified}{\param{Bool}{ flag}} + +Sets the `modified' flag of each property value. + + + +\section{\class{wxPropertyValidator}: wxEvtHandler}\label{wxpropertyvalidator} + +\overview{wxPropertyValidator overview}{wxpropertyvalidatoroverview} + +The {\bf wxPropertyValidator} abstract class is the base class for deriving +validators for properties. + +\membersection{wxPropertyValidator::wxPropertyValidator} + +\func{void}{wxPropertyValidator}{\param{long}{ flags = 0}} + +Constructor. + +\membersection{wxPropertyValidator::\destruct{wxPropertyValidator}} + +\func{void}{\destruct{wxPropertyValidator}}{\void} + +Destructor. + +\membersection{wxPropertyValidator::GetFlags} + +\func{long}{GetFlags}{\void} + +Returns the flags for the validator. + +\membersection{wxPropertyValidator::GetValidatorProperty} + +\func{wxProperty *}{GetValidatorProperty}{\void} + +Gets the property for the validator. + +\membersection{wxPropertyValidator::SetValidatorProperty} + +\func{void}{SetValidatorProperty}{\param{wxProperty *}{property}} + +Sets the property for the validator. + + +\section{\class{wxPropertyValidatorRegistry}: wxHashTable}\label{wxpropertyvalidatorregistry} + +The {\bf wxPropertyValidatorRegistry} class is used for storing validators, +indexed by the `role name' of the property, by which groups of property +can be identified for the purpose of validation and editing. + +\membersection{wxPropertyValidatorRegistry::wxPropertyValidatorRegistry} + +\func{void}{wxPropertyValidatorRegistry}{\void} + +Constructor. + +\membersection{wxPropertyValidatorRegistry::\destruct{wxPropertyValidatorRegistry}} + +\func{void}{\destruct{wxPropertyValidatorRegistry}}{\void} + +Destructor. + +\membersection{wxPropertyValidatorRegistry::Clear} + +\func{void}{ClearRegistry}{\void} + +Clears the registry, deleting the validators. + +\membersection{wxPropertyValidatorRegistry::GetValidator} + +\func{wxPropertyValidator *}{GetValidator}{\param{wxString\& }{roleName}} + +Retrieve a validator by the property role name. + +\membersection{wxPropertyValidatorRegistry::RegisterValidator}\label{wxpropertyvalidatorregistervalidator} + +\func{void}{RegisterValidator}{\param{wxString\& }{roleName}, \param{wxPropertyValidator *}{validator}} + +Register a validator with the registry. {\it roleName} is a name indicating the +role of the property, such as ``filename''. Later, when a validator is chosen for +editing a property, this role name is matched against the class names of the property, +if the property does not already have a validator explicitly associated with it. + + +\section{\class{wxPropertyValue}: wxObject}\label{wxpropertyvalue} + +The {\bf wxPropertyValue} class represents the value of a property, +and is normally associated with a wxProperty object. + +A wxPropertyValue has one of the following types: + +\begin{itemize}\itemsep=0pt +\item wxPropertyValueNull +\item wxPropertyValueInteger +\item wxPropertyValueReal +\item wxPropertyValueBool +\item wxPropertyValueString +\item wxPropertyValueList +\item wxPropertyValueIntegerPtr +\item wxPropertyValueRealPtr +\item wxPropertyValueBoolPtr +\item wxPropertyValueStringPtr +\end{itemize} + +\membersection{wxPropertyValue::wxPropertyValue} + +\func{void}{wxPropertyValue}{\void} + +Default constructor. + +\func{void}{wxPropertyValue}{\param{const wxPropertyValue\& }{copyFrom}} + +Copy constructor. + +\func{void}{wxPropertyValue}{\param{char *}{val}} + +Construction from a string value. + +\func{void}{wxPropertyValue}{\param{long}{ val}} + +Construction from an integer value. You may need to cast to (long) to +avoid confusion with other constructors (such as the Bool constructor). + +\func{void}{wxPropertyValue}{\param{Bool}{ val}} + +Construction from a boolean value. + +\func{void}{wxPropertyValue}{\param{float}{ val}} + +Construction from a floating point value. + +\func{void}{wxPropertyValue}{\param{double}{ val}} + +Construction from a floating point value. + +\func{void}{wxPropertyValue}{\param{wxList *}{ val}} + +Construction from a list of wxPropertyValue objects. The +list, but not each contained wxPropertyValue, will be deleted +by the constructor. The wxPropertyValues will be assigned to +this wxPropertyValue list. In other words, so do not delete wxList or +its data after calling this constructor. + +\func{void}{wxPropertyValue}{\param{wxStringList *}{ val}} + +Construction from a list of strings. The list (including the strings +contained in it) will be deleted by the constructor, so do not +destroy {\it val} explicitly. + +\func{void}{wxPropertyValue}{\param{char **}{val}} + +Construction from a string pointer. + +\func{void}{wxPropertyValue}{\param{long *}{val}} + +Construction from an integer pointer. + +\func{void}{wxPropertyValue}{\param{Bool *}{val}} + +Construction from an boolean pointer. + +\func{void}{wxPropertyValue}{\param{float *}{val}} + +Construction from a floating point pointer. + +The last four constructors use pointers to various C++ types, and do not +store the types themselves; this allows the values to stand in for actual +data values defined elsewhere. + +\membersection{wxPropertyValue::\destruct{wxPropertyValue}} + +\func{void}{\destruct{wxPropertyValue}}{\void} + +Destructor. + +\membersection{wxPropertyValue::Append} + +\func{void}{Append}{\param{wxPropertyValue *}{expr}} + +Appends a property value to the list. + +\membersection{wxPropertyValue::BoolValue} + +\func{Bool}{BoolValue}{\void} + +Returns the boolean value. + +\membersection{wxPropertyValue::BoolValuePtr} + +\func{Bool *}{BoolValuePtr}{\void} + +Returns the pointer to the boolean value. + +\membersection{wxPropertyValue::ClearList} + +\func{void}{ClearList}{\void} + +Deletes the contents of the list. + +\membersection{wxPropertyValue::Delete} + +\func{void}{Delete}{\param{wxPropertyValue *}{expr}} + +Deletes {\it expr} from this list. + +\membersection{wxPropertyValue::GetFirst} + +\func{wxPropertyValue *}{GetFirst}{\void} + +Gets the first value in the list. + +\membersection{wxPropertyValue::GetLast} + +\func{wxPropertyValue *}{GetFirst}{\void} + +Gets the last value in the list. + +\membersection{wxPropertyValue::GetModified} + +\func{Bool}{GetModified}{\void} + +Returns TRUE if the value was modified since being created +(or since SetModified was called). + +\membersection{wxPropertyValue::GetNext} + +\func{wxPropertyValue *}{GetNext}{\void} + +Gets the next value in the list (the one after `this'). + +\membersection{wxPropertyValue::GetStringRepresentation} + +\func{wxString}{GetStringRepresentation}{\void} + +Gets a string representation of the value. + +\membersection{wxPropertyValue::IntegerValue} + +\func{long}{IntegerValue}{\void} + +Returns the integer value. + +\membersection{wxPropertyValue::Insert} + +\func{void}{Insert}{\param{wxPropertyValue *}{expr}} + +Inserts a property value at the front of a list. + +\membersection{wxPropertyValue::IntegerValuePtr} + +\func{long *}{IntegerValuePtr}{\void} + +Returns the pointer to the integer value. + +\membersection{wxPropertyValue::Nth} + +\func{wxPropertyValue *}{Nth}{\param{int}{ n}} + +Returns the nth value of a list expression (starting from zero). + +\membersection{wxPropertyValue::Number} + +\func{int}{Number}{\void} + +Returns the number of elements in a list expression. + +\membersection{wxPropertyValue::RealValue} + +\func{float}{RealValue}{\void} + +Returns the floating point value. + +\membersection{wxPropertyValue::RealValuePtr} + +\func{float *}{RealValuePtr}{\void} + +Returns the pointer to the floating point value. + +\membersection{wxPropertyValue::SetModified} + +\func{void}{SetModified}{\param{Bool}{ flag}} + +Sets the `modified' flag. + +\membersection{wxPropertyValue::StringValue} + +\func{char *}{StringValue}{\void} + +Returns the string value. + +\membersection{wxPropertyValue::StringValuePtr} + +\func{char **}{StringValuePtr}{\void} + +Returns the pointer to the string value. + +\membersection{wxPropertyValue::Type} + +\func{wxPropertyValueType}{Type}{\void} + +Returns the value type. + +\membersection{wxPropertyValue::operator $=$} + +\func{void}{operator $=$}{\param{const wxPropertyValue\& }{val}} + +\func{void}{operator $=$}{\param{const char *}{val}} + +\func{void}{operator $=$}{\param{const long }{val}} + +\func{void}{operator $=$}{\param{const Bool }{val}} + +\func{void}{operator $=$}{\param{const float }{val}} + +\func{void}{operator $=$}{\param{const char **}{val}} + +\func{void}{operator $=$}{\param{const long *}{val}} + +\func{void}{operator $=$}{\param{const Bool *}{val}} + +\func{void}{operator $=$}{\param{const float *}{val}} + +Assignment operators. + + + +\section{\class{wxPropertyView}: wxEvtHandler}\label{wxpropertyview} + +\overview{wxPropertyView overview}{wxpropertyviewoverview} + +The {\bf wxPropertyView} abstract class is the base class for views +of property sheets, acting as intermediaries between properties and +actual windows. + +\membersection{wxPropertyView::wxPropertyView} + +\func{void}{wxPropertyView}{\param{long}{ flags = wxPROP\_BUTTON\_DEFAULT}} + +Constructor. + +The {\it flags} argument can be a bit list of the following: + +\begin{itemize}\itemsep=0pt +\item wxPROP\_BUTTON\_CLOSE +\item wxPROP\_BUTTON\_OK +\item wxPROP\_BUTTON\_CANCEL +\item wxPROP\_BUTTON\_CHECK\_CROSS +\item wxPROP\_BUTTON\_HELP +\item wxPROP\_DYNAMIC\_VALUE\_FIELD +\item wxPROP\_PULLDOWN +\end{itemize} + +\membersection{wxPropertyView::\destruct{wxPropertyView}} + +\func{void}{\destruct{wxPropertyView}}{\void} + +Destructor. + +\membersection{wxPropertyView::AddRegistry}\label{wxpropertyviewaddregistry} + +\func{void}{AddRegistry}{\param{wxPropertyValidatorRegistry *}{registry}} + +Adds a registry (list of property validators) the view's list of registries, which is initially empty. + +\membersection{wxPropertyView::FindPropertyValidator}\label{wxpropertyviewfindpropertyvalidator} + +\func{wxPropertyValidator *}{FindPropertyValidator}{\param{wxProperty *}{property}} + +Finds the property validator that is most appropriate to this property. + +\membersection{wxPropertyView::GetPropertySheet}\label{wxpropertyviewgetpropertysheet} + +\func{wxPropertySheet *}{GetPropertySheet}{\void} + +Gets the property sheet for this view. + +\membersection{wxPropertyView::GetRegistryList}\label{wxpropertyviewgetregistrylist} + +\func{wxList\&}{GetRegistryList}{\void} + +Returns a reference to the list of property validator registries. + +\membersection{wxPropertyView::OnOk}\label{wxpropertyviewonok} + +\func{void}{OnOk}{\void} + +Virtual function that will be called when the OK button on the physical window is pressed (if it exists). + +\membersection{wxPropertyView::OnCancel}\label{wxpropertyviewoncancel} + +\func{void}{OnCancel}{\void} + +Virtual function that will be called when the Cancel button on the physical window is pressed (if it exists). + +\membersection{wxPropertyView::OnClose}\label{wxpropertyviewonclose} + +\func{Bool}{OnClose}{\void} + +Virtual function that will be called when the physical window is closed. The default implementation returns FALSE. + +\membersection{wxPropertyView::OnHelp}\label{wxpropertyviewonhelp} + +\func{void}{OnHelp}{\void} + +Virtual function that will be called when the Help button on the physical window is pressed (if it exists). + +\membersection{wxPropertyView::OnPropertyChanged}\label{wxpropertyviewonpropertychanged} + +\func{void}{OnPropertyChanged}{\param{wxProperty *}{property}} + +Virtual function called by a view or validator when a property's value changed. Validators +must be written correctly for this to be called. You can override this function +to respond immediately to property value changes. + +\membersection{wxPropertyView::OnUpdateView}\label{wxpropertyviewonupdateview} + +\func{Bool}{OnUpdateView}{\void} + +Called by the viewed object to update the view. The default implementation just returns +FALSE. + +\membersection{wxPropertyView::SetPropertySheet}\label{wxpropertyviewsetpropertysheet} + +\func{void}{SetPropertySheet}{\param{wxPropertySheet *}{sheet}} + +Sets the property sheet for this view. + +\membersection{wxPropertyView::ShowView}\label{wxpropertyviewshowview} + +\func{void}{ShowView}{\param{wxPropertySheet *}{sheet}, \param{wxPanel *}{panel}} + +Associates this view with the given panel, and shows the view. + +\section{\class{wxRealFormValidator}: wxPropertyFormValidator}\label{wxrealformvalidator} + +\overview{Validator classes}{validatorclasses} + +This class validates a range of real values for form views. The associated panel item must be a wxText. + +\membersection{wxRealFormValidator::wxRealFormValidator} + +\func{void}{wxRealFormValidator}{\param{float }{min=0.0}, \param{float }{max=0.0}, + \param{long}{ flags=0}} + +Constructor. Assigning zero to minimum and maximum values indicates that there is no range to check. + + +\section{\class{wxStringFormValidator}: wxPropertyFormValidator}\label{wxstringformvalidator} + +\overview{Validator classes}{validatorclasses} + +This class validates a string value for a form view, with an optional choice of possible values. +The associated panel item must be a wxText, wxListBox or wxChoice. For wxListBox and wxChoice items, +if the item is empty, the validator attempts to initialize the item from the strings in +the validator. Note that this does not happen for XView wxChoice items since XView cannot reinitialize a wxChoice. + +\membersection{wxStringFormValidator::wxStringFormValidator} + +\func{void}{wxStringFormValidator}{\param{wxStringList *}{list=NULL}, \param{long}{ flags=0}} + +Constructor. Supply a list of strings to indicate a choice, or no strings to allow the +user to freely edit the string. The string list will be deleted when the validator is deleted. + + +\section{\class{wxRealListValidator}: wxPropertyListValidator}\label{wxreallistvalidator} + +\overview{Validator classes}{validatorclasses} + +This class validates a range of real values for property lists. + +\membersection{wxRealListValidator::wxreallistvalidator} + +\func{void}{wxRealListValidator}{\param{float }{min=0.0}, \param{float }{max=0.0}, + \param{long}{ flags=wxPROP\_ALLOW\_TEXT\_EDITING}} + +Constructor. Assigning zero to minimum and maximum values indicates that there is no range to check. + + +\section{\class{wxStringListValidator}: wxPropertyListValidator}\label{wxstringlistvalidator} + +\overview{Validator classes}{validatorclasses} + +This class validates a string value, with an optional choice of possible values. + +\membersection{wxStringListValidator::wxStringListValidator} + +\func{void}{wxStringListValidator}{\param{wxStringList *}{list=NULL}, \param{long}{ flags=0}} + +Constructor. Supply a list of strings to indicate a choice, or no strings to allow the +user to freely edit the string. The string list will be deleted when the validator is deleted. + + +\chapter{Classes by category}\label{classesbycat} + +A classification of property sheet classes by category. + +\section{Data classes} + +\begin{itemize}\itemsep=0pt +\item \helpref{wxProperty}{wxproperty} +\item \helpref{wxPropertyValue}{wxpropertyvalue} +\item \helpref{wxPropertySheet}{wxpropertysheet} +\end{itemize} + + +\section{Validator classes}\label{validatorclasses} + +Validators check that the values the user has entered for a property are +valid. They can also define specific ways of entering data, such as a +file selector for a filename, and they are responsible for transferring +values between the wxProperty and the physical display. + +Base classes: + +\begin{itemize}\itemsep=0pt +\item \helpref{wxPropertyValidator}{wxproperty} +\item \helpref{wxPropertyListValidator}{wxpropertylistvalidator} +\item \helpref{wxPropertyFormValidator}{wxpropertyformvalidator} +\end{itemize} + +List view validators: + +\begin{itemize}\itemsep=0pt +\item \helpref{wxBoolListValidator}{wxboollistvalidator} +\item \helpref{wxFilenameListValidator}{wxfilenamelistvalidator} +\item \helpref{wxIntegerListValidator}{wxintegerlistvalidator} +\item \helpref{wxListOfStringsListValidator}{wxlistofstringslistvalidator} +\item \helpref{wxRealListValidator}{wxreallistvalidator} +\item \helpref{wxStringListValidator}{wxstringlistvalidator} +\end{itemize} + +Form view validators: + +\begin{itemize}\itemsep=0pt +\item \helpref{wxBoolFormValidator}{wxboolformvalidator} +\item \helpref{wxIntegerFormValidator}{wxintegerformvalidator} +\item \helpref{wxRealFormValidator}{wxrealformvalidator} +\item \helpref{wxStringFormValidator}{wxstringformvalidator} +\end{itemize} + +\section{View classes}\label{viewclasses} + +View classes mediate between a property sheet and a physical window. + +\begin{itemize}\itemsep=0pt +\item \helpref{wxPropertyView}{wxpropertyview} +\item \helpref{wxPropertyListView}{wxpropertylistview} +\item \helpref{wxPropertyFormView}{wxpropertyformview} +\end{itemize} + +\section{Window classes}\label{windowclasses} + +The class library defines some window classes that can be used as-is with a suitable +view class and property sheet. + +\begin{itemize}\itemsep=0pt +\item \helpref{wxPropertyFormFrame}{wxpropertyformframe} +\item \helpref{wxPropertyFormDialog}{wxpropertyformdialog} +\item \helpref{wxPropertyFormPanel}{wxpropertyformpanel} +\item \helpref{wxPropertyListFrame}{wxpropertylistframe} +\item \helpref{wxPropertyListDialog}{wxpropertylistdialog} +\item \helpref{wxPropertyListPanel}{wxpropertylistpanel} +\end{itemize} + +\section{Registry classes} + +A validator registry is a list of validators that can be applied to properties in a property sheet. +There may be one or more registries per property view. + +\begin{itemize}\itemsep=0pt +\item \helpref{wxPropertyValidatorRegistry}{wxpropertyvalidatorregistry} +\end{itemize} + + +\chapter{Topic overviews}\label{overviews} + +This chapter contains a selection of topic overviews. + +\section{Property classes overview}\label{propertyoverview} + +The property classes help a programmer to express relationships between +data and physical windows, in particular: + +\begin{itemize}\itemsep=0pt +\item the transfer of data to and from the physical controls; +\item the behaviour of various controls and custom windows for particular +types of data; +\item the validation of data, notifying the user when incorrect data is entered, +or even better, constraining the input so only valid data can be entered. +\end{itemize} + +With a consistent framework, the programmer should be able to use existing +components and design new ones in a principled manner, to solve many data entry +requirements. + +Each datum is represented in a \helpref{wxProperty}{wxproperty}, which has a name and a value. +Various C++ types are permitted in the value of a property, and the property can store a pointer +to the data instead of a copy of the data. A \helpref{wxPropertySheet}{wxpropertysheet} represents a number of these properties. + +These two classes are independent from the way in which the data is visually manipulated. To +mediate between property sheets and windows, the abstract class \helpref{wxPropertyView}{wxpropertyview} is +available for programmers to derive new kinds of view. One kind of view that is available is the \helpref{wxPropertyListView}{wxpropertylistview}, +which displays the data in a Visual Basic-style list, with a small number of controls for editing +the currently selected property. Another is \helpref{wxPropertyFormView}{wxpropertyformview} which +mediates between an existing dialog or panel and the property sheet. + +The hard work of mediation is actually performed by validators, which are instances of classes +derived from \helpref{wxPropertyValidator}{wxpropertyvalidator}. A validator is associated with +a particular property and is responsible for +responding to user interface events, and displaying, updating and checking the property value. +Because a validator's behaviour depends largely on the kind of view being used, there has to be +a separate hierarchy of validators for each class of view. So for wxPropertyListView, there is +an abstract class \helpref{wxPropertyListValidator}{wxpropertylistvalidator} from which concrete +classes are derived, such as \helpref{wxRealListValidator}{wxreallistvalidator} and +\rtfsp\helpref{wxStringListValidator}{wxstringlistvalidator}. + +A validator can be explicitly set for a property, so there is no doubt which validator +should be used to edit that property. However, it is also possible to define a registry +of validators, and have the validator chosen on the basis of the {\it role} of the property. +So a property with a ``filename" role would match the ``filename" validator, which pops +up a file selector when the user double clicks on the property. + +You don't have to define your own frame or window classes: there are some predefined +that will work with the property list view. See \helpref{Window classes}{windowclasses} for +further details. + +\subsection{Example 1: Property list view} + +The following code fragment shows the essentials of creating a registry of +standard validators, a property sheet containing some properties, and +a property list view and dialog or frame. RegisterValidators will be +called on program start, and PropertySheetTest is called in response to a +menu command. + +Note how some properties are created with an explicit reference to +a validator, and others are provided with a ``role'' which can be matched +against a validator in the registry. + +The interface generated by this test program is shown in the section \helpref{Appearance and +behaviour of a property list view}{appearance}. + +\begin{verbatim} +void RegisterValidators(void) +{ + myListValidatorRegistry.RegisterValidator((wxString)"real", new wxRealListValidator); + myListValidatorRegistry.RegisterValidator((wxString)"string", new wxStringListValidator); + myListValidatorRegistry.RegisterValidator((wxString)"integer", new wxIntegerListValidator); + myListValidatorRegistry.RegisterValidator((wxString)"bool", new wxBoolListValidator); +} + +void PropertyListTest(Bool useDialog) +{ + wxPropertySheet *sheet = new wxPropertySheet; + + sheet->AddProperty(new wxProperty("fred", 1.0, "real")); + sheet->AddProperty(new wxProperty("tough choice", (Bool)TRUE, "bool")); + sheet->AddProperty(new wxProperty("ian", (long)45, "integer", new wxIntegerListValidator(-50, 50))); + sheet->AddProperty(new wxProperty("bill", 25.0, "real", new wxRealListValidator(0.0, 100.0))); + sheet->AddProperty(new wxProperty("julian", "one", "string")); + sheet->AddProperty(new wxProperty("bitmap", "none", "string", new wxFilenameListValidator("Select a bitmap file", "*.bmp"))); + wxStringList *strings = new wxStringList("one", "two", "three", NULL); + sheet->AddProperty(new wxProperty("constrained", "one", "string", new wxStringListValidator(strings))); + + wxPropertyListView *view = + new wxPropertyListView(NULL, + wxPROP_BUTTON_CHECK_CROSS|wxPROP_DYNAMIC_VALUE_FIELD|wxPROP_PULLDOWN); + + wxDialogBox *propDialog = NULL; + wxPropertyListFrame *propFrame = NULL; + if (useDialog) + { + propDialog = new wxPropertyListDialog(view, NULL, "Property Sheet Test", TRUE, -1, -1, 400, 500); + } + else + { + propFrame = new wxPropertyListFrame(view, NULL, "Property Sheet Test", -1, -1, 400, 500); + } + + view->AddRegistry(&myListValidatorRegistry); + + if (useDialog) + { + view->ShowView(sheet, propDialog); + propDialog->Centre(wxBOTH); + propDialog->Show(TRUE); + } + else + { + propFrame->Initialize(); + view->ShowView(sheet, propFrame->GetPropertyPanel()); + propFrame->Centre(wxBOTH); + propFrame->Show(TRUE); + } +} +\end{verbatim} + +\subsection{Example 2: Property form view} + +This example is similar to Example 1, but uses a property form view to +edit a property sheet using a predefined dialog box. + +\begin{verbatim} +void RegisterValidators(void) +{ + myFormValidatorRegistry.RegisterValidator((wxString)"real", new wxRealFormValidator); + myFormValidatorRegistry.RegisterValidator((wxString)"string", new wxStringFormValidator); + myFormValidatorRegistry.RegisterValidator((wxString)"integer", new wxIntegerFormValidator); + myFormValidatorRegistry.RegisterValidator((wxString)"bool", new wxBoolFormValidator); +} + +void PropertyFormTest(Bool useDialog) +{ + wxPropertySheet *sheet = new wxPropertySheet; + + sheet->AddProperty(new wxProperty("fred", 25.0, "real", new wxRealFormValidator(0.0, 100.0))); + sheet->AddProperty(new wxProperty("tough choice", (Bool)TRUE, "bool")); + sheet->AddProperty(new wxProperty("ian", (long)45, "integer", new wxIntegerFormValidator(-50, 50))); + sheet->AddProperty(new wxProperty("julian", "one", "string")); + wxStringList *strings = new wxStringList("one", "two", "three", NULL); + sheet->AddProperty(new wxProperty("constrained", "one", "string", new wxStringFormValidator(strings))); + + wxPropertyFormView *view = new wxPropertyFormView(NULL); + + wxDialogBox *propDialog = NULL; + wxPropertyFormFrame *propFrame = NULL; + if (useDialog) + { + propDialog = new wxPropertyFormDialog(view, NULL, "Property Form Test", TRUE, -1, -1, 400, 300); + } + else + { + propFrame = new wxPropertyFormFrame(view, NULL, "Property Form Test", -1, -1, 400, 300); + propFrame->Initialize(); + } + + wxPanel *panel = propDialog ? propDialog : propFrame->GetPropertyPanel(); + panel->SetLabelPosition(wxVERTICAL); + + // Add items to the panel + + (void) new wxButton(panel, (wxFunction)NULL, "OK", -1, -1, -1, -1, 0, "ok"); + (void) new wxButton(panel, (wxFunction)NULL, "Cancel", -1, -1, 80, -1, 0, "cancel"); + (void) new wxButton(panel, (wxFunction)NULL, "Update", -1, -1, 80, -1, 0, "update"); + (void) new wxButton(panel, (wxFunction)NULL, "Revert", -1, -1, -1, -1, 0, "revert"); + panel->NewLine(); + + // The name of this text item matches the "fred" property + (void) new wxText(panel, (wxFunction)NULL, "Fred", "", -1, -1, 90, -1, 0, "fred"); + (void) new wxCheckBox(panel, (wxFunction)NULL, "Yes or no", -1, -1, -1, -1, 0, "tough choice"); + (void) new wxSlider(panel, (wxFunction)NULL, "Sliding scale", 0, -50, 50, 100, -1, -1, wxHORIZONTAL, "ian"); + panel->NewLine(); + (void) new wxListBox(panel, (wxFunction)NULL, "Constrained", wxSINGLE, -1, -1, 100, 90, 0, NULL, 0, "constrained"); + + view->AddRegistry(&myFormValidatorRegistry); + + if (useDialog) + { + view->ShowView(sheet, propDialog); + view->AssociateNames(); + view->TransferToDialog(); + propDialog->Centre(wxBOTH); + propDialog->Show(TRUE); + } + else + { + view->ShowView(sheet, propFrame->GetPropertyPanel()); + view->AssociateNames(); + view->TransferToDialog(); + propFrame->Centre(wxBOTH); + propFrame->Show(TRUE); + } +} +\end{verbatim} + +\section{Validator classes overview}\label{validatoroverview} + +Classes: \helpref{Validator classes}{validatorclasses} + +The validator classes provide functionality for mediating between a wxProperty and +the actual display. There is a separate family of validator classes for each +class of view, since the differences in user interface for these views implies +that little common functionality can be shared amongst validators. + +\subsection{wxPropertyValidator overview}\label{wxpropertyvalidatoroverview} + +Class: \helpref{wxPropertyValidator}{wxpropertyvalidator} + +This class is the root of all property validator classes. It contains a small +amount of common functionality, including functions to convert between +strings and C++ values. + +A validator is notionally an object which sits between a property and its displayed +value, and checks that the value the user enters is correct, giving an error message +if the validation fails. In fact, the validator does more than that, and is akin to +a view class but at a finer level of detail. It is also responsible for +loading the dialog box control with the value from the property, putting it back +into the property, preparing special controls for editing the value, and +may even invoke special dialogs for editing the value in a convenient way. + +In a property list dialog, there is quite a lot of scope for supplying custom dialogs, +such as file or colour selectors. For a form dialog, there is less scope because +there is no concept of `detailed editing' of a value: one control is associated with +one property, and there is no provision for invoking further dialogs. The reader +may like to work out how the form view could be extended to provide some of the +functionality of the property list! + +Validator objects may be associated explictly with a wxProperty, or they may be +indirectly associated by virtue of a property `kind' that matches validators having +that kind. In the latter case, such validators are stored in a validator registry +which is passed to the view before the dialog is shown. If the validator takes +arguments, such as minimum and maximum values in the case of a wxIntegerListValidator, +then the validator must be associated explicitly with the property. The validator +will be deleted when the property is deleted. + +\subsection{wxPropertyListValidator overview}\label{wxpropertylistvalidatoroverview} + +Class: \helpref{wxPropertyListValidator}{wxpropertylistvalidator} + +This class is the abstract base class for property list view validators. +The list view acts upon a user interface containing a list of properties, +a text item for direct property value editing, confirm/cancel buttons for the value, +a pulldown list for making a choice between values, and OK/Cancel/Help buttons +for the dialog (see \helpref{property list appearance}{appearance}). + +By overriding virtual functions, the programmer can create custom +behaviour for different kinds of property. Custom behaviour can use just the +available controls on the property list dialog, or the validator can +invoke custom editors with quite different controls, which pop up in +`detailed editing' mode. + +See the detailed class documentation for the members you should override +to give your validator appropriate behaviour. + +\subsection{wxPropertyFormValidator overview}\label{wxpropertyformvalidatoroverview} + +This class is the abstract base class for property form view validators. +The form view acts upon an existing dialog box or panel, where either the +panel item names correspond to property names, or the programmer has explicitly +associated the panel item with the property. + +By overriding virtual functions, the programmer determines how +values are displayed or retrieved, and the checking that the validator does. + +See the detailed class documentation for the members you should override +to give your validator appropriate behaviour. + +\section{View classes overview}\label{viewoverview} + +Classes: \helpref{View classes}{viewclasses} + +An instance of a view class relates a property sheet with an actual window. +Currently, there are two classes of view: wxPropertyListView and wxPropertyFormView. + +\subsection{wxPropertyView overview}\label{wxpropertyviewoverview} + +Class: \helpref{wxPropertyView}{wxpropertyview} + +This is the abstract base class for property views. + +\subsection{wxPropertyListView overview}\label{wxpropertylistviewoverview} + +Class: \helpref{wxPropertyListView}{wxpropertylistview} + +The property list view defines the relationship between a property sheet and +a property list dialog or panel. It manages user interface events such as +clicking on a property, pressing return in the text edit field, and clicking +on Confirm or Cancel. These events cause member functions of the +class to be called, and these in turn may call member functions of +the appropriate validator to be called, to prepare controls, check the property value, +invoke detailed editing, etc. + +\subsection{wxPropertyFormView overview}\label{wxpropertyformviewoverview} + +Class: \helpref{wxPropertyFormView}{wxpropertyformview} + +The property form view manages the relationship between a property sheet +and an existing dialog or panel. + +You must first create a panel or dialog box for the view to work on. +The panel should contain panel items with names that correspond to +properties in your property sheet; or you can explicitly set the +panel item for each property. + +Apart from any custom panel items that you wish to control independently +of the property-editing items, wxPropertyFormView takes over the +processing of item events. It can also control normal dialog behaviour such +as OK, Cancel, so you should also create some standard buttons that the property view +can recognise. Just create the buttons with standard names and the view +will do the rest. The following button names are recognised: + +\begin{itemize}\itemsep=0pt +\item {\bf ok}: indicates the OK button. Calls wxPropertyFormView::OnOk. By default, +checks and updates the form values, closes and deletes the frame or dialog, then deletes the view. +\item {\bf cancel}: indicates the Cancel button. Calls wxPropertyFormView::OnCancel. By default, +closes and deletes the frame or dialog, then deletes the view. +\item {\bf help}: indicates the Help button. Calls wxPropertyFormView::OnHelp. This needs +to be overridden by the application for anything interesting to happen. +\item {\bf revert}: indicates the Revert button. Calls wxPropertyFormView::OnRevert, +which by default transfers the wxProperty values to the panel items (in effect +undoing any unsaved changes in the items). +\item {\bf update}: indicates the Revert button. Calls wxPropertyFormView::OnUpdate, which +by defaults transfers the displayed values to the wxProperty objects. +\end{itemize} + +\section{wxPropertySheet overview}\label{wxpropertysheetoverview} + +Classes: \helpref{wxPropertySheet}{wxpropertysheet}, \helpref{wxProperty}{wxproperty}, \helpref{wxPropertyValue}{wxpropertyvalue} + +A property sheet defines zero or more properties. This is a bit like an explicit representation of +a C++ object. wxProperty objects can have values which are pointers to C++ values, or they +can allocate their own storage for values. + +Because the property sheet representation is explicit and can be manipulated by +a program, it is a convenient form to be used for a variety of +editing purposes. wxPropertyListView and wxPropertyFormView are two classes that +specify the relationship between a property sheet and a user interface. You could imagine +other uses for wxPropertySheet, for example to generate a form-like user interface without +the need for GUI programming. Or for storing the names and values of command-line switches, with the +option to subsequently edit these values using a wxPropertyListView. + +A typical use for a property sheet is to represent values of an object +which are only implicit in the current representation of it. For +example, in Visual Basic and similar programming environments, you can +`edit a button', or rather, edit the button's properties. One of the +properties you can edit is {\it width} - but there is no explicit +representation of width in a wxWindows button; instead, you call SetSize +and GetSize members. To translate this into a consisent, +property-oriented scheme, we could derive a new class +wxButtonWithProperties, which has two new functions: SetProperty and +GetProperty. SetProperty accepts a property name and a value, and calls +an appropriate function for the property that is being passed. +GetProperty accepts a property name, returning a property value. So +instead of having to use the usual arbitrary set of C++ member functions +to set or access attributes of a window, programmer deals merely with +SetValue/GetValue, and property names and values. +We now have a single point at which we can modify or query an object by specifying +names and values at run-time. (The implementation of SetProperty and GetProperty +is probably quite messy and involves a large if-then-else statement to +test the property name and act accordingly.) + +When the user invokes the property editor for a wxButtonWithProperties, the system +creates a wxPropertySheet with `imaginary' properties such as width, height, font size +and so on. For each property, wxButtonWithProperties::GetProperty is called, and the result is +passed to the corresponding wxProperty. The wxPropertySheet is passed to a wxPropertyListView +as described elsewhere, and the user edits away. When the user has finished editing, the system calls +wxButtonWithProperties::SetProperty to transfer the wxProperty value back into the button +by way of an appropriate call, wxWindow::SetSize in the case of width and height properties. + + + diff --git a/utils/wxprop/docs/contents.gif b/utils/wxprop/docs/contents.gif new file mode 100644 index 0000000000000000000000000000000000000000..3dddfa3dd5f0c652e8b27cd6c29e1fdd49ced5a8 GIT binary patch literal 231 zcmVG0Pz3-zrVld=jU&4Z(9HWEC2ui06_p40008OjE||y?GK}z zO&EZ)-n{z{a)K3v=81;mmA0S4Fj_r^UyThZDG{h6k9m zHI_(7spd!5_$SH6m{Q-cu3}3Hu`2^Nfa3dZ+VyHW%gtsZ`jV7k@%j8Ij}~W) zc{NUP6)X3OWa^|{8nl?rh|gZ1@{(qofnsWu+nmFHSnaq>lB41zSVC9`a)_v*xHx0L S5h*!IS!o$ynW>ps0028f2}>3L literal 0 HcmV?d00001 diff --git a/utils/wxprop/docs/prop.hpj b/utils/wxprop/docs/prop.hpj new file mode 100644 index 0000000000..a8226a4b96 --- /dev/null +++ b/utils/wxprop/docs/prop.hpj @@ -0,0 +1,17 @@ +[OPTIONS] +BMROOT=c:\wx\utils\wxprop\docs ; Assume that bitmaps are where the source is +TITLE=Property Classes Manual +CONTENTS=Contents +COMPRESS=HIGH + +[FILES] +Prop.rtf + +[CONFIG] +CreateButton("Up", "&Up", "JumpId(`Prop.hlp', `Contents')") +BrowseButtons() + +[MAP] + +[BITMAPS] + diff --git a/utils/wxprop/docs/prop.tex b/utils/wxprop/docs/prop.tex new file mode 100644 index 0000000000..89f12f7713 --- /dev/null +++ b/utils/wxprop/docs/prop.tex @@ -0,0 +1,55 @@ +\documentstyle[a4,makeidx,verbatim,texhelp,fancyhea,mysober,mytitle]{report} +\input psbox.tex +% Remove this for processing with dvi2ps instead of dvips +%\special{!/@scaleunit 1 def} +\parskip=10pt +\parindent=0pt +\title{User Manual for wxWindows Property Sheet Classes Version 2.0} +\winhelponly{\author{by Julian Smart, Anthemion Software\\$$\image{}{prop1}$$}} +\winhelpignore{\author{Julian Smart, Anthemion Software} +\date{October 1997} +} +\makeindex +\begin{document} +\maketitle +\pagestyle{fancyplain} +\bibliographystyle{plain} +\setheader{{\it CONTENTS}}{}{}{}{}{{\it CONTENTS}} +\setfooter{\thepage}{}{}{}{}{\thepage}% +\pagenumbering{roman} +\tableofcontents + +\chapter*{Copyright notice} +\setheader{{\it COPYRIGHT}}{}{}{}{}{{\it COPYRIGHT}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% + +\begin{center} +Copyright (c) 1997 Julian Smart, Anthemion Software +\end{center} + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose is hereby granted without fee, provided that the +above copyright notice, author statement and this permission notice appear in +all copies of this software and related documentation. + +THE SOFTWARE IS PROVIDED ``AS-IS'' AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, +IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF +MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +IN NO EVENT SHALL JULIAN SMART OR ANTHEMION SOFTWARE BE LIABLE FOR ANY SPECIAL, +INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED +OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +\input{body.tex} +\input{classes.tex} +\input{changes.tex} + +\newpage + +\addcontentsline{toc}{chapter}{Index} +\setheader{{\it INDEX}}{}{}{}{}{{\it INDEX}}% +\setfooter{\thepage}{}{}{}{}{\thepage}% +\printindex +\end{document} diff --git a/utils/wxprop/docs/prop1.bmp b/utils/wxprop/docs/prop1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..92c6beec8bc0d6a4d69d23cbd914cca994c40b55 GIT binary patch literal 29238 zcmeHQyKdY@6r~dbTc}WwBDJB)P-`HKnjl%gMG)*Sq;ky!K~{wUEnL{@k}h$R!lhaV zNTI^|gnWg7G{P1OtUBhLI}eh}JACX8mn=A|-61b$?mayBlJnq0-~RCR&xxd8@%tR# zubw2yzsR2?Pep$BlVtMq1%CN8=~I&6FZuMzWcbBma(8!^tX3;*$mB1{GA`kZ4@LYL zQM$YyOIjsY%dw;hi|&bumx&jh0bM%9OPH4{GzG(_?UFva)L|Y+n!4uDVtG0rE`2j1 zEH7=#oQ!~%ms^R2%N)xh+sw1gBI9Q>Uu5`$Aj6u7un0-k-IG+dm_v22Y84C0F7Vml zV>2vp4T_NASJr|W0~3`Aek?)C}AT@bogS^9ZP0nupwU3q=cosy8)vCak*}3 zjl47@#7mOQio66X6twN(qoCS+!^$lp(~KWb zfo#2AOUBiM(;8Z+Q!-uKcBlVRz>*OQNMZHEQvnO;R`pe}B#sxs!d(HH!xObwW!zsa zRk55hUL<6aQ+Nw5Uh7pgbzvE`SY^o6q+l`SV%S$LhJ_U@LP89ugl&elRIr2!9zi}~ z(Mg_oY0FFCq^MVqDphKhNQ{rzp4z50Ol<2dh!=DL(6I~F zsA6$N!*yJV*tvqmfM9!lzlCXR8720yyy(*(n`Fz@w9EH^;&yK?HIkT zW(5mdW;w}4KG*TQ85%HJfJeguAcDr))v_uUJDz6UsBHk0g$Az{SQU#IPrJU9hJR0) zaeYl?1&b{mnHP3k8hEZ?apP&`;jU@T-i0=y1&6&!{y6G=_k#wi*BgUHd*4uPj|wL1!@f{3&SEW= z#uGvu3{FcG3s2PSvtyjZ#@d{>ab~a=n9aEOv~K>|=`QEc$tDR?>Y>w26$=_gX{UMN z)Hl~SN4YheJY}tHsd)|c=T&b=G00iba~;W(0W&hXqs4fj9&&rF)dh zSUBk{r)`o2p14(bshz*h?H8Abg|$7`#f`EIETwz505)2ImFa;h2$E?!fU>6_8v zfqj$G>JPB+@(cDZ)OBFI6z^#hUJAN|6uIx}kUhj#-X{i+Ca85qy-+5^_-TQMyb?hT$cZ zWx*o-@qVthU8RT@4GUNy7X}NKxk6qD1NQ;*6FUhOm|-gMVrX%^n6<&Mm=N*D5myZs z-lH$KNgs_D8zLSHBW5Tp;31C}deHF#N-$LE<4SQTUPwcJ91#nW;U%_fyuKh7+6EQg zM-EHljqF}^=Y1?5Wg$aw!6?pOK(YMoHls(Q01+w1Tquj8=Qq#xG`Wj>U#?z)tCYSI35>+hlofrDaSqe|UJfzqq}Ad>LE9inn-r;YqNSZ|{$Rd1Gdxtlo^AW-XV?=qZ zFI~fftV@oneIJu)KQp>c`Jtym+yL1%C1X94yLs1sTT43txl} zXSRppT~fdTufb`S7fd~@K07-*v%0+_#8q?_3^RVrm3`pzSm@2JKC18{gJ*|j`!0KY zc7F4WyNdrWAwg?n*W6klj)7R>8L%XT2*|`PzmL08@ ze`dKW951$PzG0`bvZ`Py#mnnoPOi_NKR>UI function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 42 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 bf0000 00bf00 bfbf00 0000bf 00bfbf c0c0c0 808080 ff0000 00ff00 +ffff00 0000ff 00ffff ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +278 208 8 % dimensions of data +[278 0 0 -208 0 208] % mapping matrix +rlecmapimage + +7f067f0614060000 +81060d7f0d7f0d110d810700 +82060d067f067f061006810700 +82060d067f067f061006810700 +82060d068106047f047f040c040106810700 +82060d068106048204060d820d060783070d0702010203098102047f047a040106810700 + +82060d068106048704060b060001020781070283020702098109028102047f0446040e0d +81000d0d0d81000481040d0d0d81000481040682060700 +82060d0681060482040806810600820002078507020902070201028109047f044604810d +060b068307000d060b068207000482040d060b068207000481040682060700 +82060d0681060481040685060800040307820702098409020702098109040104050d2d04 +030d0204010d1a04050d6604810d060b068307000d06810600070001068207000482040d +060b068207000481040682060700 +82060d068106048704060b0604000a0789070209020702070209040104010d0204010d1d +04010d0b04010d0104010d0104010d1204010d0704010d1004010d5504810d060b068307 +000d06810600070001068207000482040d06010601000306010001068207000481040682 +060700 +82060d068106048204070681060001000107010286070209020702040104010d0204010d +1d04010d0b04010d0504010d1204010d0704010d1004010d5504810d060b068307000d06 +820600060506810006830607000482040d06020601000106010002068207000481040682 +060700 +82060d0681060485040d0607060d010d8407020002090109820200040104010d0204010d +81040d010d0104030d0104040d0204030d0104020d81040d010d81040d820d040d810d04 +0304010d0504040d0204030d0204030d0104020d0604010d0404030d0204020d0104020d +5404810d060b068307000d06820600060506810006830607000482040d06030603000306 +8207000481040682060700 +82060d068106048104070507010006020204050d0104010d0104010d0104010d81040d81 +0d0481040d820d040d810d0481040d820d040d810d0481040d810d0481040d820d040d81 +0d040404030d0204020d81040d820d040d810d0481040d820d040d810d0481040d820d04 +0d810d040604010d0304010d0104010d81040d820d040d820d040d810d045404810d060b +068307000d06820600060506810006830607000482040d06040601000406820700048104 +0682060700 +82060d068106048104050505010006030204010d0504010d0104010d0104010d81040d81 +0d0481040d820d040d040d81040d810d0481040d810d0481040d820d040d810d04070401 +0d0104010d0104010d81040d040d81040d040d81040d810d040604010d0304050d010401 +0d0204010d5504810d060b068307000d06820600060506810006830607000482040d0603 +06030003068207000481040682060700 +82060d0681060481040c010c8205080c830c05030a020a81030a810a040104010d050401 +0d0104010d0104010d81040d810d0481040d820d040d810d040304010d0104010d010401 +0d81040d810d040704010d0104010d0104010d81040d810d040304010d0404010d070401 +0d0304010d0604010d0104010d5504810d060b068307000d068206000605068100068306 +07000482040d06020601000106010002068207000481040682060700 +82060d068106048c040c05070507050c05030a030a840a03000a040104010d0504010d01 +04010d0104010d81040d810d0481040d820d040d810d0481040d820d040d810d0481040d +810d040104020d0504010d0104010d0104010d0104010d81040d810d0481040d820d040d +810d0481040d820d040d810d040604010d0304010d0104010d81040d820d040d820d040d +810d045404810d060106050003068307000d06820600060506810006830607000482040d +06010601000306010001068207000481040682060700 +82060d0681060482040c08020886070c05030a030a010a82030a040104010d0504010d02 +04030d0104040d0204030d0104010d0204010d0104010d0704030d0204010d0104010d01 +04030d0204030d0204010d0604010d0404030d0204020d0204010d5404810d0601060500 +03068307000d06810600070001068207000482040d060b068207000481040682060700 +82060d0681060482040c080208010c8205030a810a0384030a030a041404010d1404010d +7f041804810d060b068307000d060b068207000482040d060b0682070004810406820607 +00 +82060d0681060482040c080308850c05030a030a010a82000a041404010d1204020d7f04 +1904810d070c0782000d070c0781000482040d070c0781000481040682060700 +82060d0681060483040c05080208850c05030a030a810a0382030a047f0446041f000104 +0f0001040106810700 +82060d0681060481040c050c8205030a050a7f047b040106810700 +82060d068106047f047f040c040106810700 +82060d067f067f061006810700 +82060d067f067f061006810700 +82060d0637067f073907810d061c06810700 +82060d06030616000306160001068107007f00360082060d0681060015000406810700 +82060d06020681000d140d820700068206000d140d8507000607000d7f0d350d84060d06 +000d140d820700060206810700 +82060d06020682000d06120601078100068306000d061206010784000607000d7f0d350d +84060d06000d130d01078100060206810700 +82060d06020682000d06120601078100068306000d061206010784000607000d7f0d350d +84060d06000d810d06110601078100060206810700 +82060d06020682000d06120601078100068306000d061206010784000607000d7f0d350d +84060d06000d810d06110601078100060206810700 +82060d06020682000d0603068100060606810006030601078100068306000d0612060107 +84000607000d820d000d7f0d320d84060d06000d810d06110601078100060206810700 +82060d06020682000d06030683000600060306810006040601078100068306000d061206 +010785000607000d0081000d7f0d320d84060d06000d810d061106010781000602068107 +00 +82060d06020682000d06040683000600060106810006050601078100068306000d060b06 +8100060406010785000607000d000100810d0081000d820d000d810d0081000d810d0002 +007f0d220d84060d06000d810d06110601078100060206810700 +82060d06020682000d06050685000600060006060601078100068306000d060a06830006 +00060306010785000607000d0081000d810d0082000d000100810d0082000d0081000d81 +0d0081000d7f0d200d84060d06000d810d06110601078100060206810700 +82060d06020682000d0606068300060006070601078100068306000d0609068300060006 +0406010785000607000d0081000d810d0082000d000100810d0082000d0081000d810d00 +81000d7f0d200d84060d06000d810d06110601078100060206810700 +82060d06020682000d0607068300060006060601078100068306000d0604068100060106 +83000600060506010785000607000d0081000d010d0200810d000100010d0100010d0100 +7f0d210d84060d06000d810d06110601078100060206810700 +82060d06020682000d06060685000600060006050601078100068306000d060306870006 +0006000600060606010785000607000d0081000d010d0200810d000100010d0100010d01 +007f0d210d84060d06000d810d06110601078100060206810700 +82060d06020682000d06050681000601068300060006040601078100068306000d060406 +850006000600060706010784000607000d810d0081000d810d0081000d010d0100020d03 +007f0d220d84060d06000d810d0603060100810600820006008100060406010781000602 +06810700 +82060d06020682000d06040681000603068300060006030601078100068306000d060506 +83000600060806010784000607000d7f0d350d84060d06000d810d060306010081060082 +000600810006040601078100060206810700 +82060d06020682000d060306010005060100040601078100068306000d06060681000609 +06010784000607000d7f0d350d84060d06000d810d06110601078100060206810700 +82060d06020682000d06120601078100068306000d061206010784000607000d7f0d350d +84060d06000d810d06110601078100060206810700 +82060d06020682000d06120601078100068306000d061206010784000607000d7f0d350d +84060d06000d810d06110601078100060206810700 +82060d06020682000d0714078100068306000d07140784000607000d7f0d350d85060d06 +000d0714078100060206810700 +82060d06020682000d0714078100068306000d07140784000607000d7f0d350d84060d06 +000715078100060206810700 +82060d06030616000306160001068207000d7f0d350d82060d0681060015000406810700 + +82060d0637068107067f063706810d061c06810700 +82060d0637067f0d3a0d1d06810700 +82060d0601067f077f070a07810d060106810700 +82060d0601068107007f007f00070082060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d010d0300010d0400020d03007f0d720d82060d060106810700 +82060d0601068207000d810d0081000d810d0082000d0081000d810d0082000d0081000d +810d0081000d7f0d700d82060d060106810700 +82060d0601068207000d810d0081000d810d0082000d0081000d810d0082000d0004007f +0d710d82060d060106810700 +82060d0601068207000d810d0081000d810d0082000d0081000d810d0082000d0081000d +7f0d740d82060d060106810700 +82060d0601068207000d810d0081000d810d0082000d0081000d810d0082000d0081000d +810d0081000d7f0d700d82060d060106810700 +82060d0601068207000d010d0300010d0100010d0100010d03007f0d720d82060d060106 +810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d060106ff0700040a040a040a040a040a040a040a040a040a040a040a040a040a04 +0a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a04 +0a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a04 +0a040a040a040a040a040a040a040a040a040a040a040a040a040aff040a040a040a040a +040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a +040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a +040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a +040a040a040a040a040a040a8c040a040a040a040a040a060d060106810700 +82060d0601068307000a047f047f04050482060d060106810700 +82060d060106820700047f047f040504830a060d060106810700 +82060d0601068307000a0482040d047f047f04020482060d060106810700 +82060d0601068207000481040d810d047f047f040104830a060d060106810700 +82060d0601068307000a0d020d81040d810d0482040d0481040d810d0481040d020d7f04 +720482060d060106810700 +82060d0601068207000481040d810d0481040d820d040d010d81040d820d040d810d0481 +040d810d047f046f04830a060d060106810700 +82060d0601068407000a040d810d0481040d820d040d010d81040d820d040d810d048104 +0d810d047f04700482060d060106810700 +82060d0601068207000481040d810d040104020d81040d010d0104010d0104010d7f0470 +04830a060d060106810700 +82060d0601068407000a040d810d040104020d81040d010d0104010d0104010d7f047104 +82060d060106810700 +82060d060106820700040104010d0104010d0204010d0204030d7f047104830a060d0601 +06810700 +82060d0601068307000a047f047f04050482060d060106810700 +82060d060106820700047f047f040504830a060d060106810700 +82060d060106ff07000a040a040a040a040a040a040a040a040a040a040a040a040a040a +040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a +040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a +040a040a040a040a040a040a040a040a040a040a040a040a040a04ff0a040a040a040a04 +0a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a04 +0a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a04 +0a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a04 +0a040a040a040a040a040a048c0a040a040a040a040a04060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d010d81000d810d0081000d7f0d7e0d82060d060106810700 +82060d0601068207000d810d0081000d810d0081000d7f0d7e0d82060d060106810700 +82060d0601068307000d000200810d000300010d0300010d0300020d03007f0d690d8206 +0d060106810700 +82060d0601068207000d810d0081000d810d0081000d810d0082000d0081000d010d0100 +010d0100810d0081000d810d0081000d7f0d670d82060d060106810700 +82060d0601068207000d810d0081000d810d0081000d810d0082000d0081000d010d0500 +810d0004007f0d680d82060d060106810700 +82060d0601068207000d810d0081000d810d0081000d810d0082000d0081000d010d0100 +040d01007f0d6c0d82060d060106810700 +82060d0601068207000d810d0081000d810d0081000d810d0082000d0081000d010d0100 +010d0100810d0081000d810d0081000d7f0d670d82060d060106810700 +82060d0601068207000d010d0100810d0081000d810d0082000d0081000d020d0300020d +03007f0d690d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068207000d7f0d7f0d060d82060d060106810700 +82060d0601068107067f067f060806810d060106810700 +82060d0601067f0d7f0d0b0d0206810700 +82060d067f067f061006810700 +82060d067f067f061006810700 +82060d0601067f077f070b070206810700 +82060d0601068107007f007f000800810d060106810700 +82060d0601068207000d7f0d760d0e060100810d060106810700 +82060d0601068207000d7f0d760d81060d0b0d81070082000d060106810700 +82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700 +82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700 +82060d0601068207000d1c0d0100120d01000e0d81000d6b0d0400400d82060d060a0681 +070082000d060106810700 +82060d0601068207000d010d81000d190d81000d120d81000d7b0d85000d000d000d3f0d +82060d060a0681070082000d060106810700 +82060d0601068207000d810d000300030d0200010d0100010d0100020d0100810d008400 +0d000d0081000d090d0300010d82000d0081000d020d0200020d0200040d0300020d0200 +5f0d81000d020d0100810d0082000d0081000d810d0081000d010d02002c0d82060d0603 +06810006040681070082000d060106810700 +82060d0601068207000d010d81000d040d81000d010d81000d820d000d010d81000d820d +000d810d0081000d810d0081000d820d000d070d81000d010d81000d810d0081000d820d +000d820d000d010d81000d020d81000d020d81000d010d81000d820d000d010d81000d5d +0d81000d030d0100030d81000d010d81000d820d000d010d81000d2a0d82060d06020602 +00040681070082000d060106810700 +82060d0601068207000d010d81000d040d81000d010d81000d820d000d010d81000d820d +000d010d81000d820d000d010d81000d070d81000d040d81000d010d81000d820d000d01 +0d81000d020d81000d020d81000d040d04005e0d81000d030d81000d030d81000d010d81 +000d810d0003002b0d82060d0601060400030681070082000d060106810700 +82060d0601068207000d010d81000d010d81000d820d000d010d81000d820d000d810d00 +81000d820d000d010d81000d820d000d010d81000d070d81000d040d81000d010d81000d +820d000d010d81000d020d81000d020d81000d040d81000d610d81000d030d81000d030d +81000d810d0081000d820d000d2e0d82060d068106000500020681070082000d06010681 +0700 +82060d0601068207000d020d0200030d0200030d0100810d0081000d810d000200810d00 +0100810d000100080d0300810d000100810d000100010d0200020d0400020d0300020d03 +005d0d0200020d0300030d0100810d0081000d810d0002002b0d82060d060a0681070082 +000d060106810700 +82060d0601068207000d1a0d81000d7f0d590d82060d060a0681070082000d0601068107 +00 +82060d0601068207000d170d02007f0d5b0d82060d060a0681070082000d060106810700 + +82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700 +82060d0601068207000d7f0d760d8106070c070100810d060106810700 +82060d0601068207000d7f0d760d1000810d060106810700 +82060d0601068207000d7f0d760d92060d060d060d060d060d060d060d060d000d060106 +810700 +82060d0601068207000d7f0d770d91060d060d060d060d060d060d060d06000d06010681 +0700 +82060d0601068207000d030d81000d7f0d2d0d81000d020d0300390d92060d060d060d06 +0d060d060d060d060d000d060106810700 +82060d0601068207000d7f0d320d0100030d81000d3c0d91060d060d060d060d060d060d +060d06000d060106810700 +82060d0601068207000d010d0200040d0200010d0100810d0081000d7f0d1c0d83000d00 +0d020d81000d3b0d92060d060d060d060d060d060d060d060d000d060106810700 +82060d0601068207000d030d81000d020d81000d010d81000d810d0081000d820d000d7f +0d1a0d81000d820d000d020d02003b0d91060d060d060d060d060d060d060d06000d0601 +06810700 +82060d0601068207000d030d81000d030d0300010d81000d010d81000d7f0d1a0d040005 +0d81000d380d92060d060d060d060d060d060d060d060d000d060106810700 +82060d0601068207000d030d81000d020d81000d010d81000d820d000d010d81000d7f0d +1d0d81000d010d81000d010d81000d380d0e060100810d060106810700 +82060d0601068207000d010d0400010d0800810d0001007f0d1c0d0200020d02003a0d81 +060d0b0d81070082000d060106810700 +82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700 +82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700 +82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700 +82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700 +82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700 +82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700 +82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700 +82060d0601068207000d810d0081000d060d81000d030d0100040d01007f0d170d020003 +0d0300390d82060d060a0681070082000d060106810700 +82060d0601068207000d010d81000d0d0d81000d040d81000d7f0d150d81000d010d8100 +0d010d81000d3b0d82060d060a0681070082000d060106810700 +82060d0601068207000d010d82000d0081000d010d0200050d81000d040d81000d7f0d18 +0d81000d020d81000d3b0d82060d060a0681070082000d060106810700 +82060d0601068207000d010d0100010d81000d020d81000d040d81000d040d81000d7f0d +170d81000d030d02003a0d82060d060a0681070082000d060106810700 +82060d0601068207000d010d81000d010d81000d020d81000d040d81000d040d81000d7f +0d160d81000d070d81000d380d82060d060a0681070082000d060106810700 +82060d0601068207000d010d81000d010d81000d020d81000d040d81000d040d81000d7f +0d150d81000d040d81000d010d81000d380d82060d060a0681070082000d060106810700 + +82060d0601068207000d810d000300020d0400010d0400010d04007f0d140d0400020d02 +003a0d82060d060a0681070082000d060106810700 +82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700 +82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700 +82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700 +82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700 +82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700 +82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700 +82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700 +82060d0601068207000d030d81000d0a0d0100050d81000d7f0d5b0d82060d060a068107 +0082000d060106810700 +82060d0601068207000d110d81000d7f0d620d82060d060a0681070082000d0601068107 +00 +82060d0601068207000d010d0300010d0100010d0100030d81000d020d0200040d020001 +0d0100810d0081000d7f0d070d0200010d0100810d0081000d020d0200330d82060d060a +0681070082000d060106810700 +82060d0601068207000d040d81000d010d81000d010d81000d020d81000d040d81000d02 +0d81000d010d81000d810d0081000d820d000d7f0d050d81000d010d81000d810d008100 +0d820d000d820d000d010d81000d310d82060d060a0681070082000d060106810700 +82060d0601068207000d040d81000d010d81000d010d81000d020d81000d040d81000d03 +0d0300010d81000d010d81000d7f0d050d81000d010d81000d820d000d010d81000d810d +000300320d82060d060a0681070082000d060106810700 +82060d0601068207000d040d81000d010d81000d810d0081000d020d81000d040d81000d +020d81000d010d81000d820d000d010d81000d7f0d050d81000d010d81000d820d000d01 +0d81000d820d000d350d82060d060a0681070082000d060106810700 +82060d0601068207000d040d81000d020d0100810d0082000d000300010d0400010d0800 +810d0001007f0d060d0200010d0200810d000100010d0300320d82060d060a0681070082 +000d060106810700 +82060d0601068207000d040d81000d7f0d6f0d82060d060a0681070082000d0601068107 +00 +82060d0601068207000d010d02007f0d710d82060d060a0681070082000d060106810700 + +82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700 +82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700 +82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700 +82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700 +82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700 +82060d0601068207000d810d0081000d060d81000d7f0d690d82060d060a068107008200 +0d060106810700 +82060d0601068207000d010d81000d0b0d81000d7f0d640d82060d060a0681070082000d +060106810700 +82060d0601068207000d010d82000d0081000d010d0200020d0400010d0200820d000d02 +0d0200010d0100810d0081000d7f0d050d0100810d0081000d020d0200010d0100810d00 +81000d020d02002c0d82060d060a0681070082000d060106810700 +82060d0601068207000d010d0100010d81000d020d81000d020d81000d040d85000d000d +000d820d000d010d81000d810d0081000d820d000d7f0d050d0100010d81000d820d000d +010d81000d810d0081000d820d000d820d000d010d81000d2a0d82060d060a0681070082 +000d060106810700 +82060d0601068207000d010d81000d010d81000d020d81000d020d81000d040d85000d00 +0d000d010d0300010d81000d010d81000d7f0d050d81000d010d81000d820d000d010d81 +000d820d000d010d81000d810d0003002b0d82060d060a0681070082000d060106810700 + +82060d0601068207000d010d81000d010d81000d020d81000d020d81000d010d81000d86 +0d000d000d000d820d000d010d81000d820d000d010d81000d7f0d050d81000d010d8100 +0d820d000d010d81000d820d000d010d81000d820d000d2e0d82060d060a068107008200 +0d060106810700 +82060d0601068207000d810d000300020d0400020d0200010d0600810d000400810d0002 +007f0d060d0200810d000100010d0200010d0200810d000100010d03002b0d8106070c07 +0100810d060106810700 +82060d0601068207000d240d81000d7f0d4f0d1000810d060106810700 +82060d0601068207000d230d02007f0d4f0d0e060100810d060106810700 +82060d0601068207000d7f0d760d81060d0b0d81070082000d060106810700 +82060d060106820700047f04760482060d060a0681070082000d060106810700 +82060d060106820700047f04760482060d060a0681070082000d060106810700 +82060d060106820700047f04760482060d060a0681070082000d060106810700 +82060d060106820700047f04760482060d060a0681070082000d060106810700 +82060d060106820700043404810d041304010d7f04290482060d06810600050002068107 +0082000d060106810700 +82060d060106820700041d04810d042b04810d046204810d04430482060d060106040003 +0681070082000d060106810700 +82060d060106820700040204030d0204020d0104010d81040d810d040204030d81040d03 +0d0204010d81040d810d040104020d0204020d0204010d81040d810d040204020d030401 +0d82040d046104040d0104020d81040d010d0104020d330482060d060206020004068107 +0082000d060106810700 +82060d060106820700040104810d040104810d0482040d040104810d0481040d810d0482 +040d0482040d040404810d040504010d0304810d040104810d040204810d040204010d01 +04810d0482040d040104810d0482040d0481040d810d046204810d040404810d04010481 +0d0482040d040104810d04310482060d060306810006040681070082000d060106810700 + +82060d060106820700040104810d040404810d040104810d0482040d040104810d040104 +020d0204810d040504810d040404030d0304810d040204810d040104810d0481040d030d +0104810d040104810d046204810d040404850d040d040d0482040d040104810d04310482 +060d060a0681070082000d060106810700 +82060d060106820700040104810d040404810d040104810d0482040d040104810d040404 +810d0482040d040104810d040104810d040304810d040104810d040204810d040204810d +040104810d0482040d040404810d040104810d046204810d040104810d0486040d040d04 +0d0482040d040104810d04310482060d060a0681070082000d060106810700 +82060d060106820700040204030d0204020d0104020d81040d010d81040d020d0304020d +0204030d0204050d81040d030d81040d010d81040d010d0104030d0204040d6304020d03 +04830d040d040204020d330482060d060a0681070082000d060106810700 +82060d060106820700047f04760482060d060a0681070082000d060106810700 +82060d060106820700047f0476048106070c070100810d060106810700 +82060d060106820700047f0476041000810d060106810700 +82060d0601068107067f0677061000810d060106810700 +82060d0601067f0d7f0d0b0d0206810700 +82060d067f067f061006810700 +82060d067f067f061006810700 +82060d067f067f061006810700 +82060d067f067f061006810700 +82060d067f067f061006810700 +82060d067f067f061006810700 +82060d067f067f061006810700 +82060d067f067f061006810700 +82060d067f067f061006810700 +8106077f077f0712070000 +7f007f001500 + +% +% Compression made this file 6.27% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/wxprop/docs/prop1.gif b/utils/wxprop/docs/prop1.gif new file mode 100644 index 0000000000000000000000000000000000000000..48715b55253c8e1bb2e8a397c6550b976f8dee16 GIT binary patch literal 3042 zcmV<83mx=FNk%w1VHN?<0J8u90002L0002L0KdNg006(g0KWjgzreu2fPjGi00030 z0RR60009600RI60|NsC0EC2ui02Tqz06+x(@W@H4y*TU5yZ>M)j$~<`2XH(RK}ZQe z3)0={6dgzM67$gcx;)gm|& z@C3qP7%c3I`+~U~N_|0qfr5R1Qh$DfhlPrbMTmraeSlb%mY0tcVP6znUYlZSGCmz> zV=87SsueY@uCK7Mva__cwzs&sy1Tr(sjF+LT^1@T62`1+DZd!V6E!NHU=LqEUDVfM zQQO?z-rwNi;^XAy=I1|b*CWuKs1(EO%JCxYp6K}b`uqI-{^=~%)l+tg%_&d_6DnND zu%W|;5F<*QNU@^Dix|b23HB_TM{NGqx`6sevZTqAC{v;|D2gSQJ(yz3oJq5$&6_xF zx_ozPkD(@k7UdjDw5ZXeNQLa&3FM>7r%thhy^0-6wk$ue zr_8Ed%a$!#QElVOovUv}I4<-!rnT0TuV1HFv-RzUbucx*hYBZFQkX8(#*jlI?rIQW z$Gkk@I^N8=Ge9;hLW5q`k*Vj?sMWH}fcL8D#o-#mPE9+uVcBh0V`yFaYVF^^rRu)G zyP)qVffdUxoE+rr;B%W-OWd67a0|s-9*54o`&nk#tMv|xm^tIYBB`TS?7gk@^?%1+ zXC>Zv$E5i4>)+3R$b5I0?f%r?fCLt3AQt~!<{EgbH0a=i5Jo8Bgc0g>;Ds1ws9_cM z9pFMNUkD)Lhyq9w6eDFUA=HW}QUXaNDXJ)Aij=rGNg_$02-J)l=ENXS;J}hh(t$@FQ1&S0lvL8x;W0m+F;A8n*n?YpVCJJvIs-YQ7naSWpeA-(R#1$Z z&UCVdG=Wt!jdRn5si$ZHh0xA;@LUwAMSJaO=sA@M>dtG2HtMK1Z{73gq?C$w15Ig=B`}!hIFocqV+r4y5!v}uviHmv|zy1J-6JzWi31zy4(U>D8m#} zRj|4TPyBGj9RG81yxk`3&AuI%ti;FlX&11`ER$pxI3NpH1`{*ad`QhnJaXeCJLhOK z%|6ihDN;A$TnNwy>J}%)fWF-F(_A&Z?bK9PZS~b%W`_0FTzBm?Fgzj2KnelqV1o`f z>&XN9P>pABJO}TAAsNVA{0f}c*Wp`Q-QeKPoxXiF+!eF zMxc7%mxhJ@ZY*g)0-8Um2TX|z%_5DE2xa3DrtgTO&pNZd`r?cu;kYM|6C*h(niylG zD0O50MjV{i@%aLxVgftr$H%Tb6u5NJd>PMQuJzZ{S8x6GXD*Y^mfJ@YH`H;B+5Muz z{IYcI&$KCz_Zx%1nfU9I4-bQH?xubQ^~=frbawVnto!`ZUi_p+4^6mfP3hAec=AV_ zIeia+?-C&8II+6~%1;vy=tV0Os6j75Fg0W9AVKVAy$}8dLh^c`30L?EXlVl*cY>h` zS;#SF@vm5txgiQ^2(2CZupFU+N#T}9#3Je^h?xdR#V#HW2xSxqPu z)UQD1I0aTt5}I;YEvcMsm@An4<6}VAi6?euMW4ltN;mQOn203OiV%&c5&jS= zGrJ~4rnS$DbFxO(W|)hrdEWd z)ULx0meoEQSmJYHrPSnLN}A- zrEa6L!)WqW=Tf?U!ZN(WT?(9GBvaUJa(M%S3ILF{9E`$nJ7UBl8ZlZyoX&M7;u&d0 z+qxY6gtd(=MLfrh^7J7^#dNH>PiB#y%A>b#vb?+ zkW1k}9q(9ze)6%_>dHU_S}>Pof(tE;{2e5N;7=k3@|(`5hWp{q$z9&xN2YbXGzy%s`X+ka%oLE!-b$nZ%fuV?p9QH&FfzK`q#kjAU0dA&0!OJV0S!rK9i}#W;;dMVIpG=$DC(q3lp1P z#Iu>L&7EX(TUnt3*007b?sAj++~!U7r|3rS zw$PLA^QALA=%uu^)TdsxC{q3ESO==EgU$7>d;RNR-$l-!4nhwQlTl=cc|0j@l5NK( zZZ_A`CQegR^32`jWi&ZR%s8?;@%_&FLJk<+PATT#P=|q!n)$-hOpy`PoxS{)!y>QF zRCBVt7#f)|Zs>1bpJBP4hc*Uhw@Z*5>h^r!Zc=QiG>unNL5Jx@)XlgipIk zY|m=lbEeC-I6J$1ugcNj@-SlurN;`N`v4vvG>ykQ>PbK9^spy<&+k|C)hR=R8u{+r zho|w!k9>LFT_K`BbL{EjG;hRg_{3-b+BF`3$NunM)b+Pz#F+i1P740}vPXLnbOyqQ zFo$Mllc!_pG#B?*9SgWIakoQ~$AI&fP~dldUnGFabb-wmKm@pb`6qw-mwX|JeIpop zC8&QNXl&<#fGKzq3dnkRR(VtAcYoJTB`1Am5rgNHFbUXw1l3NFw0Rv^dliUwu;D)# zXoComesaWwfcJWoafI8UfiJifJa~l=vw|e3g=N8mZWn=G*g{ljfUS3iP{@4Lhl3$! zgKb!ZN5+Nb*H72?Po)=xbp(0&LWE)%4q)hdfXIibM`l*2MTEF|rguYdxO>e5f+|sn zV+aJp)OZ(HiA2$WmY9iGRED>sV3%NTqMFzriQ-WPGjJv%38b?#1^00BMOuJ^2!r4v z_|{yebs`9sAEH!2Ov7+1HB&65UMLleFcMO}NQ=IBZ|fB_Bh^v`f{CXXBha{tu=rZ) zC5@qFTEj?-$Owxq6^jPqjG-8gmjHaVP=I5Qb?BIm_~TGJrH=0Sj-NI?@Hmh3NPrhp kkN60WR+W$ZNRRv2j{vETegtC#S&#;KkO+B55dZ)HJKB--Jpcdz literal 0 HcmV?d00001 diff --git a/utils/wxprop/docs/prop2.bmp b/utils/wxprop/docs/prop2.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d909f41abcab4ce03acd00a1ea1b44165dcb15e7 GIT binary patch literal 42526 zcmeI5KabqF8OC*Y2F8Gk3DTqs4qF+U<^UHdwh592t_t=mq;f65K{UV}umdBwRd?x< zYf>0U5V$hn!o?Q$r&-_{V+sSa-Q;;*k{VLtNaRX0q7UTGN+djqIwb3r^@>vmMO8LhF_Hk+f=nPwPA}nd09+Fl_pda=4;qvQy#}DL`My2SHa*-M z`9;p}tB~^!$J=@}vNw*>%QiG|Jafefn)S+h#VHV1I{R1FD^7v9(%HYVUU3SZQ2eOygb; zyI`WhTrTBc<#z;gx)E&@MOpEK=mOWA%LP8XlYk87VJ*p$_lU}ZX)L84;_Ai`3nE+H z*>dX9irFe;KCW*rfaSUu@BEadfZ_fRxdaSx=CdKWUxi|lRtZ_^4P+*fDc-8b&CMo) zwYa1siznc6+)J7!7d{BWr5aM!n8*8QdoGp6(nL_3mDQfmh_gSes&b?OFW0+*gYwTHyl^n?j;UODCM9;fQP~J>9NeC zlZyz~g`ugv)U+LeLa<#0j+PWJtozVoiu5 zOKTxjt&-FWA9evl%kL}0<+_(@-m;=9D^ohYU%BO`;X+4>UXFXoo_M9{WV%db?I@*o z00)5dzu6u3BXhKYwqBacbuUx*gzFC1i`#b?CtUYBA&+Uw!-YY@9lcE1Q?5H)=tu;| zy-vwv+VXSF?p~d7qT)y~zk40vaz-yB?Mc_&ex!rV?p_|f!1eC&Nwx7c=F#iLZFkW2 zRXu8+hpT$_`=d4)WZcIURPo4#GFP0yS+A^DoC0yBvwvm1;uMH0ow|Sh{W7WWtp zvf&Ebn7ZT-5)*@iYllylizsMPuh24g2?Wf>huerRg~&EJ*XqaZ>ZXT_G`d}pMYxEA zKp5G21g@&y)zx7x)o-d@_8rqA6S@#8D&dZySGB5dTrM=mmZgiDo-)!vqo#9@+K+f( zf9G;R6u6V+_jD)2#cZK&{2p7`!P2qp+(`obepSQ6+~cv`hMRU%lVEg=fUAaJ339FA zUGDJ+|LXAD87I<Gv3d}VmFKtNP^|}_U8HHzWK!bRF{_xm-D>P{E4le zuj+nHXQjF3SExnMa9vlcWfF32x47twuvYJl%3K4zlJy!8sI@uk)e>YNne`eFsI}Rr z*QQwRish!@&vLgZ@Igj_lw|SseTcRU1te)~gBSmWjNCph)Z5@^i66Z}gee%s3QI`^ zkT^xe<`UIuU?>c5Vc)oS1mxZ-E@-8)hm5=1Wq-zT$xfklB@N%fC?rTqCbZlTH!dh+ zBlOb#wUjqO(vvobiknG{4zgLsa}~;GAMRhS3~p6!i)YKL0vc*|PkAemrQ_ zw;_tlXW&SAnJZ4%tk)6r3i?KiYj>!0P(NDZ!;rnHwtKi_gqJx3ClO1TNW_n#T|k(^ zBn87gS3?FpT;{8gQwPjTWCk&XVtS6ER$Xj2rL9>cXE7O zoW?*PR5g0Z#KNiffW!t?D85<^81QkK*#mt6gjh}TZAdHH7*+$p%cbfJNj+eB+-47# zh%<$wk0JALjWIV_-OLpyW!7uFUW0>iToVr}?d`|82MO%SAubHga=wSbUM3Y&46^3@ zad5Cd%(YRc*yhZC+VAa@UN;)0a2;3v#QE z3p>Og&UUbzY(9b62`_YvzdkXAuMaEZFX7XRGeQK;D`p!pyj=cWIB9O?ijzC*mGz2K zAg;8>zs&UsJ)elP*Hc>A?I~by@^JB_SO(OI$5oEeG#wO9$fb}*aOvw4v@_}VkW89_ z)bh_K)b$B<;Uv&ZSTW@uL1q2@sH#q^7w2EW`g^#{^$D&+rs6^S&q6rQ8op4dt$DbD z+c{>z%oV5Z=cCu76rPm3{I>HvQ|9XH7@uBzcAH*0@ng@#7R&35Z!fGhk2W@3$fT)Ya+a~GUP>L)PKD9&W`0}$#u z1E0{0V-d6RRHsz!ukPdG6?+IJckbmDKHG=eNhTsV36xYEmQ*sAKG;HU@N*diL*nJ? z-(gRy@^FFd7Nn!~(z{gIIA$uyRu=^IK9j?{G7<2=kcK09Z9xkO%V^GwR)PPGgH4a6zPX(FraXEJ7 zYK6)%4iRM7F(L`$QN~QSgq1VMWtBZ;G;_tNo%PCk#VHV1+UH*!+Bu)#pxi$y$F&t> z%g4n5UwtAjAP*x(8SCNV{ULstO%?nhjWo|OwEMA73HQ;mPA3*}f&9zu>sh0^7k9L6%3xhydPqR^`e_v`NWP_uD& zzp#q#PVoJ>Z@SCXGmmbj)JKU7%%hdd`n76W`u82=vh}iHZYCZqw(59an|0kpx?KN4Ki*!{M8Gem6_`xO3Q6I@ zTU+r$S?2Tgz=%jem6U4X5^i}>0^d1X8P36Skn8S;ALw6CG#61opjY5Po5IxODO9|{ zm?c>_ChWN&Tq#_@ED&ky_3;kDIY&82aKLXj~FianP`j^hH4=+$t^Kd|d^J%9fE zFJC=-_N>K)z7&~kF6LE`2q0M8AcdYp$>@x$*W3F3?ELks2;)a7+8*zZ(#QjhwzyP3r?C7i h=J)$E%h_YLUMcjSVUXK0YYuB;!vnl~sLHx1{twU3G9Lf{ literal 0 HcmV?d00001 diff --git a/utils/wxprop/docs/prop2.eps b/utils/wxprop/docs/prop2.eps new file mode 100644 index 0000000000..398e70c553 --- /dev/null +++ b/utils/wxprop/docs/prop2.eps @@ -0,0 +1,664 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: prop2.eps +%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley +%%BoundingBox: 167 221 466 500 +%%Pages: 1 +%%DocumentFonts: +%%EndComments +%%EndProlog + +%%Page: 1 1 + +% remember original state +/origstate save def + +% build a temporary dictionary +20 dict begin + +% lower left corner +167 221 translate + +% size of image (on paper, in 1/72inch coords) +299 279 scale + +% define 'colorimage' if it isn't defined +% ('colortogray' and 'mergeprocs' come from xwd2ps +% via xgrab) +/colorimage where % do we know about 'colorimage'? + { pop } % yes: pop off the 'dict' returned + { % no: define one + /colortogray { % define an RGB->I function + /rgbdata exch store % call input 'rgbdata' + rgbdata length 3 idiv + /npixls exch store + /rgbindx 0 store + /grays npixls string store % str to hold the result + 0 1 npixls 1 sub { + grays exch + rgbdata rgbindx get 20 mul % Red + rgbdata rgbindx 1 add get 32 mul % Green + rgbdata rgbindx 2 add get 12 mul % Blue + add add 64 idiv % I = .5G + .31R + .18B + put + /rgbindx rgbindx 3 add store + } for + grays + } bind def + + % Utility procedure for colorimage operator. + % This procedure takes two procedures off the + % stack and merges them into a single procedure. + + /mergeprocs { % def + dup length + 3 -1 roll + dup + length + dup + 5 1 roll + 3 -1 roll + add + array cvx + dup + 3 -1 roll + 0 exch + putinterval + dup + 4 2 roll + putinterval + } bind def + + /colorimage { % def + pop pop % remove 'false 3' operands + {colortogray} mergeprocs + image + } bind def + } ifelse % end of 'false' case + + + +% define the colormap +/cmap 42 string def + + +% load up the colormap +currentfile cmap readhexstring +000000 bf0000 00bf00 bfbf00 0000bf 00bfbf c0c0c0 808080 ff0000 00ff00 +ffff00 0000ff 00ffff ffffff +pop pop % lose return values from readhexstring + + +% rlecmapimage expects to have 'w h bits matrix' on stack +/rlecmapimage { + /buffer 1 string def + /rgbval 3 string def + /block 384 string def + + % proc to read a block from file, and return RGB data + { currentfile buffer readhexstring pop + /bcount exch 0 get store + bcount 128 ge + { % it's a non-run block + 0 1 bcount 128 sub + { currentfile buffer readhexstring pop pop + + % look up value in color map + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + % and put it in position i*3 in block + block exch 3 mul rgbval putinterval + } for + block 0 bcount 127 sub 3 mul getinterval + } + + { % else it's a run block + currentfile buffer readhexstring pop pop + + % look up value in colormap + /rgbval cmap buffer 0 get 3 mul 3 getinterval store + + 0 1 bcount { block exch 3 mul rgbval putinterval } for + + block 0 bcount 1 add 3 mul getinterval + } ifelse + } % end of proc + false 3 colorimage +} bind def + + +299 279 8 % dimensions of data +[299 0 0 -279 0 279] % mapping matrix +rlecmapimage + +7f0003007f072607 +07077f067f0618068100070707 +070781060d7f0d7f0d150d820700070707 +070782060d067f067f061406820700070707 +070782060d067f067f061406820700070707 +070782060d068106077f077f0710070106820700070707 +070782060d068106078207060d820d060783070d0702010203098102077f077e07010682 +0700070707 +070782060d068106078707060b060001020781070283020702098109028102077f074a07 +0e0d81000d0d0d81000781070d0d0d81000781070683060700070707 +070782060d0681060782070806810600820002078507020902070201028109077f074a07 +810d060b068307000d060b068207000782070d060b068207000781070683060700070707 + +070782060d06810607810706850608000403078207020984090207020981090701070506 +2d070306020701061a0705066a07810d060b068307000d06810600070001068207000782 +070d060b068207000781070683060700070707 +070782060d068106078707060b0604000a07890702090207020702090701070106020701 +061d0701060b07010601070106010701061207010607070106100701065907810d060b06 +8307000d06810600070001068207000782070d0601060100030601000106820700078107 +0683060700070707 +070782060d0681060701070106020001070102860702090207020701070106020701061d +0701060b070106050701061207010607070106100701065907810d060b068307000d0682 +0600060506810006830607000782070d0602060100010601000206820700078107068306 +0700070707 +070782060d0681060785070d0607060d010d840702000209010982020007010701060207 +010681070601060107030601070406020703060107020681070601068107068206070681 +060703070106050704060207030602070306010702060607010604070306020702060107 +02065807810d060b068307000d06820600060506810006830607000782070d0603060300 +03068207000781070683060700070707 +070782060d06810607070701000602020705060107010601070106010701068107068106 +078107068206070681060781070682060706810607810706810607810706820607068106 +070407030602070206810706820607068106078107068206070681060781070682060706 +81060706070106030701060107010681070682060706820607068106075807810d060b06 +8307000d06820600060506810006830607000782070d0604060100040682070007810706 +83060700070707 +070782060d06810607810705050501000603020701060507010601070106010701068107 +068106078107068206070604068107068106078107068106078107068206070681060707 +070106010701060107010681070604068107060406810706810607060701060307050601 +070106020701065907810d060b068307000d06820600060506810006830607000782070d +060306030003068207000781070683060700070707 +070782060d0681060781070c010c8205080c830c05030a020a81030a810a070107010605 +070106010701060107010681070681060781070682060706810607030701060107010601 +070106810706810607070701060107010601070106810706810607030701060407010607 +0701060307010606070106010701065907810d060b068307000d06820600060506810006 +830607000782070d06020601000106010002068207000781070683060700070707 +070782060d068106078c070c05070507050c05030a030a840a03000a0701070106050701 +060107010601070106810706810607810706820607068106078107068206070681060781 +070681060701070206050701060107010601070106010701068107068106078107068206 +070681060781070682060706810607060701060307010601070106810706820607068206 +07068106075807810d060106050003068307000d06820600060506810006830607000782 +070d06010601000306010001068207000781070683060700070707 +070782060d0681060782070c08020886070c05030a030a010a82030a0701070106050701 +060207030601070406020703060107010602070106010701060707030602070106010701 +06010703060207030602070106060701060407030602070206020701065807810d060106 +050003068307000d06810600070001068207000782070d060b0682070007810706830607 +00070707 +070782060d0681060782070c080208010c8205030a810a0384030a030a07140701061407 +01067f071c07810d060b068307000d060b068207000782070d060b068207000781070683 +060700070707 +070782060d0681060782070c080308850c05030a030a010a82000a071407010612070206 +7f071d07810d070c0782000d070c0781000782070d070c07810007810706830607000707 +07 +070782060d0681060783070c05080208850c05030a030a810a0382030a077f074a071f00 +01070f0001070106820700070707 +070782060d0681060781070c050c8205030a050a7f077f070106820700070707 +070782060d068106077f077f0710070106820700070707 +070782060d067f067f061406820700070707 +070782060d067f067f061406820700070707 +070782060d0637067f073d07810d061c06820700070707 +070782060d06030616000306160001068107007f003a0082060d06810600150004068207 +00070707 +070782060d06020681000d140d820700068206000d140d8507000607000d7f0d390d8406 +0d06000d140d820700060206820700070707 +070782060d06020682000d06120601078100068306000d061206010784000607000d7f0d +390d84060d06000d130d01078100060206820700070707 +070782060d06020682000d06120601078100068306000d061206010784000607000d7f0d +390d84060d06000d810d06110601078100060206820700070707 +070782060d06020682000d06120601078100068306000d061206010784000607000d7f0d +390d84060d06000d810d06110601078100060206820700070707 +070782060d06020682000d0603068100060606810006030601078100068306000d061206 +010784000607000d010d0100020d0200020d0200020d02007f0d230d84060d06000d810d +06110601078100060206820700070707 +070782060d06020682000d060306020003060200040601078100068306000d060b068100 +060406010784000607000d810d000100010d0100810d0082000d0082000d0082000d0082 +000d0081000d7f0d210d84060d06000d810d06110601078100060206820700070707 +070782060d06020682000d060406020001060200050601078100068306000d060a060200 +0406010785000607000d000200010d0100810d0082000d0082000d0082000d0082000d00 +81000d7f0d210d84060d06000d810d06110601078100060206820700070707 +070782060d06020682000d0605060500060601078100068306000d060906030004060107 +87000607000d000d0081000d810d0082000d0082000d0082000d0082000d0082000d0081 +000d7f0d210d84060d06000d810d06110601078100060206820700070707 +070782060d06020682000d0606060300070601078100068306000d060806030005060107 +84000607000d010d0100010d0100810d0082000d0082000d0082000d0082000d0081000d +7f0d210d84060d06000d810d06110601078100060206820700070707 +070782060d06020682000d0606060300070601078100068306000d060306010001060300 +0606010784000607000d010d0100010d0100810d0082000d0082000d0082000d0082000d +0081000d7f0d210d84060d06000d810d06110601078100060206820700070707 +070782060d06020682000d0605060500060601078100068306000d060306060007060107 +84000607000d010d0100010d0100810d0082000d0082000d0082000d0082000d0081000d +7f0d210d84060d06000d810d06110601078100060206820700070707 +070782060d06020682000d060406020001060200050601078100068306000d0604060400 +0806010784000607000d010d0100020d0200020d0200020d02007f0d230d84060d06000d +810d060306010781060782070607810706040601078100060206820700070707 +070782060d06020682000d060306020003060200040601078100068306000d0605060200 +0906010784000607000d7f0d390d84060d06000d810d0603060107810607820706078107 +06040601078100060206820700070707 +070782060d06020682000d060306010005060100040601078100068306000d0606068100 +060906010784000607000d7f0d390d84060d06000d810d06110601078100060206820700 +070707 +070782060d06020682000d06120601078100068306000d061206010784000607000d7f0d +390d84060d06000d810d06110601078100060206820700070707 +070782060d06020682000d06120601078100068306000d061206010784000607000d7f0d +390d84060d06000d810d06110601078100060206820700070707 +070782060d06020682000d0714078100068306000d07140784000607000d7f0d390d8506 +0d06000d0714078100060206820700070707 +070782060d06020682000d0714078100068306000d07140784000607000d7f0d390d8406 +0d06000715078100060206820700070707 +070782060d06030616000306160001068207000d7f0d390d82060d068106001500040682 +0700070707 +070782060d0637068107067f063b06810d061c06820700070707 +070782060d0637067f0d3e0d1d06820700070707 +070782060d0601067f077f070e07810d060106820700070707 +070782060d0601068107007f007f000b0082060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d040d0100120d01007f0d150d0200550d82060d0601068207 +00070707 +070782060d0601068207000d030d81000d140d81000d7f0d130d81000d010d81000d530d +82060d060106820700070707 +070782060d0601068207000d020d0300010d0100810d0081000d010d0200030d0100820d +000d7f0d130d81000d010d81000d530d82060d060106820700070707 +070782060d0601068207000d030d81000d030d0100030d81000d010d81000d820d000d81 +0d0081000d7f0d130d81000d010d81000d530d82060d060106820700070707 +070782060d0601068207000d030d81000d030d81000d030d0400010d81000d010d81000d +7f0d130d81000d010d81000d530d82060d060106820700070707 +070782060d0601068207000d030d81000d030d81000d030d81000d040d81000d010d8100 +0d7f0d130d81000d010d81000d530d82060d060106820700070707 +070782060d0601068207000d020d0300010d0300030d0300020d04007f0d140d0200550d +82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d1c0d0100120d01000e0d81000d6b0d0400090d0100480d82 +060d060106820700070707 +070782060d0601068207000d010d81000d190d81000d120d81000d7c0d81000d820d000d +090d81000d470d82060d060106820700070707 +070782060d0601068207000d810d000300030d0200010d0100010d0100020d0100810d00 +84000d000d0081000d090d0300010d82000d0081000d020d0200020d0200040d0300020d +02005e0d83000d000d020d0200040d81000d030d0300020d0200390d82060d0601068207 +00070707 +070782060d0601068207000d010d81000d040d81000d010d81000d820d000d010d81000d +820d000d810d0081000d810d0081000d820d000d070d81000d010d81000d810d0081000d +820d000d820d000d010d81000d020d81000d020d81000d010d81000d820d000d010d8100 +0d5c0d0200020d81000d010d81000d020d81000d020d81000d040d81000d010d81000d37 +0d82060d060106820700070707 +070782060d0601068207000d010d81000d040d81000d010d81000d820d000d010d81000d +820d000d010d81000d820d000d010d81000d070d81000d040d81000d010d81000d820d00 +0d010d81000d020d81000d020d81000d040d04005d0d83000d000d020d0300030d81000d +030d0200020d0400380d82060d060106820700070707 +070782060d0601068207000d010d81000d010d81000d820d000d010d81000d820d000d81 +0d0081000d820d000d010d81000d820d000d010d81000d070d81000d040d81000d010d81 +000d820d000d010d81000d020d81000d020d81000d040d81000d600d81000d030d81000d +010d81000d020d81000d060d81000d820d000d3b0d82060d060106820700070707 +070782060d0601068207000d020d0200030d0200030d0100810d0081000d810d00020081 +0d000100810d000100080d0300810d000100810d000100010d0200020d0400020d030002 +0d03005c0d0200030d0500810d000300010d0300030d0300380d82060d06010682070007 +0707 +070782060d0601068207000d1a0d81000d7f0d6d0d82060d060106820700070707 +070782060d0601068207000d170d02007f0d6f0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d060106820700047f047f040a0482060d060106820700070707 +070782060d060106820700047f047f040a0482060d060106820700070707 +070782060d060106820700047f047f040a0482060d060106820700070707 +070782060d060106820700047f047f040a0482060d060106820700070707 +070782060d060106820700040304810d047f043204010d4f0482060d0601068207000707 +07 +070782060d060106820700047f043904810d044e0482060d060106820700070707 +070782060d060106820700040104020d0404020d0104010d81040d810d047f042404810d +044e0482060d060106820700070707 +070782060d060106820700040304810d040204810d040104810d0481040d810d0482040d +047f041a04040d0304810d044e0482060d060106820700070707 +070782060d060106820700040304810d040304030d0104810d040104810d047f04230481 +0d044e0482060d060106820700070707 +070782060d060106820700040304810d040204810d040104810d0482040d040104810d04 +7f042304810d044e0482060d060106820700070707 +070782060d060106820700040104040d0104080d81040d010d7f042104040d4d0482060d +060106820700070707 +070782060d060106820700047f047f040a0482060d060106820700070707 +070782060d060106820700047f047f040a0482060d060106820700070707 +070782060d060106820700047f047f040a0482060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d810d0081000d060d81000d030d0100040d01007f0d170d02 +00030d03004d0d82060d060106820700070707 +070782060d0601068207000d010d81000d0d0d81000d040d81000d7f0d150d81000d010d +81000d010d81000d4f0d82060d060106820700070707 +070782060d0601068207000d010d82000d0081000d010d0200050d81000d040d81000d7f +0d180d81000d020d81000d4f0d82060d060106820700070707 +070782060d0601068207000d010d0100010d81000d020d81000d040d81000d040d81000d +7f0d170d81000d030d02004e0d82060d060106820700070707 +070782060d0601068207000d010d81000d010d81000d020d81000d040d81000d040d8100 +0d7f0d160d81000d070d81000d4c0d82060d060106820700070707 +070782060d0601068207000d010d81000d010d81000d020d81000d040d81000d040d8100 +0d7f0d150d81000d040d81000d010d81000d4c0d82060d060106820700070707 +070782060d0601068207000d810d000300020d0400010d0400010d04007f0d140d040002 +0d02004e0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d030d81000d0a0d0100050d81000d7f0d6f0d82060d060106 +820700070707 +070782060d0601068207000d110d81000d7f0d760d82060d060106820700070707 +070782060d0601068207000d010d0300010d0100010d0100030d81000d020d0200040d02 +00010d0100810d0081000d7f0d070d0200010d0100810d0081000d020d0200470d82060d +060106820700070707 +070782060d0601068207000d040d81000d010d81000d010d81000d020d81000d040d8100 +0d020d81000d010d81000d810d0081000d820d000d7f0d050d81000d010d81000d810d00 +81000d820d000d820d000d010d81000d450d82060d060106820700070707 +070782060d0601068207000d040d81000d010d81000d010d81000d020d81000d040d8100 +0d030d0300010d81000d010d81000d7f0d050d81000d010d81000d820d000d010d81000d +810d000300460d82060d060106820700070707 +070782060d0601068207000d040d81000d010d81000d810d0081000d020d81000d040d81 +000d020d81000d010d81000d820d000d010d81000d7f0d050d81000d010d81000d820d00 +0d010d81000d820d000d490d82060d060106820700070707 +070782060d0601068207000d040d81000d020d0100810d0082000d000300010d0400010d +0800810d0001007f0d060d0200010d0200810d000100010d0300460d82060d0601068207 +00070707 +070782060d0601068207000d040d81000d7f0d7f0d030d82060d060106820700070707 +070782060d0601068207000d010d02007f0d7f0d050d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d810d0081000d060d81000d7f0d7d0d82060d060106820700 +070707 +070782060d0601068207000d010d81000d0b0d81000d7f0d780d82060d06010682070007 +0707 +070782060d0601068207000d010d82000d0081000d010d0200020d0400010d0200820d00 +0d020d0200010d0100810d0081000d7f0d050d0100810d0081000d020d0200010d010081 +0d0081000d020d0200400d82060d060106820700070707 +070782060d0601068207000d010d0100010d81000d020d81000d020d81000d040d85000d +000d000d820d000d010d81000d810d0081000d820d000d7f0d050d0100010d81000d820d +000d010d81000d810d0081000d820d000d820d000d010d81000d3e0d82060d0601068207 +00070707 +070782060d0601068207000d010d81000d010d81000d020d81000d020d81000d040d8500 +0d000d000d010d0300010d81000d010d81000d7f0d050d81000d010d81000d820d000d01 +0d81000d820d000d010d81000d810d0003003f0d82060d060106820700070707 +070782060d0601068207000d010d81000d010d81000d020d81000d020d81000d010d8100 +0d860d000d000d000d820d000d010d81000d820d000d010d81000d7f0d050d81000d010d +81000d820d000d010d81000d820d000d010d81000d820d000d420d82060d060106820700 +070707 +070782060d0601068207000d810d000300020d0400020d0200010d0600810d000400810d +0002007f0d060d0200810d000100010d0200010d0200810d000100010d03003f0d82060d +060106820700070707 +070782060d0601068207000d240d81000d7f0d630d82060d060106820700070707 +070782060d0601068207000d230d02007f0d630d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d340d81000d130d01007f0d3d0d82060d0601068207000707 +07 +070782060d0601068207000d1d0d81000d2b0d81000d620d81000d570d82060d06010682 +0700070707 +070782060d0601068207000d020d0300020d0200010d0100810d0081000d020d0300810d +000300020d0100810d0081000d010d0200020d0200020d0100810d0081000d020d020003 +0d0100820d000d610d0400010d0200810d000100010d0200470d82060d06010682070007 +0707 +070782060d0601068207000d010d81000d010d81000d820d000d010d81000d810d008100 +0d820d000d820d000d040d81000d050d0100030d81000d010d81000d020d81000d020d01 +00010d81000d820d000d010d81000d820d000d810d0081000d620d81000d040d81000d01 +0d81000d820d000d010d81000d450d82060d060106820700070707 +070782060d0601068207000d010d81000d040d81000d010d81000d820d000d010d81000d +010d0200020d81000d050d81000d040d0300030d81000d020d81000d010d81000d810d00 +0300010d81000d010d81000d620d81000d040d85000d000d000d820d000d010d81000d45 +0d82060d060106820700070707 +070782060d0601068207000d010d81000d040d81000d010d81000d820d000d010d81000d +040d81000d820d000d010d81000d010d81000d030d81000d010d81000d020d81000d020d +81000d010d81000d820d000d040d81000d010d81000d620d81000d010d81000d860d000d +000d000d820d000d010d81000d450d82060d060106820700070707 +070782060d0601068207000d020d0300020d0200010d0200810d000100810d000200030d +0200020d0300020d0500810d000300810d000100810d000100010d0300020d0400630d02 +00030d83000d000d020d0200470d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707 +7f077f0726078100070107 +03077f0d7f0d210d820700070107 +0307820d06077f077f071c07840d060700070107 +0307830d0607047f047f041c0483060700070107 +0307830d0607047f047f041c0483060700070107 +0307830d0607047f047f040a040e0d8100048404060700070107 +0307830d0607047f047f040a04810d060b06820700048404060700070107 +0307830d06070481040d040d3a04010d7f044604810d060b068207000484040607000701 +07 +0307830d06070481040d810d040104010d1d04010d1904010d7f044604810d0601060107 +030601070106820700048404060700070107 +0307830d06070481040d810d040104010d1d04010d1904010d7f044604810d0602060107 +01060107010d83060700048404060700070107 +0307830d06070481040d810d040104010d81040d010d0104030d0104040d0204030d0104 +020d81040d010d81040d820d040d810d040304010d0104010d0104030d0104010d81040d +810d0481040d810d0481040d020d0604030d0104020d81040d010d0104030d0104020d7f +041a04810d0603060307010d0106820700048404060700070107 +0307830d06070481040d040d0104010d0104010d0104010d81040d810d0481040d820d04 +0d810d0481040d820d040d810d0481040d810d0481040d820d040d810d040304010d0104 +010d0404010d81040d820d040d810d0481040d820d040d810d0481040d810d040304010d +0104010d81040d810d0481040d810d0481040d810d0481040d820d040d810d047f041a04 +810d0604060107010d0206820700048404060700070107 +0307830d06070481040d810d040404010d0104010d0104010d81040d810d0481040d820d +040d040d81040d810d0481040d810d0481040d820d040d810d040404030d0204040d8104 +0d820d040d810d0481040d820d040d040d0404050d81040d810d0481040d810d0481040d +810d0481040d820d040d810d047f041a04810d0603060307030682070004840406070007 +0107 +0307830d06070481040d810d040404010d0104010d0104010d81040d810d0481040d820d +040d810d040304010d0104010d0104010d81040d810d040404030d0104010d0104010d81 +040d820d040d810d0481040d820d040d810d040704010d0404010d0104010d0104010d01 +04010d81040d810d047f041a04810d0602060107010d0107020682070004840406070007 +0107 +0307830d06070481040d810d040404010d0104010d0104010d81040d810d0481040d820d +040d810d0481040d820d040d810d0481040d810d040104020d0704010d0204010d010401 +0d81040d820d040d820d040d010d81040d810d0481040d810d040304010d0104010d8104 +0d810d0481040d810d0481040d810d0481040d820d040d810d047f041a04810d06010601 +07010d010601070106820700048404060700070107 +0307830d06070481040d810d040404010d0204030d0104040d0204030d0104010d020401 +0d0104010d0804010d0304040d81040d810d0481040d030d0104030d0604030d0104010d +0104010d0204030d0104010d7f041b04810d060206010d0306010d830607000484040607 +00070107 +0307830d0607041304010d1404010d7f045d04810d060b06820700048404060700070107 + +0307830d0607041304010d1204020d7f045e04810d070c078100048404060700070107 +0307830d0607047f047f040a040f00010483060700070107 +0307830d0607047f047f041c0483060700070107 +0307830d0607047f047f041c0483060700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d06170602037f067f060406820700070107 +0307810d06160681030a830a0600067f067f060206820700070107 +0307810d06150681030a020a83060007067f067f0683060700070107 +0307810d06150681030a030a8100078107067f067f06820700070107 +0307810d06140681030a040a820600078107067f067e06820700070107 +0307810d06140681030a050a8100078107067f067e06820700070107 +0307810d06130681030a060a820600078107067f067d06820700070107 +0307810d06130681030a070a8100078107067f067d06820700070107 +0307810d06120681030a080a820600078107067f067c06820700070107 +0307810d06120681030a010a810600010081060a010a8100078107067f067c0682070007 +0107 +0307810d06110681030a020a0400020a820600078107067f067b06820700070107 +0307810d06110681030a020a0400030a8100078107061606810006030681000605068100 +0627068100061b0681000620068100062c06040001060200140681000602060400010602 +0001068100060a06820700070107 +0307810d06100681030a030a0400030a8206000781070615068100060306810006050681 +000621068100060306810006230681000618068100060906810006200681000603068100 +060106810006120681000602068100060306810006010683000600060a06820700070107 + +0307810d06100681030a030a0400040a8100078107061606810006010681000606068100 +062106810006030681000623068100061806810006090681000620068100060306810006 +0106810006120681000602068100060306810006010683000600060a06820700070107 +0307810d060f0681030a040a0400040a8206000781070615068100060106810006010602 +000106830006000601068100068106000100040602008106008100068206000601068100 +068106008100068106008100060206030002060200050602000106820006008100060306 +840006000600810006810600810006810600010002060300010602000106010003060300 +020602000106010082060006820600068206000681060001000206020001068200060081 +000606060300010681000601068100060306020001068200060081000601060300030603 +000106810006010683000600060a06820700070107 +0307810d060f0681030a040a810300010081030a040a8100078107061506810006010681 +000604068500060006000601068300060006010681000602068100068206000684060006 +000601068300060006840600060006030681000601068300060006010681000606068200 +060081000682060006020682000600810006840600060006820600060106830006000601 +068300060006010683000600060306810006010683000600060106830006000682060006 +820600068406000600060106830006000601068200060081000682060006050681000601 +068300060006010681000606068200060081000684060006000601068100060206810006 +01068300060006010683000600060a06820700070107 +0307810d060e0681030a050a810600010081060a040a8206000781070615068300060006 +020603008406000600060106820006000300030681000682060006840600060006010681 +000682060006010681000603068100060106820006000300040603008206000601068100 +060206830006000601068300060006810600030082060006010682000600030082060006 +030681000601068200060003008206000689060006000600060006000300810600030082 +060006010681000602060100040683000600060106810006030603008206000601068300 +060006010681000606068300060006010683000600060a06820700070107 +0307810d060e0681030a060a0200070a8100078107061506830006000601068100060106 +850006000600060106830006000606068100068206000684060006000601068100060106 +810006820600060306810006010683000600060606810006010683000600060106810006 +020683000600060106830006000682060006030681000601068300060006030681000603 +068100060106830006000603068100068a06000600060006000600060306810006030681 +000601068100060906830006000601068100060206810006010683000600060106830006 +0006010681000606068300060006010683000600060a06820700070107 +0307810d060d0681030a070a830300030a060a8206000781070615068100060206810006 +010685000600060006810600830006000601068100060206810006820600068406000600 +068106008300060006840600060006030681000601068300060006010681000602068100 +060106830006000601068100060206830006000601068300060006820600060106830006 +000601068300060006010683000600060306810006010683000600060106830006000601 +068100060106810006820600060106830006000601068300060006010681000605068100 +060106830006000601068100060206810006010683000600060106830006000601068100 +0602068100060106830006000601068100060c06820700070107 +0307810d060d0681030a070a830600060a070a8100078107061506810006030603008206 +000681060083000600068106000100040681000682060006820600068106008300060006 +810600810006010681000602060300020602000506030082060006010681000602068300 +060006010681000682060006810600010002060300010602000106810006030603000206 +020002068100068206000601068100060106020002060200010681000601068100060606 +020002060200050603008206000601068100068106000200040602000206020001068100 +060a06820700070107 +0307810d060c0681030a090a81000a080a820600078107067c0681000677068207000701 +07 +0307810d060c0681030a150a810007810706780603007906820700070107 +0307810d060b0681030a090a8106008200060a070a820600078107067f06750682070007 +0107 +0307810d060b0681030a090a0300090a8100078107067f067506820700070107 +0307810d060a0681030a0a0a0300090a820600078107067f067406820700070107 +0307810d060a0681030a0a0a8106008200060a090a8100078107067f0674068207000701 +07 +0307810d060a0681030a190a81000701077f067406820700070107 +0307810d060a0681030a180a8206000701077f067406820700070107 +0307810d060b0681030a160a8206000702077f067406820700070107 +0307810d060c06810300160004077f067406820700070107 +0307810d060e061a077f067506820700070107 +0307810d060f0618077f067606820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d066b0648006a06820700070107 +0307810d066a064a006906820700070107 +0307810d066a060100450d8107008100066806820700070107 +0307810d066a060100440d010701006906820700070107 +0307810d066a060100010d18069100060006000600060006000600060006000617060107 +01006906820700070107 +0307810d066a060100010d4206010701006906820700070107 +0307810d066a060100010d18068100060d068100061706010701006906820700070107 +0307810d066a060100010d1b060300020681000601068100061906010701006906820700 +070107 +0307810d066a060100010d18068300060006020681000682060006820600068206000617 +06010701006906820700070107 +0307810d066a060100010d1a0681000602068100068406000600061b0601070100690682 +0700070107 +0307810d066a060100010d18068300060006020681000681060081000602068100061706 +010701006906820700070107 +0307810d066a060100010d1a0681000602068100068106008100061c0601070100690682 +0700070107 +0307810d066a060100010d18068300060006020681000684060006000601068100061706 +010701006906820700070107 +0307810d066a060100010d1a06810006020681000682060006820600061a060107010069 +06820700070107 +0307810d066a060100010d18068300060006020681000682060006010683000600061706 +010701006906820700070107 +0307810d066a060100010d1b060300020681000602068100061806010701006906820700 +070107 +0307810d066a060100010d18068100060d068100061706010701006906820700070107 +0307810d066a060100010d4206010701006906820700070107 +0307810d066a060100010d18069100060006000600060006000600060006000617060107 +01006906820700070107 +0307810d066a060100810d07440701006906820700070107 +0307810d066a060100460701006906820700070107 +0307810d066a064a006906820700070107 +0307810d066b0648006a06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +0307810d067f067f061f06820700070107 +7f077f0726078100070107 +02077f007f0024000207 +7f077f072a07 +7f077f072a07 +7f077f072a07 +7f077f072a07 +7f077f072a07 +7f077f072a07 + +% +% Compression made this file 5.68% of the uncompressed size. +% + + +showpage + +% stop using temporary dictionary +end + +% restore original state +origstate restore + +%%Trailer diff --git a/utils/wxprop/docs/prop2.gif b/utils/wxprop/docs/prop2.gif new file mode 100644 index 0000000000000000000000000000000000000000..f7395c48fa370e883d6d2ebb29bc7fa84cbc45c9 GIT binary patch literal 4296 zcmV;(5I65fNk%w1VJiU_0kZ%A0002L0002L0KdNg006(g0KWjgzreu2fPjGi00030 z0RR60009600RI60|NsC0EC2ui04o6(0YC))5XecZy*TU5yZ;;_j$~<`XsWJk>%MR- zlgD!$VscA@C@4LFP%$eSkI1BQnY7)W&?f@mj9RCnsuhYw+`6yY7vV4<%!cw{v1S7n zqcIBSrGLkFI}T5;_v3mZe073*fpR5?gL#BZj*lf(7F<+2TL51GSx*vBoj96=ps;jK6uCK7Mva__cv0yG@oTU?qq$m@zE;0u#qRK_$Dri-`uqI-{{P|3DMME*Qw&{yASqnP zu%W|;53As6fiPJ$3eBcnbhdFBz>oeQLyFu+&Ev?E`zo%ZD6u5UmoQ_>oJsSW%7ZO0 zVk=3FXEU89gYF#qGpNg>J2BQ=>I#}QrA0ULgv!+0O&BT(Xx+-StJkk!!-^eCwyfE+ zXw#})%eJlCvsX!}+j>pwHUib&>fOt?uivnB{|Z(cmz}zd+FU-n#<8m7$K;qvRSfxK zVU~w0Yu?PcGr!9$R8B^`7-&YtlBIcGeKNI1sjSI?ULiWR?c2DQ&Q?*|=+obfJx=B5 zGq>?@#ghZAaJ<^?6up~EpH98oa}?2`x}L`UXk+cn!%OQa`C0kuBhNd9jo#Yz6Vcnt zpMU%PCIo}?>)+46zkk8QZ2mEYR-l|<1Acft;FU6VDVX4c4>A~`gAyj_;DQ%Q$l!(w z=B43<3WoS$h!g&2;)y0ogup<706^eGo7f`bj5OA0Kn5w~kT=4( zA}wt!prn$a5b5NTP)13lkpZTXB$E^@$z&n46jV?YU*Z^Mm^qRuij%<(+tH*`$7|%P zS!t$DawKD%aE1!%sDe%*C#O1YimH&F+5#$@qQY9sF{iFt?X=F)R;97nX4|Kcyg6}S3d$fL002KI0K_PA*2 z!1%GQAA}&%$Q-JIr1s@SVZ5-ObMh<$;ZmI3o!^^kq$jO%u}OEnt7kSh z>9hAvUG8tk^tbQCd)@ZZnTgGwYNOq~*muzTOtyOK6<_w)wh#aN@iIqk{r9+Y4{$;m zmv8?0=%;@luLqJiVd5X=g*f~cmdMqJ7A6j1{E+95c>VqZVB`i!z_XNs1S}d50hAUA z92D?@5R9M%)dGSSu}@nV%%G%%1&cO>N`oK_;Vmv0izLCR6HD5Y2v^9$gf*}gc1ocH z^0WXIw#iFudR440VTm1n@Pliz1e$P&!yFp%hduOR5|gOI9+IkwNc>@~boeDA9x;kn zgrfd{NQjCU;^~A3pkWH{)xt6oi-TrNqZ*OM#WlL|jjKQ-9BH<(I%;5!acm$vSW}-SH_6FP{tH~-3+2`_ znJ;f`?m#ON*AUDF1W&s1m9T_F%nV}(1{{C@Z}34YgFu9j`O*>cf=?jkg%$GsG8e{- zWfSr^Fbo_^5>+hNo=6F{F&N;Q*ff9yD8@~S0U}?+WJJ7-F^F+OC!B`h!WDvfOq-=E znaVuE$?&m6SQ!jVJL|$MF+&FjJPcwHW5XIMW(0O3GoA=-$UKvg$6S$Yn!M_kLH-j; z(TZ9WI}D^HCz|C8W@W;TAPT8SM`|ctIIECu6NW5GhBH^BY;>ZWn#%|>C*;ixk$1LB%oJ(q*k@=&hSQvpiKWA+0Lp@)vgonLc11O+(O3iwJCKnM zSBq%KJTXrJ-K?xS^Pa6U)2vq68^y9qv+fXIj|3 zF1YU1hw}t?6SU6ER@@jgFcE{LGN-&AQgOzSOO)bSE3;`qw$ywJE%~rMUw8*n*0rDy~!kJ$)4xK?D<#82Jin&%)Ye z%IVIk-O*1VjFG~ALJSMFO+5J;+OjgD6_*G|AHE8T>&BuG+dXd~GEs{7jy4s67|3|X ziQaG8HxIpyZ&~dd+{)epu@?|3F`k>--3H>jf7NcCNj%*>-S!DPQAB$Oa^oBIHo+tA zR9JPqX5UVCM?;QNf%mlJFh@9@crC^nPN3!wN4C!Gk#PQT*Zk*qf|I6qPIQ#@+^k3_ zy3!vy^QAjoQ%8Tg)KeApsaw59;l8@oXOZLlWI=8p6KmG^kN_77K$p8T*U%>lk$o}$Aja6eJeld#Nhqzg z2>mBc>E}>J$A0zTe)xn^3S(0u-~be8003nGSJDRHHwXUL2ng7L=7dols4odofPcVF z<&=O&q6!QpZ_?yYB9}1oH+=o{Ph^0B5;HMyP<{cpE5hybg_)idngGrK01*LlDq=hONOHb1RRNw-k@P#Y@QQAia6qtqqbthfe zhMqTr@bPM=Cv|v5IdbKOcxVE0$b!Nbhh()6X9b8qMP_}qRf1Sk-D5Ixw^KAVWQ4dG zZRJu))oSx~Q*l>MP_>BOV^z52Vvpz#{*icBlURqFLsm@%a?!_#sIYA>bvr`!iYxYs zplFCR6=cMvh?k&o@}N?Dq;aiC8bJe#S|*Fy5Q>d7ihWp0rr2_W1XjElaxcd-n;2BV z7>mT1610d^VO4r9wKJ@ER=Id8zj%$65sHFvj`@d-+_;C%h>P0zSL9d~#u!KHXj8%f zH6{Z!ju?-+u~qm8hsxM($|8`-B4+&9GR@>sh^SGFa*&W{Bc!MjiZ_uIS&1eHy(WIfqrkY$;6NS1Rcld=hv4Ca=FXp*V7iE;Ur?X{6t zmX_fIoFPV(uE|%e*__t%oX|-;(m9>IQ=PtPozsC}w5gU+DO!)19CKNd&B2|^!IlcP z99!9v>WP*tW1iY6O4a@upP@6K^m#e zEaRfb;h+|ppt}iJ38rA<*`8mAI>))7Fp7}M8D_#69PW9X-Dw&RDxpXkN)YO!$?2hX z38E;PIwv}%Qd6Z?S~@CvmsyHBSlXpeN{I#nrtZ~gsClMnDyHp&rfh0y$Ps9I=s@`s zYJCQpZ91Bz2B!)%XodqIc4|O>dZ&u11->*83Z$lTiV7q$B8;j(i3TBk3aN)iX_Oji zlUk{UCaA|X4F1127pEp@?h~nvda0u7sDyT1rb?-w7F~~OKbks0gt{VM=&6Xxr`BaS z{F5Q5TB?BIn2naJ^YayuhCcyBr?1*LTEJD{Qe2-Jr){Pd#wx7QdaTq+7h+^sdN;u2&*-^qOmp7ehj4 zZ23A#h(~Pw`mcQ_u7px^152=$w06vvB}$U83j0W7XD7|JBoNysZ<4WMB5gmCcB{x! zYQnMdwhC1wvRZTn>ngA2=CBr;1@rM>LynP1|oKr*cFTjepW{?j~_r zJ8xxca2rRogV(b(8@3p?CSsem`F4q8D|1m>Ct_460&BG-8*n?Mwr|I^V6?L)TX6R# zwg-2(SrkS7X1Mg0xb>vC?6$awySPxOel+KB2+OxR=dp)Zbqn{fC`3aS8?kG2YoUuJ zGbBc(Yr1BHxq*hZMciyGPVpy>oQE*!xD>t1TE=N5pHeleD9_VR*{xyosl*nPR>Ri@s@% z1bEkma&$`&o|{J9n=SAgczHLnTsL>0E54GHzvyOi^=l9Qd%ghtNCFITMT>O@+`b8X zNDEwT@;kq7^}x*=!GtuykHWqge7CUX3~APk66?NZ^t~Gsz9784MR&g}{JJLm!qXeW qGHksxT*KLW!#K>n$(V;e{KF*B!$3U5L|nv1e8fnc#BLY?0028sI8B-W literal 0 HcmV?d00001 diff --git a/utils/wxprop/docs/readme.txt b/utils/wxprop/docs/readme.txt new file mode 100644 index 0000000000..f54a18a687 --- /dev/null +++ b/utils/wxprop/docs/readme.txt @@ -0,0 +1,39 @@ + +Prototype dialog editor and property sheet classes +-------------------------------------------------- + +Julian Smart, October 4th 1995 +------------------------------ + +Here's what I've done so far on a lightweight dialog editor. The 16-bit +Windows binaries in the bin directory are dialoged.exe (the dialog +editor) and test.exe (a small property sheet demo). + +Main points: + + - You can create a new dialog box and add items to it. + - You can move items around, and right-click + to edit a few properties (very incomplete). + - Can't write out .wxr files yet. Loading code is in + wxWindows, but writing code is absent: should be put + into wxWindows. + - No attempt at resources other than dialogs yet. + Should have menu editor too. + - Should *somehow* have a protocol to allow + existing resources e.g. in wxCLIPS/wxPython + to be edited in situ. + This should be made simpler by the existance of + the plug-in event handler mechanism, which means you + can temporarily handle all the events yourself. + - See dialoged.cc: the main program is tiny because + it's meant to be embeddable. + - The wxPropertySheet (set of) classes are very + general and should be put into wxWin and documented. + +Comments, chivvying and help all appreciated. Maybe if +I documented what I had, it would be easier for others +to do some work on it. + +Regards, + +Julian \ No newline at end of file diff --git a/utils/wxprop/docs/tex2rtf.ini b/utils/wxprop/docs/tex2rtf.ini new file mode 100644 index 0000000000..90c6676d9c --- /dev/null +++ b/utils/wxprop/docs/tex2rtf.ini @@ -0,0 +1,21 @@ +runTwice = yes +titleFontSize = 12 +authorFontSize = 10 +chapterFontSize = 12 +sectionFontSize = 12 +subsectionFontSize = 12 +headerRule = yes +footerRule = yes +useHeadingStyles = yes +contentsDepth = 2 +listItemIndent=40 +generateHPJ = yes +htmlBrowseButtons = bitmap +winHelpVersion = 3 +winHelpContents = yes +winHelpTitle = "Property Classes Manual" +truncateFilenames = yes +\overview [2] {\rtfonly{See also }\sethotspotcolour{off}\sethotspotunderline{on}\winhelponly{\image{}{books.bmp}} +\htmlonly{\image{}{books.gif}}\helpref{#1}{#2} +\sethotspotcolour{on}\sethotspotunderline{on}} + diff --git a/utils/wxprop/docs/up.gif b/utils/wxprop/docs/up.gif new file mode 100644 index 0000000000000000000000000000000000000000..617948f2a2702fe5e320cee3290ef6eb9e7f9bfd GIT binary patch literal 137 zcmV;40CxXJNk%v~VHyA!0Pz3-zrVld=jU&4Z(9HWEC2ui02%-o0007FjE||ytzv+j zv|1owxcuhWh0?c)Avp?`dTQw^q7qBdoDA6WKJ*l>%gtCeAWZlgxpoy|ZDMRPr_m>p rx}08pS4?)u<%PW